Запрос конечной точки FactForge Sparql с ошибкой возврата RDF4J - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь запросить конечную точку 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);
                }
            }
}

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

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

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

1 Ответ

0 голосов
/ 28 августа 2018

Вы используете неправильный 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";
...