--- a/xml/prov-xml.html Wed Feb 13 17:12:45 2013 -0700
+++ b/xml/prov-xml.html Wed Feb 13 17:13:33 2013 -0700
@@ -44,7 +44,7 @@
$("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>The element <code>"+$(this).attr("element")+"</code> is used to reference a "+$(this).attr("schemaType")+" from within a prov:Document or prov:BundleConstructor.</p>")
.before("<p>Element defintion in XML Schema:</p>")
});
@@ -54,7 +54,7 @@
.before("<p>Element defintion in XML Schema:</p>")
});
- $("pre.example[title]").each(function() {
+ $("pre.example[title]:not([:ignore])").each(function() {
$(this)
.before("<p>The following is an example of using <code>"+$(this).attr("title")+"</code> in PROV-XML.</p>");
});
@@ -174,6 +174,8 @@
// Add extraReferences to bibliography database
preProcess: [addExtraReferences, addProvReferences],
+ //postProcess: [updateSectionRefs, updateDfn, updateFigures, checkLinksToW3CReports, setContributors, setColoredDiffs]
+
// will we have a postProcess?
};
</script>
@@ -190,27 +192,19 @@
<section id="sotd">
<h4>PROV Family of Documents</h4>
This document is part of the PROV family of documents, a set of documents defining various aspects that are necessary to achieve the vision of inter-operable
-interchange of provenance information in heterogeneous environments such as the Web. These documents are:
+interchange of provenance information in heterogeneous environments such as the Web. These documents are listed below. Please consult the [[PROV-OVERVIEW]] for a guide to reading these documents.
<ul>
-<li> <a href="http://www.w3.org/TR/2012/WD-prov-overview-20121211/">PROV-OVERVIEW</a> (To be published as Note), an overview of the PROV family of documents [[PROV-OVERVIEW]];</li>
-<li> <a href="http://www.w3.org/TR/2012/WD-prov-primer-20121211/">PROV-PRIMER</a> (To be published as Note), a primer for the PROV data model [[PROV-PRIMER]];</li>
-<li> <a href="http://www.w3.org/TR/2012/CR-prov-o-20121211/">PROV-O</a> (Candidate Recommendation), the PROV ontology, an OWL2 ontology allowing the mapping of PROV to RDF [[!PROV-O]];</li>
-<li> <a href="http://www.w3.org/TR/2012/CR-prov-dm-20121211/">PROV-DM</a> (Candidate Recommendation), the PROV data model for provenance [[PROV-DM]];</li>
-<li> <a href="http://www.w3.org/TR/2012/CR-prov-n-20121211/">PROV-N</a> (Candidate Recommendation), a notation for provenance aimed at human consumption [[!PROV-N]];</li>
-<li> <a href="http://www.w3.org/TR/2012/CR-prov-constraints-20121211/">PROV-CONSTRAINTS</a> (Candidate Recommendation), a set of constraints applying to the PROV data model [[!PROV-CONSTRAINTS]];</li>
-<li> <a href="http://www.w3.org/TR/2012/WD-prov-aq-20120619/">PROV-AQ</a> (To be published as Note), the mechanisms for accessing and querying provenance [[PROV-AQ]]; </li>
-<li> <a href="http://www.w3.org/TR/2012/WD-prov-xml-20121211/">PROV-XML</a> (To be published as Note), an XML schema for the PROV data model (this document).</li>
-
-</ul>
-<h4>How to read the PROV Family of Documents</h4>
-<ul>
-<li>[[PROV-OVERVIEW]] overviews the PROV family of documents. </li>
-<li>The primer [[PROV-PRIMER]] is the entry point to PROV offering an introduction to the provenance model.</li>
-<li>The Linked Data and Semantic Web community should focus on [[!PROV-O]] defining PROV classes and properties specified in an OWL2 ontology. For further details, PROV-DM and [[!PROV-CONSTRAINTS]] specify the constraints applicable to the data model, and its interpretation. </li>
-<li>The XML community should focus on [[PROV-XML]] defining an XML schema for PROV. Further details can also be found in PROV-DM and [[!PROV-CONSTRAINTS]].</li>
-<li>Developers seeking to retrieve or publish provenance should focus on [[PROV-AQ]].</li>
-<li>Readers seeking to implement other PROV serializations
-should focus on PROV-DM and [[!PROV-CONSTRAINTS]]. [[!PROV-O]], [[!PROV-N]], and [[PROV-XML]] offer examples of mapping to RDF, text, and XML, respectively.</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-overview-20130312/">PROV-OVERVIEW</a> (To be published as Note), an overview of the PROV family of documents [[PROV-OVERVIEW]];</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-primer-20130312/">PROV-PRIMER</a> (To be published as Note), a primer for the PROV data model [[PROV-PRIMER]];</li>
+<li> <a href="http://www.w3.org/TR/2013/PR-prov-o-20130312/">PROV-O</a> (Proposed Recommendation), the PROV ontology, an OWL2 ontology allowing the mapping of PROV to RDF [[!PROV-O]];</li>
+<li> <a href="http://www.w3.org/TR/2013/PR-prov-dm-20130312/">PROV-DM</a> (Proposed Recommendation), the PROV data model for provenance [[PROV-DM]];</li>
+<li> <a href="http://www.w3.org/TR/2013/PR-prov-n-20130312/">PROV-N</a> (Proposed Recommendation), a notation for provenance aimed at human consumption [[!PROV-N]];</li>
+<li> <a href="http://www.w3.org/TR/2013/PR-prov-constraints-20130312/">PROV-CONSTRAINTS</a> (Proposed Recommendation), a set of constraints applying to the PROV data model [[!PROV-CONSTRAINTS]];</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-xml-20130312/">PROV-XML</a> (To be published as Note), an XML schema for the PROV data model (this document);</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-aq-20130312/">PROV-AQ</a> (To be published as Note), the mechanisms for accessing and querying provenance [[PROV-AQ]]; </li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-dictionary-20130312/">PROV-DICTIONARY</a> (To be published as Note), introduces a specific type of collection, consisting of key-entity pairs [[PROV-DICTIONARY]];</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-dc-20130312/">PROV-DC</a> (To be published as Note), provides a mapping between PROV and Dublic Core Terms [[PROV-DC]];</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-links-20130312/">PROV-LINKS</a> (To be published as Note), introduces a mechanism to link across bundles [[PROV-LINKS]].</li>
</ul>
</section> <!-- end sotd -->
@@ -268,7 +262,7 @@
<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 <b>prov-core.xsd</b> schema and elements defined in notes are defined in extension schemas (e.g. <b>prov-dictionary.xsd</b>, <b>prov-links.xsd</b>). The default schema, <b>prov.xsd</b>, imports <b>prov-core.xsd</b> 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 <b>prov-core.xsd</b>.</p>
+<p>The PROV-XML schema have been modularized so that extension elements defined in Working Group Notes can be defined in separate schemas. Elements corresponding to terms defined in the PROV-DM are defined in the <b>prov-core.xsd</b> schema and elements corresponding to terms defined in notes are defined in extension schemas (e.g. <b>prov-dictionary.xsd</b>, <b>prov-links.xsd</b>). The default schema, <b>prov.xsd</b>, imports <b>prov-core.xsd</b> 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 <b>prov-core.xsd</b>.</p>
<p>The default schema - <b>prov.xsd</b></p>
<pre>
<?xml version="1.0" encoding="utf-8"?>
@@ -284,7 +278,7 @@
</xs:schema>
</pre>
-<p>Extension schemas import the <b>prov-core.xsd</b> 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>
+<p>Extension schemas import the <b>prov-core.xsd</b> schema and make use of a substitution group on the <code>prov:internalElement</code> to add extension-defined elements to the list of valid PROV elements in a bundle or document.</p>
<p>The <b>prov-links.xsd</b> extension schema.</p>
<pre>
<?xml version="1.0" encoding="UTF-8"?>
@@ -302,7 +296,7 @@
</xs:sequence>
</xs:complexType>
- <xs:element name="mentionOf" type="prov:Mention" substitutionGroup="prov:abstractElement" />
+ <xs:element name="mentionOf" type="prov:Mention" substitutionGroup="prov:internalElement" />
</xs:schema>
</pre>
@@ -346,75 +340,61 @@
...
</prov:thing>
</pre>
-
-<p>Most of the concepts described below follow this general pattern.
-</p>
+<p>Most of the concepts described below follow this general pattern.</p>
+</section> <!-- end elements-vs-attributes -->
-<!--
-<div class="note">
-<p>REVIEW QUESTION:</p>
-<p>Is this ordering of elements/attributes reasonable/satisfactory?</p>
-<p>Would it be better to loosen the ordering requirement allowing any mix
-of elements/attributes, or to tighten the ordering requirement,
-requiring all "prov:" namespace attributes to precede all non-"prov:"
-namespace attributes when expressed as XML elements?
-</p>
-</div>
+<section id="type-conventions">
+<h3>Type Conventions</h3>
+<p>The PROV-DM states that type information is described using a the prov:type PROV attribute with and may occur multiple times for a given entity, activity, agent, or relation.</p>
+<p>PROV-XML uses the element <code>prov:type</code> to represent the prov:type PROV attribute. This element can be use to represent both PROV and non-PROV type information. The following examples shows type information encoded using the <code>prov:type</code> element.</p>
+<pre class="example" title="type information using prov:type PROV attribute" ignore>
+<prov:document
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:prov="http://www.w3.org/ns/prov#"
+ xmlns:ex="http://example.com/ns/ex#"
+ xmlns:tr="http://example.com/ns/tr#">
-<div class="note">
-<p>REVIEW QUESTION:</p>
+ <prov:entity prov:id="tr:WD-prov-dm-20111215">
+ <prov:type xsi:type="xsd:QName">prov:Plan</prov:type>
+ <prov:type xsi:type="xsd:QName">ex:Workflow</prov:type>
+ </prov:entity>
-<p>The current design has mirrored the naming from PROV-N. This often
-involves reliance on the "prov:type" attribute to distinguish some
-relations. In order to simplify the overall expression of those
-concepts in XML, we are considering adding additional explicitly named
-top level elements rather than requiring "prov:type".
-</p>
+</prov:document>
+</pre>
+<p>PROV-XML defines complexTypes to match the PROV defined type values. These types provide a more native XML representation of PROV types. The following example is considered equivalent to the previous example because the element <code>prov:plan</code> has type <code>prov:Plan</code>.</p>
+<pre class="example" title="type information using schema defined types" ignore>
+<prov:document
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:prov="http://www.w3.org/ns/prov#"
+ xmlns:ex="http://example.com/ns/ex#"
+ xmlns:tr="http://example.com/ns/tr#">
-<p>For example, a Quotation is currently expressed in PROV-N as a type
-of Derivation like this:</p>
-<pre class="codeexample">
-wasDerivedFrom(a, b, [prov:type='prov:Quotation'])
+ <prov:plan prov:id="tr:WD-prov-dm-20111215">
+ <prov:type xsi:type="xsd:QName">ex:Workflow</prov:type>
+ </prov:plan>
+
+</prov:document>
+</pre>
+<p>Because the <code>prov:Plan</code> complexType is defined as an extension of the complexType <code>prov:Entity</code>, the following example using <code>xsi:type</code> is valid and considered equivalent to the two previous examples. The attribute <code>xsi:type</code> tells an XML parser the complexType of the element. The value of <code>xsi:type</code> must be a complexType derived from the default element type.</p>
+<pre class="example" title="type information using xsi:type" ignore>
+<prov:document
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:prov="http://www.w3.org/ns/prov#"
+ xmlns:ex="http://example.com/ns/ex#"
+ xmlns:tr="http://example.com/ns/tr#">
+
+ <prov:entity prov:id="tr:WD-prov-dm-20111215" xsi:type="prov:Plan">
+ <prov:type xsi:type="xsd:QName">ex:Workflow</prov:type>
+ </prov:entity>
+
+</prov:document>
</pre>
-<p>which is transformed to:</p>
-
-<pre class="codeexample">
-<prov:wasDerivedFrom>
- <prov:generatedEntity prov:ref="a"/>
- <prov:usedEntity prov:ref="b"/>
- <prov:type xsi:type="xsd:QName">prov:Quotation</prov:type>
-</prov:wasDerivedFrom>
-</pre>
-
-<p>This proposal would replace that with an explicit <code>prov:wasQuotedFrom</code> element (<a href="http://www.w3.org/TR/2012/CR-prov-o-20121211/#wasQuotedFrom">wasQuotedFrom</a> name from [[PROV-O]]) which has type <code>prov:Quotation</code>, which is an extension of <code>prov:Derivation</code>:
-</p>
-<p>Additions to the schema:</p>
-<pre class="codeexample">
- <xs:element name="wasQuotedFrom" type="prov:Quotation"/>
-
- ...
-
- <xs:complexType name="Quotation">
- <xs:complexContent>
- <xs:extension base="prov:Derivation"/>
- </xs:complexContent>
- </xs:complexType>
-</pre>
-<p>New serialization:</p>
-<pre class="codeexample">
-<prov:wasQuotedFrom>
- <prov:generatedEntity prov:ref="a"/>
- <prov:usedEntity prov:ref="b"/>
-</prov:wasQuotedFrom>
-</pre>
-
-<p>Other "typed" concepts and relations would be handled similarly.
-</p>
-
-</div>
--->
-</section> <!-- end elements-vs-attributes -->
+<p>The <code>prov:type</code> element is the only mechanism to explicitly declare multiple types for an instance or declare types that are not derived from the default element type. The <code>prov:type</code> element can be used in conjunction with schema-defined PROV types (see examples 2 and 3).</p>
+</section>
<section id="naming-conventions">
<h3>Naming Conventions</h3>
@@ -561,12 +541,12 @@
<td>prov:actedOnBehalfOf</td>
</tr>
<tr class="component3-color">
- <td><a class="essential">Plan</td>
+ <td><a class="essential">Plan</a></td>
<td>prov:Plan</td>
<td>prov:plan</td>
</tr>
<tr class="component3-color">
- <td><a class="essential">Person</td>
+ <td><a class="essential">Person</a></td>
<td>prov:Person</td>
<td>prov:person</td>
</tr>
@@ -589,10 +569,15 @@
<td colspan="3" style="border-width: 0px; "></td>
</tr>
<tr class="component4-color">
- <td><a title="bundle">Bundle</a></td>
+ <td><a class="essential">Bundle</a></td>
<td>prov:Bundle</td>
<td>prov:bundle</td>
- <td><a href="#component5">Component 4: Bundles</a></td>
+ <td rowspan="2"><a href="#component5">Component 4: Bundles</a></td>
+</tr>
+<tr class="component4-color">
+ <td><a class="essential">Bundle Constructor</a></td>
+ <td>prov:BundleConstructor</td>
+ <td>prov:bundleContent</td>
</tr>
<tr>
<td colspan="3" style="border-width: 0px; "></td>
@@ -618,7 +603,7 @@
<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 class="essential">Empty Collection</a></td>
<td>prov:EmptyCollection</td>
<td>prov:emptyCollection</td>
</tr>
@@ -648,7 +633,7 @@
<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:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -685,7 +670,7 @@
<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:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -725,7 +710,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -776,7 +761,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -824,7 +809,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -870,7 +855,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -945,7 +930,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -991,7 +976,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -1048,7 +1033,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -1130,6 +1115,7 @@
</xs:extension>
</xs:complexContent>
</xs:complexType>
+</pre>
<pre class="schema-element" element="prov:wasQuotedFrom" schemaType="prov:Quotation">
<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="wasQuotedFrom" type="prov:Quotation"/>
</pre>
@@ -1225,7 +1211,7 @@
<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:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -1343,7 +1329,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -1401,7 +1387,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -1521,7 +1507,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -1596,7 +1582,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -1628,18 +1614,15 @@
<section id="component4">
<h3>Component 4: Bundles</h3>
<p>The fourth component is concerned with bundles, a mechanism to support provenance of provenance.</p>
-
<section id="term-Bundle">
<h4>Bundle</h4>
<div class="glossary-ref" data-ref="glossary-bundle"></div>
-<p>A Bundle is an entity that can contain nested provenance statements.</p>
+<p>A <code>prov:Bundle</code> is an extension of <code>prov:Entity</code> that can be associated with a set of nested provenance statements, which is represented by the <code>prov:BundleConstructor</code> complexType and referenced with the <code>prov:bundleContent</code> element. Provenance statements may be made about the set by referencing the associated entity.</p>
+<p>The nested provenance statements associated with a particular bundle entity can be found within a <code>prov:bundleContent</code> element which has the same <code>prov:id</code> as the bundle entity.</p>
<pre class="schema-type">
<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:complexType>
@@ -1657,29 +1640,11 @@
xmlns:alice="http://example.com/ns/alice#"
xmlns:agg="http://example.com/ns/agg#">
- <prov:entity prov:id="ex:report1">
- <prov:type xsi:type="xsd:QName">report</prov:type>
+ <b><prov:bundle prov:id="ex:bundle1">
<ex:version>1</ex:version>
- </prov:entity>
-
- <prov:entity prov:id="ex:report2">
- <prov:type xsi:type="xsd:QName">report</prov:type>
- <ex:version>2</ex:version>
- </prov:entity>
-
- <b><prov:bundle prov:id="bob:bundle1">
- <prov:entity prov:id="ex:report1">
- <prov:type xsi:type="xsd:QName">report</prov:type>
- <ex:version>1</ex:version>
- </prov:entity>
+ </prov:bundle></b>
- <prov:wasGeneratedBy>
- <prov:entity prov:ref="ex:report1"/>
- <prov:time>2012-05-24T10:00:01</prov:time>
- </prov:wasGeneratedBy>
- </prov:bundle></b>
-
- <b><prov:bundle prov:id="alice:bundle2">
+ <prov:bundleContent prov:id="ex:bundle1">
<prov:entity prov:id="ex:report1"/>
<prov:entity prov:id="ex:report2">
@@ -1696,31 +1661,71 @@
<prov:generatedEntity prov:ref="ex:report2"/>
<prov:usedEntity prov:ref="ex:report1"/>
</prov:wasDerivedFrom>
- </prov:bundle></b>
-
- <prov:wasGeneratedBy>
- <prov:entity prov:ref="bob:bundle1"/>
- <prov:time>2012-05-24T10:30:00</prov:time>
- </prov:wasGeneratedBy>
-
- <prov:wasAttributedTo>
- <prov:entity prov:ref="bob:bundle1"/>
- <prov:agent prov:ref="ex:Bob"/>
- </prov:wasAttributedTo>
-
- <prov:wasGeneratedBy>
- <prov:entity prov:ref="alice:bundle2"/>
- <prov:time>2012-05-25T11:15:00</prov:time>
- </prov:wasGeneratedBy>
-
- <prov:wasAttributedTo>
- <prov:entity prov:ref="alice:bundle2"/>
- <prov:agent prov:ref="ex:Alice"/>
- </prov:wasAttributedTo>
+ </prov:bundleContent>
</prov:document>
</pre>
</section> <!-- end term-Bundle -->
+
+<section id="term-BundleConstructor">
+<h4>Bundle Constructor</h4>
+<p>The <code>prov:BundleConstructor</code> complexType is used to define a named set of provenance statements. The Bundle Constructor type supports the <code>prov:id</code> attribute.</p>
+<p>The bundle entity associated with a bundle constructor set must have the same <code>prov:id</code> as the bundle constructor set.</p>
+<pre class="schema-type">
+<xs:complexType name="BundleConstructor">
+ <xs:sequence maxOccurs="unbounded">
+ <xs:group ref="prov:documentElements"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="prov:id"/>
+</xs:complexType>
+</pre>
+<p>The element <code>prov:bundleContent</code> is used to reference a set of nested provenance statements from within a prov:Document.</p>
+<pre>
+<xs:complexType name="Document">
+ <xs:sequence maxOccurs="unbounded">
+ <xs:group ref="prov:documentElements" minOccurs="0"/>
+ <xs:element name="bundleContent" type="prov:BundleConstructor" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" />
+ </xs:sequence>
+</xs:complexType>
+</pre>
+<pre class="example" title="prov:bundleContent">
+<prov:document
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:prov="http://www.w3.org/ns/prov#"
+ xmlns:ex="http://example.com/ns/ex#"
+ xmlns:bob="http://example.com/ns/bob#"
+ xmlns:alice="http://example.com/ns/alice#"
+ xmlns:agg="http://example.com/ns/agg#">
+
+ <prov:bundle prov:id="ex:bundle1">
+ <ex:version>1</ex:version>
+ </prov:bundle>
+
+ <b><prov:bundleContent prov:id="ex:bundle1">
+ <prov:entity prov:id="ex:report1"/>
+
+ <prov:entity prov:id="ex:report2">
+ <prov:type xsi:type="xsd:QName">report</prov:type>
+ <ex:version>2</ex:version>
+ </prov:entity>
+
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:report2"/>
+ <prov:time>2012-05-25T11:00:01</prov:time>
+ </prov:wasGeneratedBy>
+
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="ex:report2"/>
+ <prov:usedEntity prov:ref="ex:report1"/>
+ </prov:wasDerivedFrom>
+ </prov:bundleContent></b>
+
+</prov:document>
+</pre>
+</section> <!-- end term-BundleConstructor -->
</section> <!-- end component4 -->
<section id="component5">
@@ -2192,7 +2197,7 @@
<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:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2205,7 +2210,7 @@
<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:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2220,7 +2225,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2235,7 +2240,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2247,7 +2252,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2263,7 +2268,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2279,7 +2284,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2294,7 +2299,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2311,7 +2316,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2345,7 +2350,7 @@
<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:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2378,7 +2383,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2392,7 +2397,7 @@
<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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2405,7 +2410,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2417,7 +2422,7 @@
<!-- 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"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="prov:id"/>
</xs:complexType>
@@ -2429,12 +2434,17 @@
<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:complexType>
+
+ <xs:complexType name="BundleConstructor">
+ <xs:sequence maxOccurs="unbounded">
+ <xs:group ref="prov:documentElements"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute ref="prov:id"/>
+ </xs:complexType>
<!-- Component 5 -->
@@ -2590,21 +2600,22 @@
<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:element ref="prov:internalElement" 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:element name="bundleContent" type="prov:BundleConstructor" minOccurs="0"/>
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" />
</xs:sequence>
</xs:complexType>
+
<!-- abstract element used by extensions -->
- <xs:element name="abstractElement" abstract="true" />
+ <xs:element name="internalElement" abstract="true" />
</xs:schema>
</pre>
@@ -2612,7 +2623,7 @@
<section id="extension-schemas">
<h3>Extension Schemas</h3>
-<p>Extension schemas are schemas in the PROV Namespace that define additional PROV elements not from the PROV-DM. Workgroup Notes provide extension schemas to define their Note-introduced PROV elements. Extension schemas must import (using <code>xs:include</code>) the <b>prov-core.xsd</b> 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>
+<p>Extension schemas are schemas in the PROV Namespace that define additional PROV elements not from the PROV-DM. Workgroup Notes provide extension schemas to define their Note-introduced PROV elements. Extension schemas must import (using <code>xs:include</code>) the <b>prov-core.xsd</b> schema and make use of a substitution group on the <code>prov:internalElement</code> to add extension defined elements to the list of valid PROV elements in a bundle or document.</p>
<p>Here is an example from the <b>prov-links.xsd</b> extension schema.</p>
<pre title="prov-links.xsd">
<?xml version="1.0" encoding="UTF-8"?>
@@ -2630,13 +2641,34 @@
</xs:sequence>
</xs:complexType>
- <xs:element name="mentionOf" type="prov:Mention" substitutionGroup="prov:abstractElement" />
+ <xs:element name="mentionOf" type="prov:Mention" substitutionGroup="prov:internalElement" />
</xs:schema>
</pre>
</section> <!-- end extension-schemas -->
</section> <!-- end prov-xml-schema -->
+<section class="appendix" id="changelog">
+<h2>Change Log</h2>
+
+<section id="changelog-last">
+<h3>Changes since last version</h3>
+<ul>
+<li>Added Change Log section</li>
+<li> Changed the status of this document section: added new documents to the PROV Family of Document, and removed the how to read section, referring instead to PROV-OVERVIEW.</li>
+<li>Changed all URLs to PROV documents.</li>
+<li>Removed Review notes.</li>
+<li>Updated table 1 with XML Schema Referencing Element column.</li>
+<li>Added Type Conventions and Schema Modularization sections to XML Schema Design section.</li>
+<li>Updated Bundle section to reflect changes in schema design.</li>
+<li>Updated inline schema and schema examples to reflect updates to schema design.</li>
+<li>Updated text that appears before schema snippets and examples in PROV XML Schema subsections.</li>
+<li>Added extension schema example to appendix.</li>
+<li>Removed Macintosh HFS file type paragraph from Media Type section.</li>
+</ul>
+</section> <!-- end changelog-last -->
+</section> <!-- end changelog -->
+
<section class="appendix" id="acknowledgements">
<h2>Acknowledgements</h2>