Canonical form
The present proposal is not a canonical form for a model. Rather, it is a concise human accessible format that is intended to have a 1-1 mapping to some canonical form. The reason for defining the human accessible one first is that it is easier to work with. As long as the mapping is easily applied and lossless, then there is little reason ever to look at models expressed in the canonical form. Indeed, provided it is genuineley lossless, then it doesn't much matter which form of a model is treated as the primary version, although it seems more likely that other tools will support the canonical form than the human readable one.
Turning a model specification into its canonical form involves:
- Parsing expressions and writing out MathML
- Converting quantities to their SI values and putting the original units in metadata elements (the canonical form has dimensions but no units)
- Using the "Component type='xyz'" format for model elements
The interpreter should be able to do this at some stage, but it doesn't yet. Ideally, the conversion should be implemented in XSL too since that is probably the simplest dependency for other systems to swallow. An XSL mapping to a canonical form would also provide a working reference as to what that form actually is until, and possibly even after, the documentation caught up.