--- a/model/prov-constraints.html Thu Aug 16 15:23:19 2012 +0100
+++ b/model/prov-constraints.html Thu Aug 16 15:37:02 2012 +0100
@@ -783,192 +783,193 @@
<p> As set out in other specifications, the identifiers used in PROV
documents have associated type information. An identifier can have
more than one type, reflecting subtyping or allowed overlap between
-types, and so we define a set of types of each identifier, $<typeof(id)>$. Some types are, however,
+types, and so we define a set of types of each identifier, <span class="name">typeof(id)</span>. Some types are, however,
required not to overlap (for example, no identifier can describe both
an entity and an activity).
In addition, an identifier cannot be used to identify both an object
(that is, an entity, activity or agent) and a property (that is, a
named event such as usage, generation, or a relationship such as
attribution.)
-This specification includes disjointness and typing constraints that
+This specification includes <a href="#type-constraints">disjointness and typing constraints</a> that
check these requirements. Here, we merely
summarize the type constraints in <a href="#typing-table">Table 1</a>.
</p>
-
- <table id="typing-table" border="1" class="thinborder" style="margin-left: auto; margin-right: auto; border-color: black;">
+<div id="typing-table-fig">
+ <table id="typing-table" border="1"class="thinborder" style="margin-left: auto; margin-right: auto; border-color: black;">
<caption id="typing-table-caption">Table 1: Summary of Typing Constraints</caption>
<tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr>
<tr>
- <th>Relation</th>
- <th>Identifier </th>
- <th>Types</th>
+ <th>In relation...</th>
+ <th>identifier</th>
+ <th>has type(s)...</th>
</tr>
- <tr>
+ <tr align="center" >
<td class="name">entity(e,attrs)</td>
- <td class="name">e</td>
+ <td class="name" align="center">e</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center" >
<td class="name">activity(a,t1,t2,attrs)</td>
<td class="name">a</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center" >
<td class="name">agent(ag,attrs)</td>
<td class="name">ag</td>
<td class="name">'agent'</td>
- </tr> <tr>
+ </tr>
+ <tr align="center" >
<td rowspan="2" class="name">used(id; a,e,t,attrs)</td>
<td class="name">e</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center" >
<td class="name">a</td>
<td class="name">'activity'</td>
</tr>
- <tr >
+ <tr align="center" >
<td rowspan="2" class="name">wasGeneratedBy(id; e,a,t,attrs)</td>
<td class="name">e</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">a</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="2" class="name">wasInformedBy(id; a2,a1,attrs)</td>
<td class="name">a1</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">a2</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan=3 class="name">wasStartedBy(id; a2,e,a1,t,attrs)</td>
<td class="name">a2</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">e</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">a1</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="3" class="name">wasEndedBy(id; a2,e,a1,t,attrs)</td>
<td class="name">a2</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">e</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">a1</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="2" class="name">wasInvalidatedBy(id; e,a,t,attrs)</td>
<td class="name">a</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">a</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="3" class="name">wasDerivedFrom(id; e2,e1,a,g,u,attrs)</td>
<td class="name">e2</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">e1</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">a</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="2" class="name">wasAttributedTo(id; e,ag,attr)</td>
<td class="name">e</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">ag</td>
<td class="name">'agent'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="3" class="name">wasAssociatedWith(id; a,ag,pl,attrs)</td>
<td class="name">a</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">ag</td>
<td class="name">'agent'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">pl</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="3" class="name">actedOnBehalfOf(id; ag2,ag1,a,attrs)</td>
<td class="name">ag2</td>
<td class="name">'agent'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">ag1</td>
<td class="name">'agent'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">a</td>
<td class="name">'activity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="2" class="name">alternateOf(e1,e2)</td>
<td class="name">e1</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">e2</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="2" class="name">specializationOf(e1,e2)</td>
<td class="name">e1</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">e2</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="3" class="name">mentionOf(e1,e2,b)</td>
<td class="name">e1</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">e2</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">b</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td rowspan="2" class="name">hadMember(c,e)</td>
<td class="name">c</td>
<td class="name">'entity'<br /> 'prov:Collection'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">e</td>
<td class="name">'entity'</td>
</tr>
- <tr>
+ <tr align="center">
<td class="name">entity(c,[prov:type='prov:EmptyCollection,...])</td>
<td class="name">c</td>
<td class="name">'entity'<br /> 'prov:Collection' <br /> 'prov:EmptyCollection'</td>
@@ -1004,7 +1005,7 @@
</p>
- <h2>Constants, Variables and Placeholders</h2>
+ <h4>Constants, Variables and Placeholders</h4>
<p>
PROV statements involve identifiers (URIs), literals,
placeholders, and attribute lists. However, in order to specify
@@ -1039,7 +1040,7 @@
</p>
- <h2>Substitution</h2>
+ <h4>Substitution</h4>
<p>A substitution is a function that maps variables to terms. Concretely, since we only
need to consider substitutions of finite sets of variables, we can
write substitutions as <span class="math">[x_1 = t_1,...,x_n=t_n]</span>. A substitution
@@ -1058,7 +1059,7 @@
- <h2>Formulas</h2>
+ <h4>Formulas</h4>
<p>
For the purpose of constraint checking, we view PROV statements
(possibly involving existential variables) as
@@ -1097,7 +1098,7 @@
</ul>
- <h2>Satisfying definitions, inferences, and constraints</h2>
+ <h4>Satisfying definitions, inferences, and constraints</h4>
<p>
In logic, a formula's meaning is defined by saying when it is
<em>satisfied</em> in a situation. Likewise, we can view
@@ -1111,7 +1112,7 @@
<li>Ordering constraints</li>
</ol>
-<h2>Merging</h2>
+<h4>Merging</h4>
<p>Merging is an operation that takes two terms and compares them to
see if they are equal, or can be made equal by substituting an
@@ -1121,7 +1122,7 @@
</p>
- <h2>Applying definitions, inferences, and constraints</h2>
+ <h4>Applying definitions, inferences, and constraints</h4>
<p>Formulas can also be interpreted as having computational
content. That is, if an instance does not satisfy a formula, we can
often <em>apply</em> the formula to the instance to produce another
@@ -1154,7 +1155,7 @@
</p>
- <h2>Termination</h2>
+ <h4>Termination</h4>
<p>
It is possible to define sets of formulas such that normalization
does not terminate, that is, such that there is an infinite sequence
@@ -1187,7 +1188,7 @@
indirectly referenced in other relations.
</p>
- <h2>Checking ordering, typing, and impossibility constraints</h2>
+ <h4>Checking ordering, typing, and impossibility constraints</h4>
<p>
The ordering, typing, and impossibility constraints are checked
rather than applied. This means that they do not generate new
@@ -1223,7 +1224,7 @@
- <h2>Equivalence and Isomorphism</h2>
+ <h4>Equivalence and Isomorphism</h4>
<p> Given two normal forms, a natural question is whether they contain
the same information, that is, whether they are equivalent (if so,
then the original instances are also equivalent.) By analogy with
@@ -1254,7 +1255,7 @@
those obtained by the algorithm in this specification.
</p>
-<h2>From Instances to Documents</h2>
+<h4>From Instances to Documents</h4>
<p>PROV documents can contain multiple instances: a <a>toplevel
instance</a>, the set of statements not appearing within a bundle, and