3
在RDF數據集中說,有一組值範圍從0到100(例如,百分比)。我想計算給定範圍內的值的數量,例如,100 - 90 | 90 - 80 | ... | 10 - 0。我期望的輸出如下所示:使用SPARQL在給定範圍(間隔)內彙總值?
╔════════════════╦════════╗
║ 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) }}
}