【发布时间】:2020-07-12 18:06:10
【问题描述】:
假设我有一个包含三个不同年级学生的图表。
示例图:
<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>
我想为 Grade 类的每个实例创建一个名为 gradeStrength 的属性来存储那个年级的学生。
上面的例子看起来像:
<http://some/graph#Grade_3> <http://some/graph#gradeStrength> 1^^xsd:integer
目前我使用以下两个单独的查询来执行此操作 -
- 在图表上运行 SELECT + GROUP BY 查询以获取每个年级的计数
- 遍历 1. 的结果行以创建三元组字符串
- 在图表上运行 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 上建议的更新查询对其进行了测试,它奏效了!谢谢你。关于 stackoverflow 的第一个问题 - 不知道如何接受这个作为答案并关闭问题。
-
您可以简单地将工作查询添加为答案,然后单击接受以获取您自己的答案。这基本上会将问题标记为已解决,没有适当的“关闭”
标签: sparql rdf blazegraph knowledge-graph