INCF/nineml-spec

Using Reference instead of Definition and Prototype elements

tclose opened this issue · 0 comments

In coming up with a name for the element to reference the Structure and Property Layers from the State Layer analogous to Definition in the Structure Layer (I was thinking of things like Instance), I thought that perhaps we could simplify it to just use Reference for any sort of reference to another object and drop the Definition and Prototype elements. e.g.

<DynamicsProperties name="IzhikevichBursting">
  <Reference url="http://nineml.net/catalog/2.0/izhikevich2003.xml">Izhikevich2003</Reference>
  ...
</DynamicsProperties>

since it doesn't really matter at this stage whether Izhikevich2003 is an abstraction layer Dynamics definition or another DynamicsProperties object. It could also simplify the parsing a little I think if you only have one lookup mechanism to handle.

One side effect of this would also open up the possibility of nesting abstraction layer definitions inside Structure/Property Layer objects e.g.

<DynamicsProperties name="IzhikevichBursting">
  <Dynamics>
    <Parameter name="a" dimension="voltage"/>
    ...
  </Dynamics>
  ...
</DynamicsProperties>

although I am not sure whether this is desirable or not.

Finally, in a small stylistic change (that I can take or leave) I was thinking that instead of referring to the name of the object in the body of the Reference element, it would fit better with non-XML representations that don't have a concept of a body to move the name to an attribute of the reference, e.g.

<Reference name="Izhikevich2003" url="http://nineml.net/catalog/2.0/izhikevich2003.xml"/>