I've been dealing with namespace issues in writing the comp spec, and I came across a potential issue. It is unclear (to me, at least) from sections 3.1.10 and 3.3.1 whether you are allowed to define a UnitDefinition with the same id as one of the predefined units from table 2 (ampere, avogadro, becquerel, etc.)
3.1.10 reads:
Type UnitSIdRef is used for all attributes that refer to identifiers of type UnitSId, which are the identifiers of units in SBML objects. This type is derived from UnitSId, but with the restriction that the value of an attribute having type UnitSIdRef must match either the value of a UnitSId attribute in the model, or one of the base units in Table 2.
3.3.1 reads (in part):
The identifier of every UnitDefinition must be unique across the set of all such identifiers in the model.
If this is illegal, I think we should change 3.3.1 to read something like, "The identifier of every UnitDefinition must be unique across the set of all such identifiers in the model plus the set of base unit definitions in Table 2".
If this is legal, I think we should change section 3.1.10 to say that (presumably) the model-defined unit takes precedence when there is a conflict.
If we have not decided whether this is legal or illegal, I vote 'illegal' (and that we change 3.3.1).
I am accepting this issue as valid.
This was always meant to be illegal.
I vote illegal and accept as valid.
I am accepting this issue as valid.
Definitely illegal :-)
I am accepting this issue as valid.
(this also affects validation rule 10302)
Moving his to status 'Pending' and adding it to the list of known errata at http://sbml.org/Documents/Specifications/SBML_Level_3/Version_1/Core/Confirmed_issues_in_the_Level_3_Version_1_Core_Specification
Adding L2v4 to this item, as the same text exists there.
Fixed in SVN for L2v5 and L3v2, and will be part of the forthcoming release of those specifications.