added schema modularization explanation to PROV-XML Note. Also update examples in Note.
authorStephan Zednik <zednis@rpi.edu>
Tue, 12 Feb 2013 00:40:26 -0700
changeset 5529 32f65d635e65
parent 5528 4bf4e24f5e71
child 5530 cbf88414d162
added schema modularization explanation to PROV-XML Note. Also update examples in Note.
xml/prov-xml.html
xml/schema/prov-core.xsd
--- a/xml/prov-xml.html	Mon Feb 11 22:28:37 2013 +0100
+++ b/xml/prov-xml.html	Tue Feb 12 00:40:26 2013 -0700
@@ -42,7 +42,25 @@
     <script type="text/javascript" class="remove">
     $(function() {
     	$("pre.schema-type").before("<p>Type definition in XML Schema:</p>");
-	    $("pre.schema-usage").before("<p>Usage in XML:</p>");
+	    	    
+	    $("pre.schema-element").each(function(index) {
+		    $(this)
+		    	.before("<p>The element <code>"+$(this).attr("element")+"</code> is used to reference a "+$(this).attr("schemaType")+" from within a prov:Document or prov:Bundle.</p>")
+		    	.before("<p>Element defintion in XML Schema:</p>")
+	    });
+	    
+	    $("pre.prov-attribute").each(function(index) {
+		    $(this)
+		    	.before("<p>The element <code>"+$(this).attr("element")+"</code> is used to represent a PROV attribute and has type "+$(this).attr("schemaType")+".</p>")
+		    	.before("<p>Element defintion in XML Schema:</p>")
+	    });
+	    
+	    $("pre.example[topic]").each(function() {
+		    $(this)
+		    	.before("<p>The following is an example of using <code>"+$(this).attr("topic")+"</code> in PROV-XML.</p>");
+	    });
+	    
+	    //$("schema-attribute")...
     });
     </script>
 
@@ -247,9 +265,48 @@
 <section id="schema-design">
 <h2>XML Schema Design</h2>
 
-<p>Several general design principles and patterns were used in the
-construction of the PROV XML Schema.
-</p>
+<p>Several general design principles and patterns were used in the construction of the PROV XML Schema.</p>
+
+<section id="schema-modularization">
+<h3>Schema Modularization</h3>
+<p>The PROV-XML schema have been modularized so that extension elements defined in Working Group Notes can be defined in separate schemas.  Elements defined in the PROV-DM are defined in the prov-core.xsd schema and elements defined in notes are defined in extension schemas (e.g. extensions/prov-dictionary.xsd, extensions/prov-links.xsd).  The default schema, prov.xsd, imports prov-core and all extension schemas developed by the Working Group.  With this modeling all PROV elements, even those defined in Notes, are defined from the default schema.  If the user wishes to leverage a schema that does not include extension elements the user can use schemaLocation to directly reference prov-core.xsd.</p>
+<pre>
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;xs:schema targetNamespace="http://www.w3.org/ns/prov#"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:prov="http://www.w3.org/ns/prov#"
+           elementFormDefault="qualified"
+           attributeFormDefault="unqualified"&gt;
+
+	&lt;xs:include schemaLocation="prov-core.xsd"/&gt;
+	&lt;xs:include schemaLocation="extensions/prov-dictionary.xsd"/&gt;
+	&lt;xs:include schemaLocation="extensions/prov-links.xsd"/&gt;
+
+&lt;/xs:schema&gt;
+</pre>
+<p>Extension schemas import the prov-core.xsd schema and make use of a substitution group on the <code>prov:abstractElement</code> to add extension defined elements to the list of valid PROV elements in a bundle or document.</p>
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://www.w3.org/ns/prov#" xmlns:prov="http://www.w3.org/ns/prov#"
+	elementFormDefault="qualified"&gt;
+	
+	&lt;xs:include schemaLocation="../prov-core.xsd" /&gt;
+	
+	&lt;xs:complexType name="Mention"&gt;
+		&lt;xs:sequence&gt;
+			&lt;xs:element name="specificEntity" type="prov:IDRef" /&gt;
+			&lt;xs:element name="generalEntity" type="prov:IDRef" /&gt;
+			&lt;xs:element name="bundle" type="prov:IDRef" /&gt;
+		&lt;/xs:sequence&gt;
+	&lt;/xs:complexType&gt;
+	
+	&lt;xs:element name="mentionOf" type="prov:Mention" substitutionGroup="prov:abstractElement" /&gt;
+	
+&lt;/xs:schema&gt;
+</pre>
+<p>All schemas developed by the PROV WG utilize the PROV namespace.</p>
+</section> <!-- end schema-modularization -->
 
 <section id="design-pattern">
 <h3><i>Salami Slice</i> Design Pattern</h3>
@@ -269,14 +326,7 @@
 concept(id; elem1, elem2, ... [attr1=val2, attr2=val2])
 </pre>
 
-<p>In both cases (required id or optional id), the PROV-N id is
-treated as an XML attribute, the PROV-N "elements" are treated as XML
-elements, always with the same required order (position) as the
-PROV-DM/PROV-N description, and optional PROV-N "attributes", if
-allowed, always follow and are also represented by XML elements.  As
-in PROV-N, the attributes can be specified multiple times, and in any
-order, as long as they are all at the end of the encompassing element.
-</p>
+<p>In both cases (required id or optional id), the PROV-N id is treated as an XML attribute (<code>prov:id</code>), the PROV-N "elements" are treated as XML elements, always with the same required order (position) as the PROV-DM/PROV-N description, and optional PROV-N "attributes", if allowed, always follow and are also represented by XML elements.  As in PROV-N, the attributes can be specified multiple times, but unlike PROV-N the attributes have a fixed (alphabetical) order.  The PROV-N "attribute" elements are always defined at the end of the encompassing sequence after all PROV-N "elements".  Elements defined in namespaces other than the PROV namespace may be included in a element after all PROV elements.</p>
 
 <p>Wherever an "id" is referenced from a later concept, the id is
 referenced as a prov:ref attribute of the element within the concept.
@@ -299,6 +349,7 @@
 <p>Most of the concepts described below follow this general pattern.
 </p>
 
+<!--
 <div class="note">
 <p>REVIEW QUESTION:</p>
 <p>Is this ordering of elements/attributes reasonable/satisfactory?</p>
@@ -361,6 +412,7 @@
 </p>
 
 </div>
+-->
 </section> <!-- end elements-vs-attributes -->
 
 <section id="naming-conventions">
@@ -413,41 +465,53 @@
 <div id="prov-schema-mapping-div" style="text-align: center;">
 <table  class="thinborder" style="margin-left: auto; margin-right: auto;">
 <caption id="prov-schema-mapping"><span>Table 1<sup><a class="internalDFN" href="#prov-schema-mapping"><span class="diamond"> ◊:</span></a></sup> </span>PROV-DM Types and Relations to XML Schema Mapping</caption> 
-<tr><td><a><b>Type or Relation Name</b></a></td><td><b>XML Schema ComplexType or usage</b></td><td><b>Component</b></td></tr>
+<tr>
+<td><a><b>Type or Relation Name</b></a></td>
+<td><b>XML Schema ComplexType</b></td>
+<td><b>XML Schema Referencing Element</b></td>
+<td><b>Component</b></td></tr>
 <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
 
 <tr class="component1-color">
 	<td><a class="essential">Entity</a></td>
 	<td><a title="dfn-Entity" class="essential">prov:Entity</a></td>
+	<td>prov:entity</td>
 	<td rowspan="8"><a href="#component1">Component 1: Entities/Activities</a></td>
 </tr>
 <tr class="component1-color">
 	<td><a class="essential">Activity</a></td>
 	<td><a title="dfn-Activity" class="essential">prov:Activity</a></td>
+	<td>prov:activity</td>
 </tr>
 <tr class="component1-color">
 	<td><a class="essential">Generation</a></td>
 	<td><a title="dfn-Generation" class="essential">prov:Generation</a></td>
+	<td>prov:wasGeneratedBy</td>
 </tr>
 <tr class="component1-color">
 	<td><a class="essential">Usage</a></td>
 	<td><a title="defn-Usage" class="essential">prov:Usage</a></td>
+	<td>prov:used</td>
 </tr>
 <tr class="component1-color">
 	<td><a class="essential">Communication</a></td>
 	<td><a title="dfn-Communication" class="essential">prov:Communication</a></td>
+	<td>prov:wasInformedBy</td>
 </tr>
 <tr class="component1-color">
 	<td><a class="essential">Start</a></td>
 	<td><a title="dfn-Start">prov:Start</a></td>
