YADS Model Schema - RELAX NG


This is the RELAX NG schema for the YADS model.


  <?xml version="1.0" encoding="UTF-8"?>
  <!--
  
    YADS - RELAX NG
  
    This document describes YADS - A Description Service
    in a RELAX NG XML Schema.
  
    ==
  
    // From RDF Schema for YADS

    Resource:     yads-schema-2007-05-17
    Comment:      RDF Schema for YADS - A Description Service
    Author:       Tony Hammond <t.hammond@nature.com>
    Revision:     May 17, 2007 - Tony Hammond
  
  -->
  
  <grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
    ns="http://relaxng.org/ns/structure/1.0"
    xmlns="http://relaxng.org/ns/structure/1.0"
    xmlns:y="yads"
  >
  
    <start>
      <ref name="yads"/>
    </start>
  
  <!--
    Toplevel wrapper element
    ~
  -->
    <div y:doc="Definition of yads element.">
  
      <define name="yads">
        <element name="yads">
          <zeroOrMOre>
            <choice>
            <ref name="item"/>
            <ref name="nest"/>
            </choice>
          </zeroOrMOre>
        </element>
      </define>
  
    </div>
  
  <!--
    Item element - collection OR resource, with properties.
    (The content model expressly permits any ordering.)
  -->
    <div y:doc="Definition of item element.">
  
      <define name="item">
        <element name="item">
          <interleave>
            <choice>
              <ref name="collection"/>
              <ref name="resource"/>
            </choice>
            <zeroOrMore>
              <ref name="property"/>
            </zeroOrMore>
          </interleave>
        </element>
      </define>
  
    </div>
  
  <!--
    Nest element - collection AND resource, with properties.
    (The content model expressly permits any ordering.)
  -->
    <div y:doc="Definition of nest element.">
  
      <define name="nest">
        <element name="nest">
          <interleave>
            <ref name="collection"/>
            <ref name="resource"/>
            <zeroOrMore>
              <ref name="property"/>
            </zeroOrMore>
          </interleave>
        </element>
      </define>
  
    </div>
  
  <!--
    Collection element - contains sequence of nest or item elements.
    (An ordering attribute determines how the elements should be ordered.)
  -->
    <div y:doc="Definition of collection element.">
  
      <define name="collection">
        <element name="collection">
          <optional>
            <attribute name="ordering">
              <choice>
                <value>choice</value>
                <value>sequenced</value>
                <value>unordered</value>
              </choice>
            </attribute>
          </optional>
          <oneOrMore>
            <choice>
              <ref name="item"/>
              <ref name="nest"/>
            </choice>
          </oneOrMore>
        </element>
      </define>
  
    </div>
  
  <!--
    Resource element
    ~
  -->
    <div y:doc="Definition of resource element.">
  
      <define name="resource">
        <element name="resource">
          <data type="anyURI"/>
        </element>
      </define>
  
    </div>
  
  <!--
    Property element
    ~
  -->
    <div y:doc="Definition of property element.">
  
      <define name="property">
        <element name="property">
          <attribute name="type">
          </attribute>
          <data type="string"/>
        </element>
      </define>
  
    </div>
  
  </grammar>