merged
authorStian Soiland-Reyes <soiland-reyes@cs.manchester.ac.uk>
Tue, 07 Feb 2012 10:37:59 +0000
changeset 1475 b9e12115bcba
parent 1474 251a8d73d2f0 (current diff)
parent 1473 93d1c0db8274 (diff)
child 1476 73807d4ccabf
merged
--- a/model/ProvenanceModel.html	Tue Feb 07 10:37:35 2012 +0000
+++ b/model/ProvenanceModel.html	Tue Feb 07 10:37:59 2012 +0000
@@ -82,7 +82,7 @@
  
           // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
           // and its maturity status
-          previousPublishDate:  "2011-12-15",
+          previousPublishDate:  "2012-02-02",
           previousMaturity:  "WD",
  
           // if there a publicly available Editor's Draft, this is the link
@@ -115,7 +115,7 @@
                 company: "legislation.gov.uk"},
               { name: "Yolanda Gil",
                 company: "Invited Expert", url:"http://www.isi.edu/~gil/"},
-              { name: "Ryan Golden",
+              { name: "Reza B'Far",
                 company: "Oracle Corporation" },
               { name: "Paul Groth", url: "http://www.few.vu.nl/~pgroth/",
                 company: "VU University of Amsterdam" },
Binary file model/working-copy/OverviewDiagram.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/model/working-copy/extra.css	Tue Feb 07 10:37:59 2012 +0000
@@ -0,0 +1,305 @@
+
+/* --- EDITORIAL NOTES --- */
+.pending {
+    padding:    1em;
+    margin: 1em 0em 0em;
+    border: 1px solid #f00;
+    background: #BFEFFF;
+}
+
+.pending::before {
+    content:    "Pending Review";
+    display:    block;
+    width:  150px;
+    margin: -1.5em 0 0.5em 0;
+    font-weight:    bold;
+    border: 1px solid #f00;
+    background: #fff;
+    padding:    3px 1em;
+}
+
+
+.resolved {
+    padding:    1em;
+    margin: 1em 0em 0em;
+    border: 1px solid #f00;
+    background: #9BCD9B;
+}
+
+.resolved::before {
+    content:    "Resolved";
+    display:    block;
+    width:  150px;
+    margin: -1.5em 0 0.5em 0;
+    font-weight:    bold;
+    border: 1px solid #f00;
+    background: #fff;
+    padding:    3px 1em;
+}
+
+
+.inference {
+    padding:    1em;
+    margin: 1em 0em 0em;
+    border: 1px solid #f00;
+    background: #fff;
+}
+
+.inference[id]::before {
+    content:    "Inference: " attr(id);
+    width:  380px;  /* How can we compute the length of "Constraint: " attr(id) */
+}
+
+
+.inference::before {
+    content:    "Inference";
+    display:    block;
+    width:  150px;
+    margin: -1.5em 0 0.5em 0;
+    font-weight:    bold;
+    border: 1px solid #f00;
+    background: #fff;
+    padding:    3px 1em;
+}
+
+.unamedconstraint {
+    padding:    1em;
+    margin: 1em 0em 0em;
+    border: 1px solid #00f;
+    background: #fff;
+}
+
+
+.unamedconstraint::before {
+    content:    "Constraint";
+    display:    block;
+    width:  150px;
+    margin: -1.5em 0 0.5em 0;
+    font-weight:    bold;
+    border: 1px solid #00f;
+    background: #fff;
+    padding:    3px 1em;
+}
+
+
+
+.constraint {
+    padding:    1em;
+    margin: 1em 0em 0em;
+    border: 1px solid #00f;
+    background: #fff;
+}
+
+.constraint[id]::before {
+    content:    "Constraint: " attr(id);
+    width:  380px;  /* How can we compute the length of "Constraint: " attr(id) */
+}
+
+
+.constraint::before {
+    content:    "Constraint";
+    display:    block;
+    width:  150px;
+    margin: -1.5em 0 0.5em 0;
+    font-weight:    bold;
+    border: 1px solid #00f;
+    background: #fff;
+    padding:    3px 1em;
+}
+
+
+
+.interpretation {
+    padding:    1em;
+    margin: 1em 0em 0em;
+    border: 1px solid #00f;
+    background: #fff;
+}
+
+.interpretation[id]::before {
+    content:    "Interpretation: " attr(id);
+    width:  380px;  /* How can we compute the length of "Interpretation: " attr(id) */
+}
+
+
+.interpretation::before {
+    content:    "Interpretation";
+    display:    block;
+    width:  150px;
+    margin: -1.5em 0 0.5em 0;
+    font-weight:    bold;
+    border: 1px solid #00f;
+    background: #fff;
+    padding:    3px 1em;
+}
+
+
+.deprecatedconstraint {
+    padding:    1em;
+    margin: 1em 0em 0em;
+    border: 1px solid #00f;
+    background: #fff;
+}
+
+.deprecatedconstraint[id]::before {
+    content:    "Deprecated: " attr(id);
+    width:  380px;  /* How can we compute the length of "Deprecatedconstraint: " attr(id) */
+}
+
+
+.deprecatedconstraint::before {
+    content:    "Deprecated";
+    display:    block;
+    width:  150px;
+    margin: -1.5em 0 0.5em 0;
+    font-weight:    bold;
+    border: 1px solid #00f;
+    background: #fff;
+    padding:    3px 1em;
+}
+
+
+
+.conditional {
+    color: blue;
+}
+
+.grammar {
+    margin-top: 1ex;
+    margin-bottom: 1ex;
+    padding-left: 1ex;
+    padding-right: 1ex;
+    padding-top: 1ex;
+    padding-bottom: 0.6ex;
+    border: 1px dashed #2f6fab;
+}
+.nonterminal {
+    font-weight: bold;
+    font-family: sans-serif;
+    font-size: 95%;
+}
+
+.name {
+    font-family: monospace;
+}
+
+
+.xmpl {
+    padding:    1em;
+    margin: 1em 0em 0em;
+    border: 1px solid #f00;
+    background: #fff;
+}
+
+.xmpl::before {
+    content:    "Example";
+    display:    block;
+    width:  150px;
+    margin: -1.5em 0 0.5em 0;
+    font-weight:    bold;
+    border: 1px solid #f00;
+    background: #fff;
+    padding:    3px 1em;
+}
+
+.anexample:before {
+    content: "Example:";
+    font-family: sans-serif;
+    font-size: 1.6ex;
+    font-weight: bold;
+}
+.anexample {
+    margin-top: 1ex;
+    margin-bottom: 1ex;
+    padding-left: 1ex;
+    padding-right: 1ex;
+    padding-top: 1ex;
+    padding-bottom: 0.6ex;
+    border: 1px dashed #2f6fab;
+    background-color: #f9f9f9;
+}
+.anexample table {
+    background-color: #f9f9f9;
+}
+
+div[class="grammar"] span[class="name"]:before {
+    content: "'";
+}
+
+div[class="grammar"] span[class="name"]:after {
+    content: "'";
+}
+
+
+div[class="grammar"] span[class="optional"]:before {
+    font-weight: normal;
+    font-size:130%;
+    font-family: monospace;
+    content: "(";
+}
+
+div[class="grammar"] span[class="optional"]:after {
+    font-weight: normal;
+    font-size:130%;
+    font-family: monospace;
+    content: ")?";
+}
+
+
+div[class="grammar"] span[class="plus"]:before {
+    font-weight: normal;
+    font-size:130%;
+    font-family: monospace;
+    content: "(";
+}
+
+div[class="grammar"] span[class="plus"]:after {
+    font-weight: normal;
+    font-size:130%;
+    font-family: monospace;
+    content: ")+";
+}
+
+
+div[class="grammar"] span[class="star"]:before {
+    font-weight: normal;
+    font-size:130%;
+    font-family: monospace;
+    content: "(";
+}
+
+div[class="grammar"] span[class="star"]:after {
+    font-weight: normal;
+    font-size:130%;
+    font-family: monospace;
+    content: ")*";
+}
+
+div[class="grammar"] span[class="group"]:before {
+    font-weight: normal;
+    font-size:130%;
+    font-family: monospace;
+    content: "(";
+}
+
+div[class="grammar"] span[class="group"]:after {
+    font-weight: normal;
+    font-size:130%;
+    font-family: monospace;
+    content: ")";
+}
+
+table {
+    background-color: #f9f9f9;
+}
+
+
+.interpretation-forward::before {
+    content:    "Interpretation: ";
+    font-weight:    bold;
+}
+
+.structural-forward::before {
+    content:    "Structural constraint: ";
+    font-weight:    bold;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/model/working-copy/prov-asn.html	Tue Feb 07 10:37:59 2012 +0000
@@ -0,0 +1,1105 @@
+<!DOCTYPE html>
+
+<html><head> 
+    <title>PROV-DM Part 3: The Abstract Syntax Notation</title> 
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
+    <!-- 
+      === NOTA BENE ===
+      For the three scripts below, if your spec resides on dev.w3 you can check them
+      out in the same tree and use relative links so that they'll work offline,
+     -->
+<!-- PM -->
+    <style type="text/css">
+      .note { font-size:small; margin-left:50px }
+     </style>
+
+    <script src="http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js" class="remove"></script> 
+    <script src="http://www.w3.org/2007/OWL/toggles.js" class="remove"></script> 
+
+    <script class="remove"> 
+      var addExtraReferences = function() {
+          for (var k in extraReferences)
+              berjon.biblio[k] = extraReferences[k];
+      };
+      var extraReferences = {
+        "CLOCK":
+         "Lamport, L. "+
+         "<a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\"><cite>Time, clocks, and the ordering of events in a distributed system</cite></a>."+
+         "Communications of the ACM 21 (7): 558–565. 1978. "+
+         "URL: <a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\">http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf</a> " +
+         "DOI: doi:10.1145/359545.359563.",
+        "CSP":
+         "Hoare, C. A. R. "+
+         "<a href=\"http://www.usingcsp.com/cspbook.pdf\"><cite>Communicating Sequential Processes</cite></a>."+
+         "Prentice-Hall. 1985"+
+         "URL: <a href=\"http://www.usingcsp.com/cspbook.pdf\">http://www.usingcsp.com/cspbook.pdf</a>",
+        "Logic":
+          "W. E. Johnson"+
+          "<a href=\"http://www.ditext.com/johnson/intro-3.html\"><cite>Logic: Part III</cite></a>."+
+          "1924. "+
+          "URL: <a href=\"http://www.ditext.com/johnson/intro-3.html\">http://www.ditext.com/johnson/intro-3.html</a>",
+        "PROV-SEM":
+          "James Cheney "+
+          "<a href=\"http://www.w3.org/2011/prov/wiki/FormalSemanticsStrawman\"><cite>Formal Semantics Strawman</cite></a>. "+
+          "2011, Work in progress. "+
+          "URL: <a href=\"http://www.w3.org/2011/prov/wiki/FormalSemanticsStrawman\">http://www.w3.org/2011/prov/wiki/FormalSemanticsStrawman</a>",
+
+        "PROV-PRIMER":
+          "Yolanda Gil and Simon Miles (eds.) Khalid Belhajjame, Helena Deus, Daniel Garijo, Graham Klyne, Paolo Missier, Stian Soiland-Reyes, and Stephan Zednik "+
+          "<a href=\"http://www.w3.org/TR/prov-primer/\"><cite>Prov Model Primer</cite></a>. "+
+          "2011, Working Draft. "+
+          "URL: <a href=\"http://www.w3.org/TR/prov-primer/\">http://www.w3.org/TR/prov-primer/</a>",
+
+        "PROV-O":
+          "Satya Sahoo and Deborah McGuinness (eds.) Khalid Belhajjame, James Cheney, Daniel Garijo, Timothy Lebo, Stian Soiland-Reyes, and Stephan Zednik "+
+          "<a href=\"http://www.w3.org/TR/prov-o/\"><cite>Provenance Formal Model</cite></a>. "+
+          "2011, Working Draft. "+
+          "URL: <a href=\"http://www.w3.org/TR/prov-o/\">http://www.w3.org/TR/prov-o/</a>",
+
+        "PROV-AQ":
+          "Graham Klyne and Paul Groth (eds.) Luc Moreau, Olaf Hartig, Yogesh Simmhan, James Meyers, Timothy Lebo, Khalid Belhajjame, and Simon Miles "+
+          "<a href=\"http://www.w3.org/TR/prov-aq/\"><cite>Provenance Access and Query</cite></a>. "+
+          "2011, Working Draft. "+
+          "URL: <a href=\"http://www.w3.org/TR/prov-aq/\">http://www.w3.org/TR/prov-aq/</a>",
+      };
+      var respecConfig = {
+          // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
+          specStatus:           "ED",
+          
+          // the specification's short name, as in http://www.w3.org/TR/short-name/
+          shortName:            "prov-dm",
+ 
+          // if your specification has a subtitle that goes below the main
+          // formal title, define it here
+          //subtitle   :  "Some speculative write-ups, for discussion before integration in the data model",
+ 
+          // if you wish the publication date to be other than today, set this
+          // publishDate:  "2011-10-18",
+ 
+          // if the specification's copyright date is a range of years, specify
+          // the start date here:
+          // copyrightStart: "2005"
+ 
+          // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
+          // and its maturity status
+          //previousPublishDate:  "2011-12-15",
+          //previousMaturity:  "WD",
+ 
+          // if there a publicly available Editor's Draft, this is the link
+          edDraftURI:           "http://dvcs.w3.org/hg/prov/raw-file/default/model/working-copy/prov-asn.html",
+ 
+          // if this is a LCWD, uncomment and set the end of its review period
+          // lcEnd: "2009-08-05",
+ 
+          // if you want to have extra CSS, append them to this list
+          // it is recommended that the respec.css stylesheet be kept
+          extraCSS:             ["http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css", "./extra.css"],
+ 
+          // editors, add as many as you like
+          // only "name" is required
+          editors:  [
+              { name: "Luc Moreau", url: "http://www.ecs.soton.ac.uk/~lavm/",
+                company: "University of Southampton" },
+              { name: "Paolo Missier", url: "http://www.cs.ncl.ac.uk/people/Paolo.Missier",
+                company: "Newcastle University" },
+          ],
+ 
+          // authors, add as many as you like. 
+          // This is optional, uncomment if you have authors as well as editors.
+          // only "name" is required. Same format as editors.
+ 
+          
+          // name of the WG
+          wg:           "Provenance Working Group",
+          
+          // URI of the public WG page
+          wgURI:        "http://www.w3.org/2011/prov/",
+          
+          // name (with the @w3c.org) of the public mailing to which comments are due
+          wgPublicList: "public-prov-wg",
+          
+          // URI of the patent status for this WG, for Rec-track documents
+          // !!!! IMPORTANT !!!!
+          // This is important for Rec-track documents, do not copy a patent URI from a random
+          // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
+          // Team Contact.
+          wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/46974/status",
+
+          // Add extraReferences to bibliography database
+          preProcess: [addExtraReferences],
+      };
+    </script> 
+  </head> 
+  <body> 
+
+    <section id="abstract">
+<p>
+<b>Editors' working copy can change at any time. </b>
+</p>
+    </section> 
+
+<section id="sotd">
+<b>Editors' working copy can change at any time. </b>
+</section>
+
+
+<div class="buttonpanel"> 
+<form action="#"><p> 
+<input id="hide-bnf" onclick="set_display_by_class('div','grammar','none'); set_display_by_id('hide-bnf','none');  set_display_by_id('show-bnf','');" type="button" value="Hide Grammar" /> 
+<input id="show-bnf" onclick="set_display_by_class('div','grammar',''); set_display_by_id('hide-bnf','');  set_display_by_id('show-bnf','none');" style="display: none" type="button"
+value="Show Grammar" /> 
+<input id="hide-asn" onclick="set_display_by_class('div','withAsn','none');set_display_by_class('span','withAsn','none'); set_display_by_id('hide-asn','none'); set_display_by_id('show-asn','');" type="button"
+value="Hide ASN" /> 
+<input id="show-asn" onclick="set_display_by_class('div','withAsn',''); set_display_by_class('span','withAsn','');  set_display_by_id('hide-asn',''); set_display_by_id('show-asn','none');" style="display: none"
+type="button" value="Show ASN" /> 
+</p> 
+</form> 
+</div>     
+
+
+
+
+<section id='changes'>
+<p> Following F2F2 guidance, in this document we try to: 
+<ul>
+<li> pitch from the start the idea of an upgrade path, from 'scruffy provenance' (term TBD), to 'precise provenance' (term TBD)
+<li> formulate concepts without referring to things, just in term of entities, the intent is that the semantics only refers to things
+<li> introduce concepts minimally, just to be able to express 'scruffy provenance' 
+<li> present the data model
+<li>present the upgrade path
+<li>contemplating the organization of the deliverable in two/three separate documents.
+</ul>
+</section>
+
+
+<!--
+<section id='preliminaries'>
+<h2>Preliminaries</h2>
+-->
+
+
+<section id="data-model-concepts"> 
+
+<h2>PROV-DM Core</h2>
+
+<section id="record-element"> 
+<h3>Element</h3>
+
+
+   <section id="record-Entity"> 
+      
+<h4>Entity</h4>
+
+
+<div class="withAsn">
+<p>
+In PROV-ASN, an entity record's text matches the <span class="nonterminal">entityRecord</span> production of the grammar defined in this specification document.
+</p>
+
+<div class='grammar'>
+<span class="nonterminal">entityRecord</span>&nbsp;::=  
+<span class="name">entity</span>
+<span class="name">(</span>
+<span class="nonterminal">identifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span><br/><br/>
+<!-- -->
+<span class="nonterminal">optional-attribute-values</span>&nbsp;::= 
+<span class="optional"><span class="name">,</span>
+<span class="name">[</span>
+<span class="nonterminal">attribute-values</span>
+<span class="name">]</span>
+</span><br/>
+<span class="nonterminal">attribute-values</span>&nbsp;::=  
+<span class="nonterminal">attribute-value</span>
+| <span class="nonterminal">attribute-value</span> <span class="name">,</span> <span class="nonterminal">attribute-values</span>
+<br/>
+<span class="nonterminal">attribute-value</span>&nbsp;::=  
+<span class="nonterminal">attribute</span>
+<span class="name">=</span>
+<span class="nonterminal">Literal</span>
+<br/>
+</div>
+</div>
+
+    </section> 
+
+    <section id="record-Activity"> 
+      
+<h3>Activity Record</h3>
+
+
+<div class="withAsn">
+<p>In PROV-ASN, an activity record's text matches the <span class='nonterminal'>activityRecord</span> production of the grammar defined in this specification document.</p>
+
+
+
+<div class='grammar'>
+<span class="nonterminal">activityRecord</span>&nbsp;::=  
+<span class="name">activity</span>
+<span class="name">(</span>
+<span class="nonterminal">identifier</span>
+<span class="name">,</span>
+<span class="optional"><span class="nonterminal">time</span></span>
+<span class="name">,</span>
+<span class="optional"><span class="nonterminal">time</span></span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+</div>
+
+
+
+</section> 
+
+<section id="record-Agent">
+<h3>Agent Record</h3>
+
+
+<div class="withAsn">
+<p>In PROV-ASN, an agent record's text matches the <span class="nonterminal">agentRecord</span> production of the grammar defined in this specification document.
+</p>
+
+
+<div class='grammar'>
+<span class="nonterminal">agentRecord</span>&nbsp;::= 
+<span class="name">agent</span>
+<span class="name">(</span>
+<span class="nonterminal">identifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+</div>
+
+</section>
+
+   <section id="record-note"> 
+      
+<h4>Note Record</h4>
+
+<div class="withAsn">
+<p>In PROV-ASN, a note record's text matches the <span class="nonterminal">noteRecord</span> production of the grammar defined in this specification document.
+</p>
+
+
+<div class='grammar'>
+<span class="nonterminal">noteRecord</span>&nbsp;::= 
+<span class="name">note</span>
+<span class="name">(</span>
+<span class="nonterminal">identifier</span>
+<span class="name">,</span>
+<span class="nonterminal">attribute-values</span>
+<span class="name">)</span><br/>
+<!-- -->
+</div>
+</div>
+
+   </section> 
+
+</section>
+
+
+<section id="record-relation">
+<h3>Relation</h3>
+
+<p>This section describes all the PROV-DM records representing relations between the elements introduced in <a href="#record-element">Section Element</a>. While these relations are not
+binary,  they all involve two primary elements. They can be summarized as follows. </p>
+
+
+<div style="text-align: center;">
+<table border="1" style="margin-left: auto; margin-right: auto;">
+<caption>PROV-DM Core Relation Summary</caption>
+<tr><td></td><td>Entity</td><td>Activity</td><td>Agent</td><td>Note</td></tr> 
+<tr><td>Entity</td><td><a title="derivation record">wasDerivedFrom</a><br><a title="alternate record">alternateOf</a><br><a title="specialization record">specializationOf</a></td><td><a
+title="generation record">wasGeneratedBy</a></td><td>&mdash;</td><td><a title="annotation record">hasAnnotation</a></td></tr>
+<tr><td>Activity</td><td><a title="usage record">used</a></td><td>&mdash;</td><td><a title="start record">wasStartedBy</a><br><a title="end record">wasEndedBy</a><br><a title="activity
+association record">wasAssociatedWith</a></td><td><a title="annotation record">hasAnnotation</a></td></tr>
+<tr><td>Agent</td><td>&mdash;</td><td>&mdash;</td><td><a title="responsibility record">actedOnBehalfOf</a></td><td><a title="annotation record">hasAnnotation</a></td></tr>
+<tr><td>Note</td><td>&mdash;</td><td>&mdash;</td><td>&mdash;</td><td><a title="annotation record">hasAnnotation</a></td></tr>
+</table>
+</div>
+
+
+<p>In PROV-ASN, all these relation records are  conformant to the <span class='nonterminal'>relationRecord</span> production of the grammar.</p>
+
+<section id="activity-entity-relation">
+<h3>Activity-Entity Relation</h3>
+
+<section id="record-Generation">
+<h4>Generation</h4>
+
+
+<div class="withAsn">
+<p>In PROV-ASN, a generation record's text matches the <span class='nonterminal'>generationRecord</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+<span class="nonterminal">generationRecord</span>&nbsp;::=  
+<span class="name">wasGeneratedBy</span>
+<span class="name">(</span>
+<span class="optional"> <span class="nonterminal">identifier</span>
+<span class="name">,</span> </span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="optional"><span class="nonterminal">aIdentifier</span></span>
+<span class="optional"><span class="name">,</span>
+<span class="nonterminal">time</span></span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span><br/>
+</div>
+</div>
+
+
+</section>
+
+
+<section id="record-Usage">
+<h3>Usage</h3>
+
+
+
+<div class="withAsn">
+<p>In PROV-ASN, a usage record's text matches the <span class='nonterminal'>usageRecord</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+<span class="nonterminal">usageRecord</span>&nbsp;::=  
+<span class="name">used</span>
+<span class="name">(</span>
+<span class="optional">
+<span class="nonterminal">identifier</span>
+<span class="name">,</span>
+</span>
+<span class="nonterminal">aIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="optional">
+<span class="name">,</span>
+ <span class="nonterminal">time</span>
+</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span><br/>
+</div>
+</div>
+
+
+</section>
+</section>
+
+
+
+
+
+<section id="activity-agent-relation">
+<h3>Activity-Agent Relation</h3>
+
+<section id="record-ActivityAssociation">
+<h4>Activity Association Record</h4>
+
+<div class="withAsn">
+<p>In PROV-ASN, an activity association record's text matches the <span class="nonterminal">activityAssociationRecord</span> productions of the grammar defined in this specification
+document.</p>
+
+<div class='grammar'>
+<span class="nonterminal">activityAssociationRecord</span>&nbsp;::= 
+<span class="name">wasAssociatedWith</span>
+<span class="name">(</span>
+<span class="optional"><span class="nonterminal">identifier</span>,</span>
+<span class="nonterminal">aIdentifier</span>,
+<span class="nonterminal">agIdentifier</span>
+<span class="optional">,<span class="nonterminal">eIdentifier</span></span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+</div>
+
+</section>
+
+<section id="record-Start-End">
+<h4>Start and End Records</h4>
+
+
+<div class="withAsn">
+<p>In PROV-ASN, start and end record's texts match the <span class="nonterminal">startRecord</span> and <span class="nonterminal">endRecord</span> productions of the grammar defined in this
+specification document.
+</p>
+
+
+<div class='grammar'>
+<span class="nonterminal">startRecord</span>&nbsp;::= 
+<span class="name">wasStartedBy</span>
+<span class="name">(</span>
+<span class="optional"> <span class="nonterminal">identifier</span>,</span>
+<span class="nonterminal">aIdentifier</span>,
+<span class="nonterminal">agIdentifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span><br/>
+<span class="nonterminal">endRecord</span>&nbsp;::= 
+<span class="name">wasEndedBy</span>
+<span class="name">(</span>
+<span class="optional"> <span class="nonterminal">identifier</span>,</span>
+<span class="nonterminal">aIdentifier</span>,
+<span class="nonterminal">agIdentifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+</div>
+
+</section>
+
+
+
+
+</section>
+
+<section id="entity-entity-agent-agent-relation">
+<h4>Entity-Entity or Agent-Agent Relation</h4>
+
+<section id="record-responsibility">
+
+<h4>Responsibility Record</h4>
+
+
+
+<div class='grammar'>
+<span class="nonterminal">responsibilityRecord</span>&nbsp;::= 
+<span class="name">actedOnBehalfOf</span>
+<span class="name">(</span>
+<span class="optional"> <span class="nonterminal">identifier</span>,</span>
+<span class="nonterminal">agIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">agIdentifier</span>
+<span class="name">,</span>
+<span class="optional"><span class="nonterminal">aIdentifier</span></span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+
+
+</section>
+
+<section id="Derivation-Relation">
+<h4>Derivation Record</h4>
+
+
+
+<div class="withAsn">
+<p>In PROV-ASN, a derivation record's text matches the <span class='nonterminal'>derivationRecord</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+<span class="nonterminal">derivationRecord</span>&nbsp;::= 
+<span class="name">wasDerivedFrom</span>
+<span class="name">(</span>
+<span class="optional"> <span class="nonterminal">identifier</span>,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">aIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">gIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">uIdentifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span><br/>
+|
+<span class="name">wasDerivedFrom</span>
+<span class="name">(</span>
+<span class="optional"> <span class="nonterminal">identifier</span>,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="optional"><span class="name">,</span>
+<span class="nonterminal">time</span></span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+<p>
+The first clause of the alternative, where the activity, generation and usage record identifiers are present formalizes a derivation record is precise-1. The second clause of the alternative, with optional time formalizes imprecise records. The distinction between imprecise-1 and imprecise-n is made by the 
+attribute <span class="name">prov:steps</span>.  
+</p>
+</div>
+
+
+<p>In PROV-DM, the effective placeholder for an entity generation time is the <a>generation record</a>. The presence of 
+time information in imprecise derivation records is merely a convenience notation for a timeless derivation record and a generation record with this generation time information. </p>
+
+<div class='inference' id="derivation-time-elimination">
+<span class='conditional'>If</span> <span class="name">wasDerivedFrom(e2,e1,t,attrs)</span> holds, <span class='conditional'>then</span> the following records also hold:
+<span class="name">wasDerivedFrom(e2,e1,attrs)</span> and <span class="name">wasGeneratedBy(e2,t)</span>.
+</div>
+
+<p>
+<div class="structural-forward">
+See <a href="#derivation-use">derivation-use</a> for a structural constraint on derivation records.
+</div>
+</p>
+
+
+
+<div class='pending'>Should derivation have a time? Which time? This is   <a href="http://www.w3.org/2011/prov/track/issues/43">ISSUE-43</a>.<em>This is now addressed in this text. Optional time in derivation is generation time. See also    <a href="http://www.w3.org/2011/prov/track/issues/205">ISSUE-205</a>.</em></div>
+
+
+<div class='issue'>Several points were raised about the attribute steps.
+Its name, its default value   <a href="http://www.w3.org/2011/prov/track/issues/180">ISSUE-180</a>.
+ <a href="http://www.w3.org/2011/prov/track/issues/179">ISSUE-179</a>.</div>
+
+<div class='issue'> Emphasize the notion of 'affected by'   <a href="http://www.w3.org/2011/prov/track/issues/133">ISSUE-133</a>.</div>
+
+
+</section>
+
+
+<section id="record-alternate-specialization">
+
+<h4>Alternate  and Specialization</h4>
+
+
+
+<div class="withAsn">
+<p>In PROV-ASN, an alternate record's text matches the <span class="nonterminal">alternateRecord</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+   <span class="nonterminal">alternateRecord</span>&nbsp;::=
+  <span class="name">alternateOf</span> 
+<span class="name">(</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>  <br/>
+|
+  <span class="name">alternateOf</span> 
+<span class="name">(</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+  <span class="nonterminal">accIdentifier</span>
+  <span class="name">,</span>
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+  <span class="nonterminal">accIdentifier</span>
+<span class="name">,</span>
+  <span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span> 
+</div>
+
+
+<p>In PROV-ASN, a specialization record's text matches the <span class="nonterminal">specializationRecord</span>production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+   <span class="nonterminal">specializationRecord</span>&nbsp;::=
+  <span class="name">specializationOf</span> 
+<span class="name">(</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>  <br/> 
+|
+  <span class="name">specializationOf</span> 
+<span class="name">(</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+  <span class="nonterminal">accIdentifier</span>
+  <span class="name">,</span>
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+  <span class="nonterminal">accIdentifier</span>
+<span class="name">,</span>
+  <span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>  <br/>
+
+</div>
+</div>
+
+<div class='issue'>A discussion on alternative definition of these relations has not reached a satisfactory conclusion yet. This is <a
+href="http://www.w3.org/2011/prov/track/issues/29">ISSUE-29</a>. Also <a href="http://www.w3.org/2011/prov/track/issues/96">ISSUE-96</a>.</div>
+
+
+</section>
+</section>
+
+
+
+<!-- 
+<section>
+<h4>Transitive Derivation Record</h4>
+
+
+<p>
+If <span class="name">wasDerivedFrom(e2,e1)</span> holds because attribute <span class="name">a2.1</span> of <span class="name">e2</span> is determined by attribute <span
+class="name">a1.1</span> of <span class="name">e1</span>,
+and if <span class="name">wasDerivedFrom(e3,e2)</span> holds because attribute <span class="name">a3.1</span>of <span class="name">e3</span> is determined by  attribute <span
+class="name">a2.2</span> of <span class="name">e1</span>, it is not necessarily the case that an attribute of <span class="name">e3</span> is determined by an attribute of <span
+class="name">e1</span>; so, an asserter may not be able to assert <span class="name">wasDerivedFrom(e3,e1)</span>, since it would fail to satisfy constraint <a
+href="#derivation-attributes">derivation-attributes</a>.  Hence, the constraint on attributes as expressed in <a href="#derivation-attributes">derivation-attributes</a> invalidates
+transitivity in the general case.
+</p>
+
+<p>However, there is sense that <span class="name">e3</span> still depends on <span class="name">e1</span>, since <span class="name">e3</span> could not be generated without <span
+class="name">e1</span> existing. Hence, we introduce a weaker notion of derivation record, which is transitive.</p>
+
+A transitive derivation record, written <span class="name">dependedOn(e2, e1)</span> in PROV-ASN:
+<ul>
+<li> contains an identifier <span class="name">e2</span>, denoting an entity record, which represents the entity that is the result of the derivation;
+<li> contains an identifier <span class="name">e1</span>, denoting an entity record, which represents the entity that the derivation relies upon.
+</ul>
+<p>The record <span class="name">dependedOn</span> can only be inferred; in other words, it cannot be asserted. It is
+transitive by definition and relies on the previously defined derivation assertions for its
+base case.</p>
+
+<div class='constraint' id='transitive-derivation'>
+<ul> 
+<li><span class='conditional'>If</span> <span class="name">wasDerivedFrom(e2,e1)</span> or <span class="name">wasDerivedFrom(e2,e1,pe,attrs2,attrs1)</span> holds, <span
+class='conditional'>then</span> <span class="name">dependedOn(e2,e1)</span> holds.</li>
+<li><span class='conditional'>If</span> <span class="name">wasEventuallyDerivedFrom(e2,e1)</span> holds, <span class='conditional'>then</span> <span class="name">dependedOn(e2,e1)</span>
+holds.</li>
+<li><span class='conditional'>If</span> <span class="name">dependedOn(e3,e2)</span> and <span class="name">dependedOn(e2,e1)</span> hold, <span class='conditional'>then</span> <span
+class="name">dependedOn(e3,e1)</span> holds.</li>
+</ul>
+</div>
+
+</section>
+-->
+
+
+
+
+
+
+
+<section id="record-annotation">
+<h4>Annotation Record</h4>
+
+
+<p>An <dfn id="dfn-annotation">annotation record</dfn> establishes a link between an identifiable PROV-DM record and a note record referred to by its identifier.  Multiple note records can
+be associated with a given PROV-DM record; symmetrically, multiple PROV-DM records can be associated with a given note record.  Since note records have identifiers,  they can also be
+annotated. The annotation mechanism (with note record and the annotation record) forms a key aspect of the extensibility mechanism of PROV-DM (see <a
+href="#extensibility-section">extensibility section</a>).</p> 
+
+<p>An annotation record, written <span class="name">hasAnnotation(r,n,attrs)</span> in PROV-ASN, has the following constituents:</p>
+<ul>
+<li><em>record</em>: an identifier <span class="name">r</span> of the record being annnotated;</li>
+<li><em>note</em>: an identifier <span class="name">n</span> of a note record;</li>
+<li><em>attributes</em>: an OPTIONAL set <span class="name">attrs</span> of attribute-value pairs to further describe this record.</li>
+</ul>
+
+</div>
+<p>In PROV-ASN, a note record's text matches the <span class="nonterminal">noteRecord</span> production of the grammar defined in this specification document.
+</p>
+
+<div class='grammar'>
+<span class="nonterminal">annotationRecord</span>&nbsp;::=  
+<span class="name">hasAnnotation</span>
+<span class="name">(</span>
+<span class="nonterminal">identifier</span>
+<span class="name">,</span>
+<span class="nonterminal">nIdentifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+</div>
+
+<p>The interpretation of notes is application-specific. See Section <a href="#record-note">Note</a> for a discussion of the difference between note attributes and other records attributes.
+We also note the present tense in this term to indicate that it may not denote something in the past.</p>
+
+<div class="anexample">
+<p>
+The following records</p>
+<pre class="codexample">
+entity(e1,[prov:type="document"])
+entity(e2,[prov:type="document"])
+activity(a,t1,t2)
+used(u1,a,e1,[ex:file="stdin"])
+wasGeneratedBy(e2, a, [ex:file="stdout"])
+
+note(n1,[ex:icon="doc.png"])
+hasAnnotation(e1,n1)
+hasAnnotation(e2,n1)
+
+note(n2,[ex:style="dotted"])
+hasAnnotation(u1,n2)
+</pre>
+<p>assert the existence of two  documents in the world  (attribute-value pair: <span class="name">prov:type="document"</span>) identified by <span class="name">e1</span> and <span
+class="name">e2</span>, and annotate these records with a note indicating that the icon (an application specific way of rendering provenance) is <span class="name">doc.png</span>. It also
+asserts an activity, its usage of the first entity, and its generation of the second entity. The <span class="name">usage</span> record is annotated with a style (an application specific way
+of rendering this edge graphically). To be able to express this annotation, the usage record was provided with an identifier <span class="name">u1</span>, which was then referred to in <span
+class="name">hasAnnotation(u1,n2)</span>.
+</p>
+</div>
+
+
+</section>
+</section>
+
+<section  id="bundle">
+<h3>Bundle</h3>
+
+<p>In this section, two constructs are introduced to group
+PROV-DM records.  The first
+one, <a>account record</a> is itself a
+record, whereas the second
+one <a>record container</a> is not.
+</p>
+
+
+<section id="record-Account">
+<h3>Account Record</h3>
+
+
+
+<p>It is common for multiple provenance records to co-exist. For instance, when emailing
+ a file, there could be a provenance record kept by the mail client,
+ and another by the mail server. Such provenance records may provide different explanations about something happening in the world, because they are created by different parties or observed
+by different witnesses. A given party could also create multiple provenance records about an execution, to capture different levels of details, targeted at different end-users: the
+programmer of an experiment may be interested in a detailed log of execution, while the scientists may focus more on the scientific-level description.   Given that multiple provenance
+records can co-exist, it is important to know who asserted these records. </p>
+
+
+<p><em>All the rest removed</em></p>
+
+</section>
+
+<section id="RecordContainer">
+<h4>Record Container</h4>
+
+<p>A <dfn id="dfn-RecordContainer">record container</dfn> is a house-keeping construct of PROV-DM, also capable of bundling PROV-DM <a title="record">records</a>. A record container is the
+root of a provenance record and can be exploited to package up PROV-DM <a title="record">records</a> in response to a request for the provenance of something ([[PROV-AQ]]). Given that a
+record container is the root of a provenance record, it is not defined as a PROV-DM record (production <span class="nonterminal">record</span>), since otherwise it could appear arbitrarily
+nested inside accounts.</p> 
+
+
+<p>A record container, written <span class="name">container decls  recs endContainer</span> in PROV-ASN, contains:
+<ul>
+<li><em>namespaceDeclarations</em>: a set <span class="name">decls</span> of namespace declarations, declaring namespaces and associated prefixes, which can be used in <a
+title="attribute">attributes</a> and  <a title="identifier">identifiers</a> occurring inside  <span class="name">recs</span>;</li>
+<li><em>records</em>:  a non-empty set of records <span class="name">recs</span>.</li>
+</ul>
+<p>All the records in <span class="name">recs</span> are implictly wrapped in a default account, scoping all the record identifiers they declare directly, and constituting a toplevel
+account, in the hierarchy of accounts.  Consequently, every provenance record is always expressed in the context of an account, either explicitly in an asserted account, or implicitly in a
+container's default account.</p>
+
+<p>In PROV-ASN, a record container's text matches the <span class="nonterminal">recordContainer</span> production of the grammar defined in this specification document.</p>
+
+
+<div class='grammar'>
+<span class="nonterminal">recordContainer</span> ::=  
+<span class="name">container</span> 
+<span class="nonterminal">namespaceDeclarations</span> 
+<span class="plus"> <span class="nonterminal">record</span> </span>
+<span class="name">endContainer</span> 
+</div>
+
+
+<div class="anexample">
+<p>
+The following container contains records related to the provenance of entity 
+<span class="name">e2</span>.
+</p>
+<pre class="codeexample">
+container
+  prefix ex: http://example.org/,
+  entity(e2, [ prov:type="File", ex:path="/shared/crime.txt", ex:creator="Alice", 
+             ex:content="There was a lot of crime in London last month."])
+  activity(a1, 2011-11-16T16:05:00,,[prov:type="edit"])
+  wasGeneratedBy(e2, a1, [ex:fct="save"])     
+  wasAssociatedWith(a1, ag2, [prov:role="author"])
+  agent(ag2, [ prov:type="prov:Person" %% xsd:QName, ex:name="Bob" ])
+endContainer
+</pre>
+<p>This container could for instance be returned by querying a provenance store for the provenance of entity <span class="name">e2</span> [[PROV-AQ]].  All these assertions are implicitly
+wrapped in a default account.  In the absence of an explicit account, such provenance records remain unattributed.
+</p>
+</div>
+
+<div class="anexample">
+<p>
+The following container </p>
+<pre class="codeexample">
+container
+  prefix ex: http://example.org/,
+
+  account(ex:acc1,http://example.org/asserter1,...)
+  account(ex:acc2,http://example.org/asserter1,...)
+endContainer
+</pre>
+<p> illustrates how two accounts with identifiers <span class="name">ex:acc1</span> and <span class="name">ex:acc2</span> can be returned in a PROV-ASN serialization of the provenance of
+something.
+</p>
+</div>
+
+
+<div class='issue'>
+Clarify what records are. This is <a href="http://www.w3.org/2011/prov/track/issues/208">ISSUE-208</a>. </div>
+</section>
+</section>
+
+
+<section  id="sub-record">
+<h3>Further Terms in Records</h3>
+
+This section further terms in PROV-DM records.
+
+
+
+<section id="record-attribute">
+<h4>Attribute</h4>
+
+<p>An <dfn id="dfn-attribute">attribute</dfn> is a <em>qualified name</em>. 
+An <dfn id="dfn-qualified name">qualified name</dfn> is a name subject to namespace interpretation. It consists of namespace, denoted by an optional prefix, and a local name. The namespace
+is denoted by an IRI [[!IRI]].</p>
+
+
+<p>PROV-DM stipulates that a qualified name can be mapped into an IRI
+ by concatenating the IRI associated with the prefix and the local part (see detailed rule in [[!RDF-SPARQL-QUERY]], Section <a
+href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/#QSynIRI">4.1.1</a>).</p>
+
+<p>A qualified name's prefix is OPTIONAL. If a prefix occurs in a
+ qualified name, it refers to a <a>namespace</a> declared in the
+ record container.  In the absence of prefix, the qualified name
+ refers to the default namespace declared in the container.</p>
+
+<p>In PROV-ASN, an attribute's text matches the <span class="nonterminal">attribute</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+<span class="nonterminal">attribute</span>&nbsp;::=  <span class="nonterminal">qualifiedName</span><br/>
+<span class="nonterminal">qualifiedName</span> &nbsp;::= <span class="nonterminal">prefixedName</span> | <span class="nonterminal">unprefixedName</span><br/>
+<span class="nonterminal">prefixedName</span> &nbsp;::= <span class="nonterminal">prefix</span> <span class="name">:</span> <span class="nonterminal">localPart</span><br/>
+<span class="nonterminal">unprefixedName</span> &nbsp;::= <span class="nonterminal">localPart</span><br/>
+<span class="nonterminal">prefix</span> &nbsp;::= <em>a name without colon compatible with the <a href="http://www.w3.org/TR/2009/REC-xml-names-20091208/#NT-NCName">NC_NAME</a> production
+[[!XML-NAMES]]</em><br/>
+<span class="nonterminal">localPart</span> &nbsp;::= <em>a name without colon compatible with the <a href="http://www.w3.org/TR/2009/REC-xml-names-20091208/#NT-NCName">NC_NAME</a> production
+[[!XML-NAMES]]</em>
+</div>
+
+
+<div class="note">Note that XML NC_NAME don't allow local identifiers to start with a number.  Instead, should we use the productions used in SPARQL or TURTLE?</div>
+
+
+<p>
+For each attribute in a record, its namespace also declares the number of occurrences it
+may have in a list of attributes. The
+property <dfn>attribute occurrence validity</dfn> holds for a record
+if the actual number of occurrences of each attribute in this record is compatible with
+this attribute's declaration it its namespace. How to handle records
+that do not satisfy the <a>attribute occurrence validity</a> property
+is beyond the scope of this specification.</p>
+
+
+<p>From this specification's viewpoint, the interpretation of an attribute declared in a namespace other than prov-dm is out of
+scope.</p>
+
+<p>The PROV data model introduces a fixed set of attributes in the <a href="#prov-dm-namespace">PROV-DM namespace</a>:</p>
+<ul>
+<li> The attribute <dfn id="dfn-role"><span class="name">prov:role</span></dfn>  denotes the function of an entity with respect to an activity, in the context of a usage, generation,
+activity association, start, end record. The attribute <span class="name">prov:role</span> is allowed to occur multiple times in such records. The value associated with a <span
+class="name">prov:role</span> attribute MUST be conformant with  <span class="nonterminal">Literal</span>. </li>
+
+<div class="anexample">
+<p>The following start record describes the role of the agent identified by <span class="name">ag</span> in this start relation with activity <span class="name">a</span>. </p>
+<pre class="codeexample">
+   wasStartedBy(a,ag, [prov:role="program-operator"])
+</pre>
+</div>
+ </li>
+
+<li> The attribute <dfn id="dfn-type"><span class="name">prov:type</span></dfn>  provides further typing information for the element or relation asserted in the record. PROV-DM liberally
+defines a type as a category of things having common characteristics. PROV-DM is agnostic about the representation of types, and only states that
+the value associated with a <span class="name">prov:type</span> attribute MUST be conformant with  <span class="nonterminal">Literal</span>. The attribute <span class="name">prov:type</span>
+is allowed to occur multiple times in a record.</li>
+
+<div class="anexample">
+<p>The following record declares an agent of type software agent</p>
+<pre class="codeexample">
+   agent(ag, [prov:type="prov:SoftwareAgent" %% xsd:QName])
+</pre>
+</div>
+
+
+<li> The  attribute <dfn id="dfn-steps"><span class="name">prov:steps</span></dfn>  defines the level of precision associated with a derivation record. The value associated with a <span
+class="name">prov:steps</span> attribute  MUST be   <span class="name">"single"</span> or <span class="name">"any"</span>. The attribute <span class="name">prov:step</span> occurs at most
+once in a derivation record. A derivation record without attribute <span class="name">prov:step</span> is considered to be equivalent to the same record extended with an extra attribute 
+<span class="name">prov:step</span> and associated value <span class="name">"any"</span>. </li>
+
+<div class="anexample">
+<p>The following record declares an imprecise-1 derivation, which is known to involve one activity, though its identity, usage details of <span class="name">ex:e1</span>, and generation
+details of <span class="name">ex:e2</span> are not asserted.</p>
+<pre class="codeexample">
+   wasDerivedFrom(ex:e2, ex:e1, [prov:steps="single"])
+</pre>
+</div>
+
+<li> The attribute <dfn id="dfn-label"><span class="name">prov:label</span></dfn> provides a human-readable representation of a PROV-DM element or relation.</li>
+
+<div class='issue'>
+ This is <a href="http://www.w3.org/2011/prov/track/issues/219">ISSUE-219</a>. </div>
+
+
+</ul>
+</section>
+
+
+
+<section id="record-identifier">
+<h4>Identifier</h4>
+
+
+<p>An <dfn id="dfn-identifier">identifier</dfn> is a <em>qualified name</em>. A qualified name can be mapped into an IRI
+ by concatenating the IRI associated with the prefix and the local part (see detailed rule in [[!RDF-SPARQL-QUERY]], Section <a
+href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/#QSynIRI">4.1.1</a>).</p>
+
+<div class='grammar'>
+<span class="nonterminal">identifier</span>&nbsp;::=  <span class="nonterminal">qualifiedName</span><br/>
+<span class="nonterminal">eIdentifier</span>&nbsp;::=  <span class="nonterminal">identifier</span>  <em>(intended to denote an entity record)</em><br/>
+<span class="nonterminal">aIdentifier</span>&nbsp;::=  <span class="nonterminal">identifier</span>  <em>(intended to denote an activity record)</em><br/>
+<span class="nonterminal">agIdentifier</span>&nbsp;::=  <span class="nonterminal">identifier</span>  <em>(intended to denote an agent record)</em><br/>
+<span class="nonterminal">gIdentifier</span>::=  <span class="nonterminal">identifier</span> <em>(intended to denote a generation record)</em><br/>
+<span class="nonterminal">uIdentifier</span>::=  <span class="nonterminal">identifier</span> <em>(intended to denote a usage record)</em><br/>
+<span class="nonterminal">nIdentifier</span>::=  <span class="nonterminal">identifier</span> <em>(intended to denote a note record)</em><br/>
+<span class="nonterminal">accIdentifier</span>::=  <span class="nonterminal">identifier</span> <em>(intended to denote an account record)</em>
+</div>
+
+
+</section>
+
+<section id="record-literal">
+<h4>Literal</h4>
+
+<p>
+A PROV-DM Literal represents a data value such as a particular string
+or number.  A PROV-DM Literal represents a value whose interpretation is outside the scope of PROV-DM.
+</p>
+
+<p>In PROV-ASN, a Literal's text matches the <span class="nonterminal">Literal</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+<span class="nonterminal">Literal</span> &nbsp;::= <span class="nonterminal">typedLiteral</span> | <span class="nonterminal">convenienceNotation</span> <br/>
+<span class="nonterminal">typedLiteral</span> ::= <span class="nonterminal">quotedString</span> <span class="name">%%</span> <span class="nonterminal">datatype</span><br/>
+<span class="nonterminal">datatype</span> ::= <span class="nonterminal">qualifiedName</span><br/>
+<span class="nonterminal">convenienceNotation</span> &nbsp;::= <span class="nonterminal">stringLiteral</span> | <span class="nonterminal">intLiteral</span><br/>
+<span class="nonterminal">stringLiteral</span> ::= <span class="nonterminal">quotedString</span><br/>
+<span class="nonterminal">quotedString</span> ::= <em>a finite sequence of characters in which &quot; (U+22) and \ (U+5C) occur only in pairs of the form \&quot; (U+5C, U+22) and \\ (U+5C,
+U+5C), enclosed in a pair of &quot; (U+22) characters</em><br/>
+<span class="nonterminal">intLiteral</span> ::= <em>a finite-length sequence of decimal digits (#x30-#x39) with an optional leading negative sign (-)</em>
+</div>
+
+<p>The non terminals <span class="nonterminal">stringLiteral</span> and
+<span class="nonterminal">intLiteral</span>
+are syntactic sugar for quoted strings with datatype <span class="name">xsd:string</span> and <span class="name">xsd:int</span>, respectively.
+</p>
+
+<p> In particular, a PROV-DM Literal may be an IRI-typed string (with datatype <span class="name">xsd:anyURI</span>);  such IRI has no specific interpretation in the context of PROV-DM.</p>
+
+
+<div class="anexample">
+<p>
+The following examples respectively are the string "abc" (expressed using the convenience notation), the string "abc", the integer number 1, the integer number 1 (expressed using the
+convenience notation) and the IRI "http://example.org/foo".
+<pre class="codeexample">
+  "abc"
+  "abc" %% xsd:string
+  "1" %% xsd:int
+  1
+  "http://example.org/foo" %% xsd:anyURI
+</pre>
+The following example shows a literal of type <span class="name">xsd:QName</span> (see
+<a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#QName">QName</a> [[!XMLSCHEMA-2]]).
+The prefix <span class="name">ex</span>  MUST be bound to a <a>namespace</a> declared in the
+ record container.
+<pre class="codeexample">
+  "ex:value" %% xsd:QName
+</pre>
+</div>
+
+
+
+<div class='note'>Should we define structural equivalence of literals as in OWL2? [[!OWL2-SYNTAX]]
+(see section <a href="http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Literals">Literals</a>).
+</div>
+
+</section>
+
+
+
+
+<section id="record-Time">
+<h4>Time</h4>
+
+<p><dfn id="dfn-time">Time instants</dfn> are defined according to xsd:dateTime [[!XMLSCHEMA-2]].</p> 
+
+
+
+<p>It is OPTIONAL to assert time in usage, generation, and activity records.</p>
+
+
+
+
+</section>
+
+<section id="record-Asserter">
+<h3>Asserter</h3>
+
+<p>An <dfn id="dfn-asserter">asserter</dfn> is a creator of PROV-DM records. An asserter is denoted by an IRI. Such IRI has no specific interpretation in the context of PROV-DM.</p> 
+
+<div class='grammar'>
+<span class="nonterminal">asserter</span>&nbsp;::=  <span class="nonterminal">IRI</span><br/>
+<span class="nonterminal">IRI</span>&nbsp;::=  <em>an IRI compatible with production IRI in [[!IRI]], enclosed in a pair of &lt; (U+3C) and &gt; (U+3E) characters </em>
+</div>
+
+<div class='issue'>
+Currently, the non-terminal <span class="nonterminal">asserter</span> is defined as IRI. We may want the asserter to be an agent instead, and therefore use PROV-DM to express the provenance
+of PROV-DM.  We seek inputs on how to resolve this issue. This is <a href="http://www.w3.org/2011/prov/track/issues/217">ISSUE-217</a></div>
+
+</section>
+
+<section id="record-NamespaceDeclaration">
+<h3>Namespace Declaration</h3>
+
+<p>A PROV-DM <dfn id="dfn-namespace">namespace</dfn> is identified by an IRI reference [[!IRI]]. In PROV-DM, attributes, identifiers, and literals of with datatype <span
+class="name">xsd:QName</span> can be placed in a namespace using the mechanisms described in this specification. </p>
+
+
+<p>A <dfn id="dfn-namespaceDeclaration">namespace declaration</dfn> consists of a binding between a prefix and a namespace. Every qualified name with this prefix in the scope of this
+declaration refers to this namespace. 
+A <dfn id="dfn-defaultNamespaceDeclaration">default namespace declaration</dfn> consists of a namespace. Every unprefixed qualified name in the scope of this default namespace declaration
+refers to this namespace.</p>
+
+<div class='grammar'>
+<span class="nonterminal">namespaceDeclarations</span>&nbsp;::=  
+ |  <span class="group"><span class="nonterminal">defaultNamespaceDeclaration</span> | <span class="nonterminal">namespaceDeclaration</span></span> <span class="star"> <span
+class="nonterminal">namespaceDeclaration</span></span><br>
+<span class="nonterminal">namespaceDeclaration</span>&nbsp;::=  
+<span class="name">prefix</span> <span class="nonterminal">prefix</span> <span class="nonterminal">IRI</span><br/>
+<span class="nonterminal">defaultNamespaceDeclaration</span>&nbsp;::=  
+ <span class="name">default</span> <span class="nonterminal">IRI</span> <br/>
+</div>
+</section>
+
+
+
+
+
+
+<section id="record-Location">
+<h3>Location</h3>
+
+<p><dfn id="dfn-Location">Location</dfn> is an identifiable geographic place (ISO 19112). As such, there are numerous ways in which location can be expressed, such as by a coordinate,
+address, landmark, row, column, and so forth. This  document does not specify how to concretely express  locations, but instead provide a mechanism to introduce locations in assertions. </p> 
+
+
+<p>
+Location is an OPTIONAL attribute of entity records and activity records.  The value associated with a  attribute <span class="name">location</span> MUST be a <span
+class="nonterminal">Literal</span>, expected to denote a location.
+</p>
+
+
+
+
+</section>
+ 
+</section>
+
+</section>
+
+
+ </body></html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/model/working-copy/towards-wd4.html	Tue Feb 07 10:37:59 2012 +0000
@@ -0,0 +1,1736 @@
+<!DOCTYPE html>
+
+<html><head> 
+    <title>PROV-DM Part 1: The Provenance Data Model</title> 
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
+    <!-- 
+      === NOTA BENE ===
+      For the three scripts below, if your spec resides on dev.w3 you can check them
+      out in the same tree and use relative links so that they'll work offline,
+     -->
+<!-- PM -->
+    <style type="text/css">
+      .note { font-size:small; margin-left:50px }
+     </style>
+
+    <script src="http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js" class="remove"></script> 
+    <script src="http://www.w3.org/2007/OWL/toggles.js" class="remove"></script> 
+
+    <script class="remove"> 
+      var addExtraReferences = function() {
+          for (var k in extraReferences)
+              berjon.biblio[k] = extraReferences[k];
+      };
+      var extraReferences = {
+        "CLOCK":
+         "Lamport, L. "+
+         "<a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\"><cite>Time, clocks, and the ordering of events in a distributed system</cite></a>."+
+         "Communications of the ACM 21 (7): 558–565. 1978. "+
+         "URL: <a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\">http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf</a> " +
+         "DOI: doi:10.1145/359545.359563.",
+        "CSP":
+         "Hoare, C. A. R. "+
+         "<a href=\"http://www.usingcsp.com/cspbook.pdf\"><cite>Communicating Sequential Processes</cite></a>."+
+         "Prentice-Hall. 1985"+
+         "URL: <a href=\"http://www.usingcsp.com/cspbook.pdf\">http://www.usingcsp.com/cspbook.pdf</a>",
+        "Logic":
+          "W. E. Johnson"+
+          "<a href=\"http://www.ditext.com/johnson/intro-3.html\"><cite>Logic: Part III</cite></a>."+
+          "1924. "+
+          "URL: <a href=\"http://www.ditext.com/johnson/intro-3.html\">http://www.ditext.com/johnson/intro-3.html</a>",
+        "PROV-SEM":
+          "James Cheney "+
+          "<a href=\"http://www.w3.org/2011/prov/wiki/FormalSemanticsStrawman\"><cite>Formal Semantics Strawman</cite></a>. "+
+          "2011, Work in progress. "+
+          "URL: <a href=\"http://www.w3.org/2011/prov/wiki/FormalSemanticsStrawman\">http://www.w3.org/2011/prov/wiki/FormalSemanticsStrawman</a>",
+
+        "PROV-PRIMER":
+          "Yolanda Gil and Simon Miles (eds.) Khalid Belhajjame, Helena Deus, Daniel Garijo, Graham Klyne, Paolo Missier, Stian Soiland-Reyes, and Stephan Zednik "+
+          "<a href=\"http://www.w3.org/TR/prov-primer/\"><cite>Prov Model Primer</cite></a>. "+
+          "2011, Working Draft. "+
+          "URL: <a href=\"http://www.w3.org/TR/prov-primer/\">http://www.w3.org/TR/prov-primer/</a>",
+
+        "PROV-O":
+          "Satya Sahoo and Deborah McGuinness (eds.) Khalid Belhajjame, James Cheney, Daniel Garijo, Timothy Lebo, Stian Soiland-Reyes, and Stephan Zednik "+
+          "<a href=\"http://www.w3.org/TR/prov-o/\"><cite>Provenance Formal Model</cite></a>. "+
+          "2011, Working Draft. "+
+          "URL: <a href=\"http://www.w3.org/TR/prov-o/\">http://www.w3.org/TR/prov-o/</a>",
+
+        "PROV-AQ":
+          "Graham Klyne and Paul Groth (eds.) Luc Moreau, Olaf Hartig, Yogesh Simmhan, James Meyers, Timothy Lebo, Khalid Belhajjame, and Simon Miles "+
+          "<a href=\"http://www.w3.org/TR/prov-aq/\"><cite>Provenance Access and Query</cite></a>. "+
+          "2011, Working Draft. "+
+          "URL: <a href=\"http://www.w3.org/TR/prov-aq/\">http://www.w3.org/TR/prov-aq/</a>",
+      };
+      var respecConfig = {
+          // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
+          specStatus:           "ED",
+          
+          // the specification's short name, as in http://www.w3.org/TR/short-name/
+          shortName:            "prov-dm",
+ 
+          // if your specification has a subtitle that goes below the main
+          // formal title, define it here
+          //subtitle   :  "Some speculative write-ups, for discussion before integration in the data model",
+ 
+          // if you wish the publication date to be other than today, set this
+          // publishDate:  "2011-10-18",
+ 
+          // if the specification's copyright date is a range of years, specify
+          // the start date here:
+          // copyrightStart: "2005"
+ 
+          // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
+          // and its maturity status
+          //previousPublishDate:  "2011-12-15",
+          //previousMaturity:  "WD",
+ 
+          // if there a publicly available Editor's Draft, this is the link
+          edDraftURI:           "http://dvcs.w3.org/hg/prov/raw-file/default/model/working-copy/towards-wd4.html",
+ 
+          // if this is a LCWD, uncomment and set the end of its review period
+          // lcEnd: "2009-08-05",
+ 
+          // if you want to have extra CSS, append them to this list
+          // it is recommended that the respec.css stylesheet be kept
+          extraCSS:             ["http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css", "./extra.css"],
+ 
+          // editors, add as many as you like
+          // only "name" is required
+          editors:  [
+              { name: "Luc Moreau", url: "http://www.ecs.soton.ac.uk/~lavm/",
+                company: "University of Southampton" },
+              { name: "Paolo Missier", url: "http://www.cs.ncl.ac.uk/people/Paolo.Missier",
+                company: "Newcastle University" },
+          ],
+ 
+          // authors, add as many as you like. 
+          // This is optional, uncomment if you have authors as well as editors.
+          // only "name" is required. Same format as editors.
+ 
+          
+          // name of the WG
+          wg:           "Provenance Working Group",
+          
+          // URI of the public WG page
+          wgURI:        "http://www.w3.org/2011/prov/",
+          
+          // name (with the @w3c.org) of the public mailing to which comments are due
+          wgPublicList: "public-prov-wg",
+          
+          // URI of the patent status for this WG, for Rec-track documents
+          // !!!! IMPORTANT !!!!
+          // This is important for Rec-track documents, do not copy a patent URI from a random
+          // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
+          // Team Contact.
+          wgPatentURI:  "http://www.w3.org/2004/01/pp-impl/46974/status",
+
+          // Add extraReferences to bibliography database
+          preProcess: [addExtraReferences],
+      };
+    </script> 
+  </head> 
+  <body> 
+
+    <section id="abstract">
+<p>
+<b>Editors' working copy can change at any time. </b>
+</p>
+    </section> 
+
+<section id="sotd">
+<b>Editors' working copy can change at any time. </b>
+</section>
+
+
+<div class="buttonpanel"> 
+<form action="#"><p> 
+<input id="hide-bnf" onclick="set_display_by_class('div','grammar','none'); set_display_by_id('hide-bnf','none');  set_display_by_id('show-bnf','');" type="button" value="Hide Grammar" /> 
+<input id="show-bnf" onclick="set_display_by_class('div','grammar',''); set_display_by_id('hide-bnf','');  set_display_by_id('show-bnf','none');" style="display: none" type="button"
+value="Show Grammar" /> 
+<input id="hide-asn" onclick="set_display_by_class('div','withAsn','none');set_display_by_class('span','withAsn','none'); set_display_by_id('hide-asn','none'); set_display_by_id('show-asn','');" type="button"
+value="Hide ASN" /> 
+<input id="show-asn" onclick="set_display_by_class('div','withAsn',''); set_display_by_class('span','withAsn','');  set_display_by_id('hide-asn',''); set_display_by_id('show-asn','none');" style="display: none"
+type="button" value="Show ASN" /> 
+</p> 
+</form> 
+</div>     
+
+
+
+
+<section id='changes'>
+<p> Following F2F2 guidance, in this document we try to: 
+<ul>
+<li> pitch from the start the idea of an upgrade path, from 'scruffy provenance' (term TBD), to 'precise provenance' (term TBD)
+<li> formulate concepts without referring to things, just in term of entities, the intent is that the semantics only refers to things
+<li> introduce concepts minimally, just to be able to express 'scruffy provenance' 
+<li> present the data model
+<li>present the upgrade path
+<li>contemplating the organization of the deliverable in two/three separate documents.
+</ul>
+</section>
+
+
+<!--
+<section id='preliminaries'>
+<h2>Preliminaries</h2>
+-->
+
+    <section id='conceptualization'> 
+<h1>Overview</h1>
+
+PROV-DM is a data model for describing the provenance of <em>Entities</em>, that is, of things in the world. The term "Things" encompasses a broad diversity of concepts, including digital objects such as a file or web page, physical things such as a building or a printed book, or a car as well as abstract concepts and ideas. One can regard any Web resource as an example of Entity in this context. This section provides an overview of the main elements of the PROV data model. 
+
+  
+    <section id='section-entity-activity-agent'> 
+<h2>Entity, Activity, Agent</h2>
+
+
+
+
+<p><dfn id="concept-entity">Entities</dfn> are things in the world one
+ wants to provide provenance for.  For the purpose of this
+ specification, things can be physical, digital, conceptual, or
+ otherwise; the world may be real or imaginary.
+</p>
+
+
+<!--
+<div class="anexample" id="entity-example">
+An entity may be a web page at a URI, a file in a file system, a car or an idea.
+</div>
+-->
+
+<p>An <dfn id="concept-activity">Activity</dfn> is anything that can operate on entities. In particular, activities may produce, consume, transform an entity. Activities that operate on digital entities may for example move, copy, or duplicate them.
+
+
+
+<!--
+<p>In the world, <dfn id="concept-activity">activities</dfn> involve
+entities in multiple ways:  consuming them,  processing them, 
+transforming them,  modifying them,  changing them,  relocating
+them,  using them,  generating them, being associated with them,
+etc.</p>
+-->
+
+<div class="anexample" id="activity-example">
+An activity may be the publishing of a document on the web, sending a tweet, extracting metadata embedded in a file, or driving a car from Boston to Cambridge, assembling a data set based on a set of measurements, performing a statistical analysis over a data set, sorting news items according to some criteria, running a sparql query over a triple store, and editing a file.
+</div>
+
+<p>An <dfn id="concept-agent">agent</dfn> is a type of entity that can be associated to an activity, to indicate that it bears some form of responsibility for the activity taking
+place.
+
+
+<p>An agents is a particular type of Entity. This means that the model can be
+ used to express provenance of the agents themselves.  </p>
+
+<div class="anexample" id="agent-example">
+For
+ example, a software for checking the use of grammar in a document may be defined as an agent of a document
+ preparation activity, and at the same time one can describe its provenance, including for instance the vendor and the version history.</p>
+
+</section>
+
+
+
+    <section id="section-generation-usage-derivation"> 
+<h2>Generation, Usage, Derivation</h2>
+
+<p>Activities and entities are associated with each other in two different ways: activities are consumers of entities and activities are producers of entities.  For provenance purpose, we define the following notions of generation and usage. </p>
+
+<p><dfn id="concept-generation">Generation</dfn> is the completed production of a new entity by activity.
+ This entity become available for usage after this generation. This entity did not exist before generation. </p>
+
+<p><dfn id="concept-usage">Usage</dfn> is the beginning on  an entity being consumed by an activity.
+Before usage, the activity had not begun to consume or use to this entity (and could not have been affected by the entity).</p>
+</p>
+
+<div class="anexample" id="generation-usage-example">
+<p>Examples of generation are the completed creation of a file by a
+program, the completed creation of a linked data set, and the completed
+publication of a new version of a document.</p>
+
+
+<p>Usage examples include a procedure beginning to consume a parameter, a service starting to read a value on a port, a program beginning to read a configuration
+file, or the point at which an ingredient, such as eggs, is being added in a baking activity. Usage may entirely consume an entity (e.g. eggs are not longer available after being added to
+the mix), or leave it as such, ready for further uses (e.g. a file on a file system can be read indefinitely).</p>
+
+    <div class="note"> PM The egg example may be confusing: one expects to have some construct to distinguish between use-and-consume and use-without-consuming. Consider replacing with:<br/>
+in general the same entity may be used multiple times, possibly by different activities
+    </div>
+
+    
+</div>
+
+<p>Activities are consumers of entities and producers of entities. In some case, the consumption of entity influences the creation of another in some way. This notion is captured by derivations, defined as follows.</p>
+
+<p><dfn id="concept-derivation">Derivation</dfn> is the fact that some entity is transformed from, created from, or affected by another entity in the world.  </p>
+<!-- doesn't seem right to say fact, should I use influence? -->
+
+<div class="anexample" id="derivation-example">
+<p>Examples of derivation include  the transformation of a relational table into a
+linked data set, the transformation of a canvas into a painting, the transportation of a person from London to New York, and a physical transformation such as the melting of ice into water.</p>
+</div>
+
+</section>
+
+    <section id="section-types-entities-agents"> 
+<h2>Types of Entities and Agents</h2>
+
+<p>There are some useful types of entities and agents that are commonly encountered in applications making data and documents available on the Web; we introduce them in this section. </p>
+
+<p>A <dfn id="concept-plan">Plan</dfn> is an entity that represent a set of
+actions or steps intended by one or more agents to achieve some goals. PROV-DM is not
+prescriptive about the nature of plans, their representation, the
+actions and steps they consist of, and their intended goals.  Since plans may evolve over time,
+it may become necessary to track their provenance, and hence, plans are
+entities.</li> 
+
+<div class="anexample" id="plan-example">
+<p>
+A plan can be a blog post tutorial for how to set up a web server, a list of instructions for a micro-processor execution, a cook's written recipe for chocolate cake, or a workflow for a scientific experiment.
+</p>
+</div>
+
+<p>The <dfn id="collection">Collection</dfn> type is used to represent entities that have internal structure. PROV-DM defines provenance constructs for a very general type of collection, namely a set of key-value pairs (referred to as a <em>map</em> or, in some programming languages, a <em>dictionary</em> or <em>associative array</em>). This can be used to describe other collection types, including for example nested ordered lists. The definition of such more specific types is out of the scope of PROV-DM.
+</p>
+
+<p>Three types of agents are recognized by PROV-DM because they are commonly encountered in application making data and documents available on the Web: persons, software agents, and organizations.</p>
+
+<p> Even software agents can be assigned some responsibility for the effects they have in the world, so for example if one is using a Text Editor and one's laptop crashes, then one would say
+that the Text Editor was responsible for crashing the laptop.  If one invokes a service to buy a book, that service can be considered responsible for drawing funds from one's bank to make
+the purchase (the company that runs the service and the web site would also be responsible, but the point here is that we assign some measure of responsibility to software as well).  So when
+someone models software as an agent for an activity in our model, they mean the agent has some responsibility for that activity.</p>
+</section>
+
+    <section id="section-responsibility"> 
+<h2>Responsibility</h2>
+
+  
+
+
+<p>The key purpose of agents is to assign responsibility
+for activities. 
+The definition of agent intentionally stays away from using concepts such as enabling, causing, initiating, affecting, etc, because many entities also enable, cause, initiate, and affect in some way
+the activities.  So the notion of having some degree of responsibility is really what makes an agent.</p>
+
+<p>It is important to reflect that there is a degree in
+the responsibility of agents, and that is a major reason for
+distinguishing among all the agents that have some association with an
+activity and determine which ones are really the originators of the
+entity.  For example, a programmer and a researcher could both be
+associated with running a workflow, but it may not matter what
+programmer clicked the button to start the workflow while it would
+matter a lot what researcher told the programmer to do so.  Another
+example: a student publishing a web page describing an academic
+department could result in both the student and the department being
+agents associated with the activity, and it may not matter what
+student published a web page but it matters a lot that the department
+told the student to put up the web page.  So there is some notion of
+responsibility that needs to be captured. </p>
+
+<div class="anexample" id="association-example">
+<p>Examples of association between an activity and agent include designing, participation, initiation and termination, timetabling or sponsoring. </p>
+</div>
+
+<div class="note">paragraph below to be moved above, where plans are first mentioned?</div>
+<p>Provenance reflects activities that have occurred.  In some  
+cases, those activities reflect the execution of a plan that was  
+designed in advance to guide the execution.  PROV-DM allows attaching  
+a plan to an activity record, which represents what was intended to  
+happen.  The plan can be useful for various tasks, for example to  
+validate the execution as represented in the provenance record, to  
+manage expectation failures, or to provide explanations.</p>
+While PROV-DM does not
+specify the representations of plans, it allows for activities to be
+associated with plans. </p>
+</section>
+
+    <section id="section-ER"> 
+<h2>Overview ER Diagram</h2>
+
+<div class='note'>
+<p>For the overview, we should simplify the diagram.</p>
+</div>
+
+<div style="text-align: center;">
+  <figure>
+  <img src="../overview.png" alt="PROV-DM overview"/>
+<figcaption>PROV-DM overview</figcaption>
+  </figure>
+</div>
+
+
+</section>
+</section>
+<!-- </section>  -->
+
+<section id="section-example"> 
+<h2>Example</h2>
+
+
+<div class='note'>
+<p>Provenance of a W3C tech report. To develop.</p>
+</div>
+
+
+<p>This example describes the provenance of the prov-dm (version 2) document http://www.w3.org/TR/2011/WD-prov-dm-20111215. The purpose of this example is to bring up potential issues with identifiers in the data model.</p>
+
+
+<p>
+This example consists of the kind of provenance records that W3C could keep, for auditors to check that due processes are followed.</p>
+
+<ul>
+<li> WD-prov-dm-20111215 was derived from WD-prov-dm-20111018</li>
+<li> both WD-prov-dm-20111215 and WD-prov-dm-20111018 were published by the w3c agent </li>
+<li> the publication activity for WD-prov-dm-20111215 used a publication request (req3)</li>
+<li> the publication activity for WD-prov-dm-20111018 used another publication request (req2) and a transition request (req1)</li>
+<li> publications were according to the process rules (rec-advance: a plan).</li>
+
+
+
+<div style="text-align: center;">
+  <figure>
+  <img src="http://www.w3.org/2011/prov/wiki/images/e/e6/W3c-publication1.png" alt="Provenance of a Tech Report" style="max-width: 98%; "/>
+<figcaption>Provenance of a Tech Report</figcaption>
+  </figure>
+</div>
+
+
+</section>
+
+<section id="data-model-concepts"> 
+
+<h2>PROV-DM Core</h2>
+
+<section id="record-element"> 
+<h3>Element</h3>
+
+
+   <section id="record-Entity"> 
+      
+<h4>Entity</h4>
+
+
+<p>An entity<span class="withAsn">, written <span class="name">entity(id, [ attr1=val1, ...])</span> in PROV-ASN, </span> contains:</p>
+<ul>
+<li><em>id</em>: an identifier identifying an entity; </li>
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs representing this entity's situation in the world.</li>
+</ul>
+
+<div class="anexample">
+<p>
+The following entity,</p>
+<pre class="codeexample">
+entity(e0, [ prov:type="File", ex:path="/shared/crime.txt", ex:creator="Alice" ])
+</pre>
+states the existence of an entity, denoted by identifier <span class="name">e0</span>,  with type <span class="name">File</span> and path <span class="name">/shared/crime.txt</span> in the
+file system,  and creator alice. The  attributes <span class="name">path</span> and <span class="name">creator</span> are application specific, whereas the attribute <span
+class="name">type</span> is reserved in the PROV-DM namespace.
+</div>
+
+<p>Further considerations:</p>
+<ul>
+
+<li id='attribute-occurrence-in-entity-record'>The attributes
+occurring in an entity record MUST be declared in the namespace
+referred to by their prefix according to
+<a href="#record-attribute">Section record-attribute</a>. Furthermore,
+for each attribute, a namespace also declares the number of
+occurrences it may have in a list of attributes. An entity record is
+valid if the number of occurrences of any of its attributes is
+compatible with this attribute's declaration it its namespace. This
+property applies to all types of records, and is referred to
+as <a>attribute occurrence validity</a>.</li>
+
+
+<li>Activities are not entities, as explained below.</li>
+</ul>
+
+
+<div class='issue'>The characterization interval of an entity record is currently implicit. Making it explicit would allow us to define wasComplementOf more precisely. 
+Beginning and end of characterization interval could be expressed by attributes (similarly to activities). 
+How do we define the end of an entity? This is <a href="http://www.w3.org/2011/prov/track/issues/204">ISSUE-204</a>.
+</div>
+
+
+ <div class="issue">
+There is still some confusion about what the identifiers really denote. For instance, are they entity identifiers or entity record identifiers.  This is <a
+href="http://www.w3.org/2011/prov/track/issues/183">ISSUE-183</a>.
+An example and questions appear in <a href="http://www.w3.org/2011/prov/track/issues/215">ISSUE-215</a>. A related issued is also raised in <a
+href="http://www.w3.org/2011/prov/track/issues/145">ISSUE-145</a>.
+</div>
+
+
+    </section> 
+
+    <section id="record-Activity"> 
+      
+<h3>Activity</h3>
+
+<p> An activity<span class="withAsn">, written <span class="name">activity(id, st, et, [ attr1=val1, ...])</span> in PROV-ASN,</span> contains:</p>
+<ul>
+<li><em>id</em>: an identifier identifying an activity;</li>
+<li><em>startTime</em>: an OPTIONAL time <span class="name">st</span> indicating the start of the activity;</li>
+<li><em>endTime</em>: an OPTIONAL time <span class="name">et</span> indicating the end of the activity;</li>
+<li><em>attributes</em>:  an OPTIONAL set of attribute-value pairs, representing  attributes of this activity.</li>
+</ul>
+
+<div class="anexample">
+<p>
+The following expression</p>
+<pre class="codeexample">
+activity(a1,2011-11-16T16:05:00,2011-11-16T16:06:00,
+        [ex:host="server.example.org",prov:type="ex:edit" %% xsd:QName])
+</pre>
+<p>states the existence of an activity with identifier <span class="name">a1</span>, start time <span class="name">2011-11-16T16:05:00</span>, and end time <span
+class="name">2011-11-16T16:06:00</span>, running on host <span class="name">server.example.org</span>, and of type <span class="name">edit</span> (declared in some namespace with prefix
+<span class="name">ex</span>).  The attribute <span class="name">host</span> is application specific, but MUST hold for the duration of activity.  The attribute <span
+class="name">type</span> is a reserved attribute of PROV-DM, allowing for subtyping to be expressed.</p>
+</div>
+
+
+
+<p>Further considerations:</p>
+<ul>
+<li>An activity is not an entity.
+Indeed,  an entity exists in full at
+any point in its lifetime, persists during this
+interval, and preserves the characteristics that makes it
+identifiable.  Alternatively, an activity is something that happens,
+unfolds or develops through time, but is typically not identifiable by
+the characteristics it exhibits at any point during its duration. 
+This distinction is similar to the distinction between 
+'continuant' and 'occurrent' in logic [[Logic]].</li>
+</ul>
+
+
+</section> 
+
+<section id="record-Agent">
+<h3>Agent</h3>
+
+
+
+
+<p>An agent<span class="withAsn">, noted <span class="name">agent(id, [ attr1=val1, ...])</span> in PROV-ASN,</span> contains:</p>
+<ul>
+<li><em>id</em>: an identifier identifying an agent;</li>
+<li><em>attributes</em>: a set of attribute-value pairs representing this agent's situation in the world.
+</li>
+</ul>
+
+
+<p>
+From an inter-operability perspective, it is useful to define some basic categories of agents since
+it will improve the use of provenance records by applications.  
+There should be very few of these basic categories to keep the model simple and accessible. 
+There are three types of agents in the model since they are common across most anticipated domain of use:
+<ul>
+<li><span class="name">Person</span>: agents of type Person are people. (This type is equivalent to a "foaf:person" [[FOAF]])</li> 
+<li><span class="name">Organization</span>: agents of type Organization are social institutions such as companies, societies etc. (This type is equivalent to a "foaf:organization"
+[[FOAF]])</li> 
+<li><span class="name">SoftwareAgent</span>: a software agent is a piece of software. </li>
+</ul>
+<p>These types are mutually exclusive, though they do not cover all kinds of agent. </p>
+
+
+
+<div class="anexample">
+The following expression is about an agent identified by <span class="name">e1</span>, which is a person, named Alice, with employee number 1234.
+<pre class="codeexample">
+agent(e1, [ex:employee="1234", ex:name="Alice", prov:type="prov:Person" %% xsd:QName])
+</pre>
+</div>
+
+<div class='issue'> Shouldn't we allow for entities (not agent) to be associated with an activity?  Should we drop the inference association-agent? <a
+href="http://www.w3.org/2011/prov/track/issues/203">ISSUE-203</a>.</div>
+
+</section>
+
+   <section id="record-note"> 
+      
+<h4>Note</h4>
+
+<p>As provenance assertions are exchanged between systems, it may be useful to add extra-information about such assertions. For instance, a "trust service" may add value-judgements about the
+trustworthiness of some of the assertions made. Likewise, an interactive visualization component may want to enrich a set of provenance assertions with information helping reproduce their
+visual representation. To help with inter-operability, PROV-DM introduces a simple annotation mechanism allowing any identifiable record to be associated with notes.</p>
+
+<p>A <dfn id="dfn-note">note</dfn> is a set of attribute-value pairs, whose meaning is application specific.</p> 
+
+
+<p>A separate PROV-DM construct is used to associate a note with something that is identifiable (see <a href="#record-annotation">Section on annotation</a>). A given note may be associated with
+multiple asssertions.
+</p>
+
+
+<div class="anexample">
+<p>
+The following note consists of a set of application-specific attribute-value pairs, intended
+to help the rendering of the assertion it is associated with, by
+specifying its color and its position on the screen.</p>
+<pre class="codeexample">
+note(ann1,[ex:color="blue", ex:screenX=20, ex:screenY=30])
+hasAnnotation(g1,n1)
+</pre>
+<p>The note is associated with an assertion <span class="name">g1</span> previously introduced (<a title="annotation record">hasAnnotation</a> is 
+discussed in Section <a href="#record-annotation">Annotation</a>).  In this example,
+the attribute-value pairs do not constitute a representation of something
+in the world; they are just used to help render provenance.
+</p>
+</div>
+
+
+   </section> 
+
+</section>
+
+
+<section id="record-relation">
+<h3>Relation</h3>
+
+<p>This section describes all the PROV-DM records representing relations between the elements introduced in <a href="#record-element">Section Element</a>. While these relations are not
+binary,  they all involve two primary elements. They can be summarized as follows. </p>
+
+
+<div style="text-align: center;">
+<table border="1" style="margin-left: auto; margin-right: auto;">
+<caption>PROV-DM Core Relation Summary</caption>
+<tr><td></td><td>Entity</td><td>Activity</td><td>Agent</td><td>Note</td></tr> 
+<tr><td>Entity</td><td><a title="derivation record">wasDerivedFrom</a><br><a title="alternate record">alternateOf</a><br><a title="specialization record">specializationOf</a></td><td><a
+title="generation record">wasGeneratedBy</a></td><td>&mdash;</td><td><a title="annotation record">hasAnnotation</a></td></tr>
+<tr><td>Activity</td><td><a title="usage record">used</a></td><td>&mdash;</td><td><a title="start record">wasStartedBy</a><br><a title="end record">wasEndedBy</a><br><a title="activity
+association record">wasAssociatedWith</a></td><td><a title="annotation record">hasAnnotation</a></td></tr>
+<tr><td>Agent</td><td>&mdash;</td><td>&mdash;</td><td><a title="responsibility record">actedOnBehalfOf</a></td><td><a title="annotation record">hasAnnotation</a></td></tr>
+<tr><td>Note</td><td>&mdash;</td><td>&mdash;</td><td>&mdash;</td><td><a title="annotation record">hasAnnotation</a></td></tr>
+</table>
+</div>
+
+
+<p>In PROV-ASN, all these relation records are  conformant to the <span class='nonterminal'>relationRecord</span> production of the grammar.</p>
+
+<section id="activity-entity-relation">
+<h3>Activity-Entity Relation</h3>
+
+<section id="record-Generation">
+<h4>Generation</h4>
+
+
+<p>Generation<span class="withAsn">, written <span class="name">wasGeneratedBy(id,e,a,t,attrs)</span></span> in PROV-ASN, has the following components:</p>
+<ul>
+<li><em>id</em>:  an OPTIONAL identifier identifying the generation;</li> 
+<li><em>entity</em>:  an identifier identifying a created entity; </li>
+<li><em>activity</em>:  an OPTIONAL identifier identifying the activity that creates the entity;</li>
+
+<li><em>time</em>: an OPTIONAL "generation time" <span class="name">t</span>, the time at which the entity was completely created;</li>
+
+<li><em>attributes</em>:  an OPTIONAL set of attribute-value pairs that describes the modalities of generation of this entity by this activity.</li>
+</ul>
+<p>While the components <em>activity</em>, <em>time</em>, and  <em>attributes</em> are OPTIONAL, at least one of them MUST be present.</p>
+
+
+
+
+
+<div class='anexample'>
+<p>
+The following expressions</p>
+<pre class="codeexample">
+  wasGeneratedBy(e1,a1, 2001-10-26T21:32:52, [ex:port="p1", ex:order=1])
+  wasGeneratedBy(e2,a1, 2001-10-26T10:00:00, [ex:port="p1", ex:order=2])
+</pre>
+<p>state the existence of two generations (with respective times <span class="name">2001-10-26T21:32:52</span> and <span
+class="name">2001-10-26T10:00:00</span>), at which new entities,  identified by <span class="name">e1</span> and <span class="name">e2</span>, are created by an
+activity,  identified by <span class="name">a1</span>.
+The first one is available as the first value on port p1, whereas the other is the second value on port p1.  The semantics of <span class="name">port</span> and <span
+class="name">order</span> are application specific.
+</p>
+</div>
+
+
+<div class='anexample'>
+<p>
+In some cases, we may want to record the time at which an entity was generated without having to specify the activity that generated it. To support this requirement, the activity component in generation is optional. Hence,  the following expression indicates the time at which an entity is generated, without naming the activity that did it.</p>
+<pre class="codeexample">
+  wasGeneratedBy(e,,2001-10-26T21:32:52)
+</pre>
+</div>
+
+<div class='note'>
+<p>????????? 
+A generation record's id is OPTIONAL. It MUST be used when annotating generation records (see Section <a href="#record-annotation">Annotation Record</a>) or when defining precise-1
+derivations (see <a href="#Derivation-Relation">Derivation Record</a>).
+</p>
+</div>
+
+<div class='pending'> We may want to assert the time at which an entity is created. The placeholder for such time information is a generation record. But a generation mandates the presence of an activity identifier. But it may not be known.
+It would be nice if the activity identifier was made optional in the generation record.
+This is <a href="http://www.w3.org/2011/prov/track/issues/205">ISSUE-205</a>.
+<em>This is now implemented. See also <a href="http://www.w3.org/2011/prov/track/issues/43">ISSUE-43</a>.</em></div>
+</section>
+
+
+<section id="record-Usage">
+<h3>Usage</h3>
+
+
+
+
+<p>Usage<span class="withAsn">, written <span class="name">used(id,a,e,t,attrs)</span> in PROV-ASN,</span> has the following constituents:</p>
+<ul>
+<li><em>id</em>:  an OPTIONAL identifier identifying the usage;</li> 
+<li><em>activity</em>: an identifier for the consuming activity;</li>
+<li><em>entity</em>: an identifier for the consumed entity;</li>
+<li><em>time</em>: an OPTIONAL "usage time", the time at which the entity started to be used;</li>
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs that describe the modalities of usage of this entity by this activity.</li>
+</ul>
+
+<p>
+A reference to a given entity MAY appear in multiple usages that share
+ a given activity identifier. 
+</p>
+
+
+<div class='anexample'>
+<p>The following usages</p>
+<pre class="codeexample">
+  used(a1,e1,2011-11-16T16:00:00,[ex:parameter="p1"])
+  used(a1,e2,2011-11-16T16:00:01,[ex:parameter="p2"])
+</pre>
+<p>state that the activity identified by <span class="name">a1</span>, consumed two entities identified by <span
+class="name">e1</span> and <span class="name">e2</span>, at times <span class="name">2011-11-16T16:00:00</span> and  <span class="name">2011-11-16T16:00:01</span>, respectively; the first
+one was found as the value of parameter <span class="name">p1</span>, whereas the second was found as value of parameter <span class="name">p2</span>.  The semantics of <span
+class="name">parameter</span> is application specific.</p>
+</div>
+
+
+
+<div class='note'>
+
+
+
+<p>
+A usage record's id is OPTIONAL. It MUST be present when annotating usage records (see Section <a href="#record-annotation">Annotation Record</a>) or when defining precise-1 derivations (see
+<a href="#Derivation-Relation">Derivation Record</a>).</p>
+</div>
+
+
+
+
+</section>
+</section>
+
+
+
+
+
+<section id="activity-agent-relation">
+<h3>Activity-Agent Relation</h3>
+
+<section id="record-ActivityAssociation">
+<h4>Activity Association</h4>
+
+
+<p>As far as responsibility is concerned, PROV-DM offers two kinds of constructs. The first, introduced in this section, represents an association between an agent, a plan, and an activity; the second, introduced in <a
+href="#record-responsibility">Section Responsibility</a>, represents the fact that an agent was acting on behalf of another, in the context of an activity. </p>
+
+
+<p>An <dfn id="dfn-activity-association">activity association</dfn><span class="withAsn">, written <span class="name">wasAssociatedWith(id,a,ag2,pl,attrs)</span> in PROV-ASN,</span> has the following
+constituents:</p>
+<ul>
+<li><em>id</em>:  an OPTIONAL identifier for the association between an activity and an agent;</li> 
+<li><em>activity</em>: an identifier for the activity;</li>
+<li><em>agent</em>: an identifier for the agent associated with the activity;</li>
+<li><em>plan</em>: an OPTIONAL identifier for an entity, which is the plan adopted by the agent in the context of this activity;
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs that describe the modalities of association of this activity with this agent.</li>
+</ul>
+
+<div class="anexample">
+In the following example, a designer and an operator agents are asserted to be associated with an activity. The designer's goals are achieved by a workflow <span class="name">ex:wf</span>.   
+<pre class="codeexample">
+activity(ex:a,[prov:type="workflow execution"])
+agent(ex:ag1,[prov:type="operator"])
+agent(ex:ag2,[prov:type="designer"])
+wasAssociatedWith(ex:a,ex:ag1,[prov:role="loggedInUser", ex:how="webapp"])
+wasAssociatedWith(ex:a,ex:ag2,ex:wf,[prov:role="designer", ex:context="project1"])
+entity(ex:wf,[prov:type="prov:Plan"%% xsd:QName, ex:label="Workflow 1", 
+              ex:url="http://example.org/workflow1.bpel" %% xsd:anyURI])
+</pre>
+Since the workflow <span class="name">ex:wf</span> is itself an entity, its provenance can also be expressed in PROV-DM: it can be generated by some activity and derived from other entities,
+for instance.
+</div>
+
+<div class='issue'> The activity association record does not allow for a plan to be asserted without an agent.
+This seems over-restrictive. Discussed in the context of <a href="http://www.w3.org/2011/prov/track/issues/203">ISSUE-203</a>.</div>
+
+
+<div class='issue'> Agents should not be inferred. WasAssociatedWith should also work with entities.
+This is <a href="http://www.w3.org/2011/prov/track/issues/206">ISSUE-206</a>.</div>
+
+
+</section>
+
+<section id="record-Start-End">
+<h4>Activity Start and Activity End</h4>
+
+<p> A <dfn id="dfn-Start">activity start</dfn> is a representation of an agent starting an activity.
+ An <dfn id="dfn-End">activity end</dfn> is a representation of an agent ending an activity. Both relations are specialized forms of <span class="name">wasAssociatedWith</span>. They contain
+attributes describing the modalities of acting/ending activities.</p>
+
+
+
+<p>An activity start<span class="withAsn">, written <span class="name">wasStartedBy(id,a,ag,attrs)</span> in PROV-ASN,</span> contains:</p>
+<ul>
+<li><em>id</em>:  an OPTIONAL identifier identifying the activity start;</li> 
+<li><em>activity</em>: an identifier identifying the started activity;
+<li><em>agent</em>: an identifier for the agent starting the activity;
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs describing modalities according to which the agent started the activity.
+</ul>
+
+<p>An activity end<span class="withAsn">, written <span class="name">wasEndedBy(id,a,ag,attrs)</span> in PROV-ASN,</span> contains:</p>
+<ul>
+<li><em>id</em>:  an OPTIONAL identifier identifying the activity end;</li> 
+<li><em>activity</em>: an identifier identifying the ended activity;
+<li><em>agent</em>: an identifier for the agent ending the acitivity;
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs describing modalities according to which the agent ended the activity.
+</ul>
+
+
+<div class="anexample">
+<p>
+The following assertions</p>
+<pre class="codeexample">
+wasStartedBy(a,ag,[ex:mode="manual"])
+wasEndedby(a,ag,[ex:mode="manual"])
+</pre>
+<p>state that the activity, represented by the activity record denoted by <span class="name">a</span>
+was started and ended by an agent, represented by record denoted by  <span class="name">ag</span>, in "manual" mode, an application specific characterization of these relations.
+</p>
+</div>
+
+<div class='issue'> 
+Should we define start/end records as representation of activity start/end events.
+Should time be associated with these events rather than with activities. This will be similar to what
+we do for entities. This is issue <a href="http://www.w3.org/2011/prov/track/issues/207">ISSUE-207</a>.</div>
+
+
+</section>
+
+
+
+
+</section>
+
+<section id="entity-entity-agent-agent-relation">
+<h4>Entity-Entity or Agent-Agent Relation</h4>
+
+<section id="record-responsibility">
+
+<h4>Responsibility Chain</h4>
+
+<p>To promote take-up, PROV-DM offers a mild version of responsibility
+in the form of a relation to represent when an agent acted on another
+agent's behalf.  So in the example of someone running a mail program,
+the program is an agent of that activity and the person is also an
+agent of the activity, but we would also add that the mail software
+agent is running on the person's behalf.  In the other example, the
+student acted on behalf of his supervisor, who acted on behalf of the
+department chair, who acts on behalf of the university, and all those
+agents are responsible in some way for the activity to take place but
+we don't say explicitly who bears responsibility and to what
+degree. </p>
+
+<p>We could also say that an agent can act on behalf of several other
+agents (a group of agents).  This would also make possible to
+indirectly reflect chains of responsibility.  This also indirectly
+reflects control without requiring that control is explicitly
+indicated.  In some contexts there will be a need to represent
+responsibility explicitly, for example to indicate legal
+responsibility, and that could be added as an extension to this core
+model.  Similarly with control, since in particular contexts there
+might be a need to define specific aspects of control that various
+agents exert over a given activity.</p>
+
+<p>Given an activity association<span class="withAsn">, written <span class="name">wasAssociatedWith(a,ag2,attrs)</span></span>,
+a <dfn id="dfn-responsibility">responsibility chain</dfn><span class="withAsn">, written <span class="name">actedOnBehalfOf(id,ag2,ag1,a,attrs)</span> in PROV-ASN,</span> has the following constituents:</p>
+<ul>
+<li><em>id</em>:  an OPTIONAL identifier  <span class="name">id</span> identifying the responsibility chain;</li> 
+<li><em>subordinate</em>: an identifier for the agent associated with an activity, acting on behalf of the responsible
+agent;</li>
+<li><em>responsible</em>: an identifier for the agent,  on behalf of which the subordinate agent acted;</li>
+<li><em>activity</em>: an OPTIONAL identifier of an activity for which the responsibility chain holds;</li>
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs that describe the modalities of this relation.</li>
+</ul>
+
+
+<div class="anexample">
+In the following example, a programmer, a researcher and a funder agents are asserted.  The programmer and researcher are associated with a workflow activity.  The programmer acts on behalf
+of the researcher (delegation) encoding the commands specified by the researcher; the researcher acts on behalf of the funder, who has an contractual agreement with the researcher. The terms
+'delegation' and 'contact' used in this example are domain specific.
+<pre class="codeexample">
+activity(a,[prov:type="workflow"])
+agent(ag1,[prov:type="programmer"])
+agent(ag2,[prov:type="researcher"])
+agent(ag3,[prov:type="funder"])
+wasAssociatedWith(a,ag1,[prov:role="loggedInUser"])
+wasAssociatedWith(a,ag2)
+actedOnBehalfOf(ag1,ag2,a,[prov:type="delegation"])
+actedOnBehalfOf(ag2,ag3,a,[prov:type="contract"])
+</pre>
+</div>
+
+
+</section>
+
+<section id="Derivation-Relation">
+<h4>Derivation Record</h4>
+
+<p>In PROV-DM, a <dfn id="dfn-Derivation">derivation record</dfn> is a representation that some entity is transformed from, created from, or affected by another entity in the world.  </p>
+
+
+<p>Examples of derivation include the transformation of a canvas into a painting, the transportation of a person from London to New York, the transformation of a relational table into a
+linked data set, and the melting of ice into water.</p>
+
+
+<p>According to <a href="#conceptualization">Section Conceptualization</a>, for an entity to be transformed from, created from, or affected by another in some way, there must be some
+underpinning activities performing the necessary actions resulting in such a derivation.  
+However, asserters may not assert or have knowledge of these activities and associated details: they may not assert or know their number, they may not assert or know their identity, they may
+not assert or know the attributes characterizing how the relevant entities are used or generated. To accommodate the varying circumstances of the various asserters, PROV-DM allows more or
+less precise records of derivation to be asserted.  Hence, PROV-DM uses the terms <em>precise</em> and <em>imprecise</em> to characterize the different kinds of derivation record. We note
+that the derivation itself is exact (i.e., deterministic, non-probabilistic), but it is its description, expressed in a derivation record, that may be imprecise. </p>
+
+<p>The  lack of precision may come from two sources:</p>
+<ul>
+<li> the number of activities that underpin a derivation is not asserted or known, or</li>
+<li> any of the other details that are involved in the derivation is not asserted or known; these include activity identities, generation and usage records, and their attributes.</li>
+</ul>
+
+
+<!--
+Furthermore, assuming that an asserter has full knowledge of an activity underpinning a derivation, the same activity can generally be modelled in terms of sub-activities, composed in a such
+a way as to deliver the same behavior. Hence, since activities can be modelled at arbitrary levels of granularity, there is a distinguished case in which a derivation between two entities
+<span class="name">e2</span> and <span class="name">e1</span> corresponds <em>exactly</em> to <em>one</em> activity that used <span class="name">e1</span> and generated <span
+class="name">e2</span>.    This is to be contrasted to the case where one derivation corresponds to n activities, where n can be any number greater than 1.
+Hence, PROV-DM uses the terms <em>one-activity</em> and <em>n-activities</em> to distinguish these two cases.</p>
+-->
+
+
+<p>Hence, we can consider two axis.  An activity number axis that has values  <em>single</em>, <em>multiple</em>,  and <em>unknown</em>, respectively representing the case where one activity
+is known to have occurred, more than one activities are known to have occurred, or an unknown number of activities have occurred. Likewise, we can consider another axis to cover other
+details (identities, generation and usage records, attributes), with values <em>asserted</em> and <em>not asserted</em>. We can then form a matrix of possible derivations. Out of the six
+possibilities, 
+PROV-DM offers three forms of derivation derivation records to cater for five othem, while the remaining one is not meaningful.  The following table summarises names for the three kinds of
+derivation, which we then explain.</p>
+
+<div style="text-align: center;">
+<table border="1" style="margin-left: auto; margin-right: auto;">
+<caption>PROV-DM Derivation Type Summary</caption>
+<tr><td colspan=2 rowspan=2></td><td colspan=2><em>other details</em> axis</td></tr>
+<tr><td>asserted</td><td>not asserted</td></tr> 
+<tr><td rowspan=3><em>activity number</em><br>axis</td><td>single</td><td><a>precise-1 derivation record</a></td><td><a>imprecise-1 derivation record</a></td></tr> 
+<tr><td>multiple</td><td><a>imprecise-n derivation record</a></td><td rowspan=2><a>imprecise-n derivation record</a></td></tr> 
+<tr><td>unknown</td><td>&mdash;</td></tr> 
+</table>
+</div>
+
+<ul>
+<li> The asserter asserts that derivation is due to exactly one activity, and all the details are asserted. We call this a precise-1 derivation record.</li>
+<li> The asserter asserts that derivation is due to exactly one activity, but other details,  whether known or unknown, are not asserted. We call this an imprecise-1 derivation record.</li>
+<li> The following cases are captured by an imprecise-n derivation record.
+<ul>
+<li> The asserter knows that multiple activities are involved or ignores the number of activities involved in the derivation, and  other details are not asserted. </li>
+<li> The asserter knows that multiple activities are involved in the derivation, and all their details are asserted. In this case,  these activities are connected by means of generated and
+used intermediary entities.  Despite all activities and details being known, there is no guarantee that any of these activities plays an active role in the derivation; hence, this case is
+also regarded as imprecise. Instead, precise derivations need to be expressed between these intermediary entities.  </li>
+</ul>
+</ul>
+
+<p> We note that the last theoretical cases cannot occur, since
+  asserting the details of an unknown number of activities is a contradiction.
+</p>
+
+<p>In order to represent the number of activities in a derivation, we introduce a PROV-DM attribute <span class="name">steps</span>, which can take two possible values:   <span
+class="name">single</span> and <span class="name">any</span>.
+When <span class="name">prov:steps="single"</span>, derivation is due to one activity; when <span class="name">prov:steps="any"</span>, the number of activities is multiple or not known.</p>
+
+
+<p>The three kinds of derivation records are successively introduced.  Making use of the attribute <span class="name">steps</span>, we can distinguish the various derivation types.</p>
+
+<p>A <dfn>precise-1 derivation record</dfn>, written <span class="name">wasDerivedFrom(id, e2, e1, a, g2, u1, attrs)</span> in PROV-ASN, contains:</p>
+<ul>
+<li><em>id</em>:  an OPTIONAL identifier  <span class="name">id</span> identifying the derivation record;</li> 
+<li><em>generatedEntity</em>: the identifier <span class="name">e2</span> of  an entity record, which is a representation of the generated entity;</li>
+<li><em>usedEntity</em>: the identifier <span class="name">e1</span> of  an entity record, which is a representation of the used entity;</li>
+<li><em>activity</em>: an identifier <span class="name">a</span> of an activity record, which is a representation of the activity using and generating the above entities;</li>
+<li><em>generation</em>: an identifier  <span class="name">g2</span> of the generation record pertaining to <span class="name">e2</span> and <span class="name">a</span>;</li> 
+<li><em>usage</em>: an identifier  <span class="name">u1</span> of the usage record pertaining to <span class="name">e1</span> and <span class="name">a</span>.</li> 
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs <span class="name">attrs</span> that describe the modalities of this derivation, optionally including the attribute-value
+pair <span class="name">prov:steps="single"</span>.</li>
+</ul>
+<p>It is OPTIONAL to include  the attribute <span class="name">prov:steps</span> in a precise-1 derivation since the record already refers to the one and only one activity underpinning the
+derivation.</p>
+
+
+<p>An <dfn>imprecise-1 derivation record</dfn>, written <span class="name">wasDerivedFrom(id, e2,e1, t, attrs)</span> in PROV-ASN, contains:</p>
+<ul>
+<li><em>id</em>:  an OPTIONAL identifier  <span class="name">id</span> identifying the derivation record;</li> 
+<li><em>generatedEntity</em>: the identifier <span class="name">e2</span> of  an entity record, which is a representation of the generated entity;</li>
+<li><em>usedEntity</em>: the identifier <span class="name">e1</span> of  an entity record, which is a representation of the used entity;</li>
+<li><em>time</em>: an OPTIONAL "generation time" <span class="name">t</span>, the time at which the entity denoted by <span class="name">e2</span> was created;</li>
+<li><em>attributes</em>: a set of attribute-value pairs <span class="name">attrs</span> that describe the modalities of this derivation; it MUST include the attribute-value pair <span class="name">prov:steps="single"</span>.</li>
+</ul>
+<p>An imprecise-1 derivation MUST include the attribute <span class="name">prov:steps</span>,  since it is the only means to distinguish this record from an imprecise-n derivation
+record.</p>
+
+
+<p>An <dfn>imprecise-n derivation record</dfn>, written <span class="name">wasDerivedFrom(id, e2, e1, t, attrs)</span> in PROV-ASN, contains:</p>
+<ul>
+<li><em>id</em>:  an OPTIONAL identifier  <span class="name">id</span> identifying the derivation record;</li> 
+<li><em>generatedEntity</em>: the identifier <span class="name">e2</span> of  an entity record, which is a representation of the generated entity;</li>
+<li><em>usedEntity</em>: the identifier <span class="name">e1</span> of  an entity record, which is a representation of the used entity;</li>
+<li><em>time</em>: an OPTIONAL "generation time" <span class="name">t</span>, the time at which the entity denoted by <span class="name">e2</span> was created;</li>
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs <span class="name">attrs</span> that describe the modalities of this derivation; it optionally includes the attribute-value pair <span class="name">prov:steps="any"</span>.</li>
+</ul>
+<p>It is OPTIONAL to include  the attribute <span class="name">prov:steps</span> in an imprecise-n derivation record. It defaults to <span class="name">prov:steps="any"</span>.</p> 
+
+
+<p>None of the three kinds of derivation is defined to be transitive. Domain-specific specializations of these derivations may be defined in such a way that the transitivity property
+holds.</p>
+
+
+<div class="withAsn">
+<p>In PROV-ASN, a derivation record's text matches the <span class='nonterminal'>derivationRecord</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+<span class="nonterminal">derivationRecord</span>&nbsp;::= 
+<span class="name">wasDerivedFrom</span>
+<span class="name">(</span>
+<span class="optional"> <span class="nonterminal">identifier</span>,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">aIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">gIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">uIdentifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span><br/>
+|
+<span class="name">wasDerivedFrom</span>
+<span class="name">(</span>
+<span class="optional"> <span class="nonterminal">identifier</span>,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="optional"><span class="name">,</span>
+<span class="nonterminal">time</span></span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+<p>
+The first clause of the alternative, where the activity, generation and usage record identifiers are present formalizes a derivation record is precise-1. The second clause of the alternative, with optional time formalizes imprecise records. The distinction between imprecise-1 and imprecise-n is made by the 
+attribute <span class="name">prov:steps</span>.  
+</p>
+</div>
+
+<div class="anexample">
+<p>The following assertions state the existence of derivations.</p>
+<pre class="codeexample">
+wasDerivedFrom(e5,e3,a4,g2,u2)
+wasDerivedFrom(e5,e3,a4,g2,u2,[prov:steps="single"])
+
+wasDerivedFrom(e3,e2,[prov:steps="single"])
+
+wasDerivedFrom(e2,e1,[])
+wasDerivedFrom(e2,e1,[prov:steps="any"])
+
+wasDerivedFrom(e2,e1,2012-01-18T16:00:00, [prov:steps="any"])
+</pre>
+<p>
+The first two are precise-1 derivation records expressing that the activity represented by the activity <span class="name">a4</span>, by
+using the entity denoted by <span class="name">e3</span> according to usage record <span class="name">u2</span>
+ derived the
+entity denoted by <span class="name">e5</span> and generated it according to generation record
+ <span class="name">g2</span>. 
+
+
+The third record is an imprecise-1 derivation, which is similar for <span class="name">e3</span> and <span class="name">e2</span>, but it leaves the activity record and associated attributes implicit. The fourth and fifth records are imprecise-n derivation records between  <span class="name">e2</span> and  <span class="name">e1</span>, but no information is provided as to the number and identity of activities underpinning the derivation. The six derivation records extends the fifth with the derivation time of <span class="name">e2</span>.
+</p>
+</div>
+
+
+<p>An precise-1  derivation record is richer  than an imprecise-1 derivation record, itself, being more informative that an imprecise-n derivation record. Hence, the following implications
+hold.</p>
+<div class='inference' id='derivation-implications'>
+Given two entity records denoted by <span class="name">e1</span> and <span class="name">e2</span>, <span class='conditional'>if</span> the assertion  <span class="name">wasDerivedFrom(e2,
+e1, a, g2, u1, attrs)</span>
+ holds for some generation record identified by <span class="name">g2</span>, and usage record identified by <span class="name">u1</span>, then <span
+class="name">wasDerivedFrom(e2,e1,[prov:steps="single"] &cup; attrs)</span> also holds.<br>
+
+Given two entity records denoted by <span class="name">e1</span> and <span class="name">e2</span>, <span class='conditional'>if</span> the assertion  <span class="name">wasDerivedFrom(e2,
+e1, [prov:steps="single"] &cup; attrs)</span>
+ holds, then <span class="name">wasDerivedFrom(e2,e1,attrs)</span> also holds.<br>
+ </div>
+
+<div class="interpretation-forward">
+For the interpretation of a derivation record, see <a href="#derivation-usage-generation-ordering">derivation-usage-generation-ordering</a> and <a
+href="#derivation-generation-generation-ordering">derivation-generation-generation-ordering</a>
+</div>
+
+<!--
+<p>
+<p>If a derivation record holds for <span class="name">e2</span> and <span class="name">e1</span>, then 
+this means that the entity represented by entity record identified by <span class="name">e1</span> has an influence on the entity represented entity record identified by <span
+class="name">e2</span>,
+  which at the minimum implies temporal ordering, specified as follows.
+First, we consider one-activity derivations.</p>
+
+<div class='interpretation' id='derivation-usage-generation-ordering'>Given an activity record identified by <span class="name">a</span>, entity records identified by <span
+class="name">e1</span> and <span class="name">e2</span>, generation record identified by <span class="name">g2</span>, and usage record identified by <span class="name">u1</span>, <span
+class='conditional'>if</span> the record <span class="name">wasDerivedFrom(e2,e1,a,g2,u1,attrs)</span>
+or <span class="name">wasDerivedFrom(e2,e1,[prov:steps="single"] &cup; attrs)</span> holds, <span class='conditional'>then</span>
+the following temporal constraint holds:
+the <a title="entity usage event">usage</a>
+of entity denoted by <span class="name">e1</span> <a>precedes</a> the <a title="entity generation event">generation</a> of
+the entity denoted by <span class="name">e2</span>.
+</div>
+
+<p>Then, imprecise-n derivations.</p>
+
+<div class='interpretation' id='derivation-generation-generation-ordering'>
+Given two entity records denoted by <span class="name">e1</span> and <span class="name">e2</span>, <span class='conditional'>if</span> the record <span
+class="name">wasDerivedFrom(e2,e1,[prov:steps="n"] &cup; attrs)</span>
+ holds, <span class='conditional'>then</span> the following temporal constraint holds:
+the <a title="entity generation event">generation event</a> of the entity denoted by <span class="name">e1</span> <a>precedes</a> the <a title="entity generation event">generation event</a>
+of
+the entity  denoted by <span class="name">e2</span>.
+  </div>
+
+<p>Note that temporal ordering is between generations of <span class="name">e1</span>
+and <span class="name">e2</span>, as opposed to precise-1 derivation,
+which implies temporal ordering between the usage of <span class="name">e1</span> and
+generation of <span class="name">e2</span>.  Indeed, in the case of
+imprecise-n derivation, nothing is known about the usage of <span class="name">e1</span>,
+since there is no associated activity.</p>
+
+-->
+
+
+<p>The imprecise-1 derivation has the same meaning as the  precise-1
+ derivation, except that an activity  
+ is known to exist, though it does not need to be 
+asserted.  This is formalized by the following inference rule,
+referred to as <em>activity introduction</em>:</p>
+<div class='inference' id="activity-introduction">
+<span class='conditional'>If</span> <span class="name">wasDerivedFrom(e2,e1)</span> holds, <span class='conditional'>then</span> there exist an activity record identified by <span
+class="name">a</span>, a usage record identified by <span class="name">u</span>, and a generation record identified by <span class="name">g</span>
+such that:
+<pre class="codeexample">
+activity(a,aAttrs)
+wasGeneratedBy(g,e2,a,gAttrs)
+used(u,a,e1,uAttrs)
+</pre>
+for sets of attribute-value pairs <span class="name">gAttrs</span>, <span class="name">uAttrs</span>, and <span class="name">aAttrs</span>.
+</div>
+
+
+
+
+
+<p>
+Note that inferring derivation from usage and generation does not hold
+in general. Indeed, when a generation <span class="name">wasGeneratedBy(g, e2, a, attrs2)</span>
+<a>precedes</a> <span class="name">used(u, a, e1, attrs1)</span>, for
+some <span class="name">e1</span>, <span class="name">e2</span>, <span class="name">attrs1</span>, <span class="name">attrs2</span>, and <span class="name">a</span>, one
+cannot infer derivation <span class="name">wasDerivedFrom(e2, e1, a, g, u)</span>
+or <span class="name">wasDerivedFrom(e2,e1)</span> since 
+of <span class="name">e2</span> cannot possibly be derived from
+ <span class="name">e1</span>, given the creation of <span class="name">e2</span> <a>precedes</a> the use
+of <span class="name">e1</span>.
+</p>
+
+
+<p>In PROV-DM, the effective placeholder for an entity generation time is the <a>generation record</a>. The presence of 
+time information in imprecise derivation records is merely a convenience notation for a timeless derivation record and a generation record with this generation time information. </p>
+
+<div class='inference' id="derivation-time-elimination">
+<span class='conditional'>If</span> <span class="name">wasDerivedFrom(e2,e1,t,attrs)</span> holds, <span class='conditional'>then</span> the following records also hold:
+<span class="name">wasDerivedFrom(e2,e1,attrs)</span> and <span class="name">wasGeneratedBy(e2,t)</span>.
+</div>
+
+<p>
+<div class="structural-forward">
+See <a href="#derivation-use">derivation-use</a> for a structural constraint on derivation records.
+</div>
+</p>
+
+
+
+<div class='pending'>Should derivation have a time? Which time? This is   <a href="http://www.w3.org/2011/prov/track/issues/43">ISSUE-43</a>.<em>This is now addressed in this text. Optional time in derivation is generation time. See also    <a href="http://www.w3.org/2011/prov/track/issues/205">ISSUE-205</a>.</em></div>
+
+
+<div class='issue'>Several points were raised about the attribute steps.
+Its name, its default value   <a href="http://www.w3.org/2011/prov/track/issues/180">ISSUE-180</a>.
+ <a href="http://www.w3.org/2011/prov/track/issues/179">ISSUE-179</a>.</div>
+
+<div class='issue'> Emphasize the notion of 'affected by'   <a href="http://www.w3.org/2011/prov/track/issues/133">ISSUE-133</a>.</div>
+
+
+</section>
+
+
+<section id="record-alternate-specialization">
+
+<h4>Alternate  and Specialization Records</h4>
+
+<div class="note">This section is currently under revision and in flux</div>
+
+The purpose of the record types defined in this section is to establish a relationship between two entities, which asserts that they provide a different characterization of the same thing. 
+Consider for example three entities:
+<ul>
+
+  <li><span class="name">e1</span> denoting "Bob, the holder of facebook account ABC",
+  
+  <li><span class="name">e2</span> denoting "Bob, the holder of twitter account XYZ",
+
+  <li><span class="name">e3</span> denoting "Bob, the person".
+</ul>
+
+One may make several assertions to establish that these entities refer to the same the real-world thing Bob, either in different contexts, or at different levels of abstraction. For example:
+
+<ol>
+  <li> Entity denoted by <span class="name">e1</span> provides a <em>more concrete</em> characterization of Bob  than <span class="name">e3</span> does;
+  <li> Entity denoted by <span class="name">e2</span>  provides a <em>more concrete</em> characterization of Bob  than <span class="name">e3</span> does;
+  <li> The entities denoted by <span class="name">e1</span> and  <span class="name">e2</span> provide two different characterizations of the same thing, i.e., Bob.
+</ol>
+
+Two relations are introduced to express these assertions:
+
+<ul>
+
+  <li> e2 is a <em>specialization</em> of e1, written <span class="name">specializationOf(e2,e1)</span> captures the intent of assertion (1) and (2);
+  <li> e2 is an <em>alternative characterization</em> of e1, written <span class="name">alternateOf(e2,e1)</span> captures the intent of assertion (3).
+  
+  </ul>
+
+In order to further convey the intended meaning, the following properties are associated to these two relations.
+
+  <ul>
+    <li><span class="name">specializationOf(e2,e1)</span> is <strong>transitive</strong>:    <span class="name">specializationOf(e3,e2)</span> and  <span
+class="name">specializationOf(e2,e1)</span> implies  <span class="name">specializationOf(e3,e1)</span>.
+
+    <li><span class="name">specializationOf(e2,e1)</span> is <strong>anti-symmetric</strong>:   <span class="name">specializationOf(e2,e1)</span> implies that  <span
+class="name">specializationOf(e1,e2)</span>  does not hold.
+    <li><span class="name">alternateOf(e2,e1)</span> is <strong>symmetric</strong>:   <span class="name">alternateOf(e2,e1)</span> implies  <span class="name">alternateOf(e1,e2)</span>.
+  </ul>
+
+  <div class="note">There are proposals to make alternateOf a transitive property. This is still under discussion and the default is for alternateOf <strong>not</strong> to be transitive, and this is what the current text  reflects.</div>
+
+<p>A <dfn id="dfn-Alternate">alternate record</dfn>, written alternateOf(alt1, alt2, attrs) in PROV-ASN, has the following constituents:</p>
+
+<ul>
+<li><em>first alternate</em>: an identifier <span class="name">alt1</span> of the first of the two entities</li>
+<li><em>second alternate</em>: an identifier <span class="name">alt2</span> of the second of the two entities</li>
+<li><em>attrs</em>: an OPTIONAL set <span class="name">attrs</span> of attribute-value pairs to further describe this record.</li>
+</ul>
+
+
+<p>A <dfn id="dfn-Specialization">specialization record</dfn> written specializationOf(sub, super, attrs) in PROV-ASN, has the following constituents:</p>
+
+<ul>
+<li><em>specialised entity</em>: an identifier <span class="name">sub</span> of the specialised entity</li>
+<li><em>general entity</em>: an identifier <span class="name">super</span> of the entity that is being specialised</li>
+<li><em>attrs</em>: an OPTIONAL set <span class="name">attrs</span> of attribute-value pairs to further describe this record.</li>
+</ul>
+</p>
+
+
+<p>
+An entity record identifier can optionally be accompanied by an account identifier. When this is the case, it becomes possible to use the <span class="name">alternateOf</span> relation to
+link two entity record identifiers that are appear in different accounts. (In particular, the entity identifiers in two different account are allowed to be the same.). When account
+identifiers are not available, then the linking of entity records through <span class="name">alternateOf</span> can only take place within the scope of a single account.
+</p>
+
+
+
+<div class="withAsn">
+<p>In PROV-ASN, an alternate record's text matches the <span class="nonterminal">alternateRecord</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+   <span class="nonterminal">alternateRecord</span>&nbsp;::=
+  <span class="name">alternateOf</span> 
+<span class="name">(</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>  <br/>
+|
+  <span class="name">alternateOf</span> 
+<span class="name">(</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+  <span class="nonterminal">accIdentifier</span>
+  <span class="name">,</span>
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+  <span class="nonterminal">accIdentifier</span>
+<span class="name">,</span>
+  <span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span> 
+</div>
+
+
+<p>In PROV-ASN, a specialization record's text matches the <span class="nonterminal">specializationRecord</span>production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+   <span class="nonterminal">specializationRecord</span>&nbsp;::=
+  <span class="name">specializationOf</span> 
+<span class="name">(</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>  <br/> 
+|
+  <span class="name">specializationOf</span> 
+<span class="name">(</span> 
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+  <span class="nonterminal">accIdentifier</span>
+  <span class="name">,</span>
+<span class="nonterminal">eIdentifier</span> 
+<span class="name">,</span>
+  <span class="nonterminal">accIdentifier</span>
+<span class="name">,</span>
+  <span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>  <br/>
+
+</div>
+</div>
+
+<div class='issue'>A discussion on alternative definition of these relations has not reached a satisfactory conclusion yet. This is <a
+href="http://www.w3.org/2011/prov/track/issues/29">ISSUE-29</a>. Also <a href="http://www.w3.org/2011/prov/track/issues/96">ISSUE-96</a>.</div>
+
+
+</section>
+</section>
+
+
+
+<section id="record-annotation">
+<h4>Annotation</h4>
+
+
+<p>An <dfn id="dfn-annotation">annotation</dfn> establishes a link between something that is identifiable and a note referred to by its identifier.  Multiple notes can
+be associated with a given identified object; symmetrically, multiple objects can be associated with a given note.  Since notes have identifiers,  they can also be
+annotated. The annotation mechanism (with note and annotation) forms a key aspect of the extensibility mechanism of PROV-DM (see <a
+href="#extensibility-section">extensibility section</a>).</p> 
+
+<p>An annotation<span class="withAsn">, written <span class="name">hasAnnotation(r,n,attrs)</span> in PROV-ASN,</span> has the following constituents:</p>
+<ul>
+<li><em>something</em>: the identifier of someting being annnotated;</li>
+<li><em>note</em>: an identifier of a note;</li>
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs to further describe this annotation.</li>
+</ul>
+
+<p>The interpretation of notes is application-specific. See Section <a href="#record-note">Note</a> for a discussion of the difference between note attributes and other records attributes.
+We also note the present tense in this term to indicate that it may not denote something in the past.</p>
+
+<div class="anexample">
+<p>
+The following expressions</p>
+<pre class="codexample">
+entity(e1,[prov:type="document"])
+entity(e2,[prov:type="document"])
+activity(a,t1,t2)
+used(u1,a,e1,[ex:file="stdin"])
+wasGeneratedBy(e2, a, [ex:file="stdout"])
+
+note(n1,[ex:icon="doc.png"])
+hasAnnotation(e1,n1)
+hasAnnotation(e2,n1)
+
+note(n2,[ex:style="dotted"])
+hasAnnotation(u1,n2)
+</pre>
+<p>assert the existence of two  documents (attribute-value pair: <span class="name">prov:type="document"</span>) identified by <span class="name">e1</span> and <span
+class="name">e2</span>, and annotate them with a note indicating that the icon (an application specific way of rendering provenance) is <span class="name">doc.png</span>. It also
+asserts an activity, its usage of the first entity, and its generation of the second entity. The <span class="name">usage</span> is annotated with a style (an application specific way
+of rendering this edge graphically). To be able to express this annotation, the usage was provided with an identifier <span class="name">u1</span>, which was then referred to in <span
+class="name">hasAnnotation(u1,n2)</span>.
+</p>
+</div>
+
+
+</section>
+</section>
+
+
+
+<section  id="sub-record">
+<h3>Further Terms in Records</h3>
+
+This section further terms in PROV-DM records.
+
+
+
+<section id="record-attribute">
+<h4>Attribute</h4>
+
+<p>An <dfn id="dfn-attribute">attribute</dfn> is a <em>qualified name</em>. 
+An <dfn id="dfn-qualified name">qualified name</dfn> is a name subject to namespace interpretation. It consists of namespace, denoted by an optional prefix, and a local name. The namespace
+is denoted by an IRI [[!IRI]].</p>
+
+
+<p>PROV-DM stipulates that a qualified name can be mapped into an IRI
+ by concatenating the IRI associated with the prefix and the local part (see detailed rule in [[!RDF-SPARQL-QUERY]], Section <a
+href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/#QSynIRI">4.1.1</a>).</p>
+
+<p>A qualified name's prefix is OPTIONAL. If a prefix occurs in a
+ qualified name, it refers to a <a>namespace</a> declared in the
+ record container.  In the absence of prefix, the qualified name
+ refers to the default namespace declared in the container.</p>
+
+<p>In PROV-ASN, an attribute's text matches the <span class="nonterminal">attribute</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+<span class="nonterminal">attribute</span>&nbsp;::=  <span class="nonterminal">qualifiedName</span><br/>
+<span class="nonterminal">qualifiedName</span> &nbsp;::= <span class="nonterminal">prefixedName</span> | <span class="nonterminal">unprefixedName</span><br/>
+<span class="nonterminal">prefixedName</span> &nbsp;::= <span class="nonterminal">prefix</span> <span class="name">:</span> <span class="nonterminal">localPart</span><br/>
+<span class="nonterminal">unprefixedName</span> &nbsp;::= <span class="nonterminal">localPart</span><br/>
+<span class="nonterminal">prefix</span> &nbsp;::= <em>a name without colon compatible with the <a href="http://www.w3.org/TR/2009/REC-xml-names-20091208/#NT-NCName">NC_NAME</a> production
+[[!XML-NAMES]]</em><br/>
+<span class="nonterminal">localPart</span> &nbsp;::= <em>a name without colon compatible with the <a href="http://www.w3.org/TR/2009/REC-xml-names-20091208/#NT-NCName">NC_NAME</a> production
+[[!XML-NAMES]]</em>
+</div>
+
+
+<div class="note">Note that XML NC_NAME don't allow local identifiers to start with a number.  Instead, should we use the productions used in SPARQL or TURTLE?</div>
+
+
+<p>
+For each attribute in a record, its namespace also declares the number of occurrences it
+may have in a list of attributes. The
+property <dfn>attribute occurrence validity</dfn> holds for a record
+if the actual number of occurrences of each attribute in this record is compatible with
+this attribute's declaration it its namespace. How to handle records
+that do not satisfy the <a>attribute occurrence validity</a> property
+is beyond the scope of this specification.</p>
+
+
+<p>From this specification's viewpoint, the interpretation of an attribute declared in a namespace other than prov-dm is out of
+scope.</p>
+
+<p>The PROV data model introduces a fixed set of attributes in the <a href="#prov-dm-namespace">PROV-DM namespace</a>:</p>
+<ul>
+<li> The attribute <dfn id="dfn-role"><span class="name">prov:role</span></dfn>  denotes the function of an entity with respect to an activity, in the context of a usage, generation,
+activity association, start, end record. The attribute <span class="name">prov:role</span> is allowed to occur multiple times in such records. The value associated with a <span
+class="name">prov:role</span> attribute MUST be conformant with  <span class="nonterminal">Literal</span>. </li>
+
+<div class="anexample">
+<p>The following start record describes the role of the agent identified by <span class="name">ag</span> in this start relation with activity <span class="name">a</span>. </p>
+<pre class="codeexample">
+   wasStartedBy(a,ag, [prov:role="program-operator"])
+</pre>
+</div>
+ </li>
+
+<li> The attribute <dfn id="dfn-type"><span class="name">prov:type</span></dfn>  provides further typing information for the element or relation asserted in the record. PROV-DM liberally
+defines a type as a category of things having common characteristics. PROV-DM is agnostic about the representation of types, and only states that
+the value associated with a <span class="name">prov:type</span> attribute MUST be conformant with  <span class="nonterminal">Literal</span>. The attribute <span class="name">prov:type</span>
+is allowed to occur multiple times in a record.</li>
+
+<div class="anexample">
+<p>The following record declares an agent of type software agent</p>
+<pre class="codeexample">
+   agent(ag, [prov:type="prov:SoftwareAgent" %% xsd:QName])
+</pre>
+</div>
+
+
+<li> The  attribute <dfn id="dfn-steps"><span class="name">prov:steps</span></dfn>  defines the level of precision associated with a derivation record. The value associated with a <span
+class="name">prov:steps</span> attribute  MUST be   <span class="name">"single"</span> or <span class="name">"any"</span>. The attribute <span class="name">prov:step</span> occurs at most
+once in a derivation record. A derivation record without attribute <span class="name">prov:step</span> is considered to be equivalent to the same record extended with an extra attribute 
+<span class="name">prov:step</span> and associated value <span class="name">"any"</span>. </li>
+
+<div class="anexample">
+<p>The following record declares an imprecise-1 derivation, which is known to involve one activity, though its identity, usage details of <span class="name">ex:e1</span>, and generation
+details of <span class="name">ex:e2</span> are not asserted.</p>
+<pre class="codeexample">
+   wasDerivedFrom(ex:e2, ex:e1, [prov:steps="single"])
+</pre>
+</div>
+
+<li> The attribute <dfn id="dfn-label"><span class="name">prov:label</span></dfn> provides a human-readable representation of a PROV-DM element or relation.</li>
+
+<div class='issue'>
+ This is <a href="http://www.w3.org/2011/prov/track/issues/219">ISSUE-219</a>. </div>
+
+
+</ul>
+</section>
+
+
+
+<section id="record-identifier">
+<h4>Identifier</h4>
+
+
+<p>An <dfn id="dfn-identifier">identifier</dfn> is a <em>qualified name</em>. A qualified name can be mapped into an IRI
+ by concatenating the IRI associated with the prefix and the local part (see detailed rule in [[!RDF-SPARQL-QUERY]], Section <a
+href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/#QSynIRI">4.1.1</a>).</p>
+
+<div class='grammar'>
+<span class="nonterminal">identifier</span>&nbsp;::=  <span class="nonterminal">qualifiedName</span><br/>
+<span class="nonterminal">eIdentifier</span>&nbsp;::=  <span class="nonterminal">identifier</span>  <em>(intended to denote an entity record)</em><br/>
+<span class="nonterminal">aIdentifier</span>&nbsp;::=  <span class="nonterminal">identifier</span>  <em>(intended to denote an activity record)</em><br/>
+<span class="nonterminal">agIdentifier</span>&nbsp;::=  <span class="nonterminal">identifier</span>  <em>(intended to denote an agent record)</em><br/>
+<span class="nonterminal">gIdentifier</span>::=  <span class="nonterminal">identifier</span> <em>(intended to denote a generation record)</em><br/>
+<span class="nonterminal">uIdentifier</span>::=  <span class="nonterminal">identifier</span> <em>(intended to denote a usage record)</em><br/>
+<span class="nonterminal">nIdentifier</span>::=  <span class="nonterminal">identifier</span> <em>(intended to denote a note record)</em><br/>
+<span class="nonterminal">accIdentifier</span>::=  <span class="nonterminal">identifier</span> <em>(intended to denote an account record)</em>
+</div>
+
+
+</section>
+
+<section id="record-literal">
+<h4>Literal</h4>
+
+<p>
+A PROV-DM Literal represents a data value such as a particular string
+or number.  A PROV-DM Literal represents a value whose interpretation is outside the scope of PROV-DM.
+</p>
+
+<p>In PROV-ASN, a Literal's text matches the <span class="nonterminal">Literal</span> production of the grammar defined in this specification document.</p>
+
+<div class='grammar'>
+<span class="nonterminal">Literal</span> &nbsp;::= <span class="nonterminal">typedLiteral</span> | <span class="nonterminal">convenienceNotation</span> <br/>
+<span class="nonterminal">typedLiteral</span> ::= <span class="nonterminal">quotedString</span> <span class="name">%%</span> <span class="nonterminal">datatype</span><br/>
+<span class="nonterminal">datatype</span> ::= <span class="nonterminal">qualifiedName</span><br/>
+<span class="nonterminal">convenienceNotation</span> &nbsp;::= <span class="nonterminal">stringLiteral</span> | <span class="nonterminal">intLiteral</span><br/>
+<span class="nonterminal">stringLiteral</span> ::= <span class="nonterminal">quotedString</span><br/>
+<span class="nonterminal">quotedString</span> ::= <em>a finite sequence of characters in which &quot; (U+22) and \ (U+5C) occur only in pairs of the form \&quot; (U+5C, U+22) and \\ (U+5C,
+U+5C), enclosed in a pair of &quot; (U+22) characters</em><br/>
+<span class="nonterminal">intLiteral</span> ::= <em>a finite-length sequence of decimal digits (#x30-#x39) with an optional leading negative sign (-)</em>
+</div>
+
+<p>The non terminals <span class="nonterminal">stringLiteral</span> and
+<span class="nonterminal">intLiteral</span>
+are syntactic sugar for quoted strings with datatype <span class="name">xsd:string</span> and <span class="name">xsd:int</span>, respectively.
+</p>
+
+<p> In particular, a PROV-DM Literal may be an IRI-typed string (with datatype <span class="name">xsd:anyURI</span>);  such IRI has no specific interpretation in the context of PROV-DM.</p>
+
+
+<div class="anexample">
+<p>
+The following examples respectively are the string "abc" (expressed using the convenience notation), the string "abc", the integer number 1, the integer number 1 (expressed using the
+convenience notation) and the IRI "http://example.org/foo".
+<pre class="codeexample">
+  "abc"
+  "abc" %% xsd:string
+  "1" %% xsd:int
+  1
+  "http://example.org/foo" %% xsd:anyURI
+</pre>
+The following example shows a literal of type <span class="name">xsd:QName</span> (see
+<a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#QName">QName</a> [[!XMLSCHEMA-2]]).
+The prefix <span class="name">ex</span>  MUST be bound to a <a>namespace</a> declared in the
+ record container.
+<pre class="codeexample">
+  "ex:value" %% xsd:QName
+</pre>
+</div>
+
+
+
+<div class='note'>Should we define structural equivalence of literals as in OWL2? [[!OWL2-SYNTAX]]
+(see section <a href="http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Literals">Literals</a>).
+</div>
+
+</section>
+
+
+
+
+<section id="record-Time">
+<h4>Time</h4>
+
+<p><dfn id="dfn-time">Time instants</dfn> are defined according to xsd:dateTime [[!XMLSCHEMA-2]].</p> 
+
+
+
+<p>It is OPTIONAL to assert time in usage, generation, and activity records.</p>
+
+
+
+
+</section>
+
+<section id="record-NamespaceDeclaration">
+<h3>Namespace Declaration</h3>
+
+<p>A PROV-DM <dfn id="dfn-namespace">namespace</dfn> is identified by an IRI reference [[!IRI]]. In PROV-DM, attributes, identifiers, and literals of with datatype <span
+class="name">xsd:QName</span> can be placed in a namespace using the mechanisms described in this specification. </p>
+
+
+<p>A <dfn id="dfn-namespaceDeclaration">namespace declaration</dfn> consists of a binding between a prefix and a namespace. Every qualified name with this prefix in the scope of this
+declaration refers to this namespace. 
+A <dfn id="dfn-defaultNamespaceDeclaration">default namespace declaration</dfn> consists of a namespace. Every unprefixed qualified name in the scope of this default namespace declaration
+refers to this namespace.</p>
+
+<div class='grammar'>
+<span class="nonterminal">namespaceDeclarations</span>&nbsp;::=  
+ |  <span class="group"><span class="nonterminal">defaultNamespaceDeclaration</span> | <span class="nonterminal">namespaceDeclaration</span></span> <span class="star"> <span
+class="nonterminal">namespaceDeclaration</span></span><br>
+<span class="nonterminal">namespaceDeclaration</span>&nbsp;::=  
+<span class="name">prefix</span> <span class="nonterminal">prefix</span> <span class="nonterminal">IRI</span><br/>
+<span class="nonterminal">defaultNamespaceDeclaration</span>&nbsp;::=  
+ <span class="name">default</span> <span class="nonterminal">IRI</span> <br/>
+</div>
+</section>
+
+
+
+
+
+
+<section id="record-Location">
+<h3>Location</h3>
+
+<p><dfn id="dfn-Location">Location</dfn> is an identifiable geographic place (ISO 19112). As such, there are numerous ways in which location can be expressed, such as by a coordinate,
+address, landmark, row, column, and so forth. This  document does not specify how to concretely express  locations, but instead provide a mechanism to introduce locations in assertions. </p> 
+
+
+<p>
+Location is an OPTIONAL attribute of entity records and activity records.  The value associated with a  attribute <span class="name">location</span> MUST be a <span
+class="nonterminal">Literal</span>, expected to denote a location.
+</p>
+
+
+
+
+</section>
+ 
+</section>
+
+</section>
+
+<section  id="common-relations">
+<h2>PROV-DM Common Relations</h2>
+</section>
+
+<section  id="bundle">
+<h3>Bundle ????</h3>
+
+<p>In this section, two constructs are introduced to group
+PROV-DM records.  The first
+one, <a>account record</a> is itself a
+record, whereas the second
+one <a>record container</a> is not.
+</p>
+
+
+<section id="record-Account">
+<h3>Account Record</h3>
+
+
+
+<p>It is common for multiple provenance records to co-exist. For instance, when emailing
+ a file, there could be a provenance record kept by the mail client,
+ and another by the mail server. Such provenance records may provide different explanations about something happening in the world, because they are created by different parties or observed
+by different witnesses. A given party could also create multiple provenance records about an execution, to capture different levels of details, targeted at different end-users: the
+programmer of an experiment may be interested in a detailed log of execution, while the scientists may focus more on the scientific-level description.   Given that multiple provenance
+records can co-exist, it is important to know who asserted these records. </p>
+
+
+<p><em>All the rest removed</em></p>
+
+</section>
+
+<section id="RecordContainer">
+<h4>Record Container</h4>
+
+<p>A <dfn id="dfn-RecordContainer">record container</dfn> is a house-keeping construct of PROV-DM, also capable of bundling PROV-DM <a title="record">records</a>. A record container is the
+root of a provenance record and can be exploited to package up PROV-DM <a title="record">records</a> in response to a request for the provenance of something ([[PROV-AQ]]). Given that a
+record container is the root of a provenance record, it is not defined as a PROV-DM record (production <span class="nonterminal">record</span>), since otherwise it could appear arbitrarily
+nested inside accounts.</p> 
+
+
+<p>A record container, written <span class="name">container decls  recs endContainer</span> in PROV-ASN, contains:
+<ul>
+<li><em>namespaceDeclarations</em>: a set <span class="name">decls</span> of namespace declarations, declaring namespaces and associated prefixes, which can be used in <a
+title="attribute">attributes</a> and  <a title="identifier">identifiers</a> occurring inside  <span class="name">recs</span>;</li>
+<li><em>records</em>:  a non-empty set of records <span class="name">recs</span>.</li>
+</ul>
+<p>All the records in <span class="name">recs</span> are implictly wrapped in a default account, scoping all the record identifiers they declare directly, and constituting a toplevel
+account, in the hierarchy of accounts.  Consequently, every provenance record is always expressed in the context of an account, either explicitly in an asserted account, or implicitly in a
+container's default account.</p>
+
+<p>In PROV-ASN, a record container's text matches the <span class="nonterminal">recordContainer</span> production of the grammar defined in this specification document.</p>
+
+
+<div class='grammar'>
+<span class="nonterminal">recordContainer</span> ::=  
+<span class="name">container</span> 
+<span class="nonterminal">namespaceDeclarations</span> 
+<span class="plus"> <span class="nonterminal">record</span> </span>
+<span class="name">endContainer</span> 
+</div>
+
+
+<div class="anexample">
+<p>
+The following container contains records related to the provenance of entity 
+<span class="name">e2</span>.
+</p>
+<pre class="codeexample">
+container
+  prefix ex: http://example.org/,
+  entity(e2, [ prov:type="File", ex:path="/shared/crime.txt", ex:creator="Alice", 
+             ex:content="There was a lot of crime in London last month."])
+  activity(a1, 2011-11-16T16:05:00,,[prov:type="edit"])
+  wasGeneratedBy(e2, a1, [ex:fct="save"])     
+  wasAssociatedWith(a1, ag2, [prov:role="author"])
+  agent(ag2, [ prov:type="prov:Person" %% xsd:QName, ex:name="Bob" ])
+endContainer
+</pre>
+<p>This container could for instance be returned by querying a provenance store for the provenance of entity <span class="name">e2</span> [[PROV-AQ]].  All these assertions are implicitly
+wrapped in a default account.  In the absence of an explicit account, such provenance records remain unattributed.
+</p>
+</div>
+
+<div class="anexample">
+<p>
+The following container </p>
+<pre class="codeexample">
+container
+  prefix ex: http://example.org/,
+
+  account(ex:acc1,http://example.org/asserter1,...)
+  account(ex:acc2,http://example.org/asserter1,...)
+endContainer
+</pre>
+<p> illustrates how two accounts with identifiers <span class="name">ex:acc1</span> and <span class="name">ex:acc2</span> can be returned in a PROV-ASN serialization of the provenance of
+something.
+</p>
+</div>
+
+
+<div class='issue'>
+Clarify what records are. This is <a href="http://www.w3.org/2011/prov/track/issues/208">ISSUE-208</a>. </div>
+</section>
+
+
+
+</section>
+
+
+ </body></html>
--- a/ontology/ProvenanceFormalModel.html	Tue Feb 07 10:37:35 2012 +0000
+++ b/ontology/ProvenanceFormalModel.html	Tue Feb 07 10:37:59 2012 +0000
@@ -200,6 +200,10 @@
 		<div class='note'> In addition, RDF is strictly monotonic and "...it cannot express closed-world assumptions, local default preferences, and several other commonly used non-monotonic constructs."[[RDF-MT]], but the PROV-DM seems to introduce the notion of non-monotonic assertions through "Account" construct [[PROV-DM]]. For example, Account description in PROV-DM states that it "It provides a scoping mechanism for expression identifiers and for some contraints (such as generation-unicity and derivation-use)."
 		</div>
      </section> 
+     <p>The PROV-DM "records" are best interpretted as portions of an RDF graph. A single PROV-DM record results in a small set of triples.
+     </p>
+     <p>The PROV-DM's consideratation "entity identifier id contained in an entity record is expected to be unique among all the identifiers contained in the current account's records" can be ignored.
+     </p>
 	 <section> 
 	  	<h3>OWL2 Syntax Used in this Document</h3>
 	    <p>This document uses the RDF/XML syntax, which is the mandatory syntax supported by all OWL2 syntax [[!OWL2-PRIMER]] to represent the PROV ontology. Provenance assertions using PROV-O can use any of the RDF syntax defined in the RDF specification [[!RDF-PRIMER]].
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/examples/pc1-full.xml	Tue Feb 07 10:37:59 2012 +0000
@@ -0,0 +1,756 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<prov:container xmlns:prov="http://www.w3.org/ns/prov-xml#" xmlns:prim="http://openprovenance.org/primitives#" xmlns:pc1="http://www.ipaw.info/pc1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    <prov:records>
+        <prov:activity prov:id="pc1:00000p1">
+            <prov:label>align_warp 1</prov:label>
+            <prov:type xsi:type="xsd:QName">prim:align_warp</prov:type>
+            <prov:type xsi:type="xsd:QName">prim:align_warp</prov:type>
+            <prov:type xsi:type="xsd:int">10</prov:type>
+            <prov:type xsi:type="xsd:int">-10</prov:type>
+            <prov:type xsi:type="xsd:double">-10.55</prov:type>
+            <prov:type xsi:type="xsd:string">abc</prov:type>
+            <prov:type xsi:type="xsd:boolean">true</prov:type>
+            <prov:type xsi:type="xsd:anyURI">http://www.example.com/hi</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p2">
+            <prov:label>align_warp 2</prov:label>
+            <prov:type xsi:type="xsd:QName">prim:align_warp</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p3">
+            <prov:label>align_warp 3</prov:label>
+            <prov:type xsi:type="xsd:QName">prim:align_warp</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p4">
+            <prov:label>align_warp 4</prov:label>
+            <prov:type xsi:type="xsd:QName">prim:align_warp</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p5">
+            <prov:label>Reslice 1</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#reslice</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p6">
+            <prov:label>Reslice 2</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#reslice</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p7">
+            <prov:label>Reslice 3</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#reslice</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p8">
+            <prov:label>Reslice 4</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#reslice</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p9">
+            <prov:label>Softmean</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#softmean</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p10">
+            <prov:label>Slicer 1</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#slicer</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p11">
+            <prov:label>Slicer 2</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#slicer</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p12">
+            <prov:label>Slicer 3</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#slicer</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p13">
+            <prov:label>Convert 1</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#convert</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p14">
+            <prov:label>Convert 2</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#convert</prov:type>
+        </prov:activity>
+        <prov:activity prov:id="pc1:p15">
+            <prov:label>Convert 3</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#convert</prov:type>
+        </prov:activity>
+        <prov:entity prov:id="pc1:a1">
+            <prov:label>Reference Image</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/reference.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a2">
+            <prov:label>Reference Header</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/reference.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a5">
+            <prov:label>Anatomy I2</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/anatomy2.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a6">
+            <prov:label>Anatomy H2</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/anatomy2.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a3">
+            <prov:label>Anatomy I1</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/anatomy1.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a4">
+            <prov:label>Anatomy H1</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/anatomy1.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a7">
+            <prov:label>Anatomy I3</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/anatomy3.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a8">
+            <prov:label>Anatomy H3</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/anatomy3.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a9">
+            <prov:label>Anatomy I4</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/anatomy4.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a10">
+            <prov:label>Anatomy H4</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/anatomy4.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a11">
+            <prov:label>Warp Params1</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/warp1.warp</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a12">
+            <prov:label>Warp Params2</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/warp2.warp</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a13">
+            <prov:label>Warp Params3</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/warp3.warp</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a14">
+            <prov:label>Warp Params4</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/warp4.warp</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a15">
+            <prov:label>Resliced I1</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/resliced1.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a16">
+            <prov:label>Resliced H1</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/resliced1.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a17">
+            <prov:label>Resliced I2</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/resliced2.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a18">
+            <prov:label>Resliced H2</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/resliced2.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a19">
+            <prov:label>Resliced I3</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/resliced3.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a20">
+            <prov:label>Resliced H3</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/resliced3.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a21">
+            <prov:label>Resliced I4</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/resliced4.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a22">
+            <prov:label>Resliced H4</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/resliced4.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a23">
+            <prov:label>Atlas Image</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/atlas.img</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a24">
+            <prov:label>Atlas Header</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/atlas.hdr</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a25">
+            <prov:label>Atlas X Slice</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/atlas-x.pgm</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a25p">
+            <prov:label>slicer param 1</prov:label>
+            <prov:type xsi:type="xsd:string">http://openprovenance.org/primitives#String</prov:type>
+            <pc1:value>-x .5</pc1:value>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a26">
+            <prov:label>Atlas Y Slice</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/atlas-y.pgm</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a26p">
+            <prov:label>slicer param 2</prov:label>
+            <prov:type xsi:type="xsd:string">http://openprovenance.org/primitives#String</prov:type>
+            <pc1:value>-y .5</pc1:value>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a27">
+            <prov:label>Atlas Z Slice</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/atlas-z.pgm</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a27p">
+            <prov:label>slicer param 3</prov:label>
+            <prov:type xsi:type="xsd:string">http://openprovenance.org/primitives#String</prov:type>
+            <pc1:value>-z .5</pc1:value>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a28">
+            <prov:label>Atlas X Graphic</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/atlas-x.gif</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a29">
+            <prov:label>Atlas Y Graphic</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/atlas-y.gif</pc1:url>
+        </prov:entity>
+        <prov:entity prov:id="pc1:a30">
+            <prov:label>Atlas Z Graphic</prov:label>
+            <prov:type xsi:type="xsd:anyURI">http://openprovenance.org/primitives#File</prov:type>
+            <pc1:url>http://www.ipaw.info/challenge/atlas-z.gif</pc1:url>
+        </prov:entity>
+        <prov:agent prov:id="pc1:ag1">
+            <prov:label>John Doe</prov:label>
+        </prov:agent>
+        <prov:note prov:id="pc1:n1">
+            <pc1:color>red</pc1:color>
+        </prov:note>
+        <prov:dependencies>
+            <prov:used>
+                <prov:activity prov:ref="pc1:00000p1"/>
+                <prov:entity prov:ref="pc1:a3"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:00000p1"/>
+                <prov:entity prov:ref="pc1:a4"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:used>
+            <prov:used prov:id="pc1:u3">
+                <prov:activity prov:ref="pc1:00000p1"/>
+                <prov:entity prov:ref="pc1:a1"/>
+                <prov:role xsi:type="xsd:string">imgRef</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:00000p1"/>
+                <prov:entity prov:ref="pc1:a2"/>
+                <prov:role xsi:type="xsd:string">hdrRef</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p2"/>
+                <prov:entity prov:ref="pc1:a5"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p2"/>
+                <prov:entity prov:ref="pc1:a6"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p2"/>
+                <prov:entity prov:ref="pc1:a1"/>
+                <prov:role xsi:type="xsd:string">imgRef</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p2"/>
+                <prov:entity prov:ref="pc1:a2"/>
+                <prov:role xsi:type="xsd:string">hdrRef</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p3"/>
+                <prov:entity prov:ref="pc1:a7"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p3"/>
+                <prov:entity prov:ref="pc1:a8"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p3"/>
+                <prov:entity prov:ref="pc1:a1"/>
+                <prov:role xsi:type="xsd:string">imgRef</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p3"/>
+                <prov:entity prov:ref="pc1:a2"/>
+                <prov:role xsi:type="xsd:string">hdrRef</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p4"/>
+                <prov:entity prov:ref="pc1:a9"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p4"/>
+                <prov:entity prov:ref="pc1:a10"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p4"/>
+                <prov:entity prov:ref="pc1:a1"/>
+                <prov:role xsi:type="xsd:string">imgRef</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p4"/>
+                <prov:entity prov:ref="pc1:a2"/>
+                <prov:role xsi:type="xsd:string">hdrRef</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p5"/>
+                <prov:entity prov:ref="pc1:a11"/>
+                <prov:role xsi:type="xsd:string">in</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p6"/>
+                <prov:entity prov:ref="pc1:a12"/>
+                <prov:role xsi:type="xsd:string">in</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p7"/>
+                <prov:entity prov:ref="pc1:a13"/>
+                <prov:role xsi:type="xsd:string">in</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p8"/>
+                <prov:entity prov:ref="pc1:a14"/>
+                <prov:role xsi:type="xsd:string">in</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:entity prov:ref="pc1:a15"/>
+                <prov:role xsi:type="xsd:string">i1</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:entity prov:ref="pc1:a16"/>
+                <prov:role xsi:type="xsd:string">h1</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:entity prov:ref="pc1:a17"/>
+                <prov:role xsi:type="xsd:string">i2</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:entity prov:ref="pc1:a18"/>
+                <prov:role xsi:type="xsd:string">h2</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:entity prov:ref="pc1:a19"/>
+                <prov:role xsi:type="xsd:string">i3</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:entity prov:ref="pc1:a20"/>
+                <prov:role xsi:type="xsd:string">h3</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:entity prov:ref="pc1:a21"/>
+                <prov:role xsi:type="xsd:string">i4</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:entity prov:ref="pc1:a22"/>
+                <prov:role xsi:type="xsd:string">h4</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p10"/>
+                <prov:entity prov:ref="pc1:a23"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p10"/>
+                <prov:entity prov:ref="pc1:a24"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p11"/>
+                <prov:entity prov:ref="pc1:a23"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p11"/>
+                <prov:entity prov:ref="pc1:a24"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p12"/>
+                <prov:entity prov:ref="pc1:a23"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p12"/>
+                <prov:entity prov:ref="pc1:a24"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p10"/>
+                <prov:entity prov:ref="pc1:a25p"/>
+                <prov:role xsi:type="xsd:string">param</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p11"/>
+                <prov:entity prov:ref="pc1:a26p"/>
+                <prov:role xsi:type="xsd:string">param</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p12"/>
+                <prov:entity prov:ref="pc1:a27p"/>
+                <prov:role xsi:type="xsd:string">param</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p13"/>
+                <prov:entity prov:ref="pc1:a25"/>
+                <prov:role xsi:type="xsd:string">in</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p14"/>
+                <prov:entity prov:ref="pc1:a26"/>
+                <prov:role xsi:type="xsd:string">in</prov:role>
+            </prov:used>
+            <prov:used>
+                <prov:activity prov:ref="pc1:p15"/>
+                <prov:entity prov:ref="pc1:a27"/>
+                <prov:role xsi:type="xsd:string">in</prov:role>
+            </prov:used>
+            <prov:wasGeneratedBy prov:id="pc1:wgb1">
+                <prov:entity prov:ref="pc1:a11"/>
+                <prov:activity prov:ref="pc1:00000p1"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a12"/>
+                <prov:activity prov:ref="pc1:p2"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a13"/>
+                <prov:activity prov:ref="pc1:p3"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a14"/>
+                <prov:activity prov:ref="pc1:p4"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a15"/>
+                <prov:activity prov:ref="pc1:p5"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a16"/>
+                <prov:activity prov:ref="pc1:p5"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a17"/>
+                <prov:activity prov:ref="pc1:p6"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a18"/>
+                <prov:activity prov:ref="pc1:p6"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a19"/>
+                <prov:activity prov:ref="pc1:p7"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a20"/>
+                <prov:activity prov:ref="pc1:p7"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a21"/>
+                <prov:activity prov:ref="pc1:p8"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a22"/>
+                <prov:activity prov:ref="pc1:p8"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a23"/>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:role xsi:type="xsd:string">img</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a24"/>
+                <prov:activity prov:ref="pc1:p9"/>
+                <prov:role xsi:type="xsd:string">hdr</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a25"/>
+                <prov:activity prov:ref="pc1:p10"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a26"/>
+                <prov:activity prov:ref="pc1:p11"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:entity prov:ref="pc1:a27"/>
+                <prov:activity prov:ref="pc1:p12"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:time>2012-01-31T22:15:54.067Z</prov:time>
+                <prov:entity prov:ref="pc1:a28"/>
+                <prov:activity prov:ref="pc1:p13"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:time>2012-01-31T22:15:54.097Z</prov:time>
+                <prov:entity prov:ref="pc1:a29"/>
+                <prov:activity prov:ref="pc1:p14"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasGeneratedBy>
+                <prov:time>2012-01-31T22:15:54.097Z</prov:time>
+                <prov:entity prov:ref="pc1:a30"/>
+                <prov:activity prov:ref="pc1:p15"/>
+                <prov:role xsi:type="xsd:string">out</prov:role>
+            </prov:wasGeneratedBy>
+            <prov:wasDerivedFrom>
+                <prov:generation prov:ref="pc1:wgb1"/>
+                <prov:usage prov:ref="pc1:u3"/>
+                <prov:activity prov:ref="pc1:00000p1"/>
+                <prov:effect prov:ref="pc1:a11"/>
+                <prov:cause prov:ref="pc1:a1"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a11"/>
+                <prov:cause prov:ref="pc1:a2"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a11"/>
+                <prov:cause prov:ref="pc1:a3"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a11"/>
+                <prov:cause prov:ref="pc1:a4"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a12"/>
+                <prov:cause prov:ref="pc1:a1"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a12"/>
+                <prov:cause prov:ref="pc1:a2"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a12"/>
+                <prov:cause prov:ref="pc1:a5"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a12"/>
+                <prov:cause prov:ref="pc1:a6"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a13"/>
+                <prov:cause prov:ref="pc1:a1"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a13"/>
+                <prov:cause prov:ref="pc1:a2"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a13"/>
+                <prov:cause prov:ref="pc1:a7"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a13"/>
+                <prov:cause prov:ref="pc1:a8"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a14"/>
+                <prov:cause prov:ref="pc1:a1"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a14"/>
+                <prov:cause prov:ref="pc1:a2"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a14"/>
+                <prov:cause prov:ref="pc1:a9"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a14"/>
+                <prov:cause prov:ref="pc1:a10"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a15"/>
+                <prov:cause prov:ref="pc1:a11"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a16"/>
+                <prov:cause prov:ref="pc1:a11"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a17"/>
+                <prov:cause prov:ref="pc1:a12"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a18"/>
+                <prov:cause prov:ref="pc1:a12"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a19"/>
+                <prov:cause prov:ref="pc1:a13"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a20"/>
+                <prov:cause prov:ref="pc1:a13"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a21"/>
+                <prov:cause prov:ref="pc1:a14"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a22"/>
+                <prov:cause prov:ref="pc1:a14"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a23"/>
+                <prov:cause prov:ref="pc1:a15"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a23"/>
+                <prov:cause prov:ref="pc1:a16"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a23"/>
+                <prov:cause prov:ref="pc1:a17"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a23"/>
+                <prov:cause prov:ref="pc1:a18"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a23"/>
+                <prov:cause prov:ref="pc1:a19"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a23"/>
+                <prov:cause prov:ref="pc1:a20"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a23"/>
+                <prov:cause prov:ref="pc1:a21"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a23"/>
+                <prov:cause prov:ref="pc1:a22"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a24"/>
+                <prov:cause prov:ref="pc1:a15"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a24"/>
+                <prov:cause prov:ref="pc1:a16"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a24"/>
+                <prov:cause prov:ref="pc1:a17"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a24"/>
+                <prov:cause prov:ref="pc1:a18"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a24"/>
+                <prov:cause prov:ref="pc1:a19"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a24"/>
+                <prov:cause prov:ref="pc1:a20"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a24"/>
+                <prov:cause prov:ref="pc1:a21"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a24"/>
+                <prov:cause prov:ref="pc1:a22"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a25"/>
+                <prov:cause prov:ref="pc1:a23"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a25"/>
+                <prov:cause prov:ref="pc1:a24"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a26"/>
+                <prov:cause prov:ref="pc1:a23"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a26"/>
+                <prov:cause prov:ref="pc1:a24"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a27"/>
+                <prov:cause prov:ref="pc1:a23"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a27"/>
+                <prov:cause prov:ref="pc1:a24"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a28"/>
+                <prov:cause prov:ref="pc1:a25"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a29"/>
+                <prov:cause prov:ref="pc1:a26"/>
+            </prov:wasDerivedFrom>
+            <prov:wasDerivedFrom>
+                <prov:effect prov:ref="pc1:a30"/>
+                <prov:cause prov:ref="pc1:a27"/>
+            </prov:wasDerivedFrom>
+            <prov:wasControlledBy>
+                <prov:effect prov:ref="pc1:00000p1"/>
+                <prov:cause prov:ref="pc1:ag1"/>
+                <prov:role xsi:type="xsd:string">user</prov:role>
+            </prov:wasControlledBy>
+            <prov:hasAnnotation>
+                <prov:thing prov:ref="pc1:a1"/>
+                <prov:note prov:ref="pc1:n1"/>
+            </prov:hasAnnotation>
+        </prov:dependencies>
+    </prov:records>
+</prov:container>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/schema/prov-20120110.xsd	Tue Feb 07 10:37:59 2012 +0000
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- 
+
+
+     In this schema, all ids are encoded as QNames. 
+
+     The lexical restrictions over QNames are too strict, and we may want to use CURIEs instead.
+     Downside is that tools won't recognize them.
+
+     Note that if AccountRecord are to disappear from PROV-DM, they
+     should probably also disappear from here.
+
+  -->
+
+
+<xs:schema targetNamespace="http://www.w3.org/ns/prov-xml#"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns:prov="http://www.w3.org/ns/prov-xml#"
+           elementFormDefault="qualified"
+           attributeFormDefault="unqualified">
+
+
+
+
+  <xs:element name="activity" type="prov:Activity"/>
+
+  <xs:complexType name="Activity">
+    <xs:sequence>
+      <xs:element name="startTime"    type="xs:dateTime" minOccurs="0"/> 
+      <xs:element name="endTime"      type="xs:dateTime" minOccurs="0"/> 
+      <xs:element ref="prov:label" minOccurs="0"/> 
+      <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:element name="entity" type="prov:Entity"/>
+  <xs:complexType name="Entity">
+    <xs:sequence>
+      <xs:element ref="prov:label" minOccurs="0"/> 
+      <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:element name="agent" type="prov:Agent"/>
+  <xs:complexType name="Agent">
+    <xs:sequence>
+      <xs:element ref="prov:label" minOccurs="0"/> 
+      <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:element name="note" type="prov:Note"/>
+  <xs:complexType name="Note">
+    <xs:sequence>
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+  
+  
+  <xs:complexType name="Used">
+    <xs:sequence>
+      <xs:element name="time"     type="xs:dateTime" minOccurs="0"/>
+      <xs:element name="activity" type="prov:ActivityRef"/>
+      <xs:element name="entity"   type="prov:EntityRef"/>
+      <xs:element ref="prov:type"  minOccurs="0" maxOccurs="unbounded"/>
+
+      <xs:element ref="prov:role"  minOccurs="0" maxOccurs="unbounded"/> 
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+  
+  <xs:complexType name="WasGeneratedBy">
+    <xs:sequence>
+      <xs:element name="time"     type="xs:dateTime" minOccurs="0"/>
+      <xs:element name="entity"   type="prov:EntityRef"/>
+      <xs:element name="activity" type="prov:ActivityRef" minOccurs="0"/>
+      <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:role"  minOccurs="0" maxOccurs="unbounded"/> 
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+
+
+  <xs:complexType name="WasAssociatedWith">
+    <xs:sequence>
+      <xs:element name="activity" type="prov:ActivityRef"/>
+      <xs:element name="agent"    type="prov:AgentRef"/>
+      <xs:element name="plan"     type="prov:EntityRef" minOccurs="0"/>
+      <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:role"  minOccurs="0" maxOccurs="unbounded"/> 
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+
+  <xs:complexType name="ActedOnBehalfOf">
+    <xs:sequence>
+      <xs:element name="subordinate" type="prov:AgentRef"/>
+      <xs:element name="responsible" type="prov:AgentRef"/>
+      <xs:element name="activity"    type="prov:ActivityRef"/>
+      <xs:element ref="prov:type"   minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:role"   minOccurs="0" maxOccurs="unbounded"/> 
+      <xs:any namespace="##other"   minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+
+
+  <xs:complexType name="WasControlledBy">
+    <xs:sequence>
+      <xs:element name="startTime"   type="xs:dateTime" minOccurs="0"/>
+      <xs:element name="endTime"     type="xs:dateTime" minOccurs="0"/>
+      <xs:element name="effect"      type="prov:ActivityRef"/>
+      <xs:element name="cause"       type="prov:AgentRef"/>
+      <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:role"  minOccurs="0" maxOccurs="unbounded"/> 
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+  
+  <xs:complexType name="WasDerivedFrom">
+    <xs:sequence>
+      <xs:element name="generation" type="prov:DependencyRef" minOccurs="0"/>
+      <xs:element name="usage"      type="prov:DependencyRef" minOccurs="0"/>
+      <xs:element name="activity"   type="prov:ActivityRef" minOccurs="0"/>
+      <xs:element name="time"       type="xs:dateTime" minOccurs="0"/> <!-- for imprecise only -->
+      <xs:element name="effect"  type="prov:EntityRef"/>
+      <xs:element name="cause"   type="prov:EntityRef"/>
+      <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/> 
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+  
+  <xs:complexType name="WasInformedBy">
+    <xs:sequence>
+      <xs:element name="time"    type="xs:dateTime" minOccurs="0"/>
+      <xs:element name="effect"  type="prov:ActivityRef"/>
+      <xs:element name="cause"   type="prov:ActivityRef"/>
+      <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:role" minOccurs="0" maxOccurs="unbounded"/> 
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+
+  <xs:complexType name="AlternateOf">
+    <xs:sequence>
+      <xs:element name="entity2"   type="prov:EntityRef"/>
+      <xs:element name="entity1"   type="prov:EntityRef"/>
+      <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:role"  minOccurs="0" maxOccurs="unbounded"/> 
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+
+  <xs:complexType name="SpecializationOf">
+    <xs:sequence>
+      <xs:element name="entity2"   type="prov:EntityRef"/>
+      <xs:element name="entity1"   type="prov:EntityRef"/>
+      <xs:element ref="prov:type" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:role"  minOccurs="0" maxOccurs="unbounded"/> 
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+  
+  <xs:complexType name="HasAnnotation">
+    <xs:sequence>
+      <xs:element name="thing"   type="prov:NoteRef" minOccurs="1"/> <!-- note, just a ref to anything, really -->
+      <xs:element name="note"    type="prov:NoteRef" minOccurs="1"/>
+      <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+
+   <!--
+       Typed literals are encoded by means
+       of xsi:type that represent the prov:datatype.
+
+       -->
+  
+  <xs:element name="label" type="xs:string"/>
+  <xs:element name="role"  type="xs:anySimpleType"/>
+  <xs:element name="type"  type="xs:anySimpleType"/>
+
+  <xs:attribute name="id"  type="xs:QName"/>
+  <xs:attribute name="ref" type="xs:QName"/>
+
+  <xs:complexType name="ActivityRef">
+    <xs:attribute ref="prov:ref"/>
+  </xs:complexType>
+  <xs:complexType name="EntityRef">
+    <xs:attribute ref="prov:ref"/>
+  </xs:complexType>
+  <xs:complexType name="AgentRef">
+    <xs:attribute ref="prov:ref"/>
+  </xs:complexType>
+  
+  <xs:complexType name="DependencyRef">
+    <xs:attribute ref="prov:ref"/>
+  </xs:complexType>
+  
+  <xs:complexType name="NoteRef">
+    <xs:attribute ref="prov:ref"/>
+  </xs:complexType>
+  
+  <xs:complexType name="Dependencies">
+    <xs:sequence>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+	<xs:element name="used"               type="prov:Used"/>
+	<xs:element name="wasGeneratedBy"     type="prov:WasGeneratedBy"/>
+	<xs:element name="wasInformedBy"      type="prov:WasInformedBy"/>
+	<xs:element name="wasDerivedFrom"     type="prov:WasDerivedFrom"/>
+	<xs:element name="wasControlledBy"    type="prov:WasControlledBy"/>
+	<xs:element name="wasAssociatedWith"  type="prov:WasAssociatedWith"/>
+	<xs:element name="actedOnBehalfOf"    type="prov:ActedOnBehalfOf"/>
+	<xs:element name="alternateOf"        type="prov:AlternateOf"/>
+	<xs:element name="specializationOf"   type="prov:SpecializationOf"/>
+	<xs:element name="hasAnnotation"      type="prov:HasAnnotation"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:complexType>
+  
+  
+  <!-- BUNDLES -->
+  
+  <xs:element name="account" type="prov:Account"/>
+  <xs:complexType name="Account">
+    <xs:sequence>
+      <xs:element name="asserter" type="prov:AgentRef"  minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:records"  minOccurs="1" maxOccurs="1"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+  
+  <xs:element name="container" type="prov:Container">
+    <xs:annotation>
+      <xs:documentation>A set of assertions about the provenance of things</xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  
+  <!-- a wrapper element for all records, used in Container or Account -->
+  <xs:element name="records" type="prov:Records"/>
+  <xs:complexType name="Records">
+    <xs:sequence>
+      <xs:element ref="prov:account"  minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:activity" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:entity"   minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:agent"    minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element ref="prov:note"     minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="dependencies" type="prov:Dependencies" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+  </xs:complexType>
+  
+  <xs:complexType name="Container">
+    <xs:sequence>
+      <xs:element ref="prov:records"  minOccurs="1" maxOccurs="1"/>
+    </xs:sequence>
+    <xs:attribute ref="prov:id"/>
+    <!-- tentative, this could allow us to annotate containers ... -->
+  </xs:complexType>
+  
+  
+  
+  
+  
+  
+  
+  
+  
+</xs:schema>