--- a/dictionary/Overview.html Thu Mar 28 12:16:18 2013 +0000
+++ b/dictionary/Overview.html Thu Mar 28 15:50:38 2013 +0100
@@ -633,7 +633,7 @@
};
var respecConfig = {
// specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
- specStatus: "WD-NOTE", //FPWD-NOTE
+ specStatus: "ED", //WD-NOTE
// the specification's short name, as in http://www.w3.org/TR/short-name/
shortName: "prov-dictionary",
@@ -721,7 +721,7 @@
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. This document describes extensions to PROV to facilitate the modeling of provenance for dictionary data structures. [[PROV-DM]] specifies a <a href="http://www.w3.org/TR/2013/PR-prov-dm-20130312/Overview.html#component6">Collection</a> as an entity that provides a structure to some constituents, which are themselves entities. However, some applications may need a mechanism to specify more structure to a Collection, in order to accurately describe its provenance.
-Therefore, in this document, we introduce Dictionary, a specific type of Collection with a logical structure consisting of key-value pairs.
+Therefore, in this document, we introduce Dictionary, a specific type of Collection with a logical structure consisting of key-entity pairs.
</p>
<p>The <a href="http://www.w3.org/TR/2013/WD-prov-overview-20130312/">PROV Document Overview</a> describes the overall state of PROV, and should be read before other PROV documents.</p>
@@ -785,11 +785,11 @@
<span class="glossary-ref" data-ref="glossary-dictionary"></span>
-<p>Conceptually, a dictionary has a logical structure consisting of key-value pairs. This structure is often referred to as a <em>map</em>, and is a generic indexing mechanism that can abstract commonly used data structures, including associative lists, relational tables, ordered lists, and more.
- This document provides a mechanism to assert the provenance for these types of data structures, in the most general way, as a collection of key-value pairs, modified through insertions and deletions. Any more specialized structures can be modeled to some extent in terms of these key-value pairs.
- Here, we will discuss the provenance of dictionaries structured in terms of key-value pairs. However, how this key-value pair structure is translated to more specialized data structures, is beyond the scope of this document.</p>
-
-<p>In this document, a dictionary is viewed as a snapshot of a data structure with key-value pairs, following a sequence of state-changing insertion and removal operations. These operations result in new snapshots, each snapshot forming a distinct and identifiable dictionary entity. Thus, when the structure of a dictionary changes (through insertions or removals), a new dictionary entity is defined, whereas the older dictionary entity remains the same.</p>
+<p>Conceptually, a dictionary has a logical structure consisting of key-entity pairs. This structure is often referred to as a <em>map</em>, and is a generic indexing mechanism that can abstract commonly used data structures, including associative lists, relational tables, ordered lists, and more.
+ This document provides a mechanism to assert the provenance for these types of data structures, in the most general way, as a collection of key-entity pairs, modified through insertions and deletions. Any more specialized structures can be modeled to some extent in terms of these key-entity pairs.
+ Here, we will discuss the provenance of dictionaries structured in terms of key-entity pairs. However, how this key-entity pair structure is translated to more specialized data structures, is beyond the scope of this document.</p>
+
+<p>In this document, a dictionary is viewed as a snapshot of a data structure with key-entity pairs, following a sequence of state-changing insertion and removal operations. These operations result in new snapshots, each snapshot forming a distinct and identifiable dictionary entity. Thus, when the structure of a dictionary changes (through insertions or removals), a new dictionary entity is defined, whereas the older dictionary entity remains the same.</p>
<!--
<span class="glossary-ref" data-ref="glossary-empty-dictionary"></span>
@@ -1059,7 +1059,7 @@
<span class="nonterminal">dIdentifier</span>
<span class="name">,</span>
<span class="name">{</span>
- <span class="nonterminal">keyValuePairs</span>
+ <span class="nonterminal">keyEntityPairs</span>
<span class="name">}</span>
<span class="name">,</span>
<span class="nonterminal">optionalAttributeValuePairs</span>
@@ -1080,7 +1080,7 @@
<tr><td><a href="#term-dictionary-insertion"><span class='attribute' id="provn-insertion.before">before</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-dIdentifier">dIdentifier</a></code></td></tr>
-<tr><td><a href="#term-dictionary-insertion"><span class='attribute' id="provn-insertion.key-value-pairs">key-value-pairs</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-keyValuePairs">keyValuePairs</a></code></td></tr>
+<tr><td><a href="#term-dictionary-insertion"><span class='attribute' id="provn-insertion.key-entity-pairs">key-entity-pairs</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-keyEntityPairs">keyEntityPairs</a></code></td></tr>
<tr><td><a href="#term-dictionary-insertion"><span class='attribute' id="provn-insertion.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="http://www.w3.org/TR/2013/PR-prov-n-20130312/#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr>
</table>
@@ -1186,10 +1186,10 @@
<p id="prod-key"><span class="nonterminal">key</span> ::=
<a href="http://www.w3.org/TR/2013/PR-prov-n-20130312/#prod-literal" class="nonterminal">literal</a> </p>
- <p id="prod-keyValuePairs"><span class="nonterminal">keyValuePairs</span> ::=
- <a href="#prod-keyValuePair" class="nonterminal">keyValuePair</a> <span class="star"><span class="name">,</span> <a href="#prod-keyValuePair" class="nonterminal">keyValuePair</a></span> </p>
+ <p id="prod-keyEntityPairs"><span class="nonterminal">keyEntityPairs</span> ::=
+ <a href="#prod-keyEntityPair" class="nonterminal">keyEntityPair</a> <span class="star"><span class="name">,</span> <a href="#prod-keyEntityPair" class="nonterminal">keyEntityPair</a></span> </p>
- <p id="prod-keyValuePair"><span class="nonterminal">keyValuePair</span> ::=
+ <p id="prod-keyEntityPair"><span class="nonterminal">keyEntityPair</span> ::=
<span class="name">(</span> <a href="#prod-key" class="nonterminal">key</a> <span class="name">,</span> <a href="http://www.w3.org/TR/2013/PR-prov-n-20130312/#prod-eIdentifier" class="nonterminal">eIdentifier</a> <span class="name">)</span> </p>
<p id="prod-keySet"><span class="nonterminal">keySet</span> ::=
@@ -1211,7 +1211,7 @@
href='#Dictionary'>prov:Dictionary</a></code> is a <code
class="repeated">prov:Entity</code> that acts as a container to some members,
which are themselves entities.
-Specifically, a dictionary is composed of set of key-value pairs, where a
+Specifically, a dictionary is composed of set of key-entity pairs, where a
literal key is used to identify a constituent entity within the dictionary.
@@ -1227,13 +1227,13 @@
:d1 a prov:Dictionary;
prov:hadDictionaryMember [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "k1"^^xsd:string;
- prov:pairValue :e1
+ prov:pairEntity :e1
], [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "k2"^^xsd:string;
- prov:pairValue :e2
+ prov:pairEntity :e2
];
.
</pre>
@@ -1249,12 +1249,12 @@
kinds of influence: <code><a class="qname"
href="#qualifiedInsertion">prov:qualifiedInsertion</a></code> is used to
describe that a dictionary was obtained from an existing dictionary by
-<a href="#term-dictionary-insertion">inserting</a> a set of key-value pairs. <code><a class="qname"
+<a href="#term-dictionary-insertion">inserting</a> a set of key-entity pairs. <code><a class="qname"
href="#qualifiedRemoval">prov:qualifiedRemoval</a></code> is used to specify
that a given dictionary was obtained from an existing dictionary by
- <a href="#term-dictionary-removal">removing</a> a set of key-value pairs. The example below specifies that
+ <a href="#term-dictionary-removal">removing</a> a set of key-entity pairs. The example below specifies that
the dictionary <code>:d1</code> was obtained from the empty dictionary
-<code>:d</code> by <em>inserting</em> the key-value pairs <code>("k1",
+<code>:d</code> by <em>inserting</em> the key-entity pairs <code>("k1",
:e1)</code> and <code>("k2", :e2)</code>.
</p>
@@ -1273,14 +1273,14 @@
prov:qualifiedInsertion [
a prov:Insertion;
prov:dictionary :d;
- prov:insertedKeyValuePair [
- a prov:KeyValuePair;
+ prov:insertedKeyEntityPair [
+ a prov:KeyEntityPair;
prov:pairKey "k1"^^xsd:string;
- prov:pairValue :e1;
+ prov:pairEntity :e1;
], [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "k2"^^xsd:string;
- prov:pairValue :e2;
+ prov:pairEntity :e2;
];
];
.
@@ -1290,7 +1290,7 @@
<p>
Similarly, the example below specifies that the dictionary
- <code>:d3</code> was obtained by <em>removing</em> the key-value pairs associated with
+ <code>:d3</code> was obtained by <em>removing</em> the key-entity pairs associated with
the keys <code>"k1"</code> and <code>"k2"</code> from the dictionary
<code>:d2</code>. Thus, <code>:d3</code> does not contain the
members <code>("k1", :e1)</code> and <code>("k2",
@@ -1330,7 +1330,7 @@
<a href="#Insertion">prov:Insertion</a>
</li>
<li>
- <a href="#KeyValuePair">prov:KeyValuePair</a>
+ <a href="#KeyEntityPair">prov:KeyEntityPair</a>
</li>
<li>
<a href="#Removal">prov:Removal</a>
@@ -1345,7 +1345,7 @@
<a href="#dictionary">prov:dictionary</a>
</li>
<li class="object-property">
- <a href="#insertedKeyValuePair">prov:insertedKeyValuePair</a>
+ <a href="#insertedKeyEntityPair">prov:insertedKeyEntityPair</a>
</li>
<li class="object-property">
<a href="#hadDictionaryMember">prov:hadDictionaryMember</a>
@@ -1354,7 +1354,7 @@
<a href="#pairKey">prov:pairKey</a>
</li>
<li class="object-property">
- <a href="#pairValue">prov:pairValue</a>
+ <a href="#pairEntity">prov:pairEntity</a>
</li>
<li class="object-property">
<a href="#qualifiedInsertion">prov:qualifiedInsertion</a>
@@ -1476,7 +1476,7 @@
</span>
</h3>
<p><strong>IRI:</strong>http://www.w3.org/ns/prov#Insertion</p>
- <div class="definition"><p>Insertion is a derivation that transforms a dictionary into another, by insertion of one or more key-value pairs.</p>
+ <div class="definition"><p>Insertion is a derivation that transforms a dictionary into another, by insertion of one or more key-entity pairs.</p>
</div>
<div class="example">
@@ -1494,10 +1494,10 @@
prov:qualifiedInsertion [
a prov:Insertion;
prov:dictionary :our-old-baseball-team-field-positions;
- prov:insertedKeyValuePair [
- a prov:KeyValuePair;
+ prov:insertedKeyEntityPair [
+ a prov:KeyEntityPair;
prov:pairKey "first-baseman"^^xsd:string;
- prov:pairValue <http://dbpedia.org/resource/Jim_Thorpe>;
+ prov:pairEntity <http://dbpedia.org/resource/Jim_Thorpe>;
];
];
.
@@ -1509,7 +1509,7 @@
</div>
<dl class="description">
- <dd class="comment"><p>Insertion is a derivation that transforms a dictionary into another, by insertion of one or more key-value pairs.</p>
+ <dd class="comment"><p>Insertion is a derivation that transforms a dictionary into another, by insertion of one or more key-entity pairs.</p>
</dd>
<dt>is subclass of</dt>
@@ -1519,7 +1519,7 @@
<dt>described with properties</dt>
<dd>
<a title="http://www.w3.org/ns/prov#dictionary" href="#dictionary" class="owlclass">prov:dictionary</a>
- <a title="http://www.w3.org/ns/prov#insertedKeyValuePair" href="#insertedKeyValuePair" class="owlclass">prov:insertedKeyValuePair</a>
+ <a title="http://www.w3.org/ns/prov#insertedKeyEntityPair" href="#insertedKeyEntityPair" class="owlclass">prov:insertedKeyEntityPair</a>
</dd>
<dt>in range of</dt>
@@ -1534,14 +1534,14 @@
</dl>
</div>
- <div id="KeyValuePair" class="entity">
+ <div id="KeyEntityPair" class="entity">
<h3>
- Class: <a href="#KeyValuePair"><span class="dotted" title="http://www.w3.org/ns/prov#KeyValuePair">prov:KeyValuePair</span></a>
+ Class: <a href="#KeyEntityPair"><span class="dotted" title="http://www.w3.org/ns/prov#KeyEntityPair">prov:KeyEntityPair</span></a>
<span class="backlink">
back to <a href="#prov-dictionary-owl-terms-at-a-glance">overview</a>
</span>
</h3>
- <p><strong>IRI:</strong>http://www.w3.org/ns/prov#KeyValuePair</p>
+ <p><strong>IRI:</strong>http://www.w3.org/ns/prov#KeyEntityPair</p>
<div class="example">
<strong>Example</strong>
@@ -1556,14 +1556,14 @@
a prov:Dictionary,
:FieldPositions;
prov:hadDictionaryMember [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "first-baseman"^^xsd:string;
- prov:pairValue :george;
+ prov:pairEntity :george;
];
prov:hadDictionaryMember [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "pitcher"^^xsd:string;
- prov:pairValue :carl;
+ prov:pairEntity :carl;
];
.
@@ -1573,19 +1573,19 @@
</div>
<dl class="description">
- <dd class="comment"><p>A key-value pair. Part of a prov:Dictionary through prov:hadDictionaryMember. The key is any RDF Literal, the value is a prov:Entity.</p>
+ <dd class="comment"><p>A key-entity pair. Part of a prov:Dictionary through prov:hadDictionaryMember. The key is any RDF Literal, the value is a prov:Entity.</p>
</dd>
<dt>described with properties</dt>
<dd>
<a title="http://www.w3.org/ns/prov#pairKey" href="#pairKey">prov:pairKey</a><sup class="type-dp" title="data property">dp</sup>
- <a title="http://www.w3.org/ns/prov#pairValue" href="#pairValue">prov:pairValue</a><sup class="type-op" title="object property">op</sup>
+ <a title="http://www.w3.org/ns/prov#pairEntity" href="#pairEntity">prov:pairEntity</a><sup class="type-op" title="object property">op</sup>
</dd>
<dt>in range of</dt>
<dd>
<a title="http://www.w3.org/ns/prov#hadDictionaryMember" href="#hadDictionaryMember">prov:hadDictionaryMember</a><sup class="type-op" title="object property">op</sup>
- <a title="http://www.w3.org/ns/prov#insertedKeyValuePair" href="#insertedKeyValuePair">prov:insertedKeyValuePair</a><sup class="type-op" title="object property">op</sup>
+ <a title="http://www.w3.org/ns/prov#insertedKeyEntityPair" href="#insertedKeyEntityPair">prov:insertedKeyEntityPair</a><sup class="type-op" title="object property">op</sup>
</dd>
</dl>
</div>
@@ -1598,7 +1598,7 @@
</span>
</h3>
<p><strong>IRI:</strong>http://www.w3.org/ns/prov#Removal</p>
- <div class="definition"><p>Removal is a derivation that transforms a dictionary into another, by removing one or more key-value pairs.</p>
+ <div class="definition"><p>Removal is a derivation that transforms a dictionary into another, by removing one or more key-entity pairs.</p>
</div>
<div class="example">
@@ -1626,7 +1626,7 @@
</div>
<div>
<dl class="description">
- <dd class="comment"><p>Removal is a derivation that transforms a dictionary into another, by removing one or more key-value pairs specified by <a title="http://www.w3.org/ns/prov#removedKey" href="#removedKey">prov:removedKey</a>.</p>
+ <dd class="comment"><p>Removal is a derivation that transforms a dictionary into another, by removing one or more key-entity pairs specified by <a title="http://www.w3.org/ns/prov#removedKey" href="#removedKey">prov:removedKey</a>.</p>
</dd>
<dt>is subclass of</dt>
@@ -1683,21 +1683,21 @@
prov:qualifiedInsertion [
a prov:Insertion;
prov:dictionary :d;
- prov:insertedKeyValuePair [
- a prov:KeyValuePair;
+ prov:insertedKeyEntityPair [
+ a prov:KeyEntityPair;
prov:pairKey "k1"^^xsd:string;
- prov:pairValue :e1;
+ prov:pairEntity :e1;
], [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "k2"^^xsd:string;
- prov:pairValue :e2;
+ prov:pairEntity :e2;
];
];
. </pre>
</div>
<div class="description">
- <div class="comment"><p>The dictionary was derived from the other by insertion. prov:qualifiedInsertion shows details of the insertion, in particular the inserted key-value pairs.</p>
+ <div class="comment"><p>The dictionary was derived from the other by insertion. prov:qualifiedInsertion shows details of the insertion, in particular the inserted key-entity pairs.</p>
</div>
<dl>
@@ -1775,7 +1775,7 @@
</div>
<div class="description">
- <div class="comment"><p>The dictionary was derived from the other by removal. prov:qualifiedRemoval shows details of the removal, in particular the removed key-value pairs.</p>
+ <div class="comment"><p>The dictionary was derived from the other by removal. prov:qualifiedRemoval shows details of the removal, in particular the removed key-entity pairs.</p>
</div>
<dl>
@@ -1844,10 +1844,10 @@
prov:qualifiedInsertion [
a prov:Insertion;
prov:dictionary :d;
- prov:insertedKeyValuePair [
- a prov:KeyValuePair;
+ prov:insertedKeyEntityPair [
+ a prov:KeyEntityPair;
prov:pairKey "k1"^^xsd:string;
- prov:pairValue :e1;
+ prov:pairEntity :e1;
];
];
.
@@ -1891,12 +1891,12 @@
</div>
</div>
- <div id="insertedKeyValuePair" class="entity">
+ <div id="insertedKeyEntityPair" class="entity">
<h3>
- Property: <a href="#insertedKeyValuePair"><span class="dotted" title="http://www.w3.org/ns/prov#insertedKeyValuePair">prov:insertedKeyValuePair</span></a><sup class="type-op" title="object property">op</sup>
+ Property: <a href="#insertedKeyEntityPair"><span class="dotted" title="http://www.w3.org/ns/prov#insertedKeyEntityPair">prov:insertedKeyEntityPair</span></a><sup class="type-op" title="object property">op</sup>
</h3>
- <p><strong>IRI:</strong>http://www.w3.org/ns/prov#insertedKeyValuePair</p>
+ <p><strong>IRI:</strong>http://www.w3.org/ns/prov#insertedKeyEntityPair</p>
<div class="example">
<strong>Example</strong>
@@ -1913,10 +1913,10 @@
prov:qualifiedInsertion [
a prov:Insertion;
prov:dictionary :our-old-baseball-team-field-positions;
- prov:insertedKeyValuePair [
- a prov:KeyValuePair;
+ prov:insertedKeyEntityPair [
+ a prov:KeyEntityPair;
prov:pairKey "first-baseman"^^xsd:string;
- prov:pairValue <http://dbpedia.org/resource/Jim_Thorpe>;
+ prov:pairEntity <http://dbpedia.org/resource/Jim_Thorpe>;
];
];
.
@@ -1928,7 +1928,7 @@
</div>
<div class="description">
- <div class="comment"><p>An object property to refer to the prov:KeyValuePair inserted into a prov:Dictionary.</p>
+ <div class="comment"><p>An object property to refer to the prov:KeyEntityPair inserted into a prov:Dictionary.</p>
</div>
<dl>
@@ -1945,7 +1945,7 @@
<dd>
<ul>
<li>
- <a title="http://www.w3.org/ns/prov#KeyValuePair" href="#KeyValuePair" class="owlclass">prov:KeyValuePair</a>
+ <a title="http://www.w3.org/ns/prov#KeyEntityPair" href="#KeyEntityPair" class="owlclass">prov:KeyEntityPair</a>
</li>
</ul>
</dd>
@@ -1973,13 +1973,13 @@
a prov:Dictionary,
:FieldPositions;
prov:hadDictionaryMember [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "first-baseman"^^xsd:string;
- prov:pairValue :george;
+ prov:pairEntity :george;
], [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "pitcher"^^xsd:string;
- prov:pairValue :carl;
+ prov:pairEntity :carl;
];
.
@@ -1989,7 +1989,7 @@
</div>
<div class="description">
- <div class="comment"><p>Describes the key-value pair that was member of a prov:Dictionary. A dictionary can have multiple members.</p>
+ <div class="comment"><p>Describes the key-entity pair that was member of a prov:Dictionary. A dictionary can have multiple members.</p>
</div>
<dl>
@@ -2006,7 +2006,7 @@
<dd>
<ul>
<li>
- <a title="http://www.w3.org/ns/prov#KeyValuePair" href="#KeyValuePair" class="owlclass">prov:KeyValuePair</a>
+ <a title="http://www.w3.org/ns/prov#KeyEntityPair" href="#KeyEntityPair" class="owlclass">prov:KeyEntityPair</a>
</li>
</ul>
</dd>
@@ -2035,13 +2035,13 @@
a prov:Dictionary,
:FieldPositions;
prov:hadDictionaryMember [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "first-baseman"^^xsd:string;
- prov:pairValue :george;
+ prov:pairEntity :george;
], [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "pitcher"^^xsd:string;
- prov:pairValue :carl;
+ prov:pairEntity :carl;
];
.
@@ -2051,7 +2051,7 @@
</div>
<div class="description">
- <div class="comment"><p>The key of a KeyValuePair, which is an element of a prov:Dictionary.</p>
+ <div class="comment"><p>The key of a KeyEntityPair, which is an element of a prov:Dictionary.</p>
</div>
<p><strong>has characteristics</strong> <a href="http://www.w3.org/TR/owl2-syntax/#Functional_Object_Properties"> Functional</a> </p>
<dl>
@@ -2060,7 +2060,7 @@
<dd>
<ul>
<li>
- <a title="http://www.w3.org/ns/prov#KeyValuePair" href="#KeyValuePair" class="owlclass">prov:KeyValuePair</a>
+ <a title="http://www.w3.org/ns/prov#KeyEntityPair" href="#KeyEntityPair" class="owlclass">prov:KeyEntityPair</a>
</li>
</ul>
</dd>
@@ -2078,12 +2078,12 @@
</div>
</div>
- <div id="pairValue" class="entity">
+ <div id="pairEntity" class="entity">
<h3>
- Property: <a href="#pairValue"><span class="dotted" title="http://www.w3.org/ns/prov#pairValue">prov:pairValue</span></a><sup class="type-op" title="object property">op</sup>
+ Property: <a href="#pairEntity"><span class="dotted" title="http://www.w3.org/ns/prov#pairEntity">prov:pairEntity</span></a><sup class="type-op" title="object property">op</sup>
</h3>
- <p><strong>IRI:</strong>http://www.w3.org/ns/prov#pairValue</p>
+ <p><strong>IRI:</strong>http://www.w3.org/ns/prov#pairEntity</p>
<div class="example">
<strong>Example</strong>
@@ -2097,13 +2097,13 @@
a prov:Dictionary,
:FieldPositions;
prov:hadDictionaryMember [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "first-baseman"^^xsd:string;
- prov:pairValue :george;
+ prov:pairEntity :george;
], [
- a prov:KeyValuePair;
+ a prov:KeyEntityPair;
prov:pairKey "pitcher"^^xsd:string;
- prov:pairValue :carl;
+ prov:pairEntity :carl;
];
.
@@ -2113,7 +2113,7 @@
</div>
<div class="description">
- <div class="comment"><p>The value of a KeyValuePair.</p>
+ <div class="comment"><p>The value of a KeyEntityPair.</p>
</div>
<p><strong>has characteristics</strong> <a href="http://www.w3.org/TR/owl2-syntax/#Functional_Object_Properties"> Functional</a> </p>
<dl>
@@ -2122,7 +2122,7 @@
<dd>
<ul>
<li>
- <a title="http://www.w3.org/ns/prov#KeyValuePair" href="#KeyValuePair" class="owlclass">prov:KeyValuePair</a>
+ <a title="http://www.w3.org/ns/prov#KeyEntityPair" href="#KeyEntityPair" class="owlclass">prov:KeyEntityPair</a>
</li>
</ul>
</dd>
@@ -2162,10 +2162,10 @@
prov:qualifiedInsertion [
a prov:Insertion;
prov:dictionary :our-old-baseball-team-field-positions;
- prov:insertedKeyValuePair [
- a prov:KeyValuePair;
+ prov:insertedKeyEntityPair [
+ a prov:KeyEntityPair;
prov:pairKey "first-baseman"^^xsd:string;
- prov:pairValue <http://dbpedia.org/resource/Jim_Thorpe>;
+ prov:pairEntity <http://dbpedia.org/resource/Jim_Thorpe>;
];
];
.
@@ -2180,7 +2180,7 @@
</div>
<div class="description">
- <div class="comment"><p>The dictionary was derived from the other by insertion. prov:qualifiedInsertion shows details of the insertion, in particular the inserted key-value pairs.</p>
+ <div class="comment"><p>The dictionary was derived from the other by insertion. prov:qualifiedInsertion shows details of the insertion, in particular the inserted key-entity pairs.</p>
</div>
<dl>
@@ -2367,18 +2367,18 @@
</section> <!-- end XML:Dictionary -->
-<section id="term-KeyValuePair">
+<section id="term-KeyEntityPair">
<h3>Key-Value Pair</h3>
-<div class="glossary-ref" data-ref="glossary-keyValuePair"></div>
+<div class="glossary-ref" data-ref="glossary-keyEntityPair"></div>
<p>Key-value pairs are used to identify the members of a dictionary.</p>
<pre class="schema-type">
-<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="KeyValuePair" >
+<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="KeyEntityPair" >
<xs:element name="entity" type="prov:IDRef" />
<xs:element name="key" type="xs:anySimpleType" />
</xs:complexType>
</pre>
<pre class="schema-usage">
-<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="keyValuePair" type="prov:KeyValuePair"/>
+<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="keyEntityPair" type="prov:KeyEntityPair"/>
</pre>
<pre class="example">
<prov:document>
@@ -2390,28 +2390,28 @@
<prov:entity prov:id="e0"/>
<prov:entity prov:id="e1"/>
- <b><prov:keyValuePair>
+ <b><prov:keyEntityPair>
<prov:entity prov:ref="e0"/>
<prov:key>k0</prov:key>
- </prov:keyValuePair>
+ </prov:keyEntityPair>
- <prov:keyValuePair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e1"/>
<prov:key>k1</prov:key>
- </prov:keyValuePair></b>
+ </prov:keyEntityPair></b>
</prov:document>
</pre>
-</section> <!-- end XML:KeyValuePair -->
+</section> <!-- end XML:KeyEntityPair -->
<section id="term-DictionaryMembership">
<h3>Dictionary Membership</h3>
<div class="glossary-ref" data-ref="glossary-dictionarymembership"></div>
-<p>The members of a dictionary are specified by listing key-value pairs inside a <code>prov:DictionaryMembership</code> element</p>
+<p>The members of a dictionary are specified by listing key-entity pairs inside a <code>prov:DictionaryMembership</code> element</p>
<pre class="schema-type">
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="DictionaryMembership">
<xs:sequence>
<xs:element name="dictionary" type="prov:IDRef"/>
- <xs:element name="keyValuePair type="prov:KeyValuePair" maxOccurs="unbounded"/>
+ <xs:element name="keyEntityPair type="prov:KeyEntityPair" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</pre>
@@ -2434,18 +2434,18 @@
<b><prov:hadDictionaryMember>
<prov:dictionary prov:ref="d"/>
- <prov:keyValuePair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e0"/>
<prov:key>k0</prov:key>
- </prov:keyValuePair>
- <prov:keyValuePair>
+ </prov:keyEntityPair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e1"/>
<prov:key>k1</prov:key>
- </prov:keyValuePair>
- <prov:keyValuePair>
+ </prov:keyEntityPair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e2"/>
<prov:key>k2</prov:key>
- </prov:keyValuePair>
+ </prov:keyEntityPair>
</prov:hadDictionaryMember></b>
</prov:document>
@@ -2455,13 +2455,13 @@
<section id="term-Insertion">
<h3>Insertion</h3>
<div class="glossary-ref" data-ref="glossary-insertion"></div>
-<p>To specify that one dictionary was derived by insertion of key-value pairs into another one, a <code>prov:Insertion</code> element is used.</p>
+<p>To specify that one dictionary was derived by insertion of key-entity pairs into another one, a <code>prov:Insertion</code> element is used.</p>
<pre class="schema-type">
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Insertion">
<xs:sequence>
<xs:element name="newDictionary" type="prov:IDRef"/>
<xs:element name="oldDictionary" type="prov:IDRef"/>
- <xs:element name="keyValuePair type="prov:KeyValuePair" maxOccurs="unbounded"/>
+ <xs:element name="keyEntityPair type="prov:KeyEntityPair" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</pre>
@@ -2488,23 +2488,23 @@
<prov:hadDictionaryMember>
<prov:dictionary prov:ref="d1"/>
- <prov:keyValuePair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e0"/>
<prov:key>k0</prov:key>
- </prov:keyValuePair>
+ </prov:keyEntityPair>
</prov:hadDictionaryMember>
<b><prov:derivedByInsertionFrom>
<prov:newDictionary prov:ref="d2"/>
<prov:oldDictionary prov:ref="d1"/>
- <prov:keyValuePair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e1"/>
<prov:key>k1</prov:key>
- </prov:keyValuePair>
- <prov:keyValuePair>
+ </prov:keyEntityPair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e2"/>
<prov:key>k2</prov:key>
- </prov:keyValuePair>
+ </prov:keyEntityPair>
</prov:derivedByInsertionFrom></b>
</prov:document>
@@ -2513,7 +2513,7 @@
<section id="term-Removal">
<h3>Removal</h3>
<div class="glossary-ref" data-ref="glossary-insertion"></div>
-<p>To specify that one dictionary was derived by removal of key-value pairs from another one, a <code>prov:Removal</code> element is used.</p>
+<p>To specify that one dictionary was derived by removal of key-entity pairs from another one, a <code>prov:Removal</code> element is used.</p>
<pre class="schema-type">
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Removal">
<xs:sequence>
@@ -2546,18 +2546,18 @@
<prov:hadDictionaryMember>
<prov:dictionary prov:ref="d1"/>
- <prov:keyValuePair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e0"/>
<prov:key>k0</prov:key>
- </prov:keyValuePair>
- <prov:keyValuePair>
+ </prov:keyEntityPair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e1"/>
<prov:key>k1</prov:key>
- </prov:keyValuePair>
- <prov:keyValuePair>
+ </prov:keyEntityPair>
+ <prov:keyEntityPair>
<prov:entity prov:ref="e2"/>
<prov:key>k2</prov:key>
- </prov:keyValuePair>
+ </prov:keyEntityPair>
</prov:hadDictionaryMember>
<b><prov:derivedByRemovalFrom>
@@ -2577,14 +2577,22 @@
In this section, we specify some inferences and constraints associated with dictionaries. These inferences and constraints MAY be applied to obtain valid provenance when using dictionaries. For more information about valid provenance and its purpose, we refer to the <a href="http://www.w3.org/TR/2013/PR-prov-constraints-20130312/#purpose">disclaimer</a> in [[PROV-CONSTRAINTS]].
Whereas collections were deliberately left unconstrained in [[PROV-DM]] and [[PROV-CONSTRAINTS]] to remain as general as possible, dictionaries are intended to provide more structure, and thus, are constrained more strictly.
For more information on how to read this section, we refer to [[PROV-CONSTRAINTS]].
-
+<section id="dictionary-constraints-notation">
+ <h3>Notation and Conventions</h3>
+<p>In the constraints below, statements are made concerning the equality of sets of key-entity pairs and sets of keys. For the sake of clarity, we will explain the used notations here.</p>
+<ol>
+ <li>To state that a set of keys K1 and another set of keys K2 hold exactly the same keys, we use the notation K1 = K2.</li>
+ <li>To state that a set of key-entity pairs KV1 and another set of key-entity pairs KV2 hold exactly the same keys, with each key in KV1 mapped to exactly the same entity as the same key in KV2, we use the notation KV1 = KV2.</li>
+</ol>
+<p>For example. the sets of keys {"k1", "k2"} and {"k1", "k3", "k4"} are not considered equal, since one of the sets holds keys the other does not. Analogously, the set of key-entity pairs {("k1", e1),("k2", e2)} and the set {("k1", e2),("k2", e3)} are not considered equal, since the keys in the latter set map to different values than the same keys in the former set. The sets {("k1",e1),("k2",e2)} and {("k2",e2),("k1",e1)} are equal, because they hold the same keys, mapped to the same values, regardless of ordering.</p>
+</section>
<section id="dictionary-constraints-inferences">
<h3>Inferences</h3>
<p id="dmembership-cmembership-inference_text"><a href="#term-dictionary-membership">Dictionary membership</a> implies <a href=" http://www.w3.org/TR/2013/PR-prov-dm-20130312/#term-membership">collection membership</a>.</p>
<div class='inference' id='dmembership-cmembership-inference'>
<span class='ruleTitle'><a class="internalDFN" href="#dmembership-cmembership-inference">Inference D1 (dictionary-membership-collection-membership)</a></span>
<p>
-<span class="conditional">IF</span> <span class="name">hadDictionaryMember(d, e1, "k1")</span>
+<span class="conditional">IF</span> <span class="name">hadDictionaryMember(d, e1, k1)</span>
<span class='conditional'>THEN</span> <span class="name">hadMember(d, e1)</span>
</p></div>
@@ -2592,18 +2600,19 @@
<div class='inference' id='key-single-entity-inference'>
<span class='ruleTitle'><a class="internalDFN" href="#key-single-entity-inference">Inference D2 (key-single-entity)</a></span>
<p>
-<span class="conditional">IF</span> <span class="name">hadDictionaryMember(d1, e1, "k1")</span>
- and <span class="name">hadDictionaryMember(d1, e2, "k1")</span>
+<span class="conditional">IF</span> <span class="name">hadDictionaryMember(d1, e1, k1)</span>
+ and <span class="name">hadDictionaryMember(d1, e2, k1)</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'>
<span class='ruleTitle'><a class="internalDFN" href="#membership-insertion-membership-inference">Inference D3 (membership-insertion-membership)</a></span>
-<p>
-<span class="conditional">IF</span> <span class="name">hadDictionaryMember(d1, e, "k")</span>
- and <span class="name">derivedByInsertionFrom(d2, d1, {("k1", e1),...,("kn", en)})</span> and <span class="name">k</span> ∉ <span class="name">{"k1",...,"kn"}</span>
- <span class='conditional'>THEN</span> <span class="name">hadDictionaryMember(d2, e, "k")</span>
+<p>Here, KV1 is a set of key-entity pairs and K1 is the key-set of KV1.</p>
+ <p>
+<span class="conditional">IF</span> <span class="name">hadDictionaryMember(d1, e, k)</span>
+ and <span class="name">derivedByInsertionFrom(d2, d1, KV1)</span> and <span class="name">k</span> ∉ <span class="name">K1</span>
+ <span class='conditional'>THEN</span> <span class="name">hadDictionaryMember(d2, e, k)</span>
</p></div>
<!--REMOVED CONSTRAINT <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'>
@@ -2617,9 +2626,10 @@
<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. This inference also means that Insertion provides an "update semantics" for the keys that are already present in a dictionary.</p>
<div class='inference' id='insertion-membership-inference'>
<span class='ruleTitle'><a class="internalDFN" href="#insertion-membership-inference">Inference D4 (insertion-membership)</a></span>
-<p>
-<span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, {("k1", e1),...,("kn",en)})</span>
- <span class='conditional'>THEN</span> <span class="name">hadDictionaryMember(d2, ei, "ki") for each i ∈ [1..n]</span>
+ <p>Here, KV1 is a set of key-entity pairs.</p>
+ <p>
+<span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, KV1)</span>
+ <span class='conditional'>THEN</span> <span class="name">hadDictionaryMember(d2, e, k) for each (e, k) ∈ KV1</span>
</p></div>
@@ -2635,14 +2645,15 @@
<p id="insertion-derivation-inference_text">Insertion and removal are special cases of derivation.</p>
<div class='inference' id='insertion-derivation-inference'>
<span class='ruleTitle'><a class="internalDFN" href="#insertion-derivation-inference">Inference D5 (insertion-derivation)</a></span>
-<p>
-<span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, {("k1", e1),...,("kn",en)})</span>
+ <p>Here, KV1 is a set of key-entity pairs and K1 is a set of keys.</p>
+ <p>
+<span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, KV1)</span>
<span class='conditional'>THEN</span> <span class="name">wasDerivedFrom(d2, d1)</span>
</p></div>
<div class='inference' id='removal-derivation-inference'>
<span class='ruleTitle'><a class="internalDFN" href="#removal-derivation-inference">Inference D6 (removal-derivation)</a></span>
<p>
-<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, {"k1",...,"kn"})</span>
+<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>
@@ -2652,12 +2663,12 @@
<span class='ruleTitle'><a class="internalDFN" href="#insertion-removal-membership-inference">Inference D7 (insertion-removal-membership)</a></span>
<ol>
<li>
- <span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, {("k1", _e1)})</span> and
+ <span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, {("k1", e1)})</span> and
<span class="name">derivedByRemovalFrom(d3, d2, {"k1"})</span> and <span class="name">hadDictionaryMember(d1, e2, "k2")</span> and
<span class="name">k1 ≠ k2</span> <span class='conditional'>THEN</span> <span class="name">hadDictionaryMember(d3, e2, "k2")</span>
</li>
<li>
- <span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, {("k1", _e1)})</span> and
+ <span class="conditional">IF</span> <span class="name">derivedByInsertionFrom(d2, d1, {("k1", e1)})</span> and
<span class="name">derivedByRemovalFrom(d3, d2, {"k1"})</span> and <span class="name">hadDictionaryMember(d3, e2, "k2")</span> and
<span class="name">k1 ≠ k2</span> <span class='conditional'>THEN</span> <span class="name">hadDictionaryMember(d1, e2, "k2")</span>
</li>
@@ -2678,17 +2689,18 @@
<div class='constraint' id='impossible-removal-membership-constraint'>
<span class='ruleTitle'><a class="internalDFN" href="#impossible-removal-membership-constraint">Constraint D8 (impossible-removal-membership)</a></span>
<p>
-<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, {"k1",...,"kn"})</span> and
- <span class="name">hadDictionaryMember(d2, e, "ki")</span> and <span class="name">i ∈ [1..n]</span> <span class='conditional'>THEN</span> <span
+ <p>Here, <span class="name">K1</span> is a set of key-entity pairs.</p>
+<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, K1)</span> and
+ <span class="name">hadDictionaryMember(d2, e, k)</span> and <span class="name">k ∈ K1</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-constraint'>
<span class='ruleTitle'><a class="internalDFN" href="#impossible-removal-insertion-constraint">Constraint D9 (impossible-removal-insertion)</a></span>
- <p>Here, <span class="name">KV1</span> and <span class="name">KV2</span> are sets of key-entity pairs.</p>
+ <p>Here, <span class="name">K1</span> is a set of keys and <span class="name">KV2</span> is a set of key-entity pairs.</p>
<p>
-<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, KV1)</span> and
+<span class="conditional">IF</span> <span class="name">derivedByRemovalFrom(d2, d1, K1)</span> and
<span class="name">derivedByInsertionFrom(d2, d1, KV2)</span><span class='conditional'>THEN</span> <span
class="conditional">INVALID</span>
</p></div>