- From: Steve Harris <steve.harris@garlik.com>
- Date: Tue, 1 Mar 2011 12:02:44 +0000
- To: Andy Seaborne <andy.seaborne@epimorphics.com>
- Cc: SPARQL Working Group <public-rdf-dawg@w3.org>
On 2011-03-01, at 11:46, Andy Seaborne wrote: > I tried to make ARQ exactly follow the process in the spec and found that the aggregate tests don't seem to have any error coverage. > > - - - - - - - - - - - - - - - - - - > > Steve, > > I don't understand the new example in rq25: > -------------- > PREFIX : <http://example.com/data/#> > SELECT ?g (AVG(?p) AS ?avg) ((MIN(?p) + MAX(?p)) / 2 AS ?c) > WHERE { > ?g :p ?p . > } > GROUP BY ?g > -------------- > Result: > ?g ?avg ?c > <x> 2.5 2.5 > <z> 2.5 2.5 > -------------- > > Why not > > Result: > ?g ?avg ?c > <x> 2.5 2.5 > <y> 2.5 > <z> 2.5 2.5 > representation Are you suggesting that the result with 3 solutions is correct as per working group decisions, or as per the algebra as it stands? > If AVG(?p) is an error, then the expression in the SELECT line is an error and so binding does not happen. > > I've worked through the formal definitions and it seems to come down to: > > eval(D(G), AggregateJoin(A, P) = { (aggi, eval(D(G), Ai)) | Ai in A } > > and eval(D(G), Ai) being an error. > > I suggest adding: > > eval(D(G), AggregateJoin(A, P) = > { (aggi, eval(D(G), Ai)) | Ai in A , eval(D(G), Ai) not an error } > # If eval(D(G), Ai) is an error, it is ignored. > > then the value for AVG is just not defined, and so (AVG(?p) AS ?avg) is handled by the usual mechanism. I was hoping to make it bubble up to use the same mechanism as Project Expressions, wouldn't think happen? The next stage after AggregateJoin will be a Project, and doesn't Project discard solutions that contain errors? - Steve -- Steve Harris, CTO, Garlik Limited 1-3 Halford Road, Richmond, TW10 6AW, UK +44 20 8439 8203 http://www.garlik.com/ Registered in England and Wales 535 7233 VAT # 849 0517 11 Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD
Received on Tuesday, 1 March 2011 12:03:38 UTC