Why don SBML Level 2 and Level 3 define a default compartment?
Software developers are sometimes bother by the fact that SBML does not specify a default compartment; all compartments in SBML must be defined explicitly. There are several reasons for this: • A model that uses a single unit-volume compartment is making explicit an important underlying assumption about the model. Leaving it implicit (as was possible in Level 1) was more prone to errors in the construction of models. • SBML would have to define a reserved identifier to refer to the default compartment. This is a recipe for an eventual identifier collision when someone, somewhere, accidentally uses the same identifier. • A default compartment would only save effort in developing the SBML writing component of a software tool. The writing component is the easy part; reading and interpreting is the harder part. Defining a default compartment would not help readers much, if at all. • A default compartment would be a special case which all SBML parsing programs would have to handle specially