YADS Model Schema - RELAX NG (C)


This is the RELAX NG (C) schema for the YADS model.


  <?xml version="1.0" encoding="UTF-8"?>
  <!--
  
    YADS - RELAX NG (C)
  
    This document describes YADS - A Description Service
    in a RELAX NG Compact 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
  
  -->
  
    datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
    
    namespace xmlns = "http://relaxng.org/ns/structure/1.0"
    
    start = yads
    
    # Toplevel wrapper element
    
    yads =
      element yads {
        ( item | nest )*
      }
    
    # Item element - collection OR resource, with properties.
    
    item = 
      element item {
        ( collection | resource ), property*
      }
    
    # Nest element - collection AND resource, with properties.
    
    nest =
      element nest {
        ( collection , resource ), property*
      }
    
    # Collection element - contains sequence of nest or item elements.
    # (An ordering attribute determines how the elements should be ordered.)
    
    collection =
      element collection {
        attribute ordering
          { "choice" | "sequenced" | "unordered" }?,
        ( item | nest )*
      }
    
    # Resource element
    
    resource =
      element resource {
        xsd:anyURI
      }
    
    # Property element
    
    property =
      element property {        
        attribute type { text },
        xsd:anyURI | xsd:string
      }