如何使用Dbpedia和SPARQL查找美国所有州及其首都?

如何使用Dbpedia和SPARQL查找美国所有州及其首都?,sparql,semantic-web,dbpedia,Sparql,Semantic Web,Dbpedia,我对语义网、dbpedia和SPARQL非常陌生。我想找到美国所有的州和它们的首都。这就是我现在拥有的 前缀rdfs: 前缀dbo: 选择不同的?州标签?大写标签 何处{ ?州标签dct:主题dbc:美国的州。 ?州标签dbo:资本?资本标签。 } 我只得到了36个结果,而不是50个。有人能帮忙吗?在查看时,我看到它的一种类型是yago:StatesOfTheUnitedStates。当我要求所有这些,我得到51个结果,当我要求所有这些和他们的首都,我得到50个。这些数字听起来不错,但从数据上

我对语义网、dbpedia和SPARQL非常陌生。我想找到美国所有的州和它们的首都。这就是我现在拥有的

前缀rdfs:
前缀dbo:
选择不同的?州标签?大写标签
何处{
?州标签dct:主题dbc:美国的州。
?州标签dbo:资本?资本标签。
}
我只得到了36个结果,而不是50个。有人能帮忙吗?

在查看时,我看到它的一种类型是yago:StatesOfTheUnitedStates。当我要求所有这些,我得到51个结果,当我要求所有这些和他们的首都,我得到50个。这些数字听起来不错,但从数据上看,有点复杂;有一个非州的结果(美国州),新泽西州有两个(资源特伦顿,字符串“特伦顿”),特拉华州没有上市的资本(我不知道为什么,但这三个在DBpedia中并不存在)。无论如何,如果你愿意选择49个有大写字母的,你可以使用这个:

select?state?capital where{
?州a雅戈州:州软美国;
首都?首都。
过滤器isIRI(?大写)
}

有时,如本例所示,问题在于数据,而不是查询

还要注意的是,尽管主要的DBpedia数据集通常落后于Wikipedia,但纠正DBpedia数据的主要方法仍然是编辑Wikipedia。如果DBpedia似乎没有从Wikipedia中提取正确的数据,那么

DBpedia中显然只有5个,但我们知道这对世界和Wikipedia中的数据都是不正确的,所以肯定有一些事情需要改变

这样,您就可以使用
http://dbpedia.org/property/capital
(特拉华州失踪;新泽西州加倍)和
http://dbpedia.org/ontology/capital
(几个州缺失)--

前缀dbo:
前缀dbp:
选择?状态
?双头颅
?DBP资本
哪里
{
?州a雅戈州:州软美国
可选{?state dbo:capital?dbocapital}
可选{?state dbp:capital?dbpcapital}
}
按州排序
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