api - 反向维基百科地理标记查找

标签 api geolocation sparql wikipedia geotagging

维基百科是 geotagging一个 lot of its articles . (查看页面右上角。)

有没有查询所有geotagged pages的API在地理位置的指定半径内?

更新

好的,所以根据 lost-theory 的回答,我尝试了这个(在 DBpedia query explorer 上):

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT ?subject ?label ?lat ?long WHERE {
    ?subject geo:lat ?lat.
    ?subject geo:long ?long.
    ?subject rdfs:label ?label.
    FILTER(xsd:float(?lat) - 57.03185 <= 0.05 && 57.03185 - xsd:float(?lat) <= 0.05
        && xsd:float(?long) - 9.94513 <= 0.05 && 9.94513 - xsd:float(?long) <= 0.05
        && lang(?label) = "en"
    ).
} LIMIT 20

这与我想要的非常接近,除了它返回的结果是围绕该点的 (local) 正方形而不是圆形。我还想根据与该点的距离对结果进行排序。 (如果可能的话。)

更新 2

我正在尝试将欧几里得距离确定为真实距离的近似值,但是在 SPARQL 中对数字进行平方时遇到了麻烦。 (Question opened here 。)当我得到有用的东西时,我会更新问题,但同时我会感谢任何关于替代方法的建议。

更新 3

最后一次更新。我放弃了通过 DBpedia 使用 SPARQL。我编写了一个简单的解析器,它获取 Wikipedia 文章文本夜间数据库转储并解析所有文章的地理编码。它工作得相当好,它允许我存储有关地理标记文章的信息,但我希望如此。

这可能是我将继续使用的解决方案,如果我可以创建一个好的接口(interface),我可能会考虑允许公共(public) API 访问和/或将源发布到解析器。

最佳答案

dbpedia 端点使用的 OpenLink Virtuoso 服务器具有多个查询功能。我找到了http://docs.openlinksw.com/virtuoso/rdfsparqlgeospat.html上的信息对于类似的问题很有用。

我最终得到了这样的查询:

SELECT ?page ?lat ?long (bif:st_distance(?geo, bif:st_point(15.560278, 58.394167)))
WHERE{
    ?m foaf:page ?page.
    ?m geo:geometry ?geo.
    ?m geo:lat ?lat.
    ?m geo:long ?long.
    FILTER (bif:st_intersects (?geo, bif:st_point(15.560278, 58.394167), 30))
}
ORDER BY ASC 4 LIMIT 15

此示例检索距原始位置 30 公里范围内的地理标记位置。

关于api - 反向维基百科地理标记查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400717/

相关文章:

python-3.x - 导入错误 : No module named 'flask_jwt_extended' in PYTHON FLASK

mysql - 在具有两个变量的数据库中查找最接近的数字匹配

android - broadcastReceiver 可以捕获多个广播吗?

sparql - 如何以编程方式从维基数据实体获取所有可用信息?

xml - 抓取YouTube XML以通过SimpleXML嵌入-我在哪里出错?

api - IBM Bluemix 和 Azure 是否为 API Blueprint 和 OpenAPI 提供同等支持?描述 API

api - Google Analytics API入门

geolocation - 我可以使用 Twilio 检索电话号码的位置吗?

sparql 检查属性的存在并给答案零

sparql - 在参与者的维基数据查询中应用 group_concat