Не удается найти, если точка находится внутри многоугольника с функциями GeoSparqrl и sfWithin

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

Я пытаюсь использовать GeoSparql, но не дает ожидаемых результатов.

Если я выполню простой запрос, например:

PREFIX iot-lite: <http://purl.oclc.org/NET/UNIS/fiware/iot-lite#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>

SELECT ?poligono ?pointGeo
    WHERE{
    ?casa  iot-lite:hasPoint ?poligono ;
            rdf:type iot-lite:Polygon .
    ?point  rdf:type  geo:Point ;
            iot-lite:hasPoint ?pointGeo .  
}

Результаты:

?poligon
    "POLYGON((-16.67362 -49.24468, -16.67363 -49.24466, -16.67365 -49.24468, -16.67364 -49.2447, -16.67364 -49.24468))"^^<http://www.opengis.net/ont/sf#wktLiteral>

?pointgeo    
    "POINT((-16.67363 -49.24468))"^^<http://www.opengis.net/ont/sf#wktLiteral> 

Но если я добавлю фильтр ниже к запросу, он ничего не вернет. Но проблема в том, что точка находится внутри многоугольника.

FILTER (geof:sfWithin(?pointGeo, ?poligono))

1 ответ

Йена не реализует GeoSPARQL. Смотрите документацию по определенным пространственным функциям Jena.

Другие вопросы по тегам