6
好吧,我只是學習使用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
這工作,因爲「Stevie裂口」有三個字段(RDFS:標籤,FOAF:姓名,dbpedia2:名稱)。但是,當我嘗試由另一個音樂藝術家查詢時,並沒有全部三個(例如「Depeche模式」),我沒有得到任何結果。
我嘗試過像BIND(COALESCE(?field,...,...)AS?artistName)這樣的各種東西來過濾?artistName,我也嘗試了UNION,但似乎沒有任何工作。有人能指出我的SPARQL方式的錯誤嗎? :)
謝謝! Jason