RDF4J (以前のセサミ) フレームワークを使用して、リモートの GraphDB トリプル ストアに対して sparql クエリを実行しています。
これは、Graphdb サーバーの URL とリポジトリ ID を受け取る rdf4j HTTPRepository インターフェースを介して正常に機能しますが、sparlq エンドポイント URL をパラメーターとして受け取る rdf4j SPARQLRepository インターフェースを使用すると失敗します。
クエリを実行すると、クエリの検証で例外が発生します
"サーバー プロトコルの取得に失敗しました。このサーバーにはそのようなリソースはありません: http:///sparql?sparql?queryLn=SPARQL&query=",
sparql エンドポイントの URLと思われる場所http://<host:port>/sparql
はどこですか。これは sesame 2.7.8 と rdf4j M3 ライブラリの両方で発生しており、2 つの「すぐに使用できる」ライブラリ、つまり起動スクリプトで開始された、graphdb free 6.6.2 と 7.0.3 のインストールでも同様に発生しています。また、rdf4j SPARQLRepository インターフェイスを介して sparlq エンドポイントhttp://factforge.net/sparqlに接続しようとしたときにも発生します。これは、graphdb で実行されることがわかっています。
実際の sparql エンドポイントの URL は http:///sparql ではなく、graphdb のドキュメントに記載されていない別のものである可能性があります。誰もがこれを照らす可能性のある光に感謝します。
編集: Factforge の sparql エンドポイントに対して実行されたコード:
final String endPoint = "http://factforge.net/sparql";
final String query = "Select distinct ?airport where {?airport a dbp-ont:Airport} LIMIT 2";
SPARQLRepository repository = new SPARQLRepository(endPoint,endPoint);
repository.initialize();
RepositoryConnection connection = repository.getConnection();
TupleQueryResult result = connection.prepareTupleQuery(QueryLanguage.SPARQL,query)
.evaluate();
次の例外が生成されます。
Caused by: org.eclipse.rdf4j.repository.RepositoryException: Failed to get server protocol; no such resource on this server: http://factforge.net/sparql?queryLn=SPARQL&query=Select+distinct+%3Fairport+where+%7B%3Fairport+a+dbp-ont%3AAirport%7D+LIMIT+2&infer=true
at org.eclipse.rdf4j.http.client.SparqlSession.executeOK(SparqlSession.java:1023)
at org.eclipse.rdf4j.http.client.SparqlSession.sendTupleQueryViaHttp(SparqlSession.java:787)
at org.eclipse.rdf4j.http.client.SparqlSession.getBackgroundTupleQueryResult(SparqlSession.java:684)
at org.eclipse.rdf4j.http.client.SparqlSession.sendTupleQuery(SparqlSession.java:341)
at org.eclipse.rdf4j.repository.sparql.query.SPARQLTupleQuery.evaluate(SPARQLTupleQuery.java:43)
... 1 more
ご協力ありがとうございました