+	<td>prov:wasStartedBy</td>
 </tr>
 <tr class="component1-color">
 	<td><a class="essential">End</a></td>
 	<td><a title="dfn-End">prov:End</a></td>
+	<td>prov:wasEndedBy</td>
 </tr>
 <tr class="component1-color">
 	<td><a class="essential">Invalidation</a></td>
 	<td><a title="dfn-Invalidation">prov:Invalidation</a></td>
+	<td>prov:wasInvalidatedBy</td>
 </tr>
 <tr>
 	<td colspan="3" style="border-width: 0px; "></td>
@@ -455,19 +519,23 @@
 <tr class="component2-color">
 	<td><a class="essential">Derivation</a></td>
 	<td><a title="dfn-Derivation"><span class="essential">prov:Derivation</span></a></td>
+	<td>prov:wasDerivedFrom</td>
 	<td  rowspan="4"><a href="#component2">Component 2: Derivations</a></td>
 </tr>
 <tr class="component2-color">
 	<td><a class="essential">Revision</a></td>
 	<td><a title="dfn-Revision" class="essential">prov:Revision</a></td>
+	<td>prov:wasRevisionOf</td>
 </tr>
 <tr class="component2-color">
 	<td><a class="essential">Quotation</a></td>
 	<td><a title="dfn-Quotation">prov:Quotation</a></td>
+	<td>prov:wasQuotedFrom</td>
 </tr>
 <tr class="component2-color">
 	<td><a class="essential">Primary Source</a></td>
 	<td><a title="dfn-PrimarySource">prov:PrimarySource</a></td>
+	<td>prov:hadPrimarySource</td>
 </tr>
 <tr>
 	<td colspan="3" style="border-width: 0px; "></td>
@@ -475,39 +543,48 @@
 <tr class="component3-color" style="border-collapse: collapse; ">
 	<td><a class="essential">Agent</a></td>
 	<td><a title="dfn-Agent" class="essential">prov:Agent</a></td>
+	<td>prov:agent</td>
 	<td rowspan="9"><a href="#component3">Component 3: Agents, Responsibility, Influence</a></td>
 </tr>
 <tr class="component3-color">
 	<td><a class="essential">Attribution</a></td>
 	<td><a title="dfn-Attribution" class="essential">prov:Attribution</a></td>
+	<td>prov:wasAttributedTo</td>
 </tr>
 <tr class="component3-color">
 	<td><a class="essential">Association</a></td>
 	<td><a title="dfn-Association" class="essential">prov:Association</a></td>
+	<td>prov:wasAssociatedWith</td>
 </tr>
 <tr class="component3-color">
 	<td><a class="essential">Delegation</a></td>
 	<td><a title="dfn-Delegation" class="essential">prov:Delegation</a></td>
+	<td>prov:actedOnBehalfOf</td>
 </tr>
 <tr class="component3-color">
 	<td><a class="essential">Plan</td>
 	<td><a title="dfn-Plan">prov:Plan</a></td>
+	<td>prov:plan</td>
 </tr>
 <tr class="component3-color">
 	<td><a class="essential">Person</td>
 	<td><a title="dfn-Person">prov:Person</a></td>
+	<td>prov:person</td>
 </tr>
 <tr class="component3-color">
 	<td><a class="essential">Organization</a></td>
 	<td><a title="dfn-Organization">prov:Organization</a></td>
+	<td>prov:organization</td>
 </tr>
 <tr class="component3-color">
 	<td><a class="essential">Software Agent</a></td>
 	<td><a title="dfn-SoftwareAgent">prov:SoftwareAgent</a></td>
+	<td>prov:softwareAgent</td>
 </tr>
 <tr class="component3-color">
 	<td><a class="essential">Influence</a></td>
 	<td><a title="dfn-Influence">prov:Influence</a></td>
+	<td>prov:wasInfluencedBy</td>
 </tr>
 <tr>
 	<td colspan="3" style="border-width: 0px; "></td>
@@ -515,6 +592,7 @@
 <tr class="component4-color">
 	<td><a title="bundle">Bundle</a></td>
 	<td><a title="dfn-Bundle">prov:Bundle</a></td>
+	<td>prov:bundle</td>
 	<td><a href="#component5">Component 4: Bundles</a></td>
 </tr>
 <tr>
@@ -523,11 +601,13 @@
 <tr class="component5-color">
 	<td><a class="essential">Alternate</a></td>
 	<td><a title="dfn-Alternate">prov:Alternate</a></td>
+	<td>prov:alternateOf</td>
 	<td  rowspan="3"><a href="#component4">Component 5: Alternate</a></td>
 </tr>
 <tr class="component5-color">
 	<td><a class="essential">Specialization</a></td>
 	<td><a title="dfn-Specialization">prov:Specialization</a></td>
+	<td>prov:specializationOf</td>
 </tr>
 <tr>
 	<td colspan="3" style="border-width: 0px; "></td>
@@ -535,23 +615,21 @@
 <tr class="component6-color">
 	<td><a class="essential">Collection</a></td>
 	<td><a title="dfn-Collection">prov:Collection</a></td>
+	<td>prov:collection</td>
 	<td  rowspan="3"><a href="#component6">Component 6: Collections</a></td>
 </tr>
 <tr class="component6-color">
 	<td><a class="essential">EmptyCollection</a></td>
 	<td><a title="dfn-EmptyCollection">prov:EmptyCollection</a></td>
+	<td>prov:emptyCollection</td>
 </tr>
 <tr class="component6-color">
 	<td><a>Membership</a></td>
 	<td><a title="dfn-Membership">prov:Membership</a></td>
+	<td>prov:hadMember</td>
 </tr>
-<!--<caption id="prov-dm-types-and-relations">PROV-DM Types and Relations to XML Schema Mapping</caption>-->
 </table>
 </div>
-<div class="note">
-<p>This mapping table is still under discussion and it's structure is subject to change.</p>
-</div>
-
 
 <p>In the rest of the section, each type is defined, in English initially, followed by its XML schema definition and some example.</p>  
 
@@ -564,23 +642,23 @@
 <h4>Entity</h4>
 <div class="glossary-ref" data-ref="glossary-entity"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Entity"&gt;
+&lt;xs:complexType name="Entity"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:location"/&gt;
-      &lt;xs:element ref="prov:value"/&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:value" minOccurs="0"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
-&lt;/xs:complexType&gt;
+&lt;/xs:complexType&gt;  
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:entity" schemaType="prov:Entity">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="entity" type="prov:Entity"/&gt;
 </pre>
-<pre class="example">
+<!--<p>The following is an example of describing a <code>prov:entity</code> in PROV-XML.</p>-->
+<pre class="example" topic="prov:entity">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -601,24 +679,23 @@
 <h3>Activity</h3>
 <div class="glossary-ref" data-ref="glossary-activity"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Activity"&gt;
+&lt;xs:complexType name="Activity"&gt;
   &lt;xs:sequence&gt;
     &lt;xs:element name="startTime" type="xs:dateTime" minOccurs="0"/&gt; 
-    &lt;xs:element name="endTime" type="xs:dateTime" minOccurs="0"/&gt; 
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:location"/&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;xs:element name="endTime" type="xs:dateTime" minOccurs="0"/&gt;
+    &lt;!-- prov attributes --&gt; 
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:activity" schemaType="prov:Activity">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="activity" type="prov:Activity"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:activity">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -640,26 +717,25 @@
 <h4>Generation</h4>
 <div class="glossary-ref" data-ref="glossary-generation"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Generation"&gt;
+&lt;xs:complexType name="Generation"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="entity" type="prov:EntityRef"/&gt;
-    &lt;xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/&gt;
+    &lt;xs:element name="entity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="activity" type="prov:IDRef" minOccurs="0"/&gt;
     &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:location"/&gt;
-      &lt;xs:element ref="prov:role"/&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasGeneratedBy" schemaType="prov:Generation">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasGeneratedBy" type="prov:Generation"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasGeneratedBy">
 &lt;prov:document
     xmlns:prov="http://www.w3.org/ns/prov#"
     xmlns:ex="http://example.com/ns/ex#"&gt;
@@ -692,26 +768,25 @@
 <h3>Usage</h3>
 <div class="glossary-ref" data-ref="glossary-usage"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Usage"&gt;
+&lt;xs:complexType name="Usage"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="activity" type="prov:ActivityRef"/&gt;
-    &lt;xs:element name="entity" type="prov:EntityRef" minOccurs="0"/&gt;
+    &lt;xs:element name="activity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="entity" type="prov:IDRef" minOccurs="0"/&gt;
     &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:location"/&gt;
