#gStore-weekly | gStore支持SPARQL查询语法之聚合函数

2022-04-20 00:00:00 函数 示例 用于 聚合 豆瓣

今天向大家介绍一下gStore支持的SPARQL查询语法之聚合函数。

1.  SPARQL中聚合函数 (Aggregates)

聚合函数用在 SELECT 语句中,语法如下:

SELECT(AGGREGATE_NAME(?x) AS ?y)
WHERE
{
    ...
}

其中,AGGREGATE_NAME 是聚合函数的名称,变量 ?x 是聚合函数作用的对象,变量 ?y 是终结果中聚合函数值的列名。

聚合函数作用于各组结果。返回的全部结果默认作为一组。

2、gStore支持的聚合函数

gStore目前支持6种聚合函数,分别如下:

Count:用于计数的聚合函数。
Sum:用于求和的聚合函数。
Avg:用于求平均值的聚合函数。
Min:用于求小值的聚合函数。
Max:用于求大值的聚合函数。
Group by:用于按照某一个变量的值对结果分组。

3、简单的示例数据

在开始介绍各聚合函数的使用之前,我们准备好一个示例数据:

<刘亦菲> <姓名> "刘亦菲" .
<刘亦菲> <姓名> "Crystal Liu" .
<刘亦菲> <性别> "女" .
<刘亦菲> <星座> "处女座" .
<刘亦菲> <职业> "演员" .
<林志颖> <姓名> "林志颖" .
<林志颖> <性别> "男" .
<林志颖> <职业> "演员" .
<林志颖> <职业> "导演" .
 
<胡军> <姓名> "胡军" .
<胡军> <性别> "男" .
<胡军> <星座> "双鱼座" .
<胡军> <职业> "演员" .
<胡军> <职业> "配音" .
<胡军> <职业> "制片" .
<胡军> <职业> "导演" .
 
<天龙八部> <主演> <林志颖> .
<天龙八部> <主演> <刘亦菲> .
<天龙八部> <主演> <胡军> .
<天龙八部> <类型> <武侠片> .
<天龙八部> <类型> <古装片> .
<天龙八部> <类型> <爱情片> .
<天龙八部> <豆瓣评分>"8.3"^^<http://www.w3.org/2001/XMLSchema#float> .
<天龙八部> <上映时间>"2003-12-11T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime>.
 
<恋爱大赢家> <主演> <林志颖> .
<恋爱大赢家> <主演> <刘亦菲> .
<恋爱大赢家> <类型> <爱情片> .
<恋爱大赢家> <类型> <剧情片> .
<恋爱大赢家> <豆瓣评分>"6.1"^^<http://www.w3.org/2001/XMLSchema#float> .
<恋爱大赢家> <上映时间> "2004-11-30T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime>.

4、各聚合函数具体使用

 聚合函数COUNT

用于计数的聚合函数。例如查询给出示例数据中职业为演员的人物的数目:

SELECT (COUNT(?person) AS ?count_person)
WHERE
{
    ?person <职业> "演员" .
}

结果如下:

?count_person
“3”^^<http://www.w3.org/2001/XMLSchema#integer>

聚合函数SUM

用于求和的聚合函数。例如查询给出示例数据中所有电影的豆瓣评分之和:

SELECT (SUM(?score) AS ?sum_score)
WHERE
{
   ?movie <豆瓣评分> ?score .
}

结果如下:

?sum_score
“14.400000”^^http://www.w3.org/2001/XMLSchema#float

聚合函数AVG

用于求平均值的聚合函数。例如给出示例数据中所有电影的平均豆瓣评分:

SELECT (AVG(?score) AS ?avg_score)
WHERE
{
   ?movie <豆瓣评分> ?score .
}

结果如下:

?avg_score

“7.200000”^^http://www.w3.org/2001/XMLSchema#float

聚合函数MIN

用于求小值的聚合函数。例如查询给出示例数据中所有电影的低豆瓣评分:

SELECT (MIN(?score) AS ?min_score)
WHERE
{
  ?movie <豆瓣评分> ?score .
}

结果如下:

?min_score

“6.1”^^http://www.w3.org/2001/XMLSchema#float

聚合函数MAX

用于求大值的聚合函数。例如查询给出示例数据中所有电影的高豆瓣评分:

SELECT (MAX(?score) AS ?max_score)
WHERE
{
  ?movie <豆瓣评分> ?score .
}

结果如下:

?max_score
“8.3”^^http://www.w3.org/2001/XMLSchema#float

聚合函数GROUP BY

按照某一个变量的值对结果分组。例如查询给出示例数据中的所有职业及对应的人数:

SELECT ?occupation (COUNT(?person) AS ?count_person)
WHERE
{
  ?person <职业> ?occupation .
}
GROUP BY ?occupation

结果如下:

?occupation

?count_person

“演员”

“3”^^<http://www.w3.org/2001/XMLSchema#integer>

“导演”

“2”^^<http://www.w3.org/2001/XMLSchema#integer>

“配音”

“1”^^<http://www.w3.org/2001/XMLSchema#integer>

“制片”

“1”^^<http://www.w3.org/2001/XMLSchema#integer>

本文通过示例表达了gStroe支持的6种聚合函数,这些为新手在使用SPARQL的聚合函数中提供了思路。同时也表明了聚合函数作用于各组结果,返回的全部结果默认作为一组。

相关文章