首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GeoSPARQL在Virtuoso上的st_within函数

GeoSPARQL在Virtuoso上的st_within函数
EN

Stack Overflow用户
提问于 2016-08-17 18:20:14
回答 1查看 303关注 0票数 0

我安装了Virtuoso Open Source Edition 07.20.3217

但是GeoSPARQL并没有像我预期的那样工作。

我插入了10个三元组

代码语言:javascript
复制
prefix   owl:  <http://www.w3.org/2002/07/owl#>
prefix  rdfs:  <http://www.w3.org/2000/01/rdf-schema#>
prefix   geo:  <http://www.opengis.net/ont/geosparql#>
prefix    ex:  <http://www.example.org/POI#>
prefix    sf:  <http://www.opengis.net/ont/sf#>
prefix   rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

ex:WashingtonMonument 
   rdf:type          ex:Monument  
   rdfs:label        "Washington Monument"  ;
   geo:hasGeometry   ex:WMPoint  .

ex:WMPoint 
   rdf:type          sf:Point  ;
   geo:asWKT         "POINT(-77.03524 38.889468)"^^geo:wktLiteral  .

ex:NationalMall 
   a                 ex:Park  ;
   rdfs:label        "National Mall"  ;
   geo:hasGeometry   ex:NMPoly  .

ex:NMPoly 
   a                 sf:Polygon  ;
   geo:asWKT         "POLYGON((-77.050125 38.892086, -77.039482 38.892036, -77.039482 38.895393, -77.033669 38.895508, -77.033585 38.892052, -77.031906 38.892086, -77.031883 38.887474, -77.050232 38.887142, -77.050125 38.892086 ))"^^geo:wktLiteral  .

然后我尝试了这个GeoSPARQL查询--

代码语言:javascript
复制
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
SELECT *
WHERE {
  ?m  geo:hasGeometry  ?mgeo .
  ?p  geo:hasGeometry  ?pgeo .
  FILTER (bif:st_within(?mgeo, ?pgeo))
}

但是没有结果。

我做错什么了?

感谢您的回复。

EN

回答 1

Stack Overflow用户

发布于 2016-08-17 21:12:50

我想你可能想要指定你在寻找公园内的纪念碑。另外,我不认为你想要一个通配符的结果,只想要这样的古迹和公园的列表。

代码语言:javascript
复制
PREFIX geo: <http://www.opengis.net/ont/geosparql#>

SELECT ?monument  
       ?park
WHERE
  {
    ?monument                a  ex:Monument ;
               geo:hasGeometry  ?mgeo       .

    ?park                    a  ex:Park     ;
               geo:hasGeometry  ?pgeo       .

    FILTER (bif:st_within(?mgeo, ?pgeo))

  }

Live examples通常比假设更有用,所以这里的an adjusted query确实会产生结果,尽管纪念碑与公园的指定似乎存在问题,而且两者都有POINT几何结构(即没有POLYGON数据) --

代码语言:javascript
复制
PREFIX   geo:  <http://www.opengis.net/ont/geosparql#>
PREFIX  lgdo:  <http://linkedgeodata.org/ontology/>
PREFIX   wgs:  <http://www.w3.org/2003/01/geo/wgs84_pos#>

SELECT  ?monument  ?mlabel  ?mgeo 
        ?park      ?plabel  ?pgeo
WHERE
  {
    ?monument             a  lgdo:Monument   ;
                 rdfs:label  ?mlabel  ;
               wgs:geometry  ?mgeo  .

    ?park                 a  lgdo:Park  ;
                 rdfs:label  ?plabel  ;
               wgs:geometry  ?pgeo  .

    FILTER (bif:st_within(?mgeo, ?pgeo))
  }

我没有时间找到一个实时数据集,其中包括公园的纪念碑几何图形,并准确地将纪念碑POINTs放在这样的公园POLYGONs中,所以我不能深入挖掘……但是,如果您可以将您的实例设置为公共实例,或者指向包含此类数据的活动公共实例,我们可以更进一步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38993908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档