我正在使用RDF4J工作台:
System Information
Application Information
Application Name RDF4J Workbench
Version 2.0.1
Runtime Information
Operating System Windows 8.1 6.3 (amd64)
Java Runtime Oracle Corporation Java HotSpot(TM) 64-Bit Server VM (1.8.0_101)
Process User Greg
Memory
Used 203 MB
Maximum 3463 MB
虽然我可以在github上的RDF4J存储库中看到对GeoSPARQL的引用,但目前似乎并没有实现。我在已清除的"内存存储中使用RDFS + SPIN支持"运行此SPARQL更新查询。在RDF4J工作台上设置测试的存储库:
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX sf: <http://www.opengis.net/ont/sf#>
PREFIX sxxicci: <http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/SXXIComplianceCheckIndividuals#>
INSERT DATA
{
sxxicci:aPolygon geo:asWKT "Polygon((0.5 -0.5, 0.5 0.5, -0.5 0.5, 0.5 -0.5))"^^sf:wktLiteral .
}
这导致存储库有一个事实。
现在我尝试使用以下查询查找与文字多边形的重叠,该查询应该找到我上面设置的一个事实:
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
PREFIX sf: <http://www.opengis.net/ont/sf#>
SELECT DISTINCT *
WHERE
{
?bGeom geo:asWKT ?bWKT .
FILTER (geof:sfIntersects(?bWKT, "Polygon((1 0, 1 1, 0 1, 1 0))"^^sf:wktLiteral))
}
此查询以HTML格式提供错误结果:
这似乎表明
我在设置此测试时做错了(如果是,那是什么?)或者
RDF4J不支持GeoSPARQL(至少不支持geof:sfIntersects功能)
1和/或2或其他什么?
感谢。
答案 0 :(得分:1)
我在maven应用程序中使用RDF4J API遇到了类似的问题,问题最终是在rdf4j-queryalgebra-geosparql包中定义了GeoSPARQL函数;默认情况下不包括在内。将其添加到我的POM后,查询按预期工作。
我对应用程序服务器并不熟悉,但是快速查看部署在Tomcat上的rdf4j-workbench,可以看出lib /目录中缺少库。一旦我手动添加并重新加载应用程序,我的空间查询就会被正确解析并执行。