GraphDB sparql端点通过sesame / rdf4j SPARQLRepository接口

时间:2016-09-07 08:34:16

标签: graphdb rdf4j

我们正在使用RDF4J(以前称为sesame)框架来运行sparql查询到远程GraphDB三元组商店。

这可以通过rdf4j HTTPRepository接口成功运行,该接口接受Graphdb服务器的URL和存储库ID,但在使用rdf4j SPARQLRepository接口时失败,该接口将sparlq端点url作为参数。

在运行查询时,我们在查询验证中获得了一个例外

  

"无法获得服务器协议;此服务器上没有此类资源:   HTTP:/// SPARQL SPARQL queryLn = SPARQL&安培;查询=&#34 ;,

其中http://<host:port>/sparql是我们认为的是sparql端点的网址。 这种情况发生在sesame 2.7.8和rdf4j M3库中,同样在两个开箱即用的情况下,即从启动脚本开始,安装了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

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我还没有确定根本原因,但是,我注意到问题出现在RDF4J 2.0M3中,但不再出现在2.0 final(或2.0.1,最新版本)中。从那时起,有两个可能已经修复的问题,即RDF4J使用的Apache HttpComponents库的版本问题(#267),以及RDF4J客户端如何组成其HTTP Accept标头的改进({{ 3}})。

TL; DR:升级到RDF4J 2.0.1,您的问题应该消失。

答案 1 :(得分:1)

要将GraphDB SPARQL端点访问到您的存储库,例如在本地计算机上,您可以使用以下URL:http://localhost:7200/repositories/&lt; #your_repository#&gt;

您可以在此处详细了解如何使用带有GraphDB的Sesame API:http://graphdb.ontotext.com/documentation/free/using-graphdb-with-the-sesame-api.html