-      &lt;xs:element ref="prov:role"/&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
-  &lt;xs:attribute ref="prov:id"/&gt;
+&lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:used" schemaType="prov:Usage">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="used" type="prov:Usage"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:used">
 &lt;prov:document
     xmlns:prov="http://www.w3.org/ns/prov#"
     xmlns:ex="http://example.com/ns/ex#"&gt;
@@ -744,23 +819,22 @@
 <h3>Communication</h3>
 <div class="glossary-ref" data-ref="glossary-communication"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Communication"&gt;
+&lt;xs:complexType name="Communication"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="informed" type="prov:ActivityRef"/&gt;
-    &lt;xs:element name="informant" type="prov:ActivityRef"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;xs:element name="informed" type="prov:IDRef"/&gt;
+    &lt;xs:element name="informant" type="prov:IDRef"/&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasInformedBy" schemaType="prov:Communication">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasInformedBy" type="prov:Communication"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasInformedBy">
 &lt;prov:document 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -787,27 +861,26 @@
 <h4>Start</h4>
 <div class="glossary-ref" data-ref="glossary-start"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Start"&gt;
+&lt;xs:complexType name="Start"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="activity" type="prov:ActivityRef"/&gt;
-    &lt;xs:element name="trigger" type="prov:EntityRef" minOccurs="0"/&gt;
-    &lt;xs:element name="starter" type="prov:ActivityRef" minOccurs="0"/&gt;
+    &lt;xs:element name="activity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="trigger" type="prov:IDRef" minOccurs="0"/&gt;
+    &lt;xs:element name="starter" type="prov:IDRef" minOccurs="0"/&gt;
     &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:location"/&gt;
-      &lt;xs:element ref="prov:role"/&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasStartedBy" schemaType="prov:Start">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasStartedBy" type="prov:Start"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasStartedBy">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -863,27 +936,26 @@
 <h4>End</h4>
 <div class="glossary-ref" data-ref="glossary-end"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="End"&gt;
+&lt;xs:complexType name="End"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="activity" type="prov:ActivityRef"/&gt;
-    &lt;xs:element name="trigger" type="prov:EntityRef"  minOccurs="0"/&gt;
-    &lt;xs:element name="ender" type="prov:ActivityRef" minOccurs="0"/&gt;
+    &lt;xs:element name="activity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="trigger" type="prov:IDRef"  minOccurs="0"/&gt;
+    &lt;xs:element name="ender" type="prov:IDRef" minOccurs="0"/&gt;
     &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:location"/&gt;
-      &lt;xs:element ref="prov:role"/&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
-&lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasEndedBy" ype="prov:End"/&gt;
+<pre class="schema-element" element="prov:wasEndedBy" schemaType="prov:End">
+&lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasEndedBy" type="prov:End"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasEndedBy">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -911,26 +983,25 @@
 <h3>Invalidation</h3>
 <div class="glossary-ref" data-ref="glossary-invalidation"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Invalidation"&gt;
+&lt;xs:complexType name="Invalidation"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="entity" type="prov:EntityRef"/&gt;
-    &lt;xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/&gt;
+    &lt;xs:element name="entity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="activity" type="prov:IDRef" minOccurs="0"/&gt;
     &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:location"/&gt;
-      &lt;xs:element ref="prov:role"/&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasInvalidatedBy" schemaType="prov:Invalidation">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasInvalidatedBy" type="prov:Invalidation"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasInvalidatedBy">
 &lt;prov:document
     xmlns:prov="http://www.w3.org/ns/prov#"
     xmlns:ex="http://example.com/ns/ex#"
@@ -969,26 +1040,25 @@
 <h4>Derivation</h4>
 <div class="glossary-ref" data-ref="glossary-derivation"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Derivation"&gt;
+&lt;xs:complexType name="Derivation"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="generatedEntity" type="prov:EntityRef"/&gt;
-    &lt;xs:element name="usedEntity" type="prov:EntityRef"/&gt;
-    &lt;xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/&gt;
-    &lt;xs:element name="generation" type="prov:GenerationRef" minOccurs="0"/&gt;
-    &lt;xs:element name="usage" type="prov:UsageRef" minOccurs="0"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;xs:element name="generatedEntity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="usedEntity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="activity" type="prov:IDRef" minOccurs="0"/&gt;
+    &lt;xs:element name="generation" type="prov:IDRef" minOccurs="0"/&gt;
+    &lt;xs:element name="usage" type="prov:IDRef" minOccurs="0"/&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasDerivedFrom" schemaType="prov:Derivation">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasDerivedFrom" type="prov:Derivation"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasDerivedFrom">
 &lt;prov:document 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1017,17 +1087,17 @@
 <h3>Revision</h3>
 <div class="glossary-ref" data-ref="glossary-revision"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Revision"&gt;
+&lt;xs:complexType name="Revision"&gt;
   &lt;xs:complexContent&gt;
     &lt;xs:extension base="prov:Derivation"&gt;
     &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasRevisionOf" schemaType="prov:Revision">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasRevisionOf" type="prov:Revision"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasRevisionOf" >
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1059,17 +1129,16 @@
 <h3>Quotation</h3>
 <div class="glossary-ref" data-ref="glossary-quotation"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Quotation"&gt;
+&lt;xs:complexType name="Quotation"&gt;
   &lt;xs:complexContent&gt;
     &lt;xs:extension base="prov:Derivation"&gt;
     &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
-</pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasQuotedFrom" schemaType="prov:Quotation">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasQuotedFrom" type="prov:Quotation"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasQuotedFrom">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1112,17 +1181,17 @@
 <h3>Primary Source</h3>
 <div class="glossary-ref" data-ref="glossary-primary-source"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="PrimarySource"&gt;
+&lt;xs:complexType name="PrimarySource"&gt;
   &lt;xs:complexContent&gt;
-	&lt;xs:extension base="prov:Derivation"&gt;
-	&lt;/xs:extension&gt;
+    &lt;xs:extension base="prov:Derivation"&gt;
+    &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:hadPrimarySource" schemaType="prov:PrimarySource">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="hadPrimarySource" type="prov:PrimarySource"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:hadPrimarySource">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1160,22 +1229,21 @@
 <h3>Agent</h3>
 <div class="glossary-ref" data-ref="glossary-agent"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Agent"&gt;
+&lt;xs:complexType name="Agent"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:location"/&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:agent" schemaType="prov:Agent">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="agent" type="prov:Agent"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:agent">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1195,17 +1263,17 @@
 <h4>Person</h4>
 <div class="glossary-ref" data-ref="glossary-person"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Person"&gt;
+&lt;xs:complexType name="Person"&gt;
   &lt;xs:complexContent&gt;
     &lt;xs:extension base="prov:Agent"&gt;
     &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:person" schemaType="prov:Person">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="person" type="prov:Person"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:Person">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1225,17 +1293,17 @@
 <h4>Organization</h4>
 <div class="glossary-ref" data-ref="glossary-organization"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Organization"&gt;
+&lt;xs:complexType name="Organization"&gt;
   &lt;xs:complexContent&gt;
     &lt;xs:extension base="prov:Agent"&gt;
     &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:organization" schemaType="prov:Organization">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="organization" type="prov:Organization"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:organization">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1255,17 +1323,17 @@
 <h4>Software Agent</h4>
 <div class="glossary-ref" data-ref="glossary-software-agent"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="SoftwareAgent"&gt;
+&lt;xs:complexType name="SoftwareAgent"&gt;
   &lt;xs:complexContent&gt;
     &lt;xs:extension base="prov:Agent"&gt;
     &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:softwareAgent" schemaType="prov:SoftwareAgent">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="softwareAgent" type="prov:SoftwareAgent"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:softwareAgent">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1287,23 +1355,22 @@
 <h3>Attribution</h3>
 <div class="glossary-ref" data-ref="glossary-attribution"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Attribution"&gt;
+&lt;xs:complexType name="Attribution"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="entity" type="prov:EntityRef"/&gt;
-    &lt;xs:element name="agent" type="prov:AgentRef"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;xs:element name="entity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="agent" type="prov:IDRef"/&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasAttributedTo" schemaType="prov:Attribution">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasAttributedTo" type="prov:Attribution"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasAttributedTo">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1344,25 +1411,24 @@
 <h4>Association</h4>
 <div class="glossary-ref" data-ref="glossary-association"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Association"&gt;
+&lt;xs:complexType name="Association"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="activity" type="prov:ActivityRef"/&gt;
-    &lt;xs:element name="agent" type="prov:AgentRef" minOccurs="0"/&gt;
-    &lt;xs:element name="plan" type="prov:PlanRef" minOccurs="0"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:role"/&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;xs:element name="activity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="agent" type="prov:IDRef" minOccurs="0"/&gt;
+    &lt;xs:element name="plan" type="prov:IDRef" minOccurs="0"/&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasAssociatedWith" schemaType="prov:Association">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasAssociatedWith" type="prov:Association"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:wasAssociatedWith">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1408,17 +1474,17 @@
 <h4>Plan</h4>
 <div class="glossary-ref" data-ref="glossary-plan"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Plan"&gt;
