<schema
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        targetNamespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<annotation>
<documentation>
<div xmlns="http://www.w3.org/1999/xhtml">
<address>
by Dan Connolly
<br class=''/>
$Id: rdf1.xsd,v 1.1 2001/04/17 05:48:08 connolly Exp $
</address>

<p>One step beyond <a href="rdf0.xsd">rdf0.xsd</a>, this is an XML
schema for the simplest non-trivial RDF document; one that relates two
URIs by another URI. (The syntactically smallest non-trivial RDF
document probably uses an anonymous subject and a literal object, two
issues that I prefer to defer just now.)</p>

<p>See also: <a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/#grammar">the RDF grammar</a>.</p>


</div>
</documentation>
</annotation>

<!-- @@ I tried to redefine these from rdf0.xsd, but
     I couldn't get it to work. [[[ -->

<element name="RDF">
  <annotation>
    <documentation>
      [6.1] RDF
    </documentation>
  </annotation>

  <complexType>
    <sequence minOccurs="0" maxOccurs="unbounded">
      <group ref="rdf:obj"/>
    </sequence>
  </complexType>
</element>

<group name="obj">
  <choice>
    <element ref="rdf:typedNode"/>
    <!-- ... container ... -->
  </choice>
</group>

<!-- ]] -->


<element name="typedNode" abstract="true"
         type="rdf:typedNodeType"/>

<complexType name="typedNodeType">
  <sequence minOccurs="0" maxOccurs="unbounded">
    <element ref="rdf:propertyElt"/>
  </sequence>
  <attributeGroup ref="rdf:idAboutAttrOpt"/>
  <!-- ... bagidattr, propattr ... -->
</complexType>

<element name="propertyElt" abstract="true"
         type="rdf:propertyEltType" />

<complexType name="propertyEltType">
  <attributeGroup ref="rdf:idRefAttrOpt"/>
  <!-- ... bagIdAttr?, propAttr, etc. ... -->
</complexType>

<attributeGroup name="idRefAttrOpt">
  <attribute ref="rdf:resource" use='required'/>
  <!-- ... optional rdf:resource -->
  <!-- ... bare resource="..."? ISSUE. ...-->
  <!-- ... idAttrOpt ... -->
</attributeGroup>

<attribute name="resource" type="anyURI" />
<attribute name="about" type="anyURI" />


<attributeGroup name="idAboutAttrOpt">
  <attribute ref="rdf:about" use='required'/>
  <!-- ... idAttrOpt ... -->
  <!-- ... aboutEachAttr ... -->
</attributeGroup>


<element name="Description"
         type="rdf:typedNodeType" substitutionGroup="rdf:typedNode" />

<element name="type"
         type="rdf:propertyEltType" substitutionGroup="rdf:propertyElt" />

</schema>
