Skip to main content
. Author manuscript; available in PMC: 2017 Jun 2.
Published in final edited form as: J Integr Bioinform. 2015 Sep 4;12(2):271. doi: 10.2390/biecoll-jib-2015-271
General XML validation
10101. An SBML XML file must use UTF-8 as the character encoding. More precisely, the encoding attribute of the XML declaration at the beginning of the XML data stream cannot have a value other than “ UTF-8”. An example valid declaration is <?xml version=“1.0” encoding=“UTF-8”?>. (References: L2V2 Section 4.1; L2V3 Section 4.1; L2V4 Section 4.1; L2V5 Section 4.1.)
10102. An SBML XML document must not contain undefined elements or attributes in the SBML names-pace. Documents containing unknown elements or attributes placed in the SBML namespace do not conform to the SBML Level 2 specification. (References: L2V2 Section 4.1; L2V3 Section 4.1; L2V4 Section 4.1; L2V5 Section 4.1.)
10103. An SBML XML document must conform to the XML Schema for the corresponding SBML Level, Version and Release. The XML Schema for SBML defines the basic SBML object structure, the data types used by those objects, and the order in which the objects may appear in an SBML document. (References: SBML L2V2 Section 4.1; L2V3 Section 4.1; L2V4 Section 4.1; L2V5 Section 4.1.)
General MathML validation
10201. All MathML content in SBML must appear within a math element, and the math element must be either explicitly or implicitly in the XML namespace “http://www.w3.org/1998/Math/MathML”. (References: L2V2 Section 3.5; L2V3 Section 3.4; L2V4 Section 3.4; L2V5 Section 3.4.)
10202. The only permitted MathML 2.0 elements in SBML Level 2 are the following: cn, ci, csymbol, sep, apply, piecewise, piece, otherwise, eq, neq, gt, lt, geq, leq, plus, minus, times, divide, power, root, abs, exp, ln, log, floor, ceiling, factorial, and, or, xor, not, degree, bvar, logbase, sin, cos, tan, sec, csc, cot, sinh, cosh, tanh, sech, csch, coth, arcsin, arccos, arctan, arcsec, arccsc, arccot, arcsinh, arccosh, arctanh, arcsech, arccsch, arccoth, true, false, notanumber, pi, infinity, exponentiale, semantics, annotation, and annotation-xml. (References: L2V2 Section 3.5.1; L2V3 Section 3.4.1; L2V4 Section 3.4.1; L2V5 Section 3.4.1.)
10203. In the SBML subset of MathML 2.0, the MathML attribute encoding is only permitted on csymbol, annotation and annotation-xml. No other MathML elements may have the encoding attribute. (References: L2V2 Section 3.5.1; L2V3 Section 3.4.1; L2V4 Section 3.4.1; L2V5 Section 3.4.1.)
10204. In the SBML subset of MathML 2.0, the MathML attribute definitionURL is only permitted on ci, csymbol, and semantics. No other MathML elements may have a definitionURL attribute. (References: L2V2 Section 3.5.1; L2V3 Section 3.4.1; L2V4 Section 3.4.1; L2V5 Section 3.4.1.)
10205. In SBML Level 2, the only values permitted for the definitionURL attribute on a csymbol element are “http://www.sbml.org/sbml/symbols/time” and “http://www.sbml.org/sbml/symbols/delay”. (References: L2V2 Section 3.5.5; L2V3 Section 3.4.6; L2V4 Section 3.4.6; L2V5 Section 3.4.6.)
10206. In the SBML subset of MathML 2.0, the MathML attribute type is only permitted on the cn construct. No other MathML elements may have a type attribute. (References: L2V2 Section 3.5.1; L2V3 Section 3.4.1; L2V4 Section 3.4.1; L2V5 Section 3.4.1.)
10207. The only permitted values for the type attribute on MathML cn elements are “ e-notation”, “ real”, “ integer”, and “ rational”. (References: L2V2 Section 3.5.2; L2V3 Section 3.4.2; L2V4 Section 3.4.2; L2V5 Section 3.4.2.)
10208. MathML lambda elements are only permitted as the first element inside the math element of a Func-tionDefinition or as the first element of a semantics element immediately inside the math element of a FunctionDefinition; they may not be used elsewhere in an SBML model. (References: L2V2 Sections 3.5.1 and 4.3; L2V3 Sections 3.4.1 and 4.3.2; L2V4 Section 3.4.1 and 4.3.2; L2V5 Sections 3.4.1 and 4.3.2.)
10209. The arguments of the MathML logical operators and, or, xor, and not must have boolean values. (References: L2V2 Section 3.5.8; L2v3 Section 3.4.9; L2V4 Section 3.4.9; L2V5 Section 3.4.10.)
10210. The arguments to the following MathML constructs must evaluate to be numbers (i.e., MathML real, integer, rational, or “e-notation” numbers, or the time or delay csymbol): plus, minus, times, divide, power, root, abs, exp, ln, log, floor, ceiling, factorial, sin, cos, tan, sec, csc, cot, sinh, cosh, tanh, sech, csch, coth, arcsin, arccos, arctan, arcsec, arccsc, arccot, arcsinh, arccosh, arctanh, arcsech, arccsch, arccoth. (References: L2V2 Section 3.5.8; L2V3 Section 3.4.9; L2V4 Section 3.4.9; L2V5 Section 3.4.10.)
10211. The values of all arguments to eq and neq operators must have the same type (either all boolean or all numerical). (References: L2V2 Section 3.5.8; L2V3 section 3.4.9; L2V4 Section 3.4.9; L2V5 Section 3.4.10.)
10212. The types of values within piecewise operators must all be consistent: the set of expressions that make up the first arguments of the piece and otherwise operators within the same piecewise operator must all return values of the same type. (References: L2V2 Section 3.5.8; L2V3 Section 3.4.9; L2V4 Section 3.4.9; L2V5 Section 3.4.10.)
10213. The second argument of a MathML piece operator must have a boolean value. (References: L2V2 Section 3.5.8; L2V3 Section 3.4.9; L2V4 Section 3.4.9; L2V5 Section 3.4.10.)
10214. Outside of a FunctionDefinition, if a ci element is the first element within a MathML apply, then the ci’s value can only be chosen from the set of identifiers of FunctionDefinition instances defined in the enclosing SBML Model instance. (References: L2V2 Section 4.3.2; L2V3 Section 4.3.2; L2V4 Section 4.3.2; L2V5 Section 4.3.2.)
10215. Outside of a FunctionDefinition, if a ci element is not the first element within a MathML apply, then the ci’s value can only be chosen from the set of identifiers of Species, Compartment, Parameter or Reaction objects defined in the SBML model. (References: L2V2 Section 4.3.2; L2V3 Section 3.4.3; L2V4 Section 3.4.3; L2V5 Section 3.4.3.)
10216. The id value of a Parameter defined within a KineticLaw can only be used in ci elements within the MathML content of that same KineticLaw; the identifier is not visible to other parts of the model. (References: L2V2 Sections 3.4.1, 3.5.3 and 4.13.5; L2V3 Sections 3.3.1, 3.4.3 and 4.13.5; L2V4 Sections 3.3.1, 3.4.3, and 4.13.5; L2V5 Sections 3.3.1, 3.4.3 and 4.13.5.)
10217. The MathML formulas in the following elements must yield numerical values (that is, MathML real, integer or “e-notation” numbers, or the time or delay csymbol): math in KineticLaw, stoichi-ometryMath in SpeciesReference, math in InitialAssignment, math in AssignmentRule, math in RateRule, math in AlgebraicRule, math in Event Delay, and math in EventAssignment. (References: L2V2 Sections 4.10, 4.11, 4.13 and 4.14; L3V3 Sections 4.10, 4.11, 4.13 and 4.14; L2V4 Sections 4.10, 4.11, 4.13, and 4.14; L2V5 Sections 4.10, 4.11, 4.13 and 4.14.)
10218. A MathML operator must be supplied the number of arguments appropriate for that operator. (References: L2V2 Section 3.5.1; L2V3 Section 3.4.1; L2V4 Section 3.4.1; L2V5 Section 3.4.1.)
10219. The number of arguments used in a call to a function defined by a FunctionDefinition must equal the number of arguments accepted by that function, or in other words, the number of bvar elements inside the lambda element of the function definition. (References: L2V4 Section 4.3.4; L2V5 Section 4.3.4.)
10222. The value of a ci element may not be the identifier of a Compartment with a spatialDimensions value of “ 0”. (References: L2V5 Section 4.7.)
General identifier validation
10301. The value of the id attribute on every instance of the following classes of objects in a model must be unique across the set of all id values in a model: Model, FunctionDefinition, CompartmentType, SpeciesType, Compartment, Species, Reaction, SpeciesReference, ModifierSpeciesReference, Event, and model-wide Parameters. Exception: the identifiers of instances of UnitDefinition, and parameters defined inside a reaction, are treated separately. (References: L2V1 Section 3.5; L2V2 Section 3.4.1; L2V3 Section 3.3; L2V4 Section 3.3; L2V5 Section 3.3.)
10302. The value of the id attribute of every UnitDefinition must be unique across the set of all UnitDefinitions in the entire model. (References: L2V1 Section 3.5 and 4.4; L2V2 Sections 3.4.1 and 4.4; L2V3 Sections 3.3 and 4.4; L2V4 Section 3.3 and 4.4; L2V5 Sections 3.3 and 4.4.)
10303. The value of the id attribute of each parameter defined locally within a KineticLaw must be unique across the set of all such parameter definitions in that KineticLaw. (References: L2V1 Sections 3.4.1 and 4.13.9; L2V2 Sections 3.4.1 and 4.13.5; L2V3 Sections 3.3.1 and 4.13.5; L2V4 Section 3.3.1 and 4.13.5; L2V5 Sections 3.3.1 and 4.13.5.)
10304. The value of the variable attribute in all AssignmentRule and RateRule definitions must be unique across the set of all such rule definitions in a model. (References: L2V1 Section 4.8.4; L2V2 Section 4.11; L2V3 Section 4.11.3; L2V4 Section 4.11.3; L2V5 Section 4.11.3.)
10305. In each Event, the value of the variable attribute within every EventAssignment definition must be unique across the set of all EventAssignments within that Event. In other words, a single Event cannot make more than one assignment to a given identifier. (References: L2V1 erratum 17; L2V2 Section 4.14.2; L2v3 Section 4.14.4; L2V4 Section 4.14.4; L2V5 Section 4.14.4.)
10306. An identifier used as the value of variable in an EventAssignment cannot also appear as the value of variable in an AssignmentRule. (References: L2V1 Section 4.10.5; L2V2 Section 4.14.2; L2V2 Section 4.14.4; L2V4 Section 4.14.4; L2V5 Section 4.14.4.)
10307. Every metaid attribute value must be unique across the set of all metaid values in a model. (References: L2V2 Sections 3.1.6 and 3.3.1; L2V3 Sections 3.1.6 and 3.2.1; L2V4 Section 3.2.1 and 3.1.6; L2V5 Sections 3.2.1 and 3.1.6.)
10308. The value of a sboTerm attribute must have the data type SBOTerm, which is a string consisting of the characters ‘S’, ‘B’, ‘O’, ’:’, followed by exactly seven digits. (References: L2V2 Section 3.1.9; L2V3 Section 3.1.9; L2V4 Section 3.1.9; L2V5 Section 3.1.9.)
10309. The syntax of metaid attribute values must conform to the syntax of the XML type ID. (References: L2V2 Sections 3.1.6 and 3.3.1; L2V3 Sections 3.2.1 and 3.1.6; L2V4 Section 3.2.1 and 3.1.6; L2V5 Sections 3.2.1 and 3.1.6.)
10310. The syntax of id attribute values must conform to the syntax of the SBML type SId. (References: L2V2 Section 3.1.7; L2V3 Section 3.1.7; L2V4 Section 3.1.7; L2V5 Section 3.1.7.)
10311. The syntax of unit identifiers (i.e., the values of the id attribute on UnitDefinition, the units attribute on Compartment, the units attribute on Parameter, and the substanceUnits attribute on Species) must conform to the syntax of the SBML type UnitSId. (References: L2V3 Section 3.1.8; L2V4 Section 3.1.8; L2V5 Section 3.1.8.)
10313. Unit identifier references (that is, the units attribute on Compartment, the units attribute on Parameter, and the substanceUnits attribute on Species) must be the identifier of a UnitDefini-tion in the Model, or the identifier of a predefined unit in SBML, that is, any of the following base units: “ ampere”, “ becquerel”, “ candela”, “ coulomb”, “ dimensionless”, “ farad”, “ gram”, “ gray”, “ henry”, “ hertz”, “ item”, “ joule”, “ katal”, “ kelvin”, “ kilogram”, “ litre”, “ lumen”, “ lux”, “ metre”, “ mole”, “ newton”, “ ohm”, “ pascal”, “ radian”, “ second”, “ siemens”, “ sievert”, “ steradian”, “ tesla”, “ volt”, “ watt”, or “ weber”. (References: L2V4 Section 4.4.2; L2V5 Section 4.4.2.)
General annotationvalidation
10401. Every top-level element within an annotation element must have a namespace declared. (References: L2V2 Section 3.3.3; L2V3 Section 3.2.4; L2V4 Section 3.2.4; L2V5 Section 3.2.4.)
10402. There cannot be more than one top-level element using a given namespace inside a given annotation element. (References: L2V2 Section 3.3.3; L2V3 Section 3.2.4; L2V4 Section 3.2.4; L2V5 Section 3.2.4.)
10403. Top-level elements within an annotation element cannot use any SBML namespace, whether explicitly (by declaring the namespace to be one of the URIs “http://www.sbml.org/sbml/level1”, “http://www.sbml.org/sbml/level2”, “http://www.sbml.org/sbml/level2/version2”, “http://www.sbml.org/sbml/level2/version3”, “http://www.sbml.org/sbml/level2/version4”, or “http://www.sbml.org/sbml/level2/version5”), or implicitly (by failing to declare any names-pace). (References: L2V2 Section 3.3.3; L2V3 Section 3.2.4; L2V4 Section 3.2.4; L2V5 Section 3.2.4.)
General unit validation (Warnings only)
10501. The units of the expressions used as arguments to a function call should match the units expected for the arguments of that function. (References: L2V2 Section 3.5; L2V3 Section 3.4; L2V4 Section 3.4; L2V5 Section 3.4.)
10511. When the variable in an AssignmentRule refers to a Compartment, the units of the rule’s right-hand side should be consistent with the units of that compartment’s size. (References: L2V2 Section 4.11.3; L2V3 Section 4.11.3; L2V4 Section 4.11.3; L2V5 Section 4.11.3.)
10512. When the variable in an AssignmentRule refers to a Species, the units of the rule’s right-hand side should be consistent with the units of the species’ quantity. (References: L2V2 Section 4.11.3; L2V3 Section 4.11.3; L2V4 Section 4.11.3; L2V5 Section 4.11.3.)
10513. When the variable in an AssignmentRule refers to a Parameter, the units of the rule’s right-hand side should be consistent with the units declared for that parameter. (References: L2V2 Section 4.11.3; L2V3 Section 4.11.3; L2V4 Section 4.11.3; L2V5 Section 4.11.3.)
10521. When the variable in an InitialAssignment refers to a Compartment, the units of the InitialAssign-ment’s math expression should be consistent with the units of that compartment’s size. (References: L2V2 Section 4.10.4; L2V3 Section 4.10; L2V4 Section 4.10; L2V5 Section 4.10.)
10522. When the variable in an InitialAssignment refers to a Species, the units of the InitialAssignment’s math expression should be consistent with the units of that species’ quantity. (References: L2V2 Section 4.10.4; L2V3 Section 4.11.3; L2V4 Section 4.11.3; L2V5 Section 4.11.3.)
10523. When the variable in an InitialAssignment refers to a Parameter, the units of the InitialAssignment’s math expression should be consistent with the units declared for that parameter. (References: L2V2 Section 4.10.4; L2V3 Section 4.11.3; L2V4 Section 4.11.3; L2V5 Section 4.11.3.)
10531. When the variable in a RateRule definition refers to a Compartment, the units of the rule’s right-hand side should be of the form x per time, where x is either the units in that Compartment definition, or (in the absence of explicit units declared for the compartment size) the default units for that compartment, and time refers to the units of time for the model. (References: L2V2 Section 4.11.4; L2V3 Section 4.11.4; L2V4 Section 4.11.4; L2V5 Section 4.11.4.)
10532. When the variable in a RateRule definition refers to a Species, the units of the rule’s right-hand side should be of the form x per time, where x is the units of that species’ quantity, and time refers to the units of time for the model. (References: L2V2 Section 4.11.4; L2V3 Section 4.11.4; L2V4 Section 4.11.4; L2V5 Section 4.11.4.)
10533. When the variable in a RateRule definition refers to a Parameter, the units of the rule’s right-hand side should be of the form x per time, where x is the units in that Parameter definition, and time refers to the units of time for the model. (References: L2V2 Section 4.11.4; L2V3 Section 4.11.4; L2V4 Section 4.11.4; L2V5 Section 4.11.4.)
10541. The units of the math formula in a KineticLaw definition should be the equivalent of substance per time. (References: L2V2 Section 4.13.5; L2V3 Section 4.13.5; L2V4 Section 4.13.5; L2V5 Section 4.13.5.)
10551. The units of the mathematical formula in the delay of an Event should correspond to the model’s overall units of time. (L2V3 Section 4.14.3; L2V4 Section 4.14.3; L2V5 Section 4.14.3.)
10561. When the variable attribute of an EventAssignment contains the identifier of a Compartment in the model, the units of the mathematical expression in the EventAssignment’s math expression should be consistent with the units of that compartment’s size. (References: L2V2 Section 4.14.2; L2V3 Section 4.14.4; L2V4 Section 4.14.4; L2V5 Section 4.14.4.)
10562. When the variable attribute of an EventAssignment contains the identifier of a Species in the model, the units of the mathematical expression in the EventAssignment’s math expression should be consistent with the units of that species’ quantity. (References: L2V2 Section 4.14.2; L2V3 Section 4.14.4; L2V4 Section 4.14.4; L2V5 Section 4.14.4.)
10563. When the variable attribute of an EventAssignment contains the identifier of a Parameter in the model, the units of the mathematical expression in the EventAssignment’s math expression should be consistent with the units declared for that parameter. (References: L2V2 Section 4.14.2; L2V3 Section 4.14.4; L2V4 Section 4.14.4; L2V5 Section 4.14.4.)
General model validation
10601. A system of equations created from an SBML model must not be overdetermined. (References: L2V2 Section 4.11.5; L2V3 Section 4.11.5; L2V4 Section 4.11.5; L2V5 Section 4.11.5.)
General SBO validation (Warnings only)
10701. The value of the sboTerm attribute on a Model should be an SBO identifier referring to an interaction framework defined in SBO. That is, the value should be a term derived from SBO:0000231, “occurring entity representation”. (References: L2V2 Section 4.2.1; L2V3 Section 4.2.2; L2V4 Section 4.2.2; L2V5 Section 4.2.2.)
10702. The value of the sboTerm attribute on a FunctionDefinition should be an SBO identifier referring to a mathematical expression. That is, the value should be a term derived from SBO:0000064, “mathematical expression”. (References: L2V2 Section 4.3.3; L2V3 Section 4.3.3; L2V4 Section 4.3.3; L2V5 Section 4.3.3.)
10703. The value of the sboTerm attribute on a Parameter should be an SBO identifier referring to a quantitative parameter. That is, the value should be a term derived from SBO:0000002, “quantitative systems description parameter”. (References: L2V2 Section 4.9.5; L2V3 Section 4.9.5; L2V4 Section 4.9.5; L2V5 Section 4.9.5.)
10704. The value of the sboTerm attribute on an InitialAssignment should be an SBO identifier referring to a mathematical expression. That is, the value should be a term derived from SBO:0000064, “mathematical expression”. (References: L2V2 Section 4.10.3; L2V3 Section 4.10.3; L2V4 Section 4.10.3; L2V5 Section 4.10.3.)
10705. The value of the sboTerm attribute on a AlgebraicRule, RateRule or AssignmentRule should be an SBO identifier referring to a mathematical expression. That is, the value should be a term derived from SBO:0000064, “mathematical expression”. (References: L2V2 Section 4.11.1; L2V3 Section 4.11.1; L2V4 Section 4.11.1; L2V5 Section 4.11.1.)
10706. The value of the sboTerm attribute on a Constraint should be an SBO identifier referring to a mathematical expression. That is, the value should be a term derived from SBO:0000064, “mathematical expression”. (References: L2V2 Section 4.12.3; L2V3 Section 4.12.3; L2V4 Section 4.12.3; L2V5 Section 4.12.3.)
10707. The value of the sboTerm attribute on a Reaction should be an SBO identifier referring to an interaction framework. That is, the value should be a term derived from SBO:0000231, “occurring entity representation”. (References: L2V2 Section 4.13.1; L2V3 Section 4.13.1; L2V4 Section 4.13.1; L2V5 Section 4.13.1.)
10708. The value of the sboTerm attribute on a SpeciesReference or a ModifierSpeciesReference should be an SBO identifier referring to a participant role. That is, the value should be a term derived from SBO:0000003, “participant role”. The appropriate term depends on whether the entity is a reactant, product or modifier. (References: L2V2 Section 4.13.2; L2V3 Sections 4.13.1 and 5; L2V4 Section 4.13.1 and 5; L2V5 Sections 4.13.1 and 5.)
10709. The value of the sboTerm attribute on a KineticLaw should be an SBO identifier referring to a rate law. That is, the value should be a term derived from SBO:0000001, “rate law”. (References: L2V2 Section 4.13.5; L2V3 Section 4.13.1; L2V4 Section 4.13.1; L2V5 Section 4.13.1.)
10710. The value of the sboTerm attribute on an Event should be an SBO identifier referring to a interaction framework. That is, the value should be a term derived from SBO:0000231, “occurring entity representation”. (References: L2V2 Section 4.14.1; L2V3 Section 4.14.1; L2V4 Section 4.14.1; L2V5 Section 4.14.1.)
10711. The value of the sboTerm attribute on an EventAssignment should be an SBO identifier referring to a mathematical expression. That is, the value should be a term derived from SBO:0000064, “mathematical expression”. (References: L2V2 Section 4.14.2; L2V3 Section 4.14.1; L2V4 Section 4.14.4; L2V5 Section 4.14.4.)
10712. The value of the sboTerm attribute on a Compartment should be an SBO identifier referring to a material entity. That is, the value should be a term derived from SBO:0000240, “material entity”. (References: L2V3 Section 5; L2V4 Section 5; L2V5 Section 5.)
10713. The value of the sboTerm attribute on a Species should be an SBO identifier referring to a material entity. That is, the value should be a term derived from SBO:0000240, “material entity”. (References: L2V3 Section 5; L2V4 Section 5; L2V5 Section 5.)
10714. The value of the sboTerm attribute on a CompartmentType should be an SBO identifier referring to a material entity. That is, the value should be a term derived from SBO:0000240, “material entity”. (References: L2V3 Section 5; L2V4 Section 5; L2V5 Section 5.)
10715. The value of the sboTerm attribute on a SpeciesType should be an SBO identifier referring to a material entity. That is, the value should be a term derived from SBO:0000240, “material entity”. (References: L2V3 Section 5; L2V4 Section 5; L2V5 Section 5.)
10716. The value of the sboTerm attribute on a Trigger should be an SBO identifier referring to a mathematical expression. That is, the value should be a term derived from SBO:0000064, “mathematical expression”. (References: L2V3 Section 5; L2V4 Section 5; L2V5 Section 5.)
10717. The value of the sboTerm attribute on a Delay should be an SBO identifier referring to a mathematical expression. That is, the value should be a term derived from SBO:0000064, “mathematical expression”. (References: L2V3 Section 5; L2V4 Section 5; L2V5 Section 5.)
General notes validation
10801. The contents of the notes element must be explicitly placed in the XHTML XML namespace. (References: L2V3 Section 3.2.3; L2V4 Section 3.2.3; L2V5 Section 3.2.3.)
10802. The contents of the notes element must not contain an XML declaration (i.e., a string of the form “ <?xml version=“1.0” encoding=“UTF-8”?>” or similar). (References: L2V2 Section 3.3.2; L2V3 Section 3.2.3; L2V4 Section 3.2.3; L2V5 Section 3.2.3.)
10803. The contents of the notes element must not contain an XML DOCTYPE declaration (i.e., a string beginning with the characters “ <!DOCTYPE”. (References: L2V2 Section 3.3.2; L2V3 Section 3.2.3; L2V4 Section 3.2.3; L2V5 Section 3.2.3.)
10804. The XHTML content inside a notes element can only take one of the following general forms: (1) a complete XHTML document beginning with the element <html> and ending with </html>; (2) the “body” portion of a document beginning with the element <body> and ending with </body>; or (3) XHTML content that is permitted within a <body> ... </body> elements. (References: L2V2 Section 3.3.2; L2V3 Section 3.2.3; L2V4 Section 3.2.3; L2V5 Section 3.2.3.)
SBML container validation
20101. The sbml container element must declare the XML Namespace for SBML, and this declaration must be consistent with the values of the level and version attributes on the sbml element. (References: L2V2 Section 4.1; L2V3 Section 4.1; L2V4 Section 4.1; L2V5 Section 4.1.)
20102. The sbml container element must declare the SBML Level using the attribute level, and this declaration must be consistent with the XML Namespace declared for the sbml element. (References: L2V2 Section 4.1; L2V3 Section 4.1; L2V4 Section 4.1; L2V5 Section 4.1.)
20103. The sbml container element must declare the SBML Version using the attribute version, and this declaration must be consistent with the XML Namespace declared for the sbml element. (References: L2V2 Section 4.1; L2V3 Section 4.1; L2V4 Section 4.1; L2V5 Section 4.1.)
Model validation
20201. An SBML document must contain a Model definition. (References: L2V1, L2V2, L2V3, L2V4 and L2V5 Section 4.1).
20202. The order of subelements within a Model object instance must be the following, with each element optional: listOfFunctionDefinitions, listOfUnitDefinitions, listOfCompartmentTypes, listOfSpeciesTypes, listOfCompartments, listOfSpecies, listOfParameters, listOfInitialAssignments, listOfRules, listOfConstraints, listOfReactions, listOfEvents. (References: L2V2 Section 4.2; L2V3 Section 4.2; L2V4 Section 4.2; L2V5 Section 4.2.)
20203. The listOf container elements in a Model instance are optional, but if present, the elements must not be empty. Specifically, if any of the following are present in a Model, they must not be empty: listOfFunctionDefinitions, listOfUnitDefinitions, listOfCompartmentTypes, listOfSpecies-Types, listOfCompartments, listOfSpecies, listOfParameters, listOfInitialAssignments, listOfRules, listOfConstraints, listOfReactions and listOfEvents. (References: This is requirement stemming from the XML Schema used for SBML; L2V3 Section 4.2; L2V4 Section 4.2; L2V5 Section 4.2.)
20204. If a model defines any Species, then the model must also define at least one Compartment. This is an implication of the fact that the compartment attribute on Species is not optional. (References: L2V1 Section 4.5; L2V2 Section 4.8.3; L2V3 Section 4.8.3; L2V4 Section 4.8.3; L2V5 Section 4.8.3.)
FunctionDefinition validation
20301. The top-level element within math in a FunctionDefinition must be one and only one MathML lambda element or a MathML semantics element containing one and only one lambda element. (References: L2V1 Section 4.3.2; L2V2 Section 4.3.2; L2V3 Section 4.3.2; L2V4 Section 4.3.2; L2V5 Section 4.3.2.)
20302. (Rule does not apply in SBML Level 2 Version 5.)
20303. Inside the lambda of a FunctionDefinition, the identifier of that FunctionDefinition cannot appear as the value of a ci element. SBML functions are not permitted to be recursive or mutually recursive. (References: L2V2 Section 3.5.3 and 4.3.2; L2V3 Sections 3.4.3 and 4.3.2; L2V4 Sections 3.4.3 and 4.3.2; L2V5 Sections 3.4.3 and 4.3.2.)
20304. Inside the lambda of a FunctionDefinition, if a ci element is not the first element within a MathML apply, then the ci’s value can only be an identifier provided as the value of a bvar element declared in that lambda. This restriction also applies to the csymbol for time and delay. In other words, all model quantities and variables referenced inside a function definition must be passed as arguments to that function. (References: L2V2 Section 3.5.3 and 4.3.2; L2V3 Section 3.5.3 and 4.3.2; L2V4 Section 3.4.3 and 4.3.2; L2V5 Sections 3.4.3 and 4.3.2.)
20305. The value type returned by a FunctionDefinition’s lambda must be either boolean or numerical. (References: L2V2 Section 3.5.8; L2V3 Section 3.4.9; L2V4 Section 3.4.9; L2V5 Section 3.4.10.)
Unit and UnitDefinition validation
20401. The value of the id attribute in a UnitDefinition must be of type UnitSId and not be identical to any unit predefined in SBML. That is, the identifier must not be the same as any of the following predefined units: “ ampere”, “ gram”, “ katal”, “ metre”, “ second”, “ watt”, “ becquerel”, “ gray”, “ kelvin”, “ mole”, “ siemens”, “ weber”, “ candela”, “ henry”, “ kilogram”, “ newton”, “ sievert”, “ coulomb”, “ hertz”, “ litre”, “ ohm”, “ steradian”, “ dimensionless”, “ item”, “ lumen”, “ pascal”, “ tesla”, “ farad”, “ joule”, “ lux”, “ radian”, or “ volt”. (References: L2V1 erratum 14; L2V2 Section 4.4.2; L2V3 Section 4.4.2; L2V4 Section 4.4.2; L2V5 Section 4.4.2.)
20402. Redefinitions of the predefined SBML unit substance must be based on the unit mole, item, gram, kilogram, or dimensionless. More formally, a UnitDefinition for substance must simplify to a single Unit in which either (a) the kind attribute has a value of “ mole”, “ item”, “ gram”, or “ kilogram”, and the exponent attribute has a value of “ 1”, or (b) the kind attribute has a value of “ dimensionless” with any exponent attribute value. (References: L2V1 Section 4.4.3; L2V2 Section 4.4.3; L2V3 Section 4.4.3; L2V4 Section 4.4.3; L2V5 Section 4.4.3.)
20403. Redefinitions of the predefined SBML unit length must be based on the unit metre or dimensionless. More formally, a UnitDefinition for length must simplify to a single Unit in which either (a) the kind attribute has a value of “ metre” and the exponent attribute has a value of “ 1”, or (b) the kind attribute has a value of “ dimensionless” with any exponent value. (References: L2V1 Section 4.4.3; L2V2 Section 4.4.3; L2V3 Section 4.4.3; L2V4 Section 4.4.3; L2V5 Section 4.4.3.)
20404. Redefinitions of the predefined SBML unit area must be based on squared metres or dimensionless. More formally, a UnitDefinition for area must simplify to a single Unit in which either (a) the kind attribute has a value of “ metre” and the exponent attribute has a value of “ 2”, or (b) the kind attribute has a value of “ dimensionless” with any exponent value. (References: L2V1 Section 4.4.3; L2V2 Section 4.4.3; L2V3 Section 4.4.3; L2V4 Section 4.4.3; L2V5 Section 4.4.3.)
20405. Redefinitions of the predefined SBML unit time must be based on the unit second. More formally, a UnitDefinition for time must simplify to a single Unit in which either (a) the kind attribute has a value of “ second” and the exponent attribute has a value of “ 1”, or (b) the kind attribute has a value of “ dimensionless” with any exponent value. (References: L2V1 Section 4.4.3; L2V2 Section 4.4.3; L2V3 Section 4.4.3; L2V4 Section 4.4.3; L2V5 Section 4.4.3.)
20406. Redefinitions of the predefined SBML unit volume must be based on litre, metre or dimensionless. More formally, a UnitDefinition for volume must simplify to a single Unit in which either (a) the kind attribute has a value of “ metre” and the exponent attribute has a value of “ 3”; (b) the kind attribute has a value of “ litre” and the exponent attribute has a value of “ 1”; or (c) the kind attribute has a value of “ dimensionless” with any exponent value. (References: L2V1 Section 4.4.3; L2V2 Section 4.4.3; L2V3 Section 4.4.3; L2V4 Section 4.4.3; L2V5 Section 4.4.3.)
20407. (Beginning in SBML Level 2 Version 4, this rule has been incorporated into 20406, to make validation rules 20402–20406 parallel and consistent.)
20408. (Beginning in SBML Level 2 Version 4, this rule has been incorporated into 20406, to make validation rules 20402–20406 parallel and consistent.)
20409. The listOfUnits container in a UnitDefinition cannot be empty. (References: L2V2 Section 4.4; L2V3 Section 4.4; L2V4 Section 4.4; L2V5 Section 4.4.)
20410. The value of the kind attribute of a Unit can only be one of the base units in SBML; that is, the SBML unit system is not hierarchical and user-defined units cannot be defined using other user-defined units. (References: L2V2 Section 4.4.1; L2V3 Section 4.4.2; L2V4 Section 4.4.2; L2V5 Section 4.4.2.) 20411. (Rule does not apply in SBML Level 2 Version 5.) 20412. (Rule does not apply in SBML Level 2 Version 5.)
Compartment validation
20501. The size of a Compartment must not be set if the compartment’s spatialDimensions attribute has value 0. (References: L2V1 Section 4.5.3; L2V2 Section 4.7.4; L2V3 Section 4.7.5; L2V4 Section 4.7.5; L2V5 Section 4.7.5.)
20502. If a Compartment definition has a spatialDimensions value of “ 0”, then its units attribute must not be set. If the compartment has no dimensions, then no units can be associated with a non-existent size. (References: L2V1 Section 4.5.4; L2V2 Section 4.7.5; L2V3 Section 4.7.5; L2V4 Section 4.7.5; L2V5 Section 4.7.5.)
20503. If a Compartment definition has a spatialDimensions value of “ 0”, then its constant attribute value must either default to or be set to “ true”. If the compartment has no dimensions, then its size can never change. (References: L2V1 Section 4.5.5; L2V2 Section 4.7.4; L2V3 Section 4.7.6; L2V4 Section 4.7.6; L2V5 Section 4.7.6.)
20504. The outside attribute value of a Compartment must be the identifier of another Compartment defined in the model. (References: L2V1 Section 4.5.6; L2V2 Section 4.7.7; L2V3 Section 4.7.7; L2V4 Section 4.7.7; L2V5 Section 4.7.7.)
20505. A Compartment may not enclose itself through a chain of references involving the outside attribute. This means that a compartment cannot have its own identifier as the value of outside, nor can it point to another compartment whose outside attribute points directly or indirectly to the compartment. (References: L2V1 erratum 11; L2V2 Section 4.7.7; L2V3 Section 4.7.7; L2V4 Section 4.7.7; L2V5 Section 4.7.7.)
20506. The outside attribute value of a given Compartment instance cannot be a compartment having a spatialDimensions value of “ 0”, unless both compartments have spatialDimensions=“ 0”. Simply put, a zero-dimensional compartment cannot enclose compartments that have anything other than zero dimensions themselves. (References: L2V2 Section 4.7.7; L2V3 Section 4.7.7; L2V4 Section 4.7.7; L2V5 Section 4.7.7.)
20507. The value of the units attribute on a Compartment having spatialDimensions of “ 1” must be either “ length”, “ metre”, “ dimensionless”, or the identifier of a UnitDefinition based on either metre (with exponent equal to “ 1”) or dimensionless. (References: L2V1 Section 4.5.4; L2V2 Section 4.7.5; L2V3 Section 4.7.5; L2V4 Section 4.7.5; L2V5 Section 4.7.5.)
20508. The value of the units attribute on a Compartment having spatialDimensions of “ 2” must be either “ area”, “ dimensionless”, or the identifier of a UnitDefinition based on either metre (with exponent equal to “ 2”) or dimensionless. (References: L2V1 Section 4.5.4; L2V2 Section 4.7.5; L2V3 Section 4.7.5; L2V4 Section 4.7.5; L2V5 Section 4.7.5.)
20509. The value of the units attribute on a Compartment having spatialDimensions of “ 3” must be either “ volume”, “ litre”, or the identifier of a UnitDefinition based on either litre, metre (with exponent equal to “ 3”), or dimensionless. (References: L2V1 Section 4.5.4; L2V2 Section 4.7.5; L2V3 Section 4.7.5; L2V4 Section 4.7.5; L2V5 Section 4.7.5.)
20510. If the compartmentType attribute is given a value in a Compartment definition, it must contain the identifier of an existing CompartmentType defined in the model. (References: L2V2 Section 4.7.2; L2V3 Section 4.7.2; L2V4 Section 4.7.2; L2V5 Section 4.7.2.)
Species validation
20601. The value of compartment in a Species definition must be the identifier of an existing Compartment defined in the model. (References: L2V1 Section 4.6.2; L2V2 Section 4.8.3; L2V3 Section 4.8.3; L2V4 Section 4.8.3; L2V5 Section 4.8.3.)
20602. (Rule does not apply in SBML Level 2 Version 5.)
20603. (Rule does not apply in SBML Level 2 Version 5.)
20604. If a Species located in a Compartment whose spatialDimensions is set to “ 0”, then that Species definition cannot set initialConcentration. (References: L2V1 Section 4.6.3; L2V2 Section 4.8.4; L2V3 Section 4.8.4; L2V4 Section 4.8.4; L2V5 Section 4.8.4.)
20605. (Rule does not apply in SBML Level 2 Version 5.) 20606. (Rule does not apply in SBML Level 2 Version 5.) 20607. (Rule does not apply in SBML Level 2 Version 5.)
20608. The value of a Species’s substanceUnits attribute can only be one of the following: “ substance”, “ mole”, “ item”, “ gram”, “ kilogram”, “ dimensionless”, or the identifier of a UnitDefinition derived from “ mole” (with an exponent of “ 1”), “ item” (with an exponent of “ 1”), “ gram” (with an exponent of “ 1”), “ kilogram” (with an exponent of “ 1”), or “ dimensionless”. (References: L2V1 Section 4.6.4; L2V2 Section 4.8.5; L2V3 Section 4.8.5; L2V4 Section 4.8.5; L2V5 Section 4.8.5.)
20609. A Species cannot set values for both initialConcentration and initialAmount because they are mutually exclusive. (References: L2V1 Section 4.6.3; L2V2 Section 4.8.4; L2V3 Section 4.8.4; L2V4 Section 4.8.4; L2V5 Section 4.8.4.)
20610. A Species’ quantity cannot be determined simultaneously by both reactions and rules. More formally, if the identifier of a Species definition having boundaryCondition=“ false” and constant=“ false” is referenced by a SpeciesReference anywhere in a model, then this identifier cannot also appear as the value of a variable in an AssignmentRule or a RateRule. (References: L2V1 Section 4.6.5; L2V2 Section 4.8.6; L2V3 Section 4.8.6; L2V4 Section 4.8.6; L2V5 Section 4.8.6.)
20611. A Species having boundaryCondition=“ false” cannot appear as a reactant or product in any reaction if that Species also has constant=“ true”. (References: L2V1 Section 4.6.5; L2V2 Section 4.8.6; L2V3 Section 4.8.6; L2V4 Section 4.8.6; L2V5 Section 4.8.6.)
20612. The value of speciesType in a Species definition must be the identifier of an existing SpeciesType. (References: L2V2 Section 4.8.2; L2V3 Section 4.8.2; L2V4 Section 4.8.2; L2V5 Section 4.8.2.)
20613. There cannot be more than one species of a given SpeciesType in the same compartment of a model. More formally, for any given compartment, there cannot be more than one Species definition in which both of the following hold simultaneously: (i) the Speciescompartment value is set to that compartment’s identifier and (ii) the SpeciesspeciesType is set the same value as the speciesType of another Species that also sets its compartment to that compartment identifier. (References: L2V2 Section 4.8.2; L2V3 Section 4.8.2; L2V4 Section 4.8.2; L2V5 Section 4.8.2.)
20614. The compartment attribute in a Species is mandatory. A species definition in a model must include a value for this attribute. (References: L2V2 Section 4.8.3; L2V3 Section 4.8.3; L2V4 Section 4.8.3; L2V5 Section 4.8.3.)
Parameter validation
20701. The units in a Parameter definition must be a value chosen from among the following: a predefined unit (e.g., “ substance”, “ time”, etc.), the identifier of a UnitDefinition in the model, or one of the base units in SBML (e.g., “ litre”, “ mole”, “ metre”, etc.). (References: L2V1 Section 4.7.3; L2V2 Section 4.9.3; L2V3 Section 4.9.3; L2V4 Section 4.9.3; L2V5 Section 4.9.3.)
InitialAssignment validation
20801. The value of symbol in an InitialAssignment definition must be the identifier of an existing Compartment, Species, or Parameter defined in the model. (References: L2V2 Section 4.10.1; L2V3 Section 4.10; L2V4 Section 4.10; L2V5 Section 4.10.)
20802. A given identifier cannot appear as the value of more than one InitialAssignment’s symbol attribute across the set of all InitialAssignments in a model. (References: L2V2 Section 4.10; L2V3 Section 4.10; L2V4 Section 4.10; L2V5 Section 4.10.)
20803. The identifier given as the value of a symbol attribute in any InitialAssignment definition cannot also appear as the value of the variable attribute in an AssignmentRule. In other words, a model cannot simultaneously define both an initial assignment and an assignment rule for the same species, compartment or parameter in a model. (References: L2V2 Section 4.10.4; L2V3 Section 4.10; L2V4 Section 4.10; L2V5 Section 4.10.)
20806. The identifier given as the value of a symbol attribute in any InitialAssignment definition cannot be the identifier of a Compartment with a spatialDimensions value of “ 0”. (References: L2V5 Section 4.7.)
AssignmentRule and RateRule validation
20901. The value of an AssignmentRule’s variable must be the identifier of an existing Compartment, Species, or globally-defined Parameter. (References: L2V1 Section 4.8.2; L2V2 Section 4.11.3; L2V3 Section 4.11.3; L2V4 Section 4.11.3; L2V5 Section 4.11.3.)
20902. The value of a RateRule’s variable must be the identifier of an existing Compartment, Species, or globally-defined Parameter. (References: L2V1 Section 4.8.3; L2V2 Section 4.11.4; L2V3 Section 4.11.4; L2V4 Section 4.11.4; L2V5 Section 4.11.4.)
20903. Any Compartment, Species or Parameter whose identifier is the value of a variable attribute in an AssignmentRule, must have a value of “ false” for constant. (References: L2V1 Section 4.8.4; L2V2 Section 4.11.3; L2V3 Section 4.11.3; L2V4 Section 4.11.3; L2V5 Section 4.11.3.)
20904. Any Compartment, Species or Parameter whose identifier is the value of a variable attribute in a RateRule, must have a value of “ false” for constant. (References: L2V1 Section 4.8.4; L2V2 Section 4.11.4; L2V3 Section 4.11.4; L2V4 Section 4.11.4; L2V5 Section 4.11.4.)
20905. (Rule removed because it was effectively a duplicate of 10304.)
20906. There must not be circular dependencies in the combined set of InitialAssignment, AssignmentRule and KineticLaw definitions in a model. Each of these constructs has the effect of assigning a value to an identifier (i.e., the identifier given in the attribute symbol in InitialAssignment, the attribute variable in AssignmentRule, and the attribute id on the KineticLaw’s enclosing Reaction). Each of these constructs computes the value using a mathematical formula. The formula for a given identifier cannot make reference to a second identifier whose own definition depends directly or indirectly on the first identifier. (References: L2V2 Section 4.11.5; L2V3 Section 4.11.5; L2V4 Section 4.11.5; L2V5 Section 4.11.5.)
20911. The value of a RateRule or AssignmentRule’s variable attribute must not be the identifier of a Compartment with a spatialDimensions value of “ 0”. (References: L2V5 Section 4.11.5.)
Constraint validation
21001. A Constraint math expression must evaluate to a value of type boolean. (References: L2V2 Section 4.12.1; L2V3 Section 4.12; L2V4 Section 4.12; L2V5 Section 4.12.)
21002. The order of subelements within Constraint must be the following: math, message. The message element is optional, but if present, must follow the math element. (References: L2V2 Section 4.12; L2V3 Section 4.12; L2V4 Section 4.12; L2V5 Section 4.12.)
21003. The contents of the message element in a Constraint must be explicitly placed in the XHTML XML namespace. (References: L2V3 Section 4.12.2; L2V4 Section 4.12.2; L2V5 Section 4.12.2.)
21004. The contents of the message element must not contain an XML declaration (i.e., a string of the form “ <?xml version=“1.0” encoding=“UTF-8”?>” or similar). (References: L2V3 Section 4.12.2; L2V4 Section 4.12.2; L2V5 Section 4.12.2.)
21005. The contents of the message element must not contain an XML DOCTYPE declaration (i.e., a string beginning with the characters “ <!DOCTYPE”. (References: L2V3 Section 4.12.2; L2V4 Section 4.12.2; L2V5 Section 4.12.2.)
21006. The XHTML content inside a Constraint’s message element can only take one of the following general forms: (1) a complete XHTML document beginning with the element <html> and ending with </xhtml>; (2) the “body” portion of a document beginning with the element <body> and ending with </body>; or (3) XHTML content that is permitted within a <body> ... </body> elements. (References: L2V3 Section 4.12.2; L2V4 Section 4.12.2; L2V5 Section 4.12.2.)
Reaction validation
21101. A Reaction definition must contain at least one SpeciesReference, either in its listOfReactants or its listOfProducts. A reaction without any reactant or product species is not permitted, regardless of whether the reaction has any modifier species. (References: L2V2 Section 4.13.1; L2V3 Section 4.13.3; L2V4 Section 4.13.3; L2V5 Section 4.13.3.)
21102. The order of subelements within Reaction must be the following (where every one is optional): listOfReactants, listOfProducts, listOfModifiers, kineticLaw. (References: L2V2 Section 4.13; L2V3 Section 4.13; L2V4 Section 4.13; L2V5 Section 4.13.)
21103. The following containers are all optional in a Reaction, but if any is present, it must not be empty: listOfReactants, listOfProducts, listOfModifiers, kineticLaw. (References: L2V2 Section 4.13; L2V3 Section 4.13; L2V4 Section 4.13; L2V5 Section 4.13.)
21104. The list of reactants ( listOfReactants) and list of products ( listOfProducts) in a Reaction can only contain speciesReference elements. (References: L2V1 Section 4.9; L2V2 Section 4.13; L2V3 Section 4.13; L2V4 Section 4.13; L2V5 Section 4.13.)
21105. The list of modifiers ( listOfModifiers) in a Reaction can only contain modifierSpeciesReference elements. (References: L2V1 Section 4.9; L2V2 Section 4.13; L2V3 Section 4.13; L2V4 Section 4.13; L2V5 Section 4.13.)
SpeciesReference and ModifierSpeciesReference validation
21111. The value of a SpeciesReference species attribute must be the identifier of an existing Species in the model. (References: L2V1 Section 4.9.5; L2V2 Section 4.13.2; L2V3 Section 4.13.3; L2V4 Section 4.13.3; L2V5 Section 4.13.3.)
21112. (Rule removed because it was effectively a duplicate of 20611.)
21113. A SpeciesReference must not have a value for both stoichiometry and stoichiometryMath; they are mutually exclusive. (References: L2V1 Section 4.9.5; L2V2 Section 4.13.3; L2V3 Section 4.13.3; L2V4 Section 4.13.3; L2V5 Section 4.13.3.)
KineticLaw validation
21121. All species referenced in the KineticLaw formula of a given reaction must first be declared using SpeciesReference or ModifierSpeciesReference. More formally, if a Species identifier appears in a ci element of a Reaction’s KineticLaw formula, that same identifier must also appear in at least one SpeciesReference or ModifierSpeciesReference in the Reaction definition. (References: L2V2 Section 4.13.5; L2V3 Section 4.13.5; L2V4 Section 4.13.5; L2V5 Section 4.13.5.)
21122. The order of subelements within KineticLaw must be the following: math, listOfParameters. The listOfParameters is optional, but if present, must follow math. (References: L2V2 Section 4.13.5; L2V3 Section 4.13.5; L2V4 Section 4.13.5; L2V5 Section 4.13.5.)
21123. If present, the listOfParameters in a KineticLaw must not be an empty list. (References: L2V2 Section 4.13.5; L2V3 Section 4.13; L2V4 Section 4.13; L2V5 Section 4.13.)
21124. The constant attribute on a Parameter local to a KineticLaw cannot have a value other than “ true”. The values of parameters local to KineticLaw definitions cannot be changed, and therefore they are always constant. (References: L2V2 Section 4.9.4; L2V3 Section 4.9.4; L2V4 Section 4.9.4; L2V5 Section 4.9.4.)
21125. (Rule does not apply in SBML Level 2 Version 5.)
21126. (Rule does not apply in SBML Level 2 Version 5.)
StoichiometryMath validation
21131. All species referenced in the StoichiometryMath formula of a given reaction must first be declared using SpeciesReference or ModifierSpeciesReference. More formally, if a Species identifier appears in a ci element of a Reaction’s StoichiometryMath formula, that same identifier must also appear in at least one SpeciesReference or ModifierSpeciesReference in the Reaction definition. (References: L2V2 Sections 4.13.2 and 4.13.4; L2V3 Sections 4.13.2 and 4.13.4; L2V4 Sections 4.13.2 and 4.13.4; L2V5 Sections 4.13.2 and 4.13.4.)
Event validation
21201. An Event object must have a trigger. (References: L2V1 Section 4.10.2; L2V2 Section 4.14.1; L2V3 Section 4.14.2; L2V4 Section 4.14.2; L2V5 Section 4.14.2.)
21202. An Event trigger expression must evaluate to a value of type boolean. (References: L2V1 Section 4.10.2; L2V2 Section 4.14.1; L2V3 Section 4.14.2; L2V4 Section 4.14.2; L2V5 Section 4.14.2.)
21203. An Event object must have at least one EventAssignment object in its listOfEventAssignments. (References: L2V1 Section 4.10.5; L2V2 Section 4.14; L2V3 Section 4.14; L2V4 Section 4.14; L2V5 Section 4.14.)
21204. (Rule does not apply in SBML Level 2 Version 5.)
21205. The order of subelements within an Event object instance must be the following: trigger, delay, listOfEventAssignments. The delay element is optional, but if present, must follow trigger. (References: L2V2 Section 4.14; L2V3 Section 4.14; L2V4 Section 4.14; L2V5 Section 4.14.)
21206. If an Event’s useValuesFromTriggerTime attribute has the value “ false”, then the Event must contain a Delay element. The implication of useValuesFromTriggerTime=“ false” is that there is a delay between the time of trigger and the time of value assignments performed by the Event. (References: L2V4 Section 4.14; L2V5 Section 4.14.)
EventAssignment validation
21211. The value of variable in an EventAssignment can only be the identifier of a Compartment, Species, or model-wide Parameter definition. (References: L2V1 Section 4.10.5; L2V2 Section 4.14.2; L2V3 Section 4.14.4; L2V4 Section 4.14.4; L2V5 Section 4.14.4.)
21212. Any Compartment, Species or Parameter definition whose identifier is used as the value of variable in an EventAssignment must have a value of “ false” for its constant attribute. (References: L2V1 Section 4.10.5; L2V2 Section 4.14.2; L2V3 Section 4.14.4; L2V4 Section 4.14.4; L2V5 Section 4.14.4.)