3
RDFデータセットには、0〜100の値のセット(たとえば、パーセント)があります。私は、与えられた範囲内の値の数を数えたいと思います。例えば、100 - 90 | 90 - 80 | ... |私が期待している出力は、次のようになります。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) }}
}