2014-10-22 167 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 
}