[英]RDF4J and GEOSparql spatial functions not working (or not implemented)
我正在使用RDF4J,这是因为我发现其广告实现是GEOSPARQL(在其他RDF框架中找不到)。 我遵循了基本指南和教程,但是不幸的是,我基本上无法执行任何广告查询。
我阅读并遵循了http://docs.rdf4j.org/programming/#_geosparql上的所有文档以及http://graphdb.ontotext.com/documentation/standard/geosparql-support.html和上的所有示例。 https://portal.opengeospatial.org/files/?artifact_id=47664 。 似乎在SPARQL查询中起作用的唯一空间功能是geof:distance
,所有其他功能均不产生任何结果。
因此,我最终在org.eclipse.rdf4j.query.algebra.evaluation.function.geosparql
包中研究了代码,以了解有些类和接口可能应该实现和扩展,例如SpatialAlgebra
, SpatialSupport
, SpatialSupportInitializer
。 看来许多功能并未在空间逻辑中完全(或部分)实现。 显然,有一个DefaultSpatialAlgebra
,它返回很多notSupported
。 无论如何,了解使GEOSPARQL正常工作的正确过程是一个混乱的过程(没有文档记录)。 他们只是说您可以实现自己的SpatialSupportInitializer
,但是之后如何使用它是一个谜。
从文档中可以明显看出,还有一种使用其他SAIL的方法,但同样,这还不清楚。
任何人SpatialSupport
SpatialSupportInitializer
我提供一些指导,或者至少是一段代码片段,其中显示了如何将SpatialAlgebra
或SpatialSupport
或SpatialSupportInitializer
实际传递给引擎,这不是默认的? 还是已经存在实现所有这些方法的SAIL,该如何使用? 谢谢。
PS:我实际上是依靠2.4.0 M2版本的RDF4J,它似乎没有里面的org.eclipse.rdf4j.query.algebra.evaluation.function.geosparql
包(我手动导入了)。 我也尝试使用2.3.1版,但存在相同的问题。
更新自RDF4J 2.4.0-M3起,GeoSPARQL功能支持更加全面。 改进后的文档提供了所有受支持功能的完整列表,并希望能更好地说明如何开始使用GeoSPARQL。 它的简短之处在于,您需要做的就是添加以下Maven模块:
<dependency>
<groupId>org.eclipse.rdf4j</groupId>
<artifactId>rdf4j-queryalgebra-geosparql</artifactId>
<version>2.4.0-M3</version>
</dependency>
并且您可以在任何类型的RDF4J存储库上使用GeoSPARQL。
RDF4J还开箱即用地支持其他几个GeoSPARQL函数:除了distance
, union
, intersection
, symDifference
, difference
, convexHull
, boundary
, envelope
和getSRID
都至少受支持。 sfContains
是, sfContains
当前不属于默认设置。 这主要是由于RDF4J在早期版本的JTS库中存在许可问题(需要多边形支持)。 但是,作为LocationTech项目的一部分,完成了更多最新的JTS发布,并且这些许可证问题已得到解决,因此我们希望能够在不久的将来扩展它(在https://github.com上存在跟踪此问题的问题) / eclipse / rdf4j-storage / issues / 89 )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.