Readable Modelling Language
Business-facing syntax for authoring canonical Modeller meaning.
Readable Modelling Language (RML) 1.0 is the portable, version-controlled authoring language for Modeller. It uses nested blocks, readable names, quoted references, and ordinary comments while compiling to the same canonical model used by validation, rules, projections, and generation.
Child Care example
rml 1.0
context Child Care
version 1.0.0
end
fact Active enrolment exists
type truth
export
end
rule Determine ACCS eligibility
input "Active enrolment exists"
when all
fact "Active enrolment exists"
end
conclusion Eligible
end
finding "Active enrolment exists" missing accs.active-enrolment-required
export
endBusiness-facing .modeller files contain no UUIDs. The workspace keeps
canonical UUIDv7 values in the tooling-owned, version-controlled
.modeller/identities.json registry. During workspace loading, Modeller joins
each document's declarations to its registry entries in declaration order and
materializes identity only in memory. Authors write and reference readable
names; they do not create or copy identity values.
The loader fails with a stable diagnostic when the registry is missing, invalid, or out of sync, rather than generating replacement identities and silently changing canonical continuity.
RML 1.0 blocks
| Declaration | Nested statements |
|---|---|
context | version |
entity | optional lifecycle, field, and relationship declarations |
lifecycle | stage declarations |
field | one type, optional optional |
relationship | one target, one cardinality, optional optional |
enumeration | member declarations |
member | one integer value |
fact | type, optional export |
rule | input, when all, conclusion, finding, optional export |
behaviour | for, requires, outcome, transition |
transition | lifecycle, from, to, outcome |
Field types include boolean, text, byte, int16, int32, int64,
decimal(precision,scale), date, time, datetime, datetimeoffset,
identifier, coordinate, and stable references such as
enumeration "Booking status". See the multi-file
Child Care sample,
including entities/booking.modeller, for a complete structural example.
Compilation and diagnostics
The RML anti-corruption layer resolves readable references, applies the tooling-owned identity registry, retains source spans, and compiles into the authored canonical model. SAF may be used internally as a temporary lowering step, but it is not an authoring requirement or semantic authority.
Unclosed blocks, an out-of-sync identity registry, unknown references, unsupported expressions, and canonical validation failures return stable diagnostics mapped to RML source. Parsing retains the existing character, statement, token, cancellation, and package-relative path limits.
Editor support
The repository extension under editors/vscode-modeller provides:
- RML TextMate highlighting, comments, brackets, indentation, and folding;
- source-mapped diagnostics;
- keyword and semantic concept completion;
- hover, definition, references, and rename;
- document symbols and semantic tokens.
SAF uses a distinct engineering-only language mode. See the editor-integration reference and authoring decision.