Я пытаюсь найти авторов, у которых есть более 3 книг, написанных из DBPedia с использованием это, со следующим:
SELECT ?author (COUNT(*) as ?count) WHERE {?works dbo:author ?author. }
Group by(?author)
ORDER BY DESC (?count)
HAVING (?count > 3)
Но я получаю синтаксическую ошибку, и когда я удаляю предложение HAVING, все остальное работает нормально, есть идеи, в чем может быть проблема?
Возможный дубликат Я пытаюсь получить список всех авторов, у которых было более трех работ - DBpedia Sparql





У тебя есть:
Group by(?author) ORDER BY DESC (?count) HAVING (?count > 3)
но HAVING должен быть раньше ORDER BY.
Изменено на SELECT? Author (COUNT (*) as? Count) WHERE {? Works dbo: author? Author. } Группировать по (? Автору) ИМЕЮЩИЕ (? Count> 3) ORDER BY DESC (? Count) безуспешно
Обязательно, как показано ниже: Virtuoso 37000 Ошибка SP031: Компилятор SPARQL: Variable? Count используется в результирующем наборе вне агрегата и не упоминается в предложении GROUP BY Запрос SPARQL: # output-format: application / sparql-results + json define input: default- graph-uri PREFIX owl: PREFIX xsd: PREFIX rdfs: PREFIX rdf: PREFIX foaf: PREFIX dc: PREFIX: PREFIX dbpedia2: PREFIX dbpedia: PREFIX skos: SELECT? author (COUNT (*) as? count? dERE: автор? автор. } Группировать по (? Автору) HAVING (? Count> 3) ORDER BY DESC (? Count)
Ошибка сообщает вам, что «? Count используется в результирующем наборе вне агрегата», поэтому в основном вы должны использовать «агрегированное решение», которое вы можете сделать следующим образом:
SELECT ?author (COUNT(*) as ?count) WHERE {?works dbo:author ?author. }
Group by ?author
HAVING (COUNT(*) > 3)
ORDER BY DESC (?count)
Вы можете увидеть формальный синтаксис здесь.
Вы должны опубликовать свою ошибку.