Sparql属性过滤器

时间:2014-10-22 04:55:12

标签: rdf sparql semantic-web dbpedia

如何弄清楚本体属性关系是什么,以便知道如何正确地制作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

我不确定如何构建语法来过滤只赢得世界系列赛(Champion)的团队,我真的很困惑如何发现实际的查询前缀应该是什么。

1 个答案:

答案 0 :(得分:6)

   is dbpprop:champion of  dbpedia:American_League 

这句话意味着American_leage有一个财产冠军,宣布赢得联赛的球队。

Is-Of只是告诉你哪些具有该资源的属性,您正在查看,作为范围。如果单击进入域的方式,则可以看到它具有指向初始资源的属性。只需查看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
}