2014-10-22 204 views
3

爲了知道如何正確創建sparql查詢,如何找出本體屬性關係?Sparql屬性過濾器

例如,如果我想要贏得世界系列賽的美國職棒大聯盟球隊。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX dbpedia: <http://dbpedia.org/resource/> 
PREFIX owl: <http://dbpedia.org/ontology/> 
PREFIX db: <http://dbpedia.org/> 
PREFIX dbpprop: <http://dbpedia.org/property/> 
PREFIX skos: <http://www.w3.org/2004/02/skos/core#broader/> 
PREFIX category: <http://dbpedia.org/resource/Category:> 
PREFIX purl: <http://purl.org/dc/terms/> 
PREFIX ps: <http://purl.org/dc/terms/subject/> 


select distinct * 
where { 
    ?team rdf:type owl:BaseballTeam . 
    { ?team rdf:type yago:MajorLeagueBaseballTeams . } 
    #{ ?team dbprop:champion dbpedia:Major_League_Baseball } 
} 

如果我取消註釋查詢中的最後一行,我沒有得到任何結果。 看:http://dbpedia.org/page/Boston_Red_Sox

我看到:

is dbpprop:champion of dbpedia:American_League 

我不確定我會如何構建語法來篩選只贏得了世界系列賽(冠軍)球隊和我在如何真糊塗發現實際的查詢前綴應該是什麼。

回答

6
is dbpprop:champion of dbpedia:American_League 

這句話意味着American_leage擁有一個屬性冠軍,宣佈已經贏得聯盟的球隊。

Is-只是告訴你哪些屬性具有資源,您正在查看的範圍。如果您點擊自己的方式訪問該域,則可以看到它具有指向初始資源的屬性。只需看看American_league的dbpedia資源。

所以,你必須像這樣構造你的查詢來得到你想要的結果。 (你幾乎已經擁有了,它只是相反方向)

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX dbpedia: <http://dbpedia.org/resource/> 
PREFIX owl: <http://dbpedia.org/ontology/> 
PREFIX db: <http://dbpedia.org/> 
PREFIX dbpprop: <http://dbpedia.org/property/> 
PREFIX skos: <http://www.w3.org/2004/02/skos/core#broader/> 
PREFIX category: <http://dbpedia.org/resource/Category:> 
PREFIX purl: <http://purl.org/dc/terms/> 
PREFIX ps: <http://purl.org/dc/terms/subject/> 


select distinct * 
where { 
    ?team rdf:type owl:BaseballTeam . 
    ?team rdf:type yago:MajorLeagueBaseballTeams . 
    // Like the one below 
    dbpedia:Major_League_Baseball dbprop:champion ?team 
}