On 19/11/14 17:47, Dimitrianos Savva wrote:
Hello,
What is the expected result set for the following query if we suppose
that the graph pattern in WHERE does not match any triple;
SELECT (sum(?c) as ?s)
WHERE{
?a ?b ?c .
FILTER (str(?a) = "something_that_not_exists")
}
GROUP BY ?a
If I am not wrong, the same query without the GROUP BY, must return
error (null).
Regards,
Dimis
If there is no GROUP BY, then because there is an aggregation, there is
an implicit group of everything. See 11. In the example, it's empty as
the pattern has zero matches.
18.5.1:
Group(exprlist, Ω) = empty list -> empty set.
If there is a GROUP BY, then there are groups for each ?a, which is none:
18.5.1
Group(exprlist, Ω) = ?a -> empty set.
That is exprList, not the evaluation of the list which happens next ...
M(Ω) = { ListEval(exprlist, μ) | μ in Ω } = empty because no μ
Flatten(M) = empty
ToList(Flatten) = empty list
"sum" of no elements is 0 (18.5.1.3) (Card[S] = 0)
Andy
PS ARQ in the last release gets this wrong: SUM empty was error (unset),
and SUM DISTINCT was zero. That's madness and will be fixed.