1

我正在空间查询上测试 RDF4J。我已经在 Appache Tomcat 9.0.12 上部署了 RDF4J Server 和 Workbench 应用程序。我当前的数据集有 853 个 LineStrings 和 88 个 Polygons 表示为 WKT 字段。但是查询的性能因我正在使用的存储库类型而异。以下是 SPARQL 查询。

PREFIX cpmeta1: <http://meta.icos-cp.eu/ontologies/cpmeta/>
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX sf: <http://www.opengis.net/ont/sf#> 
PREFIX uom: <http://www.opengis.net/def/uom/OGC/1.0/>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>

SELECT (count(distinct ?obj1) as ?C) 
WHERE {
       ?obj1 a geo:Feature;
             geo:hasGeometry ?geom1.
       ?geom1 a sf:LineString;
              geo:asWKT ?coord1. 
       ?obj2 a geo:Feature; 
              geo:hasGeometry ?geom2. 
       ?geom2 a sf:Polygon; 
              geo:asWKT ?coord2. 
       FILTER(geof:sfWithin(?coord1,?coord2)) 
       }

查询运行良好,结果返回 567 作为任何多边形内的线串对象的计数。

问题在于返回结果所需的时间。如果存储库是简单内存或本机类型,则此查询执行时间在不同迭代中介于 10 到 40 秒之间。但是,如果存储库是使用 Lucene 创建的,则此查询的执行时间会超过 30 分钟。

从 RD4J 的文档中,我了解到使用 lucene 应该有一个用于 asWKT 字段的空间索引,因此我希望空间连接能够在更短的时间内与 Lucene 一起运行。但相反似乎使用 lucene,相同的查询性能呈指数级下降。

我从两者测试了相同的场景:工作台 aap 以及 Eclipse 项目中的 API。在这两种情况下,当涉及 Lucene 时,查询性能都会下降太多。

谁能告诉我我在这里缺少什么?

此致

4

0 回答 0