- From: Andy Seaborne <andy.seaborne@talis.com>
- Date: Mon, 21 Dec 2009 18:07:00 +0000
- To: Steve Harris <steve.harris@garlik.com>
- CC: SPARQL Working Group <public-rdf-dawg@w3.org>
Steve and I were discussing aggregates on IRC: this is for the record because we didn't have time to complete the discussion there and then. What we both want is that sum(1, unbound) -> 1 sum(1, 2/0) -> error i.e skip unbounds in the group but return error on bad expressions. COALESCE does not help because it treats both as the same. And does not work for min and max which are multi-datatype. The key text is: [[ Definition: Aggregation Any unbound values exp · μ' do not appear in the resulting value multiset ]] which (my reading) that says evaluate exp on μ' then see if it's unbound. But the single variable case sum(?x) has an expression of ?x so exp · μ' is called on unbound ?x (which is an error) then the test is made to see if it's unbound (it's not - it's now error). We could special-case evaluation of aggregates. If it's a single variable, then return value or unbound. If it's any other expression (including ?x+0), then evaluate as normal, i.e. error. There are otherways for sum (e.g. the value of unbound is always zero) but is using the special feature that zero is the identity value for + so does not work for other aggregates. Andy On 20/12/2009 19:59, Steve Harris wrote: > Hi all, > > I've just added the text on aggregate functions to > http://www.w3.org/2009/sparql/docs/query-1.1/rq25.xml#aggregateFunctions > > The main new content is a new definition of Aggregation, to match the > groups intentions for the use of aggregate functions, and definitions > for COUNT, SUM, MIN, MAX, AVG, GROUP_CONCAT, and SAMPLE. > > The notation around “exp · μ'” in Aggregation is questionable, so if > anyone has a better suggestion I'm all ears. > > I'm hoping to put the definitions for sub-select in rq25 on Monday. > > - Steve >
Received on Monday, 21 December 2009 18:07:21 UTC