--- a/model/releases/ED-prov-constraints-20120720/prov-constraints.html Mon Jul 23 14:20:12 2012 +0100
+++ b/model/releases/ED-prov-constraints-20120720/prov-constraints.html Mon Jul 23 14:20:51 2012 +0100
@@ -485,506 +485,8 @@
pre.sh_sourceCode .sh_paren { color: red; }
pre.sh_sourceCode .sh_attribute { color: #006400; }
-</style><style type="text/css">s
-/* --- 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-example {
- 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; */
-/* } */
-
-.syntax {
- padding: 1em;
- margin: 1em 0em 0em;
- border: 1px solid #f00;
- background: #fff;
-}
-
-.syntax[id]::before {
- content: "Syntax: " attr(id);
- width: 380px; /* How can we compute the length of "Constraint: " attr(id) */
-}
-
-
-.syntax::before {
- content: "Syntax";
- 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-example {
- 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;
-}
-
-.definition {
- padding: 1em;
- margin: 1em 0em 0em;
- border: 1px solid #777;
- background: #fff;
-}
-
-.definition-example {
- padding: 1em;
- margin: 1em 0em 0em;
- border: 1px solid #777;
- background: #fff;
-}
-
-/* .definition[id]::before { */
-/* content: "Definition: " attr(id); */
-/* width: 380px; */
-/* } */
-
-
-/* .definition::before { */
-/* content: "Definition"; */
-/* display: block; */
-/* width: 150px; */
-/* margin: -1.5em 0 0.5em 0; */
-/* font-weight: bold; */
-/* border: 1px solid #000; */
-/* 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;
-}
-
-.glossary-ref {
- font-style: italic;
-}
-
-.dfn {
- font-weight: bold;
-}
-
-
-.attribute {
- font-style: italic;
-}
-
-
-.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;
- font-size: 95%;
-}
-.nonterminal {
- font-weight: bold;
- font-family: sans-serif;
- font-size: 95%;
-}
-
-.name {
- font-family: monospace;
-}
-
-.math {
- font-family: roman;
- font-style:italic;
-}
-
-
-.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[count]::before {
- content: "Example " attr(count) ;
- font-family: sans-serif;
- font-size: 1.6ex;
- font-weight: bold;
-}
-
-.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;
-}
-
-.conceptexample:before {
- content: "Example:";
- font-family: sans-serif;
- font-size: 1.6ex;
- font-weight: bold;
-}
-.conceptexample {
- 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;
-}
-
-.pnExpression {
- font-weight: normal;
- font-size:120%;
- font-family: monospace;
-}
-
-
-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="choice"]:before {
- font-weight: normal;
- font-size:130%;
- font-family: monospace;
- content: "(";
-}
-
-div[class="grammar"] span[class="choice"]: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;
-}
-
-.component1-color {
- background-color: rgba(255,42,42,0.2);
-}
-
-.component2-color {
- background-color: rgba(0,68,170,0.2);
-}
-
-.component3-color {
- background-color: rgba(0,170,0,0.2);
-}
-.component4-color {
- background-color: rgba(204,255,0,0.2);
-}
-
-.component5-color {
- background-color: rgba(11,40,40,0.2);
-}
-
-.component6-color {
- background-color: rgba(244,105,14,0.2);
-}
-
-.interpretation-forward::before {
- content: "Interpretation: ";
- font-weight: bold;
-}
-
-.structural-forward::before {
- content: "Structural constraint: ";
- font-weight: bold;
-}
-
-
-code {
- color: black;
-}
-
-.ruleTitle {
- font-family: sans-serif;
- font-size: 1.6ex;
- font-weight: bold;
-}
-
-
-
-
-.remark {
- padding: 1em;
- margin: 1em 0em 0em;
- border: 1px dashed #000;
- background: #F0F0F0;
-}
-
-.remark::before {
- content: "Remark";
- display: block;
- width: 150px;
- margin: -1.5em 0 0.5em 0;
- font-weight: bold;
- border: 1px solid #000;
- background: #fff;
- padding: 3px 1em;
-}
-</style><link href="http://www.w3.org/StyleSheets/TR/W3C-ED" rel="stylesheet" type="text/css" charset="utf-8"></head>
- <body style="display: inherit; "><div class="head"><p><a href="http://www.w3.org/"><img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C"></a></p><h1 class="title" id="title">Constraints of the Provenance Data Model</h1><h2 id="subtitle">towards second working draft</h2><h2 id="w3c-editor-s-draft-20-july-2012"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft 20 July 2012</h2><dl><dt>This version:</dt><dd><a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html">http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html</a></dd><dt>Latest published version:</dt><dd><a href="http://www.w3.org/TR/prov-constraints/">http://www.w3.org/TR/prov-constraints/</a></dd><dt>Latest editor's draft:</dt><dd><a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html">http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html</a></dd><dt>Previous version:</dt><dd><a href="http://www.w3.org/TR/2012/WD-prov-constraints-20120503/">http://www.w3.org/TR/2012/WD-prov-constraints-20120503/</a></dd><dt>Editors:</dt><dd><a href="http://homepages.inf.ed.ac.uk/jcheney">James Cheney</a>, University of Edinburgh</dd>
+</style><link href="./extra.css" rel="stylesheet" type="text/css" charset="utf-8"><link href="http://www.w3.org/StyleSheets/TR/W3C-ED" rel="stylesheet" type="text/css" charset="utf-8"></head>
+ <body style="display: inherit; "><div class="head"><p><a href="http://www.w3.org/"><img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C"></a></p><h1 class="title" id="title">Constraints of the Provenance Data Model</h1><h2 id="subtitle">NOT READY for internal review</h2><h2 id="w3c-editor-s-draft-23-july-2012"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft 23 July 2012</h2><dl><dt>This version:</dt><dd><a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html">http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html</a></dd><dt>Latest published version:</dt><dd><a href="http://www.w3.org/TR/prov-constraints/">http://www.w3.org/TR/prov-constraints/</a></dd><dt>Latest editor's draft:</dt><dd><a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html">http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-constraints.html</a></dd><dt>Previous version:</dt><dd><a href="http://www.w3.org/TR/2012/WD-prov-constraints-20120503/">http://www.w3.org/TR/2012/WD-prov-constraints-20120503/</a></dd><dt>Editors:</dt><dd><a href="http://homepages.inf.ed.ac.uk/jcheney">James Cheney</a>, University of Edinburgh</dd>
<dd><a href="http://www.cs.ncl.ac.uk/people/Paolo.Missier">Paolo Missier</a>, Newcastle University</dd>
<dd><a href="http://www.ecs.soton.ac.uk/~lavm/">Luc Moreau</a>, University of Southampton</dd>
<dt>Author:</dt><dd><a href="http://users.ugent.be/~tdenies/">Tom De Nies</a>, IBBT - Ghent University</dd>
@@ -1010,20 +512,11 @@
<p>This is the second public release of the PROV-CONSTRAINTS document.
This is a Last Call Working Draft. The design is not expected to change significantly, going forward, and now is the key time for external review.</p>
-<p>This specification identifies several <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">features at
-risk</a>:
-</p><ul><li>two related to the at-risk Mention feature of [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]:
+<p>This specification identifies <a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">features at
+risk</a> related to the at-risk Mention feature of [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]:
<a class="rule-text" href="#mention-specialization_text"><span>Inference 24 (mention-specialization)</span></a> and
-<a class="rule-text" href="#mention-unique_text"><span>Constraint 47 (mention-unique)</span></a></li>
-<li>one consisting of an inference about Communication <a class="rule-text" href="#generation-use-communication-inference_text"><span>Inference 6 (generation-use-communication-inference)</span></a>
-that may complicate implementations.
-</li>
-<li>one consisting of an inference about Derivation <a class="rule-text" href="#derivation-use_text"><span>Inference 12 (derivation-use)</span></a> that appears
-redundant.
-</li>
-<li>two consisting of inferences about entities <a class="rule-text" href="#entity-generation-invalidation-inference_text"><span>Inference 7 (entity-generation-invalidation-inference)</span></a> and activities <a class="rule-text" href="#activity-start-end-inference_text"><span>Inference 8 (activity-start-end-inference)</span></a> that may, together with certain
-other inference rules, lead to nontermination.</li></ul>
-<p>These might be removed from PROV-CONSTRAINTS.</p>
+<a class="rule-text" href="#mention-unique_text"><span>Constraint 33 (mention-unique)</span></a>.
+These might be removed from PROV-CONSTRAINTS.</p>
<h4 id="prov-family-of-specifications">PROV Family of Specifications</h4>
This document is part of the PROV family of specifications, a set of specifications defining various aspects that are necessary to achieve the vision of inter-operable
@@ -1046,7 +539,7 @@
</ul>
<p>This document was published by the <a href="http://www.w3.org/2011/prov/">Provenance Working Group</a> as an Editor's Draft. If you wish to make comments regarding this document, please send them to <a href="mailto:public-prov-comments@w3.org">public-prov-comments@w3.org</a> (<a href="mailto:public-prov-comments-request@w3.org?subject=subscribe">subscribe</a>, <a href="http://lists.w3.org/Archives/Public/public-prov-comments/">archives</a>). All feedback is welcome.</p><p>Publication as an Editor's Draft does not imply endorsement by the <acronym title="World Wide Web Consortium">W3C</acronym> Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</p><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <acronym title="World Wide Web Consortium">W3C</acronym> Patent Policy</a>. <acronym title="World Wide Web Consortium">W3C</acronym> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46974/status" rel="disclosure">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the <acronym title="World Wide Web Consortium">W3C</acronym> Patent Policy</a>.</p></div><div id="toc" class="section"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction<br>
-</a><ul class="toc"><li class="tocline"><a href="#conventions" class="tocxref"><span class="secno">1.1 </span>Conventions</a></li><li class="tocline"><a href="#purpose" class="tocxref"><span class="secno">1.2 </span>Purpose of this document</a></li><li class="tocline"><a href="#structure-of-this-document" class="tocxref"><span class="secno">1.3 </span>Structure of this document</a></li><li class="tocline"><a href="#audience" class="tocxref"><span class="secno">1.4 </span> Audience </a></li></ul></li><li class="tocline"><a href="#rationale" class="tocxref"><span class="secno">2. </span>Rationale</a><ul class="toc"><li class="tocline"><a href="#entities--activities-and-agents" class="tocxref"><span class="secno">2.1 </span>Entities, Activities and Agents</a></li><li class="tocline"><a href="#events" class="tocxref"><span class="secno">2.2 </span>Events</a></li><li class="tocline"><a href="#summary-of-constraints-and-inferences" class="tocxref"><span class="secno">2.3 </span>Summary of constraints and inferences</a></li></ul></li><li class="tocline"><a href="#compliance" class="tocxref"><span class="secno">3. </span>Compliance with this document</a></li><li class="tocline"><a href="#inferences" class="tocxref"><span class="secno">4. </span>Inferences and Definitions</a><ul class="toc"><li class="tocline"><a href="#optional-identifiers-and-attributes" class="tocxref"><span class="secno">4.1 </span>Optional Identifiers and Attributes</a></li><li class="tocline"><a href="#entities-and-activities" class="tocxref"><span class="secno">4.2 </span>Entities and Activities</a></li><li class="tocline"><a href="#derivations" class="tocxref"><span class="secno">4.3 </span>Derivations</a></li><li class="tocline"><a href="#agents" class="tocxref"><span class="secno">4.4 </span>Agents</a></li><li class="tocline"><a href="#alternate-and-specialized-entities" class="tocxref"><span class="secno">4.5 </span>Alternate and Specialized Entities</a></li><li class="tocline"><a href="#type-rules" class="tocxref"><span class="secno">4.6 </span>Type inference rules</a></li></ul></li><li class="tocline"><a href="#constraints" class="tocxref"><span class="secno">5. </span>Constraints</a><ul class="toc"><li class="tocline"><a href="#uniqueness-constraints" class="tocxref"><span class="secno">5.1 </span>Uniqueness Constraints</a></li><li class="tocline"><a href="#event-ordering-constraints" class="tocxref"><span class="secno">5.2 </span>Event Ordering Constraints</a><ul class="toc"><li class="tocline"><a href="#activity-constraints" class="tocxref"><span class="secno">5.2.1 </span>Activity constraints</a></li><li class="tocline"><a href="#entity-constraints" class="tocxref"><span class="secno">5.2.2 </span> Entity constraints</a></li><li class="tocline"><a href="#agent-constraints" class="tocxref"><span class="secno">5.2.3 </span> Agent constraints</a></li></ul></li><li class="tocline"><a href="#impossibility-constraints" class="tocxref"><span class="secno">5.3 </span>Impossibility constraints</a></li></ul></li><li class="tocline"><a href="#normalization-validity-equivalence" class="tocxref"><span class="secno">6. </span>Normalization, Validity, and Equivalence</a><ul class="toc"><li class="tocline"><a href="#bundle-constraints" class="tocxref"><span class="secno">6.1 </span>Bundles</a></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="#glossary" class="tocxref"><span class="secno">B. </span>Glossary</a></li><li class="tocline"><a href="#termination" class="tocxref"><span class="secno">C. </span>Termination of normalization</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">D. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">D.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">D.2 </span>Informative references</a></li></ul></li></ul></div>
+</a><ul class="toc"><li class="tocline"><a href="#conventions" class="tocxref"><span class="secno">1.1 </span>Conventions</a></li><li class="tocline"><a href="#purpose" class="tocxref"><span class="secno">1.2 </span>Purpose of this document</a></li><li class="tocline"><a href="#structure-of-this-document" class="tocxref"><span class="secno">1.3 </span>Structure of this document</a></li><li class="tocline"><a href="#audience" class="tocxref"><span class="secno">1.4 </span> Audience </a></li></ul></li><li class="tocline"><a href="#rationale" class="tocxref"><span class="secno">2. </span>Rationale</a><ul class="toc"><li class="tocline"><a href="#entities--activities-and-agents" class="tocxref"><span class="secno">2.1 </span>Entities, Activities and Agents</a></li><li class="tocline"><a href="#events" class="tocxref"><span class="secno">2.2 </span>Events</a></li><li class="tocline"><a href="#summary-of-constraints-and-inferences" class="tocxref"><span class="secno">2.3 </span>Summary of constraints and inferences</a></li></ul></li><li class="tocline"><a href="#compliance" class="tocxref"><span class="secno">3. </span>Compliance with this document</a></li><li class="tocline"><a href="#inferences" class="tocxref"><span class="secno">4. </span>Inferences and Definitions</a><ul class="toc"><li class="tocline"><a href="#optional-identifiers-and-attributes" class="tocxref"><span class="secno">4.1 </span>Optional Identifiers and Attributes</a></li><li class="tocline"><a href="#entities-and-activities" class="tocxref"><span class="secno">4.2 </span>Entities and Activities</a></li><li class="tocline"><a href="#derivations" class="tocxref"><span class="secno">4.3 </span>Derivations</a></li><li class="tocline"><a href="#agents" class="tocxref"><span class="secno">4.4 </span>Agents</a></li><li class="tocline"><a href="#alternate-and-specialized-entities" class="tocxref"><span class="secno">4.5 </span>Alternate and Specialized Entities</a></li></ul></li><li class="tocline"><a href="#constraints" class="tocxref"><span class="secno">5. </span>Constraints</a><ul class="toc"><li class="tocline"><a href="#uniqueness-constraints" class="tocxref"><span class="secno">5.1 </span>Uniqueness Constraints</a></li><li class="tocline"><a href="#event-ordering-constraints" class="tocxref"><span class="secno">5.2 </span>Event Ordering Constraints</a><ul class="toc"><li class="tocline"><a href="#activity-constraints" class="tocxref"><span class="secno">5.2.1 </span>Activity constraints</a></li><li class="tocline"><a href="#entity-constraints" class="tocxref"><span class="secno">5.2.2 </span> Entity constraints</a></li><li class="tocline"><a href="#agent-constraints" class="tocxref"><span class="secno">5.2.3 </span> Agent constraints</a></li></ul></li><li class="tocline"><a href="#impossibility-constraints" class="tocxref"><span class="secno">5.3 </span>Impossibility constraints</a></li><li class="tocline"><a href="#type-constraints" class="tocxref"><span class="secno">5.4 </span>Type Constraints</a></li></ul></li><li class="tocline"><a href="#normalization-validity-equivalence" class="tocxref"><span class="secno">6. </span>Normalization, Validity, and Equivalence</a><ul class="toc"><li class="tocline"><a href="#bundle-constraints" class="tocxref"><span class="secno">6.1 </span>Bundles</a></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="#glossary" class="tocxref"><span class="secno">B. </span>Glossary</a></li><li class="tocline"><a href="#termination" class="tocxref"><span class="secno">C. </span>Termination of normalization</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">D. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">D.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">D.2 </span>Informative references</a></li></ul></li></ul></div>
@@ -1150,7 +643,7 @@
statements in valid PROV instances.
</p>
-<p><a href="#equivalence">Section 6</a> defines the notions
+<p><a href="#normalization-validity-equivalence">Section 6</a> defines the notions
of <a>validity</a>, <a>equivalence</a> and <a>normalization</a>.
</p>
@@ -1326,56 +819,258 @@
constraints of this document.
</p>
-<div class="note">Table: work in progress; do when rest is
- stable. Also, standardize constraint names.</div>
+<div class="note">Table: work in progress; these entries might change when the document is updated.</div>
<div id="prov-constraints-fig" style="text-align: left;">
-<table class="thinborder" style="margin-left: auto; margin-right: auto;">
+<table class="thinborder" style="margin-left: auto; margin-right: auto; border-color: #0;">
<caption id="prov-constraints">Table 5: Summary of definitions, constraints, and inferences for PROV Types and Relations</caption>
<tbody><tr><td><a><b>Type or Relation Name</b></a></td><td><b>Definitions, Constraints, Inferences</b></td><td><b>Component</b></td></tr>
<tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
-<tr class="component1-color"><td class="essential"><a href="#dfn-entity" class="internalDFN">Entity</a></td><td><a class="rule-text" href="#unique-entity_text"><span></span></a><br><a class="rule-text" href="#unique-generation-time_text"><span></span></a><br><a class="rule-text" href="#unique-invalidation-time_text"><span></span></a></td><td rowspan="8"><a href="#component1">Component 1: Entities/Activities</a></td></tr>
-<tr class="component1-color"><td class="essential"><a>Activity</a></td><td><a class="rule-text" href="#unique-activity_text"><span></span></a><br><a class="rule-text" href="#unique-startTime_text"><span>Constraint 45 (unique-startTime)</span></a><br><a class="rule-text" href="#unique-endTime_text"><span>Constraint 46 (unique-endTime)</span></a><br><a class="rule-text" href="#usage-within-activity_text"><span>Constraint 49 (usage-within-activity)</span></a><br><a class="rule-text" href="#generation-within-activity_text"><span>Constraint 50 (generation-within-activity)</span></a></td></tr>
-<tr class="component1-color"><td class="essential"><a>Generation</a></td><td><a class="rule-text" href="#unique-generation_text"><span>Constraint 41 (unique-generation)</span></a><br><a class="rule-text" href="#unique-generation-time_text"><span></span></a><br><a class="rule-text" href="#generation-within-activity_text"><span>Constraint 50 (generation-within-activity)</span></a> </td></tr>
-<tr class="component1-color"><td class="essential"><a>Usage</a></td><td><a class="rule-text" href="#usage-within-activity_text"><span>Constraint 49 (usage-within-activity)</span></a> </td></tr>
-<tr class="component1-color"><td class="essential"><a>Communication</a></td><td><a class="rule-text" href="#wasInformedBy-definition_text"><span></span></a> </td></tr>
-<tr class="component1-color"><td><a>Start</a></td><td><a class="rule-text" href="#wasStartedBy-inference_text"><span>Inference 9 (wasStartedBy-inference)</span><br></a><a class="rule-text" href="#unique-startTime_text"><span>Constraint 45 (unique-startTime)</span></a><br> <a class="rule-text" href="#start-precedes-end_text"><span>Constraint 48 (start-precedes-end)</span></a></td></tr>
-<tr class="component1-color"><td><a>End</a></td><td><a class="rule-text" href="#wasEndedBy-inference_text"><span>Inference 10 (wasEndedBy-inference)</span></a><br><a class="rule-text" href="#unique-endTime_text"><span>Constraint 46 (unique-endTime)</span></a> <br> <a class="rule-text" href="#start-precedes-end_text"><span>Constraint 48 (start-precedes-end)</span></a></td></tr>
-<tr class="component1-color"><td><a>Invalidation</a></td><td><a class="rule-text" href="#unique-invalidation-time_text"><span></span></a></td> </tr>
-<tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
-
-
-<tr class="component2-color"><td class="essential"><a>Derivation</a></td><td><a class="rule-text" href="#derivation-use_text"><span>Inference 12 (derivation-use)</span></a></td><td rowspan="5"><a href="#component2">Component 2: Derivations</a></td></tr>
-<tr class="component2-color"><td class="provType"><a>Revision</a></td><td></td></tr>
-<tr class="component2-color"><td class="provType"><a>Quotation</a></td><td></td></tr>
-<tr class="component2-color"><td class="provType"><a>Original Source</a></td><td></td></tr>
-<tr class="component2-color"><td><a>Influence</a></td><td><a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a></td></tr>
+<tr class="component1-color">
+ <td class="essential"><a href="#dfn-entity" class="internalDFN">Entity</a></td>
+ <td><a class="rule-text" href="#entity-generation-invalidation-inference_text"><span>Inference 7 (entity-generation-invalidation-inference)</span></a><br>
+ <a class="rule-text" href="#specialization-attributes_text"><span>Inference 23 (specialization-attributes)</span></a><br>
+ <a class="rule-text" href="#key-object_text"><span>Constraint 25 (key-object)</span></a><br>
+ <a class="rule-text" href="#impossible-object-property-overlap_text"><span>Constraint 53 (impossible-object-property-overlap)</span></a><br>
+ <a class="rule-text" href="#entity-activity-disjoint_text"><span>Constraint 55 (entity-activity-disjoint)</span></a><br>
+ </td>
+ <td rowspan="8"><a href="http://www.w3.org/TR/prov-dm/#component1">Component 1: Entities/Activities</a></td>
+</tr>
+<tr class="component1-color">
+ <td class="essential"><a>Activity</a></td>
+ <td><a class="rule-text" href="#activity-start-end-inference_text"><span>Inference 8 (activity-start-end-inference)</span></a><br>
+ <a class="rule-text" href="#key-object_text"><span>Constraint 25 (key-object)</span></a><br>
+ <a class="rule-text" href="#unique-startTime_text"><span>Constraint 31 (unique-startTime)</span></a><br>
+ <a class="rule-text" href="#unique-endTime_text"><span>Constraint 32 (unique-endTime)</span></a><br>
+ <a class="rule-text" href="#impossible-object-property-overlap_text"><span>Constraint 53 (impossible-object-property-overlap)</span></a><br>
+ <a class="rule-text" href="#entity-activity-disjoint_text"><span>Constraint 55 (entity-activity-disjoint)</span></a><br>
+ </td>
+</tr>
+<tr class="component1-color">
+ <td class="essential"><a>Generation</a></td>
+ <td><a class="rule-text" href="#generation-use-communication-inference_text"><span>Inference 6 (generation-use-communication-inference)</span></a><br>
+ <a class="rule-text" href="#derivation-use_text"><span>Inference 12 (derivation-use)</span></a><br>
+ <a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#unique-generation_text"><span>Constraint 27 (unique-generation)</span></a><br>
+ <a class="rule-text" href="#generation-within-activity_text"><span>Constraint 36 (generation-within-activity)</span></a><br>
+ <a class="rule-text" href="#generation-precedes-invalidation_text"><span>Constraint 38 (generation-precedes-invalidation)</span></a><br>
+ <a class="rule-text" href="#generation-precedes-usage_text"><span>Constraint 39 (generation-precedes-usage)</span></a><br>
+ <a class="rule-text" href="#derivation-usage-generation-ordering_text"><span>Constraint 41 (derivation-usage-generation-ordering)</span></a><br>
+ <a class="rule-text" href="#derivation-generation-generation-ordering_text"><span>Constraint 42 (derivation-generation-generation-ordering)</span></a><br>
+ <a class="rule-text" href="#wasStartedBy-ordering_text"><span>Constraint 43 (wasStartedBy-ordering)</span></a><br>
+ <a class="rule-text" href="#wasEndedBy-ordering_text"><span>Constraint 44 (wasEndedBy-ordering)</span></a><br>
+ <a class="rule-text" href="#specialization-generation_text"><span>Constraint 45 (specialization-generation)</span></a><br>
+ <a class="rule-text" href="#wasAssociatedWith-ordering_text"><span>Constraint 47 (wasAssociatedWith-ordering)</span></a><br>
+ <a class="rule-text" href="#wasAttributedTo-ordering_text"><span>Constraint 48 (wasAttributedTo-ordering)</span></a><br>
+ <a class="rule-text" href="#actedOnBehalfOf-ordering_text"><span>Constraint 49 (actedOnBehalfOf-ordering)</span></a><br>
+ <a class="rule-text" href="#impossible-property-overlap_text"><span>Constraint 52 (impossible-property-overlap)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr class="component1-color">
+ <td class="essential"><a>Usage</a></td>
+ <td><a class="rule-text" href="#generation-use-communication-inference_text"><span>Inference 6 (generation-use-communication-inference)</span></a><br>
+ <a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#usage-within-activity_text"><span>Constraint 35 (usage-within-activity)</span></a><br>
+ <a class="rule-text" href="#generation-precedes-usage_text"><span>Constraint 39 (generation-precedes-usage)</span></a><br>
+ <a class="rule-text" href="#usage-precedes-invalidation_text"><span>Constraint 40 (usage-precedes-invalidation)</span></a><br>
+ <a class="rule-text" href="#derivation-usage-generation-ordering_text"><span>Constraint 41 (derivation-usage-generation-ordering)</span></a><br>
+ <a class="rule-text" href="#impossible-property-overlap_text"><span>Constraint 52 (impossible-property-overlap)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr class="component1-color">
+ <td class="essential"><a>Communication</a></td>
+ <td><a class="rule-text" href="#communication-generation-use-inference_text"><span>Inference 5 (communication-generation-use-inference)</span></a><br>
+ <a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#wasInformedBy-ordering_text"><span>Constraint 37 (wasInformedBy-ordering)</span></a><br>
+ <a class="rule-text" href="#impossible-property-overlap_text"><span>Constraint 52 (impossible-property-overlap)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr class="component1-color">
+ <td class="essential"><a>Start</a></td>
+ <td><a class="rule-text" href="#wasStartedBy-inference_text"><span>Inference 9 (wasStartedBy-inference)</span></a><br>
+ <a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#unique-wasStartedBy_text"><span>Constraint 29 (unique-wasStartedBy)</span></a><br>
+ <a class="rule-text" href="#unique-startTime_text"><span>Constraint 31 (unique-startTime)</span></a><br>
+ <a class="rule-text" href="#start-precedes-end_text"><span>Constraint 34 (start-precedes-end)</span></a><br>
+ <a class="rule-text" href="#usage-within-activity_text"><span>Constraint 35 (usage-within-activity)</span></a><br>
+ <a class="rule-text" href="#generation-within-activity_text"><span>Constraint 36 (generation-within-activity)</span></a><br>
+ <a class="rule-text" href="#wasInformedBy-ordering_text"><span>Constraint 37 (wasInformedBy-ordering)</span></a><br>
+ <a class="rule-text" href="#wasStartedBy-ordering_text"><span>Constraint 43 (wasStartedBy-ordering)</span></a><br>
+ <a class="rule-text" href="#wasAssociatedWith-ordering_text"><span>Constraint 47 (wasAssociatedWith-ordering)</span></a><br>
+ <a class="rule-text" href="#impossible-property-overlap_text"><span>Constraint 52 (impossible-property-overlap)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr class="component1-color">
+ <td class="essential"><a>End</a></td>
+ <td><a class="rule-text" href="#wasEndedBy-inference_text"><span>Inference 10 (wasEndedBy-inference)</span></a><br>
+ <a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#unique-wasEndedBy_text"><span>Constraint 30 (unique-wasEndedBy)</span></a><br>
+ <a class="rule-text" href="#unique-endTime_text"><span>Constraint 32 (unique-endTime)</span></a><br>
+ <a class="rule-text" href="#start-precedes-end_text"><span>Constraint 34 (start-precedes-end)</span></a><br>
+ <a class="rule-text" href="#usage-within-activity_text"><span>Constraint 35 (usage-within-activity)</span></a><br>
+ <a class="rule-text" href="#generation-within-activity_text"><span>Constraint 36 (generation-within-activity)</span></a><br>
+ <a class="rule-text" href="#wasInformedBy-ordering_text"><span>Constraint 37 (wasInformedBy-ordering)</span></a><br>
+ <a class="rule-text" href="#wasEndedBy-ordering_text"><span>Constraint 44 (wasEndedBy-ordering)</span></a><br>
+ <a class="rule-text" href="#wasAssociatedWith-ordering_text"><span>Constraint 47 (wasAssociatedWith-ordering)</span></a><br>
+ <a class="rule-text" href="#impossible-property-overlap_text"><span>Constraint 52 (impossible-property-overlap)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr class="component1-color">
+ <td class="essential"><a>Invalidation</a></td>
+ <td><a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#unique-invalidation_text"><span>Constraint 28 (unique-invalidation)</span></a><br>
+ <a class="rule-text" href="#generation-precedes-invalidation_text"><span>Constraint 38 (generation-precedes-invalidation)</span></a><br>
+ <a class="rule-text" href="#usage-precedes-invalidation_text"><span>Constraint 40 (usage-precedes-invalidation)</span></a><br>
+ <a class="rule-text" href="#wasStartedBy-ordering_text"><span>Constraint 43 (wasStartedBy-ordering)</span></a><br>
+ <a class="rule-text" href="#wasEndedBy-ordering_text"><span>Constraint 44 (wasEndedBy-ordering)</span></a><br>
+ <a class="rule-text" href="#specialization-invalidation_text"><span>Constraint 46 (specialization-invalidation)</span></a><br>
+ <a class="rule-text" href="#wasAssociatedWith-ordering_text"><span>Constraint 47 (wasAssociatedWith-ordering)</span></a><br>
+ <a class="rule-text" href="#wasAttributedTo-ordering_text"><span>Constraint 48 (wasAttributedTo-ordering)</span></a><br>
+ <a class="rule-text" href="#actedOnBehalfOf-ordering_text"><span>Constraint 49 (actedOnBehalfOf-ordering)</span></a><br>
+ <a class="rule-text" href="#impossible-property-overlap_text"><span>Constraint 52 (impossible-property-overlap)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
<tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
-<tr class="component3-color" style="border-collapse: collapse; "><td class="essential"><a>Agent</a></td><td> </td><td rowspan="8"><a href="#component3">Component 3: Agents/Responsibility</a></td></tr>
-<tr class="component3-color"><td class="essential"><a>Attribution</a></td><td><a class="rule-text" href="#attribution-inference_text"><span>Inference 15 (attribution-inference)</span></a> </td></tr>
-<tr class="component3-color"><td class="essential"><a>Association</a></td><td> </td></tr>
-<tr class="component3-color"><td class="essential"><a>Delegation</a></td><td> </td></tr>
-<tr class="component3-color"><td class="provType"><a>Plan</a></td><td> </td></tr>
-<tr class="component3-color"><td class="provType"><a>Person</a></td> <td></td></tr>
-<tr class="component3-color"><td class="provType"><a>Organization</a></td><td></td></tr>
-<tr class="component3-color"><td class="provType"><a title="software-agent">SoftwareAgent</a></td><td></td>
-</tr><tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
-
-
-<tr class="component4-color"><td><a>Alternate</a></td><td><a class="rule-text" href="#alternate-reflexive_text"><span>Inference 18 (alternate-reflexive)</span></a><br><a class="rule-text" href="#alternate-transitive_text"><span>Inference 19 (alternate-transitive)</span></a><br><a class="rule-text" href="#alternate-symmetric_text"><span>Inference 20 (alternate-symmetric)</span></a> </td><td rowspan="2"><a href="#component4">Component 4: Alternate</a></td></tr>
-<tr class="component4-color"><td><a>Specialization</a></td><td><a class="rule-text" href="#specialization-irreflexive_text"><span></span></a><br><a class="rule-text" href="#specialization-transitive_text"><span>Inference 21 (specialization-transitive)</span></a><br><a class="rule-text" href="#specialization-antisymmetric_text"><span></span></a><br><a class="rule-text" href="#specialization-alternate_text"><span>Inference 22 (specialization-alternate)</span></a> </td></tr>
+
+<tr class="component2-color">
+ <td class="essential"><a>Derivation</a></td>
+ <td><a class="rule-text" href="#derivation-generation-use_text"><span>Inference 11 (derivation-generation-use)</span></a><br>
+ <a class="rule-text" href="#derivation-use_text"><span>Inference 12 (derivation-use)</span></a><br>
+ <a class="rule-text" href="#specific-derivation-inference_text"><span>Inference 13 (specific-derivation-inference)</span></a><br>
+ <a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#derivation-usage-generation-ordering_text"><span>Constraint 41 (derivation-usage-generation-ordering)</span></a><br>
+ <a class="rule-text" href="#derivation-generation-generation-ordering_text"><span>Constraint 42 (derivation-generation-generation-ordering)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+ <td rowspan="5"><a href="http://www.w3.org/TR/prov-dm/#component2">Component 2: Derivations</a></td>
+</tr>
+<tr class="component2-color">
+ <td class="provType"><a>Revision</a></td>
+ <td><a class="rule-text" href="#revision-is-alternate_text"><span>Inference 14 (revision-is-alternate)</span></a><br></td>
+</tr>
+<tr class="component2-color">
+ <td class="provType"><a>Quotation</a></td>
+ <td></td>
+</tr>
+<tr class="component2-color">
+ <td class="provType"><a>Primary Source</a></td>
+ <td></td>
+</tr>
+<tr class="component2-color">
+ <td><a class="essential">Influence</a></td>
+ <td></td>
+</tr>
<tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
-<tr class="component5-color"><td><a title="bundle">Bundle constructor</a></td><td></td><td rowspan="3"><a href="#component5">Component 5: Bundles</a></td></tr>
-<tr class="component5-color"><td class="provType"><a title="bundle">Bundle type</a></td><td> </td></tr>
-<tr class="component5-color"><td><a>Provenance Locator</a></td><td></td></tr>
+<tr class="component3-color" style="border-collapse: collapse; ">
+ <td class="essential"><a>Agent</a></td>
+ <td><a class="rule-text" href="#key-object_text"><span>Constraint 25 (key-object)</span></a><br>
+ <a class="rule-text" href="#impossible-object-property-overlap_text"><span>Constraint 53 (impossible-object-property-overlap)</span></a><br>
+ </td>
+ <td rowspan="5"><a href="http://www.w3.org/TR/prov-dm/#component3">Component 3: Agents/Responsibility</a></td>
+</tr>
+<tr class="component3-color">
+ <td class="essential"><a>Attribution</a></td>
+ <td><a class="rule-text" href="#attribution-inference_text"><span>Inference 15 (attribution-inference)</span></a><br>
+ <a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#wasAttributedTo-ordering_text"><span>Constraint 48 (wasAttributedTo-ordering)</span></a><br>
+ <a class="rule-text" href="#impossible-property-overlap_text"><span>Constraint 52 (impossible-property-overlap)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr class="component3-color">
+ <td class="essential"><a>Association</a></td>
+ <td><a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#wasAssociatedWith-ordering_text"><span>Constraint 47 (wasAssociatedWith-ordering)</span></a><br>
+ <a class="rule-text" href="#impossible-property-overlap_text"><span>Constraint 52 (impossible-property-overlap)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr class="component3-color">
+ <td class="essential"><a>Delegation</a></td>
+ <td><a class="rule-text" href="#delegation-inference_text"><span>Inference 16 (delegation-inference)</span></a><br>
+ <a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#actedOnBehalfOf-ordering_text"><span>Constraint 49 (actedOnBehalfOf-ordering)</span></a><br>
+ <a class="rule-text" href="#impossible-property-overlap_text"><span>Constraint 52 (impossible-property-overlap)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr class="component3-color">
+ <td class="essential"><a>Influence</a></td>
+ <td><a class="rule-text" href="#influence-inference_text"><span>Inference 17 (influence-inference)</span></a><br>
+ <a class="rule-text" href="#key-properties_text"><span>Constraint 26 (key-properties)</span></a><br>
+ <a class="rule-text" href="#impossible-influence-reflexive_text"><span>Constraint 50 (impossible-influence-reflexive)</span></a><br>
+ </td>
+</tr>
<tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
-<tr class="component6-color"><td><a>Collection</a></td><td> </td><td rowspan="3"><a href="#component6">Component 6: Collections</a></td></tr>
-<tr class="component6-color"><td><a title="empty dictionary">EmptyDictionary</a></td><td></td></tr>
-<tr class="component6-color"><td><a>Membership</a></td><td> </td></tr>
+<tr class="component4-color">
+ <td><a title="bundle">Bundle constructor</a></td>
+ <td></td>
+ <td rowspan="2"><a href="http://www.w3.org/TR/prov-dm/#component4">Component 4: Bundles</a></td>
+</tr>
+<tr class="component4-color">
+ <td class="provType"><a title="bundle">Bundle type</a></td>
+ <td> </td>
+</tr>
+<tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
+
+<tr class="component5-color">
+ <td><a>Alternate</a></td>
+ <td><a class="rule-text" href="#alternate-reflexive_text"><span>Inference 18 (alternate-reflexive)</span></a><br>
+ <a class="rule-text" href="#alternate-transitive_text"><span>Inference 19 (alternate-transitive)</span></a><br>
+ <a class="rule-text" href="#alternate-symmetric_text"><span>Inference 20 (alternate-symmetric)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+ <td rowspan="3"><a href="http://www.w3.org/TR/prov-dm/#component5">Component 5: Alternate Entities</a></td>
+</tr>
+<tr class="component5-color">
+ <td><a>Specialization</a></td>
+ <td><a class="rule-text" href="#specialization-transitive_text"><span>Inference 21 (specialization-transitive)</span></a><br>
+ <a class="rule-text" href="#specialization-alternate_text"><span>Inference 22 (specialization-alternate)</span></a><br>
+ <a class="rule-text" href="#specialization-attributes_text"><span>Inference 23 (specialization-attributes)</span></a><br>
+ <a class="rule-text" href="#specialization-generation_text"><span>Constraint 45 (specialization-generation)</span></a><br>
+ <a class="rule-text" href="#specialization-invalidation_text"><span>Constraint 46 (specialization-invalidation)</span></a><br>
+ <a class="rule-text" href="#impossible-specialization-reflexive_text"><span>Constraint 51 (impossible-specialization-reflexive)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr class="component5-color">
+ <td><a>Mention</a></td>
+ <td><a class="rule-text" href="#mention-specialization_text"><span>Inference 24 (mention-specialization)</span></a><br>
+ <a class="rule-text" href="#mention-unique_text"><span>Constraint 33 (mention-unique)</span></a><br>
+ <a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br>
+ </td>
+</tr>
+<tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
+
+<tr class="component6-color">
+ <td><a>Collection</a></td>
+ <td> </td>
+ <td rowspan="2"><a href="http://www.w3.org/TR/prov-dm/#component6">Component 6: Collections</a></td>
+</tr>
+<tr class="component6-color">
+ <td><a>Membership</a></td>
+ <td><a class="rule-text" href="#typing_text"><span>Constraint 54 (typing)</span></a><br></td>
+</tr>
</tbody></table>
</div>
@@ -1499,7 +1194,9 @@
<dfn id="dfn-existential-variables">existential variables</dfn> denoting the unknown values.
Existential variables can be <em>substituted</em> with constant
identifiers, literals, the placeholder <span class="name">-</span>,
- or other <a href="#dfn-existential-variables" class="internalDFN">existential variables</a>. </p>
+ or other <a href="#dfn-existential-variables" class="internalDFN">existential variables</a>.
+We note that Definitions 1, 2, and 3 desugar compact PROV-N notation into a normal form.
+</p>
<div class="definition" id="optional-identifiers" data-count="1" data-title="Definition 1 (optional-identifiers)"><div class="ruleTitle"><a class="internalDFN" href="#optional-identifiers">Definition 1 (optional-identifiers)</a></div>
<p>For each <span class="name">r</span> in {
@@ -1574,6 +1271,8 @@
</li>
<li><span class="name">wasInvalidatedBy(id;e,attrs)</span> <span class="conditional">IF AND ONLY IF</span> <span class="name">wasInvalidatedBy(id;e,-,-,attrs)</span>.
</li>
+ <li><span class="name">wasDerivedFrom(id;e2,e1,attrs)</span> <span class="conditional">IF AND ONLY IF</span> <span class="name">wasDerivedFrom(id;e2,e1,-,-,-,attrs)</span>.
+ </li>
<li><span class="name">wasAssociatedWith(id;e,attrs)</span> <span class="conditional">IF AND ONLY IF</span> <span class="name">wasAssociatedWith(id;e,-,-,attrs)</span>.
</li>
<li><span class="name">actedOnBehalfOf(id;a2,a1,attrs)</span> <span class="conditional">IF AND ONLY IF</span> <span class="name">actedOnBehalfOf(id;a2,a1,-,attrs)</span>.
@@ -1582,15 +1281,16 @@
</div>
<div class="remark">
-<p>
+<!--<p>
Note that there is no expansion rule for <span class="name">wasDerivedFrom</span>. In a derivation of the form
<span class="name">wasDerivedFrom(id;e1,e2,attr)</span>, the
absence of the optional activity, generation and use identifiers
means that the derivation relationship may encompass multiple activities,
-generations, and uses. Thus, it is not equivalent to <span class="name">wasDerivedFrom(id;e1,e2,a,g,u,attr)</span> where some
+generations, and uses. Thus, it is not equivalent to <span
+ class="name">wasDerivedFrom(id;e1,e2,a,g,u,attr)</span> where some
activity, generation and use are given explicitly.
The short
- form is not defined in terms of the long form in this case.</p>
+ form is not defined in terms of the long form in this case.</p>-->
<p>
There
@@ -1617,10 +1317,11 @@
following definition. For emphasis, the two optional parameters
that are not <a title="expandable parameter" href="#dfn-expandable-parameter" class="internalDFN">expandable</a> are
also listed.</p>
- <table border="1">
- <tbody><tr>
+ <table class="thinborder" style="margin-left: auto; margin-right: auto; border-color: black;">
+<tbody><tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
+ <tr>
<th>Relation</th>
- <th>Expandable</th>
+ <th>Expandable </th>
<th>Non-expandable</th>
</tr>
<tr>
@@ -1730,7 +1431,7 @@
-<p>Communication between activities is <a title="definition" href="#definition" class="internalDFN">defined</a> as the existence of an underlying
+<p id="communication-generation-use-inference_text">Communication between activities is <a title="definition" href="#definition" class="internalDFN">defined</a> as the existence of an underlying
entity generated by one activity and used by the other.</p>
<div class="inference" id="communication-generation-use-inference" data-count="5" data-title="Inference 5 (communication-generation-use-inference)"><div class="ruleTitle"><a class="internalDFN" href="#communication-generation-use-inference">Inference 5 (communication-generation-use-inference)</a></div>
@@ -1743,9 +1444,8 @@
</div>
<div class="note">
-The following inference is a "<a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">feature at
-risk</a>" and may be dropped if it leads to
- implementation difficulties.
+A final check is required on this inference to ensure that it does not lead to non-termination, when combined with
+<a class="rule-text" href="#communication-generation-use-inference_text"><span>Inference 5 (communication-generation-use-inference)</span></a>.
</div>
<div class="inference" id="generation-use-communication-inference" data-count="6" data-title="Inference 6 (generation-use-communication-inference)"><div class="ruleTitle"><a class="internalDFN" href="#generation-use-communication-inference">Inference 6 (generation-use-communication-inference)</a></div>
@@ -1771,7 +1471,7 @@
and used by <span class="name">a3</span>. The following illustration
shows a counterexample to transitivity. The
horizontal axis represents the event line. We see that <span class="name">e1</span> was generated after <span class="name">e2</span> was used. Furthermore, the illustration also shows that
-<span class="name">a3</span> completes before <span class="name">a1</span>. So it is impossible for <span class="name">a3</span> to have used an entity generated by <span class="name">a1</span>. This is illustrated in <a href="#wasInformedBy-non-transitive">Figure 1</a>.</p>
+<span class="name">a3</span> completes before <span class="name">a1</span>. So it is impossible for <span class="name">a3</span> to have used an entity generated by <span class="name">a1</span>. This is illustrated in <a href="#counterexample-wasInformedBy">Figure 1</a>.</p>
<div style="text-align: center;">
<figure>
@@ -1781,9 +1481,7 @@
</div>
</div>
-<div class="note">Luc: The narrative is not right for both
-<a class="rule-text" href="#entity-generation-invalidation-inference_text"><span>Inference 7 (entity-generation-invalidation-inference)</span></a> and <a class="rule-text" href="#activity-start-end-inference_text"><span>Inference 8 (activity-start-end-inference)</span></a>, since "there must have existed" does not work for entities and activities that are still extant. However, from a constraint checking, it is ok, to add such invalidation/end events, with a future time.</div>
-
+<!--
<div class="note">
The following two inferences could interact with type inference to produce
nontermination. For example, once we have an activity we can yse
@@ -1799,16 +1497,21 @@
implementability. I propose to drop both of the following
inferences, since they seem less necessary than the type inferences.
</div>
-
+-->
<hr>
+
+<!--
<div class="note">
- The following inference is a "<a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">feature at
+ The following inference is a "<a
+href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">feature at
risk</a>" and may be dropped if it leads to
implementation difficulties.
</div>
+-->
+
<p id="entity-generation-invalidation-inference_text">
-From an entity, we can infer that the existence of
+From an entity, we can infer that existence of
generation and invalidation events.
</p>
<div class="inference" id="entity-generation-invalidation-inference" data-count="7" data-title="Inference 7 (entity-generation-invalidation-inference)"><div class="ruleTitle"><a class="internalDFN" href="#entity-generation-invalidation-inference">Inference 7 (entity-generation-invalidation-inference)</a></div>
@@ -1821,13 +1524,16 @@
<hr>
+<!--
<div class="note">
- The following inference is a "<a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">feature at
+ The following inference is a "<a
+href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">feature at
risk</a>" and may be dropped if it leads to
implementation difficulties.
- </div>
+ </div>-->
+
<p id="activity-start-end-inference_text">
-From an activity statement we can infer that there must have existed
+From an activity statemen,t we can infer that
start and end events having times matching the start and end times of
the activity.
</p>
@@ -1908,8 +1614,7 @@
<p id="derivation-use_text">Derivations with an explicit activity and
no specified generation and usage admit the following inference: </p>
-<div class="note">The following inference is a "<a href="http://www.w3.org/2005/10/Process-20051014/tr#cfi">feature at
-risk</a>" because it
+<div class="note">Final check required. The following inference
appears redundant (it can be derived using other rules).
</div>
<div class="inference" id="derivation-use" data-count="12" data-title="Inference 12 (derivation-use)"><div class="ruleTitle"><a class="internalDFN" href="#derivation-use">Inference 12 (derivation-use)</a></div>
@@ -1918,7 +1623,7 @@
that <span class="name">used(use;a,e1,_t1,[])</span> and <span class="name">wasDerivedFrom(id;e2,e1,a,gen,use,attrs)</span> hold.
</p></div>
<p>This inference is justified by the fact that the entity denoted by <span class="name">e2</span> is generated by at most one activity
-(see <a class="rule-text" href="#unique-generation_text"><span>Constraint 41 (unique-generation)</span></a>). Hence, this activity is also the one referred to by the usage of <span class="name">e1</span>.
+(see <a class="rule-text" href="#unique-generation_text"><span>Constraint 27 (unique-generation)</span></a>). Hence, this activity is also the one referred to by the usage of <span class="name">e1</span>.
</p>
@@ -1941,7 +1646,7 @@
<div class="inference" id="specific-derivation-inference" data-count="13" data-title="Inference 13 (specific-derivation-inference)"><div class="ruleTitle"><a class="internalDFN" href="#specific-derivation-inference">Inference 13 (specific-derivation-inference)</a></div>
<p><span class="conditional">IF</span> <span class="name">wasDerivedFrom(id;e2,e1,_act,_gen,_use,attrs)</span>
- holds, <span class="conditional">THEN</span> <span class="name">wasDerivedFrom(id;e2,e1,attrs)</span> holds.
+ holds, <span class="conditional">THEN</span> <span class="name">wasDerivedFrom(id;e2,e1,-,-,-,attrs)</span> holds.
</p>
</div>
@@ -2195,191 +1900,6 @@
</div>
-<div id="type-rules" class="section">
-<h3><span class="secno">4.6 </span>Type inference rules</h3>
-
-The rules in this section establish the existence of entities, activities, and agents from their use within expressions.
-
-<div class="inference" id="generation-type-inference" data-count="25" data-title="Inference 25 (generation-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#generation-type-inference">Inference 25 (generation-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">wasGeneratedBy(gen;e,a,t,attrs)</span>
-<span class="conditional">THEN</span>
-<span class="name">entity(e,[])</span>,
- <span class="name">activity(a, -,-,[])</span>
-both hold.
-</p>
- </div>
-
-
-<div class="inference" id="usage-type-inference" data-count="26" data-title="Inference 26 (usage-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#usage-type-inference">Inference 26 (usage-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">used(u;a,e,t,attrs)</span>
-<span class="conditional">THEN</span>
-<span class="name">entity(e,[])</span>,
- <span class="name">activity(a, -,-,[])</span>
-both hold.
-</p>
- </div>
-
-
-<div class="inference" id="communication-type-inference" data-count="27" data-title="Inference 27 (communication-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#communication-type-inference">Inference 27 (communication-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">wasInformedBy(id;a2,a1,attrs)</span>
-<span class="conditional">THEN</span>
- <span class="name">activity(a1, -,-,[])</span>,
- <span class="name">activity(a2, -,-,[])</span>
- both hold.
-</p>
- </div>
-
-
-<div class="inference" id="start-type-inference" data-count="28" data-title="Inference 28 (start-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#start-type-inference">Inference 28 (start-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">wasStartedBy(id;a2,e,a1,t,attrs)</span>
-<span class="conditional">THEN</span>
- <span class="name">activity(a1, -,-,[])</span>,
- <span class="name">activity(a2, -,-,[])</span>,
-<span class="name">entity(e,[])</span>
- hold.
-</p>
- </div>
-
-
-<div class="inference" id="end-type-inference" data-count="29" data-title="Inference 29 (end-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#end-type-inference">Inference 29 (end-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">wasEndedBy(id;a2,e,a1,t,attrs)</span>
-<span class="conditional">THEN</span>
- <span class="name">activity(a1, -,-,[])</span>,
- <span class="name">activity(a2, -,-,[])</span>,
-<span class="name">entity(e,[])</span>
- hold.
-</p>
- </div>
-
-
-<div class="inference" id="invalidation-type-inference" data-count="30" data-title="Inference 30 (invalidation-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#invalidation-type-inference">Inference 30 (invalidation-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">wasInvalidatedBy(id;e,a,t,attrs)</span>
-<span class="conditional">THEN</span>
- <span class="name">activity(a, -,-,[])</span>,
-<span class="name">entity(e,[])</span>
- hold.
-</p>
- </div>
-
-
-
-<div class="inference" id="derivation-type-inference" data-count="31" data-title="Inference 31 (derivation-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#derivation-type-inference">Inference 31 (derivation-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">wasDerivedFrom(id; e2, e1, a, g2, u1, attrs)</span>
-<span class="conditional">THEN</span>
-<span class="name">entity(e1,[])</span>,
-<span class="name">entity(e2,[])</span>,
- <span class="name">activity(a, -,-,[])</span>
- hold.
-</p>
- </div>
-
-
-<div class="inference" id="attribution-type-inference" data-count="32" data-title="Inference 32 (attribution-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#attribution-type-inference">Inference 32 (attribution-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">wasAttributedTo(id;e,ag,attr)</span>
-<span class="conditional">THEN</span>
-<span class="name">entity(e,[])</span>,
-<span class="name">agent(ag,[])</span>
- hold.
-</p>
- </div>
-
-
-<div class="inference" id="association-type-inference" data-count="33" data-title="Inference 33 (association-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#association-type-inference">Inference 33 (association-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">wasAssociatedWith(id;a,ag,pl,attrs)</span>
-<span class="conditional">THEN</span>
- <span class="name">activity(a, -,-,[])</span>,
-<span class="name">agent(ag,[])</span>,
-<span class="name">entity(pl,[prov:type='prov:Plan'])</span>
- hold.
-</p>
- </div>
-
-
-<div class="inference" id="delegation-type-inference" data-count="34" data-title="Inference 34 (delegation-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#delegation-type-inference">Inference 34 (delegation-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">actedOnBehalfOf(id;ag2,ag1,a,attrs)</span>
-<span class="conditional">THEN</span>
- <span class="name">activity(a, -,-,[])</span>,
-<span class="name">agent(ag1,[])</span>,
-<span class="name">agent(ag2,[])</span>
- hold.
-</p>
- </div>
-
-
-
-<div class="inference" id="alternate-type-inference" data-count="35" data-title="Inference 35 (alternate-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#alternate-type-inference">Inference 35 (alternate-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">alternateOf(alt1, alt2)</span>
-<span class="conditional">THEN</span>
-<span class="name">entity(alt1,[])</span>,
-<span class="name">entity(alt2,[])</span>
- hold.
-</p>
- </div>
-
-
-<div class="inference" id="specialization-type-inference" data-count="36" data-title="Inference 36 (specialization-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#specialization-type-inference">Inference 36 (specialization-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">specializationOf(infra, supra)</span>
-<span class="conditional">THEN</span>
-<span class="name">entity(infra,[])</span>,
-<span class="name">entity(supra,[])</span>
- hold.
-</p>
- </div>
-
-
-<div class="inference" id="mention-type-inference" data-count="37" data-title="Inference 37 (mention-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#mention-type-inference">Inference 37 (mention-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">mentionOf(infra, supra,bundle)</span>
-<span class="conditional">THEN</span>
-<span class="name">entity(infra,[])</span>,
-<span class="name">entity(supra,[])</span>
- hold.
-</p>
- </div>
-
-
-<div class="note">not sure about this one below: the type could as well be EmptyCollection</div>
-<div class="inference" id="membership-type-inference" data-count="38" data-title="Inference 38 (membership-type-inference)"><div class="ruleTitle"><a class="internalDFN" href="#membership-type-inference">Inference 38 (membership-type-inference)</a></div>
-<p>
-<span class="conditional">IF</span>
- <span class="name">hadMember(c, e)</span>
-<span class="conditional">THEN</span>
-<span class="name">entity(c,[prov:type="prov:Collection"])</span>,
-<span class="name">entity(e,[])</span>
- hold.
-</p>
- </div>
-
-
-
-
-
-</div>
@@ -2429,8 +1949,8 @@
statements, due to inferences. Uniqueness constraints are
enforced through <a>merging</a> pairs of statements subject to
equalities. For example, suppose we have two activity statements
- <span class="name">activity(a,t1,-,[a=1])</span> and <span class="name">activity(a,-,t2,[b=2])</span>. The <a>merge</a> of
- these two statements (describing the same activity <span class="name">a</span>) is <span class="name">activity(a,t1,t2,[a=1,b=2])</span>. </p>
+ <span class="name">activity(a,2011-11-16T16:00:00,t1,[a=1])</span> and <span class="name">activity(a,t2,2011-11-16T18:00:00,[b=2])</span>. The <a>merge</a> of
+ these two statements (describing the same activity <span class="name">a</span>) is <span class="name">activity(a,2011-11-16T16:00:00,2011-11-16T18:00:00,[a=1,b=2])</span>. </p>
<p> Merging can be applied
to a pair of terms, or a pair of attribute lists.
@@ -2534,7 +2054,7 @@
unique statements describing them within a PROV instance, through
the following key constraints:
</p>
- <div class="constraint" id="key-object" data-count="39" data-title="Constraint 39 (key-object)"><div class="ruleTitle"><a class="internalDFN" href="#key-object">Constraint 39 (key-object)</a></div>
+ <div class="constraint" id="key-object" data-count="25" data-title="Constraint 25 (key-object)"><div class="ruleTitle"><a class="internalDFN" href="#key-object">Constraint 25 (key-object)</a></div>
<p></p><ol>
<li>The identifier field <span class="name">e</span> is a <span class="conditional">KEY</span> for
the <span class="name">entity(e,attrs)</span> statement.
@@ -2553,7 +2073,7 @@
of relationships in PROV uniquely identify the corresponding statements a PROV instance, through
the following key constraints:
</p>
- <div class="constraint" id="key-properties" data-count="40" data-title="Constraint 40 (key-properties)"><div class="ruleTitle"><a class="internalDFN" href="#key-properties">Constraint 40 (key-properties)</a></div>
+ <div class="constraint" id="key-properties" data-count="26" data-title="Constraint 26 (key-properties)"><div class="ruleTitle"><a class="internalDFN" href="#key-properties">Constraint 26 (key-properties)</a></div>
<p></p><ol>
<li>The identifier field <span class="name">id</span> is a <span class="conditional">KEY</span> for
the <span class="name">wasGeneratedBy(id;e,a,t,attrs)</span> statement.
@@ -2612,13 +2132,13 @@
</div>
-<div class="constraint" id="unique-generation" data-count="41" data-title="Constraint 41 (unique-generation)"><div class="ruleTitle"><a class="internalDFN" href="#unique-generation">Constraint 41 (unique-generation)</a></div>
+<div class="constraint" id="unique-generation" data-count="27" data-title="Constraint 27 (unique-generation)"><div class="ruleTitle"><a class="internalDFN" href="#unique-generation">Constraint 27 (unique-generation)</a></div>
<p>
<span class="conditional">IF</span> <span class="name">wasGeneratedBy(id1;e,_a1,_t1,_attrs1)</span> and <span class="name">wasGeneratedBy(id2;e,_a2,_t2,_attrs2)</span>,
<span class="conditional">THEN</span> <span class="name">id1</span>=<span class="name">id2</span>.</p>
</div>
-<div class="constraint" id="unique-invalidation" data-count="42" data-title="Constraint 42 (unique-invalidation)"><div class="ruleTitle"><a class="internalDFN" href="#unique-invalidation">Constraint 42 (unique-invalidation)</a></div>
+<div class="constraint" id="unique-invalidation" data-count="28" data-title="Constraint 28 (unique-invalidation)"><div class="ruleTitle"><a class="internalDFN" href="#unique-invalidation">Constraint 28 (unique-invalidation)</a></div>
<p>
<span class="conditional">IF</span> <span class="name">wasInvalidatedBy(id1;e,_a1,_t1,_attrs1)</span> and <span class="name">wasInvalidatedBy(id2;e,_a2,_t2,_attrs2)</span>,
<span class="conditional">THEN</span> <span class="name">id1</span>=<span class="name">id2</span>.</p>
@@ -2641,13 +2161,13 @@
these
</p>
-<div class="constraint" id="unique-wasStartedBy" data-count="43" data-title="Constraint 43 (unique-wasStartedBy)"><div class="ruleTitle"><a class="internalDFN" href="#unique-wasStartedBy">Constraint 43 (unique-wasStartedBy)</a></div>
+<div class="constraint" id="unique-wasStartedBy" data-count="29" data-title="Constraint 29 (unique-wasStartedBy)"><div class="ruleTitle"><a class="internalDFN" href="#unique-wasStartedBy">Constraint 29 (unique-wasStartedBy)</a></div>
<p>
<span class="conditional">IF</span> <span class="name">wasStartedBy(id1;a,_e1,_a1,_t1,_attrs1)</span> and <span class="name">wasStartedBy(id2;a,_e2,_a2,_t2,_attrs2)</span>, <span class="conditional">THEN</span> <span class="name">id</span>=<span class="name">id'</span>.</p>
</div>
-<div class="constraint" id="unique-wasEndedBy" data-count="44" data-title="Constraint 44 (unique-wasEndedBy)"><div class="ruleTitle"><a class="internalDFN" href="#unique-wasEndedBy">Constraint 44 (unique-wasEndedBy)</a></div>
+<div class="constraint" id="unique-wasEndedBy" data-count="30" data-title="Constraint 30 (unique-wasEndedBy)"><div class="ruleTitle"><a class="internalDFN" href="#unique-wasEndedBy">Constraint 30 (unique-wasEndedBy)</a></div>
<p>
<span class="conditional">IF</span> <span class="name">wasEndedBy(id1;a,_e1,_a1,_t1,_attrs1)</span> and <span class="name">wasEndedBy(id2;a,_e2,_a2,_t2,_attrs2)</span>, <span class="conditional">THEN</span> <span class="name">id</span>=<span class="name">id'</span>.</p>
</div>
@@ -2662,7 +2182,7 @@
</p><p id="unique-startTime_text">An <a href="#dfn-start-event" class="internalDFN">activity start event</a> is the <a title="instantaneous event" href="#dfn-event" class="internalDFN">instantaneous event</a> that marks the instant an activity starts. It allows for an optional time attribute. <span id="optional-start-time">Activities also allow for an optional start time attribute. If both are specified, they <em class="rfc2119" title="must">must</em> be the same, as expressed by the following constraint.</span>
</p>
-<div class="constraint" id="unique-startTime" data-count="45" data-title="Constraint 45 (unique-startTime)"><div class="ruleTitle"><a class="internalDFN" href="#unique-startTime">Constraint 45 (unique-startTime)</a></div>
+<div class="constraint" id="unique-startTime" data-count="31" data-title="Constraint 31 (unique-startTime)"><div class="ruleTitle"><a class="internalDFN" href="#unique-startTime">Constraint 31 (unique-startTime)</a></div>
<p>
<span class="conditional">IF</span> <span class="name">activity(a,t,_t',_attrs)</span> and <span class="name">wasStartedBy(id;a,_e1,_a1,t1,_attrs1)</span>, <span class="conditional">THEN</span> <span class="name">t</span>=<span class="name">t1</span>.</p>
</div>
@@ -2672,7 +2192,7 @@
<p id="unique-endTime_text">An <a href="#dfn-end-event" class="internalDFN">activity end event</a> is the <a title="instantaneous event" href="#dfn-event" class="internalDFN">instantaneous event</a> that marks the instant an activity ends. It allows for an optional time attribute. <span id="optional-end-time">Activities also allow for an optional end time attribute. If both are specified, they <em class="rfc2119" title="must">must</em> be the same, as expressed by the following constraint.</span>
</p>
-<div class="constraint" id="unique-endTime" data-count="46" data-title="Constraint 46 (unique-endTime)"><div class="ruleTitle"><a class="internalDFN" href="#unique-endTime">Constraint 46 (unique-endTime)</a></div>
+<div class="constraint" id="unique-endTime" data-count="32" data-title="Constraint 32 (unique-endTime)"><div class="ruleTitle"><a class="internalDFN" href="#unique-endTime">Constraint 32 (unique-endTime)</a></div>
<p>
<span class="conditional">IF</span> <span class="name">activity(a,_t,t',_attrs)</span> and <span class="name">wasEndedBy(id;a,_e1,_a1,t1,_attrs1)</span>, <span class="conditional">THEN</span> <span class="name">t'</span> = <span class="name">t1</span>.</p>
</div>
@@ -2693,7 +2213,7 @@
</div>
-<div class="constraint" id="mention-unique" data-count="47" data-title="Constraint 47 (mention-unique)"><div class="ruleTitle"><a class="internalDFN" href="#mention-unique">Constraint 47 (mention-unique)</a></div>
+<div class="constraint" id="mention-unique" data-count="33" data-title="Constraint 33 (mention-unique)"><div class="ruleTitle"><a class="internalDFN" href="#mention-unique">Constraint 33 (mention-unique)</a></div>
<p>
<span class="conditional">IF</span> <span class="name">mentionOf(e, e1, b1)</span> and <span class="name">mentionOf(e, e2, b2)</span>,
<span class="conditional">THEN</span> <span class="name">e1</span>=<span class="name">e2</span> and <span class="name">b1</span>=<span class="name">b2</span>.</p>
@@ -2836,9 +2356,9 @@
event</a> always <a href="#dfn-precedes" class="internalDFN">precedes</a> the corresponding <a href="#dfn-end-event" class="internalDFN">activity end
event</a>. This is illustrated by
<a href="#ordering-activity">Figure 2</a>
-(a) and expressed by <a class="rule-ref" href="#start-precedes-end"><span>Constraint 48 (start-precedes-end)</span></a>.</p>
-
-<div class="constraint" id="start-precedes-end" data-count="48" data-title="Constraint 48 (start-precedes-end)"><div class="ruleTitle"><a class="internalDFN" href="#start-precedes-end">Constraint 48 (start-precedes-end)</a></div>
+(a) and expressed by <a class="rule-ref" href="#start-precedes-end"><span>Constraint 34 (start-precedes-end)</span></a>.</p>
+
+<div class="constraint" id="start-precedes-end" data-count="34" data-title="Constraint 34 (start-precedes-end)"><div class="ruleTitle"><a class="internalDFN" href="#start-precedes-end">Constraint 34 (start-precedes-end)</a></div>
<p>
<span class="conditional">IF</span>
<span class="name">wasStartedBy(start;a,_e1,_a1,_t1,_attrs1)</span>
@@ -2846,7 +2366,7 @@
<span class="name">wasEndedBy(end;a,_e2,_a2,_t2,_attrs2)</span>
<span class="conditional">THEN</span>
<span class="name">start</span>
-<a title="precedes" href="#dfn-precedes" class="internalDFN">strictly precedes</a>
+<a title="precedes" href="#dfn-precedes" class="internalDFN">precedes</a>
<span class="name">end</span>.
</p>
</div>
@@ -2854,9 +2374,9 @@
</p><hr>
<p id="usage-within-activity_text">A usage implies ordering of <a title="instantaneous event" href="#dfn-event" class="internalDFN">events</a>, since the <a title="entity usage event" href="#dfn-usage-event" class="internalDFN">usage event</a> had to occur during the associated activity. This is
-illustrated by <a href="#ordering-activity">Figure 2</a> (b) and expressed by <a class="rule-ref" href="#usage-within-activity"><span>Constraint 49 (usage-within-activity)</span></a>.</p>
-
-<div class="constraint" id="usage-within-activity" data-count="49" data-title="Constraint 49 (usage-within-activity)"><div class="ruleTitle"><a class="internalDFN" href="#usage-within-activity">Constraint 49 (usage-within-activity)</a></div>
+illustrated by <a href="#ordering-activity">Figure 2</a> (b) and expressed by <a class="rule-ref" href="#usage-within-activity"><span>Constraint 35 (usage-within-activity)</span></a>.</p>
+
+<div class="constraint" id="usage-within-activity" data-count="35" data-title="Constraint 35 (usage-within-activity)"><div class="ruleTitle"><a class="internalDFN" href="#usage-within-activity">Constraint 35 (usage-within-activity)</a></div>
<ol>
<li>
<span class="conditional">IF</span>
@@ -2887,9 +2407,9 @@
<p id="generation-within-activity_text">A generation implies ordering of <a title="instantaneous event" href="#dfn-event" class="internalDFN">events</a>, since the <a title="entity generation event" href="#dfn-generation-event" class="internalDFN">generation event</a> had to occur during the associated activity. This is
-illustrated by <a href="#ordering-activity">Figure 2</a> (c) and expressed by <a class="rule-ref" href="#generation-within-activity"><span>Constraint 50 (generation-within-activity)</span></a>.</p>
-
-<div class="constraint" id="generation-within-activity" data-count="50" data-title="Constraint 50 (generation-within-activity)"><div class="ruleTitle"><a class="internalDFN" href="#generation-within-activity">Constraint 50 (generation-within-activity)</a></div>
+illustrated by <a href="#ordering-activity">Figure 2</a> (c) and expressed by <a class="rule-ref" href="#generation-within-activity"><span>Constraint 36 (generation-within-activity)</span></a>.</p>
+
+<div class="constraint" id="generation-within-activity" data-count="36" data-title="Constraint 36 (generation-within-activity)"><div class="ruleTitle"><a class="internalDFN" href="#generation-within-activity">Constraint 36 (generation-within-activity)</a></div>
<ol>
<li>
<span class="conditional">IF</span>
@@ -2926,9 +2446,9 @@
follow the end event of <span class="name">a2</span>. This is
illustrated by
<a href="#ordering-activity">Figure 2</a>
-(d) and expressed by <a class="rule-ref" href="#wasInformedBy-ordering"><span>Constraint 51 (wasInformedBy-ordering)</span></a>.</p>
-
-<div class="constraint" id="wasInformedBy-ordering" data-count="51" data-title="Constraint 51 (wasInformedBy-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasInformedBy-ordering">Constraint 51 (wasInformedBy-ordering)</a></div>
+(d) and expressed by <a class="rule-ref" href="#wasInformedBy-ordering"><span>Constraint 37 (wasInformedBy-ordering)</span></a>.</p>
+
+<div class="constraint" id="wasInformedBy-ordering" data-count="37" data-title="Constraint 37 (wasInformedBy-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasInformedBy-ordering">Constraint 37 (wasInformedBy-ordering)</a></div>
<p>
<span class="conditional">IF</span>
<span class="name">wasInformedBy(_id;a2,a1,_attrs)</span>
@@ -2938,7 +2458,7 @@
<span class="name">wasEndedBy(end;a2,_e2,_a2',_t2,_attrs2)</span>
<span class="conditional">THEN</span>
<span class="name">start</span>
-<a title="precedes" href="#dfn-precedes" class="internalDFN">strictly precedes</a>
+<a title="precedes" href="#dfn-precedes" class="internalDFN">precedes</a>
<span class="name">end</span>.
</p>
</div>
@@ -2983,7 +2503,7 @@
can be used, revised, or other entities can be derived from them, and
finally they may be invalidated. The constraints on these events are
illustrated graphically in <a href="#ordering-entity">Figure 3</a> and
-<a href="#ordering-trigger">Figure 4</a>.
+<a href="#ordering-entity-trigger">Figure 4</a>.
</p>
@@ -3004,7 +2524,7 @@
explicitly to cover the case of an entity that is generated and
invalidated without being used.)</p>
-<div class="constraint" id="generation-precedes-invalidation" data-count="52" data-title="Constraint 52 (generation-precedes-invalidation)"><div class="ruleTitle"><a class="internalDFN" href="#generation-precedes-invalidation">Constraint 52 (generation-precedes-invalidation)</a></div>
+<div class="constraint" id="generation-precedes-invalidation" data-count="38" data-title="Constraint 38 (generation-precedes-invalidation)"><div class="ruleTitle"><a class="internalDFN" href="#generation-precedes-invalidation">Constraint 38 (generation-precedes-invalidation)</a></div>
<p>
<span class="conditional">IF</span>
<span class="name">wasGeneratedBy(gen;e,_a1,_t1,_attrs1)</span>
@@ -3025,9 +2545,9 @@
<p id="generation-precedes-usage_text">
A usage and a generation for a given entity implies ordering of <a title="instantaneous event" href="#dfn-event" class="internalDFN">events</a>, since the <a title="entity generation
event" href="#dfn-generation-event" class="internalDFN">generation event</a> had to precede the <a title="entity usage event" href="#dfn-usage-event" class="internalDFN">usage event</a>. This is
-illustrated by <a href="#ordering-entity">Figure 3</a>(a) and expressed by <a class="rule-ref" href="#generation-precedes-usage"><span>Constraint 53 (generation-precedes-usage)</span></a>.</p>
-
-<div class="constraint" id="generation-precedes-usage" data-count="53" data-title="Constraint 53 (generation-precedes-usage)"><div class="ruleTitle"><a class="internalDFN" href="#generation-precedes-usage">Constraint 53 (generation-precedes-usage)</a></div>
+illustrated by <a href="#ordering-entity">Figure 3</a>(a) and expressed by <a class="rule-ref" href="#generation-precedes-usage"><span>Constraint 39 (generation-precedes-usage)</span></a>.</p>
+
+<div class="constraint" id="generation-precedes-usage" data-count="39" data-title="Constraint 39 (generation-precedes-usage)"><div class="ruleTitle"><a class="internalDFN" href="#generation-precedes-usage">Constraint 39 (generation-precedes-usage)</a></div>
<p> <span class="conditional">IF</span>
<span class="name">wasGeneratedBy(gen;e,_a1,_t1,_attrs1)</span>
and
@@ -3042,9 +2562,9 @@
<p>
</p><hr>
-<p id="usage-precedes-invalidation_text">All usages of an entity precede its invalidation, which is captured by <a class="rule-ref" href="#usage-precedes-invalidation"><span>Constraint 54 (usage-precedes-invalidation)</span></a> (without any explicit graphical representation).</p>
-
-<div class="constraint" id="usage-precedes-invalidation" data-count="54" data-title="Constraint 54 (usage-precedes-invalidation)"><div class="ruleTitle"><a class="internalDFN" href="#usage-precedes-invalidation">Constraint 54 (usage-precedes-invalidation)</a></div>
+<p id="usage-precedes-invalidation_text">All usages of an entity precede its invalidation, which is captured by <a class="rule-ref" href="#usage-precedes-invalidation"><span>Constraint 40 (usage-precedes-invalidation)</span></a> (without any explicit graphical representation).</p>
+
+<div class="constraint" id="usage-precedes-invalidation" data-count="40" data-title="Constraint 40 (usage-precedes-invalidation)"><div class="ruleTitle"><a class="internalDFN" href="#usage-precedes-invalidation">Constraint 40 (usage-precedes-invalidation)</a></div>
<p>
<span class="conditional">IF</span>
<span class="name">used(use;_a1,e,_t1,_attrs1)</span>
@@ -3069,10 +2589,10 @@
First, we consider derivations, where the activity and usage are known. In that case, the <a title="entity usage event" href="#dfn-usage-event" class="internalDFN">usage</a> of <span class="name">e1</span> has to precede the <a title="entity generation
event" href="#dfn-generation-event" class="internalDFN">generation</a> of <span class="name">e2</span>.
This is
-illustrated by <a href="#ordering-entity-fig">Figure 3</a> (b) and expressed by <a class="rule-ref" href="#derivation-usage-generation-ordering"><span>Constraint 55 (derivation-usage-generation-ordering)</span></a>.</p>
-
-
-<div class="constraint" id="derivation-usage-generation-ordering" data-count="55" data-title="Constraint 55 (derivation-usage-generation-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#derivation-usage-generation-ordering">Constraint 55 (derivation-usage-generation-ordering)</a></div>
+illustrated by <a href="#ordering-entity-fig">Figure 3</a> (b) and expressed by <a class="rule-ref" href="#derivation-usage-generation-ordering"><span>Constraint 41 (derivation-usage-generation-ordering)</span></a>.</p>
+
+
+<div class="constraint" id="derivation-usage-generation-ordering" data-count="41" data-title="Constraint 41 (derivation-usage-generation-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#derivation-usage-generation-ordering">Constraint 41 (derivation-usage-generation-ordering)</a></div>
<p>
<span class="conditional">IF</span>
<span class="name">wasDerivedFrom(_d;_e2,_e1,_a,gen2,use1,_attrs)</span>
@@ -3088,9 +2608,9 @@
<p id="derivation-generation-generation-ordering_text">
When the activity, generation or usage is unknown, a similar constraint exists, except that the constraint refers to its
generation event, as
-illustrated by <a href="#ordering-entity-fig">Figure 3</a> (c) and expressed by <a class="rule-ref" href="#derivation-generation-generation-ordering"><span>Constraint 56 (derivation-generation-generation-ordering)</span></a>.</p>
-
-<div class="constraint" id="derivation-generation-generation-ordering" data-count="56" data-title="Constraint 56 (derivation-generation-generation-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#derivation-generation-generation-ordering">Constraint 56 (derivation-generation-generation-ordering)</a></div>
+illustrated by <a href="#ordering-entity-fig">Figure 3</a> (c) and expressed by <a class="rule-ref" href="#derivation-generation-generation-ordering"><span>Constraint 42 (derivation-generation-generation-ordering)</span></a>.</p>
+
+<div class="constraint" id="derivation-generation-generation-ordering" data-count="42" data-title="Constraint 42 (derivation-generation-generation-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#derivation-generation-generation-ordering">Constraint 42 (derivation-generation-generation-ordering)</a></div>
<p>
<span class="conditional">IF</span>
<span class="name">wasDerivedFrom(_d;e2,e1,attrs)</span>
@@ -3115,10 +2635,10 @@
<p id="wasStartedBy-ordering_text">
The entity that triggered the start of an activity must exist before the activity starts.
This is
-illustrated by <a href="#ordering-entity-trigger">Figure 4</a>(a) and expressed by <a class="rule-ref" href="#wasStartedBy-ordering"><span>Constraint 57 (wasStartedBy-ordering)</span></a>.</p>
-
-
-<div class="constraint" id="wasStartedBy-ordering" data-count="57" data-title="Constraint 57 (wasStartedBy-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasStartedBy-ordering">Constraint 57 (wasStartedBy-ordering)</a></div>
+illustrated by <a href="#ordering-entity-trigger">Figure 4</a>(a) and expressed by <a class="rule-ref" href="#wasStartedBy-ordering"><span>Constraint 43 (wasStartedBy-ordering)</span></a>.</p>
+
+
+<div class="constraint" id="wasStartedBy-ordering" data-count="43" data-title="Constraint 43 (wasStartedBy-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasStartedBy-ordering">Constraint 43 (wasStartedBy-ordering)</a></div>
<ol>
<li>
<span class="conditional">IF</span>
@@ -3150,7 +2670,7 @@
<a href="#ordering-entity-trigger">Figure 4</a>(b).</p>
-<div class="constraint" id="wasEndedBy-ordering" data-count="58" data-title="Constraint 58 (wasEndedBy-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasEndedBy-ordering">Constraint 58 (wasEndedBy-ordering)</a></div>
+<div class="constraint" id="wasEndedBy-ordering" data-count="44" data-title="Constraint 44 (wasEndedBy-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasEndedBy-ordering">Constraint 44 (wasEndedBy-ordering)</a></div>
<ol>
<li>
<span class="conditional">IF</span>
@@ -3175,7 +2695,7 @@
</div>
<div style="text-align: center;">
-<figure id="#ordering-entity-trigger">
+<figure id="ordering-entity-trigger">
<img src="images/constraints/ordering-entity-trigger.png" alt="ordering constraints for trigger entities">
<figcaption id="ordering-entity-trigger-fig"><b>Figure 4:</b> Summary of <a title="instantaneous event" href="#dfn-event" class="internalDFN">instantaneous event</a> ordering constraints for trigger entities</figcaption>
</figure>
@@ -3186,7 +2706,7 @@
If an entity specalizes another, then its generation must follow the
specialized entity's generation.
</p>
-<div class="constraint" id="specialization-generation" data-count="59" data-title="Constraint 59 (specialization-generation)"><div class="ruleTitle"><a class="internalDFN" href="#specialization-generation">Constraint 59 (specialization-generation)</a></div>
+<div class="constraint" id="specialization-generation" data-count="45" data-title="Constraint 45 (specialization-generation)"><div class="ruleTitle"><a class="internalDFN" href="#specialization-generation">Constraint 45 (specialization-generation)</a></div>
<p>
<span class="conditional">IF</span> <span class="name">specializationOf(e2,e1)</span> and <span class="name">wasGeneratedBy(gen1;e1,_a1,_t1,_attrs1)</span> and
<span class="name">wasGeneratedBy(gen2;e2,_a2,_t2,_attrs2)</span>
@@ -3199,7 +2719,7 @@
<p id="specialization-invalidation_text">
Similarly, if an entity specalizes another, then its invalidation must follow the
specialized entity's invalidation.
-</p><div class="constraint" id="specialization-invalidation" data-count="60" data-title="Constraint 60 (specialization-invalidation)"><div class="ruleTitle"><a class="internalDFN" href="#specialization-invalidation">Constraint 60 (specialization-invalidation)</a></div>
+</p><div class="constraint" id="specialization-invalidation" data-count="46" data-title="Constraint 46 (specialization-invalidation)"><div class="ruleTitle"><a class="internalDFN" href="#specialization-invalidation">Constraint 46 (specialization-invalidation)</a></div>
<p>
<span class="conditional">IF</span> <span class="name">specializationOf(e2,e1)</span> and <span class="name">wasInvalidatedBy(inv1;e1,_a1,_t1,_attrs1)</span> and
<span class="name">wasInvalidatedBy(inv2;e2,_a2,_t2,_attrs2)</span>
@@ -3233,10 +2753,10 @@
<p id="wasAssociatedWith-ordering_text">An activity that was associated with an agent must have some overlap with the agent. The agent may be generated, or may only become associated with the activity, after the activity start: so, the agent is required to exist before the activity end. Likewise, the agent may be destructed, or may terminate its association with the activity, before the activity end: hence, the agent invalidation is required to happen after the activity start.
This is
-illustrated by <a href="#ordering-agents">Figure 5</a> (a) and expressed by <a class="rule-ref" href="#wasAssociatedWith-ordering"><span>Constraint 61 (wasAssociatedWith-ordering)</span></a>.</p>
-
-
-<div class="constraint" id="wasAssociatedWith-ordering" data-count="61" data-title="Constraint 61 (wasAssociatedWith-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasAssociatedWith-ordering">Constraint 61 (wasAssociatedWith-ordering)</a></div>
+illustrated by <a href="#ordering-agents">Figure 5</a> (a) and expressed by <a class="rule-ref" href="#wasAssociatedWith-ordering"><span>Constraint 47 (wasAssociatedWith-ordering)</span></a>.</p>
+
+
+<div class="constraint" id="wasAssociatedWith-ordering" data-count="47" data-title="Constraint 47 (wasAssociatedWith-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasAssociatedWith-ordering">Constraint 47 (wasAssociatedWith-ordering)</a></div>
<ol> <li>
<span class="conditional">IF</span>
<span class="name">wasAssociatedWith(_assoc;a,ag,_pl,_attrs)</span>
@@ -3272,12 +2792,12 @@
with the agent. The agent is required to exist before the entity
invalidation. Likewise, the entity generation must precede the agent destruction.
This is
-illustrated by <a href="#ordering-agents">Figure 5</a> (b) and expressed by <a class="rule-ref" href="#wasAttributedTo-ordering"><span>Constraint 62 (wasAttributedTo-ordering)</span></a>.</p>
+illustrated by <a href="#ordering-agents">Figure 5</a> (b) and expressed by <a class="rule-ref" href="#wasAttributedTo-ordering"><span>Constraint 48 (wasAttributedTo-ordering)</span></a>.</p>
-<div class="constraint" id="wasAttributedTo-ordering" data-count="62" data-title="Constraint 62 (wasAttributedTo-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasAttributedTo-ordering">Constraint 62 (wasAttributedTo-ordering)</a></div>
+<div class="constraint" id="wasAttributedTo-ordering" data-count="48" data-title="Constraint 48 (wasAttributedTo-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#wasAttributedTo-ordering">Constraint 48 (wasAttributedTo-ordering)</a></div>
<ol> <li>
<span class="conditional">IF</span>
<span class="name">wasAttributedTo(_at;e,ag,_attrs)</span>
@@ -3310,7 +2830,7 @@
<p id="actedOnBehalfOf-ordering_text">For delegation, two agents need to have some overlap in their lifetime.</p>
-<div class="constraint" id="actedOnBehalfOf-ordering" data-count="63" data-title="Constraint 63 (actedOnBehalfOf-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#actedOnBehalfOf-ordering">Constraint 63 (actedOnBehalfOf-ordering)</a></div>
+<div class="constraint" id="actedOnBehalfOf-ordering" data-count="49" data-title="Constraint 49 (actedOnBehalfOf-ordering)"><div class="ruleTitle"><a class="internalDFN" href="#actedOnBehalfOf-ordering">Constraint 49 (actedOnBehalfOf-ordering)</a></div>
<p> <span class="conditional">IF</span>
<span class="name">actedOnBehalfOf(_del;ag2,ag1,_a,_attrs)</span>
and
@@ -3352,7 +2872,7 @@
be <a href="#dfn-irreflexive" class="internalDFN">irreflexive</a>, that is, it is impossible for something to
influence itself.</p>
- <div class="constraint" id="impossible-influence-reflexive" data-count="64" data-title="Constraint 64 (impossible-influence-reflexive)"><div class="ruleTitle"><a class="internalDFN" href="#impossible-influence-reflexive">Constraint 64 (impossible-influence-reflexive)</a></div>
+ <div class="constraint" id="impossible-influence-reflexive" data-count="50" data-title="Constraint 50 (impossible-influence-reflexive)"><div class="ruleTitle"><a class="internalDFN" href="#impossible-influence-reflexive">Constraint 50 (impossible-influence-reflexive)</a></div>
<p> <span class="conditional">IF</span> <span class="name">wasInfluencedBy(e,e)</span> <span class="conditional">THEN</span> <span class="conditional">INVALID</span>.</p>
</div>
@@ -3365,7 +2885,7 @@
<a href="#dfn-strict-partial-order" class="internalDFN">strict partial order</a>: it is <a href="#dfn-irreflexive" class="internalDFN">irreflexive</a> and
<a href="#dfn-transitive" class="internalDFN">transitive</a>.</p>
- <div class="constraint" id="impossible-specialization-reflexive" data-count="65" data-title="Constraint 65 (impossible-specialization-reflexive)"><div class="ruleTitle"><a class="internalDFN" href="#impossible-specialization-reflexive">Constraint 65 (impossible-specialization-reflexive)</a></div>
+ <div class="constraint" id="impossible-specialization-reflexive" data-count="51" data-title="Constraint 51 (impossible-specialization-reflexive)"><div class="ruleTitle"><a class="internalDFN" href="#impossible-specialization-reflexive">Constraint 51 (impossible-specialization-reflexive)</a></div>
<!--<p>
For any entity <span class='name'>e</span>, it is not the case that
<span class='name'>specializationOf(e,e)</span> holds.</p>-->
@@ -3398,7 +2918,7 @@
<p id="impossible-property-overlap_text"> Furthermore, identifiers
of basic relationships are disjoint.
</p>
- <div class="constraint" id="impossible-property-overlap" data-count="66" data-title="Constraint 66 (impossible-property-overlap)"><div class="ruleTitle"><a class="internalDFN" href="#impossible-property-overlap">Constraint 66 (impossible-property-overlap)</a></div>
+ <div class="constraint" id="impossible-property-overlap" data-count="52" data-title="Constraint 52 (impossible-property-overlap)"><div class="ruleTitle"><a class="internalDFN" href="#impossible-property-overlap">Constraint 52 (impossible-property-overlap)</a></div>
<p>
For each <span class="name">r</span> and <span class="name">s</span>
in {
@@ -3428,7 +2948,7 @@
<p id="impossible-object-overlap_text"> Identifiers of entities,
agents and activities cannot also be identifiers of properties.
</p>
- <div class="constraint" id="impossible-object-property-overlap" data-count="67" data-title="Constraint 67 (impossible-object-property-overlap)"><div class="ruleTitle"><a class="internalDFN" href="#impossible-object-property-overlap">Constraint 67 (impossible-object-property-overlap)</a></div>
+ <div class="constraint" id="impossible-object-property-overlap" data-count="53" data-title="Constraint 53 (impossible-object-property-overlap)"><div class="ruleTitle"><a class="internalDFN" href="#impossible-object-property-overlap">Constraint 53 (impossible-object-property-overlap)</a></div>
<p>
For each <span class="name">r</span> in <span class="name">entity</span>, <span class="name">activity</span>
or <span class="name">agent</span> and for each <span class="name">s</span> in {
@@ -3451,24 +2971,233 @@
</div>
+
+</div> <!--impossibility-constraints -->
+
+<div id="type-constraints" class="section">
+<h3><span class="secno">5.4 </span>Type Constraints</h3>
+
+<p id="typing_text">The following rule establishes types denoted by identifiers from their use within expressions.
+For this, the function <span class="name">typeOf</span> gives the set of types denoted by an identifier.
+For example, <span class="name">typeOf(e)</span> returns the set of types associated with identifier <span class="name">e</span>. The function <span class="name">typeOf</span> is not a term of PROV, but a construct introduced to validate PROV statements.
+</p>
+
+
+
+
+<p>
+ For any identifier <span class="name">id</span>, <span class="name">typeOf(id)</span> is a subset of {<span class="name">'entity'</span>, <span class="name">'activity'</span>, <span class="name">'agent'</span>, <span class="name">'prov:Collection'</span>, <span class="name">'prov:EmptyCollection'</span>}.
+For identifiers that do not have a type, <span class="name">typeOf</span> gives the empty set.
+</p>
+
+<p>To check if a PROV instance satisfies type constraints, one obtains the types of identifiers by application of
+<a class="rule-ref" href="#typing"><span>Constraint 54 (typing)</span></a>
+and check no impossibility results from rules
+<a class="rule-ref" href="#entity-activity-disjoint"><span>Constraint 55 (entity-activity-disjoint)</span></a> and
+<a class="rule-ref" href="#membership-empty-collection"><span>Constraint 56 (membership-empty-collection)</span></a>.</p>
+
+
+<div class="constraint" id="typing" data-count="54" data-title="Constraint 54 (typing)"><div class="ruleTitle"><a class="internalDFN" href="#typing">Constraint 54 (typing)</a></div>
+
+
+<ul>
+<li>
+<span class="conditional">IF</span>
+ <span class="name">wasGeneratedBy(gen;e,a,t,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'entity' ∈ typeOf(e)</span> AND
+<span class="name">'activity' ∈ typeOf(a)</span>.
+
+
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">entity(e,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'entity' ∈ typeOf(e)</span>.
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">agent(ag,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'agent' ∈ typeOf(ag)</span>.
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">activity(a,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'activity' ∈ typeOf(a)</span>.
+
+
+</li><li>
+
+<span class="conditional">IF</span>
+ <span class="name">used(u;a,e,t,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'activity' ∈ typeOf(a)</span> AND
+<span class="name">'entity' ∈ typeOf(e)</span>.
+
+
+</li><li>
+
+<span class="conditional">IF</span>
+ <span class="name">wasInformedBy(id;a2,a1,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'activity' ∈ typeOf(a2)</span> AND
+<span class="name">'activity' ∈ typeOf(a1)</span>.
+
+</li><li>
+
+<span class="conditional">IF</span>
+ <span class="name">wasStartedBy(id;a2,e,a1,t,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'activity' ∈ typeOf(a2)</span> AND
+<span class="name">'entity' ∈ typeOf(e)</span> AND
+<span class="name">'activity' ∈ typeOf(a1)</span>.
+
+
+
+</li><li>
+
+
+<span class="conditional">IF</span>
+ <span class="name">wasEndedBy(id;a2,e,a1,t,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'activity' ∈ typeOf(a2)</span> AND
+<span class="name">'entity' ∈ typeOf(e)</span> AND
+<span class="name">'activity' ∈ typeOf(a1)</span>.
+
+
+
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">wasInvalidatedBy(id;e,a,t,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'entity' ∈ typeOf(e)</span> AND
+<span class="name">'activity' ∈ typeOf(a)</span>.
+
+
+
+
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">wasDerivedFrom(id; e2, e1, a, g2, u1, attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'entity' ∈ typeOf(e2)</span> AND
+<span class="name">'entity' ∈ typeOf(e1)</span> AND
+<span class="name">'activity' ∈ typeOf(a)</span>.
+
+
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">wasAttributedTo(id;e,ag,attr)</span>
+<span class="conditional">THEN</span>
+<span class="name">'entity' ∈ typeOf(e)</span> AND
+<span class="name">'agent' ∈ typeOf(ag)</span>.
+
+
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">wasAssociatedWith(id;a,ag,pl,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'activity' ∈ typeOf(a)</span> AND
+<span class="name">'agent' ∈ typeOf(ag)</span> AND
+<span class="name">'entity' ∈ typeOf(pl)</span>.
+
+
+
+
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">actedOnBehalfOf(id;ag2,ag1,a,attrs)</span>
+<span class="conditional">THEN</span>
+<span class="name">'agent' ∈ typeOf(ag2)</span> AND
+<span class="name">'agent' ∈ typeOf(ag1)</span> AND
+<span class="name">'activity' ∈ typeOf(a)</span>.
+
+
+
+
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">alternateOf(e2, e1)</span>
+<span class="conditional">THEN</span>
+<span class="name">'entity' ∈ typeOf(e2)</span> AND
+<span class="name">'entity' ∈ typeOf(e1)</span>.
+
+
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">specializationOf(e2, e1)</span>
+<span class="conditional">THEN</span>
+<span class="name">'entity' ∈ typeOf(e2)</span> AND
+<span class="name">'entity' ∈ typeOf(e1)</span>.
+
+
+</li><li>
+<span class="conditional">IF</span>
+ <span class="name">mentionOf(e2,e1,b)</span>
+<span class="conditional">THEN</span>
+<span class="name">'entity' ∈ typeOf(e2)</span> AND
+<span class="name">'entity' ∈ typeOf(e1)</span> AND
+<span class="name">'entity' ∈ typeOf(b)</span>.
+
+
+</li><li>
+
+<span class="conditional">IF</span>
+ <span class="name">hadMember(c,e)</span>
+<span class="conditional">THEN</span>
+<span class="name">'prov:Collection' ∈ typeOf(c)</span> AND
+<span class="name">'entity' ∈ typeOf(c)</span> AND
+<span class="name">'entity' ∈ typeOf(e)</span>.
+
+
+</li><li>
+
+<span class="conditional">IF</span>
+ <span class="name">entity(c,[prov:type='prov:EmptyCollection'])</span>
+<span class="conditional">THEN</span>
+<span class="name">'entity' ∈ typeOf(c)</span> AND
+<span class="name">'prov:EmptyCollection' ∈ typeOf(c)</span>.
+
+</li></ul>
+</div>
+
+
<hr>
- <p id="entity-activity-disjoint_text"> Furthermore, the set of entities and activities are disjoint, expressed by
+ <p id="entity-activity-disjoint_text"> The set of entities and activities are disjoint, expressed by
the following constraint:
</p>
- <div class="constraint" id="entity-activity-disjoint" data-count="68" data-title="Constraint 68 (entity-activity-disjoint)"><div class="ruleTitle"><a class="internalDFN" href="#entity-activity-disjoint">Constraint 68 (entity-activity-disjoint)</a></div>
+ <div class="constraint" id="entity-activity-disjoint" data-count="55" data-title="Constraint 55 (entity-activity-disjoint)"><div class="ruleTitle"><a class="internalDFN" href="#entity-activity-disjoint">Constraint 55 (entity-activity-disjoint)</a></div>
<!-- <p>It is not the case that <span class="name">entity(id,_attrs1)</span> and
<span class="name">activity(id,_t1,_t2,_attrs2)</span>.
</p>-->
-<p> <span class="conditional">IF</span> <span class="name">entity(id,_attrs1)</span> and <span class="name">activity(id,_t1,_t2,_attrs2)</span> <span class="conditional">THEN</span> <span class="conditional">INVALID</span>.</p>
- </div>
+<p>
+ <span class="conditional">IF</span>
+<span class="name">'entity' ∈ typeOf(id)</span> AND
+<span class="name">'activity' ∈ typeOf(id)</span>
+<span class="conditional">THEN</span> <span class="conditional">INVALID</span>.</p>
+ </div>
<div class="remark">
Note that there is no disjointness between entities and agents. This is because one might want to make statements about the provenance of an agent, by making it an entity.
- Thus, one <em class="rfc2119" title="may">may</em> assert both <span class="name">entity(a1)</span> and <span class="name">agent(a1)</span> in a valid PROV instance. However, it is recommended that users <em class="rfc2119" title="should">should</em> refrain from using the same identifier for an entity and an agent unless they refer to the same thing.
+ Therefore, users <em class="rfc2119" title="may">may</em> assert both <span class="name">entity(a1)</span> and <span class="name">agent(a1)</span> in a valid PROV instance.
+<!-- However, it is RECOMMENDED that users refrain from using the same identifier for an entity and an agent unless they refer to the same thing. -->
</div>
-</div> <!--impossibility-constraints -->
+ <hr>
+ <p id="membership-empty-collection_text"> An empty collection cannot contain any member, expressed by
+ the following constraint:
+ </p>
+ <div class="constraint" id="membership-empty-collection" data-count="56" data-title="Constraint 56 (membership-empty-collection)"><div class="ruleTitle"><a class="internalDFN" href="#membership-empty-collection">Constraint 56 (membership-empty-collection)</a></div>
+<p> <span class="conditional">IF</span>
+ <span class="name">hasMember(c,e)</span> and
+<span class="name">'prov:EmptyCollection' ∈ typeOf(c)</span>
+<span class="conditional">THEN</span> <span class="conditional">INVALID</span>.</p>
+ </div>
+
+
+</div>
+
</div> <!-- constraints -->
@@ -3498,7 +3227,7 @@
</li>
<li>
Apply all inferences to <span class="math">I<sub>1</sub></span> by adding the conclusion of each inference
- whose hypotheses are satisfied and whose conclusions do not
+ whose hypotheses are satisfied and whose entire conclusions do not
already hold (again, possibly introducing fresh existential
variables), yielding an instance <span class="math">I<sub>2</sub></span>.
</li>
@@ -3547,11 +3276,12 @@
</li>
<li>
If no
- such cycle exists, and none of the impossibility constraints are
+ such cycle exists, and none of the impossibility constraints <a href="#impossibility-constraints">(section 5.3)</a> and type constraints <a href="#type-constraints">(section 5.4)</a> are
violated, then <span class="math">I</span> is <a href="#dfn-valid" class="internalDFN">valid</a>.
</li>
</ol>
+<p>A normal form of a PROV instance may not exist when a uniqueness constraint fails due to merging failure. </p>
<p>Two PROV instances are <dfn id="dfn-equivalent">equivalent</dfn> if they have the
@@ -3740,4 +3470,3 @@
</dd><dt id="bib-PROV-SEM">[PROV-SEM]</dt><dd>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>
</dd><dt id="bib-RDF">[RDF]</dt><dd>Graham Klyne and Jeremy J. Carroll (eds.) <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/"><cite>Resource Description Framework (RDF): Concepts and Abstract Syntax</cite></a>. 2004, W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210//">http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/</a>
</dd></dl></div></div></body></html>
-