SPARQL - Как вы используете счет? - PullRequest
4 голосов
/ 16 февраля 2012

У меня есть этот запрос

SELECT ?s WHERE {?a <http://xmlns.com/foaf/0.1/topic_interest> ?s}

, который возвращает

aaa
aaa
aaa
bbb
bbb
ccc

Однако я хочу отобразить его как

aaa | 3
bbb | 2
ccc | 1

Я использую dotnetrdf. Это то, что я пытался

SELECT (COUNT(*) AS ?s) WHERE {?a <http://xmlns.com/foaf/0.1/topic_interest> ?s}

и это просто дает мне количество строк, которое составляет 3080.

Можете ли вы сказать мне, как сделать это правильно?

Спасибо

1 Ответ

5 голосов
/ 16 февраля 2012

Это потому, что COUNT (*) просто считает результирующие строки для каждой группы

Если в вашем запросе нет предложения GROUP BY, то существует одна неявная группа всех результатов, поэтому вы просто получаете количество строк.

Если вы добавите GROUP BY к вашему запросу, как в следующем примере, вы получите желаемый результат:

SELECT (COUNT(*) AS ?count)
WHERE
{
  ?a <http://xmlns.com/foaf/0.1/topic_interest> ?s}
} GROUP BY ?s
...