Modeller
Reference

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
end

Business-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

DeclarationNested statements
contextversion
entityoptional lifecycle, field, and relationship declarations
lifecyclestage declarations
fieldone type, optional optional
relationshipone target, one cardinality, optional optional
enumerationmember declarations
memberone integer value
facttype, optional export
ruleinput, when all, conclusion, finding, optional export
behaviourfor, requires, outcome, transition
transitionlifecycle, 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.

On this page