我对 GeoSPARQL 很陌生。我下载了本体,将其导入 Protégé,并按照GeoSPARQL 用户指南 (PDF) 中的附录 B创建了类和个人。
当使用议会请求 WKT 时,值被重复,这在 Protégé 中没有发生:
SELECT ?geom WHERE { ?x my:exactGeometry ?xGeom . ?xGeom geo:asWKT ?geom . }
结果显示每个值 2 次。
geof:sf
执行函数时我没有得到任何结果。
我对 GeoSPARQL 很陌生。我下载了本体,将其导入 Protégé,并按照GeoSPARQL 用户指南 (PDF) 中的附录 B创建了类和个人。
当使用议会请求 WKT 时,值被重复,这在 Protégé 中没有发生:
SELECT ?geom
WHERE {
?x my:exactGeometry ?xGeom .
?xGeom geo:asWKT ?geom .
}
结果显示每个值 2 次。
geof:sf
执行函数时我没有得到任何结果。
我没有使用过 GeoSPARQL,所以我无法解决很多问题,但是,首先,像这样的查询
SELECT ?geom WHERE {
?x my:exactGeometry ?xGeom .
?xGeom geo:asWKT ?geom .
}
?geom
默认情况下,将为图形模式可以匹配的每种方式返回一个值。例如,如果图表包含
_:x1 my:exactGeometry _:xGeom1 .
_:xGeom1 geo:asWKT _:geom .
_:x2 my:exactGeometry _:xGeom2 .
_:xGeom2 geo:asWKT _:geom .
这样就有两个匹配的模式(一个与?x = _:x1
and ?xGeom = _:xGeom1
,另一个与?x = _:x2
and ?xGeom = _:xGeom2
),您将_:geom
在结果中看到两次。distinct
您可以在查询中使用删除这些类型的重复项:
SELECT DISTINCT ?geom WHERE {
?x my:exactGeometry ?xGeom .
?xGeom geo:asWKT ?geom .
}
第二点,正如我所提到的,我不是 GeoSPARQL 用户,但我怀疑规范只是定义了这些扩展函数应该做什么。除非您下载了一些代码(例如,Protégé 插件),否则我看不到这些功能的实现会在哪里提供。SPARQL 扩展必须由 SPARQL 端点实现提供;它们没有在您下载的本体或您查询的数据中定义。关于 GeoSPARQL 的 Wikipedia 文章有一个实现部分,其中列出了三个支持 GeoSPARQL 的实现。其中之一是你提到的议会,但你没有提到这些职能是否在 Protégé 或议会中不起作用。