SPARQL Фильтр по расстоянию

Учитывая некоторые Здания с их соответствующими местоположениями (широта и долгота), как я могу получить только те, которые находятся на определенном расстоянии?

Допустим, у меня есть отдельный building0, расположенный в определенном месте.

ont1:building0 rdf:type ont1:Building 
ont1:building0 pos:lat 43.22 
ont1:building0 pos:lon -6.45

И я хочу получить все остальные здания ближе к 10 км.

Позволяет ли SPARQL как-то запросить это?? Или хотя бы показать, какое расстояние до других зданий??

заранее спасибо


person User 23    schedule 23.12.2016    source источник
comment
Поддержка геопространственных запросов зависит от используемого тройного хранилища. Некоторые тройные хранилища поддерживают GeoSPARQL, в то время как другие также предоставляют встроенные функции.   -  person UninformedUser    schedule 23.12.2016
comment
Поскольку вы добавили, что Virtuoso является вашим механизмом хранения, эта страница будет полезно.   -  person TallTed    schedule 24.12.2016
comment
Спасибо за ваш ответ @TallTed. Согласно предоставленной вами странице, Virtuoso 7.1 поддерживает функции GeoSpatial. А младшие версии? Есть ли способ добавить какой-то модуль, который помогает в этом вопросе?   -  person User 23    schedule 27.12.2016
comment
Обновление до текущей версии Virtuoso (7.2.4.2+), которая включает функции GeoSpatial, настоятельно рекомендуется для всех пользователей всех предыдущих версий Virtuoso. Обратный перенос функций GeoSpatial на более ранние версии 7.x или 6.x (последнее обновление 10 декабря 2013 г.) может быть возможен, но это будет Проект индивидуальной разработки с оплатой за услугу.   -  person TallTed    schedule 27.12.2016
comment
В настоящее время у меня установлена ​​версия Virtuoso 06.01.3127 на виртуальной машине Ubuntu Server. Я проверил [ссылку]virtuoso.openlinksw.com/dataspace/doc /dav/wiki/Main/, но я не могу найти руководства по обновлению Virtuoso с помощью командной строки Linux. Можно ли как-нибудь обновить Virtuoso таким образом??   -  person User 23    schedule 02.01.2017


Ответы (1)


Существует формула для расчета расстояния на основе широты и долготы: http://andrew.hedges.name/experiments/haversine/

Но SPARQL не поддерживает тригонометрические функции.

GeoSPARQL имеет функцию goof:distance для вычисления расстояния между двумя геометрическими точками (если вы можете использовать GeoSPARQL)

person Kiran.B    schedule 23.12.2016