CellML 2.0 Specification Release Notes

This note accompanies the release of the CellML 2.0 Normative Specification.

Unlike the CellML 1.x specifications, the style of the CellML 2.0 specification is very formal. It follows a "normative" specification approach and consists largely of a list of rules. A less formal, more explanatory "informative" specification is available as a separate, complementary document at https://cellml.org/specifications/cellml_2.0/.

What has changed in CellML 2.0 compared with CellML 1.1?

  1. General matters:

    1. CellML 2.0 is based on XML 1.1 while CellML 1.x is based on XML 1.0. This has almost no effect on the model syntax or semantics, but this may make it easier for some tools to work with CellML.

    2. CellML 1.1 defined a subset of MathML 2.0 that simulation tools were expected to support, but otherwise allowed all content MathML 2.0 to be used in a CellML 1.1 model. CellML 2.0 instead defines the set of allowed MathML 2.0 elements, largely based on the recommended subset from CellML 1.1 with the changes noted below.

    3. CellML 2.0 does not include the reaction element (or any of its child elements).

    4. Extension elements and attributes have been removed.

  1. Units:

    1. CellML 2.0 allows units to be defined as children of the model only.

    2. The base_unit attribute on a units element is not present in CellML 2.0 and empty units elements are by definition base units.

    3. The offset attribute has been removed from the unit element.

    4. The celsius unit has been removed from the list of built-in units.

  1. Variables:

    1. The public_interface and private_interface attributes of a variable element have been removed. Instead, a variable element now has an interface attribute that can have one of the following values: none, public, private or public_and_private.

  1. Mathematics:

    1. The min, max and rem MathML elements are allowed.

    2. The factorial, semantics, annotation and annotation-xml MathML elements are no longer allowed.

  1. Resets:

    1. It is now possible to set rules that cause variables to take on a new value when a specified transition occurs. These are known as “resets”.

    2. A typical use case is cell division where the volume of a cell is halved after it has exceeded a threshold.

    3. Resets have a defined order of evaluation. This ensures that modularity is maintained and existing resets can be overridden when reusing (importing) a model with resets.

  1. Groups:

    1. The distinction between encapsulation and containment groups has been removed in favour of all groups being encapsulation hierarchies.

    2. The top-level element of a hierarchy, previously named group, has been renamed encapsulation.

    3. As such, the relationship_ref element is not present in CellML 2.0.

  1. Connections:

    1. The syntax for connections in CellML 2.0 has been simplified. The map_components element is not used, and instead its component_1 and component_2 attributes have moved to the parent connection element.

  1. Imports:

    1. The semantics for importing units and components have been clarified.

  1. Metadata:

    1. In CellML 1.1, metadata considerations were split between the CellML specification and the CellML metadata specifications. In CellML 2.0, there is a clear separation between a CellML model and its metadata. The CellML 2.0 specification does not allow metadata to be part of a model document.

    2. The id attribute, previously in the cmeta namespace, is now an unprefixed attribute (for metadata specifications, see instead the CellML Metadata Framework 2.0).