我正在使用TopBraid Composer工具开发一个SPARQL查询,以获取每个月中数据质量规则的数量。
我已经有了开始时间和结束时间,但我需要获取开始时间和结束时间之间所有的月份,这样我才能计算该时间段内适用于数据质量规则的总数。
我的当前查询和结果如下:
SELECT *
WHERE
{
?Rules CDE:Data_Quality_Rule_added_on ?Date1.
?Rules CDE:Data_Quality_Removed_On ?Date2
BIND(month(?Date1) AS ?Month1)
BIND(month(?Date2) AS ?Month2)
BIND(smf:duration("mon",?Date1,?Date2) AS ?dur)
}
LIMIT 5
| [Rules] | Date1 | Date2 | Month1 | Month2 | dur
| CDE:Data_Quality_Rule_13 | 2016-01-28 | 2016-09-15 | 01 | 09 | 8
| CDE:Data_Quality_Rule_16 | 2016-02-29 | 2016-08-08 | 02 | 08 | 5
| CDE:Data_Quality_Rule_18 | 2016-05-15 | 2016-10-31 | 05 | 10 | 6
| CDE:Data_Quality_Rule_4 | 2016-03-28 | 2016-07-02 | 03 | 07 | 3
| CDE:Data_Quality_Rule_5 | 2016-02-02 | 2016-06-06 | 02 | 06 | 4
我可以获取起始月份、结束月份和持续时间。但我想在SPARQL中获取起始月份和结束月份之间的所有月份。最终结果是根据开始和结束日期获得每月数据质量规则数量计数,如下所示:
| Months | Number Of Data Quality Rules |
| 1 | 2
| 2 | 4
| 3 | 6
| 4 | 3
| 5 | 3
| 6 | 4
| 7 | 4
| 8 | 4
| 9 | 5
| 10 | 3
| 11 | 2
| 12 | 5