Transforming XML file: NeuroMLFiles/Schemata/v1.6/Level1/Metadata_v1.6.xsd using XSL file: NeuroMLFiles/Schemata/XSDtoRNG.xsl

View original file before transform

Converting the file: Metadata_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/metadata/schema" ns="http://morphml.org/metadata/schema" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  
<!--

    This file specifies a number of basic elements which can be used by NeuroML v1.6 compliant files
    
    Authors: Sharon Crook, Joe Svitak, Padraig Gleeson and members of the NeuroML project
    
-->

    
<a:documentation>
        Definition of elements common to a number of NeuroML files.
    
</a:documentation>

    
    
<!-- Definition of a Point follows. -->
    
<rng:define combine="choice" name="Point">
        
<a:documentation>
            A 3D point with optional diameter. Note: the units for these values
                        will be specified in the file in which the element is used, e.g.
            in a MorphML file with &lt;b&gt;lengthUnits="micron"&lt;/b&gt; in the morphml element
        
</a:documentation>
        
<rng:attribute name="x">
<rng:data type="double"/>
</rng:attribute>
        
<rng:attribute name="y">
<rng:data type="double"/>
</rng:attribute>
        
<rng:attribute name="z">
<rng:data type="double"/>
</rng:attribute>
        
<rng:optional>
<rng:attribute name="diameter">
<rng:data type="double"/>
</rng:attribute>
</rng:optional>
    
</rng:define>
        
    
<!-- Definition of Points follows. -->
    
<rng:define combine="choice" name="Points">
        
<a:documentation>
            A collection of points.
        
</a:documentation>
        
            
<rng:oneOrMore>
<rng:element name="point">
<rng:ref name="Point"/>
</rng:element>
</rng:oneOrMore>
        
        
<rng:optional>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:optional>
    
</rng:define>
        
    
    
<!-- Definition of Sphere follows. -->
    
<rng:define combine="choice" name="Sphere">
        
<a:documentation>
            A spherical structure such as a cell body or cell.
        
</a:documentation>
        
            
<rng:element name="center">
<rng:ref name="Point"/>
                
<a:documentation>
                    Diameter of sphere is obtained from center Point.
                
</a:documentation>
            
</rng:element>
        
        
<rng:optional>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:optional>
    
</rng:define>
    
    
    
<!-- Definition of RectangularBox follows. -->
    
<rng:define combine="choice" name="RectangularBox">
        
<a:documentation>
            A Rectangular Box for locating cells in 3D.
        
</a:documentation>
        
            
<rng:element name="corner">
<rng:ref name="Point"/>
                
<a:documentation>
                    Location of vertex with lowest x, y, z coords.
                
</a:documentation>
            
</rng:element>
            
<rng:element name="size">
                
<a:documentation>
                    Size of box. Note if width, height or depth is zero, implies a lower dimension box, e.g. 2D plane.
                
</a:documentation>
                    
                        
<rng:attribute name="width">
<rng:data type="double"/>
</rng:attribute>
                        
<rng:attribute name="height">
<rng:data type="double"/>
</rng:attribute>
                        
<rng:attribute name="depth">
<rng:data type="double"/>
</rng:attribute>
                    
            
</rng:element>
        
        
<rng:optional>
<rng:attribute name="name">
<rng:data type="string"/>
</rng:attribute>
</rng:optional>
    
</rng:define>
        
    
    
    
<!-- Definition of NonSpatialGrid follows. -->
    
<rng:define combine="choice" name="NonSpatialGrid">
        
<a:documentation>
            Specifies a grid of up to 3 dimensions, without any explicit 3D location information.
        
</a:documentation>
        
        
<rng:attribute name="x">
<rng:data type="positiveInteger"/>
</rng:attribute>
        
<rng:optional>
<rng:attribute name="y">
<rng:data type="positiveInteger"/>
</rng:attribute>
</rng:optional>
        
<rng:optional>
<rng:attribute name="z">
<rng:data type="positiveInteger"/>
</rng:attribute>
</rng:optional>
    
</rng:define>
        
        
    
<!-- Definition of Manifold follows. -->
    
<rng:define combine="choice" name="Manifold">
        
<a:documentation>
            A surface.
        
</a:documentation>
        
            
<rng:ref name="Points"/>
        
    
</rng:define>
        

        
        
    
<!-- Definition of Polygon follows. -->
    
<rng:define combine="choice" name="Polygon">
        
<a:documentation>
            A closed structure represented by a list of points where the first point connects with the last point.
        
</a:documentation>
        
            
<rng:ref name="Points"/>
        
    
</rng:define>
        
        
    
