2

私はRDF4Jワークベンチを使用しています:

System Information
Application Information
Application Name    RDF4J Workbench
Version 2.0.1
Runtime Information
Operating System    Windows 8.1 6.3 (amd64)
Java Runtime    Oracle Corporation Java HotSpot(TM) 64-Bit Server VM (1.8.0_101)
Process User    Greg
Memory
Used    203 MB
Maximum 3463 MB

github の RDF4J リポジトリで GeoSPARQL への参照を確認できますが、現時点では実装されていないようです。RDF4J ワークベンチでのテストを設定するために、クリアされた「RDFS+SPIN サポートを使用したメモリ内ストア」リポジトリで次の SPARQL 更新クエリを実行しました。

PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX sf: <http://www.opengis.net/ont/sf#>
PREFIX sxxicci: <http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/SXXIComplianceCheckIndividuals#>

INSERT DATA
{
     sxxicci:aPolygon geo:asWKT "Polygon((0.5 -0.5, 0.5 0.5, -0.5 0.5, 0.5 -0.5))"^^sf:wktLiteral .
}

これにより、1 つのファクトを持つリポジトリが作成されます。

ここで、次のクエリを使用してリテラル ポリゴンとのオーバーラップを検索しようとします。これにより、上記で設定した 1 つのファクトが検出されます。

PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
PREFIX sf: <http://www.opengis.net/ont/sf#>

SELECT DISTINCT * 
WHERE 
{
     ?bGeom geo:asWKT ?bWKT . 
     FILTER (geof:sfIntersects(?bWKT, "Polygon((1 0, 1 1, 0 1, 1 0))"^^sf:wktLiteral))
}

このクエリは、レンダリングした HTML としてエラー結果を返します。

ここに画像の説明を入力

これは次のことを示しているようです。

  1. このテストの設定で何か間違ったことをしました (もしそうなら、何をしますか?) または

  2. RDF4J は GeoSPARQL をサポートしていません (少なくとも geof:sfIntersects 関数はサポートしていません)。

1および/または2またはその他の何か?

ありがとう。

4

1 に答える 1

1

Maven アプリケーションで RDF4J API を使用して同様の問題が発生しました。問題は、GeoSPARQL 関数が rdf4j-queryalgebra-geosparql パッケージで定義されていることでした。デフォルトでは含まれていません。それをPOMに追加した後、クエリは期待どおりに機能しました。

私はアプリケーション サーバーにあまり詳しくありませんが、Tomcat にデプロイされた rdf4j-workbench をざっと見てみると、ライブラリが lib/ ディレクトリにないことがわかります。手動で追加してアプリケーションをリロードすると、空間クエリが正しく解析および実行されました。

于 2017-01-12T21:59:59.370 に答える