使用SPARQL和Dbpedia根据long和lat查询给定半径内的城市

use*_*774 0 sparql dbpedia

我一直在尝试使用DBpedia和SPARQL来根据地理位置获取城市.

例如,http://dbpedia.org/page/Berlin有属性

geo:lat: 52.516666 (xsd:float)
geo:long: 13.383333 (xsd:float)
Run Code Online (Sandbox Code Playgroud)

我想根据位置和给定的半径查询城市.例如,我想找到距离纬度10公里的城市:51.5033640和长:-0.1276250

我知道这给了我城市 -

SELECT ?city WHERE {      ?city rdf:type dbo:City    } 
Run Code Online (Sandbox Code Playgroud)

- 但我不知道如何使用过滤器来根据半径过滤掉.有谁知道吗?

AKS*_*KSW 5

使用Virtuoso GeoSpatial功能bif:st_intersectsbif:st_point:

使用几何对象(伦敦坐标没有城市,更改dbo:Place为查看伦敦周围的其他对象):

SELECT  * { 
 ?city a dbo:City ;
       geo:geometry ?geo
 FILTER ( bif:st_intersects( ?geo, bif:st_point (-0.1276250, 51.5033640), 10))
} 
Run Code Online (Sandbox Code Playgroud)

或者使用lat/long:

SELECT * { 
 ?city a dbo:City ;
       geo:lat ?lat ;
       geo:long ?long .
 FILTER ( bif:st_intersects( bif:st_point (?long, ?lat), bif:st_point (-0.1276250, 51.5033640), 10))
}
Run Code Online (Sandbox Code Playgroud)