+&lt;xs:complexType name="Plan"&gt;
   &lt;xs:complexContent&gt;
     &lt;xs:extension base="prov:Entity"&gt;
     &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:plan" schemaType="prov:Plan">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="plan" type="prov:Plan"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:plan">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1469,24 +1535,23 @@
 <h4>Delegation</h4>
 <div class="glossary-ref" data-ref="glossary-delegation"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Delegation"&gt;
+&lt;xs:complexType name="Delegation"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="delegate" type="prov:AgentRef"/&gt;
-    &lt;xs:element name="responsible" type="prov:AgentRef"/&gt;
-    &lt;xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;xs:element name="delegate" type="prov:IDRef"/&gt;
+    &lt;xs:element name="responsible" type="prov:IDRef"/&gt;
+    &lt;xs:element name="activity" type="prov:IDRef" minOccurs="0"/&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:actedOnBehalfOf" schemaType="prov:Delegation">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="actedOnBehalfOf" type="prov:Delegation"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:actedOnBehalfOf">
 &lt;prov:document 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1546,23 +1611,22 @@
 <h4>Influence</h4>
 <div class="glossary-ref" data-ref="glossary-influence"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Influence"&gt;
+&lt;xs:complexType name="Influence"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="influencee" type="prov:AnyRef"/&gt;
-    &lt;xs:element name="influencer" type="prov:AnyRef"/&gt;
-    &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-      &lt;xs:element ref="prov:label"/&gt;
-      &lt;xs:element ref="prov:type"/&gt;
-      &lt;xs:any namespace="##other"/&gt;
-    &lt;/xs:choice&gt;
+    &lt;xs:element name="influencee" type="prov:IDRef"/&gt;
+    &lt;xs:element name="influencer" type="prov:IDRef"/&gt;
+    &lt;!-- prov attributes --&gt;
+    &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+    &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
   &lt;xs:attribute ref="prov:id"/&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:wasInfluencedBy" schemaType="prov:Influence">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasInfluencedBy" type="prov:Influence"/&gt;
 </pre>
-<pre class="example" id="example_38">
+<pre class="example" id="example_38" topic="prov:wasInfluencedBy">
 &lt;prov:document
     xmlns:prov="http://www.w3.org/ns/prov#"
     xmlns:tr="http://example.com/ns/tr#"
@@ -1596,20 +1660,20 @@
 <div class="glossary-ref" data-ref="glossary-bundle"></div>
 <p>A Bundle is an entity that can contain nested provenance statements.</p>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Bundle"&gt;
+&lt;xs:complexType name="Bundle"&gt;
   &lt;xs:complexContent&gt;
     &lt;xs:extension base="prov:Entity"&gt;
-      &lt;xs:sequence&gt;
+      &lt;xs:sequence maxOccurs="unbounded"&gt;
         &lt;xs:group ref="prov:documentElements"/&gt;
       &lt;/xs:sequence&gt;
     &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:bundle" schemaType="prov:Bundle">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="bundle" type="prov:Bundle"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:bundle">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1697,17 +1761,17 @@
 <h4>Specialization</h4>
 <div class="glossary-ref" data-ref="glossary-specialization"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Specialization"&gt;
+&lt;xs:complexType name="Specialization"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="specificEntity" type="prov:EntityRef"/&gt;
-    &lt;xs:element name="generalEntity" type="prov:EntityRef"/&gt;
+    &lt;xs:element name="specificEntity" type="prov:IDRef"/&gt;
+    &lt;xs:element name="generalEntity" type="prov:IDRef"/&gt;
   &lt;/xs:sequence&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:specializationOf" schemaType="prov:Specialization">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="specializationOf" type="prov:Specialization"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:specializationOf">
 &lt;prov:document
     xmlns:prov="http://www.w3.org/ns/prov#"
     xmlns:ex="http://example.com/ns/ex#"
@@ -1730,17 +1794,17 @@
 <h4>Alternate</h4>
 <div class="glossary-ref" data-ref="glossary-alternate"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Alternate"&gt;
+&lt;xs:complexType name="Alternate"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="alternate1" type="prov:EntityRef"/&gt;
-    &lt;xs:element name="alternate2" type="prov:EntityRef"/&gt;
+    &lt;xs:element name="alternate1" type="prov:IDRef"/&gt;
+    &lt;xs:element name="alternate2" type="prov:IDRef"/&gt;
   &lt;/xs:sequence&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:alternateOf" schemaType="prov:Alternate">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="alternateOf" type="prov:Alternate"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:alternateOf">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1777,17 +1841,17 @@
 <h3>Collection</h3>
 <div class="glossary-ref" data-ref="glossary-collection"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Collection"&gt;
+&lt;xs:complexType name="Collection"&gt;
   &lt;xs:complexContent&gt;
     &lt;xs:extension base="prov:Entity"&gt;
     &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:collection" schemaType="prov:Collection">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="collection" type="prov:Collection"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:collection">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1803,17 +1867,17 @@
 <h4>Empty Collection</h4>
 <div class="glossary-ref" data-ref="glossary-empty-collection"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="EmptyCollection"&gt;
+&lt;xs:complexType name="EmptyCollection"&gt;
   &lt;xs:complexContent&gt;
     &lt;xs:extension base="prov:Collection"&gt;
     &lt;/xs:extension&gt;
   &lt;/xs:complexContent&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:emptyCollection" schemaType="prov:EmptyCollection">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="emptyCollection" type="prov:EmptyCollection"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:emptyCollection">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1835,17 +1899,17 @@
 <h3>Membership</h3>
 <div class="glossary-ref" data-ref="glossary-membership"></div>
 <pre class="schema-type">
-&lt;xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Membership"&gt;
+&lt;xs:complexType name="Membership"&gt;
   &lt;xs:sequence&gt;
-    &lt;xs:element name="collection"  type="prov:CollectionRef"/&gt;
-    &lt;xs:element name="entity"      type="prov:EntityRef" maxOccurs="unbounded"/&gt;
+    &lt;xs:element name="collection" type="prov:IDRef"/&gt;
+    &lt;xs:element name="entity" type="prov:IDRef" maxOccurs="unbounded"/&gt;
   &lt;/xs:sequence&gt;
 &lt;/xs:complexType&gt;
 </pre>
-<pre class="schema-usage">
+<pre class="schema-element" element="prov:hadMember" schemaType="prov:Membership">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="hadMember" type="prov:Membership"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:hadMember">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1879,10 +1943,10 @@
 <h4>Identifier</h4>
 <div class="glossary-ref" data-ref="glossary-identifier"></div>
 <p>The identifier attribute is used to identify instances of PROV types or relations.</p>
-<pre class="schema-usage">
+<pre class="schema-attribute" attribute="prov:id" schemaType="xs:QName">
 &lt;xs:attribute xmlns:xs="http://www.w3.org/2001/XMLSchema" name="id" type="xs:QName"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:id">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1897,12 +1961,35 @@
 
 &lt;/prov:document&gt;
 </pre>
-<div class="note">
-<p>REVIEW QUESTION:</p>
-<p>The Identifier type is currently still under discussion.  We intend to use an identifier type that makes sense for XML conventions and current XML tooling.  The PROV-XML group is currently seeking feedback on recommended type ranges for the id attribute.</p>
-</div>
 </section> <!-- end attribute-Identifier --> 
 
+<section id="attribute-Reference">
+<h4>Reference</h4>
+<div class="glossary-ref" data-ref="glossary-identifier"></div>
+<p>A reference-by-id to a PROV entity, activity, agent, or relation.</p>
+<pre class="schema-attribute" attribute="prov:ref" schemaType="xs:QName">
+&lt;xs:attribute ref="prov:ref" use="required" /&gt;
+</pre>
+<pre class="example" topic="prov:ref">
+&lt;prov:document
+    xmlns:prov="http://www.w3.org/ns/prov#"
+    xmlns:ex="http://example.com/ns/ex#"&gt;
+
+  &lt;prov:entity prov:id="e1"/&gt;
+
+  &lt;prov:activity prov:id="a1"/&gt;
+
+  &lt;prov:wasGeneratedBy&gt;
+    &lt;prov:entity <b>prov:ref="e1"</b>/&gt;
+    &lt;prov:activity <b>prov:ref="a1"</b>/&gt;
+    &lt;prov:time&gt;2001-10-26T21:32:52&lt;/prov:time&gt;
+    &lt;ex:port>p1&lt;/ex:port&gt;
+  &lt;/prov:wasGeneratedBy&gt;
+
+&lt;/prov:document&gt;
+</pre>
+</section> <!-- end attribute-Reference -->
+
 <section id="attributes">
 <h4>Attributes</h4>
 <p>The PROV-DM defined PROV attributes are represented in XML as elements.</p>
