获得自治市的区域

时间:2016-01-09 20:46:32

标签: rdf sparql geospatial geo spatial-query

我正在使用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”...... ......

2 个答案:

答案 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) ...