2016-08-17 3 views
0

Virtuoso Open Source Edition 07.20.3217がインストールされています。VirtuosoのGeoSPARQLのst_within機能

しかし、GeoSPARQLは期待通りに機能しません。

私は10のトリプル挿入 -

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

しかし、誰結果はありません -

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クエリを試してみました。

どうしたのですか?

ありがとうございました。

+0

この記事の修正をありがとう、TallTed。 :) –

答えて

0

公園内のモニュメントを探していると指定したいと思うかもしれません。また、私はあなたがワイルドカードの結果を望んでいるとは思っていませんが、そのような記念碑と公園のリストだけです。

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は、だ、しばしばhypotheticalsよりも有用であり、両方がPOINT形状を有する(すなわち、なしPOLYGONデータ) -

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)) 
    } 

私は公園のためPOLYGONジオメトリを含んでライブデータセットを見つけるための時間を持って、かつ正確な公園POLYGONs内の記念碑POINTsを置くので、私はあまりさらに掘ることができない...しかし、あなたの場合はありませんインスタンスをパブリックにすることができます。また、そのようなデータを保持している公開されている公開インスタンスを指すこともできます。

+0

お返事ありがとうございます。あなたのコメントとして、私は公園内のモニュメントを取得したいです。しかし、タイプとワイルドカードの問題ではありません。 GeoSPARQLも機能しません。 –

+0

ライブクエリで更新しましたが、不完全なデータに対しては不完全な結果が返されました... – TallTed

+0

ありがとうございます。私は、「OGC GeoSPARQL - RDFデータ用の地理クエリー言語」の例を試してみましたが、うまくいきました。このドキュメントでは、opengis.netで定義された関数geof:sfWithinのような関数を使用しています。 Virtuosoはこれらの機能をサポートしていませんか? –

関連する問題