获取自治市的面积

Get area of municipality

我正在使用 stSPARQL,裁判说:

xsd:float strdf:area(strdf:geometry A): Returns the area of the surface if it is a polygon or multi-polygon.

所以我正在尝试:

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() 的结果,但我失败了!

?geometry 的第一个结果是:

"MULTIPOLYGON(((476162.8125 3949684,476195.687499999 3949675,476216.000000001 3949675,476226.1875 3... more


编辑:

如果我尝试这样做:?area = strdf:area(?geometry) .,我会得到一个错误:

Encountered " "=" "= "" at line 15, column 9. Was expecting one of: "(" ... "!" ... "^" ... "a" ... ... ...

我认为您想对具有 return 值的函数执行的操作是您应该以某种方式在 select 子句中使用它。 例如:

PREFIX geo: ...
PREFIX rdf: ...
PREFIX strdf: ...
PREFIX xsd: ...
...
SELECT (strdf:area(?geometry) AS ?myarea)
WHERE {
        ?municipality geo:has_geometry ?geometry .
}

据说这会为您提供所有需要添加的区域,只需使用 SUM(?myarea) 函数即可。这会添加 "area" 函数找到的所有答案。在之前的情况下,您的 select 子句类似于:

SELECT (SUM(strdf:area(?geometry)) AS ?myarea)

FILTER 不设置变量。

根据您关于想要收集 strdf:area() 结果的评论,

BIND(strdf:area(?geometry) AS ?area)

SELECT ... (strdf:area(?geometry) AS ?area) ...