2017-12-21 27 views
0

DBPedia와 SPARQL을 사용하여 지리적 위치를 기반으로 도시를 얻으려고했습니다.SPARQL과 Dbpedia를 사용하여 long과 lat를 기준으로 주어진 반경 내 도시를 쿼리합니다.

예를 들어, http://dbpedia.org/page/Berlin는 속성

geo:lat: 52.516666 (xsd:float) 
geo:long: 13.383333 (xsd:float) 

을 가지고 있는데 위치에 주어진 반경 내에 도시를 조회 할. 51.5033640 긴 : 예, 나는 위도의 10km 내에서 도시를 찾으려면 -

SELECT ?city WHERE {  ?city rdf:type dbo:City } 

- -0.1276250 내가 아는

이 도시 저에게 제공하지만 난에 필터를 사용하지 수행하는 방법 반경을 기준으로 필터링을 제외합니다. 누구는 그것을 압니까?

답변

5

사용 거장 지리는 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)) 
} 

또는 위도/경도 :

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)) 
} 
+0

고맙습니다! 나는 결코 그것을 이해하지 않았을 것이다! - 좋은 하루 되세요! – user1799774