【问题标题】:Query cities and their country from dbpedia从 dbpedia 查询城市及其国家
【发布时间】:2013-03-25 07:52:06
【问题描述】:

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

为了获取数据,我尝试使用带有以下代码的 sparql:

SELECT ?c WHERE {
   ?c rdfs:label ?name .
   ?c dbpedia-owl:country <http://dbpedia.org/resource/Country> .
}

我是 sparql 和 dbpedia 的新手。上面的代码并没有返回我所有的城市和他们所在的国家。我真的需要使用 dbpedia 来实现这一点。

有什么建议吗?

【问题讨论】:

  • 你检查过this question and its answers 吗?
  • 我修改了你的查询链接并得到了这个 SELECT DISTINCT ?city ?country WHERE { ?city rdf:type dbpedia-owl:city ; rdfs:标签?标签; dbpedia-owl:country ?country } 但它仍然无法正常工作
  • 这个正在工作,但我得到了很多不相关的结果:SELECT * WHERE { ?x rdf:type dbpedia-owl:Country }

标签: rdf sparql owl dbpedia


【解决方案1】:

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

如果 有效,我的意思是 返回结果,这有效(City 而不是 city):

SELECT DISTINCT ?city ?country 
WHERE { ?city rdf:type dbpedia-owl:City ; 
              rdfs:label ?label ; 
              dbpedia-owl:country ?country 
}

但请注意,并非所有您和我称为城市的地方都被定义为 dbpedia-owl:City - 它们可能属于 dbpedia-owl:Settlement 类或其他类。所以上面的查询可能不会产生你想要的所有城市。

另外:要构建本体,您不需要“数据”。例如,本体定义所有城市都是人口稠密的地方,所有人口稠密的地方都是地方。要能这么说,你不需要知道爱丁堡在英国。

【讨论】:

  • 感谢回复,其实对于这个本体,我只需要like容器来进行查询扩展,所以如果我能知道,所有地方是不是另一个地方,这个可以帮助我,是否一个定居点或一个城市,这不是一个真正的问题,对我来说非常重要的是A包含B和C。C包含D......是否可以从dbpedia获取这些信息??
  • 所以你正在构建一个知识库。我不确定我是否明白你在这里问什么;给定的查询表明您可以找到一个城市所在的国家/地区:“英国”包含“爱丁堡”,...
  • 你认为如果我们扩展查询假设只使用城市,执行 (city,owl:Settlement,place,..) 的联合,会不会更好??
  • 这取决于你想知道什么。你只需要一个城市所在的国家吗?或者,如果为城市定义了省、州或地区,您是否要包括它们?
  • 在这种情况下,我只需要知道哪个是什么,就足够了。对了,有没有他们描述dbpedia的图结构的地方??
【解决方案2】:

https://dbpedia.org/sparql上使用以下代码

SELECT DISTINCT ?city ?country 
WHERE { ?city rdf:type dbo:City ; 
        rdfs:label ?label ; 
        dbo:country ?country 
     }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多