@@ -1910,10 +1997,10 @@
 <section id="element-Label">
 <h5>Label</h5>
 <div class="glossary-ref" data-ref="glossary-label"></div>
-<pre class="schema-usage">
+<pre class="prov-attribute" element="prov:label" schemaType="prov:InternationalizedString">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="label" type="prov:InternationalizedString"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:label">
 &lt;prov:document
     xmlns:prov="http://www.w3.org/ns/prov#" 
     xmlns:ex="http://example.com/ns/ex#"&gt;
@@ -1934,10 +2021,10 @@
 <section id="element-Location">
 <h5>Location</h5>
 <div class="glossary-ref" data-ref="glossary-location"></div>
-<pre class="schema-usage">
+<pre class="prov-attribute" element="prov:location" schemaType="xs:anySimpleType">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="location" type="xs:anySimpleType"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:location">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1961,10 +2048,10 @@
 <section id="element-Role">
 <h5>Role</h5>
 <div class="glossary-ref" data-ref="glossary-role"></div>
-<pre class="schema-usage">
+<pre class="prov-attribute" element="prov:role" schemaType="xs:anySimpleType">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="role" type="xs:anySimpleType"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:role">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -1993,10 +2080,10 @@
 <section id="element-Type">
 <h5>Type</h5>
 <div class="glossary-ref" data-ref="glossary-type"></div>
-<pre class="schema-usage">
+<pre class="prov-attribute" element="prov:type" schemaType="xs:anySimpleType">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="type" type="xs:anySimpleType"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:type">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -2029,10 +2116,10 @@
 <section id="element-Value">
 <h5>Value</h5>
 <div class="glossary-ref" data-ref="glossary-value-attribute"></div>
-<pre class="schema-usage">
+<pre class="prov-attribute" element="prov:value" schemaType="xs:anySimpleType">
 &lt;xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="value" type="xs:anySimpleType"/&gt;
 </pre>
-<pre class="example">
+<pre class="example" topic="prov:value">
 &lt;prov:document
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -2078,25 +2165,10 @@
 The internet media type / MIME type for PROV-XML is "<code style="color: black">application/provenance+xml</code>".
 </p>
 
-<div class="note">
-<p>MIME type may not be registered yet.</p>
-</div>
-
 <p>
 It is recommended that PROV-XML files have the extension "<code style="color: black">.provx</code>" (all lowercase) on all platforms.
 </p>
 
-<p>
-It is recommended that PROV-XML files stored on Machintosh HFS file systems be given a file type of "<code style="color: black">provx</code>" (all lowercase).
-</p>
-
-<div class="note">
-<p>REVIEW QUESTION:</p>
-<p>
-Can Machintosh file types have 5 characters?
-</p>
-</div>
-
 </section>
 
 
@@ -2105,16 +2177,31 @@
 
 <!-- Should this be folded or hid in some way until the user asks to see it? -->
 <section class="appendix" id="prov-xml-schema"> 
-      <h2>Full XML Schema</h2> 
-		<pre class="full-schema">
-&lt;?xml version="1.0" encoding="utf-8"?&gt;
 
-&lt;!-- 
-     In PROV-DM, all ids are qualified names, specified as prov:QualifiedName in PROV-N.
-     In this schema, all ids are instead defined as xsd:QNames. 
-  --&gt;
+<h2>XML Schema</h2>
 
+<section id="prov-schema">
+<h3>prov.xsd</h3>
+<pre class="prov-schema">
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;xs:schema targetNamespace="http://www.w3.org/ns/prov#"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:prov="http://www.w3.org/ns/prov#"
+           elementFormDefault="qualified"
+           attributeFormDefault="unqualified"&gt;
 
+	&lt;xs:include schemaLocation="prov-core.xsd"/&gt;
+	&lt;xs:include schemaLocation="extensions/prov-dictionary.xsd"/&gt;
+	&lt;xs:include schemaLocation="extensions/prov-links.xsd"/&gt;
+
+&lt;/xs:schema&gt;
+</pre>
+</section>
+
+<section id="prov-core-schema">
+<h3>prov-core.xsd</h3>
+<pre class="prov-core-schema">
+&lt;?xml version="1.0" encoding="utf-8"?&gt;
 &lt;xs:schema targetNamespace="http://www.w3.org/ns/prov#"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:prov="http://www.w3.org/ns/prov#"
@@ -2133,122 +2220,114 @@
   
   &lt;xs:complexType name="Entity"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:location"/&gt;
-        &lt;xs:element ref="prov:value"/&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:value" minOccurs="0"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;  
 
   &lt;xs:complexType name="Activity"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="startTime" type="xs:dateTime" minOccurs="0"/&gt; 
-      &lt;xs:element name="endTime" type="xs:dateTime" minOccurs="0"/&gt; 
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:location"/&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="startTime" type="xs:dateTime" minOccurs="0"/&gt; 
+        &lt;xs:element name="endTime" type="xs:dateTime" minOccurs="0"/&gt;
+        &lt;!-- prov attributes --&gt; 
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Generation"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="entity" type="prov:EntityRef"/&gt;
-      &lt;xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/&gt;
-      &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:location"/&gt;
-        &lt;xs:element ref="prov:role"/&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="entity" type="prov:IDRef"/&gt;
+        &lt;xs:element name="activity" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Usage"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="activity" type="prov:ActivityRef"/&gt;
-      &lt;xs:element name="entity" type="prov:EntityRef" minOccurs="0"/&gt;
-      &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:location"/&gt;
-        &lt;xs:element ref="prov:role"/&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="activity" type="prov:IDRef"/&gt;
+        &lt;xs:element name="entity" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Communication"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="informed" type="prov:ActivityRef"/&gt;
-      &lt;xs:element name="informant" type="prov:ActivityRef"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="informed" type="prov:IDRef"/&gt;
+        &lt;xs:element name="informant" type="prov:IDRef"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Start"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="activity" type="prov:ActivityRef"/&gt;
-      &lt;xs:element name="trigger" type="prov:EntityRef" minOccurs="0"/&gt;
-      &lt;xs:element name="starter" type="prov:ActivityRef" minOccurs="0"/&gt;
-      &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:location"/&gt;
-        &lt;xs:element ref="prov:role"/&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="activity" type="prov:IDRef"/&gt;
+        &lt;xs:element name="trigger" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;xs:element name="starter" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="End"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="activity" type="prov:ActivityRef"/&gt;
-      &lt;xs:element name="trigger" type="prov:EntityRef"  minOccurs="0"/&gt;
-      &lt;xs:element name="ender" type="prov:ActivityRef" minOccurs="0"/&gt;
-      &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:location"/&gt;
-        &lt;xs:element ref="prov:role"/&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="activity" type="prov:IDRef"/&gt;
+        &lt;xs:element name="trigger" type="prov:IDRef"  minOccurs="0"/&gt;
+        &lt;xs:element name="ender" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Invalidation"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="entity" type="prov:EntityRef"/&gt;
-      &lt;xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/&gt;
-      &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:location"/&gt;
-        &lt;xs:element ref="prov:role"/&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="entity" type="prov:IDRef"/&gt;
+        &lt;xs:element name="activity" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;xs:element name="time" type="xs:dateTime" minOccurs="0"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
@@ -2257,156 +2336,152 @@
   
   &lt;xs:complexType name="Derivation"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="generatedEntity" type="prov:EntityRef"/&gt;
-      &lt;xs:element name="usedEntity" type="prov:EntityRef"/&gt;
-      &lt;xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/&gt;
-      &lt;xs:element name="generation" type="prov:GenerationRef" minOccurs="0"/&gt;
-      &lt;xs:element name="usage" type="prov:UsageRef" minOccurs="0"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="generatedEntity" type="prov:IDRef"/&gt;
+        &lt;xs:element name="usedEntity" type="prov:IDRef"/&gt;
+        &lt;xs:element name="activity" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;xs:element name="generation" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;xs:element name="usage" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Revision"&gt;
-	&lt;xs:complexContent&gt;
+    &lt;xs:complexContent&gt;
       &lt;xs:extension base="prov:Derivation"&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Quotation"&gt;
     &lt;xs:complexContent&gt;