<!-- Definition of Polyhedron follows. -->
    
<rng:define combine="choice" name="Polyhedron">
        
<a:documentation>
            A 3d surface to represent the cell body or histological structure.
        
</a:documentation>
        
            
<rng:element name="polygons">
                
<a:documentation>
                    Collection of polygons defining the polyhedron.
                
</a:documentation>
                
                    
                        
<rng:oneOrMore>
<rng:element name="polygon">
<rng:ref name="Polygon"/>
</rng:element>
</rng:oneOrMore>
                    
                
            
</rng:element>
        
    
</rng:define>
        
        
        
    
<!-- Definition of Annotation follows -->
    
<rng:define combine="choice" name="Annotation">
        
<a:documentation>
            Concise processing directives for downstream applications.
        
</a:documentation>
        
            
<rng:zeroOrMore>
<rng:element>
<rng:anyName/>
<rng:text/>
</rng:element>
</rng:zeroOrMore>
        
    
</rng:define>
        
        
    
<!-- Definition of LengthUnits follows. -->
    
<rng:define combine="choice" name="LengthUnits">
        
<a:documentation>
            Enumeration of length units. Used in MorphML Level 1 files, where length is the only important dimension.
        
</a:documentation>
        
<rng:choice>
            
<rng:value>micron</rng:value>
            
<rng:value>millimetre</rng:value>
            
<rng:value>metre</rng:value>
        
</rng:choice>
    
</rng:define>
        
        
    
<!-- Definition of VolumeUnits follows. -->
    
<rng:define combine="choice" name="VolumeUnits">
        
<a:documentation>
            Enumeration of volume units.
        
</a:documentation>
        
<rng:choice>
            
<rng:value>cubic_millimetre</rng:value>
            
<rng:value>millilitre</rng:value>
            
<rng:value>litre</rng:value>
        
</rng:choice>
    
</rng:define>
        
        
    
<!-- Definition of Notes follows. -->
    
<rng:define combine="choice" name="Notes">
        
<a:documentation>
            Textual human readable notes related to the element in question. It's useful to put these into
         the NeuroML files instead of XML comments, as the notes can be extracted and repeated in the files to which the NeuroML is mapped.
        
</a:documentation>
        
<rng:data type="string"/>
    
</rng:define>
        
        
    
<!-- Definition of Group follows. -->
    
<rng:define combine="choice" name="Group">
        
<a:documentation>
            Allows elements to be associated, such as for grouping segments or cables into the basal arbor.
        
</a:documentation>
        
<rng:data type="string"/>
    
</rng:define>
        
        
    
<!-- Definition of Property follows. -->
    
<rng:define combine="choice" name="Property">
        
<a:documentation>
            A Tag/Value/Type tuple.
        
</a:documentation>
        
<rng:interleave>
<rng:optional>
<rng:element name="tag">
<rng:data type="string"/>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="value">
<rng:data type="string"/>
</rng:element>
</rng:optional>
</rng:interleave>
    
</rng:define>
        
        
    
<!-- Definition of Properties follows. -->
    
<rng:define combine="choice" name="Properties">
        
<a:documentation>
            A collection of Properties
        
</a:documentation>
        
            
<rng:zeroOrMore>
<rng:element name="property">
<rng:ref name="Property"/>
</rng:element>
</rng:zeroOrMore>
        
    
</rng:define>
        
        
    
<!-- Definition of PropertyDetail follows. -->
    
<rng:define combine="choice" name="PropertyDetail">
        
<a:documentation>
            Metadata for each Property.
        
</a:documentation>
        
<rng:interleave>
<rng:optional>
<rng:element name="description">
<rng:data type="string"/>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="type">
<rng:data type="string"/>
</rng:element>
</rng:optional>
</rng:interleave>
        
<rng:attribute name="property">
<rng:data type="string"/>
</rng:attribute>
    
</rng:define>
        
        
    
<!-- Definition of GroupDetail follows. -->
    
<rng:define combine="choice" name="GroupDetail">
        
<a:documentation>
            Metadata for each Group.
        
</a:documentation>
        
            
<rng:element name="description">
<rng:data type="string"/>
</rng:element>
            
<rng:zeroOrMore>
<rng:element name="properties">
<rng:ref name="Properties"/>
</rng:element>
</rng:zeroOrMore>
        
        
<rng:attribute name="group">
<rng:data type="string"/>
</rng:attribute>
    
</rng:define>
        
    
<!-- Definition of metadata follows. -->        
    
<rng:define combine="choice" name="metadata">
        
<a:documentation>
            General metadata which can be applied to a number of elements
        
