오케이, SPARQL을 사용하여 dbpedia.org에서 데이터를 쿼리하는 방법을 배우고 dbpedia의 http://dbpedia.org/snorql/을 사용하여 쿼리를 실행하고 있습니다. 목록을 얻으려고합니다. 과 같이 세 가지 분야에 걸쳐 동일한 문자열 검색을 기반으로 MusicalArtists :이 SPARQL 쿼리가 작동하지 않습니다.
SELECT ?subject
?artistRdfsLabel
?artistFoafName
?artistDbpedia2Name
WHERE {
?subject rdf:type <http://dbpedia.org/ontology/MusicalArtist> .
OPTIONAL { ?subject rdfs:label ?artistRdfsLabel . }
OPTIONAL { ?subject foaf:name ?artistFoafName . }
OPTIONAL { ?subject dbpedia2:name ?artistDbpedia2Name . }
FILTER (str(?artistRdfsLabel) = "Stevie Nicks" ||
str(?artistFoafName) = "Stevie Nicks" ||
str(?artistDbpedia2Name) = "Stevie Nicks")
}
LIMIT 10
"스티비 닉스는"모든 세 개의 필드 (RDFS : 라벨, FOAF : 이름, dbpedia2 : 이름)을 가지고 있기 때문에이 작동합니다. 그러나 내가 세 가지 (예 : Depeche Mode)가 모두없는 다른 뮤지컬 예술가가 쿼리하려고하면 결과가 없습니다.
BIND (COALESCE (? field, ..., ...) AS? artistName)와 같은 다양한 항목을 시도해 보았습니까? artistName으로 필터링하고 UNION을 시도했지만 아무 것도 작동하지 않는 것 같습니다. 누군가 내 SPARQL 방식의 오류를 지적 할 수 있습니까? :)
고마워요! Jason