Specification
The OOML specification is the authoritative definition of the Open Object Modelling Language.
The explanatory material on this website introduces OOML’s concepts, rationale and intended use. Where there is any difference or ambiguity, the specification takes precedence.
Maturity
OOML is an early-stage draft specification under active development. It is complete enough to model with and to reason about seriously, and the core ideas have been stable across recent revisions — but it has not been through a formal review process, and it has few implementations.
A major version of 0 should be read the way the specification itself defines it: any change may be breaking. Recent revisions have renamed vocabulary, changed the meaning of two attribute kinds and replaced one language feature outright. Further changes of that kind are possible before 1.0.
If you are evaluating OOML, this is a good moment to influence it and a poor moment to assume stability.
Contents
The specification is a single document in nineteen sections. Each link below opens that section directly.
- §1IntroductionWhat OOML defines, and what it deliberately does not.
- §2Design Goals and Non-GoalsThe commitments the language is built around.
- §3Terminology and DefinitionsNormative vocabulary, with RFC 2119 keywords.
- §4Namespaces and IdentityFully qualified names, uniqueness, and the self token.
- §5VersioningThe change-impact contract: MAJOR, MINOR and TRIVIAL.
- §6Primitive TypesThe built-in scalar types and their permitted ranges.
- §7Global AttributesReusable attributes, versioned as artefacts in their own right.
- §8ClassesThe central artefact: properties and structure.
- §9AttributesEvery attribute kind and the properties available to each.
- §10MetadataTyped model metadata, inheritance and control properties.
- §11Inheritance: Superclasses and SubclassesMultiple inheritance and attribute resolution.
- §12Renaming and Overriding Inherited AttributesThe use property: as and override.
- §13Type Hierarchy: Supertypes and SubtypesType compatibility and required operations.
- §14The Dependency GraphHow dependencies are derived from a model's own body.
- §15Serialisation FormatJSON encoding and formatting conventions.
- §16Validation RulesThe complete, enumerated rule set a validator must enforce.
- §17Complete ExampleA worked model exercising most of the language.
- §18Grammar (ABNF)Normative grammar for the non-JSON structural elements.
- §19Design Notes and RationaleWhy the language is shaped the way it is.
Machine-readable artefacts
Alongside the prose specification, the project publishes a JSON Schema for OOML documents and a small reference validator.
JSON Schema
A JSON Schema (2020-12) describing the structure of a valid OOML class or global attribute document. It covers structural validity, not the cross-artefact rules that require resolving references.
https://ooml.org/schema/ooml.0.1.0.json
Reference validator
A command-line validator that checks a file or a directory of artefacts against the schema. Useful for keeping a model library structurally sound in CI.
View the utilities ↗Recent changes
The specification does not yet maintain a formal changelog. The following summarises recent substantive revisions; the repository history is authoritative.
- 2026-08-07
- Aliasing removed in favour of renaming and overriding via the use property.
- 2026-08-06
- Nested attributes added, including nested values inside collections.
- 2026-08-06
- Corrected the definitions of the object and class attribute kinds.
- 2026-08-05
- Global attribute names changed from PascalCase to camelCase.
No previous versions have been published. 0.1.0 is the first release of the specification.
Proposing a change
Changes to the specification are discussed in the issue tracker before a pull request is opened. Changes affecting language semantics, validation rules or the grammar warrant particular care and should reference prior discussion.
A proposal should state which version component it would increment — MAJOR, MINOR or TRIVIAL — and why.