我激发了this文章的灵感,并使用geosparql本体创建了一个本体。名为Area和Park的两个类被创建为geosparql的要素类的子类。将3个区域实例和1个公园实例添加到本体中。然后,创建几何实例(asWKT)作为geosparql的Polygon类的子类。并且通过hasGeometry对象属性(The created ontology and instances)将几何实例与公园和区域实例相关联。
我尝试进行拓扑查询,以找出哪些Area实例在Park实例中。因此,我使用Protégé4.3的sparql查询插件运行了下面的查询。
前缀geosparql:http://www.opengis.net/ont/geosparql#前缀su:http://www.example.org/su#
选择?x ?y其中{ ?x a su:Area;geosparql:hasGeometry ?xgeo。?y a su:Park;geosparql:hasGeometry ?ygeo。?xgeo geosparql:ygeo ?ygeo。}
没有返回结果,但我知道Park实例中有两个Area实例。我没有发现问题所在。我不是用geosparql和protégé查询拓扑关系吗?
发布于 2018-03-08 23:07:52
问题是你没有导入sfWithin实体的“好”用法。
http://www.opengis.net/ont/geosparql#sfWithin和http://www.opengis.net/def/function/geosparql/sfWithin是有区别的。
实际上,我还不明白如何在Protégé中继续这个声明,我对此感到抱歉。
如果你真的需要使用这样的拓扑查询,你可以使用GraphDB,它为GeoSPARQL实现了一个很好的工作插件。
https://stackoverflow.com/questions/47607181
复制相似问题