ウィキペディアの位置情報タグの逆引き検索
-
05-07-2019 - |
質問
ウィキペディアは 地理的タグ付け ある 多く の その 記事. 。(ページの右上隅を見てください。)
すべてをクエリするための API はありますか ジオタグ付きページ 地理的位置から指定された半径内にあるか?
アップデート
さて、失われた理論の答えに基づいて、これを試してみました( DBpedia クエリ エクスプローラー):
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
これは私が望むものに非常に近いですが、() 内で結果を返す点が異なります。地元) 円ではなく、点の周りの正方形です。また、結果がポイントからの距離に基づいて並べ替えられるかどうかも希望します。(もし可能なら。)
アップデート 2
真の距離の近似値としてユークリッド距離を決定しようとしていますが、SPARQLで数値を二乗するのに問題があります。(ここで質問が開かれました.) 何か役に立つことがあれば質問を更新しますが、それまでの間、代替アプローチに関する提案をいただければ幸いです。
アップデート 3
最後の更新です。DBpedia経由でSPARQLを使うのは諦めました。私は、Wikipedia の記事のテキストを毎晩データベース ダンプを取得し、すべての記事のジオコードを解析する単純なパーサーを作成しました。これはかなりうまく機能し、ジオタグ付きの記事に関する情報を希望通りに保存できるようになります。
これはおそらく私が今後も使用し続けるソリューションであり、優れたインターフェイスを作成できるようになったら、パブリック 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 km以内のジオタグ付きの場所を取得します。
他のヒント
SPARQLおよび dbpedia を使用して、緯度/経度を照会できる必要があります。例(こちらから):
SELECT distinct ?s ?la ?lo ?name ?country WHERE {
?s dbpedia2:latitude ?la .
?s dbpedia2:longitude ?lo .
?s dbpedia2:officialName ?name .
?s dbpedia2:country ?country .
filter (
regex(?country, 'England|Scotland|Wales|Ireland')
and regex(?name, '^[Aa]')
)
}
独自のクエリこちらを実行できます。
いくつかのツールがリストされています ウィキペディアの座標に基づくツールとアプリケーション. 。それがあなたが探しているものであるかどうかはわかりませんが、 ジオサーチ.py ツールはかなりクールに見えます。
APIではありませんが、すべての地理タグ付きウィキペディア記事のこの素敵なセットをダウンロードして、ローカルデータベースで直接クエリすることもできます。 http://www.google.com/fusiontables/DataSource?dsrcid=423292
無料 GeoNames.org FindNearbyWikipediaサービスは、特定の郵便番号または座標(緯度、経度)のジオタグ付き記事を取得できます
アプリケーションごとに1日あたり30,000クレジット(パラメーター「username」で識別)の制限があり、1時間あたりの制限は2000クレジットです。クレジットは、ほとんどのサービスでヒットするWebサービスリクエストです。制限を超えると例外がスローされます。
SPARQLに十分な知識はありませんが、フィルターでパワーを使用できる場合、ピタゴラスの定理(a ^ 2 + b ^ 2 = c ^を使用して、特定のポイントから特定の記事までの距離を簡単に計算できます2)そして、それは半径内のすべての記事を提供します。
別のオプションは、ウィキペディアのデータダンプを取得して、自分で処理することです。ウィキペディアの記事でいくつかの言語分析を行う必要があるときに私がやったことです。