使用Sesame库连接到RDF4J服务器?

时间:2017-06-26 15:23:59

标签: sparql sesame blazegraph openrdf

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

该项目有另一个组件可以使用嵌入式芝麻,或独立的芝麻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:   存储库中的存储库实现缺少线程中的异常   “main”java.lang.ExceptionInInitializerError at   UuidRefresh.main(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)at   UuidRefresh $。(UuidRefresh.scala)... 1更多引起:   org.openrdf.repository.RepositoryException:   org.eclipse.rdf4j.repository.config.RepositoryConfigException:   缺少存储库的存储库实现   org.openrdf.http.client.SparqlSession.execute(SparqlSession.java:1100)     在   org.openrdf.http.client.SparqlSession.executeOK(SparqlSession.java:1028)     在   org.openrdf.http.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个

1 个答案:

答案 0 :(得分:1)

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

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

顺便说一下:让Blazegraph的人知道你想要升级到RDF4J。他们优先考虑RDF4J支持受用户需求的控制(应该是这样),所以让他们知道这对你很重要!