| 1 Definition | 2 Functional Requirements | 3 Syntax |
| 4 Semantics | 5 Conformance Testing | 6 Performance Assessment |
1 Definition
A Data Type that specifies how an event or time interval repeats over time based on RFC 5545.
2 Functional Requirements
- Representation
- RRULE SHALL represent recurrence rules as defined in RFC 5545.
- RRULE SHALL support two equivalent representations:
- Textual form: A single line string following RFC 5545 grammar (e.g., FREQ=DAILY;INTERVAL=2;BYDAY=MO,WE).
- Structured form: A JSON object with explicit fields corresponding to RRULE components.
- Mandatory and Optional Components
- Mandatory:
- FREQ (Frequency): One of SECONDLY, MINUTELY, HOURLY, DAILY, WEEKLY, MONTHLY, YEARLY.
- Optional:
- INTERVAL (integer ≥ 1, default = 1).
- UNTIL (date-time or date-only, RFC 5545 format).
- COUNT (integer ≥ 1).
- BYSECOND, BYMINUTE, BYHOUR (arrays of integers within valid ranges).
- BYDAY (array of weekday codes, optionally with ordinals for monthly/yearly rules).
- BYMONTHDAY, BYYEARDAY, BYWEEKNO, BYMONTH, BYSETPOS (arrays of integers within RFC ranges).
- WKST (week start day, default = MO).
- Constraints
- COUNT and UNTIL SHALL NOT both appear in the same RRULE.
- Value ranges SHALL follow RFC 5545:
- Seconds/Minutes: 0–59
- Hours: 0–23
- Month: 1–12
- Monthday: −31..−1 or 1..31
- Yearday: −366..−1 or 1..366
- Weekno: −53..−1 or 1..53
- BYDAY ordinals SHALL be allowed only for MONTHLY and YEARLY frequencies.
- Default Values
- INTERVAL defaults to 1 if omitted.
- WKST defaults to MO if omitted.
3 Syntax
https://schemas.mpai.community/OSD/V1.4/data/BBRULE.json
4 Semantics
| Label | Description |
| Header | BBRULE Header |
| – Standard-RRL | The characters “OSD-RRL-V” |
| – Version | Major version – 1 or 2 characters |
| – Dot-separator | The character “.” |
| – Subversion | Minor version – 1 or 2 characters |
| MInstanceID | Identifier of the RRULE instance (unique within its context). |
| RRULEID | Globally unique identifier for this RRULE definition. |
| RRULEData | Core recurrence rule data, including: |
| – FREQ | Frequency of recurrence (SECONDLY, MINUTELY, HOURLY, etc.). |
| – INTERVAL | Interval between recurrences (default = 1). |
| – UNTIL | End date/time for recurrence. |
| – COUNT | Number of occurrences. |
| – BYxxx | Arrays for filtering (BYDAY, BYMONTHDAY, BYMONTH, etc.). |
| – WKST | Week start day (default = MO). |
| DescrMetadata | Descriptive metadata about this RRULE instance (e.g., human-readable label, notes, provenance). |
5 Conformance Testing
A Data instance Conforms with OSD-RRL RRULE (OSD-RRL) if:
- Its JSON Object validates against its JSON Schema.
- Any included JSON Object validates against its JSON Schema.
- All Data in the JSON Object:
- Have the specified Data Types.
- Conform with the Qualifiers signaled in their JSON Schemas.
6 Performance Assessment