The openEHR Basic Meta-Model (BMM) that has been in use in some form for nearly 10 years now was recently upgraded to version 3.0.0 (from 2.x), with the persistence format (now called P_BMM) being backwards-compatibly upgraded to version 2.3. The purpose of the upgrade was to improve the separation of class and type, and to greatly strengthen the semantics of generic types and classes.
BMM is not a required formalism for openEHR, but it has turned to be pretty useful. Indeed it has no openEHR-specific semantics in it; it is in the category of useful side-effect technologies from a main project, like PV cells from the NASA space programme.
It is a functional replacement for (the endlessly painful) XMI format, for data-oriented models (it doesn’t yet represent methods and function objects). Unlike XMI (and UML), it gets generics right and also properly separates class and type.
BMM is the way we express the openEHR Reference Model for:
- the ADL Workbench;
- Marand’s ADL-designer (release imminent), which is a replacement for the historical Archetype Editor and Template Designer tools – internally AOM2, supports ADL 1.4 and .oet templates as read and save formats;
- and for the openEHR Archie project a pure ADL2/BMM modelling tool.
It is also used by HL7 CIMI (Clinical Information Modelling Initiative) to express CIMI archetypes.
The BMM is useful for these tools because it can be used to represent any model that is to be used as a basis for archetypes and templates – the openEHR RM, Task Planning (TP), ISO 13606, CDISC, FHIR or any other model.
Because it is easily human-readable, it can also be used to develop experimental reference models of any kind for use in archetype tools.
In the near future, we will generate the BMM files from the UML expression of the RM (currently in MagicDraw) and Task Planning model – these are source of the UML diagrams and definitions you see in the main specifications. (We already post-process these models to generate the correct formal class tables in the specifications, correcting various UML problems on the way).
The two specifications BMM and P_BMM will soon be baselined into the BASE component, so anyone who is interested in these specifications might want to take a look at them and comment (on the technical mailing list or on the BASE component Jira PR tracker). Of course, you can always do so at any time after the release, via the usual formal process, i.e. raising a PR.
If you are interested in Java libraries for BMM, you will find them in the Archie project on Github.
In the future, it is likely that we will upgrade BMM further to be a complete replacement for UML XMI, and to include semantics not in UML, particularly functions as objects (lambdas), now heavily used in modern programming languages.