如何使用Dbpedia和SPARQL查找u.s及其首都的所有状态?

时间:2015-09-11 11:10:22

标签: sparql semantic-web dbpedia

我是语义网,dbpedia和SPARQL的新手。我想找到美国及其首都的所有州。这就是我现在所拥有的。

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?state_label ?capital_label
WHERE {  
   ?state_label dct:subject dbc:States_of_the_United_States.
   ?state_label dbo:capital ?capital_label.
}

我只得到36个结果而不是50个。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

在查看resource for New Hampshire时,我发现其中一种类型是 yago:StatesOfTheUnitedStates 。当我要求所有这些时,我得到51个结果,当我请求所有这些和他们的首都时,我得到50.这些数字听起来是对的,但是看数据,它有点复杂;有一个非州的结果(美国州),新泽西有两个(资源特伦顿和字符串“特伦顿”),特拉华州没有资本列出(我不知道为什么,但三重刚刚在DBpedia中不存在。无论如何,如果你愿意接受有资本的49,你过滤使用这个:

select ?state ?capital where {
  ?state a yago:StatesOfTheUnitedStates ;
         dbp:capital ?capital .
  filter isIRI(?capital)
}

SPARQL results

答案 1 :(得分:1)

有时,在这种情况下,问题出在数据中,而不是查询中。

另请注意,即使主要的DBpedia数据集通常落后于维基百科,修正DBpedia数据的主要方法仍然是编辑维基百科。如果DBpedia似乎没有从维基百科中提取正确的数据,那么它对tell DBpedia有帮助......

在DBpedia中显然只有5 yago:StateCapitalsInTheUnitedStates,但我们知道这个世界并不正确,也不知道维基百科中的数据 - 所以肯定有些事情需要改变。

Here's a query可以为您提供yago:StatesOfTheUnitedStates所有资源,其http://dbpedia.org/property/capital(特拉华州失踪,新泽西州翻倍)和http://dbpedia.org/ontology/capital(多个州失踪) - -

PREFIX  dbo:  <http://dbpedia.org/ontology/>
PREFIX  dbp:  <http://dbpedia.org/property/>

  SELECT  ?state 
          ?dbocapital 
          ?dbpcapital 
   WHERE 
     {
                       ?state            a  yago:StatesOfTheUnitedStates 
          OPTIONAL  {  ?state  dbo:capital  ?dbocapital                   }
          OPTIONAL  {  ?state  dbp:capital  ?dbpcapital                   }
     }
ORDER BY  ?state