支持Lucene的RDF4J中的空间SPARQL查询

时间:2018-10-31 07:42:13

标签: lucene spatial-index rdf4j geosparql

我正在测试RDF4J的空间查询。我已经在Appache Tomcat 9.0.12上部署了RDF4J Server和Workbench应用程序。我当前的数据集有853个LineString和88个多边形表示为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时,查询性能都会降低太多。

谁能告诉我我在这里想念的东西吗?

最好的问候

0 个答案:

没有答案
相关问题