GROUP_CONCAT DISTINCT

It seems DISTINCT might be quite important for GROUP_CONCAT ...
I was just playing with the following use case


Data:
@prefix ex: <http://example.org/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .

ex:alice a foaf:Person; foaf:name "Alice Wonderland";
           foaf:nick "Alice", "The real Alice".

ex:bob a foaf:Person;
       foaf:name "Robert Doe", "Robert Charles Doe", "Robert C. Doe";
       foaf:nick "Bob","Bobby","RobC","BobDoe".

ex:charles a foaf:Person;
       foaf:name "Charles Charles";
       foaf:nick "Charlie" . 
=============

My query should do the following:
pick one sample name per person, plus a concatenated list of nicknames

query, first version:

=============

PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
SELECT ( SAMPLE(?N) as ?Name) 
       ( GROUP_CONCAT(?M; SEPARATOR = ",") AS ?Nicknames )
WHERE { ?P a foaf:Person ; 
           foaf:name ?N ;
           foaf:nick ?M . }
GROUP BY ?P  

=============

doesn't work, since the nicknames appear repeated... I suppose this is where I'd need DISTINCT, but I couldn't get that
following version running yet with any implementation: 

=============
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ( SAMPLE(?N) as ?Name)
       ( GROUP_CONCAT( DISTINCT ?M; SEPARATOR = ",") AS ?Nicknames )
WHERE { ?P a foaf:Person ;
           foaf:name ?N ;
           foaf:nick ?M . }
GROUP BY ?P

=============

My expected result for the latter query was something like:
--------------------------------------------------------------------------------------------
| Name               | Nicknames                                                           |
============================================================================================
| "Robert C. Doe"    | "BobDoe,RobC,Bobby,Bob" |
| "Alice Wonderland" | "The real Alice,Alice"                                              |
| "Charles Charles"  | "Charlie"                                                           |
--------------------------------------------------------------------------------------------

Does anybody have that implemented/running yet?

best,
Axel

Received on Sunday, 19 September 2010 23:18:23 UTC