Re: another aggregates test case...

On 6/8/2010 9:14 AM, Steve Harris wrote:
> On 2010-06-08, at 14:07, Axel Polleres wrote:
>
>> Student of mine pointed me to a somewhat corner test case:
>>
>> PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
>> PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
>> PREFIX dcterms:<http://purl.org/dc/terms/>
>> PREFIX foaf:<http://xmlns.com/foaf/0.1/>
>> PREFIX mpp:<http://imp.deri.ie/ontology/moviePostProcessing#>
>>
>> SELECT *
>> FROM NAMED<http://imp.deri.ie/vff/ppa/projects>
>> FROM NAMED<http://imp.deri.ie/vff/ppa/people>
>> WHERE {
>>
>> ?project rdf:type foaf:Project ;
>>           rdfs:label ?title .
>> ?person rdf:type mpp:Person ;
>>           rdfs:label ?personName ;
>>           foaf:currentProject ?project .
>> }
>> GROUP BY ?project
>>
>> Actually, I *think* this should be syntactically invalid, as per:
>> "In aggregate queries and sub-queries only expressions which have been used as GROUP BY expressions, or aggregated expressions (i.e. expressions where all variables appear inside an aggregate) can be projected."
>>
>> interestingly, the formulation - strictly speaking - doesn't say what an aggregate query is, but GROUP BY without aggregtate doesn't make a lot of sense anyways, except that it should have the same effect as DISTINCT, right(?), but we still don't want to allow in the presence of GROUP BY some non-grouped/aggregated things to be projected, I assume.
>
> It wouldn't have the same affect as DISTINCT as per the current draft. Cardinality is preserved.

I think that Axel means that:

SELECT ?v1 ?v2 ?v3
WHERE
{ ... }
GROUP BY ?v1 ?v2 ?v3

is equivalent to:

SELECT DISTINCT ?v1 ?v2 ?v3
WHERE
{ ... }

...and I think he's right in that observation?

Lee

Received on Tuesday, 8 June 2010 13:43:11 UTC