2

我正在使用 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:

在此处输入图像描述

这似乎表明

  1. 我在设置这个测试时做错了什么(如果是,那是什么?)或者

  2. RDF4J 不支持 GeoSPARQL(至少不支持 geof:sfIntersects 函数)

1 和/或 2 还是别的什么?

谢谢。

4

1 回答 1

1

我在 Maven 应用程序中使用 RDF4J API 时遇到了类似的问题,问题最终是 GeoSPARQL 函数是在 rdf4j-queryalgebra-geosparql 包中定义的;默认情况下不包括在内。将其添加到我的 POM 后,查询按预期工作。

我对应用程序服务器不是很熟悉,但是快速浏览一下部署在 Tomcat 上的 rdf4j-workbench,会发现 lib/ 目录中缺少该库。一旦我手动添加它并重新加载应用程序,我的空间查询就会正确解析和执行。

于 2017-01-12T21:59:59.370 回答