-	  &lt;xs:extension base="prov:Derivation"&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+      &lt;xs:extension base="prov:Derivation"&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="PrimarySource"&gt;
     &lt;xs:complexContent&gt;
-	  &lt;xs:extension base="prov:Derivation"&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+      &lt;xs:extension base="prov:Derivation"&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;!-- Component 3 --&gt;
   
   &lt;xs:complexType name="Agent"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:location"/&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Person"&gt;
     &lt;xs:complexContent&gt;
-	  &lt;xs:extension base="prov:Agent"&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+      &lt;xs:extension base="prov:Agent"&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Organization"&gt;
     &lt;xs:complexContent&gt;
-	  &lt;xs:extension base="prov:Agent"&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+      &lt;xs:extension base="prov:Agent"&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="SoftwareAgent"&gt;
     &lt;xs:complexContent&gt;
-	  &lt;xs:extension base="prov:Agent"&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+      &lt;xs:extension base="prov:Agent"&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Attribution"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="entity" type="prov:EntityRef"/&gt;
-      &lt;xs:element name="agent" type="prov:AgentRef"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="entity" type="prov:IDRef"/&gt;
+        &lt;xs:element name="agent" type="prov:IDRef"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Association"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="activity" type="prov:ActivityRef"/&gt;
-      &lt;xs:element name="agent" type="prov:AgentRef" minOccurs="0"/&gt;
-      &lt;xs:element name="plan" type="prov:PlanRef" minOccurs="0"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:role"/&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="activity" type="prov:IDRef"/&gt;
+        &lt;xs:element name="agent" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;xs:element name="plan" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Delegation"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="delegate" type="prov:AgentRef"/&gt;
-      &lt;xs:element name="responsible" type="prov:AgentRef"/&gt;
-      &lt;xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="delegate" type="prov:IDRef"/&gt;
+        &lt;xs:element name="responsible" type="prov:IDRef"/&gt;
+        &lt;xs:element name="activity" type="prov:IDRef" minOccurs="0"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Influence"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="influencee" type="prov:AnyRef"/&gt;
-      &lt;xs:element name="influencer" type="prov:AnyRef"/&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:label"/&gt;
-        &lt;xs:element ref="prov:type"/&gt;
-        &lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element name="influencee" type="prov:IDRef"/&gt;
+        &lt;xs:element name="influencer" type="prov:IDRef"/&gt;
+        &lt;!-- prov attributes --&gt;
+        &lt;xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
     &lt;xs:attribute ref="prov:id"/&gt;
   &lt;/xs:complexType&gt;
 
   &lt;!-- Component 4 --&gt;
 
+  &lt;!-- Is there a way to have this still extend prov:Entity? --&gt;
+
   &lt;xs:complexType name="Bundle"&gt;
-	&lt;xs:complexContent&gt;
-	  &lt;xs:extension base="prov:Entity"&gt;
-		&lt;xs:sequence&gt;
-	      &lt;xs:group ref="prov:documentElements"/&gt;
-	    &lt;/xs:sequence&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+    &lt;xs:complexContent&gt;
+      &lt;xs:extension base="prov:Entity"&gt;
+        &lt;xs:sequence maxOccurs="unbounded"&gt;
+            &lt;xs:group ref="prov:documentElements"/&gt;
+        &lt;/xs:sequence&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;!-- Component 5 --&gt;
 
   &lt;xs:complexType name="Specialization"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="specificEntity" type="prov:EntityRef"/&gt;
-      &lt;xs:element name="generalEntity" type="prov:EntityRef"/&gt;
+      &lt;xs:element name="specificEntity" type="prov:IDRef"/&gt;
+      &lt;xs:element name="generalEntity" type="prov:IDRef"/&gt;
     &lt;/xs:sequence&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Alternate"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="alternate1" type="prov:EntityRef"/&gt;
-      &lt;xs:element name="alternate2" type="prov:EntityRef"/&gt;
+      &lt;xs:element name="alternate1" type="prov:IDRef"/&gt;
+      &lt;xs:element name="alternate2" type="prov:IDRef"/&gt;
     &lt;/xs:sequence&gt;
   &lt;/xs:complexType&gt;
   
@@ -2414,30 +2489,30 @@
 
   &lt;xs:complexType name="Collection"&gt;
     &lt;xs:complexContent&gt;
-	  &lt;xs:extension base="prov:Entity"&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+      &lt;xs:extension base="prov:Entity"&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="EmptyCollection"&gt;
     &lt;xs:complexContent&gt;
-	  &lt;xs:extension base="prov:Collection"&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+      &lt;xs:extension base="prov:Collection"&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Membership"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="collection" type="prov:CollectionRef"/&gt;
-      &lt;xs:element name="entity" type="prov:EntityRef" maxOccurs="unbounded"/&gt;
+      &lt;xs:element name="collection" type="prov:IDRef"/&gt;
+      &lt;xs:element name="entity" type="prov:IDRef" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="Plan"&gt;
     &lt;xs:complexContent&gt;
-	  &lt;xs:extension base="prov:Entity"&gt;
-	  &lt;/xs:extension&gt;
-	&lt;/xs:complexContent&gt;
+      &lt;xs:extension base="prov:Entity"&gt;
+      &lt;/xs:extension&gt;
+    &lt;/xs:complexContent&gt;
   &lt;/xs:complexType&gt;
 
   &lt;xs:complexType name="InternationalizedString"&gt;
@@ -2450,10 +2525,9 @@
 
 
    &lt;!--
-       Typed literals are encoded by means
-       of xsi:type that represent the prov:datatype.
-
-       --&gt;
+    Typed literals are encoded by means
+    of xsi:type that represent the prov:datatype.
+   --&gt;
   
   &lt;xs:element name="label" type="prov:InternationalizedString"/&gt;
   &lt;xs:element name="role" type="xs:anySimpleType"/&gt;
@@ -2461,43 +2535,12 @@
   &lt;xs:element name="location" type="xs:anySimpleType"/&gt;
   &lt;xs:element name="value" type="xs:anySimpleType"/&gt;
 
-  &lt;!-- See comment in preamble.
-       These should be prov:QualifiedName
-       but instead are xsd:QName for tools to process them --&gt;
-
-  &lt;!--  Possible alternative, but may cause us 
-        to lose benefit of existing XML tooling
-  &lt;xs:attribute name="id"  type="xs:anyURI"/&gt;
-  &lt;xs:attribute name="ref" type="xs:anyURI"/&gt;
-  --&gt;
-
   &lt;xs:attribute name="id" type="xs:QName"/&gt;
   &lt;xs:attribute name="ref" type="xs:QName"/&gt;
 
-  &lt;xs:complexType name="ActivityRef"&gt;
+  &lt;xs:complexType name="IDRef"&gt;
     &lt;xs:attribute ref="prov:ref" use="required" /&gt;
   &lt;/xs:complexType&gt;
-  &lt;xs:complexType name="EntityRef"&gt;
-    &lt;xs:attribute ref="prov:ref" use="required"/&gt;
-  &lt;/xs:complexType&gt;
-  &lt;xs:complexType name="CollectionRef"&gt;
-    &lt;xs:attribute ref="prov:ref" use="required"/&gt;
-  &lt;/xs:complexType&gt;
-  &lt;xs:complexType name="PlanRef"&gt;
-	&lt;xs:attribute ref="prov:ref" use="required"/&gt;
-  &lt;/xs:complexType&gt;
-  &lt;xs:complexType name="AgentRef"&gt;
-    &lt;xs:attribute ref="prov:ref" use="required"/&gt;
-  &lt;/xs:complexType&gt;
-  &lt;xs:complexType name="UsageRef"&gt;
-    &lt;xs:attribute ref="prov:ref" use="required"/&gt;
-  &lt;/xs:complexType&gt;
-  &lt;xs:complexType name="GenerationRef"&gt;
-    &lt;xs:attribute ref="prov:ref" use="required"/&gt;
-  &lt;/xs:complexType&gt;
-  &lt;xs:complexType name="AnyRef"&gt;
-    &lt;xs:attribute ref="prov:ref" use="required"/&gt;
-  &lt;/xs:complexType&gt;
 
   &lt;!--
      top-level definition of elements following the salami slice XSD design pattern
@@ -2553,53 +2596,64 @@
 
   &lt;xs:group name="documentElements"&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
