Jenny Jin
Jenny Jin

Reputation: 117

SPARQL Grouping

In SPARQL, can I list a group by using GROUP BY possibly?

Right now my query returns:

?p       ?p2
----------------
abc      zza
abc      zba
abc      zdf
bcd      zbc
bcd      zef
bcd      zhr
bcd      zfe
cde      zop
cde      zzz

The query I used is:

PREFIX  bo:  <https://webfiles.uci.edu/jenniyk2/businessontology#>
PREFIX   v:  <http://www.w3.org/2006/vcard/ns#>  
SELECT DISTINCT ?p ?p2 
WHERE
  { 
    ?p   v:hasAddress  ?ad  . 
    ?p2  v:hasAddress  ?ad  . 
      FILTER( ?p != ?p2 )
  }

Is there any way I can make it return something like:

?p       ?p2
---------------
abc      zza
         zba
         zdf
bcd      zbc
         zef
         zhr
         zfe
cde      zop
         zzz

or

?p
-------------------
abc zza zba zdf
bcd zbc zef zhr zfe
cde zop zzz

Upvotes: 2

Views: 1867

Answers (1)

zero323
zero323

Reputation: 330063

Something like this should do the trick:

PREFIX bo:<https://webfiles.uci.edu/jenniyk2/businessontology#>
PREFIX v: <http://www.w3.org/2006/vcard/ns#>  

SELECT DISTINCT (GROUP_CONCAT(?p2; SEPARATOR=" ") AS ?p)
WHERE { 
    ?p1 v:hasAddress ?ad. 
    ?p2 v:hasAddress ?ad. 
} GROUP BY ?p1

Upvotes: 3

Related Questions