Rdf 从dbpedia查询城市及其国家

Rdf 从dbpedia查询城市及其国家,rdf,sparql,owl,dbpedia,Rdf,Sparql,Owl,Dbpedia,我正试图在OWL中为国家和城市构建一个本体(如果已经存在这样的实现,请指向我) 为了获取数据,我尝试将sparql与以下代码一起使用: SELECT ?c WHERE { ?c rdfs:label ?name . ?c dbpedia-owl:country <http://dbpedia.org/resource/Country> . } 选择?c其中{ ?c rdfs:标签?名称。 ?c dbpedia猫头鹰:国家。 } 我是sparql和dbpedia的新手。

我正试图在OWL中为国家和城市构建一个本体(如果已经存在这样的实现,请指向我)

为了获取数据,我尝试将sparql与以下代码一起使用:

SELECT ?c WHERE {
   ?c rdfs:label ?name .
   ?c dbpedia-owl:country <http://dbpedia.org/resource/Country> .
}
选择?c其中{
?c rdfs:标签?名称。
?c dbpedia猫头鹰:国家。
}
我是sparql和dbpedia的新手。上述代码并没有返回我所有的城市和他们所在的国家。我真的需要使用dbpedia来实现这一点

有什么建议吗?

SPARQL区分大小写(因为RDF区分大小写)。DBpedia使用的约定是,属性名称以小写字母开头(例如,对于“属于X的国家是…”,DBpedia owl:country),类名以大写字母开头(例如,
DBpedia owl:country

如果所说的有效,我的意思是返回结果,那么它有效(
City
,而不是
City
):

但是,请注意,并非所有您和我称之为城市的地方都被定义为
dbpedia owl:City
——它们可能属于
dbpedia owl:collection
或其他类别。因此,上面的查询可能不会生成您想要的所有城市

另外:要构建一个本体,您不需要“数据”。例如,本体定义了所有城市都是人口密集的地方,所有人口密集的地方都是地方。要做到这一点,您不需要知道爱丁堡在英国。


你检查过了吗?我修改了来自you链接的查询,得到了一个SELECT DISTINCE?city?country WHERE{?city rdf:type dbpedia owl:city;rdfs:label?label;dbpedia owl:country?country}但它仍然不起作用这一个起作用了,但我得到了很多不相关的结果:SELECT*WHERE{?x rdf:type dbpedia owl:Country}感谢您的回复,事实上,对于这个本体,我只需要像containment一样执行查询扩展,所以如果我能知道,所有的地方都是另一个地方,这可以帮助我,无论是一个定居点还是一个城市,这都不是一个真正的问题,对我来说非常重要的是像a包含B和C。C包含D……有可能得到这个吗来自dbpedia的fo??所以你正在构建一个知识库。我不确定我是否理解你在这里提出的问题;给定的查询显示,你可以找到一个城市所在的国家:“英国”包含“爱丁堡”……你认为如果我们扩展查询,假设像“唯一的城市”,执行(城市,猫头鹰:定居点,地点,…)的联合吗,这不是更好吗?这取决于你想知道什么。你只需要一个城市所在的国家吗?或者你想包括为城市定义的省、州或地区吗?在这种情况下,我只需要知道哪个是什么就够了。顺便问一下,有没有一个地方可以描述图表结构dbpedia的名称??
SELECT DISTINCT ?city ?country 
WHERE { ?city rdf:type dbpedia-owl:City ; 
              rdfs:label ?label ; 
              dbpedia-owl:country ?country 
}
SELECT DISTINCT ?city ?country 
WHERE { ?city rdf:type dbo:City ; 
        rdfs:label ?label ; 
        dbo:country ?country 
     }