</a:documentation>
        
            
<rng:optional>
<rng:element name="notes">
<rng:ref name="Notes"/>
</rng:element>
</rng:optional>
            
<rng:optional>
<rng:element name="properties">
<rng:ref name="Properties"/>
</rng:element>
</rng:optional>
            
<rng:optional>
<rng:element name="annotation">
<rng:ref name="Annotation"/>
</rng:element>
</rng:optional>
            
<rng:zeroOrMore>
<rng:element name="group">
<rng:ref name="Group"/>
</rng:element>
</rng:zeroOrMore>
        
    
</rng:define>
        
        
        
<!-- Definition of YesNo follows. -->
        
<rng:define combine="choice" name="YesNo">
            
<a:documentation>
                String with only yes or no allowed
            
</a:documentation>
            
<rng:choice>
                
<rng:value>yes</rng:value>
                
<rng:value>no</rng:value>
            
</rng:choice>
        
</rng:define>
              
        
        
<!-- Definition of ZeroToOne follows. -->
        
<rng:define combine="choice" name="ZeroToOne">
            
<a:documentation>
                Double restricted to between 1 and 0
            
</a:documentation>
            
<rng:data type="double">      
                
<rng:param name="minInclusive">0</rng:param>
                
<rng:param name="maxInclusive">1</rng:param>
            
</rng:data>
        
</rng:define>
        
        
<!-- Definition of NonNegativeDouble follows. -->
        
<rng:define combine="choice" name="NonNegativeDouble">
            
<a:documentation>
                Double restricted to 0 or greater
            
</a:documentation>
            
<rng:data type="double">      
                
<rng:param name="minInclusive">0</rng:param>
            
</rng:data>
        
</rng:define>
        
        
        
<!-- Definition of PositiveDouble follows. -->
        
<rng:define combine="choice" name="PositiveDouble">
            
<a:documentation>
                Double restricted greater than 0
            
</a:documentation>
            
<rng:data type="double">      
                
<rng:param name="minExclusive">0</rng:param>
            
</rng:data>
        
</rng:define>
        
        
        
<!-- Definition of Units follows. -->
        
<rng:define combine="choice" name="Units">
            
<a:documentation>
                Enumeration of unit scheme used. Only SI or Physiological units allowed
            
</a:documentation>
            
<rng:choice>
                
<rng:value>Physiological Units</rng:value>
                    
<a:documentation>
                        Milisecond, millivolt, centimeter, etc
                    
</a:documentation>
                
                
<rng:value>SI Units</rng:value>
                    
<a:documentation>
                        Second, volt, meter, etc.
                    
</a:documentation>
                
            
</rng:choice>
        
</rng:define>

        
        
        
        
        
        
<!-- Possible reference extensions. -->
        
        
    
<rng:define combine="choice" name="referencedata">
        
<a:documentation>
            General metadata about references for the model.
                            Note: This element will possibly change when a new set of schema
                            files is adopted for adding references, authors, citations, etc.
        
</a:documentation>
        
            
<rng:optional>
<rng:element name="authorList">
<rng:ref name="Authors"/>
</rng:element>
</rng:optional>
            
<rng:zeroOrMore>
<rng:element name="publication">
<rng:ref name="Publication"/>
</rng:element>
</rng:zeroOrMore>
            
<rng:optional>
<rng:element name="neuronDBref">
<rng:ref name="NeuronDBReference"/>
</rng:element>
</rng:optional>
            
<rng:optional>
<rng:element name="modelDBref">
<rng:ref name="ModelDBReference"/>
</rng:element>
</rng:optional>
        
    
</rng:define>        
        
        
    
<rng:define combine="choice" name="NeuronDBReference">
        
<a:documentation>
            A reference to an entity in NeuronDB
                            Note: This element will possibly change when a new set of schema
                            files is adopted for adding references, authors, citations, etc. See
                mailing lists for latest status
        
</a:documentation>
        
<rng:interleave>
<rng:optional>
<rng:element name="modelName">
<rng:data type="string"/>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="uri">
<rng:data type="string"/>
</rng:element>
</rng:optional>
</rng:interleave>
    
</rng:define>  

        
    
<rng:define combine="choice" name="ModelDBReference">
        
<a:documentation>
            A reference to an entity in ModelDB
                            Note: This element will possibly change when a new set of schema
                            files is adopted for adding references, authors, citations, etc. See
                mailing lists for latest status
        
</a:documentation>
        
<rng:interleave>
<rng:optional>
<rng:element name="modelName">
<rng:data type="string"/>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="uri">
<rng:data type="string"/>
</rng:element>
</rng:optional>
</rng:interleave>
    
