-
Notifications
You must be signed in to change notification settings - Fork 8
Description
Hi all!
Problem
In recent work on chapter 3, we've started mixing talk of syntax and XML items with talk of conceptual items i.e. the thing a CellML model represents.
It's visible most clearly when we talk about references. A reference is said in many places to be to e.g. "a units
element" (which is an XML info item!), rather than to the conceptual unit it represents. This makes all the language really weird and convoluted, and turns chapter 3 into a second chapter on syntax (which was what chapter 2 was supposed to be).
(It also creates issues, because there is no units
element for a built-in unit, and recursive imports are then to a units
element in some arbitrarily deeply nested infoset. If we allow the imports to just create new conceptual units we never need to talk more than one layer deep in the spec. See #208)
In sections like 3.9 and 3.10 we do it much better, and say things like
For a given variable, the available interfaces SHALL be determined by the interface attribute information item on the corresponding variable element as follows.
Solution
I think we can fix this quite easily, by
- re-ordering chapter 3 a bit, so that we have the space to say things like "a model element defines a model", "a variable element defines a variable", before we get into e.g. encapsulation and imports
- re-writing parts of chapter 3, without changing its meaning
It's a bit of work, but it would ensure the spec says what we intend it to say. It wouldn't actually change its (intended) meaning (just its actual meaning).
Alternative?
The alternative is to do this later, in some kind of CellML 2.0.1. This would be really annoying as this second spec wouldn't actually introduce or remove anything from the language, it would just describe it better.