2

を使用して 2 点間の距離を計算しようとしていgeosparqlます。次の画像のようなオブジェクトがあります (同じプロパティ、異なる値):

ここに画像の説明を入力

そして、私はそのクエリを実行していますsparql:

PREFIX geos: <http://www.opengis.net/ont/geosparql#>
PREFIX geosf: <http://www.opengis.net/def/function/geosparql/>
PREFIX : <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#>

SELECT ?distance
WHERE {
    ?wifipoint1 :hasGeometry ?geo1 .
    ?geo1 geos:asWKT ?wpoint1 .
    FILTER sameterm(?wifipoint1, <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#NYWifiFree103>) 
    ?wifipoint2 :hasGeometry ?geo2 .
    ?geo2 geos:asWKT ?wpoint2 .
    FILTER sameterm(?wifipoint2, <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#NYWifiFree105>) .
    ?distance geosf:distance(?wpoint1 ?wpoint2 <http://qudt.org/vocab/unit#Kilometer>)
}

距離を追加せずに、次の結果を得ることができます。

ここに画像の説明を入力

しかし、現時点では距離を追加すると、空の行が得られます。何か案が?

ノート:

  • それぞれ 1 つのポイントを持つ 2 つの wifipoint (NYWifiFree103 と NYWifiFree105) 間の距離を計算する必要があります。

  • そのクエリを stardog で実行しています。

**編集**

クエリを簡略化しました:

PREFIX geos: <http://www.opengis.net/ont/geosparql#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
PREFIX : <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#>

SELECT (geof:distance(?wpoint1, ?wpoint2, <http://qudt.org/vocab/unit#Kilometer>) as ?distance)
WHERE {
    ?wifipoint1 :hasGeometry ?geo1 .
    ?geo1 geos:asWKT ?wpoint1 .
    FILTER sameterm(?wifipoint1, <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#NYWifiFree103>) .
    ?wifipoint2 :hasGeometry ?geo2 .
    ?geo2 geos:asWKT ?wpoint2 .
    FILTER sameterm(?wifipoint2, <http://www.semanticweb.org/frubi/ontologies/2017/10/puntsWIFI#NYWifiFree105>)
}

geof:distance2 つのハードコードを設定するとwktLiteral正しい距離が返されますが、ポイントを使用しても何も返されません。

4

3 に答える 3