--- a/model/prov-constraints.html Fri Jun 08 13:38:58 2012 +0100
+++ b/model/prov-constraints.html Fri Jun 08 13:55:56 2012 +0100
@@ -2082,125 +2082,10 @@
<h4>Dictionaries and Contents</h4>
-<p>We model the contents of a dictionary with a function contents that has the following signature
- Dictionary x Value -> Entity U {⊥,?}.</p>
-
-<p>Given a dictionary <span class="name">d</span>, a value <span class="name">k</span>, contents is interpreted as follows:</p>
-<ul>
-<li>contents(d,<em>k</em>)=<em>e</em>: there is an entry with key <em>k</em> and entity <em>e</em> in <span class="name">d</span>;
-<li>contents(d,<em>k</em>)=⊥: there is no entry with key <em>k</em> in <span class="name">d</span>;
-
-<li>contents(d,<em>k</em>)=?: it is not known if there is an entry with key <em>k</em> in <span class="name">d</span>.
-</ul>
-
-<p id="contents-empty-dictionary_text">The contents of an EmptyDictionary is defined as the empty set.</p>
-
- <div class='inference' id="contents-empty-dictionary">
-<p>
- For any dictionary <span class="name">d</span>,
-<span class='conditional'>IF</span>
-<span class="name">entity(d, [prov:type='prov:EmptyDictionary'])</span>,
- <span class='conditional'>THEN</span>:</p>
-<ul>
-<li> <span class="name">contents(d,<em>k</em>)=⊥</span> for any <em>k</em>.
-</ul>
-</div>
-
-
-<p id="contents-unspecified-dictionary_text">By default, the contents of a dictionary is unknown.</p>
-
- <div class='inference' id="contents-unspecified-dictionary">
-<p>
- For any dictionary <span class="name">d</span>,
-<span class='conditional'>IF</span>
-<span class="name">entity(d, [prov:type='prov:Dictionary'])</span>,
- <span class='conditional'>THEN</span>:</p>
-<ul>
-<li> <span class="name">contents(d,<em>k</em>)=?</span> for any <em>k</em>.
-</ul>
-</div>
-
-<p id="contents-after-insertion_text">The contents of a dictionary after insertion is defined as follows.</p>
-
- <div class='inference' id="contents-after-insertion">
-<p>
- For any dictionaries <span class="name">d1</span> and <span class="name">d2</span>,
-<span class='conditional'>IF</span>
-<span class="name">derivedByInsertionFrom(d2, d1, {(<em>k1</em>, <em>e1</em>) ... (<em>kn</em>, <em>en</em>)})</span>,
- <span class='conditional'>THEN</span>:</p>
-<ul>
-<li> <span class="name">contents(d2,<em>k</em>)=contents(d1,<em>k</em>)</span> if <em>k</em> is not in <em>k1</em>, ..., <em>kn</em>;
-<li> <span class="name">contents(d2,<em>ki</em>)=<em>ei</em></span> if <em>k</em> is in <em>k1</em>, ..., <em>kn</em>;
-</ul>
-</div>
-
-
-<p id="contents-after-removal_text">The contents of a dictionary after removal is defined as follows.</p>
-
- <div class='inference' id="contents-after-removal">
-<p>
- For any dictionaries <span class="name">d1</span> and <span class="name">d2</span>,
-<span class='conditional'>IF</span>
-<span class="name">derivedByRemovalFrom(d2, d1, {<em>k1</em> ... <em>kn</em>})</span>,
- <span class='conditional'>THEN</span>:</p>
-<ul>
-<li> <span class="name">contents(d2,<em>k</em>)=contents(d1,<em>k</em>)</span> if <em>k</em> is not in <em>k1</em>, ..., <em>kn</em>;
-<li> <span class="name">contents(d2,<em>ki</em>)=⊥</span> if <em>k</em> is in <em>k1</em>, ..., <em>kn</em>.
-</ul>
-</div>
-
-
-<p id="contents-after-membership_text">The contents of a dictionary after membership is defined as follows.</p>
-
- <div class='inference' id="contents-after-membership">
-<p>
- For any dictionary <span class="name">d</span>,
-<span class='conditional'>IF</span>
-<span class="name">memberOf(d, {(<em>k1</em>, <em>e1</em>) ... (<em>kn</em>, <em>en</em>)})</span>,
- <span class='conditional'>THEN</span>:</p>
-<ul>
-<li> <span class="name">contents(d,<em>k</em>)=?</span> if <em>k</em> is not in <em>k1</em>, ..., <em>kn</em>;
-<li> <span class="name">contents(d,<em>ki</em>)=<em>ei</em></span> if <em>k</em> is in <em>k1</em>, ..., <em>kn</em>.
-</ul>
-</div>
-
-
-
-<p id="contents-after-complete-membership_text">The contents of a dictionary after complete membership is defined as follows.</p>
-
- <div class='inference' id="contents-after-complete-membership">
-<p>
- For any dictionary <span class="name">d</span>,
-<span class='conditional'>IF</span>
-<span class="name">memberOf(d, {(<em>k1</em>, <em>e1</em>) ... (<em>kn</em>, <em>en</em>)}, true)</span>,
- <span class='conditional'>THEN</span>:</p>
-<ul>
-<li> <span class="name">contents(d,<em>k</em>)=⊥</span> if <em>k</em> is not in <em>k1</em>, ..., <em>kn</em>;
-<li> <span class="name">contents(d,<em>ki</em>)=<em>ei</em></span> if <em>k</em> is in <em>k1</em>, ..., <em>kn</em>.
-</ul>
-</div>
-
-
-
-
-<p id="contents-after-complete-membership_text">Succcessfully looking up a key in a dictionary results in an entity, which is an alternate of an entity known to be in the dictionary. </p>
-
- <div class='inference' id="lookup-and-membership">
-<p>
-<span class='conditional'>IF</span>
-<span class="name">wasDerivedFrom(e2,d,[prov:key=<em>k</em>, prov:type='prov:Lookup'])</span>, and
-<span class="name">contents(d,<em>k</em>)=e1</em></span>
- <span class='conditional'>THEN</span>: <span class="name">alternateOf(e2,e1)</span>.
-
-</div>
-
-
-
-
-
-
+<div class="note">
+Axiomatisation of dictionaries to be expressed here. See <a href="./working-copy/wd6-collections-constraints.html">here</a>.
+</div>
</section>
-
</section> <!-- dictionary-constraints -->
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/model/working-copy/wd6-collections-constraints.html Fri Jun 08 13:55:56 2012 +0100
@@ -0,0 +1,417 @@
+<!DOCTYPE html
+>
+
+<html><head>
+ <title>PROV-DM: The PROV Data Model</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <!--
+ === NOTA BENE ===
+ For the three scripts below, if your spec resides on dev.w3 you can check them
+ out in the same tree and use relative links so that they'll work offline,
+ -->
+<!-- PM -->
+ <style type="text/css">
+ .note { font-size:small; margin-left:50px }
+ </style>
+
+ <script src="http://dev.w3.org/2009/dap/ReSpec.js/js/respec.js" class="remove"></script>
+ <script src="http://www.w3.org/2007/OWL/toggles.js" class="remove"></script>
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" class="remove"></script>
+
+ <script src="../glossary.js" class="remove"></script>
+
+ <script class="remove">
+ function updateGlossaryRefs() {
+ $('.glossary-ref').each(function(index) {
+ var ref=$(this).attr('data-ref');
+ var span=$(this).attr('data-withspan')
+ $(this).removeAttr('data-withspan');
+ $(this).removeAttr('data-ref');
+
+ $('#'+ref+'.glossary').contents().clone().appendTo($(this));
+// $(this).attr("prov:hadOriginalSource",glossary_hg);
+ if (span) {
+ $(this).children('dfn').replaceWith(function(){return $('<span>').addClass('dfn').append($(this).contents())});
+ }
+ });
+ }
+ $(document).ready(function(){
+ // if glossary is in a string:
+ $('#glossary_div').html(glossary_string)
+ updateGlossaryRefs();
+ });
+
+ </script>
+
+ <script class="remove">
+ var addExtraReferences = function() {
+ for (var k in extraReferences)
+ berjon.biblio[k] = extraReferences[k];
+ };
+ var extraReferences = {
+ "CLOCK":
+ "Lamport, L. "+
+ "<a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\"><cite>Time, clocks, and the ordering of events in a distributed system</cite></a>."+
+ "Communications of the ACM 21 (7): 558–565. 1978. "+
+ "URL: <a href=\"http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf\">http://research.microsoft.com/users/lamport/pubs/time-clocks.pdf</a> " +
+ "DOI: doi:10.1145/359545.359563.",
+ "CSP":
+ "Hoare, C. A. R. "+
+ "<a href=\"http://www.usingcsp.com/cspbook.pdf\"><cite>Communicating Sequential Processes</cite></a>."+
+ "Prentice-Hall. 1985"+
+ "URL: <a href=\"http://www.usingcsp.com/cspbook.pdf\">http://www.usingcsp.com/cspbook.pdf</a>",
+ "Logic":
+ "W. E. Johnson"+
+ "<a href=\"http://www.ditext.com/johnson/intro-3.html\"><cite>Logic: Part III</cite></a>."+
+ "1924. "+
+ "URL: <a href=\"http://www.ditext.com/johnson/intro-3.html\">http://www.ditext.com/johnson/intro-3.html</a>",
+ "PROV-SEM":
+ "James Cheney "+
+ "<a href=\"http://www.w3.org/2011/prov/wiki/FormalSemanticsStrawman\"><cite>Formal Semantics Strawman</cite></a>. "+
+ "2011, Work in progress. "+
+ "URL: <a href=\"http://www.w3.org/2011/prov/wiki/FormalSemanticsStrawman\">http://www.w3.org/2011/prov/wiki/FormalSemanticsStrawman</a>",
+
+ "PROV-PRIMER":
+ "Yolanda Gil and Simon Miles (eds.) Khalid Belhajjame, Helena Deus, Daniel Garijo, Graham Klyne, Paolo Missier, Stian Soiland-Reyes, and Stephan Zednik "+
+ "<a href=\"http://www.w3.org/TR/prov-primer/\"><cite>Prov Model Primer</cite></a>. "+
+ "2011, Working Draft. "+
+ "URL: <a href=\"http://www.w3.org/TR/prov-primer/\">http://www.w3.org/TR/prov-primer/</a>",
+
+ "PROV-O":
+ "Satya Sahoo and Deborah McGuinness (eds.) Khalid Belhajjame, James Cheney, Daniel Garijo, Timothy Lebo, Stian Soiland-Reyes, and Stephan Zednik "+
+ "<a href=\"http://www.w3.org/TR/prov-o/\"><cite>Provenance Formal Model</cite></a>. "+
+ "2011, Working Draft. "+
+ "URL: <a href=\"http://www.w3.org/TR/prov-o/\">http://www.w3.org/TR/prov-o/</a>",
+
+
+ "PROV-CONSTRAINTS":
+ "James Cheney, Paolo Missier, and Luc Moreau (eds.) "+
+ "<a href=\"http://www.w3.org/TR/prov-constraints/\"><cite>Constraints of the PROV Data Model</cite></a>. "+
+ "2011, Working Draft. "+
+ "URL: <a href=\"http://www.w3.org/TR/prov-constraints/\">http://www.w3.org/TR/prov-constraints/</a>",
+
+ "PROV-N":
+ "Luc Moreau and Paolo Missier (eds.)"+
+ "<a href=\"http://www.w3.org/TR/prov-n/\"><cite>PROV-N: The Provenance Notation</cite></a>. "+
+ "2011, Working Draft. "+
+ "URL: <a href=\"http://www.w3.org/TR/prov-n/\">http://www.w3.org/TR/prov-n/</a>",
+
+ "PROV-AQ":
+ "Graham Klyne and Paul Groth (eds.) Luc Moreau, Olaf Hartig, Yogesh Simmhan, James Meyers, Timothy Lebo, Khalid Belhajjame, and Simon Miles "+
+ "<a href=\"http://www.w3.org/TR/prov-aq/\"><cite>Provenance Access and Query</cite></a>. "+
+ "2011, Working Draft. "+
+ "URL: <a href=\"http://www.w3.org/TR/prov-aq/\">http://www.w3.org/TR/prov-aq/</a>",
+ };
+ var respecConfig = {
+ // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
+ specStatus: "ED",
+
+ // the specification's short name, as in http://www.w3.org/TR/short-name/
+ shortName: "prov-dm",
+
+ // if your specification has a subtitle that goes below the main
+ // formal title, define it here
+ subtitle : "working towards WD6 (<a href=\"diff.html\">Diffs since last release</a>)",
+
+
+ // if you wish the publication date to be other than today, set this
+// publishDate: "2012-05-03",
+
+ // if the specification's copyright date is a range of years, specify
+ // the start date here:
+ copyrightStart: "2011",
+
+ // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date
+ // and its maturity status
+ previousPublishDate: "2012-05-03",
+ previousMaturity: "WD",
+
+ // if there a publicly available Editor's Draft, this is the link
+ edDraftURI: "http://dvcs.w3.org/hg/prov/raw-file/default/model/prov-dm.html",
+
+ // if this is a LCWD, uncomment and set the end of its review period
+ // lcEnd: "2009-08-05",
+
+ // if you want to have extra CSS, append them to this list
+ // it is recommended that the respec.css stylesheet be kept
+ extraCSS: ["http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css", "./extra-dm.css"],
+
+ // editors, add as many as you like
+ // only "name" is required
+ editors: [
+ { name: "Luc Moreau", url: "http://www.ecs.soton.ac.uk/~lavm/",
+ company: "University of Southampton" },
+ { name: "Paolo Missier", url: "http://www.cs.ncl.ac.uk/people/Paolo.Missier",
+ company: "Newcastle University" },
+ ],
+
+ // authors, add as many as you like.
+ // This is optional, uncomment if you have authors as well as editors.
+ // only "name" is required. Same format as editors.
+
+ authors: [
+ { name: "Khalid Belhajjame", url: "http://semanticweb.org/wiki/Khalid_Belhajjame",
+ company: "University of Manchester" },
+ { name: "Reza B'Far",
+ company: "Oracle Corporation" },
+ { name: "Stephen Cresswell",
+ company: "legislation.gov.uk"},
+ { name: "Yolanda Gil",
+ company: "Invited Expert", url:"http://www.isi.edu/~gil/"},
+ { name: "Paul Groth", url: "http://www.few.vu.nl/~pgroth/",
+ company: "VU University of Amsterdam" },
+ { name: "Graham Klyne",
+ company: "University of Oxford" },
+ { name: "Jim McCusker", url: "http://tw.rpi.edu/web/person/JamesMcCusker",
+ company: "Rensselaer Polytechnic Institute" },
+ { name: "Simon Miles",
+ company: "Invited Expert", url:"http://www.inf.kcl.ac.uk/staff/simonm/" },
+ { name: "James Myers", url:"http://www.rpi.edu/research/ccni/",
+ company: "Rensselaer Polytechnic Institute"},
+ { name: "Satya Sahoo", url:"http://cci.case.edu/cci/index.php/Satya_Sahoo",
+ company: "Case Western Reserve University" },
+ { name: "Curt Tilmes",
+ company: "National Aeronautics and Space Administration" },
+ ],
+
+ // name of the WG
+ wg: "Provenance Working Group",
+
+ // URI of the public WG page
+ wgURI: "http://www.w3.org/2011/prov/",
+
+ // name (with the @w3c.org) of the public mailing to which comments are due
+ wgPublicList: "public-prov-wg",
+
+ // URI of the patent status for this WG, for Rec-track documents
+ // !!!! IMPORTANT !!!!
+ // This is important for Rec-track documents, do not copy a patent URI from a random
+ // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
+ // Team Contact.
+ wgPatentURI: "http://www.w3.org/2004/01/pp-impl/46974/status",
+
+ // Add extraReferences to bibliography database
+ preProcess: [addExtraReferences],
+ };
+ </script>
+ </head>
+ <body>
+
+ <section id="abstract">
+<p>
+PROV-DM, the PROV data model, is a data model for provenance that describes
+the entities, people and activities involved in
+producing a piece of data or thing.
+PROV-DM distinguishes core structures, forming the essence of provenance descriptions, from
+extended structures catering for more advanced uses of provenance.
+PROV-DM is organized in six components, respectively dealing with:
+(1) entities and activities, and the time at which they were created, used, or ended;
+(2) agents bearing responsibility for entities that were generated and activities that happened;
+(3) derivations of entities from entities;
+(4) properties to link entities that refer to the same thing;
+(5) notion of bundle, a mechanism to support provenance of provenance;
+(6) collections forming a logical structure for its members.
+</p>
+
+<p>This document introduces the provenance concepts found in
+PROV and defines PROV-DM types and
+relations. PROV data model is domain-agnostic, but is equipped with
+extensibility points allowing domain-specific information to be included. </p>
+
+<p>Two further documents complete the specification of PROV-DM.
+First, a companion document specifies the set of constraints that
+provenance descriptions should follow. Second,
+a separate document describes a provenance notation for expressing
+instances of provenance for human consumption; this notation is used in examples in
+this document. </p>
+
+ </section>
+
+<section id="sotd">
+<h4>PROV Family of Specifications</h4>
+This document is part of the PROV family of specifications, a set of specifications defining various aspects that are necessary to achieve the vision of inter-operable
+interchange of provenance information in heterogeneous environments such as the Web. The specifications are:
+<ul>
+<li> PROV-DM, the PROV data model for provenance (this document);</li>
+<li> PROV-CONSTRAINTS, a set of constraints applying to the PROV data model;</li>
+<li> PROV-N, a notation for provenance aimed at human consumption;</li>
+<li> PROV-O, the PROV ontology, an OWL-RL ontology allowing the mapping of PROV to RDF;</li>
+<li> PROV-AQ, the mechanisms for accessing and querying provenance; </li>
+<li> PROV-PRIMER, a primer for the PROV data model;</li>
+<li> PROV-SEM, a formal semantics for the PROV data model;</li>
+<li> PROV-XML, an XML schema for the PROV data model.</li>
+</ul>
+<h4>How to read the PROV Family of Specifications</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 OWL-RL ontology. For further details, PROV-DM and PROV-CONSTRAINTS specify the constraints applicable to the data model, and its interpretation. PROV-SEM provides a mathematical semantics.</li>
+<li>The XML community should focus on PROV-XML defining an XML schema for PROV. Further details can also be found in PROV-DM, PROV-CONSTRAINTS, and PROV-SEM.</li>
+<li>Developers seeking to retrieve or publish provenance should focus on PROV-AQ.</li>
+<li>Readers seeking to implement other PROV serializations
+should focus on PROV-DM and PROV-CONSTRAINTS. PROV-O, PROV-N, PROV-XML offer examples of mapping to RDF, text, and XML, respectively.</li>
+</ul>
+
+
+<h4>Fourth Public Working Draft</h4>
+<p>This is the fourth public release of the PROV-DM document. Following feedback, the Working Group has decided to reorganize this document substantially, separating the data model from its contraints and the notation used to illustrate it. The PROV-DM release is synchronized with the release of the PROV-O, PROV-PRIMER, PROV-N, and PROV-CONSTRAINTS documents. We are now clarifying the entry path to the PROV family of specifications.</p>
+</section>
+
+
+
+
+<!-- <div class="buttonpanel">
+<form action="#"><p>
+<input id="hide-asn" onclick="set_display_by_class('div','withAsn','none');set_display_by_class('span','withAsn','none'); set_display_by_id('hide-asn','none'); set_display_by_id('show-asn','');" type="button"
+value="Hide ASN" />
+<input id="show-asn" onclick="set_display_by_class('div','withAsn',''); set_display_by_class('span','withAsn',''); set_display_by_id('hide-asn',''); set_display_by_id('show-asn','none');" style="display: none"
+type="button" value="Show ASN" />
+</p>
+</form>
+</div>
+-->
+
+
+<section id="dictionaries-and-contents">
+
+
+<h4>Dictionaries and Contents</h4>
+
+<p>We model the contents of a dictionary with a function contents that has the following signature
+ Dictionary x Value -> Entity U {⊥,?}.</p>
+
+<p>Given a dictionary <span class="name">d</span>, a value <span class="name">k</span>, contents is interpreted as follows:</p>
+<ul>
+<li>contents(d,<em>k</em>)=<em>e</em>: there is an entry with key <em>k</em> and entity <em>e</em> in <span class="name">d</span>;
+<li>contents(d,<em>k</em>)=⊥: there is no entry with key <em>k</em> in <span class="name">d</span>;
+
+<li>contents(d,<em>k</em>)=?: it is not known if there is an entry with key <em>k</em> in <span class="name">d</span>.
+</ul>
+
+<p id="contents-empty-dictionary_text">The contents of an EmptyDictionary is defined as the empty set.</p>
+
+ <div class='inference' id="contents-empty-dictionary">
+<p>
+ For any dictionary <span class="name">d</span>,
+<span class='conditional'>IF</span>
+<span class="name">entity(d, [prov:type='prov:EmptyDictionary'])</span>,
+ <span class='conditional'>THEN</span>:</p>
+<ul>
+<li> <span class="name">contents(d,<em>k</em>)=⊥</span> for any <em>k</em>.
+</ul>
+</div>
+
+
+<p id="contents-unspecified-dictionary_text">By default, the contents of a dictionary is unknown.</p>
+
+ <div class='inference' id="contents-unspecified-dictionary">
+<p>
+ For any dictionary <span class="name">d</span>,
+<span class='conditional'>IF</span>
+<span class="name">entity(d, [prov:type='prov:Dictionary'])</span>,
+ <span class='conditional'>THEN</span>:</p>
+<ul>
+<li> <span class="name">contents(d,<em>k</em>)=?</span> for any <em>k</em>.
+</ul>
+</div>
+
+<p id="contents-after-insertion_text">The contents of a dictionary after insertion is defined as follows.</p>
+
+ <div class='inference' id="contents-after-insertion">
+<p>
+ For any dictionaries <span class="name">d1</span> and <span class="name">d2</span>,
+<span class='conditional'>IF</span>
+<span class="name">derivedByInsertionFrom(d2, d1, {(<em>k1</em>, <em>e1</em>) ... (<em>kn</em>, <em>en</em>)})</span>,
+ <span class='conditional'>THEN</span>:</p>
+<ul>
+<li> <span class="name">contents(d2,<em>k</em>)=contents(d1,<em>k</em>)</span> if <em>k</em> is not in <em>k1</em>, ..., <em>kn</em>;
+<li> <span class="name">contents(d2,<em>ki</em>)=<em>ei</em></span> if <em>k</em> is in <em>k1</em>, ..., <em>kn</em>;
+</ul>
+</div>
+
+
+<p id="contents-after-removal_text">The contents of a dictionary after removal is defined as follows.</p>
+
+ <div class='inference' id="contents-after-removal">
+<p>
+ For any dictionaries <span class="name">d1</span> and <span class="name">d2</span>,
+<span class='conditional'>IF</span>
+<span class="name">derivedByRemovalFrom(d2, d1, {<em>k1</em> ... <em>kn</em>})</span>,
+ <span class='conditional'>THEN</span>:</p>
+<ul>
+<li> <span class="name">contents(d2,<em>k</em>)=contents(d1,<em>k</em>)</span> if <em>k</em> is not in <em>k1</em>, ..., <em>kn</em>;
+<li> <span class="name">contents(d2,<em>ki</em>)=⊥</span> if <em>k</em> is in <em>k1</em>, ..., <em>kn</em>.
+</ul>
+</div>
+
+
+<p id="contents-after-membership_text">The contents of a dictionary after membership is defined as follows.</p>
+
+ <div class='inference' id="contents-after-membership">
+<p>
+ For any dictionary <span class="name">d</span>,
+<span class='conditional'>IF</span>
+<span class="name">memberOf(d, {(<em>k1</em>, <em>e1</em>) ... (<em>kn</em>, <em>en</em>)})</span>,
+ <span class='conditional'>THEN</span>:</p>
+<ul>
+<li> <span class="name">contents(d,<em>k</em>)=?</span> if <em>k</em> is not in <em>k1</em>, ..., <em>kn</em>;
+<li> <span class="name">contents(d,<em>ki</em>)=<em>ei</em></span> if <em>k</em> is in <em>k1</em>, ..., <em>kn</em>.
+</ul>
+</div>
+
+
+
+<p id="contents-after-complete-membership_text">The contents of a dictionary after complete membership is defined as follows.</p>
+
+ <div class='inference' id="contents-after-complete-membership">
+<p>
+ For any dictionary <span class="name">d</span>,
+<span class='conditional'>IF</span>
+<span class="name">memberOf(d, {(<em>k1</em>, <em>e1</em>) ... (<em>kn</em>, <em>en</em>)}, true)</span>,
+ <span class='conditional'>THEN</span>:</p>
+<ul>
+<li> <span class="name">contents(d,<em>k</em>)=⊥</span> if <em>k</em> is not in <em>k1</em>, ..., <em>kn</em>;
+<li> <span class="name">contents(d,<em>ki</em>)=<em>ei</em></span> if <em>k</em> is in <em>k1</em>, ..., <em>kn</em>.
+</ul>
+</div>
+
+
+
+
+<p id="contents-after-complete-membership_text">Succcessfully looking up a key in a dictionary results in an entity, which is an alternate of an entity known to be in the dictionary. </p>
+
+ <div class='inference' id="lookup-and-membership">
+<p>
+<span class='conditional'>IF</span>
+<span class="name">wasDerivedFrom(e2,d,[prov:key=<em>k</em>, prov:type='prov:Lookup'])</span>, and
+<span class="name">contents(d,<em>k</em>)=e1</em></span>
+ <span class='conditional'>THEN</span>: <span class="name">alternateOf(e2,e1)</span>.
+
+</div>
+
+
+
+
+
+
+</section>
+
+
+</section>
+
+
+
+<div id="glossary_div" class="remove">
+<!-- glossary loaded from glossary.js will be hooked up here,
+ class remove, will remove this element from the final output.
+-->
+</div>
+
+<section class="appendix">
+ <h2>Acknowledgements</h2>
+ <p>
+ WG membership to be listed here.
+ </p>
+ </section>
+
+ </body>
+</html>