我可以使用 GeoSPARQL 表示一个地理区域与另一个地理区域不相交(完全相反)吗?
我想表示(在 RDF 中使用我自己的本体和 GeoSPARQL)我在某个区域内有一个与其他区域完全不相交的实体。例如。我想描述汽车何时离开我的郊区(或进入“不是我的郊区”)。
我尝试使用 geosparql sfDisjoint 谓词来表示覆盖整个地球的“不是我的郊区”的位置。这在 SPARQL 查询时不起作用,因为 sfDisjoint 被正确地视为函数,而不是查询引擎的关系/属性。
我意识到我没有很好地表达这一点。有没有人足够理解我的问题来帮助我更好地描述它?
更好的是,有人知道我是否可以使用 GeoSPARQL 来实际表示某个位置不相交的事实,而不是仅仅计算它是否作为查询结果。如果没有,是否有更合适的本体来用来表示这种空间关系。
# Purely illustrative Turtle RDF sample showing how I've tried to use geosparql:sfDisjoint predicate.
@prefix data: <http://somedata.doesnt.matter.what#> .
@prefix ont: <http://someontologydoesnt.matter.what#> .
@prefix geosparql: <http://www.opengis.net/ont/geosparql#> .
# Car 1 is in my suburb
data:mycar1 a ont:Car ;
ont:inLocation data:mysuburb .
# Car 2 is outside my suburb
data:mycar2 a ont:Car ;
ont:inLocation [
a ont:Location ;
geosparql:sfDisjoint data:mysuburb
] .
data:mysuburb a ont:Location ;
ont:name "My Suburb" ;
ont:geoJSON """{"type": "Polygon", "coordinates": [[[40,40], [40,41], [41,40], [40,40]]]}""" .
注意:在 GIS 堆栈交换上交叉发布 https://gis.stackexchange.com/questions/487352/how-to-represent-that-region-is-disjoint-the-exact-inverse-from-another-using 但是我想我选择了错误的交易所。
答案来自本论坛之外的 GeoSPARQL 贡献者之一,即 GeoSPARQL ontology geo:sfDisjoint 属性/关系是表示几何/空间不相交的适当方法。
这是 GeoSPARQL 规范的第 9.2 节:https://docs.ogc.org/is/22-047r1/22-047r1.html#_dc9619d5-0ced-45ad-92a8-7390c6daea62
GeoSPARQL 查询函数的名称类似,但存在于不同的命名空间中,并不用于表示。 geof:sfDisjoint 函数在规范的第 11.2 节中介绍:https://docs.ogc.org/is/22-047r1/22-047r1.html#_b199579b-ac9d-4a2c-9df8-82325eba9660
最初的问题是由于耶拿内包含 GeoSPARQL 包的意外行为而提出的。当执行表示包含 geo:sdDisjoint 的查询时,查询结果将错误地为空。这似乎是 Jena GeoSPARQL 软件包的错误/错误,而不是 GeoSPARQL 规范的任何问题。