Skip to content
Kirill Ivashov edited this page Mar 23, 2016 · 6 revisions

Geo Dbpedia KP

Задача KP

Обработка запросов на списки точек от клиентского приложения с использованием сервиса DBPedia.

Алгоритм

Запрос содержит координаты, радиус и шаблон-строку. Поскольку DBPedia позволяет выполнять запрос только с использованием простых операций сравнения географических координат, для запросы выполняется следующее:

  • Определяются координаты (lat1, lon1, lat2, lon2), ограничивающие круг заданного радиуса на сфере (статья)
  • Выполняется запрос к dbpedia с использованием следующего шаблона SPARQL-запроса:
SELECT ?poi, ?label, ?lat, ?long
WHERE { ?poi a geo:SpatialThing ; foaf:name ?label ;  geo:lat ?lat ; geo:long ?long .
  FILTER (?long > %lon1% && ?long < %lon2% && ?lat > %lat1% && ?lat% < %lat2%) .
  FILTER (regex(?label, "%pattern%"))
}
  • Из результата запроса к DBPedia отбираются точки входящие в заданный радиус с использованием формулы гаверсинусов.
  • Результат публикуется в smartspace.

Запуск

./geo_db_kp

Для работы требуется наличие в текущем каталоге файла config.ini Фрагмент файла для DBPedia KP

[Sparql]            
Endpoint=http://live.dbpedia.org/sparql