Sparql 无法找到点是否位于具有GeoSparqrl和SFIN函数的多边形内

Sparql 无法找到点是否位于具有GeoSparqrl和SFIN函数的多边形内,sparql,jena,geosparql,Sparql,Jena,Geosparql,我需要写一个查询来检查一个确定的点是否在多边形内 我试图使用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/

我需要写一个查询来检查一个确定的点是否在多边形内

我试图使用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 .  
}

Jena没有实现GeoSPARQL。
有关Jena特定的空间函数,请参见。

在CloudDB上运行此查询时,结果都是相同的。为什么?它不是Jena实现,所以应该可以工作,对吧?我不知道CloudDB,但这取决于他们使用什么软件来实现SPARQL端点。GeoSparql支持还远没有普及。@MaykeFerreira什么是CloudDB,它在哪里支持SPARQL?为什么您认为任何三重存储都支持GeoSPARQL?它不是W3C SPARQL规范的一部分……顺便说一句,在jena中支持Geosparql并不是那么困难,至少对于该功能:只需实现
org.apache.jena.SPARQL.function.function
并在jena系统中注册名称空间“geof:sfin”。可能在github或其他地方已经有现成的解决方案。需要将完整uri(不仅仅是前缀形式)与java主体链接。请参见
org.apache.jena.sparql.function.StandardFunctions
它是如何为xpath函数(名称空间
fn
math
)创建的。
?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))