2015-09-02 3 views
2

В SPARQL, могу ли я перечислить группу, используя GROUP BY возможно?SPARQL Группировка

Прямо сейчас мой запрос возвращает:

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

Запрос я использовал:

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) 
    } 

Есть ли способ, что я могу сделать это вернуть что-то вроде:

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

или

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

ответ

2

Нечто подобное должно сделать трюк:

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 
Смежные вопросы