使用dbpedia sparql从位置名称获取经纬度坐标

时间:2020-02-12 12:55:58

标签: python coordinates sparql dbpedia

我正在通过babelfy endpoint中的Python脚本执行实体链接。执行该操作时,我有一个实体,其中包含两个,一个或一个无知识条目:babelnet和dbpedia。

有了这个,我想获取我刚刚收到的实体位置的纬度和经度坐标。实现此目标的最佳方法是什么?

我一直在阅读一些选项,并且我认为完成此操作的可靠方法是向dbpedia sparql endpoint发送Python请求。但是,我对SPARQL完全陌生,我不知道如何通过提供地名或更简单地输入实体条目来获取纬度和经度坐标。

例如,给定此实际输出,SPARQL查询应如何获取坐标?

1 个答案:

答案 0 :(得分:0)

您想要dbpedia条目中的geo.latgeo.long条目。

一个简单的sparql可以得到

select ?name ?lat ?long 
where {
        ?s rdfs:label ?name.
        ?s geo:lat ?lat.
        ?s geo:long ?long.
       }

您可能不得不摆弄PREFIXrdfs的适当geo详细信息,但是通读后应该可以解决。 geo的规格可以在这里找到:https://www.w3.org/2003/01/geo/#vocabulary

按上述方式运行,端点应报告dbpedia中标记有纬度和经度详细信息的所有实体。

如果您想在标签名称上应用过滤器(例如,对特定名称进行搜索),可以通过在?s rdfs:label "Madrid".上添加其他过滤器来实现。

类似地,如果您想直接使用实体URI进行查询,则只需将查询中对?s的引用替换为所需的特定URI,或添加以下行:

BIND (<http://dbpedia.org/resource/Madrid> AS ?s)

要将?s变量设置为特定值,并仅检索该条目的详细信息。