使用RDF4J返回错误查询FactForge Sparql端点

时间:2018-08-27 13:54:41

标签: http graphdb rdf4j

我正在尝试使用RDF4J查询Factforge Sparql端点,但收到错误。

我在Maven中使用RDF4J V:2.3.2。

我通过以下方式在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+

我将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

您使用了错误的端点URL。根据{{​​3}},Factforge的SPARQL端点位于sound

除此之外,请注意,您正在执行的查询是“给我 ALL 您的三元组”。 Factforge有很多三元组,所以这样做的结果将是巨大的,执行它会消耗Factforge服务器上的大量资源。您的查询可能超时,或者Factforge可能拒绝执行它。

如果您的目的仅仅是测试SPARQL查询是否有效,则最好在其中放置一个{name:sound}约束之类的东西:

http://factforge.net/repositories/ff-news