Proposed differences between the 1.1 and 1.2 CellML specifications

This document describes the intended differences between CellML 1.1 and 1.2 as at 2008-2009. It is out of date but exists for the purpose of being linked to by other documents generated around that time, where those other documents are still of interest.

Since the CellML specification is currently (March 2008) under active development, it is easy for the list below to become out of date.  We will endeavour to update this from time to time.  However, the status of various proposals is available as a listing from

  • The removal of the reaction element.  A document discussing the motivation for this change, and also describing the process of how the reaction element can be removed from a model can be downloaded here.
  • A major rewrite of the text to separate normative text (which is intended to be the official definition of what CellML is) and informative text (which doesn't define CellML itself, but helps people to understand the consequences of the normative text, for example, by providing examples of what CellML looks like). During this process, many informal or ambiguous / underdefined aspects of CellML have been converted into very specific language. The goal of this rewrite was not to change the meaning of the CellML specification, but to make the existing meaning clearer.
  • The concept of secondary specifications. These specifications can be defined to narrow down the very general CellML specification into a more specific subset, with a scope that is sufficiently small to implement in its entirety. This concept replaces and extends the concept of the CellML Subset of MathML defined in CellML 1.1.
  • A new typing system (the details of which have not been finalised) is being discussed.
  • A subtle change to import semantics - now entire models are imported as a single instance, rather than components and units. This is easier to implement, and resolves some conceptual problems that can arise when the same component is imported twice for the same import element.
  • Resolution of a contradiction in the CellML 1.1 specification over identifier rules. Names like _1a are valid according to one part of the CellML 1.1 specification, and invalid according to another.
  • Support for delayed variables is being considered.
  • A format for real numbers. Different countries have different conventions for specifying real numbers, but CellML 1.1 doesn't specify which format to use. The CellML 1.2 proposal specifies a specific format using the dot as the decimal separator.
  • There is a proposal to drop the support for containment and user defined groups, and instead have this information expressed in RDF/XML metadata.
  • There is a proposal to allow multiple connection elements between the same pair of components (but with different variable elements). The restriction in CellML 1.1 didn't serve any meaningful purpose, and made it harder to work CellML models.
  • There is a proposal to remove the directionality of connections (by making interfaces on variables not specify whether they are in or out). The rationale behind this is that a connection is meant to imply equality, and not assignment (in line with the declarative nature of mathematics in CellML).
  • There is a proposal to use Content MathML 3 rather than Content MathML 2. The rationale behind this is that Content MathML 3 links operator semantics to OpenMath content dictionaries, so the semantics of operators, and ultimately mathematical expressions, can be more clearly and unambiguously defined.