</rng:define>  
      
        
          
    
<rng:define combine="choice" name="Publication">
        
<a:documentation>
            A reference to a publication
                            Note: This element will possibly change when a new set of schema
                            files is adopted for adding references, authors, citations, etc. See
                mailing lists for latest status
        
</a:documentation>
        
<rng:interleave>
<rng:optional>
<rng:element name="fullTitle">
<rng:data type="string">
                
<a:documentation>
                    A reasonably complete reference to the paper, etc. including journal, authors, issue, year.
                    Mainly for quick recognition of the paper. The PubMed ref should contain the unique ID.
                
</a:documentation>
            
</rng:data>
</rng:element>
</rng:optional>
<rng:optional>
<rng:element name="pubmedRef">
<rng:data type="string">
                
<a:documentation>
                    URL of paper in PubMed (starting with http://www.ncbi.nlm.nih.gov)
                
</a:documentation>
            
</rng:data>
</rng:element>
</rng:optional>
</rng:interleave>
    
</rng:define>  
          
    
<rng:define combine="choice" name="Authors">
        
<a:documentation>
            A reference to an author
                            Note: This element will possibly change when a new set of schema
                            files is adopted for adding references, authors, citations, etc. See
                mailing lists for latest status
        
</a:documentation>
        
            
<rng:zeroOrMore>
<rng:element name="modelAuthor">
<rng:ref name="Person"/>
                            
<a:documentation>
                                    Author of the original model
                            
</a:documentation>
            
</rng:element>
</rng:zeroOrMore>
            
<rng:zeroOrMore>
<rng:element name="modelTranslator">
<rng:ref name="Person"/>
                            
<a:documentation>
                                    Person who translated the model to NeuroML
                            
</a:documentation>
            
</rng:element>
</rng:zeroOrMore>
        
    
</rng:define>        
        
        
    
<rng:define combine="choice" name="Person">
        
<a:documentation>
            A generic reference to a person, for authorship, etc
        
</a:documentation>
        
            
<rng:element name="name">
<rng:data type="string">
            
</rng:data>
</rng:element>
            
<rng:optional>
<rng:element name="institution">
<rng:data type="string">
            
</rng:data>
</rng:element>
</rng:optional>
            
<rng:optional>
<rng:element name="email">
<rng:data type="string">
        
<a:documentation>
            Useful to have. Note: something like '- at -' replacing the @ might be wise
        
</a:documentation>
            
</rng:data>
</rng:element>
</rng:optional>
            
<rng:optional>
<rng:element name="comment">
<rng:data type="string">
        
<a:documentation>
            Optional comment on their specific contribution
        
</a:documentation>
            
</rng:data>
</rng:element>
</rng:optional>
        
    
</rng:define>    
        
    
    
<!-- Extensions for reusability etc.-->
        
    
<rng:define combine="choice" name="StatusValue">
        
<a:documentation>
            Status enum for stability state of files. This is subject to change.
        
</a:documentation>
        
<rng:choice>

            
<rng:value>stable</rng:value>
                
<a:documentation>File can be used with reasonable confidence</a:documentation>
            
            
<rng:value>in_progress</rng:value>
                
<a:documentation>File can be used with caution, bearing in mind any comments present</a:documentation>
            
            
<rng:value>known_issues</rng:value>
                
<a:documentation>File can be assumed to be erroneous and shouldn't be used</a:documentation>
            

        
</rng:choice>
    
</rng:define>
    
    

    
<rng:define combine="choice" name="Status">
        
        
<a:documentation>
            Status for stability state of files. Note this is still subject to change
        
</a:documentation>
        
        
            
<rng:zeroOrMore>
<rng:element name="comment">
<rng:data type="string">
                
<a:documentation>
                        A comment on the current status
                
</a:documentation>
            
</rng:data>
</rng:element>
</rng:zeroOrMore>
            
<rng:zeroOrMore>
<rng:element name="issue">
<rng:data type="string">
                
<a:documentation>
                        An issue which need addressing
                
</a:documentation>
            
</rng:data>
</rng:element>
</rng:zeroOrMore>
            
<rng:zeroOrMore>
<rng:element name="contributor">
<rng:ref name="Person"/>
                
<a:documentation>
                        Who added the comments?
                
</a:documentation>
            
</rng:element>
</rng:zeroOrMore>
        
        
<rng:attribute name="value">
<rng:ref name="StatusValue"/>
            
<a:documentation>
                Currently an enum value of status/in progress/etc.
            
</a:documentation>
        
</rng:attribute>
        
    
</rng:define>

              

</rng:grammar>


Time to transform file: 0.021 secs