--- a/dictionary/prov-dictionary.html Mon Dec 17 09:42:40 2012 -0500
+++ b/dictionary/prov-dictionary.html Mon Dec 17 09:43:00 2012 -0500
@@ -825,45 +825,30 @@
<p>The <strong>dictionary membership</strong> has the same purpose as the <a href="#term-collection-membership">collection membership</a> relation, but it applies to entities having <span class="name">prov:type = 'prov:Dictionary'</span>. It allows stating the members of a Dictionary.</p>
<div class="attributes" id="attributes-hadMember-d">
- A <dfn title="hadMember-d">membership</dfn> relation, written <span class="pnExpression">hadMember(id; c, {(key_1, e_1), ..., (key_n, e_n)}, cplt, attrs)</span>, has:
-<ul>
-<li><span class='attribute' id="membership-d.id">id</span>: an OPTIONAL identifier identifying the relation;</li>
-<li><span class='attribute' id="membership-d.dictionary">dictionary</span>: an identifier (<span class="name">c</span>) for the dictionary whose members are asserted; </li>
-<li><span class='attribute' id="membership-d.key-entity-set">key-entity-set</span>: a set of key-entity pairs <span class="name">(key_1, e_1)</span>, ..., <span class="name">(key_n, e_n)</span> that are members of the dictionary;</li>
-<li><span class='attribute' id="membership-d.complete">complete</span>: an OPTIONAL boolean <a title="value">Value</a> (<span class="name">cplt</span>). It is interpreted as follows:
+ A <dfn title="hadMember-d">membership</dfn> relation, written <span class="pnExpression">hadMember(d, (key_1, e_1))</span>, has:
<ul>
-<li>if it is present and set to true, then c is believed to include all and only the members specified in the key-entity-set;</li>
-<li>if it is present and set to false, then c is believed to include more members in addition to those specified in the key-entity-set;</li>
-<li>if it is not present, then c is believed to include all the members specified in the key-entity-set, and it MAY include more.</li>
-</ul>
-</li>
-<!-- if true, it indicates that no other member belongs to the dictionary; if false, it indicates that other members belong to the dictionary; if unspecified, other members MAY belong to the dictionary; -->
-<li><span class='attribute' id="membership-d.attributes">attributes</span>: an OPTIONAL set (<span class="name">attrs</span>) of attribute-value pairs representing additional information about this relation.</li>
+<li><span class='attribute' id="membership-d.dictionary">dictionary</span>: an identifier (<span class="name">d</span>) for the dictionary whose members are asserted; </li>
+<li><span class='attribute' id="membership-d.key-entity-set">key-entity-pair</span>: a key-entity pair <span class="name">(key_1, e_1)</span> that is a member of the dictionary;</li>
</ul>
</div>
-<p id="complete-attribute-note-d">
-The attribute <a href="#membership-d.complete">complete</a> is interpreted as for the general <a href="#term-collection">collection membership</a> relation.
-</p>
<div class="anexample">
<pre class="codeexample">
-entity(d1, [prov:type='prov:Dictionary' ]) // d1 is a dictionary, with unknown content
-entity(d2, [prov:type='prov:Dictionary' ]) // d2 is a dictionary, with unknown content
+entity(d, [prov:type='prov:Dictionary' ]) // d1 is a dictionary, with unknown content
entity(e1)
entity(e2)
-hadMember(d1, {("k1", e1), ("k2", e2)} )
-hadMember(d2, {("k1", e1), ("k2", e2)}, true)
+hadMember(d, ("k1", e1))
+hadMember(d, ("k2", e2))
</pre>
From these descriptions, we conclude:
<ul>
-<li> <span class="name">d1</span> has the following pairs as members: <span class="name">("k1", e1), ("k2", e2)</span>, and may contain others.</li>
-<li> <span class="name">d2</span> exactly has the following pairs as members: <span class="name">("k1", e1), ("k2", e2)</span>, and does not contain any other.</li>
+<li> <span class="name">d</span> has the following pairs as members: <span class="name">("k1", e1), ("k2", e2)</span>, and may contain others.</li>
</ul>
-<p> Thus, the membership of <span class="name">d1</span> is only partially known.</p>
+<p> Thus, the membership of <span class="name">d</span> is only partially known, unless it was derived through insertions and removals from an empty dictionary (See <a href="#insertion-removal-membership-inference_text">Completeness constraints</a>).</p>
</div>
</section> <!-- end membership -->
@@ -1001,14 +986,9 @@
<span class="nonterminal">membershipExpression</span> ::=
<span class="name">hadMember</span>
<span class="name">(</span>
- <span class="optional"><span class="nonterminal">identifier</span>
- <span class="name">,</span></span>
-<span class="nonterminal">cIdentifier</span>
+<span class="nonterminal">dIdentifier</span>
<span class="name">,</span>
- <span class="name">{</span>
- <span class="nonterminal">keyValuePairs</span>
- <span class="name">}</span>
-<span class="nonterminal">optional-attribute-values</span>
+ <span class="nonterminal">keyValuePair</span>
<span class="name">)</span>
<br>
</div>
@@ -1020,40 +1000,26 @@
<tr><td><b>Dictionary Membership</b></td><td><b>Non-Terminal</b></td></tr>
<tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
-<tr><td><a href="http://www.w3.org/TR/prov-dm/#membership-d.id"><span class='attribute' id="provn-membership-d.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr>
-
<tr><td><a href="http://www.w3.org/TR/prov-dm/#membership-d.dictionary"><span class='attribute' id="provn-membership-d.dictionary">dictionary</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-dIdentifier">dIdentifier</a></code></td></tr>
-<tr><td><a href="http://www.w3.org/TR/prov-dm/#membership-d.key-entity-set"><span class='attribute' id="provn-membership-d.key-entity-set">key-entity-set</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-keyEntitySet">keyEntitySet</a></code></td></tr>
-
-<tr><td><a href="http://www.w3.org/TR/prov-dm/#membership-d.complete"><span class='attribute' id="provn-membership-d.complete">complete</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-complete">complete</a></code></td></tr>
-
-<tr><td><a href="http://www.w3.org/TR/prov-dm/#membership-d.attributes"><span class='attribute' id="provn-membership-d.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr>
+<tr><td><a href="http://www.w3.org/TR/prov-dm/#membership-d.key-entity-set"><span class='attribute' id="provn-membership-d.key-entity-set">key-entity-set</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-keyEntitySet">keyEntityPair</a></code></td></tr>
+
</table>
</div>
<div class="anexample">
- <pre class="codeexample">
- hadMember(c, e1) // Collection membership
- hadMember(mId, c, {("k4", v4), ("k5", v5)}, []) // Dictionary membership
- </pre>
-<p> Here
- <span class="name">mid</span> is the optional membership identifier,
- <span class="name">c</span> is the identifier for the collection whose membership is stated,
- <span class="name"> {("k4", v4), ("k5", v5)}</span> is the set of key-value pairs that are members of
- <span class="name">c</span>,
- and <span class="name">[]</span> is the optional (empty) set of attributes. </p>
-The remaining examples show cases for Dictionaries, where some of the optionals are omitted. Key-entity sets are replaced with Entity sets for the corresponding generic Collections examples.
-
+ <p>In this example, d is a dictionary known to have <span class="name">e0</span>, <span class="name">e1</span>, and <span class="name">e2</span> as members, and may have other members.</p>
<pre class="codeexample">
-hadMember(c3, {("k4", v4), ("k5", v5)})
-hadMember(c3, {("k4", v4)})
-hadMember(c3, {("k4", v4)}, false)
-hadMember(c3, {("k4", v4)}, true)
-hadMember(c3, {("k4", v4), ("k5", v5)},[])
-hadMember(c3, {("k4", v4), ("k5", v5)},true, [])
+entity(e0)
+entity(e1)
+entity(e2)
+
+entity(d, [prov:type='prov:Dictionary' ]) // d is a dictionary, with unknown content
+hadMember(d, ("k0", e0))
+hadMember(d, ("k1", e1))
+hadMember(d, ("k2", e2))
</pre>
</div>
@@ -1066,9 +1032,9 @@
<span class="name">(</span>
<span class="optional"><span class="nonterminal">identifier</span>
<span class="name">,</span></span>
-<span class="nonterminal">cIdentifier</span>
+<span class="nonterminal">dIdentifier</span>
<span class="name">,</span>
-<span class="nonterminal">cIdentifier</span>
+<span class="nonterminal">dIdentifier</span>
<span class="name">,</span>
<span class="name">{</span>
<span class="nonterminal">keyValuePairs</span>
@@ -1086,9 +1052,9 @@
<tr><td><a href="http://www.w3.org/TR/prov-dm/#insertion.id"><span class='attribute' id="provn-insertion.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr>
-<tr><td><a href="http://www.w3.org/TR/prov-dm/#insertion.after"><span class='attribute' id="provn-insertion.after">after</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-cIdentifier">cIdentifier</a></code></td></tr>
-
-<tr><td><a href="http://www.w3.org/TR/prov-dm/#insertion.before"><span class='attribute' id="provn-insertion.before">before</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-cIdentifier">cIdentifier</a></code></td></tr>
+<tr><td><a href="http://www.w3.org/TR/prov-dm/#insertion.after"><span class='attribute' id="provn-insertion.after">after</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-cIdentifier">dIdentifier</a></code></td></tr>
+
+<tr><td><a href="http://www.w3.org/TR/prov-dm/#insertion.before"><span class='attribute' id="provn-insertion.before">before</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-cIdentifier">dIdentifier</a></code></td></tr>
<tr><td><a href="http://www.w3.org/TR/prov-dm/#insertion.key-entity-set"><span class='attribute' id="provn-insertion.key-entity-set">key-entity-set</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-keyEntitySet">keyEntitySet</a></code></td></tr>
@@ -1100,21 +1066,21 @@
<div class="anexample">
<pre class="codeexample">
- derivedByInsertionFrom(id; c1, c, {("k1", v1), ("k2", v2)}, [])
+ derivedByInsertionFrom(id; d1, d, {("k1", e1), ("k2", e2)}, [])
</pre>
<p> Here
<span class="name">id</span> is the optional insertion identifier,
- <span class="name">c1</span> is the identifier for the collection after the insertion,
- <span class="name">c</span> is the identifier for the collection before the insertion,
- <span class="name"> {("k1", v1), ("k2", v2)}</span> is the set of key-value pairs that have been inserted in
- <span class="name">c</span>,
+ <span class="name">d1</span> is the identifier for the dictionary after the insertion,
+ <span class="name">d</span> is the identifier for the dictionary before the insertion,
+ <span class="name"> {("k1", e1), ("k2", e2)}</span> is the set of key-entity pairs that have been inserted in
+ <span class="name">d</span>,
and <span class="name">[]</span> is the optional (empty) set of attributes. </p>
The remaining examples show cases where some of the optionals are omitted.
<pre class="codeexample">
- derivedByInsertionFrom(c1, c, {("k1", v1), ("k2", v2)})
- derivedByInsertionFrom(c1, c, {("k1", v1)})
- derivedByInsertionFrom(c1, c, {("k1", v1), ("k2", v2)}, [])
+ derivedByInsertionFrom(d1, d, {("k1", e1), ("k2", e2)})
+ derivedByInsertionFrom(d1, d, {("k1", e1)})
+ derivedByInsertionFrom(d1, d, {("k1", e1), ("k2", e2)}, [])
</pre>
</div>
@@ -1128,9 +1094,9 @@
<span class="name">(</span>
<span class="optional"><span class="nonterminal">identifier</span>
<span class="name">,</span></span>
-<span class="nonterminal">cIdentifier</span>
+<span class="nonterminal">dIdentifier</span>
<span class="name">,</span>
-<span class="nonterminal">cIdentifier</span>
+<span class="nonterminal">dIdentifier</span>
<span class="name">,</span>
<span class="name">{</span>
<span class="nonterminal">keySet</span>
@@ -1148,9 +1114,9 @@
<tr><td><a href="http://www.w3.org/TR/prov-dm/#removal.id"><span class='attribute' id="provn-removal.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr>
-<tr><td><a href="http://www.w3.org/TR/prov-dm/#removal.after"><span class='attribute' id="provn-removal.after">after</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-cIdentifier">cIdentifier</a></code></td></tr>
-
-<tr><td><a href="http://www.w3.org/TR/prov-dm/#removal.before"><span class='attribute' id="provn-removal.before">before</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-cIdentifier">cIdentifier</a></code></td></tr>
+<tr><td><a href="http://www.w3.org/TR/prov-dm/#removal.after"><span class='attribute' id="provn-removal.after">after</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-cIdentifier">dIdentifier</a></code></td></tr>
+
+<tr><td><a href="http://www.w3.org/TR/prov-dm/#removal.before"><span class='attribute' id="provn-removal.before">before</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-cIdentifier">dIdentifier</a></code></td></tr>
<tr><td><a href="http://www.w3.org/TR/prov-dm/#removal.key-set"><span class='attribute' id="provn-removal.key-set">key-set</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-keySet">keySet</a></code></td></tr>
@@ -1164,24 +1130,25 @@
<div class="anexample">
<pre class="codeexample">
- derivedByRemovalFrom(id; c3, c, {"k1", "k3"}, [])
+ derivedByRemovalFrom(id; d3, d, {"k1", "k2"}, [])
</pre>
<p> Here
<span class="name">id</span> is the optional removal identifier,
- <span class="name">c1</span> is the identifier for the collection after the removal,
- <span class="name">c</span> is the identifier for the collection before the removal,
- <span class="name"> {("k1", v1), ("k2", v2)}</span> is the set of key-value pairs that have been removed from
- <span class="name">c</span>,
+ <span class="name">d1</span> is the identifier for the collection after the removal,
+ <span class="name">d</span> is the identifier for the collection before the removal,
+ <span class="name"> {"k1", "k2"}</span> is the set of keys that have been removed from
+ <span class="name">d</span>,
and <span class="name">[]</span> is the optional (empty) set of attributes. </p>
The remaining examples show cases where some of the optionals are omitted.
<pre class="codeexample">
- derivedByRemovalFrom(c3, c1, {"k1", "k3"})
- derivedByRemovalFrom(c3, c1, {"k1"})
- derivedByRemovalFrom(c3, c1, {"k1", "k3"}, [])
+ derivedByRemovalFrom(d2, d, {"k1", "k2"})
+ derivedByRemovalFrom(d2, d, {"k1"})
+ derivedByRemovalFrom(d2, d, {"k1", "k2"}, [])
</pre>
</div>
+
</section> <!-- removal -->
</section>
@@ -2705,14 +2672,123 @@
<section id="dictionary-xml-schema">
<h2>XML Schema Dictionary</h2>
-
-TODO: PROV-XML Team?
+The XML serialization of Dictionary will follow once this document has passed a first round of internal review by the Working Group.
</section>
<section id="dictionary-constraints">
<h2>Constraints Associated with Dictionary</h2>
-
-<a href="http://dvcs.w3.org/hg/prov/raw-file/default/dictionary/PROV-Dictionary_discussion.txt">Discussion on constraints for PROV-Dictionary</a>
+In this section, we specify some inferences and constraints associated with dictionaries. These inferences and constraints need to be applied to obtain valid provenance.
+For more information on how to read this section, we refer to [[PROV-CONSTRAINTS]].
+<section id="dictionary-constraints-inferences">
+ <h3>Inferences</h3>
+ <p id="membership-membership-inference_text">Each key maps to a single entity.</p>
+ <div class='inference' id='membership-membership-inference'>
+<p>
+<span class="conditional">IF</span> <span class="name">hadMember(d1, ("k1",e1))</span>
+ and <span class="name">hadMember(d1, ("k1",e2))</span>
+ <span class='conditional'>THEN</span> <span class="name">e1 = e2</span>
+</p></div>
+
+<p id="membership-insertion-membership-inference_text">If a dictionary was derived from another dictionary by an insertion, then the former holds all key-entity pairs of the latter, except those updated by the insertion.</p>
+ <div class='inference' id='membership-insertion-membership-inference'>
+<p>
+<span class="conditional">IF</span> <span class="name">hadMember(d1, ("k1",e1))</span>
+ and <span class="name">derivedByInsertionFrom(d2, d1, {("k2", _e2)})</span> and <span class="name">k1</span> ≠ <span class="name">k2</span>
+ <span class='conditional'>THEN</span> <span class="name">hadMember(d2, ("k1", e1))</span>
+</p></div>
+<p id="membership-update-membership-inference_text">Insertion provides an "update semantics" for the keys that are already present in a dictionary. A new pair replaces an existing pair with the same key in the new dictionary. </p>
+ <div class='inference' id='membership-update-membership-inference'>
+<p>
+<span class="conditional">IF</span> <span class="name">hadMember(d1, ("k1", e1))</span>
+ and <span class="name">derivedByInsertionFrom(d2, d1, {("k1", e2)})</span>
+ <span class='conditional'>THEN</span> <span class="name">hadMember(d2, ("k1", e2))</span>
+</p></div>
+
+<p id="insertion-membership-inference_text">A dictionary that was derived by an insertion of key-entity pairs, holds all these specified key-entity pairs.</p>
+ <div class='inference' id='insertion-membership-inference'>
+<p>
+<span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, {("k1", e1)})</span>
+ <span class='conditional'>THEN</span> <span class="name">hadMember(d2, ("k1", e1))</span>
+</p></div>
+
+
+<p id="removal-membership-inference_text">Only keys that actually mapped to an entity in a dictionary can be removed from it.</p>
+ <div class='inference' id='removal-membership-inference'>
+<p>
+<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, {"k1"})</span>
+ <span class='conditional'>THEN</span> <span class="name">hadMember(d1, ("k1",_e1))</span>
+</p></div>
+
+<p id="insertion-derivation-inference_text">Insertion and removal are special cases of derivation.</p>
+ <div class='inference' id='insertion-derivation-inference'>
+<p>
+<span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, {_("k1", e1)})</span>
+ <span class='conditional'>THEN</span> <span class="name">wasDerivedFrom(d2, d1)</span>
+</p></div>
+ <div class='inference' id='removal-derivation-inference'>
+<p>
+<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, {_"k1"})</span>
+ <span class='conditional'>THEN</span> <span class="name">wasDerivedFrom(d2, d1)</span>
+</p></div>
+
+
+<p id="insertion-removal-membership-inference_text">Insertions and removals do not introduce any new key-entity pairs, other than those specified.</p>
+ <div class='inference' id='insertion-removal-membership-inference'>
+<p>
+<span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, {("k1", _e1)})</span> and <span class="name">derivedByRemovalFrom(d3, d2, {"k1"})</span>
+ <span class='conditional'>THEN</span> <span class="name">hadMember(d1, ("k2",e2))</span> holds <span
+ class='conditional'>IF AND ONLY IF</span> <span class="name">hadMember(d3, ("k2",e2))</span>
+</p></div>
+ <div class="remark">
+ Note that this inference, together with the constraints that specify that a dictionary cannot be derived by multiple insertions or removals, and that an EmptyDictionary does not contain any key-entity pairs, guarantees <b>completeness</b> of a dictionary, if it can be traced back to an EmptyDictionary through insertions and removals.
+ Here, completeness means that all key-entity pairs of the dictionary are known through a hadMember statement.
+ </div>
+
+</section>
+ <!-- end inferences -->
+
+<section id="dictionary-constraints-constraints">
+ <h3>Constraints</h3>
+
+<p id="impossible-removal-membership_text">A dictionary that was derived by removal from another dictionary, cannot contain the key-entity pairs that were removed from the latter.</p>
+ <div class='constraint' id='impossible-removal-membership'>
+<p>
+<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, {"k1"})</span> and
+ <span class="name">hadMember(d2, {("k1",_e1)})</span><span class='conditional'>THEN</span> <span
+ class="conditional">INVALID</span>
+</p></div>
+
+ <p id="impossible-removal-insertion_text">A dictionary must not be derived through multiple insertion or removal relations.</p>
+ <div class='constraint' id='impossible-removal-insertion'>
+<p>
+<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, {_"k1"})</span> and
+ <span class="name">derivedByInsertionFrom(d2, d1, {_("k2", e2)})</span><span class='conditional'>THEN</span> <span
+ class="conditional">INVALID</span>
+</p></div>
+<div class='constraint' id='impossible-insertion-insertion'>
+<p>
+<span class="conditional">IF</span> <span class="name">IF derivedByInsertionFrom(d2, d1, {_("k1", e1)})</span> and
+ <span class="name">derivedByInsertionFrom(d2, d1, {_("k2", e2)})</span><span class='conditional'>THEN</span> <span
+ class="conditional">INVALID</span>
+</p></div>
+<div class='constraint' id='impossible-removal-removal'>
+<p>
+<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, {_"k1"})</span> and
+ <span class="name">derivedByRemovalFrom(d2, d1, {_"k2"})</span><span class='conditional'>THEN</span> <span
+ class="conditional">INVALID</span>
+</p></div>
+
+<p id="impossible-removal-insertion_text">An empty dictionary cannot hold any key-entity pairs.</p>
+ <div class='constraint' id='impossible-removal-insertion'>
+<p>
+<span class="conditional">IF</span> <span class="name">hadMember(d,("_k1", e1))</span> and
+ <span class="name">'EmptyDictionary' ∈ typeOf(e1)</span><span class='conditional'>THEN</span> <span
+ class="conditional">INVALID</span>
+</p></div>
+
+</section> <!-- end constraints -->
+
+
</section>
--- a/model/prov-constraints.html Mon Dec 17 09:42:40 2012 -0500
+++ b/model/prov-constraints.html Mon Dec 17 09:43:00 2012 -0500
@@ -888,7 +888,7 @@
//authors: ,
authors: [
{ name: "Tom De Nies", url: "http://users.ugent.be/~tdenies/",
- company: "IBBT - Ghent University" },
+ company: "iMinds - Ghent University" },
],
// name of the WG
@@ -5564,10 +5564,10 @@
Reza B'Far (Oracle Corporation),
Khalid Belhajjame (University of Manchester),
James Cheney (University of Edinburgh, School of Informatics),
-Sam Coppens (IBBT),
+Sam Coppens (iMinds),
David Corsar (University of Aberdeen, Computing Science),
Stephen Cresswell (The National Archives),
-Tom De Nies (IBBT),
+Tom De Nies (iMinds),
Helena Deus (DERI Galway at the National University of Ireland, Galway, Ireland),
Simon Dobson (Invited expert),
Martin Doerr (Foundation for Research and Technology - Hellas(FORTH)),
--- a/semantics/constraints.pl Mon Dec 17 09:42:40 2012 -0500
+++ b/semantics/constraints.pl Mon Dec 17 09:43:00 2012 -0500
@@ -65,7 +65,7 @@
decl('Inference', 11, 'derivation-generation-use-inference',
- comment('In this inference, none of <math>a</math>, <math>gen_2</math> or <math>use_1</math> can be placeholders -',
+ comment('In this inference, none of <em>a</em>, <em>gen<sub>2</sub></em> or <em>use_1</em> can be placeholders -.',
rule( [id, e_2, e_1, a, gen_2, use_1, attrs],
[wasDerivedFrom(id, e_2,e_1,a,gen_2,use_1,attrs)],
[s, t_1,t_2 ],
@@ -74,7 +74,7 @@
decl('Inference', 12, 'revision-is-alternate-inference',
- comment('In this inference, any of <math>a</math>, <math>g</math> or <math>u</math> may be placeholders.',
+ comment('In this inference, any of <em>a</em>, <em>g</em> or <em>u</em> may be placeholders.',
rule( [id, e_1, e_2, a, g,u],
[wasDerivedFrom(id, e_2,e_1,a,g,u,['prov:type = prov:Revision'])],
[],
@@ -123,12 +123,12 @@
[wasDerivedFrom(id, e_2, e_1, a, g, u, attrs)],
[],
[wasInfluencedBy(id, e_2, e_1, attrs)]),
- comment('In this rule, <math>a</math>, <math>g</math>, <math>u</math> may be placeholders -.',
+ comment('In this rule, <em>a</em>, <em>g</em>, <em>u</em> may be placeholders -.',
rule( [id, e, ag, attrs],
[wasAttributedTo(id, e,ag,attrs)],
[],
[wasInfluencedBy(id, e, ag, attrs)])),
- comment('In this rule, <math>pl</math> may be a placeholder -',
+ comment('In this rule, <em>pl</em> may be a placeholder -.',
rule( [id, a, ag, pl, attrs],
[wasAssociatedWith(id, a,ag,pl,attrs)],
[],
@@ -269,10 +269,21 @@
%% Todo: Recognize subscripts and translate to <sub>
+emitVar(A) --> {split('_',A,X,I), !},
+ emit(X),
+ emit('<sub>'),
+ emit(I),
+ emit('</sub>').
emitVar(A) --> emit(A).
+split(C,A,A1,A2) :- atom(A),
+ atom_chars(A,L),
+ append(L1,[C|L2],L),
+ atom_chars(A1,L1),
+ atom_chars(A2,L2).
+
htmlPred(A) --> {atom(A)},
- emit(A).
+ emitVar(A).
htmlPred(T) -->
{T =.. [F|Ts], Ts \= []},
emit(F),
@@ -287,11 +298,11 @@
htmlQuantify(_Q,[]) --> [].
htmlQuantify(forall,Xs) --> {Xs \= []},
emit('∀ '),
- emitListSep(',', emit, Xs),
+ emitListSep(',', emitVar, Xs),
emit('. ').
htmlQuantify(exists,Xs) --> {Xs \= []},
emit('∃ '),
- emitListSep(',', emit, Xs),
+ emitListSep(',', emitVar, Xs),
emit('. ').
htmlRule(Xs,Hyps,Ys,Concls) -->
@@ -354,3 +365,4 @@
main :- findall(X, decl(_,X,_,_),Xs),
writeEach(htmlDecl,user,Xs).
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/semantics/prov-sem-math-test.html Mon Dec 17 09:43:00 2012 -0500
@@ -0,0 +1,883 @@
+<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
+<html lang="en" dir="ltr">
+<head>
+ <title>Semantics of the Provenance Data Model</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <!--
+ === NOTA BENE ===
+ For the three scripts below, if your spec resides on dev.w3 you can check them
+ out in the same tree and use relative links so that they'll work offline,
+ -->
+<!-- PM -->
+ <style type="text/css">
+ .note { font-size:small; margin-left:50px }
+
+
+/* --- 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;
+}
+
+table.thinborder {
+ border-width: 1px;
+ border-spacing: 0px;
+ border-style: none;
+ border-color: gray;
+ border-collapse: collapse;
+}
+table.thinborder th {
+ border-width: 1px;
+ padding: 0px;
+ border-style: solid;
+ border-color: gray;
+}
+table.thinborder td {
+ border-width: 1px;
+ padding: 2px;
+ border-style: solid;
+ border-color: gray;
+}
+
+
+ </style>
+
+
+<!-- <script src="http://www.w3.org/Tools/respec/respec-w3c-common" class="remove" async></script> -->
+
+
+
+
+
+
+
+
+
+
+ <style type="text/css">.MathJax_Hover_Frame {border-radius: .25em; -webkit-border-radius: .25em; -moz-border-radius: .25em; -khtml-border-radius: .25em; box-shadow: 0px 0px 15px #83A; -webkit-box-shadow: 0px 0px 15px #83A; -moz-box-shadow: 0px 0px 15px #83A; -khtml-box-shadow: 0px 0px 15px #83A; border: 1px solid #A6D ! important; display: inline-block; position: absolute}
+.MathJax_Hover_Arrow {position: absolute; width: 15px; height: 11px; cursor: pointer}
+</style><style type="text/css">#MathJax_About {position: fixed; left: 50%; width: auto; text-align: center; border: 3px outset; padding: 1em 2em; background-color: #DDDDDD; color: black; cursor: default; font-family: message-box; font-size: 120%; font-style: normal; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 15px; -webkit-border-radius: 15px; -moz-border-radius: 15px; -khtml-border-radius: 15px; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
+.MathJax_Menu {position: absolute; background-color: white; color: black; width: auto; padding: 5px 0px; border: 1px solid #CCCCCC; margin: 0; cursor: default; font: menu; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; -khtml-border-radius: 5px; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
+.MathJax_MenuItem {padding: 1px 2em; background: transparent}
+.MathJax_MenuTitle {background-color: #CCCCCC; margin: -5px 0 0 0; text-align: center; font-style: italic; font-size: 80%; color: #444444; padding: 2px 0; overflow: hidden}
+.MathJax_MenuArrow {position: absolute; right: .5em; color: #666666}
+.MathJax_MenuActive .MathJax_MenuArrow {color: white}
+.MathJax_MenuCheck {position: absolute; left: .7em}
+.MathJax_MenuRadioCheck {position: absolute; left: .7em}
+.MathJax_MenuLabel {padding: 1px 2em 3px 1.33em; font-style: italic}
+.MathJax_MenuRule {border-top: 1px solid #DDDDDD; margin: 4px 3px}
+.MathJax_MenuDisabled {color: GrayText}
+.MathJax_MenuActive {background-color: #606872; color: white}
+.MathJax_Menu_Close {position: absolute; width: 31px; height: 31px; top: -15px; left: -15px}
+</style><style type="text/css">#MathJax_Zoom {position: absolute; background-color: #F0F0F0; overflow: auto; display: block; z-index: 301; padding: .5em; border: 1px solid black; margin: 0; font-weight: normal; font-style: normal; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; box-shadow: 5px 5px 15px #AAAAAA; -webkit-box-shadow: 5px 5px 15px #AAAAAA; -moz-box-shadow: 5px 5px 15px #AAAAAA; -khtml-box-shadow: 5px 5px 15px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
+#MathJax_ZoomOverlay {position: absolute; left: 0; top: 0; z-index: 300; display: inline-block; width: 100%; height: 100%; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
+#MathJax_ZoomEventTrap {position: absolute; left: 0; top: 0; z-index: 302; display: inline-block; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
+</style><style type="text/css">.MathJax_Preview {color: #888}
+#MathJax_Message {position: fixed; left: 1em; bottom: 1.5em; background-color: #E6E6E6; border: 1px solid #959595; margin: 0px; padding: 2px 8px; z-index: 102; color: black; font-size: 80%; width: auto; white-space: nowrap}
+#MathJax_MSIE_Frame {position: absolute; top: 0; left: 0; width: 0px; z-index: 101; border: 0px; margin: 0px; padding: 0px}
+.MathJax_Error {color: #CC0000; font-style: italic}
+</style><link href="http://www.w3.org/StyleSheets/TR/W3C-ED" rel="stylesheet" type="text/css" charset="utf-8"><style type="text/css">.MathJax_Display {text-align: center; margin: 1em 0em; position: relative; display: block; width: 100%}
+.MathJax .merror {background-color: #FFFF88; color: #CC0000; border: 1px solid #CC0000; padding: 1px 3px; font-style: normal; font-size: 90%}
+#MathJax_Tooltip {background-color: InfoBackground; color: InfoText; border: 1px solid black; box-shadow: 2px 2px 5px #AAAAAA; -webkit-box-shadow: 2px 2px 5px #AAAAAA; -moz-box-shadow: 2px 2px 5px #AAAAAA; -khtml-box-shadow: 2px 2px 5px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true'); padding: 3px 4px; position: absolute; left: 0; top: 0; width: auto; height: auto; display: none}
+.MathJax {display: inline; font-style: normal; font-weight: normal; line-height: normal; font-size: 100%; font-size-adjust: none; text-indent: 0; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; direction: ltr; border: 0; padding: 0; margin: 0}
+.MathJax img, .MathJax nobr, .MathJax a {border: 0; padding: 0; margin: 0; max-width: none; max-height: none; vertical-align: 0; line-height: normal; text-decoration: none}
+img.MathJax_strut {border: 0 !important; padding: 0 !important; margin: 0 !important; vertical-align: 0 !important}
+.MathJax span {display: inline; position: static; border: 0; padding: 0; margin: 0; vertical-align: 0; line-height: normal; text-decoration: none}
+.MathJax nobr {white-space: nowrap ! important}
+.MathJax img {display: inline ! important; float: none ! important}
+.MathJax_Processing {visibility: hidden; position: fixed; width: 0; height: 0; overflow: hidden}
+.MathJax_Processed {display: none!important}
+.MathJax_ExBox {display: block; overflow: hidden; width: 1px; height: 60ex}
+.MathJax .MathJax_EmBox {display: block; overflow: hidden; width: 1px; height: 60em}
+.MathJax .MathJax_HitBox {cursor: text; background: white; opacity: 0; filter: alpha(opacity=0)}
+.MathJax .MathJax_HitBox * {filter: none; opacity: 1; background: transparent}
+#MathJax_Tooltip * {filter: none; opacity: 1; background: transparent}
+@font-face {font-family: MathJax_Blank; src: url('about:blank')}
+.MathJax .noError {vertical-align: ; font-size: 90%; text-align: left; color: black; padding: 1px 3px; border: 1px solid}
+</style></head>
+ <body style="display: inherit;"><div style="visibility: hidden; overflow: hidden; position: absolute; top: 0px; height: 1px; width: auto; padding: 0px; border: 0px; margin: 0px; text-align: left; text-indent: 0px; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal;"><div id="MathJax_Hidden"></div></div><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">Semantics of the Provenance Data Model</h1><h2 id="w3c-editor-s-draft-17-december-2012"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft 17 December 2012</h2><dl><dt>This version:</dt><dd><a href="http://dvcs.w3.org/hg/prov/raw-file/default/semantics/prov-sem.html">http://dvcs.w3.org/hg/prov/raw-file/default/semantics/prov-sem.html</a></dd><dt>Latest published version:</dt><dd><a href="http://www.w3.org/TR/prov-sem/">http://www.w3.org/TR/prov-sem/</a></dd><dt>Latest editor's draft:</dt><dd><a href="http://dvcs.w3.org/hg/prov/raw-file/default/semantics/prov-sem.html">http://dvcs.w3.org/hg/prov/raw-file/default/semantics/prov-sem.html</a></dd><dt>Previous version:</dt><dd>none</dd><dt>Editor:</dt><dd><a href="http://homepages.inf.ed.ac.uk/jcheney">James Cheney</a>, University of Edinburgh</dd>
+</dl><p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2012-2012 <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.eu/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. <acronym title="World Wide Web Consortium">W3C</acronym> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p><hr></div><div id="MathJax_Message" style="display: none;">Loading [MathJax]/jax/output/HTML-CSS/fonts/STIX/fontdata.js</div>
+
+ <div id="abstract" class="introductory section"><h2>Abstract</h2>
+<p>
+Provenance is information about entities, activities, and people
+involved in producing a piece of data or thing, which can be used to
+form assessments about its quality, reliability or
+trustworthiness. PROV-DM is the conceptual data model that forms a
+basis for the <acronym title="World Wide Web Consortium">W3C</acronym> provenance (PROV) family of specifications.
+</p>
+
+
+<p> This document ... TODO </p>
+<p>The PROV Document Overview describes the overall state of PROV, and should be read before other PROV documents.</p>
+</div><div id="sotd" class="introductory section"><h2>Status of This Document</h2><p><em>This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current <acronym title="World Wide Web Consortium">W3C</acronym> publications and the latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><acronym title="World Wide Web Consortium">W3C</acronym> technical reports index</a> at http://www.w3.org/TR/.</em></p>
+<h4 id="prov-family-of-documents">PROV Family of Documents</h4>
+This document is part of the PROV family of documents, a set of documents defining various aspects that are necessary to achieve the vision of inter-operable
+interchange of provenance information in heterogeneous environments such as the Web. These documents are:
+<ul>
+<li> <a href="http://www.w3.org/TR/2012/WD-prov-overview-20121211/">PROV-OVERVIEW</a> (Note), an overview of the PROV family of documents [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-OVERVIEW">PROV-OVERVIEW</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2012/WD-prov-primer-20121211/">PROV-PRIMER</a> (Note), a primer for the PROV data model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-PRIMER">PROV-PRIMER</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2012/CR-prov-o-20121211/">PROV-O</a> (Recommendation), the PROV ontology, an OWL2 ontology allowing the mapping of PROV to RDF [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-O">PROV-O</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2012/CR-prov-dm-20121211/">PROV-DM</a> (Recommendation), the PROV data model for provenance [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2012/CR-prov-n-20121211/">PROV-N</a> (Recommendation), a notation for provenance aimed at human consumption [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-N">PROV-N</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2012/CR-prov-constraints-20121211/">PROV-CONSTRAINTS</a>
+(Recommendation), a set of constraints applying to the PROV data model;</li>
+<li> <a href="http://www.w3.org/TR/2012/WD-prov-aq-20120619/">PROV-AQ</a> (Note), the mechanisms for accessing and querying provenance [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-AQ">PROV-AQ</a></cite>]; </li>
+<li> <a href="http://www.w3.org/TR/2012/WD-prov-xml-20121211/">PROV-XML</a> (Note), an XML schema for the PROV data model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-XML">PROV-XML</a></cite>].</li>
+
+</ul>
+<h4 id="how-to-read-the-prov-family-of-documents">How to read the PROV Family of Documents</h4>
+<ul>
+<li>The primer is the entry point to PROV offering an introduction to the provenance model.</li>
+<li>The Linked Data and Semantic Web community should focus on PROV-O defining PROV classes and properties specified in an OWL2 ontology. For further details, PROV-DM and PROV-CONSTRAINTS specify the constraints applicable to the data model, and its interpretation. </li>
+<li>Developers seeking to retrieve or publish provenance should focus on PROV-AQ.</li>
+<li>Readers seeking to implement other PROV serializations
+should focus on PROV-DM and PROV-CONSTRAINTS. PROV-O and PROV-N offer examples of mapping to RDF and text, respectively.</li>
+</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="#test" class="tocxref"><span class="secno">2. </span>MathJax test</a></li><li class="tocline"><a href="#inferences" class="tocxref"><span class="secno">3. </span>Inferences</a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></div>
+
+
+
+
+
+
+ <div id="introduction" class="section">
+ <!--OddPage--><h2><span class="secno">1. </span>Introduction<br>
+</h2>
+
+<p>
+Provenance is a record that describes the people, institutions, entities, and activities involved in producing, influencing, or delivering a piece of data or a thing.
+This document complements
+ the PROV-DM specification [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] that defines a data model for
+ provenance on the Web. This document defines a form of validation for provenance. </p>
+
+
+
+ <div id="conventions" class="section">
+<h3><span class="secno">1.1 </span>Conventions</h3>
+
+
+
+<p>The key words "<em class="rfc2119" title="must">must</em>", "<em class="rfc2119" title="must not">must not</em>", "<em class="rfc2119" title="required">required</em>", "<em class="rfc2119" title="shall">shall</em>", "<em class="rfc2119" title="shall
+ not">shall
+ not</em>", "<em class="rfc2119" title="should">should</em>", "<em class="rfc2119" title="should not">should not</em>", "<em class="rfc2119" title="recommended">recommended</em>", "<em class="rfc2119" title="may">may</em>", and
+ "<em class="rfc2119" title="optional">optional</em>" in this document are to be interpreted as described in
+ [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC2119">RFC2119</a></cite>].</p>
+
+<p>In this document, logical formulas contain variables written as
+ lower-case identifiers. Some of these variables are written
+ beginning with the underscore character <span class="name">_</span>, by convention, to indicate that they
+ appear only once in the formula. Such variables are
+ provided merely as an aid to the reader. </p>
+
+</div>
+
+
+<div id="purpose" class="section">
+
+<h3><span class="secno">1.2 </span>Purpose of this document</h3>
+
+</div>
+
+<div id="structure-of-this-document" class="section">
+<h3><span class="secno">1.3 </span>Structure of this document</h3>
+<p>
+</p>
+
+
+
+</div>
+<div id="audience" class="section">
+<h3><span class="secno">1.4 </span> Audience </h3>
+
+
+<p>This document assumes familiarity with [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] and employs the
+[<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-N">PROV-N</a></cite>] notation.
+</p>
+
+</div>
+</div>
+
+<div id="test" class="section">
+<!--OddPage--><h2><span class="secno">2. </span>MathJax test</h2>
+
+<span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-1-Frame" role="textbox" aria-readonly="true" style=""><nobr><span class="math" id="MathJax-Span-1"><span style="display: inline-block; position: relative; width: 0px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(74px 19360px 80px -9px); top: -77px; left: 0px;"><span class="mrow" id="MathJax-Span-2"></span><span style="display: inline-block; width: 0px; height: 77px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 2px; vertical-align: -1px;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-1">\newcommand{\wasDerivedFrom}{\mathit{wasDerivedFrom}}</script>
+<span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-2-Frame" role="textbox" aria-readonly="true" style=""><nobr><span class="math" id="MathJax-Span-3"><span style="display: inline-block; position: relative; width: 0px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(74px 19360px 80px -9px); top: -77px; left: 0px;"><span class="mrow" id="MathJax-Span-4"></span><span style="display: inline-block; width: 0px; height: 77px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 2px; vertical-align: -1px;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-2">\newcommand{\wasInformedBy}{\mathit{wasInformedBy}}</script>
+<span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-3-Frame" role="textbox" aria-readonly="true" style=""><nobr><span class="math" id="MathJax-Span-5"><span style="display: inline-block; position: relative; width: 0px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(74px 19360px 80px -9px); top: -77px; left: 0px;"><span class="mrow" id="MathJax-Span-6"></span><span style="display: inline-block; width: 0px; height: 77px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 2px; vertical-align: -1px;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-3">\newcommand{\wasGeneratedBy}{\mathit{wasGeneratedBy}}</script>
+<span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-4-Frame" role="textbox" aria-readonly="true" style=""><nobr><span class="math" id="MathJax-Span-7"><span style="display: inline-block; position: relative; width: 0px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(74px 19360px 80px -9px); top: -77px; left: 0px;"><span class="mrow" id="MathJax-Span-8"></span><span style="display: inline-block; width: 0px; height: 77px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 2px; vertical-align: -1px;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-4">\newcommand{\used}{\mathit{used}}</script>
+<span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-5-Frame" role="textbox" aria-readonly="true" style=""><nobr><span class="math" id="MathJax-Span-9"><span style="display: inline-block; position: relative; width: 0px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(74px 19360px 80px -9px); top: -77px; left: 0px;"><span class="mrow" id="MathJax-Span-10"></span><span style="display: inline-block; width: 0px; height: 77px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 2px; vertical-align: -1px;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-5">\newcommand{\entity}{\mathit{entity}}</script>
+<span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-6-Frame" role="textbox" aria-readonly="true" style=""><nobr><span class="math" id="MathJax-Span-11"><span style="display: inline-block; position: relative; width: 0px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(74px 19360px 80px -9px); top: -77px; left: 0px;"><span class="mrow" id="MathJax-Span-12"></span><span style="display: inline-block; width: 0px; height: 77px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 2px; vertical-align: -1px;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-6">\newcommand{\activity}{\mathit{activity}}</script>
+
+<p>When <span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-7-Frame" role="textbox" aria-readonly="true" style=""><nobr><span class="math" id="MathJax-Span-13"><span style="display: inline-block; position: relative; width: 48px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(31.9px 19360px 54px -8.7px); top: -48px; left: 0px;"><span class="mrow" id="MathJax-Span-14"><span class="mi" id="MathJax-Span-15" style="font-family: STIXGeneral-Italic;">a</span><span class="mo" id="MathJax-Span-16" style="font-family: STIXGeneral-Regular; padding-left: 6px;">≠</span><span class="mn" id="MathJax-Span-17" style="font-family: STIXGeneral-Regular; padding-left: 6px;">0</span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 18.1px; vertical-align: -4px;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-7">a \ne 0</script>, there are two solutions to <span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-8-Frame" role="textbox" aria-readonly="true" style=""><nobr><span class="math" id="MathJax-Span-18"><span style="display: inline-block; position: relative; width: 132px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(28.7px 19360px 51.8px -8.7px); top: -48px; left: 0px;"><span class="mrow" id="MathJax-Span-19"><span class="mi" id="MathJax-Span-20" style="font-family: STIXGeneral-Italic;">a</span><span class="msubsup" id="MathJax-Span-21"><span style="display: inline-block; position: relative; width: 18.4px; height: 0px;"><span style="position: absolute; clip: rect(36.5px 19360px 51.2px -9.5px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-22" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.1px;"></span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -49px; left: 10px;"><span class="mn" id="MathJax-Span-23" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-24" style="font-family: STIXGeneral-Regular; padding-left: 4.8px;">+</span><span class="mi" id="MathJax-Span-25" style="font-family: STIXGeneral-Italic; padding-left: 4.8px;">b</span><span class="mi" id="MathJax-Span-26" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.1px;"></span></span><span class="mo" id="MathJax-Span-27" style="font-family: STIXGeneral-Regular; padding-left: 4.8px;">+</span><span class="mi" id="MathJax-Span-28" style="font-family: STIXGeneral-Italic; padding-left: 4.8px;">c</span><span class="mo" id="MathJax-Span-29" style="font-family: STIXGeneral-Regular; padding-left: 6px;">=</span><span class="mn" id="MathJax-Span-30" style="font-family: STIXGeneral-Regular; padding-left: 6px;">0</span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 19.1px; vertical-align: -1.8px;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-8">ax^2 + bx + c = 0</script> and they are
+</p>
+<span class="MathJax_Preview"></span><div class="MathJax_Display" role="textbox" aria-readonly="true" style="text-align: center;"><span class="MathJax" id="MathJax-Element-9-Frame" style=""><nobr><span class="math" id="MathJax-Span-31"><span style="display: inline-block; position: relative; width: 173px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(11px 19360px 64.5px -9.5px); top: -48px; left: 0px;"><span class="mrow" id="MathJax-Span-32"><span class="mi" id="MathJax-Span-33" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.1px;"></span></span><span class="mo" id="MathJax-Span-34" style="font-family: STIXGeneral-Regular; padding-left: 6px;">=</span><span class="texatom" id="MathJax-Span-35" style="padding-left: 6px;"><span class="mrow" id="MathJax-Span-36"><span class="mfrac" id="MathJax-Span-37" style="padding-left: 2.3px; padding-right: 2.3px;"><span style="display: inline-block; position: relative; width: 130.3px; height: 0px;"><span style="position: absolute; clip: rect(24.1px 19360px 54.2px -7.8px); top: -61.1px; left: 50%; margin-left: -64px;"><span class="mrow" id="MathJax-Span-38"><span class="mo" id="MathJax-Span-39" style="font-family: STIXGeneral-Regular;">−</span><span class="mi" id="MathJax-Span-40" style="font-family: STIXGeneral-Italic;">b</span><span class="mo" id="MathJax-Span-41" style="font-family: STIXGeneral-Regular; padding-left: 4.8px;">±</span><span class="msqrt" id="MathJax-Span-42" style="padding-left: 4.8px;"><span style="display: inline-block; position: relative; width: 83.5px; height: 0px;"><span style="position: absolute; clip: rect(27.8px 19360px 51.2px -8.6px); top: -48px; left: 15px;"><span class="mrow" id="MathJax-Span-43"><span class="msubsup" id="MathJax-Span-44"><span style="display: inline-block; position: relative; width: 18.5px; height: 0px;"><span style="position: absolute; clip: rect(31.8px 19360px 51.2px -8.6px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-45" style="font-family: STIXGeneral-Italic;">b</span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -49.9px; left: 10px;"><span class="mn" id="MathJax-Span-46" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-47" style="font-family: STIXGeneral-Regular; padding-left: 4.8px;">−</span><span class="mn" id="MathJax-Span-48" style="font-family: STIXGeneral-Regular; padding-left: 4.8px;">4</span><span class="mi" id="MathJax-Span-49" style="font-family: STIXGeneral-Italic;">a</span><span class="mi" id="MathJax-Span-50" style="font-family: STIXGeneral-Italic;">c</span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; clip: rect(58.1px 19360px 65.1px -9px); top: -82px; left: 15px;"><span style="display: inline-block; position: relative; width: 68.5px; height: 0px;"><span style="position: absolute; font-family: STIXGeneral-Regular; top: -77px; left: 0px;">‾<span style="display: inline-block; width: 0px; height: 77px;"></span></span><span style="position: absolute; font-family: STIXGeneral-Regular; top: -77px; left: 58.8px;">‾<span style="display: inline-block; width: 0px; height: 77px;"></span></span><span style="font-family: STIXGeneral-Regular; position: absolute; top: -77px; left: 8px;">‾<span style="display: inline-block; width: 0px; height: 77px;"></span></span><span style="font-family: STIXGeneral-Regular; position: absolute; top: -77px; left: 16.5px;">‾<span style="display: inline-block; width: 0px; height: 77px;"></span></span><span style="font-family: STIXGeneral-Regular; position: absolute; top: -77px; left: 24.9px;">‾<span style="display: inline-block; width: 0px; height: 77px;"></span></span><span style="font-family: STIXGeneral-Regular; position: absolute; top: -77px; left: 33.4px;">‾<span style="display: inline-block; width: 0px; height: 77px;"></span></span><span style="font-family: STIXGeneral-Regular; position: absolute; top: -77px; left: 41.9px;">‾<span style="display: inline-block; width: 0px; height: 77px;"></span></span><span style="font-family: STIXGeneral-Regular; position: absolute; top: -77px; left: 50.3px;">‾<span style="display: inline-block; width: 0px; height: 77px;"></span></span></span><span style="display: inline-block; width: 0px; height: 77px;"></span></span><span style="position: absolute; clip: rect(55.2px 19360px 85px -6.8px); top: -78.8px; left: 0px;"><span style="font-family: STIXGeneral-Regular;">√</span><span style="display: inline-block; width: 0px; height: 77px;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; clip: rect(31.9px 19360px 51.2px -8.4px); top: -34.7px; left: 50%; margin-left: -10px;"><span class="mrow" id="MathJax-Span-51"><span class="mn" id="MathJax-Span-52" style="font-family: STIXGeneral-Regular;">2</span><span class="mi" id="MathJax-Span-53" style="font-family: STIXGeneral-Italic;">a</span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; clip: rect(16.8px 19360px 24px -9px); top: -25.3px; left: 0px;"><span style="border-left-width: 130.3px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0px;"></span><span style="display: inline-block; width: 0px; height: 21px;"></span></span></span></span></span></span><span class="mo" id="MathJax-Span-54" style="font-family: STIXGeneral-Regular;">.</span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 49.5px; vertical-align: -14.5px;"></span></span></nobr></span></div><script type="math/tex; mode=display" id="MathJax-Element-9">x = {-b \pm \sqrt{b^2-4ac} \over 2a}.</script>
+
+<div class="inference" id="communication-generation-use-inference_test"><div class="ruleTitle"><a class="internalDFN" href="#communication-generation-use-inference_test">Inference 1 (communication-generation-use-inference_test)</a></div>
+<span class="MathJax_Preview"></span><span class="MathJax" id="MathJax-Element-10-Frame" role="textbox" aria-readonly="true" style=""><nobr><span class="math" id="MathJax-Span-55"><span style="display: inline-block; position: relative; width: 993px; height: 0px; font-size: 121%;"><span style="position: absolute; clip: rect(31.8px 19360px 55px -9px); top: -48px; left: 0px;"><span class="mrow" id="MathJax-Span-56"><span class="mi" id="MathJax-Span-57" style="font-family: STIXGeneral-Regular;">∀</span><span class="mi" id="MathJax-Span-58" style="font-family: STIXGeneral-Italic;">i</span><span class="mi" id="MathJax-Span-59" style="font-family: STIXGeneral-Italic;">d<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.5px;"></span></span><span class="mo" id="MathJax-Span-60" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-61" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 18.5px; height: 0px;"><span style="position: absolute; clip: rect(36.5px 19360px 51.2px -8.7px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-62" style="font-family: STIXGeneral-Italic;">a</span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 10px;"><span class="mn" id="MathJax-Span-63" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-64" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-65" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 18.5px; height: 0px;"><span style="position: absolute; clip: rect(36.5px 19360px 51.2px -8.7px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-66" style="font-family: STIXGeneral-Italic;">a</span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 10px;"><span class="mn" id="MathJax-Span-67" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-68" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-69" style="font-family: STIXGeneral-Italic; padding-left: 3.6px;">a</span><span class="mi" id="MathJax-Span-70" style="font-family: STIXGeneral-Italic;">t<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.3px;"></span></span><span class="mi" id="MathJax-Span-71" style="font-family: STIXGeneral-Italic;">t<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.3px;"></span></span><span class="mi" id="MathJax-Span-72" style="font-family: STIXGeneral-Italic;">r<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.4px;"></span></span><span class="mi" id="MathJax-Span-73" style="font-family: STIXGeneral-Italic;">s</span><span class="mo" id="MathJax-Span-74" style="font-family: STIXGeneral-Regular;">.</span><span class="mtext" id="MathJax-Span-75" style="font-family: STIXGeneral-Regular; padding-left: 3.6px;"> </span><span class="texatom" id="MathJax-Span-76"><span class="mrow" id="MathJax-Span-77"><span class="mi" id="MathJax-Span-78" style="font-family: STIXGeneral-Italic;">w</span><span class="mi" id="MathJax-Span-79" style="font-family: STIXGeneral-Italic;">a</span><span class="mi" id="MathJax-Span-80" style="font-family: STIXGeneral-Italic;">s</span><span class="mi" id="MathJax-Span-81" style="font-family: STIXGeneral-Italic;">I</span><span class="mi" id="MathJax-Span-82" style="font-family: STIXGeneral-Italic;">n</span><span class="mi" id="MathJax-Span-83" style="font-family: STIXGeneral-Italic;">f</span><span class="mi" id="MathJax-Span-84" style="font-family: STIXGeneral-Italic;">o</span><span class="mi" id="MathJax-Span-85" style="font-family: STIXGeneral-Italic;">r</span><span class="mi" id="MathJax-Span-86" style="font-family: STIXGeneral-Italic;">m</span><span class="mi" id="MathJax-Span-87" style="font-family: STIXGeneral-Italic;">e</span><span class="mi" id="MathJax-Span-88" style="font-family: STIXGeneral-Italic;">d</span><span class="mi" id="MathJax-Span-89" style="font-family: STIXGeneral-Italic;">B</span><span class="mi" id="MathJax-Span-90" style="font-family: STIXGeneral-Italic;">y</span></span></span><span class="mo" id="MathJax-Span-91" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-92" style="font-family: STIXGeneral-Italic;">i</span><span class="mi" id="MathJax-Span-93" style="font-family: STIXGeneral-Italic;">d<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.5px;"></span></span><span class="mo" id="MathJax-Span-94" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-95" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 18.5px; height: 0px;"><span style="position: absolute; clip: rect(36.5px 19360px 51.2px -8.7px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-96" style="font-family: STIXGeneral-Italic;">a</span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 10px;"><span class="mn" id="MathJax-Span-97" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-98" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-99" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 18.5px; height: 0px;"><span style="position: absolute; clip: rect(36.5px 19360px 51.2px -8.7px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-100" style="font-family: STIXGeneral-Italic;">a</span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 10px;"><span class="mn" id="MathJax-Span-101" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-102" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-103" style="font-family: STIXGeneral-Italic; padding-left: 3.6px;">a</span><span class="mi" id="MathJax-Span-104" style="font-family: STIXGeneral-Italic;">t<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.3px;"></span></span><span class="mi" id="MathJax-Span-105" style="font-family: STIXGeneral-Italic;">t<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.3px;"></span></span><span class="mi" id="MathJax-Span-106" style="font-family: STIXGeneral-Italic;">r<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.4px;"></span></span><span class="mi" id="MathJax-Span-107" style="font-family: STIXGeneral-Italic;">s</span><span class="mo" id="MathJax-Span-108" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-109" style="font-family: STIXGeneral-Regular; padding-left: 6px;">⟹</span><span class="mi" id="MathJax-Span-110" style="font-family: STIXGeneral-Regular; padding-left: 6px;">∃</span><span class="mi" id="MathJax-Span-111" style="font-family: STIXGeneral-Italic;">e</span><span class="mo" id="MathJax-Span-112" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-113" style="font-family: STIXGeneral-Italic; padding-left: 3.6px;">g</span><span class="mi" id="MathJax-Span-114" style="font-family: STIXGeneral-Italic;">e</span><span class="mi" id="MathJax-Span-115" style="font-family: STIXGeneral-Italic;">n</span><span class="mo" id="MathJax-Span-116" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-117" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 14.1px; height: 0px;"><span style="position: absolute; clip: rect(34.4px 19360px 51.2px -8.3px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-118" style="font-family: STIXGeneral-Italic;">t<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.3px;"></span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 5.7px;"><span class="mn" id="MathJax-Span-119" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-120" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-121" style="font-family: STIXGeneral-Italic; padding-left: 3.6px;">u</span><span class="mi" id="MathJax-Span-122" style="font-family: STIXGeneral-Italic;">s</span><span class="mi" id="MathJax-Span-123" style="font-family: STIXGeneral-Italic;">e</span><span class="mo" id="MathJax-Span-124" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-125" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 14.1px; height: 0px;"><span style="position: absolute; clip: rect(34.4px 19360px 51.2px -8.3px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-126" style="font-family: STIXGeneral-Italic;">t<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.3px;"></span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 5.7px;"><span class="mn" id="MathJax-Span-127" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-128" style="font-family: STIXGeneral-Regular;">.</span><span class="mtext" id="MathJax-Span-129" style="font-family: STIXGeneral-Regular; padding-left: 3.6px;"> </span><span class="texatom" id="MathJax-Span-130"><span class="mrow" id="MathJax-Span-131"><span class="mi" id="MathJax-Span-132" style="font-family: STIXGeneral-Italic;">w</span><span class="mi" id="MathJax-Span-133" style="font-family: STIXGeneral-Italic;">a</span><span class="mi" id="MathJax-Span-134" style="font-family: STIXGeneral-Italic;">s</span><span class="mi" id="MathJax-Span-135" style="font-family: STIXGeneral-Italic;">G</span><span class="mi" id="MathJax-Span-136" style="font-family: STIXGeneral-Italic;">e</span><span class="mi" id="MathJax-Span-137" style="font-family: STIXGeneral-Italic;">n</span><span class="mi" id="MathJax-Span-138" style="font-family: STIXGeneral-Italic;">e</span><span class="mi" id="MathJax-Span-139" style="font-family: STIXGeneral-Italic;">r</span><span class="mi" id="MathJax-Span-140" style="font-family: STIXGeneral-Italic;">a</span><span class="mi" id="MathJax-Span-141" style="font-family: STIXGeneral-Italic;">t</span><span class="mi" id="MathJax-Span-142" style="font-family: STIXGeneral-Italic;">e</span><span class="mi" id="MathJax-Span-143" style="font-family: STIXGeneral-Italic;">d</span><span class="mi" id="MathJax-Span-144" style="font-family: STIXGeneral-Italic;">B</span><span class="mi" id="MathJax-Span-145" style="font-family: STIXGeneral-Italic;">y</span></span></span><span class="mo" id="MathJax-Span-146" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-147" style="font-family: STIXGeneral-Italic;">g</span><span class="mi" id="MathJax-Span-148" style="font-family: STIXGeneral-Italic;">e</span><span class="mi" id="MathJax-Span-149" style="font-family: STIXGeneral-Italic;">n</span><span class="mo" id="MathJax-Span-150" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-151" style="font-family: STIXGeneral-Italic; padding-left: 3.6px;">e</span><span class="mo" id="MathJax-Span-152" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-153" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 18.5px; height: 0px;"><span style="position: absolute; clip: rect(36.5px 19360px 51.2px -8.7px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-154" style="font-family: STIXGeneral-Italic;">a</span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 10px;"><span class="mn" id="MathJax-Span-155" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-156" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-157" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 14.1px; height: 0px;"><span style="position: absolute; clip: rect(34.4px 19360px 51.2px -8.3px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-158" style="font-family: STIXGeneral-Italic;">t<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.3px;"></span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 5.7px;"><span class="mn" id="MathJax-Span-159" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-160" style="font-family: STIXGeneral-Regular;">,</span><span class="mo" id="MathJax-Span-161" style="font-family: STIXGeneral-Regular; padding-left: 3.6px;">[</span><span class="mo" id="MathJax-Span-162" style="font-family: STIXGeneral-Regular;">]</span><span class="mo" id="MathJax-Span-163" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-164" style="font-family: STIXGeneral-Regular; padding-left: 4.8px;">∧</span><span class="texatom" id="MathJax-Span-165" style="padding-left: 4.8px;"><span class="mrow" id="MathJax-Span-166"><span class="mi" id="MathJax-Span-167" style="font-family: STIXGeneral-Italic;">u</span><span class="mi" id="MathJax-Span-168" style="font-family: STIXGeneral-Italic;">s</span><span class="mi" id="MathJax-Span-169" style="font-family: STIXGeneral-Italic;">e</span><span class="mi" id="MathJax-Span-170" style="font-family: STIXGeneral-Italic;">d</span></span></span><span class="mo" id="MathJax-Span-171" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-172" style="font-family: STIXGeneral-Italic;">u</span><span class="mi" id="MathJax-Span-173" style="font-family: STIXGeneral-Italic;">s</span><span class="mi" id="MathJax-Span-174" style="font-family: STIXGeneral-Italic;">e</span><span class="mo" id="MathJax-Span-175" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-176" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 18.5px; height: 0px;"><span style="position: absolute; clip: rect(36.5px 19360px 51.2px -8.7px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-177" style="font-family: STIXGeneral-Italic;">a</span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 10px;"><span class="mn" id="MathJax-Span-178" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-179" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-180" style="font-family: STIXGeneral-Italic; padding-left: 3.6px;">e</span><span class="mo" id="MathJax-Span-181" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-182" style="padding-left: 3.6px;"><span style="display: inline-block; position: relative; width: 14.1px; height: 0px;"><span style="position: absolute; clip: rect(34.4px 19360px 51.2px -8.3px); top: -48px; left: 0px;"><span class="mi" id="MathJax-Span-183" style="font-family: STIXGeneral-Italic;">t<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.3px;"></span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span><span style="position: absolute; top: -39.1px; left: 5.7px;"><span class="mn" id="MathJax-Span-184" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 42px;"></span></span></span></span><span class="mo" id="MathJax-Span-185" style="font-family: STIXGeneral-Regular;">,</span><span class="mo" id="MathJax-Span-186" style="font-family: STIXGeneral-Regular; padding-left: 3.6px;">[</span><span class="mo" id="MathJax-Span-187" style="font-family: STIXGeneral-Regular;">]</span><span class="mo" id="MathJax-Span-188" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 48px;"></span></span></span><span style="border-left-width: 0px; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 19.2px; vertical-align: -5px;"></span></span></nobr></span><script type="math/tex" id="MathJax-Element-10">\forall id,a_2,a_1,attrs.~ \wasInformedBy(id,a_2,a_1,attrs) \Longrightarrow \exists e,gen,t_1,use,t_2.~\wasGeneratedBy(gen,e,a_1,t_1,[]) \wedge \used(use,a_2,e,t_2,[])</script></div>
+
+</div>
+
+
+<div id="inferences" class="section">
+<!--OddPage--><h2><span class="secno">3. </span>Inferences</h2>
+
+<div class="inference" id="communication-generation-use-inference"><div class="ruleTitle"><a class="internalDFN" href="#communication-generation-use-inference">Inference 2 (communication-generation-use-inference)</a></div><span class="math">∀ id,a<sub>2</sub>,a<sub>1</sub>,attrs. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs) ⟹ ∃ e,gen,t<sub>1</sub>,use,t<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,[]) ∧ used(use,a<sub>2</sub>,e,t<sub>2</sub>,[])</span></div>
+<div class="inference" id="generation-use-communication-inference"><div class="ruleTitle"><a class="internalDFN" href="#generation-use-communication-inference">Inference 3 (generation-use-communication-inference)</a></div><span class="math">∀ gen,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>,id<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,attrs<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>) ∧ used(id<sub>2</sub>,a<sub>2</sub>,e,t<sub>2</sub>,attrs<sub>2</sub>) ⟹ ∃ id. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,[])</span></div>
+<div class="inference" id="entity-generation-invalidation-inference"><div class="ruleTitle"><a class="internalDFN" href="#entity-generation-invalidation-inference">Inference 4 (entity-generation-invalidation-inference)</a></div><span class="math">∀ gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>,id<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,attrs<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>) ∧ used(id<sub>2</sub>,a<sub>2</sub>,e,t<sub>2</sub>,attrs<sub>2</sub>) ⟹ ∃ id. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,[])</span></div>
+<div class="inference" id="activity-start-end-inference"><div class="ruleTitle"><a class="internalDFN" href="#activity-start-end-inference">Inference 5 (activity-start-end-inference)</a></div><span class="math">∀ a,t<sub>1</sub>,t<sub>2</sub>,attrs. activity(a,t<sub>1</sub>,t<sub>2</sub>,attrs) ⟹ ∃ start,e<sub>1</sub>,a<sub>1</sub>,end,a<sub>2</sub>,e<sub>2</sub>. wasStartedBy(start,a,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[]) ∧ wasEndedBy(end,a,e<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,[])</span></div>
+<div class="inference" id="wasStartedBy-inference"><div class="ruleTitle"><a class="internalDFN" href="#wasStartedBy-inference">Inference 6 (wasStartedBy-inference)</a></div><span class="math">∀ id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs. wasStartedBy(id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs) ⟹ ∃ gen,t<sub>1</sub>. wasGeneratedBy(gen,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[])</span></div>
+<div class="inference" id="wasEndedBy-inference"><div class="ruleTitle"><a class="internalDFN" href="#wasEndedBy-inference">Inference 7 (wasEndedBy-inference)</a></div><span class="math">∀ id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs. wasEndedBy(id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs) ⟹ ∃ gen,t<sub>1</sub>. wasGeneratedBy(gen,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[])</span></div>
+<div class="inference" id="derivation-generation-use-inference"><div class="ruleTitle"><a class="internalDFN" href="#derivation-generation-use-inference">Inference 8 (derivation-generation-use-inference)</a></div>In this inference, none of <em>a</em>, <em>gen<sub>2</sub></em> or <em>use_1</em> can be placeholders -.<span class="math">∀ id,e<sub>2</sub>,e<sub>1</sub>,a,gen<sub>2</sub>,use<sub>1</sub>,attrs. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,gen<sub>2</sub>,use<sub>1</sub>,attrs) ⟹ ∃ s,t<sub>1</sub>,t<sub>2</sub>. used(use<sub>1</sub>,a,e<sub>1</sub>,t<sub>1</sub>,[]) ∧ wasGeneratedBy(gen<sub>2</sub>,e<sub>2</sub>,a,t<sub>2</sub>,[])</span></div>
+<div class="inference" id="revision-is-alternate-inference"><div class="ruleTitle"><a class="internalDFN" href="#revision-is-alternate-inference">Inference 9 (revision-is-alternate-inference)</a></div>In this inference, any of <em>a</em>, <em>g</em> or <em>u</em> may be placeholders.<span class="math">∀ id,e<sub>1</sub>,e<sub>2</sub>,a,g,u. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,.(prov:type = prov:Revision,[])) ⟹ alternateOf(e<sub>2</sub>,e<sub>1</sub>)</span></div>
+<div class="inference" id="attribution-inference"><div class="ruleTitle"><a class="internalDFN" href="#attribution-inference">Inference 10 (attribution-inference)</a></div><span class="math">∀ att,e,ag,attrs. wasAttributedTo(att,e,ag,attrs) ⟹ ∃ a,t,gen,assoc,pl. wasGeneratedBy(gen,e,a,t,[]) ∧ wasAssociatedWith(assoc,a,ag,pl,[])</span></div>
+<div class="inference" id="delegation-inference"><div class="ruleTitle"><a class="internalDFN" href="#delegation-inference">Inference 11 (delegation-inference)</a></div><span class="math">∀ id,ag<sub>1</sub>,ag<sub>2</sub>,a,attrs. actedOnBehalfOf(id,ag<sub>1</sub>,ag<sub>2</sub>,a,attrs) ⟹ ∃ id<sub>1</sub>,pl<sub>1</sub>,id<sub>2</sub>,pl<sub>2</sub>. wasAssociatedWith(id<sub>1</sub>,a,ag<sub>1</sub>,pl<sub>1</sub>,[]) ∧ wasAssociatedWith(id<sub>2</sub>,a,ag<sub>2</sub>,pl<sub>2</sub>,[])</span></div>
+<div class="inference" id="influence-inference"><div class="ruleTitle"><a class="internalDFN" href="#influence-inference">Inference 12 (influence-inference)</a></div><ol><li><span class="math">∀ id,e,a,t,attrs. wasGeneratedBy(id,e,a,t,attrs) ⟹ wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">∀ id,a,e,t,attrs. used(id,a,e,t,attrs) ⟹ wasInfluencedBy(id,a,e,attrs)</span></li><li><span class="math">∀ id,a<sub>2</sub>,a<sub>1</sub>,attrs. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs) ⟹ wasInfluencedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs)</span></li><li><span class="math">∀ id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs. wasStartedBy(id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs) ⟹ wasInfluencedBy(id,a<sub>2</sub>,e,attrs)</span></li><li><span class="math">∀ id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs. wasEndedBy(id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs) ⟹ wasInfluencedBy(id,a<sub>2</sub>,e,attrs)</span></li><li><span class="math">∀ id,e,a,t,attrs. wasInvalidatedBy(id,e,a,t,attrs) ⟹ wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">∀ id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,attrs. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,attrs) ⟹ wasInfluencedBy(id,e<sub>2</sub>,e<sub>1</sub>,attrs)</span></li><li>In this rule, <em>a</em>, <em>g</em>, <em>u</em> may be placeholders -.<span class="math">∀ id,e,ag,attrs. wasAttributedTo(id,e,ag,attrs) ⟹ wasInfluencedBy(id,e,ag,attrs)</span></li><li>In this rule, <em>pl</em> may be a placeholder -.<span class="math">∀ id,a,ag,pl,attrs. wasAssociatedWith(id,a,ag,pl,attrs) ⟹ wasInfluencedBy(id,a,ag,attrs)</span></li><li><span class="math">∀ id,ag<sub>2</sub>,ag<sub>1</sub>,a,attrs. actedOnBehalfOf(id,ag<sub>2</sub>,ag<sub>1</sub>,a,attrs) ⟹ wasInfluencedBy(id,ag<sub>2</sub>,ag<sub>1</sub>,attrs)</span></li></ol></div>
+<div class="inference" id="alternate-reflexive"><div class="ruleTitle"><a class="internalDFN" href="#alternate-reflexive">Inference 13 (alternate-reflexive)</a></div><span class="math">∀ e. entity(e) ⟹ alternateOf(e,e)</span></div>
+<div class="inference" id="alternate-transitive"><div class="ruleTitle"><a class="internalDFN" href="#alternate-transitive">Inference 14 (alternate-transitive)</a></div><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>,e<sub>3</sub>. alternateOf(e<sub>1</sub>,e<sub>2</sub>) ∧ alternateOf(e<sub>2</sub>,e<sub>3</sub>) ⟹ alternateOf(e<sub>1</sub>,e<sub>3</sub>)</span></div>
+<div class="inference" id="alternate-symmetric"><div class="ruleTitle"><a class="internalDFN" href="#alternate-symmetric">Inference 15 (alternate-symmetric)</a></div><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>. alternateOf(e<sub>1</sub>,e<sub>2</sub>) ⟹ alternateOf(e<sub>2</sub>,e<sub>1</sub>)</span></div>
+<div class="inference" id="specialization-transitive"><div class="ruleTitle"><a class="internalDFN" href="#specialization-transitive">Inference 16 (specialization-transitive)</a></div><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>,e<sub>3</sub>. specializationOf(e<sub>1</sub>,e<sub>2</sub>) ∧ specializationOf(e<sub>2</sub>,e<sub>3</sub>) ⟹ specializationOf(e<sub>1</sub>,e<sub>3</sub>)</span></div>
+<div class="inference" id="specialization-alternate-inference"><div class="ruleTitle"><a class="internalDFN" href="#specialization-alternate-inference">Inference 17 (specialization-alternate-inference)</a></div><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>. specializationOf(e<sub>1</sub>,e<sub>2</sub>) ⟹ alternateOf(e<sub>1</sub>,e<sub>2</sub>)</span></div>
+<div class="inference" id="specialization-attributes-inference"><div class="ruleTitle"><a class="internalDFN" href="#specialization-attributes-inference">Inference 18 (specialization-attributes-inference)</a></div><span class="math">∀ e<sub>1</sub>,attrs,e<sub>2</sub>. entity(e<sub>1</sub>,attrs) ∧ specializationOf(e<sub>2</sub>,e<sub>1</sub>) ⟹ entity(e<sub>2</sub>,attrs)</span></div>
+<div class="constraint" id="membership-empty-collection"><div class="ruleTitle"><a class="internalDFN" href="#membership-empty-collection">Constraint 19 (membership-empty-collection)</a></div><span class="math">∀ c,e. hasMember(c,e) ∧ prov:EmptyCollection \in typeOf(c) ⟹ False</span></div>
+
+</div>
+
+<div class="appendix section" id="acknowledgements">
+ <!--OddPage--><h2><span class="secno">A. </span>Acknowledgements</h2>
+ <p>
+
+This document has been produced by the PROV Working Group, and its contents reflect extensive discussion within the Working Group as a whole. The editors extend special thanks to Ivan Herman (<acronym title="World Wide Web Consortium">W3C</acronym>/<acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym>), Paul Groth, Tim Lebo, Simon Miles, Stian Soiland-Reyes, for their thorough reviews.
+ </p>
+
+<p>
+Members of the PROV Working Group at the time of publication of this document were:
+
+Ilkay Altintas (Invited expert),
+Reza B'Far (Oracle Corporation),
+Khalid Belhajjame (University of Manchester),
+James Cheney (University of Edinburgh, School of Informatics),
+Sam Coppens (IBBT),
+David Corsar (University of Aberdeen, Computing Science),
+Stephen Cresswell (The National Archives),
+Tom De Nies (IBBT),
+Helena Deus (DERI Galway at the National University of Ireland, Galway, Ireland),
+Simon Dobson (Invited expert),
+Martin Doerr (Foundation for Research and Technology - Hellas(FORTH)),
+Kai Eckert (Invited expert),
+Jean-Pierre EVAIN (European Broadcasting Union, EBU-UER),
+James Frew (Invited expert),
+Irini Fundulaki (Foundation for Research and Technology - Hellas(FORTH)),
+Daniel Garijo (Universidad Politécnica de Madrid),
+Yolanda Gil (Invited expert),
+Ryan Golden (Oracle Corporation),
+Paul Groth (Vrije Universiteit),
+Olaf Hartig (Invited expert),
+David Hau (National Cancer Institute, NCI),
+Sandro Hawke (<acronym title="World Wide Web Consortium">W3C</acronym>/<acronym title="Massachusetts Institute of Technology">MIT</acronym>),
+Jörn Hees (German Research Center for Artificial Intelligence (DFKI) Gmbh),
+Ivan Herman, (<acronym title="World Wide Web Consortium">W3C</acronym>/<acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym>),
+Ralph Hodgson (TopQuadrant),
+Hook Hua (Invited expert),
+Trung Dong Huynh (University of Southampton),
+Graham Klyne (University of Oxford),
+Michael Lang (Revelytix, Inc.),
+Timothy Lebo (Rensselaer Polytechnic Institute),
+James McCusker (Rensselaer Polytechnic Institute),
+Deborah McGuinness (Rensselaer Polytechnic Institute),
+Simon Miles (Invited expert),
+Paolo Missier (School of Computing Science, Newcastle university),
+Luc Moreau (University of Southampton),
+James Myers (Rensselaer Polytechnic Institute),
+Vinh Nguyen (Wright State University),
+Edoardo Pignotti (University of Aberdeen, Computing Science),
+Paulo da Silva Pinheiro (Rensselaer Polytechnic Institute),
+Carl Reed (Open Geospatial Consortium),
+Adam Retter (Invited Expert),
+Christine Runnegar (Invited expert),
+Satya Sahoo (Invited expert),
+David Schaengold (Revelytix, Inc.),
+Daniel Schutzer (FSTC, Financial Services Technology Consortium),
+Yogesh Simmhan (Invited expert),
+Stian Soiland-Reyes (University of Manchester),
+Eric Stephan (Pacific Northwest National Laboratory),
+Linda Stewart (The National Archives),
+Ed Summers (Library of Congress),
+Maria Theodoridou (Foundation for Research and Technology - Hellas(FORTH)),
+Ted Thibodeau (OpenLink Software Inc.),
+Curt Tilmes (National Aeronautics and Space Administration),
+Craig Trim (IBM Corporation),
+Stephan Zednik (Rensselaer Polytechnic Institute),
+Jun Zhao (University of Oxford),
+Yuting Zhao (University of Aberdeen, Computing Science).
+</p>
+ </div>
+
+
+
+<!-- LocalWords: px DM RL RDF AQ SEM SOTD Definitional wasInformedBy attrs ag
+ -->
+<!-- LocalWords: wasGeneratedBy wasStartedBy gAttr sAttr wasAttributedTo attr
+ -->
+<!-- LocalWords: wasAssociatedWith dAttrs gAttrs wasDerivedFrom uAttrs eAttrs
+ -->
+<!-- LocalWords: wasRevisionOf specializationOf wasQuotedFrom Traceability WD
+ -->
+<!-- LocalWords: tracedTo aAttr actedOnBehalfOf rAttr traceability TODO xsd
+ -->
+<!-- LocalWords: alternateOf wasEndedBy Lamport's timeline subfigure memberOf
+ -->
+<!-- LocalWords: wasStartedByAgent wasAttributedWith derivedByInsertionFrom
+ -->
+<!-- LocalWords: QName derivedByRemovalFrom EmptyCollection wasVersionOf dm
+ -->
+<!-- LocalWords: RecsWD formedness workflow ness operability CSP versa hyp YY
+ -->
+<!-- LocalWords: disambiguating lifecycle conformant minimalistic Lamport fo
+ -->
+<!-- LocalWords: reflexivity antisymmetry timelines timespan WG concl inv TBD
+ -->
+<!-- LocalWords: continuant occurrent modalities toyota womanInRedDress provn
+ -->
+<!-- LocalWords: customerInChairAt manWithGlasses customerInChair irreflexive
+ -->
+<!-- LocalWords: wasStartedByActivity antisymmetric wasInvalidatedBy stmt CHR
+ -->
+<!-- LocalWords: DBCONSTRAINTS formalisms URIs wasInfluencedBy definitional
+ -->
+<!-- LocalWords: wasInvalidated th nontermination implementability att evt
+ -->
+<!-- LocalWords: Irreflexivity mentionOf preorder equalities unsatisfiable De
+ -->
+<!-- LocalWords: Lebo subfigures pre del irreflexivity superproperty typeOf
+ -->
+<!-- LocalWords: disjointness inferrable subtyping subtype subtypes hadMember
+ -->
+<!-- LocalWords: hasMember toplevel sameAs tuple acyclicity isomorphism IRI
+ -->
+<!-- LocalWords: endBundle typeof equational acyclic invertible procedurally
+ -->
+<!-- LocalWords: implementers multi unifier ERCIM Groth Stian Soiland Ilkay
+ -->
+<!-- LocalWords: Altintas Reza B'Far Belhajjame Informatics Coppens IBBT Nies
+ -->
+<!-- LocalWords: Corsar Cresswell Deus DERI Galway satisfiable namespace Kai
+ -->
+<!-- LocalWords: endDocument Dobson Doerr Hellas Eckert EVAIN EBU UER Frew de
+ -->
+<!-- LocalWords: Irini Fundulaki Garijo Universidad Politécnica Vrije Hartig
+ -->
+<!-- LocalWords: Universiteit Hau NCI Sandro Hawke Jörn Hees DFKI Gmbh Hua da
+ -->
+<!-- LocalWords: Hodgson TopQuadrant Trung Huynh Klyne Revelytix Rensselaer
+ -->
+<!-- LocalWords: McCusker McGuinness Paolo Missier Luc Moreau Vinh Edoardo
+ -->
+<!-- LocalWords: Pignotti Paulo Pinheiro Geospatial Retter Runnegar Satya
+ -->
+<!-- LocalWords: Sahoo Schaengold Schutzer FSTC Yogesh Simmhan Theodoridou
+ -->
+<!-- LocalWords: Thibodeau OpenLink Tilmes Zednik Zhao Yuting
+ -->
+<div id="MathJax_Font_Test" style="position: absolute; visibility: hidden; top: 0px; left: 0px; width: auto; padding: 0px; border: 0px; margin: 0px; white-space: nowrap; text-align: left; text-indent: 0px; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; font-size: 40px; font-weight: normal; font-style: normal; font-family: STIXSizeOneSym, sans-serif;">() {} []</div><div id="references" class="appendix section"><!--OddPage--><h2><span class="secno">B. </span>References</h2><div id="normative-references" class="section"><h3><span class="secno">B.1 </span>Normative references</h3><dl class="bibliography"><dt id="bib-PROV-DM">[PROV-DM]</dt><dd>Luc Moreau; Paolo Missier; eds. <a href="http://www.w3.org/TR/2012/CR-prov-dm-20121211/"><cite>PROV-DM: The PROV Data Model</cite></a>. 11 December 2012, W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/2012/CR-prov-dm-20121211/">http://www.w3.org/TR/2012/CR-prov-dm-20121211/</a>
+</dd><dt id="bib-PROV-N">[PROV-N]</dt><dd>Luc Moreau; Paolo Missier; eds. <a href="http://www.w3.org/TR/2012/CR-prov-n-20121211/"><cite>PROV-N: The Provenance Notation</cite></a>. 11 December 2012, W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/2012/CR-prov-n-20121211/">http://www.w3.org/TR/2012/CR-prov-n-20121211/</a>
+</dd><dt id="bib-PROV-O">[PROV-O]</dt><dd>Timothy Lebo; Satya Sahoo; Deborah McGuinness; eds. <a href="http://www.w3.org/TR/2012/CR-prov-o-20121211/"><cite>PROV-O: The PROV Ontology</cite></a>. 11 December 2012, W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/2012/CR-prov-o-20121211/">http://www.w3.org/TR/2012/CR-prov-o-20121211/</a>
+</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd>S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
+</dd></dl></div><div id="informative-references" class="section"><h3><span class="secno">B.2 </span>Informative references</h3><dl class="bibliography"><dt id="bib-PROV-AQ">[PROV-AQ]</dt><dd>Graham Klyne; Paul Groth; eds. <a href="http://www.w3.org/TR/2012/WD-prov-aq-20120619/"><cite>Provenance Access and Query</cite></a>. 19 June 2012, Working Draft. URL: <a href="http://www.w3.org/TR/2012/WD-prov-aq-20120619/">http://www.w3.org/TR/2012/WD-prov-aq-20120619/</a>
+</dd><dt id="bib-PROV-OVERVIEW">[PROV-OVERVIEW]</dt><dd>Paul Groth; Luc Moreau; eds. <a href="http://www.w3.org/TR/2012/WD-prov-overview-20121211/"><cite>PROV-OVERVIEW: An Overview of the PROV Family of Documents</cite></a>. 11 December 2012, Working Draft. URL: <a href="http://www.w3.org/TR/2012/WD-prov-overview-20121211/">http://www.w3.org/TR/2012/WD-prov-overview-20121211/</a>
+</dd><dt id="bib-PROV-PRIMER">[PROV-PRIMER]</dt><dd>Yolanda Gil; Simon Miles; eds. <a href="http://www.w3.org/TR/2012/WD-prov-primer-20121211/"><cite>PROV Model Primer</cite></a>. 11 December 2012, Working Draft. URL: <a href="http://www.w3.org/TR/2012/WD-prov-primer-20121211/">http://www.w3.org/TR/2012/WD-prov-primer-20121211/</a>
+</dd><dt id="bib-PROV-XML">[PROV-XML]</dt><dd>Hook Hua; Curt Tilmes; Stephan Zednik; eds. <a href="http://www.w3.org/TR/2012/WD-prov-xml-20121211/"><cite>PROV-XML: The PROV XML Schema</cite></a>. 11 December 2012, Working Draft. URL: <a href="http://www.w3.org/TR/2012/WD-prov-xml-20121211/">http://www.w3.org/TR/2012/WD-prov-xml-20121211/</a>
+</dd></dl></div></div></body></html>
\ No newline at end of file
--- a/semantics/prov-sem.html Mon Dec 17 09:42:40 2012 -0500
+++ b/semantics/prov-sem.html Mon Dec 17 09:43:00 2012 -0500
@@ -1,14 +1,9 @@
-<!DOCTYPE html>
-
+<?xml version="1.0" encoding="UTF-8"?>
<html><head>
<title>Semantics of the Provenance Data Model</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <!--
- === NOTA BENE ===
- For the three scripts below, if your spec resides on dev.w3 you can check them
- out in the same tree and use relative links so that they'll work offline,
- -->
-<!-- PM -->
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
+
+
<style type="text/css">
.note { font-size:small; margin-left:50px }
@@ -535,367 +530,28 @@
</style>
<script src="http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js" class="remove"></script>
-<!-- <script src="http://www.w3.org/Tools/respec/respec-w3c-common" class="remove" async></script> -->
+
<script src="http://www.w3.org/2007/OWL/toggles.js" class="remove"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" class="remove"></script>
-
- <script class="remove">
-
-function setColoredDiffs () {
- $('dt').each(function(index) {
- var content=$(this).text();
- if (content== "Previous version:") {
- console.log( "content " + content);
- $(this).next().append(" ").append($('<a>').attr('href','diff-c.html').append("(colored-coded diff)"));
- }
- })
-}
-
-
- function updateRules() {
- var count=1;
- $('.constraint,.definition,.inference').each(function(index) {
-
- var myid=$(this).attr('id');
- var mycount=count++;
-
- if (myid==undefined) {
- myid='rule_' + mycount;
- $(this).attr('id',myid);
- }
-
- var myClass=$(this).attr('class');
-
- var myTitle=capitaliseFirstLetter(myClass) + ' ' + mycount + ' (' + myid + ')';
-
- $(this).attr('data-count', mycount)
- .attr('data-title',myTitle).prepend($('<div>').addClass('ruleTitle')
- .append($('<a>').addClass('internalDFN').attr('href','#'+myid).append(myTitle)));
-
- //console.log( "rule for " + myid + " " + mycount);
-
- });
-
- $('.constraint-example,.definition-example,.inference-example').each(function(index) {
-
- var myid=$(this).attr('id');
- var mycount='NNN';
-
- if (myid==undefined) {
- myid='rule_' + mycount;
- $(this).attr('id',myid);
- }
-
- var myClass=$(this).attr('class');
-
- var myTitle=capitaliseFirstLetter(myClass) + ' ' + mycount + ' (' + myid + ')';
-
- $(this).attr('data-count', mycount)
- .attr('data-title',myTitle).prepend($('<div>').addClass('ruleTitle')
- .append($('<a>').addClass('internalDFN').attr('href','#'+myid).append(myTitle)));
-
- //console.log( "rule for " + myid + " " + mycount);
-
- });
- }
-
- function capitaliseFirstLetter(string)
- {
- return string.charAt(0).toUpperCase() + string.slice(1);
- }
-
-
- function updateRulesRefs() {
- $('.rule-ref').each(function(index) {
-
- myhref=$(this).attr('href');
-
- //console.log( "example ref for " + myhref);
-
- mytitle=$(myhref).attr('data-title');
-
- console.log( "rule ref for " + myhref + " " + mytitle);
-
- $(this).children('span').replaceWith(function(){return $('<span>').append(mytitle)});
-
- });
-
- $('.rule-text').each(function(index) {
-
- myhref=$(this).attr('href');
- $(this).attr('href', myhref + '_text');
-
- //console.log( "example ref for " + myhref);
-
- mytitle=$(myhref).attr('data-title');
-
- console.log( "rule ref for " + myhref + " " + mytitle);
-
- $(this).children('span').replaceWith(function(){return $('<span>').append(mytitle)});
-
- });
- }
- function updateExamples() {
- var count=1;
- $('.anexample').each(function(index) {
-
- var myid=$(this).attr('id');
- var mycount=count++;
-
- if (myid==undefined) {
- myid='example_' + mycount;
- $(this).attr('id',myid);
- }
-
-
- $(this).attr('data-count', mycount).prepend($('<div>').addClass('anexampleTitle')
- .append($('<a>').addClass('internalDFN').attr('href','#'+myid).append("Example " + mycount)));
-
- //console.log( "example for " + myid + " " + mycount);
-
- });
- }
-
-
- function updateExamplesRefs() {
- $('.anexample-ref').each(function(index) {
-
- myhref=$(this).attr('href');
-
- //console.log( "example ref for " + myhref);
-
- mycount=$(myhref).attr('data-count');
-
- //console.log( "example ref for " + myhref + " " + mycount);
-
- $(this).children('span').replaceWith(function(){return $('<span>').append("Example " + mycount)});
-
- });
- };
-
-
- // function to replace figcaption since not allowed by prov rules, and not transformed by respec.js
- function updateFigCaptions() {
- var figureCount=1;
-
- $('figcaption').each(function(index) {
-
- var myid=$(this).attr('id');
- var mycount=figureCount++;
-
- $(this).replaceWith(function(){return $('<span>').addClass('figcaption').attr('data-count', mycount).attr('id',myid).append("Figure " + mycount)
-.append($('<sup>').append($('<a>').addClass('internalDFN').attr('href','#'+myid).append($('<span>').addClass('diamond').append(" ◊:")))).append(" ")
-.append($(this).contents())});
- });
- }
-
- // function to replace figure since not allowed by prov rules, and not transformed by respec.js
- function updateFigures() {
- $('figure').each(function(index) {
-
- var myid=$(this).attr('id');
- var mystyle=$(this).attr('style');
-
- console.log( "figure " + myid + " " + $(this).contents());
-
- $(this).replaceWith(function(){
- var aNewElement=$('<span>').addClass('figure').append($(this).contents());
- if (myid) {
- aNewElement.attr('id',myid)
- }
- if (mystyle) {
- aNewElement.attr('style',mystyle)
- }
- return aNewElement });
-
-
-
- // $(this).replaceWith(function(){return $('<span>').addClass('figure').attr('id',myid).attr('style',mystyle).append($(this).contents())});
- console.log( "figure " + myid);
- });
- }
-
-
- function removeDataAttributes() {
-
-
- $('.anexample').each(function(index) {
- $(this).removeAttr('data-count');
- });
-
- $('caption').each(function(index) {
- $(this).removeAttr('data-count');
- });
-
- $('.figcaption').each(function(index) {
- $(this).removeAttr('data-count');
- });
-
- $('.definition').each(function(index) {
- $(this).removeAttr('data-count');
- $(this).removeAttr('data-title');
- });
-
- $('.inference').each(function(index) {
- $(this).removeAttr('data-count');
- $(this).removeAttr('data-title');
- });
-
- $('.constraint').each(function(index) {
- $(this).removeAttr('data-count');
- $(this).removeAttr('data-title');
- });
-
- $('.inference-example').each(function(index) {
- $(this).removeAttr('data-count');
- $(this).removeAttr('data-title');
- });
-
- $('.constraint-example').each(function(index) {
- $(this).removeAttr('data-count');
- $(this).removeAttr('data-title');
- });
-
- $('.definition-example').each(function(index) {
- $(this).removeAttr('data-count');
- $(this).removeAttr('data-title');
- });
-}
-
- $(document).ready(function(){
- updateRules();
- updateRulesRefs();
- updateFigCaptions();
- if (typeof String.prototype.startsWith != 'function') {
- String.prototype.startsWith = function (str) {
- return this.indexOf(str) == 0;
- };
- }
- if (typeof String.prototype.contains != 'function') {
- String.prototype.contains = function (str) {
- return this.indexOf(str) >= 0;
- };
- }
-
-
-
- });
+ <script type="text/javascript" class="remove" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
+ </script>
+<script type="text/x-mathjax-config" class="remove">
+MathJax.Hub.Config({
+ tex2jax: {
+ inlineMath: [ ['$','$'], ["\\(","\\)"] ],
+ displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
+ processEscapes: true
+ },
+ });
+</script>
+ <script class="remove">
+//
</script>
<script src="../model/provbib.js" class="remove"></script>
<script class="remove">
-
-
- var addExtraReferences = function() {
- for (var k in extraReferences)
- berjon.biblio[k] = extraReferences[k];
- };
-
- var extraReferences = {
- "CHR":
- "Thom Frühwirth. "+
- "<a href=\"http://constraint-handling-rules.org/\"><cite>Constraint Handling Rules</cite></a>."+
- " Cambridge University Press "+
- " URL: <a href=\"http://constraint-handling-rules.org/\">http://constraint-handling-rules.org/</a>",
- "CLOCK":
- "L. Lamport. "+
- "<a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\"><cite>Time, clocks, and the ordering of events in a distributed system</cite></a>."+
- " Communications of the ACM 21 (7): 558–565. 1978. "+
- "URL: <a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\">http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf</a> " +
- "DOI: doi:10.1145/359545.359563.",
- "CSP":
- "Hoare, C. A. R. "+
- "<a href=\"http://www.usingcsp.com/cspbook.pdf\"><cite>Communicating Sequential Processes</cite></a>."+
- "Prentice-Hall. 1985"+
- "URL: <a href=\"http://www.usingcsp.com/cspbook.pdf\">http://www.usingcsp.com/cspbook.pdf</a>",
- "DBCONSTRAINTS":
- " Ronald Fagin; Phokion G. Kolaitis; Renée J. Miller; Lucian Popa. "+
- " <a href=\"http://dx.doi.org/10.1016/j.tcs.2004.10.033\"><cite>Data exchange: Semantics and query answering</cite></a>. Theoretical computer science 336(1):89-124 "+
- " Elsevier "+
- " URL: <a href=\"http://dx.doi.org/10.1016/j.tcs.2004.10.033\">http://dx.doi.org/10.1016/j.tcs.2004.10.033</a>",
- "Logic":
- "W. E. Johnson. "+
- "<a href=\"http://www.ditext.com/johnson/intro-3.html\"><cite>Logic: Part III</cite></a>."+
- "1924. "+
- "URL: <a href=\"http://www.ditext.com/johnson/intro-3.html\">http://www.ditext.com/johnson/intro-3.html</a>",
-
- "RDF":
- "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>",
-};
- var respecConfig = {
- // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
- specStatus: "ED",
-
- // the specification's short name, as in http://www.w3.org/TR/short-name/
- shortName: "prov-sem",
-
- // if your specification has a subtitle that goes below the main
- // formal title, define it here
- //subtitle : "<a href=\"diff-c.html\">Changes</a> since Last Call Working Draft (LC)",
-
-
-
- // if you wish the publication date to be other than today, set this
- // publishDate: "",
-
- // if the specification's copyright date is a range of years, specify
- // the start date here:
- copyrightStart: "2012",
-
- // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
- // and its maturity status
-
- // if there a publicly available Editor's Draft, this is the link
- edDraftURI: "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-sem.html",
-
-
-
-
- // if this is a LCWD, uncomment and set the end of its review period
-
- // if you want to have extra CSS, append them to this list
- // it is recommended that the respec.css stylesheet be kept
- //extraCSS: ["http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css", "./extra.css"],
-
- // editors, add as many as you like
- // only "name" is required
- editors: [
- { name: "James Cheney", url:
- "http://homepages.inf.ed.ac.uk/jcheney", company:
- "University of Edinburgh" },
- ],
-
- // authors, add as many as you like.
- // This is optional, uncomment if you have authors as well as editors.
- // only "name" is required. Same format as editors.
-
-//authors: [] ,
-
- // name of the WG
- wg: "Provenance Working Group",
-
- // URI of the public WG page
- wgURI: "http://www.w3.org/2011/prov/",
-
- // name (with the @w3c.org) of the public mailing to which comments are due
- wgPublicList: "public-prov-comments",
-
- // URI of the patent status for this WG, for Rec-track documents
- // !!!! IMPORTANT !!!!
- // This is important for Rec-track documents, do not copy a patent URI from a random
- // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
- // Team Contact.
- wgPatentURI: "http://www.w3.org/2004/01/pp-impl/46974/status",
-
- // Add extraReferences to bibliography database
- preProcess: [addExtraReferences, addProvReferences],
-
- postProcess: [updateFigures, removeDataAttributes, checkLinksToW3CReports, setColoredDiffs],
- };
+//
</script>
</head>
<body>
@@ -924,8 +580,7 @@
<li> <a href="http://www.w3.org/TR/2012/CR-prov-o-20121211/">PROV-O</a> (Recommendation), the PROV ontology, an OWL2 ontology allowing the mapping of PROV to RDF [[!PROV-O]];</li>
<li> <a href="http://www.w3.org/TR/2012/CR-prov-dm-20121211/">PROV-DM</a> (Recommendation), the PROV data model for provenance [[!PROV-DM]];</li>
<li> <a href="http://www.w3.org/TR/2012/CR-prov-n-20121211/">PROV-N</a> (Recommendation), a notation for provenance aimed at human consumption [[!PROV-N]];</li>
-<li> <a
-href="http://www.w3.org/TR/2012/CR-prov-constraints-20121211/">PROV-CONSTRAINTS</a>
+<li> <a href="http://www.w3.org/TR/2012/CR-prov-constraints-20121211/">PROV-CONSTRAINTS</a>
(Recommendation), a set of constraints applying to the PROV data model;</li>
<li> <a href="http://www.w3.org/TR/2012/WD-prov-aq-20120619/">PROV-AQ</a> (Note), the mechanisms for accessing and querying provenance [[PROV-AQ]]; </li>
<li> <a href="http://www.w3.org/TR/2012/WD-prov-xml-20121211/">PROV-XML</a> (Note), an XML schema for the PROV data model [[PROV-XML]].</li>
@@ -946,8 +601,7 @@
<section id="introduction">
- <h2>Introduction<br>
-</h2>
+ <h2>Introduction</h2>
<p>
Provenance is a record that describes the people, institutions, entities, and activities involved in producing, influencing, or delivering a piece of data or a thing.
@@ -969,8 +623,7 @@
<p>In this document, logical formulas contain variables written as
lower-case identifiers. Some of these variables are written
- beginning with the underscore character <span
- class="name">_</span>, by convention, to indicate that they
+ beginning with the underscore character <span class="name">_</span>, by convention, to indicate that they
appear only once in the formula. Such variables are
provided merely as an aid to the reader. </p>
@@ -1002,27 +655,66 @@
</section>
</section>
+<section id="test">
+<h2>MathJax test</h2>
+
+\(\newcommand{\wasDerivedFrom}{\mathit{wasDerivedFrom}}\)
+\(\newcommand{\wasInformedBy}{\mathit{wasInformedBy}}\)
+\(\newcommand{\wasGeneratedBy}{\mathit{wasGeneratedBy}}\)
+\(\newcommand{\used}{\mathit{used}}\)
+\(\newcommand{\entity}{\mathit{entity}}\)
+\(\newcommand{\activity}{\mathit{activity}}\)
+
+<p>When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are
+</p>
+$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
+
+<div class="inference" id="communication-generation-use-inference_test">
+\(\forall id,a_2,a_1,attrs.~ \wasInformedBy(id,a_2,a_1,attrs) \Longrightarrow \exists e,gen,t_1,use,t_2.~\wasGeneratedBy(gen,e,a_1,t_1,[]) \wedge \used(use,a_2,e,t_2,[])\)</div>
+
+</section>
+
+
+<section id="test2">
+<h2> BlahTeXML text </h2>
+
+<div xmlns:b="http://gva.noekeon.org/blahtexml">
+ <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+ <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+ <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+ <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+ <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+ <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+ <span><math xmlns="http://www.w3.org/1998/Math/MathML"></math></span>
+ <span><math xmlns="http://www.w3.org/1998/Math/MathML"><mo lspace="0" rspace="0">∀</mo><mi>i</mi><mspace width="0"></mspace><mi>d</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>2</mn></msub><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mi>a</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>r</mi><mspace width="0"></mspace><mi>s</mi><mo lspace="0" rspace="0.333em">.</mo><mi>w</mi><mspace width="0"></mspace><mi>a</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>I</mi><mspace width="0"></mspace><mi>n</mi><mspace width="0"></mspace><mi>f</mi><mspace width="0"></mspace><mi>o</mi><mspace width="0"></mspace><mi>r</mi><mspace width="0"></mspace><mi>m</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>d</mi><mspace width="0"></mspace><mi>B</mi><mspace width="0"></mspace><mi>y</mi><mo lspace="0" rspace="0" stretchy="false">(</mo><mi>i</mi><mspace width="0"></mspace><mi>d</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>2</mn></msub><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mi>a</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>r</mi><mspace width="0"></mspace><mi>s</mi><mo lspace="0" rspace="0.278em" stretchy="false">)</mo><mo lspace="0" rspace="0.278em">⇒</mo><mo lspace="0" rspace="0">∃</mo><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><mi>g</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>n</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>t</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mi>u</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>t</mi><mn>2</mn></msub><mo lspace="0" rspace="0.333em">.</mo><mi>w</mi><mspace width="0"></mspace><mi>a</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>G</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>n</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>r</mi><mspace width="0"></mspace><mi>a</mi><mspace width="0"></mspace><mi>t</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>d</mi><mspace width="0"></mspace><mi>B</mi><mspace width="0"></mspace><mi>y</mi><mo lspace="0" rspace="0" stretchy="false">(</mo><mi>g</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>n</mi><mo lspace="0" rspace="0.167em">,</mo><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><msub><mi>t</mi><mn>1</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mo lspace="0" rspace="0" stretchy="false">[</mo><mo lspace="0" rspace="0" stretchy="false">]</mo><mo lspace="0" rspace="0.222em" stretchy="false">)</mo><mo lspace="0" rspace="0.222em">∧</mo><mi>u</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>e</mi><mspace width="0"></mspace><mi>d</mi><mo lspace="0" rspace="0" stretchy="false">(</mo><mi>u</mi><mspace width="0"></mspace><mi>s</mi><mspace width="0"></mspace><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>a</mi><mn>2</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mi>e</mi><mo lspace="0" rspace="0.167em">,</mo><msub><mi>t</mi><mn>2</mn></msub><mo lspace="0" rspace="0.167em">,</mo><mo lspace="0" rspace="0" stretchy="false">[</mo><mo lspace="0" rspace="0" stretchy="false">]</mo><mo lspace="0" rspace="0" stretchy="false">)</mo></math></span>
+ <span><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mstyle displaystyle="true"><mi>exp</mi><mo lspace="0" rspace="0" stretchy="false">(</mo><mo lspace="0" rspace="0">-</mo><mi>γ</mi><mspace width="0"></mspace><mi>x</mi><mo lspace="0" rspace="0" stretchy="false">)</mo></mstyle></math></span>
+ When <span><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>a</mi><mo lspace="0.278em" rspace="0.278em">≠</mo><mn>0</mn></math></span>, there are two solutions to <span><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>a</mi><mspace width="0"></mspace><msup><mi>x</mi><mn>2</mn></msup><mo lspace="0.222em" rspace="0.222em">+</mo><mi>b</mi><mspace width="0"></mspace><mi>x</mi><mo lspace="0.222em" rspace="0.222em">+</mo><mi>c</mi><mo lspace="0.278em" rspace="0.278em">=</mo><mn>0</mn></math></span> and they are
+<span><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mstyle displaystyle="true"><mi>x</mi><mo lspace="0.278em" rspace="0.278em">=</mo><mfrac><mrow><mo lspace="0" rspace="0">-</mo><mi>b</mi><mo lspace="0.222em" rspace="0.222em">±</mo><msqrt><msup><mi>b</mi><mn>2</mn></msup><mo lspace="0.222em" rspace="0.222em">-</mo><mn>4</mn><mi>a</mi><mspace width="0"></mspace><mi>c</mi></msqrt></mrow><mrow><mn>2</mn><mi>a</mi></mrow></mfrac></mstyle></math></span>.
+</div>
+
+</section>
<section id="inferences">
<h2>Inferences</h2>
-<div class="inference" id="communication-generation-use-inference"><span class="math">∀ <span class="math">id</span>,<span class="math">a_2</span>,<span class="math">a_1</span>,<span class="math">attrs</span>. wasInformedBy(id,a_2,a_1,attrs) ⟹ ∃ <span class="math">e</span>,<span class="math">gen</span>,<span class="math">t_1</span>,<span class="math">use</span>,<span class="math">t_2</span>. wasGeneratedBy(gen,e,a_1,t_1,[]) ∧ used(use,a_2,e,t_2,[])</span></div>
-<div class="inference" id="generation-use-communication-inference"><span class="math">∀ <span class="math">gen</span>,<span class="math">a_1</span>,<span class="math">t_1</span>,<span class="math">attrs_1</span>,<span class="math">id_2</span>,<span class="math">a_2</span>,<span class="math">t_2</span>,<span class="math">attrs_2</span>. wasGeneratedBy(gen,e,a_1,t_1,attrs_1) ∧ used(id_2,a_2,e,t_2,attrs_2) ⟹ ∃ <span class="math">id</span>. wasInformedBy(id,a_2,a_1,[])</span></div>
-<div class="inference" id="entity-generation-invalidation-inference"><span class="math">∀ <span class="math">gen</span>,<span class="math">e</span>,<span class="math">a_1</span>,<span class="math">t_1</span>,<span class="math">attrs_1</span>,<span class="math">id_2</span>,<span class="math">a_2</span>,<span class="math">t_2</span>,<span class="math">attrs_2</span>. wasGeneratedBy(gen,e,a_1,t_1,attrs_1) ∧ used(id_2,a_2,e,t_2,attrs_2) ⟹ ∃ <span class="math">id</span>. wasInformedBy(id,a_2,a_1,[])</span></div>
-<div class="inference" id="activity-start-end-inference"><span class="math">∀ <span class="math">a</span>,<span class="math">t_1</span>,<span class="math">t_2</span>,<span class="math">attrs</span>. activity(a,t_1,t_2,attrs) ⟹ ∃ <span class="math">start</span>,<span class="math">e_1</span>,<span class="math">a_1</span>,<span class="math">end</span>,<span class="math">a_2</span>,<span class="math">e_2</span>. wasStartedBy(start,a,e_1,a_1,t_1,[]) ∧ wasEndedBy(end,a,e_2,a_2,t_2,[])</span></div>
-<div class="inference" id="wasStartedBy-inference"><span class="math">∀ <span class="math">id</span>,<span class="math">a</span>,<span class="math">e_1</span>,<span class="math">a_1</span>,<span class="math">t</span>,<span class="math">attrs</span>. wasStartedBy(id,a,e_1,a_1,t,attrs) ⟹ ∃ <span class="math">gen</span>,<span class="math">t_1</span>. wasGeneratedBy(gen,e_1,a_1,t_1,[])</span></div>
-<div class="inference" id="wasEndedBy-inference"><span class="math">∀ <span class="math">id</span>,<span class="math">a</span>,<span class="math">e_1</span>,<span class="math">a_1</span>,<span class="math">t</span>,<span class="math">attrs</span>. wasEndedBy(id,a,e_1,a_1,t,attrs) ⟹ ∃ <span class="math">gen</span>,<span class="math">t_1</span>. wasGeneratedBy(gen,e_1,a_1,t_1,[])</span></div>
-<div class="inference" id="derivation-generation-use-inference">In this inference, none of <math>a</math>, <math>gen_2</math> or <math>use_1</math> can be placeholders -<span class="math">∀ <span class="math">id</span>,<span class="math">e_2</span>,<span class="math">e_1</span>,<span class="math">a</span>,<span class="math">gen_2</span>,<span class="math">use_1</span>,<span class="math">attrs</span>. wasDerivedFrom(id,e_2,e_1,a,gen_2,use_1,attrs) ⟹ ∃ <span class="math">s</span>,<span class="math">t_1</span>,<span class="math">t_2</span>. used(use_1,a,e_1,t_1,[]) ∧ wasGeneratedBy(gen_2,e_2,a,t_2,[])</span></div>
-<div class="inference" id="revision-is-alternate-inference">In this inference, any of <math>a</math>, <math>g</math> or <math>u</math> may be placeholders.<span class="math">∀ <span class="math">id</span>,<span class="math">e_1</span>,<span class="math">e_2</span>,<span class="math">a</span>,<span class="math">g</span>,<span class="math">u</span>. wasDerivedFrom(id,e_2,e_1,a,g,u,.(=(prov:type,prov:Revision),[])) ⟹ alternateOf(e_2,e_1)</span></div>
-<div class="inference" id="attribution-inference"><span class="math">∀ <span class="math">att</span>,<span class="math">e</span>,<span class="math">ag</span>,<span class="math">attrs</span>. wasAttributedTo(att,e,ag,attrs) ⟹ ∃ <span class="math">a</span>,<span class="math">t</span>,<span class="math">gen</span>,<span class="math">assoc</span>,<span class="math">pl</span>. wasGeneratedBy(gen,e,a,t,[]) ∧ wasAssociatedWith(assoc,a,ag,pl,[])</span></div>
-<div class="inference" id="delegation-inference"><span class="math">∀ <span class="math">id</span>,<span class="math">ag_1</span>,<span class="math">ag_2</span>,<span class="math">a</span>,<span class="math">attrs</span>. actedOnBehalfOf(id,ag_1,ag_2,a,attrs) ⟹ ∃ <span class="math">id_1</span>,<span class="math">pl_1</span>,<span class="math">id_2</span>,<span class="math">pl_2</span>. wasAssociatedWith(id_1,a,ag_1,pl_1,[]) ∧ wasAssociatedWith(id_2,a,ag_2,pl_2,[])</span></div>
-<div class="inference" id="influence-inference"><ol><li><span class="math">∀ <span class="math">id</span>,<span class="math">e</span>,<span class="math">a</span>,<span class="math">t</span>,<span class="math">attrs</span>. wasGeneratedBy(id,e,a,t,attrs) ⟹ wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">∀ <span class="math">id</span>,<span class="math">a</span>,<span class="math">e</span>,<span class="math">t</span>,<span class="math">attrs</span>. used(id,a,e,t,attrs) ⟹ wasInfluencedBy(id,a,e,attrs)</span></li><li><span class="math">∀ <span class="math">id</span>,<span class="math">a_2</span>,<span class="math">a_1</span>,<span class="math">attrs</span>. wasInformedBy(id,a_2,a_1,attrs) ⟹ wasInfluencedBy(id,a_2,a_1,attrs)</span></li><li><span class="math">∀ <span class="math">id</span>,<span class="math">a_2</span>,<span class="math">e</span>,<span class="math">a_1</span>,<span class="math">t</span>,<span class="math">attrs</span>. wasStartedBy(id,a_2,e,a_1,t,attrs) ⟹ wasInfluencedBy(id,a_2,e,attrs)</span></li><li><span class="math">∀ <span class="math">id</span>,<span class="math">a_2</span>,<span class="math">e</span>,<span class="math">a_1</span>,<span class="math">t</span>,<span class="math">attrs</span>. wasEndedBy(id,a_2,e,a_1,t,attrs) ⟹ wasInfluencedBy(id,a_2,e,attrs)</span></li><li><span class="math">∀ <span class="math">id</span>,<span class="math">e</span>,<span class="math">a</span>,<span class="math">t</span>,<span class="math">attrs</span>. wasInvalidatedBy(id,e,a,t,attrs) ⟹ wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">∀ <span class="math">id</span>,<span class="math">e_2</span>,<span class="math">e_1</span>,<span class="math">a</span>,<span class="math">g</span>,<span class="math">u</span>,<span class="math">attrs</span>. wasDerivedFrom(id,e_2,e_1,a,g,u,attrs) ⟹ wasInfluencedBy(id,e_2,e_1,attrs)</span></li><li>In this rule, <math>a</math>, <math>g</math>, <math>u</math> may be placeholders -.<span class="math">∀ <span class="math">id</span>,<span class="math">e</span>,<span class="math">ag</span>,<span class="math">attrs</span>. wasAttributedTo(id,e,ag,attrs) ⟹ wasInfluencedBy(id,e,ag,attrs)</span></li><li>In this rule, <math>pl</math> may be a placeholder -<span class="math">∀ <span class="math">id</span>,<span class="math">a</span>,<span class="math">ag</span>,<span class="math">pl</span>,<span class="math">attrs</span>. wasAssociatedWith(id,a,ag,pl,attrs) ⟹ wasInfluencedBy(id,a,ag,attrs)</span></li><li><span class="math">∀ <span class="math">id</span>,<span class="math">ag_2</span>,<span class="math">ag_1</span>,<span class="math">a</span>,<span class="math">attrs</span>. actedOnBehalfOf(id,ag_2,ag_1,a,attrs) ⟹ wasInfluencedBy(id,ag_2,ag_1,attrs)</span></li></ol></div>
-<div class="inference" id="alternate-reflexive"><span class="math">∀ <span class="math">e</span>. entity(e) ⟹ alternateOf(e,e)</span></div>
-<div class="inference" id="alternate-transitive"><span class="math">∀ <span class="math">e_1</span>,<span class="math">e_2</span>,<span class="math">e_3</span>. alternateOf(e_1,e_2) ∧ alternateOf(e_2,e_3) ⟹ alternateOf(e_1,e_3)</span></div>
-<div class="inference" id="alternate-symmetric"><span class="math">∀ <span class="math">e_1</span>,<span class="math">e_2</span>. alternateOf(e_1,e_2) ⟹ alternateOf(e_2,e_1)</span></div>
-<div class="inference" id="specialization-transitive"><span class="math">∀ <span class="math">e_1</span>,<span class="math">e_2</span>,<span class="math">e_3</span>. specializationOf(e_1,e_2) ∧ specializationOf(e_2,e_3) ⟹ specializationOf(e_1,e_3)</span></div>
-<div class="inference" id="specialization-alternate-inference"><span class="math">∀ <span class="math">e_1</span>,<span class="math">e_2</span>. specializationOf(e_1,e_2) ⟹ alternateOf(e_1,e_2)</span></div>
-<div class="inference" id="specialization-attributes-inference"><span class="math">∀ <span class="math">e_1</span>,<span class="math">attrs</span>,<span class="math">e_2</span>. entity(e_1,attrs) ∧ specializationOf(e_2,e_1) ⟹ entity(e_2,attrs)</span></div>
+<div class="inference" id="communication-generation-use-inference"><span class="math">∀ id,a<sub>2</sub>,a<sub>1</sub>,attrs. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs) ⟹ ∃ e,gen,t<sub>1</sub>,use,t<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,[]) ∧ used(use,a<sub>2</sub>,e,t<sub>2</sub>,[])</span></div>
+<div class="inference" id="generation-use-communication-inference"><span class="math">∀ gen,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>,id<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,attrs<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>) ∧ used(id<sub>2</sub>,a<sub>2</sub>,e,t<sub>2</sub>,attrs<sub>2</sub>) ⟹ ∃ id. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,[])</span></div>
+<div class="inference" id="entity-generation-invalidation-inference"><span class="math">∀ gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>,id<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,attrs<sub>2</sub>. wasGeneratedBy(gen,e,a<sub>1</sub>,t<sub>1</sub>,attrs<sub>1</sub>) ∧ used(id<sub>2</sub>,a<sub>2</sub>,e,t<sub>2</sub>,attrs<sub>2</sub>) ⟹ ∃ id. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,[])</span></div>
+<div class="inference" id="activity-start-end-inference"><span class="math">∀ a,t<sub>1</sub>,t<sub>2</sub>,attrs. activity(a,t<sub>1</sub>,t<sub>2</sub>,attrs) ⟹ ∃ start,e<sub>1</sub>,a<sub>1</sub>,end,a<sub>2</sub>,e<sub>2</sub>. wasStartedBy(start,a,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[]) ∧ wasEndedBy(end,a,e<sub>2</sub>,a<sub>2</sub>,t<sub>2</sub>,[])</span></div>
+<div class="inference" id="wasStartedBy-inference"><span class="math">∀ id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs. wasStartedBy(id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs) ⟹ ∃ gen,t<sub>1</sub>. wasGeneratedBy(gen,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[])</span></div>
+<div class="inference" id="wasEndedBy-inference"><span class="math">∀ id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs. wasEndedBy(id,a,e<sub>1</sub>,a<sub>1</sub>,t,attrs) ⟹ ∃ gen,t<sub>1</sub>. wasGeneratedBy(gen,e<sub>1</sub>,a<sub>1</sub>,t<sub>1</sub>,[])</span></div>
+<div class="inference" id="derivation-generation-use-inference">In this inference, none of <em>a</em>, <em>gen<sub>2</sub></em> or <em>use_1</em> can be placeholders -.<span class="math">∀ id,e<sub>2</sub>,e<sub>1</sub>,a,gen<sub>2</sub>,use<sub>1</sub>,attrs. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,gen<sub>2</sub>,use<sub>1</sub>,attrs) ⟹ ∃ s,t<sub>1</sub>,t<sub>2</sub>. used(use<sub>1</sub>,a,e<sub>1</sub>,t<sub>1</sub>,[]) ∧ wasGeneratedBy(gen<sub>2</sub>,e<sub>2</sub>,a,t<sub>2</sub>,[])</span></div>
+<div class="inference" id="revision-is-alternate-inference">In this inference, any of <em>a</em>, <em>g</em> or <em>u</em> may be placeholders.<span class="math">∀ id,e<sub>1</sub>,e<sub>2</sub>,a,g,u. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,.(prov:type = prov:Revision,[])) ⟹ alternateOf(e<sub>2</sub>,e<sub>1</sub>)</span></div>
+<div class="inference" id="attribution-inference"><span class="math">∀ att,e,ag,attrs. wasAttributedTo(att,e,ag,attrs) ⟹ ∃ a,t,gen,assoc,pl. wasGeneratedBy(gen,e,a,t,[]) ∧ wasAssociatedWith(assoc,a,ag,pl,[])</span></div>
+<div class="inference" id="delegation-inference"><span class="math">∀ id,ag<sub>1</sub>,ag<sub>2</sub>,a,attrs. actedOnBehalfOf(id,ag<sub>1</sub>,ag<sub>2</sub>,a,attrs) ⟹ ∃ id<sub>1</sub>,pl<sub>1</sub>,id<sub>2</sub>,pl<sub>2</sub>. wasAssociatedWith(id<sub>1</sub>,a,ag<sub>1</sub>,pl<sub>1</sub>,[]) ∧ wasAssociatedWith(id<sub>2</sub>,a,ag<sub>2</sub>,pl<sub>2</sub>,[])</span></div>
+<div class="inference" id="influence-inference"><ol><li><span class="math">∀ id,e,a,t,attrs. wasGeneratedBy(id,e,a,t,attrs) ⟹ wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">∀ id,a,e,t,attrs. used(id,a,e,t,attrs) ⟹ wasInfluencedBy(id,a,e,attrs)</span></li><li><span class="math">∀ id,a<sub>2</sub>,a<sub>1</sub>,attrs. wasInformedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs) ⟹ wasInfluencedBy(id,a<sub>2</sub>,a<sub>1</sub>,attrs)</span></li><li><span class="math">∀ id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs. wasStartedBy(id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs) ⟹ wasInfluencedBy(id,a<sub>2</sub>,e,attrs)</span></li><li><span class="math">∀ id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs. wasEndedBy(id,a<sub>2</sub>,e,a<sub>1</sub>,t,attrs) ⟹ wasInfluencedBy(id,a<sub>2</sub>,e,attrs)</span></li><li><span class="math">∀ id,e,a,t,attrs. wasInvalidatedBy(id,e,a,t,attrs) ⟹ wasInfluencedBy(id,e,a,attrs)</span></li><li><span class="math">∀ id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,attrs. wasDerivedFrom(id,e<sub>2</sub>,e<sub>1</sub>,a,g,u,attrs) ⟹ wasInfluencedBy(id,e<sub>2</sub>,e<sub>1</sub>,attrs)</span></li><li>In this rule, <em>a</em>, <em>g</em>, <em>u</em> may be placeholders -.<span class="math">∀ id,e,ag,attrs. wasAttributedTo(id,e,ag,attrs) ⟹ wasInfluencedBy(id,e,ag,attrs)</span></li><li>In this rule, <em>pl</em> may be a placeholder -.<span class="math">∀ id,a,ag,pl,attrs. wasAssociatedWith(id,a,ag,pl,attrs) ⟹ wasInfluencedBy(id,a,ag,attrs)</span></li><li><span class="math">∀ id,ag<sub>2</sub>,ag<sub>1</sub>,a,attrs. actedOnBehalfOf(id,ag<sub>2</sub>,ag<sub>1</sub>,a,attrs) ⟹ wasInfluencedBy(id,ag<sub>2</sub>,ag<sub>1</sub>,attrs)</span></li></ol></div>
+<div class="inference" id="alternate-reflexive"><span class="math">∀ e. entity(e) ⟹ alternateOf(e,e)</span></div>
+<div class="inference" id="alternate-transitive"><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>,e<sub>3</sub>. alternateOf(e<sub>1</sub>,e<sub>2</sub>) ∧ alternateOf(e<sub>2</sub>,e<sub>3</sub>) ⟹ alternateOf(e<sub>1</sub>,e<sub>3</sub>)</span></div>
+<div class="inference" id="alternate-symmetric"><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>. alternateOf(e<sub>1</sub>,e<sub>2</sub>) ⟹ alternateOf(e<sub>2</sub>,e<sub>1</sub>)</span></div>
+<div class="inference" id="specialization-transitive"><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>,e<sub>3</sub>. specializationOf(e<sub>1</sub>,e<sub>2</sub>) ∧ specializationOf(e<sub>2</sub>,e<sub>3</sub>) ⟹ specializationOf(e<sub>1</sub>,e<sub>3</sub>)</span></div>
+<div class="inference" id="specialization-alternate-inference"><span class="math">∀ e<sub>1</sub>,e<sub>2</sub>. specializationOf(e<sub>1</sub>,e<sub>2</sub>) ⟹ alternateOf(e<sub>1</sub>,e<sub>2</sub>)</span></div>
+<div class="inference" id="specialization-attributes-inference"><span class="math">∀ e<sub>1</sub>,attrs,e<sub>2</sub>. entity(e<sub>1</sub>,attrs) ∧ specializationOf(e<sub>2</sub>,e<sub>1</sub>) ⟹ entity(e<sub>2</sub>,attrs)</span></div>
+<div class="constraint" id="membership-empty-collection"><span class="math">∀ c,e. hasMember(c,e) ∧ prov:EmptyCollection \in typeOf(c) ⟹ False</span></div>
</section>
@@ -1096,69 +788,4 @@
</p>
</section>
- </body></html>
-
-<!-- LocalWords: px DM RL RDF AQ SEM SOTD Definitional wasInformedBy attrs ag
- -->
-<!-- LocalWords: wasGeneratedBy wasStartedBy gAttr sAttr wasAttributedTo attr
- -->
-<!-- LocalWords: wasAssociatedWith dAttrs gAttrs wasDerivedFrom uAttrs eAttrs
- -->
-<!-- LocalWords: wasRevisionOf specializationOf wasQuotedFrom Traceability WD
- -->
-<!-- LocalWords: tracedTo aAttr actedOnBehalfOf rAttr traceability TODO xsd
- -->
-<!-- LocalWords: alternateOf wasEndedBy Lamport's timeline subfigure memberOf
- -->
-<!-- LocalWords: wasStartedByAgent wasAttributedWith derivedByInsertionFrom
- -->
-<!-- LocalWords: QName derivedByRemovalFrom EmptyCollection wasVersionOf dm
- -->
-<!-- LocalWords: RecsWD formedness workflow ness operability CSP versa hyp YY
- -->
-<!-- LocalWords: disambiguating lifecycle conformant minimalistic Lamport fo
- -->
-<!-- LocalWords: reflexivity antisymmetry timelines timespan WG concl inv TBD
- -->
-<!-- LocalWords: continuant occurrent modalities toyota womanInRedDress provn
- -->
-<!-- LocalWords: customerInChairAt manWithGlasses customerInChair irreflexive
- -->
-<!-- LocalWords: wasStartedByActivity antisymmetric wasInvalidatedBy stmt CHR
- -->
-<!-- LocalWords: DBCONSTRAINTS formalisms URIs wasInfluencedBy definitional
- -->
-<!-- LocalWords: wasInvalidated th nontermination implementability att evt
- -->
-<!-- LocalWords: Irreflexivity mentionOf preorder equalities unsatisfiable De
- -->
-<!-- LocalWords: Lebo subfigures pre del irreflexivity superproperty typeOf
- -->
-<!-- LocalWords: disjointness inferrable subtyping subtype subtypes hadMember
- -->
-<!-- LocalWords: hasMember toplevel sameAs tuple acyclicity isomorphism IRI
- -->
-<!-- LocalWords: endBundle typeof equational acyclic invertible procedurally
- -->
-<!-- LocalWords: implementers multi unifier ERCIM Groth Stian Soiland Ilkay
- -->
-<!-- LocalWords: Altintas Reza B'Far Belhajjame Informatics Coppens IBBT Nies
- -->
-<!-- LocalWords: Corsar Cresswell Deus DERI Galway satisfiable namespace Kai
- -->
-<!-- LocalWords: endDocument Dobson Doerr Hellas Eckert EVAIN EBU UER Frew de
- -->
-<!-- LocalWords: Irini Fundulaki Garijo Universidad Politécnica Vrije Hartig
- -->
-<!-- LocalWords: Universiteit Hau NCI Sandro Hawke Jörn Hees DFKI Gmbh Hua da
- -->
-<!-- LocalWords: Hodgson TopQuadrant Trung Huynh Klyne Revelytix Rensselaer
- -->
-<!-- LocalWords: McCusker McGuinness Paolo Missier Luc Moreau Vinh Edoardo
- -->
-<!-- LocalWords: Pignotti Paulo Pinheiro Geospatial Retter Runnegar Satya
- -->
-<!-- LocalWords: Sahoo Schaengold Schutzer FSTC Yogesh Simmhan Theodoridou
- -->
-<!-- LocalWords: Thibodeau OpenLink Tilmes Zednik Zhao Yuting
- -->
+ </body></html>
\ No newline at end of file