我试图使用RDF4J查询Factforge端点,但收到了一个错误。
我在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);
}
}
}我得到以下错误:
线程"main“org.eclipse.rdf4j.query.QueryEvaluationException:中的异常未能获得服务器协议;此服务器上没有这样的资源:http://factforge.net/sparql?query=SELECT+%3Fs+%3Fp+WHERE+%7B+%3Fs+%3Fp+%3Fo+%7D+
我很感谢你的帮助。谢谢。
发布于 2018-08-27 22:12:14
您使用了错误的端点URL。根据Factforge概述,Factforge的SPARQL端点位于http://factforge.net/repositories/ff-news。
除此之外,请注意,您正在执行的查询是“给我您的所有三元组”。Factforge有很多三倍,所以结果将是巨大的,执行它将消耗Factforge服务器上的大量资源。您的查询可能超时,或者Factforge可能拒绝执行它。
如果您的目标仅仅是测试SPARQL查询是否有效,最好将类似于LIMIT约束的内容放在其中:
String queryStringA = "SELECT ?s ?p WHERE { ?s ?p ?o } LIMIT 10";https://stackoverflow.com/questions/52040959
复制相似问题