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 просто отлично