使用芝麻库连接到 RDF4J 服务器?
Connect to RDF4J server with Sesame library?
我正在从事一个主要使用 Blazegraph 作为后端的项目,据我所知,这将我锁定在相对较旧的 Sesame (2.7.12) 中。
该项目有另一个组件可以使用嵌入式 Sesame,或独立的 Sesame 或 RDF4J。 我已经设置了一个独立的 RDF4J,所以我更愿意使用它。
我可以使用以下 Scala 代码连接到嵌入式 Sesame。如果我将 serverUrl
更改为指向独立的 RDF4J 2.2,则会出现以下错误。
是否可以使用 Sesame 访问 RDF4J 服务器API?
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 - Server reports
problem:
org.eclipse.rdf4j.repository.config.RepositoryConfigException:
Repository implementation for repository missing Exception in thread
"main" java.lang.ExceptionInInitializerError at
UuidRefresh.main(UuidRefresh.scala) Caused by:
org.openrdf.repository.http.HTTPQueryEvaluationException:
org.eclipse.rdf4j.repository.config.RepositoryConfigException:
Repository implementation for repository missing at
org.openrdf.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:64)
at UuidRefresh$.(UuidRefresh.scala:54) at
UuidRefresh$.(UuidRefresh.scala) ... 1 more Caused by:
org.openrdf.repository.RepositoryException:
org.eclipse.rdf4j.repository.config.RepositoryConfigException:
Repository implementation for repository missing at
org.openrdf.http.client.SparqlSession.execute(SparqlSession.java:1100)
at
org.openrdf.http.client.SparqlSession.executeOK(SparqlSession.java:1028)
at
org.openrdf.http.client.SparqlSession.sendTupleQueryViaHttp(SparqlSession.java:807)
at
org.openrdf.http.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 more
我不是 100% 确定您能够像访问 Sesame HTTPRepository 一样访问 RDF4J 远程存储库,尤其是当您的客户端库太旧时。 Sesame 2.7 版本相当古老,从那时起对 REST API 做了很多改进 - 它们 应该 向后兼容,但是......
但是,鉴于 RDF4J 服务器上的 RDF4J 存储库 运行 是一个 SPARQL 端点,您当然可以通过创建 SPARQLRepository
对象始终像访问任何 SPARQL 端点一样访问它。
顺便说一句:请让 Blazegraph 人员知道您想要升级到 RDF4J。他们优先考虑 RDF4J 支持是由用户需求决定的(应该如此),所以让他们知道这对您很重要!
我正在从事一个主要使用 Blazegraph 作为后端的项目,据我所知,这将我锁定在相对较旧的 Sesame (2.7.12) 中。
该项目有另一个组件可以使用嵌入式 Sesame,或独立的 Sesame 或 RDF4J。 我已经设置了一个独立的 RDF4J,所以我更愿意使用它。
我可以使用以下 Scala 代码连接到嵌入式 Sesame。如果我将 serverUrl
更改为指向独立的 RDF4J 2.2,则会出现以下错误。
是否可以使用 Sesame 访问 RDF4J 服务器API?
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 - Server reports problem: org.eclipse.rdf4j.repository.config.RepositoryConfigException: Repository implementation for repository missing Exception in thread "main" java.lang.ExceptionInInitializerError at UuidRefresh.main(UuidRefresh.scala) Caused by: org.openrdf.repository.http.HTTPQueryEvaluationException: org.eclipse.rdf4j.repository.config.RepositoryConfigException: Repository implementation for repository missing at org.openrdf.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:64) at UuidRefresh$.(UuidRefresh.scala:54) at UuidRefresh$.(UuidRefresh.scala) ... 1 more Caused by: org.openrdf.repository.RepositoryException: org.eclipse.rdf4j.repository.config.RepositoryConfigException: Repository implementation for repository missing at org.openrdf.http.client.SparqlSession.execute(SparqlSession.java:1100) at org.openrdf.http.client.SparqlSession.executeOK(SparqlSession.java:1028) at org.openrdf.http.client.SparqlSession.sendTupleQueryViaHttp(SparqlSession.java:807) at org.openrdf.http.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 more
我不是 100% 确定您能够像访问 Sesame HTTPRepository 一样访问 RDF4J 远程存储库,尤其是当您的客户端库太旧时。 Sesame 2.7 版本相当古老,从那时起对 REST API 做了很多改进 - 它们 应该 向后兼容,但是......
但是,鉴于 RDF4J 服务器上的 RDF4J 存储库 运行 是一个 SPARQL 端点,您当然可以通过创建 SPARQLRepository
对象始终像访问任何 SPARQL 端点一样访问它。
顺便说一句:请让 Blazegraph 人员知道您想要升级到 RDF4J。他们优先考虑 RDF4J 支持是由用户需求决定的(应该如此),所以让他们知道这对您很重要!