Ниже приведен фрагмент кода, который я использую для запроса конечной точки DBPEDIA SPARQL. Запрос select count(?y) where {?x ?y ?z .}
работает нормально, но нижний запрос не запускается, давая ошибку для переменной ?count
?COUNT агрегат не работает на DBPedia при выпуске через Jena
Я думаю, что синтаксис прав, может ли кто-нибудь указать, что может быть вероятной ошибкой здесь?
int count=0;
String queryStringNew="select count(distinct ?y) where {?x ?y ?z .}";
Query query=QueryFactory.create(queryStringNew);
ARQ.getContext().setTrue(ARQ.useSAX);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://DBpedia.org/sparql", query);
ResultSet results = qexec.execSelect();
while(results.hasNext())
{
QuerySolution soln=results.nextSolution();
//System.out.println(soln.get("?x"));
count++;
}
@ Ответ Робва прав. Для дальнейшего использования. У sparql.orq есть [проверка запроса] (http://sparql.org/query-validator.html). Если вы вставляете текст 'select count (distinct? Y), где {? X? Y? Z.}' Там, вы получите правильное сообщение об ошибке «Encountered» «count» «count» »в строке 1, столбец 8. Ожидал один из: ... «Несмотря на то, что [вы] считаете, что синтаксис прав,« всегда рекомендуется проверять. Также полезно разместить сообщение об ошибке, которое вы получаете от Йены. Я ожидал бы, что это, вероятно, синтаксическая ошибка или синтаксическая ошибка, и, вероятно, это ключевое слово 'count', а не переменная. –