Rationale

Why OOML?

Data models often become inseparable from the technology in which they were first expressed. A database schema describes storage. JSON Schema describes JSON documents. Protobuf describes messages. Programming-language classes describe structures within a particular language and runtime.

These are valuable artefacts, but using any one of them as the authoritative definition of a domain creates an accidental dependency: the implementation technology begins to define the model.

OOML starts from a different premise. The model should have an identity of its own. It should be possible to define a Customer, Address, GeographicPoint, Certificate or Observation without first deciding whether it will become a PostgreSQL table, JSON document, Java class or Protobuf message.

Separate meaning from implementation

OOML describes information at the semantic and logical level. It defines concepts, structure, types, constraints, relationships and reuse without prescribing how instances must be persisted or transported.

That allows implementation artefacts to become projections of the model rather than competing definitions of it. This is particularly useful where the same concepts cross application, organizational or technological boundaries.

Domain meaning
OOML
Java
JSON Schema
SQL DDL
Protobuf
OWL
Representations become projections of the model rather than competing definitions of it.

Reuse instead of repetition

Shared concepts should not need to be reinvented in every schema. OOML provides stable identities for reusable model artefacts and allows models to build upon one another through inheritance, references and shared definitions.

A model can therefore become part of a larger vocabulary without surrendering its own ownership or lifecycle. This matters for federated modelling: teams can own different models while still composing them into coherent domains.

Evolution is part of modelling

Models change.

OOML treats versioning as part of the model architecture rather than merely as a property of a repository containing model files. Independently versioned model artefacts allow consumers to express dependencies deliberately and make compatibility visible.

The goal is not to prevent change. It is to make change explicit and manageable.

Familiar abstractions, technology-independent meaning

OOML’s object-oriented structure is intentional. Object-oriented concepts have become part of the working vocabulary of generations of software developers. Classes, attributes, inheritance and composition provide an accessible way to express rich information structures without introducing an entirely unfamiliar modelling paradigm.

At the same time, OOML does not equate a class with a Java, C#, Python or TypeScript class. OOML classes are technology-independent definitions. Their similarity to programming-language constructs makes them understandable and generator-friendly without making any programming language authoritative.

Extensibility without language inflation

A modelling language can attempt to anticipate every future requirement by continually adding special-purpose constructs. OOML takes a more conservative approach.

Its general-purpose modelling mechanisms — particularly inheritance and typed model metadata — are intended to allow specialized communities and tools to extend what can be expressed without requiring every specialized concern to become part of the core specification.

An ontology tool, governance framework or code generator can define metadata appropriate to its domain. Organizations can define their own modelling profiles. Communities can standardize shared profiles over time. The core remains general while the ecosystem can become specialized.