2012-04-27 116 views
2

DBPedia/SPARQL /語義數據的初學者。我跑了以下查詢「找出每個運動員的運動」Dbpedia不會返回完整結果

select ?athlete ?sport where 
{ 
    ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>. #query1 
    ?athlete dbpedia2:sport ?sport        #query2 
} 

它確實給出了結果,但不是我正在尋找的全套。 「query1」本身會返回更多的運動員,但與「query2」相結合,我得到的結果集少得多。

請說明差異。我錯過了什麼嗎?什麼是替代方案?

問候

回答

3

您的查詢中選擇具有 RDF所有運動員節點:類型和dbpedia2:運動性能。即使某些屬性未綁定,也可以使用optional子句檢索節點。例如:

select ?athlete ?sport where { 
    ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>. #query1 
    optional {?athlete dbpedia2:sport ?sport} #query2 
} 

更好的方式來獲得運動:

select ?athlete ?type where { 
    ?athlete rdf:type <http://dbpedia.org/ontology/Athlete>. 
    optional { 
     ?athlete rdf:type ?type. 
     ?type rdfs:subClassOf <http://dbpedia.org/ontology/Athlete> 
    } 
} 
+0

感謝您的快速反應。即使運動財產不受約束,它現在也會返回運動員。但我的追求是「爲每個運動員開展一項運動」。從結果看來,對於運動員來說,運動財產可能沒有約束?因爲運動員 - >運動關係不完整,我如何得到這個結果。運動 - >運動員關係不存在。問候, – 2012-04-27 18:53:50

+0

在這種情況下,你需要更好地探索本體。 rdfs:subClassOf運動員描述需要的信息。我已經添加了另一個查詢的答案。 – 2012-04-27 19:16:47

+0

再次感謝。我想出了這個。請提供有關query.select?sport?athlete的信息,其中{sport} rdfs:subClassOf 。 ?athlete a $ sport } – 2012-04-27 19:17:10

相關問題