Запрос конечной точки FactForge Sparql с возвратом ошибки RDF4J

Я пытаюсь запросить конечную точку Factforge Sparql с помощью RDF4J, но получаю сообщение об ошибке.

Я использую RDF4J V: 2.3.2 с Maven.

Я установил свои настройки прокси на Java с помощью:

    System.setProperty("https.proxyHost", PROXY_HOST);
    System.setProperty("https.proxyPort", PROXY_PORT);
    System.setProperty("http.proxyHost", PROXY_HOST);
    System.setProperty("http.proxyPort", PROXY_PORT);

Вот мой код:

SPARQLRepository repo = new SPARQLRepository("http://factforge.net/sparql");
repo.initialize();
try (RepositoryConnection conn = repo.getConnection()) {
            String queryStringA = "SELECT ?s ?p WHERE { ?s ?p ?o } ";

            TupleQuery query = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryStringA);
            try (TupleQueryResult result = query.evaluate()) {
                while (result.hasNext()) { // iterate over the result
                    BindingSet bindingSet = result.next();
                    Value valueOfX = bindingSet.getValue("s");
                    Value valueOfY = bindingSet.getValue("p");
                    System.out.println(valueOfX);
                    System.out.println(valueOfY);
                }
            }
}

Я получаю следующую ошибку:

Исключение в потоке "основной" org.eclipse.rdf4j.query.QueryEvaluationException: не удалось получить протокол сервера; на этом сервере нет такого ресурса: http://factforge.net/sparql?query=SELECT+%3Fs+%3Fp+WHERE+%7B+%3Fs+%3Fp+%3Fo+%7D+

Буду признателен за помощь. Спасибо.


person Batuhan Tüter    schedule 27.08.2018    source источник


Ответы (1)


Вы используете неправильный URL конечной точки. Согласно обзору Factforge, конечная точка SPARQL для Factforge находится по адресу http://factforge.net/repositories/ff-news.

Кроме того, обратите внимание, что запрос, который вы делаете, это "дайте мне ВСЕ ваши тройки". В Factforge много троек, поэтому результат будет огромным, и его выполнение потребует много ресурсов на сервере Factforge. Время ожидания вашего запроса может истечь, или Factforge может отказаться его выполнять.

Если ваша цель — просто проверить, работает ли запрос SPARQL, было бы лучше поместить туда что-то вроде ограничения LIMIT:

 String queryStringA = "SELECT ?s ?p WHERE { ?s ?p ?o } LIMIT 10";
person Jeen Broekstra    schedule 27.08.2018
comment
Большое спасибо за ваш ответ и обновление моего запроса. Работает как часы. - person Batuhan Tüter; 28.08.2018