-        &lt;xs:element ref="prov:entity"/&gt;
-        &lt;xs:element ref="prov:activity"/&gt;
-        &lt;xs:element ref="prov:wasGeneratedBy"/&gt;
-        &lt;xs:element ref="prov:used"/&gt;
-        &lt;xs:element ref="prov:wasInformedBy"/&gt;
-        &lt;xs:element ref="prov:wasStartedBy"/&gt;
-        &lt;xs:element ref="prov:wasEndedBy"/&gt;
-        &lt;xs:element ref="prov:wasInvalidatedBy"/&gt;
-        &lt;xs:element ref="prov:wasDerivedFrom"/&gt;
-        &lt;xs:element ref="prov:wasRevisionOf"/&gt;
-        &lt;xs:element ref="prov:wasQuotedFrom"/&gt;
-        &lt;xs:element ref="prov:hadPrimarySource"/&gt;
-        &lt;xs:element ref="prov:agent"/&gt;
-        &lt;xs:element ref="prov:person"/&gt;
-        &lt;xs:element ref="prov:organization"/&gt;
-        &lt;xs:element ref="prov:softwareAgent"/&gt;
-        &lt;xs:element ref="prov:wasAttributedTo"/&gt;
-        &lt;xs:element ref="prov:wasAssociatedWith"/&gt;
-        &lt;xs:element ref="prov:actedOnBehalfOf"/&gt;
-        &lt;xs:element ref="prov:wasInfluencedBy"/&gt;
-        &lt;xs:element ref="prov:bundle"/&gt;
-        &lt;xs:element ref="prov:specializationOf"/&gt;
-        &lt;xs:element ref="prov:alternateOf"/&gt;
-	    &lt;xs:element ref="prov:collection"/&gt;
-	    &lt;xs:element ref="prov:emptyCollection"/&gt;
-        &lt;xs:element ref="prov:hadMember"/&gt;
-        &lt;xs:element ref="prov:plan"/&gt;
-		&lt;xs:any namespace="##other"/&gt;
-      &lt;/xs:choice&gt;
+        &lt;xs:element ref="prov:entity" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:activity" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasGeneratedBy" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:used" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasInformedBy" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasStartedBy" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasEndedBy" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasInvalidatedBy" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasDerivedFrom" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasRevisionOf" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasQuotedFrom" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:hadPrimarySource" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:agent" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:person" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:organization" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:softwareAgent" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasAttributedTo" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasAssociatedWith" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:actedOnBehalfOf" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:wasInfluencedBy" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:bundle" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:specializationOf" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:alternateOf" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:collection" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:emptyCollection" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:hadMember" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:plan" minOccurs="0" maxOccurs="unbounded"/&gt;
+        &lt;xs:element ref="prov:abstractElement" minOccurs="0" maxOccurs="unbounded" /&gt;
     &lt;/xs:sequence&gt;
   &lt;/xs:group&gt;
 
   &lt;xs:element name="document" type="prov:Document" /&gt;
   &lt;xs:complexType name="Document"&gt;
-    &lt;xs:sequence&gt;
-      &lt;xs:choice maxOccurs="unbounded"&gt;
-        &lt;xs:group ref="prov:documentElements"/&gt;
-        &lt;xs:element ref="prov:bundle"/&gt;
-      &lt;/xs:choice&gt;
+    &lt;xs:sequence maxOccurs="unbounded"&gt;
+        &lt;xs:group ref="prov:documentElements" minOccurs="0"/&gt;
+        &lt;xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/&gt;
     &lt;/xs:sequence&gt;
   &lt;/xs:complexType&gt;
 
-&lt;/xs:schema&gt;
+  &lt;!-- abstract element used by extensions --&gt;
 
-		</pre>
-    </section> 
+  &lt;xs:element name="abstractElement" abstract="true" /&gt;
+
+&lt;/xs:schema&gt;
+</pre>
+</section>
+
+<section id="extension-schemas">
+<h3>Extension Schemas</h3>
+<section id="prov-dictionary-schema">
+<h4>prov-dictionary.xsd</h4>
+</section>
+
+<section id="prov-links-schena">
+<h4>prov-links.xsd</h4>
+</section>
+</section>
+</section> 
 
 <section class="appendix"> 
       <h2>Acknowledgements</h2> 
--- a/xml/schema/prov-core.xsd	Mon Feb 11 22:28:37 2013 +0100
+++ b/xml/schema/prov-core.xsd	Tue Feb 12 00:40:26 2013 -0700
@@ -24,10 +24,10 @@
   
   <xs:complexType name="Entity">
     <xs:sequence>
-		<!-- prov attributes -->
-		<xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
+        <!-- prov attributes -->
+        <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:value" minOccurs="0"/>
         <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
@@ -36,25 +36,25 @@
 
   <xs:complexType name="Activity">
     <xs:sequence>
-		<xs:element name="startTime" type="xs:dateTime" minOccurs="0"/> 
-		<xs:element name="endTime" type="xs:dateTime" minOccurs="0"/>
-		<!-- prov attributes --> 
-		<xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element name="startTime" type="xs:dateTime" minOccurs="0"/> 
+        <xs:element name="endTime" type="xs:dateTime" minOccurs="0"/>
+        <!-- prov attributes --> 
+        <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
     <xs:attribute ref="prov:id"/>
   </xs:complexType>
 
   <xs:complexType name="Generation">
     <xs:sequence>
-		<xs:element name="entity" type="prov:IDRef"/>
-		<xs:element name="activity" type="prov:IDRef" minOccurs="0"/>
-		<xs:element name="time" type="xs:dateTime" minOccurs="0"/>
-		<!-- prov attributes -->
-		<xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element name="entity" type="prov:IDRef"/>
+        <xs:element name="activity" type="prov:IDRef" minOccurs="0"/>
+        <xs:element name="time" type="xs:dateTime" minOccurs="0"/>
+        <!-- prov attributes -->
+        <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
         <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
@@ -64,11 +64,11 @@
 
   <xs:complexType name="Usage">
     <xs:sequence>
-		<xs:element name="activity" type="prov:IDRef"/>
-		<xs:element name="entity" type="prov:IDRef" minOccurs="0"/>
-		<xs:element name="time" type="xs:dateTime" minOccurs="0"/>
-		<!-- prov attributes -->
-		<xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element name="activity" type="prov:IDRef"/>
+        <xs:element name="entity" type="prov:IDRef" minOccurs="0"/>
+        <xs:element name="time" type="xs:dateTime" minOccurs="0"/>
+        <!-- prov attributes -->
+        <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
@@ -79,9 +79,9 @@
 
   <xs:complexType name="Communication">
     <xs:sequence>
-		<xs:element name="informed" type="prov:IDRef"/>
-		<xs:element name="informant" type="prov:IDRef"/>
-		<!-- prov attributes -->
+        <xs:element name="informed" type="prov:IDRef"/>
+        <xs:element name="informant" type="prov:IDRef"/>
+        <!-- prov attributes -->
         <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
         <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
@@ -91,12 +91,12 @@
 
   <xs:complexType name="Start">
     <xs:sequence>
-		<xs:element name="activity" type="prov:IDRef"/>
-		<xs:element name="trigger" type="prov:IDRef" minOccurs="0"/>
-		<xs:element name="starter" type="prov:IDRef" minOccurs="0"/>
-		<xs:element name="time" type="xs:dateTime" minOccurs="0"/>
-		<!-- prov attributes -->
-		<xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element name="activity" type="prov:IDRef"/>
+        <xs:element name="trigger" type="prov:IDRef" minOccurs="0"/>
+        <xs:element name="starter" type="prov:IDRef" minOccurs="0"/>
+        <xs:element name="time" type="xs:dateTime" minOccurs="0"/>
+        <!-- prov attributes -->
+        <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
@@ -107,12 +107,12 @@
 
   <xs:complexType name="End">
     <xs:sequence>
-		<xs:element name="activity" type="prov:IDRef"/>
-		<xs:element name="trigger" type="prov:IDRef"  minOccurs="0"/>
-		<xs:element name="ender" type="prov:IDRef" minOccurs="0"/>
-		<xs:element name="time" type="xs:dateTime" minOccurs="0"/>
-		<!-- prov attributes -->
-		<xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element name="activity" type="prov:IDRef"/>
+        <xs:element name="trigger" type="prov:IDRef"  minOccurs="0"/>
+        <xs:element name="ender" type="prov:IDRef" minOccurs="0"/>
+        <xs:element name="time" type="xs:dateTime" minOccurs="0"/>
+        <!-- prov attributes -->
+        <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
@@ -123,11 +123,11 @@
 
   <xs:complexType name="Invalidation">
     <xs:sequence>
-		<xs:element name="entity" type="prov:IDRef"/>
-		<xs:element name="activity" type="prov:IDRef" minOccurs="0"/>
-		<xs:element name="time" type="xs:dateTime" minOccurs="0"/>
-		<!-- prov attributes -->
-		<xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element name="entity" type="prov:IDRef"/>
+        <xs:element name="activity" type="prov:IDRef" minOccurs="0"/>
+        <xs:element name="time" type="xs:dateTime" minOccurs="0"/>
+        <!-- prov attributes -->
+        <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
@@ -140,12 +140,12 @@
   
   <xs:complexType name="Derivation">
     <xs:sequence>
