2017-12-21 11 views
0

DBPediaとSPARQLを使用して地理的位置に基づいて都市を取得しようとしています。SPARQLとDbpediaを使用して、指定された半径内の都市を長距離と緯度に基づいて照会します。

例えば、http://dbpedia.org/page/Berlinは性質

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

を持って、私は場所に、与えられた半径内に基づく都市を照会します。 Egが、私は緯度の10キロ内の都市を見つけたい:51.5033640と長い:-0.1276250

私はこれが私の都市を与える知っている -

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

- しかし私は、フィルタを使用していませんか半径に基づいて除外する。誰もそれを知っていますか?

答えて

5

使用のVirtuoso地理空間が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

関連する問題