Sparql: как сгруппировать более одной колонки

В SPARQL мы можем сгруппировать строки по столбцу с помощью следующего синтаксиса:

GROUP BY ?colName

Можем ли мы сгруппировать по более чем 1 столбцам, например:

GROUP BY (?colName1 + ?colName2 + ?colName3) 

Предположим запрос как:

Select ?a ?b ?c (MIN(?y) AS ?d)
Where {
....
}
GROUP BY (?a + ?b + ?c)

Но этот запрос не работает.

3 ответа

Вы можете GROUP BY несколько переменных (не столбцов), перечислив их с пробелом между ними:

GROUP BY ?a ?b ?c

В дополнение к ответу Бена Компаньена

GROUP ?a ?b ?c

вам нужно исправить строку SELECT, так как вы не можете раздать неопределенные ключи, не относящиеся к группе, без явного указания, например:

Select (sample(?a) AS ?A) (sample(?b) as ?B) (sample(?c) as ?C) (MIN(?y) AS ?d)

Вы пробовали что-то вроде

ВЫБРАТЬ? A +b+? C, (MIN(? Y) AS? D) Где { .... } GROUP BY (? A +? B +? C)

Это работает в SQL Server просто отлично

Другие вопросы по тегам