The JSON schema every law YAML file must conform to, and how versioned schema URLs work.
The law format is defined by a JSON Schema. All law YAML files in the corpus must conform to this schema.
The current schema version is v0.5.6.
Schema URLs use immutable git tags to guarantee reproducibility. The format is:
The tag schema-vX.Y.Z is created when a schema version is released. Using tags instead of refs/heads/main ensures that the schema a law file references can never change underneath it. See RFC-013 for the rationale.
This table is the single source of truth for which schema version introduced which construct. RFCs that add a construct reference this table rather than asserting a version independently.
| Version | Introduces | RFC |
|---|---|---|
| v0.5.6 | Quantity unit labels (euro, ratio, percentage) and structured definitions constants carrying type/type_spec | RFC-023 |
| v0.5.5 | ROUND, CEIL, FLOOR rounding operations (explicit statutory rounding) | RFC-024 |
| v0.5.4 | DATE_DIFF operation; date operands for the comparison operators | RFC-021 |
| v0.5.3 | valid_to (law end date) | RFC-019 |
| v0.5.2 | annotation-schema.json for stand-off notes | RFC-005, RFC-018 |
| v0.5.1 | Tag-based immutable schema URLs; refinements within the v0.5.x line | RFC-013 |
| v0.5.0 | hooks, overrides (reactive execution); procedure, procedure_id (Awb lifecycle); Woo support | RFC-007, RFC-008 |
| v0.4.0 | open_terms, implements (IoC); legal_character; date and array value types | RFC-003 |
| v0.3.2 | SUBTRACT_DATE split into its own date operation with a unit (days, months, years) | |
| v0.3.1 | Structured references on articles (bwb_id, artikel, lid, onderdeel, …) for runtime cross-reference resolution | |
| v0.3.0 | Typed operation definitions (arithmetic, logical, comparison, conditional, switch) with semantic operands and legal_basis, replacing the single untyped operation | RFC-004 |
| v0.2.0 | Initial public schema: regulatory_layer, competent_authority, execution.produces, cross-law references (source) | RFC-001, RFC-002 |
Multi-organization execution (RFC-009) reuses competent_authority (v0.2.0) and adds no schema construct of its own.
The annotation schema (annotation-schema.json) versions independently of the law schema: it lives at schema/v0.5.2/, where it was introduced, and a new law-schema version does not republish it.
Validate law files against the schema:
The schema defines:
$id, $schema, name, regulatory_layer, publication_date, valid_from, url (required: regulatory_layer, publication_date, url, articles)articles array; each article requires number, text, and url, and may carry a machine_readable section and referencesexecution, plus open_terms, implements, definitions, hooks, overrides, untranslatables, competent_authority, enables, requires, endpointparameters, input, output, actions, producesoperation type plus its operands (values, subject/value, conditions, cases/default, date fields)source blocks on inputs, pointing to other regulationsopen_terms and implements for delegationSee Law Format for a guided walkthrough.
An exploration by Bureau Architectuur of the Dutch Ministry of the Interior into the possibilities of transparent, executable legislation.
Bureau Architectuur
Ministry of the Interior and Kingdom Relations