|
Converting the file: MorphML_v1.6.xsd
<?xml version="1.0" encoding="UTF-8"?>
<rng:grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns="http://morphml.org/morphml/schema" xmlns:meta="http://morphml.org/metadata/schema" ns="http://morphml.org/morphml/schema" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<!--
This file specifies the main NeuroML Level 1 v1.6 elements
Authors: Sharon Crook, Joe Svitak, Padraig Gleeson and members of the NeuroML initiative
-->
<rng:include href="../Level1/Metadata_v1.6.rng" ns="http://morphml.org/metadata/schema"/>
<!-- Definition of Morphology follows. -->
<rng:define combine="choice" name="Morphology">
<a:documentation>
The main element which details the neuronal morphology. Cells, various histological features, and
properties associated with the data can be contained in this element
</a:documentation>
<rng:ref name="metadata"/>
<rng:element name="cells">
<rng:ref name="Cells"/>
</rng:element>
<rng:optional>
<rng:element name="features">
<a:documentation>
Collection of all extracellular histological features.
</a:documentation>
<rng:ref name="metadata"/>
<rng:oneOrMore>
<rng:element name="feature">
<rng:ref name="Feature"/>
<a:documentation>
A single feature of note.
</a:documentation>
</rng:element>
</rng:oneOrMore>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="propertyDetails">
<a:documentation>
Collection of all PropertyDetails for this instance.
</a:documentation>
<rng:oneOrMore>
<rng:element name="propertyDetail">
<rng:ref name="PropertyDetail"/>
</rng:element>
</rng:oneOrMore>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="groupDetails">
<a:documentation>
Collection of all GroupDetails for this instance.
</a:documentation>
<rng:oneOrMore>
<rng:element name="groupDetail">
<rng:ref name="GroupDetail"/>
</rng:element>
</rng:oneOrMore>
</rng:element>
</rng:optional>
<rng:optional>
<rng:attribute name="name">
<rng:data type="string">
<a:documentation>
An optional name which can be given to the morphology
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:attribute name="lengthUnits">
<rng:ref name="LengthUnits"/>
<a:documentation>
Unit of all length measurements. Usually has the value <b>micron</b>
</a:documentation>
</rng:attribute>
<rng:optional>
<a:documentation>
default value is : cubic_millimetre</a:documentation>
<rng:attribute name="volumeUnits">
<rng:ref name="VolumeUnits"/>
<a:documentation>
Unit of all volume measurements.
</a:documentation>
</rng:attribute>
</rng:optional>
</rng:define>
<!-- Definition of Cells follows. -->
<rng:define combine="choice" name="Cells">
<a:documentation>
Collection of all cells.
</a:documentation>
<rng:oneOrMore>
<rng:element name="cell">
<rng:ref name="Cell"/>
<a:documentation>
A single cell.
</a:documentation>
</rng:element>
</rng:oneOrMore>
</rng:define>
<!-- Definition of Cell follows. -->
<rng:define combine="choice" name="Cell">
<a:documentation>
Definition of a cell.
</a:documentation>
<rng:ref name="metadata"/>
<rng:ref name="referencedata"/> <!-- ppppp one recent change...-->
<rng:optional>
<rng:element name="cellBody">
<a:documentation>
Used for anatomical representation of the soma. Use a Segment with equivalent properties to retain connectivity of branches to the soma for downstream applications (e.g. neuronal simulators).
</a:documentation>
<rng:ref name="metadata"/>
<rng:choice>
<rng:element name="polygon">
<rng:ref name="Polygon"/>
</rng:element>
<rng:element name="polyhedron">
<rng:ref name="Polyhedron"/>
</rng:element>
<rng:element name="sphere">
<rng:ref name="Sphere"/>
</rng:element>
</rng:choice>
</rng:element>
</rng:optional>
<rng:zeroOrMore>
<rng:element name="segments">
<a:documentation>
A segment defines the smallest unit within a possibly branching structure, such as a dendrite or axon. The first segment should represent the soma, if needed for downstream applications.
</a:documentation>
<rng:ref name="metadata"/>
<rng:oneOrMore>
<rng:element name="segment">
<rng:ref name="Segment"/>
</rng:element>
</rng:oneOrMore>
<rng:optional>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:optional>
</rng:element>
</rng:zeroOrMore>
<rng:optional>
<rng:element name="freePoints">
<rng:ref name="FreePoints"/>
<a:documentation>
The collection of varicosities or synaptic connections.
</a:documentation>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="spines">
<a:documentation>
The collection of spines.
</a:documentation>
<rng:ref name="metadata"/>
<rng:oneOrMore>
<rng:element name="spine">
<rng:ref name="Spine"/>
</rng:element>
</rng:oneOrMore>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="cables">
<a:documentation>
The collection of cables. Each cable will be associated with a number of connected segments.
</a:documentation>
<rng:ref name="metadata"/>
<rng:oneOrMore>
<rng:element name="cable">
<rng:ref name="Cable"/>
</rng:element>
</rng:oneOrMore>
<rng:zeroOrMore>
<rng:element name="cablegroup">
<rng:ref name="CableGroup"/>
</rng:element>
</rng:zeroOrMore>
</rng:element>
</rng:optional>
<rng:optional>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:optional>
</rng:define>
<!-- Definition of Segment follows. -->
<rng:define combine="choice" name="Segment">
<a:documentation>
Defines the smallest unit within a possibly branching structure, such as a dendrite or axon. The parent attribute is used to define connectivity. A segment would be mapped to a compartment in a compartmental modelling application such as GENESIS
</a:documentation>
<rng:optional>
<rng:element name="proximal">
<rng:ref name="Point"/>
<a:documentation>
The start point (and diameter) of the segment. If absent, it is assumed that the distal point of the parent is the start point of this segment.
</a:documentation>
</rng:element>
</rng:optional>
<rng:element name="distal">
<rng:ref name="Point"/>
<a:documentation>
The end point (and diameter) of the segment. Note if the 3D location of the distal point is the same as the proximal point, the segment is assumed to be spherical.
</a:documentation>
</rng:element>
<rng:optional>
<rng:element name="properties">
<rng:ref name="Properties"/>
<a:documentation>
Some optional properties associated with the segment.
</a:documentation>
</rng:element>
</rng:optional>
<rng:attribute name="id">
<rng:ref name="SegmentIdInCell"/>
<a:documentation>
The ID of the segment, which should be unique within the cell.
</a:documentation>
</rng:attribute>
<rng:optional>
<rng:attribute name="name">
<rng:data type="string">
<a:documentation>
As many simulators use a string to identify the compartments, etc. a unique name can be given to the segment.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="parent">
<rng:ref name="SegmentIdInCell"/>
<a:documentation>
Used to indicate logical connectivity between segments. Note that there is no requirement that the end point of this parent segment is equal to the start point of this segment.
</a:documentation>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="cable">
<rng:data type="nonNegativeInteger">
<a:documentation>
The cable ID of which this segment is part. Numerous segments will make up one cable, and it is assumed these are connected electrically.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
</rng:define>
<rng:define combine="choice" name="SegmentIdInCell">
<a:documentation>
Id of individual segment in a cell
</a:documentation>
<rng:data type="nonNegativeInteger">
</rng:data>
</rng:define>
<!-- Definition of Cable follows. -->
<rng:define combine="choice" name="Cable">
<a:documentation>
Definition of a cable. A cable is a non-branching group of connected segments. A cable would be mapped to a section in a cable modelling based simulator such as NEURON
</a:documentation>
<rng:ref name="metadata"/>
<rng:attribute name="id">
<rng:data type="nonNegativeInteger">
<a:documentation>
ID of the cable, unique within this cell
</a:documentation>
</rng:data>
</rng:attribute>
<rng:optional>
<rng:attribute name="name">
<rng:data type="string">
<a:documentation>
As many simulators use a string to identify the sections, etc. a unique name can be given to the segment.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="parent">
<rng:data type="nonNegativeInteger">
<a:documentation>
A cable ID. A way to connect cables logically.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="fractAlongParent">
<rng:ref name="ZeroToOne"/>
<a:documentation>
Approximate location of this group's proximal point along the parent cable.
</a:documentation>
</rng:attribute>
</rng:optional>
</rng:define>
<!-- Definition of Sphere follows. -->
<!-- Definition of CableGroup follows. -->
<rng:define combine="choice" name="CableGroup">
<a:documentation>
Definition of a cable group. Cable groups can also be specified by adding an element group to the cable element
</a:documentation>
<rng:oneOrMore>
<rng:element name="cable">
<a:documentation>
The id of a single cable in the group
</a:documentation>
<rng:attribute name="id">
<rng:data type="nonNegativeInteger"/>
</rng:attribute>
</rng:element>
</rng:oneOrMore>
<rng:zeroOrMore>
<rng:element name="inhomogeneous_param">
<rng:ref name="InhomogeneousParam"/>
</rng:element>
</rng:zeroOrMore>
<rng:attribute name="name">
<rng:data type="string">
<a:documentation>
Name of the cable group
</a:documentation>
</rng:data>
</rng:attribute>
</rng:define>
<!-- Definition of InhomogeneousParam follows. -->
<rng:define combine="choice" name="InhomogeneousParam">
<a:documentation>
Definition of a parameter which varies along a cable group.
</a:documentation>
<rng:element name="metric">
<a:documentation>
The metric used to determine the variable
</a:documentation>
<rng:choice>
<rng:value>Path Length from root</rng:value>
<rng:value>3D radial position</rng:value>
<rng:value>3D path length from line</rng:value>
</rng:choice>
</rng:element>
<rng:optional>
<rng:element name="proximal">
<a:documentation>
Information on the value of the variable at the proximal point
</a:documentation>
<rng:attribute name="translationStart">
<rng:data type="double">
<a:documentation>
If absent, the value of the variable is determined simply from the metric,
e.g. absolute path length, or if present the variable is translated to this value at the proximal point
</a:documentation>
</rng:data>
</rng:attribute>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="distal">
<a:documentation>
Information on the value of the variable at the distal point
</a:documentation>
<rng:attribute name="normalizationEnd">
<rng:data type="double">
<a:documentation>
If absent, the value of the variable is determined simply from the metric,
e.g. path length, or if present the variable is normalised so that it has this value at the distal point
</a:documentation>
</rng:data>
</rng:attribute>
</rng:element>
</rng:optional>
<rng:attribute name="name">
<rng:data type="string">
<a:documentation>
Name of the inhomogeneous parameter specification
</a:documentation>
</rng:data>
</rng:attribute>
<rng:attribute name="variable">
<rng:data type="string">
<a:documentation>
Name of the variable which will change over the length
</a:documentation>
</rng:data>
</rng:attribute>
</rng:define>
<!-- Definition of SpineShape follows. -->
<rng:define combine="choice" name="SpineShape">
<a:documentation>
Enumeration of allowed spine shapes.
</a:documentation>
<rng:choice>
<rng:value>mushroom</rng:value>
<rng:value>stubby</rng:value>
<rng:value>thin</rng:value>
</rng:choice>
</rng:define>
<!-- Definition of Spine follows. -->
<rng:define combine="choice" name="Spine">
<a:documentation>
A spine with location, shape, and direction.
</a:documentation>
<rng:element name="proximal">
<rng:ref name="Point"/>
</rng:element>
<rng:optional>
<rng:element name="distal">
<rng:ref name="Point"/>
</rng:element>
</rng:optional>
<rng:optional>
<rng:attribute name="parent">
<rng:ref name="SegmentIdInCell"/>
<a:documentation>
The segment with which this spine is associated.
</a:documentation>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="length">
<rng:data type="double"/>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="volume">
<rng:data type="double"/>
</rng:attribute>
</rng:optional>
<rng:optional>
<rng:attribute name="shape">
<rng:ref name="SpineShape"/>
</rng:attribute>
</rng:optional>
</rng:define>
<!-- Definition of FreePoints follows. -->
<rng:define combine="choice" name="FreePoints">
<a:documentation>
A set of varicosities or synaptic connections.
</a:documentation>
<rng:ref name="Points"/>
</rng:define>
<!-- Definition of Path follows. -->
<rng:define combine="choice" name="Path">
<a:documentation>
Possibly branching histological structures.
</a:documentation>
<rng:ref name="Points"/>
<rng:attribute name="id">
<rng:data type="nonNegativeInteger"/>
</rng:attribute>
<rng:optional>
<rng:attribute name="parent">
<rng:data type="nonNegativeInteger">
<a:documentation>
A path id. A way to connect this path to another.
</a:documentation>
</rng:data>
</rng:attribute>
</rng:optional>
</rng:define>
<!-- Definition of Feature follows. -->
<rng:define combine="choice" name="Feature">
<a:documentation>
The group of things allowed in features.
</a:documentation>
<rng:ref name="metadata"/>
<rng:zeroOrMore>
<rng:element name="path">
<rng:ref name="Path"/>
</rng:element>
</rng:zeroOrMore>
<rng:zeroOrMore>
<rng:element name="freePoints">
<rng:ref name="FreePoints"/>
</rng:element>
</rng:zeroOrMore>
<rng:zeroOrMore>
<rng:element name="manifold">
<rng:ref name="Manifold"/>
</rng:element>
</rng:zeroOrMore>
<rng:zeroOrMore>
<rng:element name="polygon">
<rng:ref name="Polygon"/>
</rng:element>
</rng:zeroOrMore>
<rng:zeroOrMore>
<rng:element name="polyhedron">
<rng:ref name="Polyhedron"/>
</rng:element>
</rng:zeroOrMore>
<rng:zeroOrMore>
<rng:element name="sphere">
<rng:ref name="Sphere"/>
</rng:element>
</rng:zeroOrMore>
<rng:optional>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:optional>
</rng:define>
<!-- The root element. -->
<rng:start combine="choice">
<rng:ref name="morphml"/>
</rng:start>
<rng:define combine="choice" name="morphml">
<rng:element name="morphml">
<rng:ref name="Morphology"/>
<a:documentation>
The root element, and so will start any MorphML (NeuroML Level 1) compliant document.
</a:documentation>
</rng:element>
</rng:define>
</rng:grammar>
|