Подключиться к серверу RDF4J с библиотекой Sesame?
Я работаю над проектом, который в основном использует Blazegraph в качестве бэк-энда, и, насколько я понимаю, запирает меня в относительно старом сезаме (2.7.12).
В проекте есть еще один компонент, который может использовать встроенный Sesame или отдельно стоящий Sesame ИЛИ RDF4J. У меня уже есть автономный RDF4J, поэтому я бы предпочел использовать его.
Я могу подключиться к встроенному кунжуту с помощью следующего кода Scala. Если я изменю serverUrl
чтобы указать на отдельно стоящую RDF4J 2.2, я получаю ошибку ниже.
Можно ли получить доступ к серверам RDF4J с помощью API Sesame?
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] ПРЕДУПРЕЖДЕНИЕ org.openrdf.http.client.SesameSession - Проблема отчетов сервера: org.eclipse.rdf4j.repository.config.RepositoryConfigException: реализация хранилища для отсутствующего исключения хранилища Исключение в потоке "main" (UuidRefresh.scala) Вызывается: org.openrdf.repository.http.HTTPQueryEvaluationException: org.eclipse.rdf4j.repository.config.RepositoryConfigException: реализация репозитория для репозитория, отсутствующая в org.openrdf.reeryTupTupTeate.hl. Java:64) в UuidRefresh$.(UuidRefresh.scala:54) в 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(spava.l.http.client.SparqlSession.sendTupleQueryViaHttp(SparqlSession.java:807) в org.openrdf.http.client.SparqlSession.getBackgroundTupleQueryResult(SparqlSession.java:704) в org.openrdf.http.client.fl..repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:58) ... еще 3
1 ответ
Я не уверен на 100%, что вы сможете получить доступ к удаленному репозиторию RDF4J как кунжутный HTTPRepository, особенно когда ваша клиентская библиотека такая старая. Кунжутная версия 2.7 довольно древняя, и с тех пор в REST API было сделано много улучшений - они должны быть обратно совместимы, но...
Однако, учитывая, что репозиторий RDF4J, работающий на RDF4J Server, является конечной точкой SPARQL, вы, конечно, всегда можете получить к нему доступ, как и к любой конечной точке SPARQL, создав SPARQLRepository
объект.
В качестве отступления: дайте людям Blazegraph знать, что вы хотели бы перейти на RDF4J. Приоритизация поддержки RDF4J определяется запросами пользователей (как и должно быть), поэтому дайте им знать, что это важно для вас!