Re: major technical: no aggregates

On Thu, 2006-01-12 at 13:43 -0800, Fred Zemke wrote:
> There is no ability to perform aggregates, ie, computations on a
> set of results.  Example: find authors who have written 2 or more books.
> Solution: SELECT ?author WHERE { ?author v:wrote ?book1 .
> ?author v:wrote ?book2 . FILTER (?book1 != ?book2) }
> Now try to find authors who have written 50 or more books.
> This will require 50 book variables and 50*49/2 filter predicates.
> It would be easier if there were a way to count the number of books
> that an author has and then filter on the count.   Other commonly used
> aggregates are sum, average, maximum, minimum.  I don't know of any
> workaround at all for computing sum or average in SPARQL.

Quite.

We didn't identify this as a requirement in our requirements gathering.
  http://www.w3.org/TR/rdf-dawg-uc/

It did come up in design discussions, but we...

  RESOLVED: to add a count/aggregate issue and postpone it, due
   to schedule considerations
  -- http://www.w3.org/2001/sw/DataAccess/issues#countAggregate

That is: the working group is of the opinion that SPARQL can
meet the use cases and requirements that we identified, and should
advance thru the W3C process despite lack ofcount/aggregate features.

I hope you find this justification satisfactory. Please let us
know whether you do.


>   There is
> a workaround for maximum and minimum, though it is messy.
> Example: find the vendor with the lowest price for a widget.
> SELECT ?vendor
> WHERE { ?vendor v:sells ?product .
>         ?product a w:idget .
>         ?product v:price ?price .
>         ?vendor2 v:sells ?product2 .
>         ?product2 a w:idget .
>         ?product2 v:price ?price2 .
>         FILTER (?price2 > ?price) }
> 
> Fred Zemke
-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/
D3C2 887B 0F92 6005 C541  0875 0F91 96DE 6E52 C29E

Received on Thursday, 12 January 2006 23:28:25 UTC