1

我正在从事一个主要使用 Blazegraph 作为后端的项目,据我了解,这将我锁定在一个相对较旧的 Sesame (2.7.12) 中。

该项目有另一个可以使用嵌入式 Sesame 或独立 Sesame OR RDF4J 的组件。 我已经设置了一个独立的 RDF4J,所以我更喜欢使用它。

我可以使用以下 Scala 代码连接到嵌入式 Sesame。如果我serverUrl改为指向独立的 RDF4J 2.2,我会收到以下错误。

是否可以使用 Sesame API 访问 RDF4J 服务器?

val serverUrl = "http://address.domain:8080/rdf4j-server"
val manager = new RemoteRepositoryManager(serverUrl)
manager.initialize()
val repositoryId = "repo_id"
val repository = manager.getRepository(repositoryId)
val con = repository.getConnection()
val queryString = "SELECT ?x ?y WHERE { ?x ?p ?y } "
val tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString)
val result = tupleQuery.evaluate()

[main] WARN org.openrdf.http.client.SesameSession - 服务器报告问题:org.eclipse.rdf4j.repository.config.RepositoryConfigException:UuidRefresh.main 的线程“main”java.lang.ExceptionInInitializerError 中的存储库实现缺少异常(UuidRefresh.scala) 引起:org.openrdf.repository.http.HTTPQueryEvaluationException: org.eclipse.rdf4j.repository.config.RepositoryConfigException: org.openrdf.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery. java:64) 在 UuidRefresh$.(UuidRefresh.scala:54) 在 UuidRefresh$.(UuidRefresh.scala) ... 1 更多原因:org.openrdf.repository.RepositoryException: org.eclipse.rdf4j.repository.config。存储库配置异常:org.openrdf.http.client.SparqlSession.executeOK(SparqlSession.java:1028) 在 org.openrdf.http 的 org.openrdf.http.client.SparqlSession.execute(SparqlSession.java:1100) 缺少存储库的存储库实现。 client.SparqlSession.sendTupleQueryViaHttp(SparqlSession.java:807) 在 org.openrdf.http.client.SparqlSession.getBackgroundTupleQueryResult(SparqlSession.java:704) 在 org.openrdf.http.client.SparqlSession.sendTupleQuery(SparqlSession.java:363)在 org.openrdf.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:58) ... 还有 3 个client.SparqlSession.getBackgroundTupleQueryResult(SparqlSession.java:704) at org.openrdf.http.client.SparqlSession.sendTupleQuery(SparqlSession.java:363) at org.openrdf.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:58) ... 3 更多client.SparqlSession.getBackgroundTupleQueryResult(SparqlSession.java:704) at org.openrdf.http.client.SparqlSession.sendTupleQuery(SparqlSession.java:363) at org.openrdf.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:58) ... 3 更多

4

1 回答 1

1

我不能 100% 确定您是否能够以Sesame HTTPRepository的形式访问 RDF4J 远程存储库,尤其是当您的客户端库太旧时。Sesame 2.7 版非常古老,从那时起对 REST API 进行了很多改进——它们应该是向后兼容的,但是......

但是,鉴于在 RDF4J 服务器上运行的 RDF4J 存储库是一个 SPARQL 端点,您当然可以像访问任何 SPARQL 端点一样通过创建一个SPARQLRepository对象来访问它。

顺便说一句:一定要让 Blazegraph 的人知道您想升级到 RDF4J。他们优先考虑 RDF4J 支持是由用户需求决定的(应该如此),所以让他们知道这对您很重要!

于 2017-06-27T01:13:11.187 回答