SPARQL 쿼리를 사용하여 DBpedia 리소스 (Person)에 대한 정보를 검색하려고합니다. 동일한 URI를 매개 변수화하여 모든 Person에 대한 데이터를 검색하는 동일한 쿼리를 사용하고 싶습니다. 특정 자원에 대해 일부 속성이 존재하지 않을 수 있으므로 OPTIONAL 문을 사용하고 있습니다. 나는 다른 사람에 대해 같은 쿼리를 사용하는 경우, 그들은 이러한 속성이 없을 수 있기 때문에 내가 선택 사양 라벨, 추상적 페이지를 제외한 모든 떠 났어요SPARQL OPTIONAL을 사용하여 존재할 수있는 자원의 속성을 올바르게 검색하는 방법은 무엇입니까?
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?label ?abstract ?placeOfBirth
?birthPlace ?birthDate ?deathDate ?page ?thumbnail
WHERE {
<http://dbpedia.org/resource/Neil_Simon> rdfs:label ?label ;
dbo:abstract ?abstract ;
foaf:page ?page .
OPTIONAL {
<http://dbpedia.org/resource/Neil_Simon> dbpprop:placeOfBirth ?placeOfBirth ;
dbpprop:birthPlace ?birthPlace ;
dbo:birthDate ?birthDate ;
dbo:deathdate ?deathDate ;
dbo:thumbnail ?thumbnail .
}
FILTER (LANG(?label) = 'en')
FILTER (LANG(?abstract) = 'en')
}
LIMIT 1
: 여기 내 쿼리입니다. 문제는 선택 속성 중 아무 것도 결과에 나타나지 않는다는 것입니다. Neil Simon의 경우 birthDate, birthPlace 및 미리보기 이미지의 값인 http://dbpedia.org/resource/Neil_Simon이 있음을 알 수 있습니다. 그러나 쿼리를 실행하면 해당 값이 표시되지 않습니다. DBpedia SPARQL query. 내가 뭘 잘못하고 있으며, 어떻게 선택적으로 그 속성을 검색 할 수 있습니까?
물론, 그렇게 많은 의미가 있습니다! 나는 OPTIONAL 구문을 각 속성에 대해 별도의 구문으로 분리하여 완벽하게 작동합니다. –
우리와 함께 작업 코드를 공유하십시오. –