Вопрос

Википедия это геотегирование а много из его статьи.(Посмотрите в правом верхнем углу страницы.)

Есть ли какой-либо 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

Последнее обновление.Я отказался от использования SPARQL через DBpedia.Я написал простой парсер, который каждую ночь извлекает дамп базы данных текста статьи Википедии и анализирует все статьи на предмет геокодирования.Он работает довольно хорошо и позволяет мне хранить информацию о статьях с геотегами так, как я хочу.

Вероятно, это решение, которое я буду продолжать использовать, и если я смогу создать для него хороший интерфейс, я мог бы рассмотреть возможность предоставления доступа к общедоступному API и/или публикации исходного кода для синтаксического анализатора.

Это было полезно?

Решение

Сервер OpenLink Virtuoso, используемый конечной точкой dbpedia, имеет несколько функций запросов. Я нашел информацию на 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 км от исходного положения.

Другие советы

Вы должны иметь возможность запрашивать широту / долготу, используя 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]')
)
}

Вы можете выполнить свои собственные запросы здесь .

Есть пара инструментов, перечисленных на Инструменты и приложения на основе координат из Википедии.Я не уверен, что это то, что вы ищете, но Geosearch.py инструмент выглядит очень круто.

Не API, но вы также можете скачать этот замечательный набор всех статей Википедии с геотегами и запросить их непосредственно в локальной базе данных: http://www.google.com/fusiontables/DataSource?dsrcid=423292

бесплатный Сервис GeoNames.org FindNearbyWikipedia может получать статьи с геотегами для указания почтового индекса или координат (широта, долгота)

Предоставляет суточный лимит в 30 000 кредитов на приложение (определяется параметром «имя пользователя»), ежечасный лимит составляет 2000 кредитов. Кредит является запросом веб-службы для большинства служб. Исключение выдается при превышении лимита.

Я недостаточно знаком с SPARQL, но если он может использовать мощность в своем фильтре, то легко вычислить расстояние от данной статьи до заданной точки, используя теорему Пифагора (a ^ 2 + b ^ 2 = c ^ 2) и это даст вам все статьи в радиусе.

Другой вариант - получить дамп данных Википедии и обработать его самостоятельно. это то, что я делал, когда мне нужно было провести лингвистический анализ статьи в Википедии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top