Конечная точка GraphDB sparql недоступна через интерфейс sesame / rdf4j SPARQLRepository

Мы используем фреймворк RDF4J (ранее sesame) для выполнения запросов sparql к удаленному хранилищу троек GraphDB.

Это успешно работает через интерфейс rdf4j HTTPRepository, который принимает URL-адрес сервера Graphdb и идентификатор репозитория, но не работает при использовании интерфейса rdf4j SPARQLRepository, который принимает URL-адрес конечной точки sparlq в качестве параметра.

При запуске запроса мы получаем исключение при проверке запроса.

"Не удалось получить протокол сервера; на этом сервере нет такого ресурса: http: /// sparql? Sparql? QueryLn = SPARQL & query =",

где http://<host:port>/sparql - это то, что мы думаем, это URL-адрес конечной точки sparql. Это происходит как с библиотеками Sesame 2.7.8, так и с rdf4j M3, а также с двумя «из коробки», т.е. запускается с помощью сценария запуска, установки graphdb free 6.6.2 и 7.0.3. Это также происходит при попытке подключиться через интерфейс rdf4j SPARQLRepository к конечной точке sparlq http://factforge.net/sparql, который, как мы понимаем, работает на graphdb.

Мы полагаем, что фактический URL-адрес конечной точки sparql может быть не http: /// sparql, а каким-то другим, что мы не смогли найти в документации по graphdb. Оцените любой свет, который может светить на это место.

РЕДАКТИРОВАТЬ: Код, выполненный для конечной точки sparql Factforge:

    final String endPoint = "http://factforge.net/sparql";
    final String query = "Select distinct ?airport where {?airport a dbp-ont:Airport} LIMIT 2";

    SPARQLRepository repository = new SPARQLRepository(endPoint,endPoint);
    repository.initialize();
    RepositoryConnection connection = repository.getConnection();
    TupleQueryResult result = connection.prepareTupleQuery(QueryLanguage.SPARQL,query)
                                        .evaluate();

Создается следующее исключение:

    Caused by: org.eclipse.rdf4j.repository.RepositoryException: Failed to    get server protocol; no such resource on this server: http://factforge.net/sparql?queryLn=SPARQL&query=Select+distinct+%3Fairport+where+%7B%3Fairport+a+dbp-ont%3AAirport%7D+LIMIT+2&infer=true
at org.eclipse.rdf4j.http.client.SparqlSession.executeOK(SparqlSession.java:1023)
at org.eclipse.rdf4j.http.client.SparqlSession.sendTupleQueryViaHttp(SparqlSession.java:787)
at org.eclipse.rdf4j.http.client.SparqlSession.getBackgroundTupleQueryResult(SparqlSession.java:684)
at org.eclipse.rdf4j.http.client.SparqlSession.sendTupleQuery(SparqlSession.java:341)
at org.eclipse.rdf4j.repository.sparql.query.SPARQLTupleQuery.evaluate(SPARQLTupleQuery.java:43)
... 1 more

Спасибо за помощь


person Riccardo Santoro    schedule 07.09.2016    source источник
comment
Я не могу воспроизвести проблему (используя конечную точку factforge). Измените свой вопрос, включив в него точный код, который вы используете для выполнения запроса.   -  person Jeen Broekstra    schedule 07.09.2016
comment
Отредактировано по запросу. Большое спасибо   -  person Riccardo Santoro    schedule 09.09.2016
comment
Удалось сейчас воспроизвести - странно. Еще не уверен, является ли проблема RDF4J проблемой GraphDB. Взглянем поближе как можно скорее.   -  person Jeen Broekstra    schedule 14.09.2016


Ответы (2)


Для доступа к конечной точке GraphDB SPARQL в репозиторий, например, на локальном компьютере, вы можете использовать следующий URL: http://localhost:7200/repositories/ ‹# ваш_репозиторий #>

Вы можете узнать больше об использовании Sesame API с GraphDB здесь: http://graphdb.ontotext.com/documentation/free/using-graphdb-with-the-sesame-api.html

person Venelin    schedule 20.09.2016

Я не определил основную причину, однако я заметил, что проблема возникает в RDF4J 2.0M3, но больше не в версии 2.0 final (или 2.0.1, последней версии). С тех пор были исправлены две вероятные проблемы, а именно: повышение версии библиотек Apache HttpComponents, используемых RDF4J (# 267), а также улучшение того, как клиент RDF4J составляет свой HTTP-заголовок Accept (# 228).

TL; DR: обновитесь до RDF4J 2.0.1, и ваша проблема должна исчезнуть.

person Jeen Broekstra    schedule 14.09.2016
comment
Судя по моим тестам, на самом деле это комбинация фреймворка rdf4j И что-то связанное с настройками в репозитории GraphDB: 1 - Теперь я могу выполнить простой код, приведенный выше, с помощью rdf4j 2.0.1 (но 2.0 тоже в порядке). - person Riccardo Santoro; 15.09.2016
comment
1- Я получил электронное письмо от службы поддержки DBGraph, в котором говорилось, что они проверяли некоторые «настройки конфигурации в factforge». 2- У меня он работает с factforge, но только с RDF4j версий 2.0 или 2.0.1. 3-Даже с rdf4j версии 2.0 или 2.0.1 я не могу подключиться к моему локальному репозиторию GraphDB. 4- На более старой версии rdf4j и даже в sesame 4.0 я мог подключиться к магазину Virtuoso. - person Riccardo Santoro; 15.09.2016
comment
Похоже, что вам нужны ОБЕ какие-то настройки, чтобы они были прямо в репозитории GraphDB И rdf4j версии 2.0 или выше. Я попросил службу поддержки GraphDB поделиться любыми настройками конфигурации, которые они сделали, которые, похоже, решили проблему на factforge. Если они ответят здесь, было бы здорово, если они ответят мне, я отправлю это здесь. Спасибо большое за вашу помощь - person Riccardo Santoro; 15.09.2016