- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Wed, 03 Nov 2010 10:05:44 +0000
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
On 03/11/10 07:11, Steve Harris wrote: > On 3 Nov 2010, at 02:42, Gregory Williams<greg@evilfunhouse.com> wrote: > >> On Nov 2, 2010, at 5:06 PM, Lee Feigenbaum wrote: >> >>> I believe there are likely three options: >>> >>> 1) To project grouping expressions, use BIND to alias the expression to a variable and then GROUP BY and project that variable (as above). >>> >>> 2) Include an AS aliasing mechanism in GROUP BY, allow that alias to be projected in the SELECT clause >>> >>> 3) Allow SELECT list aliases to be used in the GROUP BY expression >>> >>> Can people please indicate on the mailing list which direction they'd like us to go on this, and we will then wrap this up on next Tuesday's telecon? >> >> 3 seems backwards to me -- not really sure how it would work. I currently implement 2 and am happy with it, but 1 would seem to be reasonable also. > > Agreed that 3 seems odd. > > Preference for 1 as were going to have that mechanism anyway. Allowing AS in GROUP BY as well seems excessive, and will further complicate the algebra in that area. > > - Steve My preference is for 2. It reduces the query author burden and is consistent with the style of explicit naming of used expressions we have in SELECT expressions. This isn't about the algebra - it would be handled during translation from syntax to algebra. GROUP BY (expr AS ?var) ==> group (?var) .. aggregation pairs extend (expr ?var) .... ARQ implements (2). For SPARQL 1.1, which is the default, it enforces naming with AS; optionally, it will generate variables if needed (extended syntax, no AS). (3) leads to a strangeness because select expressions are evaluated after grouping/aggregation occurs and can lead to a circularity between them: SELECT (count(*) AS ?c) { ?s ?p ?o } GROUP BY ?c (2) is in the published grammar. Andy
Received on Wednesday, 3 November 2010 10:06:22 UTC