我正在使用 Protege 中的 snap SParqL 工具,因此要将数据添加到本体中,我必须使用 CONSTRUCT,因为它不支持 INSERT(该工具提供了断言构建回本体的新三元组的选项) .我想计算具有特定值的值并将这些值的计数断言回本体。我创建了一个关于学生和成绩的小测试本体来帮助我解决这个问题。我有以下有效的查询:
class MyScreenmanager(navController:NavigationController){
lateinit var viewModel:MyViewModel = HiltViewModelFactory(
activity,navController.getBackStackEntry(MyScreen.route)
).create(MyViewModel::class.java)
}
这给了我一张表格,每个学生在一个列中,以及他们在下一列中的 A 级数。我接下来要做的是使用 ?tcount 将数据断言回本体。我尝试了各种方法,例如用 CONSTRUCT 替换 SELECT 或使用嵌入式查询:
SELECT ?student (COUNT(?test) AS ?tcount)
WHERE {?student test:tookTest ?test.
?test test:hasGrade test:A.}
GROUP BY ?student
我认为问题在于 ?tcount 不在周围查询的范围内。我尝试了几种不同的选项,例如使用 BIND 来 BIND ?tcount 或按 ?tcount 而不是 ?student 分组,但没有运气。