-		<xs:element name="generatedEntity" type="prov:IDRef"/>
-		<xs:element name="usedEntity" type="prov:IDRef"/>
-		<xs:element name="activity" type="prov:IDRef" minOccurs="0"/>
-		<xs:element name="generation" type="prov:IDRef" minOccurs="0"/>
-		<xs:element name="usage" type="prov:IDRef" minOccurs="0"/>
-		<!-- prov attributes -->
+        <xs:element name="generatedEntity" type="prov:IDRef"/>
+        <xs:element name="usedEntity" type="prov:IDRef"/>
+        <xs:element name="activity" type="prov:IDRef" minOccurs="0"/>
+        <xs:element name="generation" type="prov:IDRef" minOccurs="0"/>
+        <xs:element name="usage" type="prov:IDRef" minOccurs="0"/>
+        <!-- prov attributes -->
         <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
         <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
@@ -154,32 +154,32 @@
   </xs:complexType>
 
   <xs:complexType name="Revision">
-	<xs:complexContent>
+    <xs:complexContent>
       <xs:extension base="prov:Derivation">
-	  </xs:extension>
-	</xs:complexContent>
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="Quotation">
     <xs:complexContent>
-	  <xs:extension base="prov:Derivation">
-	  </xs:extension>
-	</xs:complexContent>
+      <xs:extension base="prov:Derivation">
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="PrimarySource">
     <xs:complexContent>
-	  <xs:extension base="prov:Derivation">
-	  </xs:extension>
-	</xs:complexContent>
+      <xs:extension base="prov:Derivation">
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <!-- Component 3 -->
   
   <xs:complexType name="Agent">
     <xs:sequence>
-		<!-- prov attributes -->
-		<xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
+        <!-- prov attributes -->
+        <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:location" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
         <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
@@ -189,30 +189,30 @@
 
   <xs:complexType name="Person">
     <xs:complexContent>
-	  <xs:extension base="prov:Agent">
-	  </xs:extension>
-	</xs:complexContent>
+      <xs:extension base="prov:Agent">
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="Organization">
     <xs:complexContent>
-	  <xs:extension base="prov:Agent">
-	  </xs:extension>
-	</xs:complexContent>
+      <xs:extension base="prov:Agent">
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="SoftwareAgent">
     <xs:complexContent>
-	  <xs:extension base="prov:Agent">
-	  </xs:extension>
-	</xs:complexContent>
+      <xs:extension base="prov:Agent">
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="Attribution">
     <xs:sequence>
-		<xs:element name="entity" type="prov:IDRef"/>
-		<xs:element name="agent" type="prov:IDRef"/>
-		<!-- prov attributes -->
+        <xs:element name="entity" type="prov:IDRef"/>
+        <xs:element name="agent" type="prov:IDRef"/>
+        <!-- prov attributes -->
         <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
         <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
@@ -222,11 +222,11 @@
 
   <xs:complexType name="Association">
     <xs:sequence>
-		<xs:element name="activity" type="prov:IDRef"/>
-		<xs:element name="agent" type="prov:IDRef" minOccurs="0"/>
-		<xs:element name="plan" type="prov:IDRef" minOccurs="0"/>
-		<!-- prov attributes -->
-		<xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element name="activity" type="prov:IDRef"/>
+        <xs:element name="agent" type="prov:IDRef" minOccurs="0"/>
+        <xs:element name="plan" type="prov:IDRef" minOccurs="0"/>
+        <!-- prov attributes -->
+        <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
         <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
@@ -236,10 +236,10 @@
 
   <xs:complexType name="Delegation">
     <xs:sequence>
-		<xs:element name="delegate" type="prov:IDRef"/>
-		<xs:element name="responsible" type="prov:IDRef"/>
-		<xs:element name="activity" type="prov:IDRef" minOccurs="0"/>
-		<!-- prov attributes -->
+        <xs:element name="delegate" type="prov:IDRef"/>
+        <xs:element name="responsible" type="prov:IDRef"/>
+        <xs:element name="activity" type="prov:IDRef" minOccurs="0"/>
+        <!-- prov attributes -->
         <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
         <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
@@ -249,9 +249,9 @@
 
   <xs:complexType name="Influence">
     <xs:sequence>
-		<xs:element name="influencee" type="prov:IDRef"/>
-		<xs:element name="influencer" type="prov:IDRef"/>
-		<!-- prov attributes -->
+        <xs:element name="influencee" type="prov:IDRef"/>
+        <xs:element name="influencer" type="prov:IDRef"/>
+        <!-- prov attributes -->
         <xs:element ref="prov:label" minOccurs="0" maxOccurs="unbounded"/>
         <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
         <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
@@ -264,13 +264,13 @@
   <!-- Is there a way to have this still extend prov:Entity? -->
 
   <xs:complexType name="Bundle">
-	<xs:complexContent>
-	  <xs:extension base="prov:Entity">
-		<xs:sequence maxOccurs="unbounded">
-			<xs:group ref="prov:documentElements"/>
-	    </xs:sequence>
-	  </xs:extension>
-	</xs:complexContent>
+    <xs:complexContent>
+      <xs:extension base="prov:Entity">
+        <xs:sequence maxOccurs="unbounded">
+            <xs:group ref="prov:documentElements"/>
+        </xs:sequence>
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <!-- Component 5 -->
@@ -293,16 +293,16 @@
 
   <xs:complexType name="Collection">
     <xs:complexContent>
-	  <xs:extension base="prov:Entity">
-	  </xs:extension>
-	</xs:complexContent>
+      <xs:extension base="prov:Entity">
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="EmptyCollection">
     <xs:complexContent>
-	  <xs:extension base="prov:Collection">
-	  </xs:extension>
-	</xs:complexContent>
+      <xs:extension base="prov:Collection">
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="Membership">
@@ -314,9 +314,9 @@
 
   <xs:complexType name="Plan">
     <xs:complexContent>
-	  <xs:extension base="prov:Entity">
-	  </xs:extension>
-	</xs:complexContent>
+      <xs:extension base="prov:Entity">
+      </xs:extension>
+    </xs:complexContent>
   </xs:complexType>
 
   <xs:complexType name="InternationalizedString">
@@ -329,10 +329,9 @@
 
 
    <!--
-       Typed literals are encoded by means
-       of xsi:type that represent the prov:datatype.
-
-       -->
+    Typed literals are encoded by means
+    of xsi:type that represent the prov:datatype.
+   -->
   
   <xs:element name="label" type="prov:InternationalizedString"/>
   <xs:element name="role" type="xs:anySimpleType"/>
@@ -400,43 +399,43 @@
   <!-- document elements -->
 
   <xs:group name="documentElements">
-	<xs:sequence>
-		<xs:element ref="prov:entity" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:activity" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasGeneratedBy" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:used" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasInformedBy" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasStartedBy" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasEndedBy" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasInvalidatedBy" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasDerivedFrom" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasRevisionOf" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasQuotedFrom" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:hadPrimarySource" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:agent" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:person" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:organization" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:softwareAgent" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasAttributedTo" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasAssociatedWith" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:actedOnBehalfOf" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:wasInfluencedBy" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:bundle" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:specializationOf" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:alternateOf" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:collection" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:emptyCollection" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:hadMember" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:plan" minOccurs="0" maxOccurs="unbounded"/>
-		<xs:element ref="prov:abstractElement" minOccurs="0" maxOccurs="unbounded" />
+    <xs:sequence>
+        <xs:element ref="prov:entity" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:activity" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasGeneratedBy" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:used" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasInformedBy" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasStartedBy" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasEndedBy" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasInvalidatedBy" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasDerivedFrom" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasRevisionOf" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasQuotedFrom" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:hadPrimarySource" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:agent" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:person" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:organization" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:softwareAgent" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasAttributedTo" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasAssociatedWith" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:actedOnBehalfOf" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:wasInfluencedBy" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:bundle" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:specializationOf" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:alternateOf" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:collection" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:emptyCollection" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:hadMember" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:plan" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:element ref="prov:abstractElement" minOccurs="0" maxOccurs="unbounded" />
     </xs:sequence>
   </xs:group>
 
   <xs:element name="document" type="prov:Document" />
   <xs:complexType name="Document">
     <xs:sequence maxOccurs="unbounded">
-		<xs:group ref="prov:documentElements" minOccurs="0"/>
-		<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+        <xs:group ref="prov:documentElements" minOccurs="0"/>
+        <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>