ListOf lists are all optional
In most of the situations where a ListOfX object is defined in SBML Level 2, the list is optional, meaning that the corresponding
<listOfX> XML element may be omitted. There are two places where this is not the case in SBML Level 2: the ListOfEventAssignments in Event, and the ListOfUnits in Unit. This is inconsistent; it is also a potential source of implementation errors, and in any case, requires additional special checks just for those two situations.
These restrictions SBML Level 3 will be removed, for the following reasons:
- SBML Level 3 packages may want to introduce new constructs that do not require the presence of existing elements. Consequently, most SBML elements should be optional.
- An implementation may have reasons to want to store incomplete models without considering them to be errors. For example, it may want to attach annotations to the container elements.
Changes relative to SBML Level 2
This change affects two components: Event and UnitDefinition.
The revised UML diagram for Event is as follows:
In a model, the meaning of an Event object without an event assignment is simply an event with no effect.
The revised UML diagram for UnitDefinition is as follows:
The meaning of a UnitDefinition without units is taken to be identical to an undefined unit. If the value of the
id of such a unit definition is used elsewhere in the model (as the units for species, compartments or other model component), the interpretation is the same as if no unit was specified for that model component.
This change should be forward compatible with SBML Level 2, in the sense that it is less restrictive than what Level 2 defined. However, the reverse is not true: a Level 3 model with missing lists of event assignments would not be translatable directly to a valid Level 2 model.