在SPARQL中,我们可以通过以下语法按列对行进行分组:
GROUP BY ?colName
我们可以按照多个列进行分组,例如:
GROUP BY (?colName1 + ?colName2 + ?colName3)
假设有一个查询:
Select ?a ?b ?c (MIN(?y) AS ?d)
Where {
....
}
GROUP BY (?a + ?b + ?c)
但是这个查询不起作用。
GROUP BY
:GROUP BY ?a ?b ?c
GROUP BY ?a ?b ?c
您需要修复SELECT语句,因为不能不明确指定非分组键而传递不确定的非分组键,例如:
SELECT (sample(?a) as ?A) (sample(?b) as ?B) (sample(?c) as ?C) (min(?y) as ?d)
SAMPLE
,但现在我了解了,我认为SELECT
子句不需要修复。SAMPLE
用于SELECT
子句中未在GROUP BY
子句中且未进行其他聚合的变量,但是?a ?b ?c
恰好是GROUP BY
子句中的变量。如果选择了一些额外的变量?e
,但没有进行GROUP BY
,那么就需要进行SAMPLE
操作。 - Ben CompanjenSELECT
和GROUP BY
中的变量只需要按照完全相同的顺序放置,然后添加一个或多个变量来显示总和等内容。 - Hugolpz