2017-09-18 12 views
0

SPARQL을 배우고 SPARQL 쿼리를 사용하여 dbpedia에서 특정 사용자를 얻으려고합니다. 이 쿼리를 수행하려면 https://dbpedia.org/sparql에 끝점을 사용하고 있습니다. 내가 찾으려고하는 사람은 앨버트 아인슈타인입니다. 그의 페이지에서 dbp : name 속성을 발견했습니다. 불행하게도sparql 쿼리를 사용하여 dbpedia에서 특정 사람 찾기

select ?person where {?person <http://dbpedia.org/property/name> "Albert Einstein"} LIMIT 100 

, 이것은 나에게주는 단지 빈 결과 집합 (내 생각) 내가 '사람'의 헤더와 빈 테이블을보고 justing 해요로 : 그래서 그의 이름으로 알버트 아인슈타인 (Albert Einstein)을 찾기 위해 쿼리를 작성

무슨 일입니까?

답변

0

나는 당신의 쿼리가 작동하지 않는 이유를 잘 모르겠지만,이 일을 수행합니다

select ?person where {?person foaf:name "Albert Einstein"@en} LIMIT 100 

을이 과학자를 포함 "알버트 아인슈타인 (Albert Einstein)"라는 이름의 모든 요소를 ​​반환하지만,뿐만 아니라 앨범의 같은 이름. 그냥 사람을 원한다면 다음과 같이 쓸 수 있습니다 :

select ?person 
where { 
    ?person foaf:name "Albert Einstein"@en. 
    ?person a foaf:Person. 
} 
LIMIT 100 
+0

DBpedia 데이터는 이제 RDF 1.1이므로 리터럴은''Albert Einstein "^^ rdf : langString'입니다. 이것을 [DESCRIBE query] (http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=describe+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource)에서 확인할 수 있습니다. % 2FAlbert_Einstein % 3E & format = 텍스트 % 2Fturtle & CXML_redir_for_subjs = 121 & CXML_redir_for_hrefs = & timeout = 30000 & debug = on & run = + 실행 + Query +) – AKSW

+0

@AKSW 나는 그것을 보았다. 그러나 왜 그것은''알버트 아인슈타인 '@ en'이 아닌가? [RDF 1.1. spec] (https://www.w3.org/TR/rdf11-concepts/#section-Graph-Literal)은 언어 태그가 없으면'rdf : langString'을 사용할 수 없음을 암시하는 것으로 보입니다. – svick

+0

좋은 질문입니다. 아마도로드 된 데이터 또는 Virtuoso의 특정 문제 일 것입니다. 방금 전에 [덤프 미리보기] (http://downloads.dbpedia.org/preview.php?file=2016-04_sl_core-i18n_sl_en_sl_infobox_properties_mapped_en.ttl.bz2)를 보았습니다. 이상한. – AKSW