2013-08-16 1 views
0

속성 목록을 기반으로 sparql 쿼리를 작성하려고하는데 쿼리가 잘못 작성되었다는 오류가 발생합니다. 문제는 그것을 해결하기 위해 무엇을해야할지 모른다.Sparql 쿼리가 잘못되었습니다.

u"\n  SELECT * WHERE { <http://dbpedia.org/resource/Tim_Cook>\n   ?x dbpedia-owl:abstract ?abstract.\n   OPTIONAL { ?x dbpedia-owl:birthDate ?birthDate. }\n OPTIONAL { ?x dbpedia-owl:birthPlace ?birthPlace. }\n OPTIONAL { ?x dbpprop:name ?name. }\n OPTIONAL { ?x dbpedia-owl:profession ?profession. }\n OPTIONAL { ?x dbpprop:residence ?residence. }\n OPTIONAL { ?x dbpprop:website ?website. }\n \n   FILTER (LANG(?abstract) = 'en')\n  }\n " 

또는 인쇄 :

 SELECT * WHERE { <http://dbpedia.org/resource/Tim_Cook> 
      ?x dbpedia-owl:abstract ?abstract. 
      OPTIONAL { ?x dbpedia-owl:birthDate ?birthDate. } 
OPTIONAL { ?x dbpedia-owl:birthPlace ?birthPlace. } 
OPTIONAL { ?x dbpprop:name ?name. } 
OPTIONAL { ?x dbpedia-owl:profession ?profession. } 
OPTIONAL { ?x dbpprop:residence ?residence. } 
OPTIONAL { ?x dbpprop:website ?website. } 

      FILTER (LANG(?abstract) = 'en') 
     } 
+0

[AndyS의 대답 (http://stackoverflow.com/a/18279160/1281433)가 자리입니다; 문제는 접두사가 정의되어 있지 않다는 것입니다. "쿼리가 잘못 형성되었다는 오류 메시지"를 포함 할 수 있습니까? 나는 그것이 비슷한 메시지를 포함 할 것으로 기대한다. –

답변

5

당신은 예를 들어, 사용 된 모든 접두사를 정의 할 필요가

def create_query(dbpedia_uri, props): 
    #props are something like this ('dbpedia-owl', 'birthdate') 
    filters = '' 

    for prop in QUERIES_DICT[ename]: 
     filters += ' OPTIONAL { ?x %s:%s ?%s. } \n' % (corresp_dict[prop[0]], prop[1], prop[1]) 

    query = u""" 
     SELECT * WHERE { 
.   <%s>. 
      ?x dbpedia-owl:abstract ?abstract. 
      %s 
      FILTER (LANG(?abstract) = 'en') 
     } 
    """ % (dbpedia_uri, filters) 

    return query 

이 내가 얻을 쿼리는 다음과 같습니다

는 기능입니다 dbpprop, dbpedia 올빼미

시도 : http://www.sparql.org/query-validator.html

+0

접두어가 정의되어 있으며 생성 된 쿼리를 아래에서 보면 추가 된 것을 볼 수 있습니다. – Rod0n

+1

@ Rod0n 표시된 쿼리는'PREFIX dbpedia : '와 같은 줄을 포함하지 않습니다. 접두어는 정의하지 않습니다. @AndyS가 링크 된 SPARQL 유효성 검사기는 "2 행 14 열 : 해결되지 않은 접두어가 붙은 이름 : dbpedia-owl : abstract"을 분명하게 만듭니다. 접두어를 정의하지 않으면,'dbpedia-owl : abstract'는 완전한 IRI로 확장 될 수 없습니다. –

관련 문제