Appendix

Acknowledgements

Primary Author

  • Thomas Beale, Ars Semantica; openEHR Foundation Management Board.

Contributors

This specification has benefited from formal and informal input from the openEHR and wider health informatics community. The openEHR Foundation would like to recognise the following people for their contributions.

  • Patrick Langford, NeuronSong LLC, Utah, USA

  • Claude Nanjo MA African Studies., M Public Health, Cognitive Medical Systems Inc., California, USA

  • Erik Sundvall PhD, Linkoping University, Sweden

Trademarks

  • 'openEHR' is a registered trademark of the openEHR Foundation

  • 'OMG' and 'UML' are registered trademarks of the Object Management Group

Conformance

Conformance of a data or software artifact to an openEHR specification is determined by a formal test of that artifact against the relevant openEHR Implementation Technology Specification(s) (ITSs), such as an IDL interface or an XML-schema. Since ITSs are formal derivations from underlying models, ITS conformance indicates model conformance.

Versions

The P_BMM model carries its own version number, independent of any single openEHR component release. The current version is 2.4, which formalises the capture of the full feature set of a class: functions (routines) with their parameters, constants, and class invariants, in addition to the properties already supported in earlier versions. The complete change history is recorded in the amendment record.

These features, and in particular P_BMM functions, exist primarily to capture the operation specifications of the openEHR models. Those specifications were originally maintained in UML and, as of 2026, are migrated to and generated from the BMM tooling (bmm-publisher). They are a recent addition and are not yet widely adopted by BMM tooling; a tool that materialises only the structural (attribute) features of a model may safely ignore the functions, constants and invariants of a class.

Tooling

The openEHR ADL Workbench (AWB) fully implements this specification, and provide a convenient way of illustrating BMM semantics. The screenshots used in this specification are all from the ADL Workbench. The tool is written in the Eiffel language, and is available as open source on Github. The BMM libraries can be found in the EOMF Github repository.

A modelling tool known as Archie implements BMM in Java, and can be found in the openEHR Github area.

Amendment Record

Issue Details Raiser Completed

LANG Release 1.1.0 (unreleased)

2.4.0

SPECLANG-16: Correct the P_BMM class model to match the syntax chapter and the published schemas: make primitive_types and class_definitions of P_BMM_SCHEMA, ancestor_defs of P_BMM_CLASS, and generic_parameter_defs of P_BMM_GENERIC_TYPE keyed Hash collections; make generic_parameter_defs optional; mark root_type of P_BMM_GENERIC_TYPE as persisted. State in the syntax chapter how ancestor_defs and generic_parameter_defs are keyed, and that ancestor_defs also holds non-generic ancestors.

S Iancu

31 Oct 2026

SPECLANG-18: Document how JSON and YAML encode an interval (the cardinality of a container property or container function parameter) and how a reader treats absent members; write the default cardinality as |>=0|, a valid ODIN interval, instead of |0..*|.

S Iancu

24 Oct 2026

SPECLANG-16: Add support for functions and other missing features in P_BMM: add P_BMM_FUNCTION and the P_BMM_FUNCTION_PARAMETER family (P_BMM_SINGLE_FUNCTION_PARAMETER, P_BMM_SINGLE_FUNCTION_PARAMETER_OPEN, P_BMM_CONTAINER_FUNCTION_PARAMETER, P_BMM_GENERIC_FUNCTION_PARAMETER), P_BMM_CONSTANT and P_BMM_INTERFACE; add functions, constants and invariants to P_BMM_CLASS, item_documentations to P_BMM_ENUMERATION, and bmm_version and includes to P_BMM_SCHEMA.

S Iancu

31 May 2026

LANG Release 1.0.0

2.3.0

SPECLANG-2. Add Basic Meta-Model (BMM) spec to BASE component.

openEHR SEC

04 Sep 2019

Add P_BMM_INDEXED_CONTAINER_TYPE, P_BMM_INDEXED_CONTAINER_PROPERTY to support indexed containers like Hash<K, V>.

T Beale

04 Sep 2019

Add value-set constraint.

T Beale

26 Mar 2019

Separate from main BMM specification;
Support generic types as class ancestors;
add new type P_BMM_BASE_TYPE as parent of P_BMM_SIMPLE_TYPE, P_BMM_GENERIC_TYPE and P_BMM_OPEN_TYPE;
Remove archetype-related schema meta-data.

T Beale

27 Apr 2018

2.2.2

Improve and update introductory text in the Overview section.

E Sundvall,
T Beale

03 Nov 2017

2.2.1

Rename P_BMM_SIMPLE_TYPE_OPEN to P_BMM_OPEN_TYPE;
Rename P_BMM_GENERIC_PARAMETER.create_bmm_generic_parameter_definition to create_bmm_generic_parameter;
Remove inheritance from P_BMM_PACKAGE_CONTAINER to P_BMM_MODEL_ELEMENT;
Make P_BMM_MODEL_ELEMENT abstract;
Correct P_BMM_ENUMERATION.items_names cardinality to multiple;
Constrain P_BMM_GENERIC_PARAMETER.name to one character and upper case.

C Nanjo,
T Beale

02 Mar 2017

2.2.0

Remove class P_BMM_CLASSIFIER.
Add missed inheritance from P_BMM_PROPERTY to P_BMM_MODEL_ELEMENT.

T Beale

20 Jun 2016

Add missing inheritance from P_BMM_SCHEMA to BMM_SCHEMA_CORE.
Correct naming of bmm_xxx_definition, create_bmm_xxx_definition in P_BMM_XXX classes to bmm_xxx, create_bmm_xxx etc.

T Beale

18 Apr 2016

2.1.0

Initial writing based on ADL Workbench implementation.

T Beale

08 Feb 2016