Я пытаюсь рассчитать расстояние между двумя точками с помощью geosparql
. У меня есть объекты, подобные следующему изображению (те же свойства, разные значения):
И я выполняю этот запрос в sparql
:
PREFIX geos: <http://www.opengis.net/ont/geosparql#>
PREFIX geosf: <http://www.opengis.net/def/function/geosparql/>
PREFIX : <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#>
SELECT ?distance
WHERE {
?wifipoint1 :hasGeometry ?geo1 .
?geo1 geos:asWKT ?wpoint1 .
FILTER sameterm(?wifipoint1, <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#NYWifiFree103>)
?wifipoint2 :hasGeometry ?geo2 .
?geo2 geos:asWKT ?wpoint2 .
FILTER sameterm(?wifipoint2, <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#NYWifiFree105>) .
?distance geosf:distance(?wpoint1 ?wpoint2 <http://qudt.org/vocab/unit#Kilometer>)
}
Не прибавляя расстояния, я могу получить следующий результат:
Но в тот момент, когда я добавляю расстояние, получаются пустые строки. Любая идея?
Примечания:
Мне нужно рассчитать расстояние между двумя Wi-Fi точками (NYWifiFree103 и NYWifiFree105), каждый из которых имеет точку.
Я выполняю эти запросы в stardog.
** ИЗМЕНИТЬ **
Я упростил запрос:
PREFIX geos: <http://www.opengis.net/ont/geosparql#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
PREFIX : <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#>
SELECT (geof:distance(?wpoint1, ?wpoint2, <http://qudt.org/vocab/unit#Kilometer>) as ?distance)
WHERE {
?wifipoint1 :hasGeometry ?geo1 .
?geo1 geos:asWKT ?wpoint1 .
FILTER sameterm(?wifipoint1, <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#NYWifiFree103>) .
?wifipoint2 :hasGeometry ?geo2 .
?geo2 geos:asWKT ?wpoint2 .
FILTER sameterm(?wifipoint2, <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#NYWifiFree105>)
}
Когда я устанавливаю geof:distance
два жестко закодированных wktLiteral
, я возвращаю правильное расстояние, но использование Points не возвращает ничего.
SELECT (geosf:distance(?wpoint1 ?wpoint2 <http://qudt.org/vocab/unit#Kilometer>) as ?distance) WHERE ...
? - person UninformedUser   schedule 08.06.2018BIND
внутри запроса? У вас включен пространственный индекс? - person UninformedUser   schedule 10.06.2018geos:asWKT
? Префиксаgeos:
в вашем запросе нет, он должен бытьgeo:asWKT
- person UninformedUser   schedule 10.06.2018geos
- person Mohamed Said Benmousa   schedule 10.06.2018BIND (geof:distance(?wpoint1, ?wpoint2, <http://qudt.org/vocab/unit#Kilometer>) as ?distance)
- person Mohamed Said Benmousa   schedule 10.06.2018stardog-admin db create -o spatial.enabled=true -n ...
- person UninformedUser   schedule 11.06.2018