Re: ISSUE-35: DISTINCT/aggregates

On 3 Feb 2010, at 15:22, Andy Seaborne wrote:
> On 03/02/2010 3:11 PM, Steve Harris wrote:
>> On 3 Feb 2010, at 14:09, Andy Seaborne wrote:
>>> On 03/02/2010 12:15 PM, Steve Harris wrote:
>>>> On 3 Feb 2010, at 08:42, Andy Seaborne wrote:
>>>> ...
>>>>> ISSUE-35
>>>>> Can aggregate functions take DISTINCT as an argument a la SELECT
>>>>> COUNT(DISTINCT ?X)?
>>>>>
>>>>> DONE All built-in aggregates can take the word DISTINCT.
>>>>> Custom ones do not; it's part of their definition,
>>>>> i.e. different URIs for a DISTINCT and non DISTINCT form.
>>>>
>>>> I thought that the custom ones could also take DISTINCT? My  
>>>> recollection
>>>> may well be wrong though. Do you have a link to the strawpoll?
>>>
>>> By using a keyword argument, it undermines the idea that the URI
>>> identifies one thing - it's really now two, the DISTINCT and
>>> non-DISTINCT versions.
>>>
>>> I'd expect COUNT(*) and COUNT(DISTINCT *) to have different URIs.
>>
>> Ah, interesting, I wouldn't.
>>
>> E.g. GROUP_CONCAT(DISTINCT ?x ORDER BY STRLEN(?x)) wouldn't have a
>> different URI to GROUP_CONCAT(DISTINCT ?x) either.
>
> Err - that's not SPARQL . The ORDER BY would have to be a subquery  
> although now we're in ISSUE-6 territory (SubSelects in places other  
> than graph patterns).

Indeed, I should have been more clear.

I'm not proposing it (though someone did ask for it, also LIMIT IIRC),  
it's just an illustration of the way aggregate functions developed in  
SQL. To me it illustrated that the expression keywords are not part of  
the function identifier.

N.B. It's not a subquery, subqueries in SPARQL are not order preserving.

- Steve

Received on Wednesday, 3 February 2010 15:42:20 UTC