我正在使用stSPARQL,而裁判说:
xsd:float strdf:area(strdf:geometry A):如果是多边形或多边形,则返回曲面的区域。
所以我在尝试:
PREFIX geo: <http://geo.linkedopendata.gr/gag/ontology/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX strdf: <http://strdf.di.uoa.gr/ontology#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
...
?municipality geo:has_geometry ?geometry . // so far so good (checked)
FILTER(strdf:area(?geometry) = ?area) .
我结果什么也没得到。我的总体目标是获得所有城市的总面积,但我甚至得不到一个!有什么想法吗?
请注意,这是我第一次使用空间度量函数,因此我要做的是收集并显示strdf:area()
的结果,但我失败了!
?几何的第一个结果是:
“MULTIPOLYGON(((476162.8125 3949684,476195.687499999 3949675,476216.000000001 3949675,476226.1875 3 ...更多
编辑:
如果我尝试这个:?area = strdf:area(?geometry) .
,我会收到错误:
在第15行第9栏遇到“”=“”=“”。期待其中一个:“(”......“!”......“^”......“a”...... ......
答案 0 :(得分:4)
我认为你想要对具有返回值的函数做什么,你应该以某种方式在select子句中使用它。 例如:
PREFIX geo: ...
PREFIX rdf: ...
PREFIX strdf: ...
PREFIX xsd: ...
...
SELECT (strdf:area(?geometry) AS ?myarea)
WHERE {
?municipality geo:has_geometry ?geometry .
}
据说这为您提供了需要添加的所有区域,只需使用SUM(?myarea)功能即可。这会添加“区域”功能找到的所有答案。在之前的情况下,您的select子句类似于:
SELECT (SUM(strdf:area(?geometry)) AS ?myarea)
答案 1 :(得分:4)
FILTER不设置变量。
根据您关于想要收集strdf:area()
结果的评论,
BIND(strdf:area(?geometry) AS ?area)
或
SELECT ... (strdf:area(?geometry) AS ?area) ...