gpt4 book ai didi

syntax-error - 我该如何计算sparql?

转载 作者:行者123 更新时间:2023-12-03 08:08:52 24 4
gpt4 key购买 nike

这是我的实际问题:
?var0是一个组变量,而?var1不是。但是,每当我尝试验证语法时,都会出现以下错误消息:

Non-group key variable in SELECT: ?var1 in expression ( sum(?var0) / ?var1 )

完整的查询:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX cz: <http://www.vs.cs.hs-rm.de/ontostor/SVC#Cluster>
PREFIX n: <http://www.vs.cs.hs-rm.de/ontostor/SVC#Node>

SELECT ( (SUM(?var0) / ?var1) AS ?result)
WHERE{
?chain0 rdf:type rdfs:Property .
?chain0 rdfs:domain <http://www.vs.cs.hs-rm.de/ontostor/SVC#Cluster> .
?chain0 rdfs:range <http://www.vs.cs.hs-rm.de/ontostor/SVC#Node> .

?this ?chain0 ?arg0 .
?arg0 n:node_realtime_cpu ?var0 .
?this cz:node_count ?var1 .
}

我的问题是如何更正该计算以适合SPARQL语法?

最佳答案

眼前的问题是?var1没有分组,因此一个解决方法是简单地追加
GROUP BY ?var1
在查询结束时。

但是,这是否给您您真正想要的计算又是另一回事。

尚不清楚您要计算的内容,但是似乎您正在尝试确定集群的平均node_realtime_cpu。在这种情况下,您可以仅使用SPARQL的AVG函数来进行计算:

SELECT ( AVG(?var0) AS ?result)
WHERE{
?chain0 rdf:type rdfs:Property .
?chain0 rdfs:domain <http://www.vs.cs.hs-rm.de/ontostor/SVC#Cluster> .
?chain0 rdfs:range <http://www.vs.cs.hs-rm.de/ontostor/SVC#Node> .

?this ?chain0 ?arg0 .
?arg0 n:node_realtime_cpu ?var0 .
}
GROUP BY ?this // grouping on the cluster identifier so we get an average _per cluster_

另一个选择是保持查询不变,但将两个变量分组:
GROUP BY ?this ?var1 

最好的选择取决于您的数据是什么样子以及您要计算的是什么。

关于syntax-error - 我该如何计算sparql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21431673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com