Known issues in the specification of SBML Level 2 Version 1

The SBML Level 2 Version 1 specification was made available on 28 June 2003. The following are the errors and other issues discovered in the specification document after it was issued. In the following table, the ID # of each issue refers to the reference number automatically assigned to the issue in the online SBML issue tracking system. The gaps in this numbering are not consequential for SBML and do not necessarily signify deleted or unresolved issues.

ID# Description Page and line number(s) Date added
1 The second bullet definition should read (double quote was added and the order of " and ' were switched): The double quote (") and single-quote character () must be escaped using the entities " and ', respectively, when those characters are used to delimit a string attribute value. p. 7 Sec. 3.3 not recorded
2 The encoding attribute is permitted on MathML annotation and <annotation-xml> elements, not only on ` as stated on that page. p. 9 Sec. 3.6.1 not recorded
3 The MathML standard doesn’t specify the result of n-ary operators when the number of operands is critically small, for example for times and add elements, when the number of operands are zero or one. The specification should clarify the correct behavior. The detailed semantics are described in http://www.sbml.org/forums/index.php?t=tree&goto=2010&rid=0 p. 9 Section 3.6.1 not recorded
4 The delay <csymbol> function is not clearly defined. There is no explanation of what range of values is valid for the time. For example, can times be less than zero? Also, are there restrictions on the acceptable values of the argument x? p. 10, Sec. 3.6.4 not recorded
5 The can in the 2nd sentance should be replaced by should. Thanks to Sarah Keating for catching this. p. 13, Sec. 4.3.1 not recorded
6 The id field of a <unitDefinition> element must not contain a value from Table 2, the table of UnitKind values. This restriction is necessary because otherwise, a unit definition could redefine one of the base unit kinds, and thereby create a cyclic dependency between unit definitions. p. 14, Sec. 4.4.2 not recorded
7 (Thanks to Maria Schilstra for catching this.) The first formula should be the following: p. 14, Sec. 4.4.2 not recorded
8 (Thanks to Sven Sahle for catching this.) The example code redefining the built-in unit volume should replace liters with litre. liters is not a valid value for the kind attribute because the spelling is not the official SI spelling. p. 16, Sec 4.4.3 not recorded
9 The text is slightly contradictory. The text might be improved by using the language that is used to describe the validation rules for units on species and compartment elements in Semantic_Validation. p. 17 Sec. 4.5.5 and p.19 Sec. 4.6.4 not recorded
10 The value of outside for a given compartment must be the id (not name) of another compartment in the model. p. 18 Sec. 4.5.6 not recorded
11 The graph formed where compartments are nodes and the arcs are implied by the values of outside attributes must be acyclic. Reasoning: otherwise a compartment can be outside itself. p. 18 Sec. 4.5.6 not recorded
12 or the id (not name) of a new unit defined in the list of unit definitions p. 21 Sec. 4.7.3 not recorded
13 This section should specify that the model should not be over determined as defined in the Semantic_Validation Algebraic Rules section. p. 24 Sec. 4.8.4 not recorded
14 The phrase: In speciesReference, the field species of type SId must refer to the name of an existing species should be: In speciesReference, the field species of type SId must refer to the id (not name) of an existing species, because the name is optional and SBML structures must refer to other components using their identifiers. p. 27 Sec. 4.9.5 not recorded
15 If a species identifier occurs in any MathML ci element, including inside kineticLaw and stoichiometryMath elements, then it should appear in a simpleSpeciesReference element in the containing reaction. The specification only applies this rule to the kineticLaw element. Reasoning: such a species is at a minimum a modifier of the reaction. p. 27 Sec. 4.95 not recorded
16 The text is overly restrictive and contradictory with respect of the units of species symbols. Species symbols can be either amount or concentration units depending on the species declaration. p. 29 Sec. 4.9.7, 3rd paragraph not recorded
17 A variable attribute on a eventAssignment element should be unique amoung the set of assignments within an event element. Reasoning: otherwise the effect of event assignment is ambigous. Which assignment has effect? p. 31 Sec. 4.10.5 not recorded
18 Any transition of a trigger expression from false to true will cause an event to fire. Consider an event with delay d, where the trigger expression makes a transition from false to true at times t1 and t2. The eventAssignment structure will have effect at t1 + d and t2 + d irrespective of the relative times of t1 and t2. For example, events can overlap in time so that t1 < t2 < t1 + d still causes an event assignment to occur at t1 + d and t2 + d. p. 32 Sec. 4.10.7 not recorded
19 The out reaction should have a listOfModifiers with a modifierSpeciesReference for species S2 since it is referenced in the reaction’s kineticLaw. Thanks to Tatsuya Ishida for catching this. p. 38 Example 5.3 not recorded
20 The one rule in listOfRules should not use <apply></apply>. These tags should be omitted. Thanks to Bruce Shapiro for catching this. p. 40 not recorded
21 The MathML in the two rateRule definitions should not use <apply></apply>. These tags should be omitted. Thanks to Bruce Shapiro for catching this. p. 42 not recorded
22 The definitionURL for the csymbol delay should be http://www.sbml.org/sbml/symbols/delay, not http://www.sbml.org/symbols/delay (the incorrect form has the characters ‘sbml’ omitted). Thanks to Marc Vass for catching this. p. 46 not recorded
23 The SCHUCS notation document (and by default appendix A) states that UML inheritance is mapped, in XML Schema, to extension of complexType elements. This is by far the most natural interpretation and the one used in the schema available on the SBML website and used by libSBML. However, this approach introduces a restriction: an ordering of elements is imposed on all extended types because the definition of XML Schema effectively requires the use of sequence ordering in order to be able to use type inheritance in this way. (A full explanation of the details can be found in sec. 13.5 of the book Definitive XML Schema, 2002, by P. Walmsley.) The result is that the ordering of subelements in SBML XML is important: they must appear in the order shown in the UML diagrams in the specification and subelements inherited from super-classes must occur before those of derived classes. For example, notes and annotation elements must occur before listOfReactants elements within a reaction element. Appendix A should state this restriction explicitly. This is an argument for moving appendix A into the main text. The dependence on sequence is a result of using XML Schema. p. 55 appendix A and the SCHUCS notation document p.14 section 3.9 not recorded
24 The SCHUCS document doesn’t state what model group element should be used in the XML schema interpretation of UML. (Examples of XML schema are that xs:element elements should be enclosed in xs:choice, xs:all or xs:sequence elements; see p.488 table A-1 of Walmsley’s book Definitive XML Schema, 2002.) Perhaps to be consistent with the erratum noted above, xs:sequence elements should be used. (The SBML schemas currently use this interpretation). In some instances, xsd:all could be used, but this has repercussions for type inheritance. p. 55 appendix A and SCHUCS notation document p.5 section 3.2 onwards not recorded
25 On any given reaction, any species occuring in the list of products or reactants can also occur in the list of modifiers. multiple not recorded
26 The last bullet, second sentence starts with the words there is no longer a type field on Rule. Technically, this should read: there is no longer a type field on AssignmentRule. p.56, Appendix B not recorded
27 The table should also include events, which can change species concentrations if the species has constant="false". p.20, table 4.6.5 not recorded
SBML Level 2 Version 1