我正在开发一个主要使用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个
答案 0 :(得分:1)
我不是100%确定您能够作为Sesame HTTPRepository 访问RDF4J远程存储库,尤其是当您的客户端库很旧时。芝麻版2.7非常古老,从那时起对REST API进行了很多改进 - 它们应该向后兼容,但是......
但是,鉴于在RDF4J Server上运行的RDF4J存储库是SPARQL端点,您当然可以像创建SPARQLRepository
对象一样访问它,就像访问任何SPARQL端点一样。
顺便说一下:让Blazegraph的人知道你想要升级到RDF4J。他们优先考虑RDF4J支持受用户需求的控制(应该是这样),所以让他们知道这对你很重要!