Агрегировать внутри подзапроса для SPARQL - PullRequest
0 голосов
/ 22 апреля 2020

Я использую Virtuoso и DBpedia в качестве конечной точки.

Моя цель - получить все фильмы, в которых актеров больше, чем среднее число актеров для всех фильмов.

I думал, что следующий запрос будет работать:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT 
      DISTINCT ?film
      COUNT(?actor) AS ?numActors
WHERE{
    ?film rdf:type dbp:Film .
    ?film dbp:starring ?actor .
    {
        SELECT 
            AVG(?numActors) AS ?avgNumActors
        WHERE{
              SELECT  
                      ?Sfilm 
                      COUNT(?Sactor) AS ?numActors 
              WHERE{
                      ?Sfilm rdf:type dbp:Film .  
                      ?Sfilm dbp:starring ?Sactor
                    }
             }

    }

}
GROUP BY ?film 
HAVING (COUNT(?actor) > ?avgNumActors)
LIMIT 20

, но я получаю следующую ошибку

Переменная? avgNumActors используется в наборе результатов вне агрегата и не упоминается в предложении GROUP BY

Что я делаю не так?

...