gpt4 book ai didi

optimization - 使用 SPARQL 聚合给定范围(间隔)内的值?

转载 作者:行者123 更新时间:2023-12-03 16:25:09 26 4
gpt4 key购买 nike

假设在一个 RDF 数据集中,有一组范围从 0 到 100 的值(例如,百分比)。我想计算给定范围内的值的数量,例如 100 - 90 | 90 - 80 | ... | 10 - 0。我期望的输出如下所示:

╔════════════════╦════════╗
║ Range ║ Count ║
╠════════════════╬════════╣
║ 100 >= x < 90 ║ 4521 ║
║ 90 >= x < 80 ║ 650 ║
║ ... ║ ... ║
║ 10 >= x <= 0 ║ 2650 ║
╚════════════════╩════════╝

我目前正在使用 SPARQL 子查询和过滤器来获得解决方案。但这似乎是一个常见的用例,我的直觉告诉我应该有更好的方法来做到这一点。有没有更好(或更有效)的方法来获得这个答案?

目前的解决方案如下所示。

PREFIX dqv: <http://www.w3.org/ns/dqv#>
select distinct ?count90_100 ?count80_90 ?count10_0 where {
?m a dqv:QualityMeasurement .
{ select count(?m) as ?count90_100 where { ?m dqv:value ?value FILTER (?value > 90 && ?value <= 100) }}
{ select count(?m) as ?count80_90 where { ?m dqv:value ?value FILTER (?value > 80 && ?value <= 90) }}
{ select count(?m) as ?count10_0 where { ?m dqv:value ?value FILTER (?value >= 0 && ?value <= 10) }}
}

最佳答案

您可以使用 values block 来指定范围的上限和下限,并为每个范围“id”获取一个“id”。然后你可以在那个范围内分组。例如,

select ?rangeId (count(?x) as ?numMatches) {
values (?rangeId ?min ?max) { (0 0 10)
(1 10 20)
#-- ...
(8 80 90)
(9 90 100) }

#-- query that finds a value for ?x...

filter (?min <= ?x && ?x < ?max)
}
group by ?rangeId

关于optimization - 使用 SPARQL 聚合给定范围(间隔)内的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37079773/

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