是否可以在 SPARQL/Update 中使用 GROUP BY 子句执行 INSERT 操作?

Is it possible to perform an INSERT operation with the GROUP BY clause in SPARQL/Update?

假设我有一个包含三个不同年级学生的图表。

示例图:

<http://some/graph#John_Doe> rdf:type <http://some/graph/ontology#Student>
<http://some/graph#John_Doe> <http://some/graph#hasGrade> <http://some/graph#Grade_3>
<http://some/graph#Grade_3> rdf:type <http://some/graph/ontology#Grade>

我想为 class Grade 的每个实例创建一个名为 [=27 的属性=]gradeStrength 存储该年级的学生人数。

上面的例子看起来像:

<http://some/graph#Grade_3> <http://some/graph#gradeStrength> 1^^xsd:integer

目前我使用如下两个单独的查询来实现 -

  1. 运行 SELECT + 在图上进行 GROUP BY 查询以获取每个等级的计数
  2. 遍历 1. 的结果行以创建一个三元组字符串
  3. 运行 图上的 INSERT DATA 更​​新查询

如何通过使用 INSERT 和 GROUP BY 构造的单个 SPARQL/Update 查询来实现此目的?我尝试编写这样的查询,但它在 Blazegraph 中失败了。

使用

INSERT {
  ?grade <http://some/graph#gradeStrength> ?gradeStrength
} 
WHERE 
{ 
  { 
    SELECT ?grade (COUNT(?student) AS ?gradeStrength)  
    { 
      ?student  <http://some/graph#hasGrade> ?grade . 
    } 
    GROUP BY ?grade   
  } 
}

根据@UninformedUser 的评论做出的回答。通过上传问题中的示例三元组在 Blazegraph 上进行测试。