【问题标题】:Get every places names in geonames with SPARQL DBPEDIA使用 SPARQL DBPEDIA 获取地名中的每个地名
【发布时间】:2020-03-31 02:01:23
【问题描述】:

我对 sparql 很陌生。

我创建此查询是为了获取联合国中的所有国家/地区

select distinct ?s
where { ?s a <http://dbpedia.org/class/yago/WikicatMemberStatesOfTheUnitedNations> }

所以我尝试通过以下方式使其适应 Geonames:

select distinct ?s
where { ?s a <http://dbpedia.org/page/GeoNames> }

但它不起作用。如何在地名中获取每个地点的名称?

我希望有人可以帮助我!

【问题讨论】:

  • 您期望?s a &lt;http://dbpedia.org/page/GeoNames&gt; 匹配或表示什么?它基本上意味着“关系的实例”,所以你要求所有是 GeoNames 实例的东西 - 听起来很奇怪,对吧?这个想法是首先在 GeoNames dtaaset 中找到概念名称,然后在查询中使用它们。 http://dbpedia.org/page/GeoNames 部分来自 DBpedia 命名空间,但即便如此,/page/ 也只是表示原始实体的 HTML 表示,在您的情况下为 http://dbpedia.org/resource/GeoNames(由于两个不同的数据集确实不存在)

标签: sparql dbpedia geonames


【解决方案1】:

每个发布者都使用自己的命名空间和方法来生成已发布实体的 URI。链接开放数据的好处是它允许这种独立性,而 URI 仍然可以使用商定的开放标准链接。当不同的 URI 表示相同的东西时,通过将它们与 owl:sameAs 链接来声明。

您的查询尝试假定 DPpedia 和 Geonames 使用相同的 URI,如果我正确理解了意图(我不确定您所说的“适应”是什么意思)。您需要做的是使用两个单独的变量,然后从 owl:sameAs 映射中指定您只需要来自 Geonames 的那些。

select distinct *

where { ?cuntryDBpedia a <http://dbpedia.org/class/yago/WikicatMemberStatesOfTheUnitedNations> ;

        owl:sameAs ?countryGeonames .

FILTER REGEX (?countryGeonames,"geonames.org")

 }

【讨论】:

  • 我想要 geonames 数据集中所有地名。像国家,城镇,村庄,建筑,山名之类的东西。抱歉,我的第一个问题并不清楚
  • 目前还不清楚你想得到什么。您可以考虑参考GeoNames ontology的属性和类来编辑您的问题
猜你喜欢
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多