Binary file model/images/Collections.png has changed
Binary file model/images/PROV-modelSketch.zargo has changed
Binary file model/images/collections.png has changed
--- a/model/prov-dm.html Thu Mar 29 09:14:40 2012 +0100
+++ b/model/prov-dm.html Thu Mar 29 10:20:00 2012 -0400
@@ -1940,7 +1940,7 @@
<div style="text-align: center;">
<figure>
<img src="images/Collections.png" alt="collections"/>
-<figcaption id="figure-component5">Collections Component Overview</figcaption>
+<figcaption id="figure-component5">Collections Component Overview (TODO)</figcaption>
</figure>
</div>
--- a/model/prov-n.html Thu Mar 29 09:14:40 2012 +0100
+++ b/model/prov-n.html Thu Mar 29 10:20:00 2012 -0400
@@ -1145,9 +1145,204 @@
<div class="note">Grammar for collections MAY under go minor syntactic changes since it has not been implemented yet.</div>
-In the productions in this section, nonterminals <span class="nonterminal">keyValuePairs</span> and <span class="nonterminal">keySet</span> are defined as follows.
+<section id="expression-collection-insertion">
+<h3>Insertion</h3>
+
+<p>A Derivation-by-Insertion relation's text matches the <span class="nonterminal">derivationByInsertionFromExpression</span> production.</p>
<div class="grammar">
+ <span class="nonterminal">derivationByInsertionFromExpression</span> ::=
+<span class="name">derivedByInsertionFrom</span>
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">beforeIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">keyidentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">validentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+ <span class="name">)</span>
+ <br>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+derivedByInsertionFrom(id, c1, c, "k1", v1)
+derivedByInsertionFrom(id, c1, c, "k1", v1, [])
+</pre>
+</div>
+
+
+</section>
+
+<section id="expression-collection-removal">
+<h3>Removal</h3>
+
+<p>A Derivation-by-Removal relation's text matches the <span class="nonterminal">derivationByRemovalFromExpression</span> production.</p>
+
+<div class="grammar">
+ <span class="nonterminal">derivationByRemovalFromExpression</span> ::=
+<span class="name">derivedByRemovalFrom</span>
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">beforeIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">keyidentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+ <span class="name">)</span>
+ <br>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+derivedByRemovalFrom(id, c1, c, "k1")
+derivedByRemovalFrom(id, c1, c, "k1", [])
+ </pre>
+</div>
+
+</section>
+
+
+<section id="expression-collection-containment">
+<h3>Containment</h3>
+
+<p>A Containment relation's text matches the <span class="nonterminal">containedExpression</span> production.</p>
+
+<div class="grammar">
+ <span class="nonterminal">containedExpression</span> ::=
+<span class="name">contained</span>
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">keyidentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">validentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+ <span class="name">)</span>
+ <br>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+contained(id, c, "k", v)
+contained(id, c, "k", v,[])
+</pre>
+</div>
+
+</section>
+
+<section id="expression-bulk-insertion">
+<h3>Bulk Insertion</h3>
+
+<p>A Derivation-by-Bulk-Insertion relation's text matches the <span class="nonterminal">derivationByBulkInsertionFromExpression</span> production.</p>
+
+<div class="grammar">
+ <span class="nonterminal">derivationByBulkInsertionFromExpression</span> ::=
+<span class="name">derivedByBulkInsertionFrom</span>
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">beforeIdentifier</span>
+ <span class="name">,</span>
+ <span class="name">{</span>
+ <span class="nonterminal">keyValuePairs</span>
+ <span class="name">}</span>
+<span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+ <span class="name">)</span>
+</div>
+
+<div class="anexample">
+ <pre class="codeexample">
+ derivedByBulkInsertionFrom(c1, c, {("k1", v1), ("k2", v2)})
+ derivedByBulkInsertionFrom(c1, c, {("k1", v1), ("k2", v2)}), []
+</pre>
+</div>
+</section>
+
+<section id="expression-bulk-Removal">
+<h3>Bulk Removal</h3>
+
+
+
+<p> A Derivation-by-Bulk-Removal relation's text matches the <span class="nonterminal">derivationByBulkRemovalFromExpression</span> production.</p>
+
+
+<div class="grammar">
+ <span class="nonterminal">derivationByBulkRemovalFromExpression</span> ::=
+<span class="name">derivedByRemovalFrom</span>
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">beforeIdentifier</span>
+ <span class="name">,</span>
+ <span class="name">{</span>
+ <span class="nonterminal">keySet</span>
+ <span class="name">}</span>
+ <span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+ <span class="name">)</span>
+ <br>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+ derivedByBulkRemovalFrom(c3, c1, {"k1", "k3"})
+ derivedByBulkRemovalFrom(c3, c1, {"k1", "k3"}, [])
+</pre>
+ </div>
+</section>
+
+<section id="expression-bulk-containment">
+<h3>Bulk Containment</h3>
+
+
+<p> A Bulk-Containment relation's text matches the <span class="nonterminal">containedBulkExpression</span> production.</p>
+
+<div class="grammar">
+ <span class="nonterminal">containedBulkExpression</span> ::=
+<span class="name">contained</span>
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+ <span class="name">{</span>
+ <span class="nonterminal">keyValuePairs</span>
+ <span class="name">}</span>
+<span class="nonterminal">validentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+ <span class="name">)</span>
+ <br>
+</div>
+
+<div class="anexample">
+ <pre class="codeexample">
+ containedBulk(c3, {("k4", v4), ("k5", v5)})
+ containedBulk(c3, {("k4", v4), ("k5", v5)},[])
+</pre>
+</div>
+
+ In the productions above, nonterminals <span class="nonterminal">keyValuePairs</span> and <span class="nonterminal">keySet</span> are defined as follows.
+
+
+ <div class="grammar">
<span class="nonterminal">keyValuePairs</span> ::=
<span class="name">(</span>
<span class="nonterminal">keyidentifier</span>
@@ -1174,105 +1369,6 @@
</div>
-<section id="expression-collection-insertion">
-<h3>Insertion</h3>
-
-<p>A Derivation-by-Insertion relation's text matches the <span class="nonterminal">derivationByInsertionFromExpression</span> production.</p>
-<div class="grammar">
- <span class="nonterminal">derivationByInsertionFromExpression</span> ::=
-<span class="name">derivedByInsertionFrom</span>
- <span class="name">(</span>
- <span class="optional"><span class="nonterminal">identifier</span>
- <span class="name">,</span></span>
-<span class="nonterminal">afterIdentifier</span>
- <span class="name">,</span>
-<span class="nonterminal">beforeIdentifier</span>
- <span class="name">,</span>
- <span class="name">{</span>
- <span class="nonterminal">keyValuePairs</span>
- <span class="name">}</span>
-<span class="name">,</span>
-<span class="nonterminal">optional-attribute-values</span>
- <span class="name">)</span>
-</div>
-
-<div class="anexample">
- <pre class="codeexample">
- derivedByInsertionFrom(c1, c, {("k1", v1), ("k2", v2)})
- derivedByInsertionFrom(c1, c, {("k1", v1)})
- derivedByInsertionFrom(c1, c, {("k1", v1), ("k2", v2)}, [])
-</pre>
-</div>
-
-
-</section>
-
-<section id="expression-collection-removal">
-<h3>Removal</h3>
-
-<p>A Derivation-by-Removal relation's text matches the <span class="nonterminal">derivationByRemovalFromExpression</span> production.</p>
-
-<div class="grammar">
- <span class="nonterminal">derivationByRemovalFromExpression</span> ::=
-<span class="name">derivedByRemovalFrom</span>
- <span class="name">(</span>
- <span class="optional"><span class="nonterminal">identifier</span>
- <span class="name">,</span></span>
-<span class="nonterminal">afterIdentifier</span>
- <span class="name">,</span>
-<span class="nonterminal">beforeIdentifier</span>
- <span class="name">,</span>
- <span class="name">{</span>
- <span class="nonterminal">keySet</span>
- <span class="name">}</span>
- <span class="name">,</span>
-<span class="nonterminal">optional-attribute-values</span>
- <span class="name">)</span>
- <br>
-</div>
-
-<div class="anexample">
-<pre class="codeexample">
- derivedByRemovalFrom(c3, c1, {"k1", "k3"})
- derivedByRemovalFrom(c3, c1, {"k1"})
- derivedByRemovalFrom(c3, c1, {"k1", "k3"}, [])
-</pre>
- </div>
-
-</section>
-
-<section id="expression-collection-membership">
-<h3>Membership</h3>
-
-<p>A Membership relation's text matches the <span class="nonterminal">membershipExpression</span> production.</p>
-
-<div class="grammar">
- <span class="nonterminal">membershipExpression</span> ::=
-<span class="name">isMemberOf</span>
- <span class="name">(</span>
- <span class="optional"><span class="nonterminal">identifier</span>
- <span class="name">,</span></span>
-<span class="nonterminal">afterIdentifier</span>
- <span class="name">,</span>
- <span class="name">{</span>
- <span class="nonterminal">keyValuePairs</span>
- <span class="name">}</span>
-<span class="nonterminal">validentifier</span>
- <span class="name">,</span>
-<span class="nonterminal">optional-attribute-values</span>
- <span class="name">)</span>
- <br>
-</div>
-
-
-<div class="anexample">
- <pre class="codeexample">
- memberOf(c3, {("k4", v4), ("k5", v5)})
- memberOf(c3, {("k4", v4)})
- memberOf(c3, {("k4", v4), ("k5", v5)},[])
-</pre>
-</div>
-
</section>
--- a/primer/Primer.html Thu Mar 29 09:14:40 2012 +0100
+++ b/primer/Primer.html Thu Mar 29 10:20:00 2012 -0400
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<html><head>
- <title>PROV Model Primer</title>
+ <title>Prov Model Primer</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--
=== NOTA BENE ===
@@ -212,7 +212,7 @@
The next section gives an introductory overview of PROV-DM using simple examples.
The following section shows how the formal ontology PROV-O can be used to represent the PROV-DM assertions
as RDF triples. The document also contains frequently asked questions, and an appendix giving example
- snippets of the Provenance Notation (PROV-N).
+ snippets of the PROV-DM Abstract Syntax Notation (ASN).
For a detailed description of [[PROV-DM]] and [[PROV-O]], please refer to the respective documents.
</p>
</section>
@@ -443,8 +443,8 @@
terms from the Prov ontology, while <b>ex</b> denotes terms specific to the example.
</p>
- <p>We also provide a representation of the examples in the Provenance
- Notation, PROV-N, used in the data model document. The full PROV-N data
+ <p>We also provide a representation of the examples in the Abstract
+ Syntax Model ASM used in the conceptual model document. The full ASM data
for the examples in this section is
included in the appendix.</p>
@@ -453,7 +453,7 @@
<p>
An online newspaper publishes an article with a chart about crime statistics making using of data (GovData) provided through a government portal.
- The article includes a chart based on the data, with data values composed (aggregated) by
+ The article includes a chart based on the data, with data values aggregated by
geographical regions.
</p>
<p>
@@ -462,20 +462,18 @@
</p>
<p>Betty would find the following assertions about entities in the provenance record:</p>
<pre class="turtle example">
- ex:article1 a prov:Entity ; dcterms:title "Crime rises in cities" .
- ex:dataset1 a prov:Entity .
- ex:regionList1 a prov:Entity .
- ex:composition1 a prov:Entity .
- ex:chart1 a prov:Entity .
- </pre>
+ ex:newspaper1 a prov:Entity .
+ ex:article1 a prov:Entity .
+ ex:regionList1 a prov:Entity .
+ ex:aggregate1 a prov:Entity .
+ ex:chart1 a prov:Entity .
+ </pre>
<p>
- These statements, in order, assert that there was an article (<code>ex:article1</code>),
- an original data set (<code>ex:dataSet1</code>),
- a list of regions (<code>ex:regionList1</code>),
- data aggregated by region (<code>ex:composition1</code>),
- and a chart (<code>ex:chart1</code>), and that each is an entity.
- Any entity may have attributes not specific to provenance, such as the title
- of the article, expressed using <code>dcterms:title</code> above.
+ These statements, in order, assert that there is a newspaper (<code>ex:newspaper1</code>) and an article (<code>ex:article1</code>),
+ that the original data set is an entity (<code>ex:dataSet1</code>),
+ there is a list of regions
+ (<code>ex:regionList1</code>) that is an entity, that the data aggregated by region is an entity (<code>ex:aggregate1</code>),
+ and that the chart (<code>ex:chart1</code>) is an entity.
</p>
</section>
@@ -493,11 +491,11 @@
</pre>
<p>
The provenance record also includes reference to the more specific steps involved in this compilation,
- which are first composing the data by region and then generating the chart graphic.
+ which are first aggregating the data by region and then generating the chart graphic.
</p>
<pre class="turtle example">
- ex:compose a prov:Activity .
- ex:illustrate a prov:Activity .
+ ex:aggregated a prov:Activity .
+ ex:illustrated a prov:Activity .
</pre>
</section>
@@ -510,22 +508,22 @@
or the generation of an entity by an activity.
</p>
<p>
- For example, the assertions below state that the composition activity
- (<code>ex:compose</code>) used the original data set, that it used the list of
- regions, and that the composed data was generated by this activity.
+ For example, the assertions below state that the aggregation activity
+ (<code>ex:aggregated</code>) used the original data set, that it used the list of
+ regions, and that the aggregated data was generated by this activity.
</p>
<pre class="turtle example">
- ex:compose prov:used ex:dataSet1 ;
- prov:used ex:regionList1 .
- ex:composition1 prov:wasGeneratedBy ex:compose .
+ ex:aggregated prov:used ex:dataSet1 ;
+ prov:used ex:regionList1 .
+ ex:aggregate1 prov:wasGeneratedBy ex:aggregated .
</pre>
<p>
Similarly, the chart graphic creation activity (<code>ex:illustrated</code>)
- used the composed data, and the chart was generated by this activity.
+ used the aggregated data, and the chart was generated by this activity.
</p>
<pre class="turtle example">
- ex:illustrate prov:used ex:composition1 .
- ex:chart1 prov:wasGeneratedBy ex:illustrate .
+ ex:illustrated prov:used ex:aggregate1 .
+ ex:chart1 prov:wasGeneratedBy ex:illustrated .
</pre>
</section>
@@ -534,12 +532,12 @@
<p>
Digging deeper, Betty wants to know who compiled the chart.
- Betty sees that Derek was involved in both the composition and
+ Betty sees that Derek was involved in both the aggregation and
chart creation activities:
</p>
<pre class="turtle example">
- ex:compose prov:wasAssociatedWith ex:derek .
- ex:illustrate prov:wasAssociatedWith ex:derek .
+ ex:aggregated prov:wasAssociatedWith ex:derek .
+ ex:illustrated prov:wasAssociatedWith ex:derek .
</pre>
<p>
The record for Derek provides the
@@ -572,64 +570,64 @@
<p>
For Betty to understand where the error lies, she needs to have more detailed
information on how entities have been used in, participated in, and generated
- by activities. Betty has determined that <code>ex:compose</code> used
+ by activities. Betty has determined that <code>ex:aggregated</code> used
entities <code>ex:regionList1</code> and <code>ex:dataSet1</code>, but she does not
know what function these entities played in the processing. Betty
also knows that <code>ex:derek</code> controlled the activities, but she does
not know if Derek was the analyst responsible for determining how the data
- should be composed.
+ should be aggregated.
</p>
<p>
- The above information is described as roles in the provenance records. The composition
- activity involved entities in four roles: the data to be composed (<code>ex:dataToCompose</code>),
+ The above information is described as roles in the provenance records. The aggregation
+ activity involved entities in four roles: the data to be aggregated (<code>ex:dataToAggregate</code>),
the regions to aggregate by (<code>ex:regionsToAggregateBy</code>), the
- resulting composed data (<code>ex:composedData</code>), and the
- analyst doing the composition (<code>ex:analyst</code>).
+ resulting aggregated data (<code>ex:aggregatedData</code>), and the
+ analyst doing the aggregation (<code>ex:analyst</code>).
</p>
<pre class="turtle example">
- ex:dataToCompose a prov:Role .
+ ex:dataToAggregate a prov:Role .
ex:regionsToAggregateBy a prov:Role .
- ex:composedData a prov:Role .
+ ex:aggregatedData a prov:Role .
ex:analyst a prov:Role .
</pre>
<p>
- In addition to the simple facts that the composition activity used, generated or
+ In addition to the simple facts that the aggregation activity used, generated or
was controlled by entities/agents as described in the sections above, the
provenance record contains more details of <i>how</i> these entities and agents
were involved, i.e. the roles they played. For example, the assertions below state
- that the composition activity (<code>ex:compose</code>) included the usage
+ that the aggregation activity (<code>ex:aggregated</code>) included the usage
of the government data set (<code>ex:dataSet1</code>) in the role of the data
- to be composed (<code>ex:dataToCompose</code>).
+ to be aggregated (<code>ex:dataToAggregate</code>).
</p>
<pre class="turtle example">
- ex:compose prov:involved [ a prov:Usage ;
- prov:entity ex:dataSet1 ;
- prov:hadRole ex:dataToCompose ] .
+ ex:aggregated prov:involved [ a prov:Usage ;
+ prov:entity ex:dataSet1 ;
+ prov:hadRole ex:dataToAggregate ] .
</pre>
<p>
This can then be distinguished from the same activity's usage of the list of
regions because the roles played are different.
</p>
<pre class="turtle example">
- ex:compose prov:involved [ a prov:Usage ;
- prov:entity ex:regionList1 ;
- prov:hadRole ex:regionsToAggregateBy ] .
+ ex:aggregated prov:involved [ a prov:Usage ;
+ prov:entity ex:regionList1 ;
+ prov:hadRole ex:regionsToAggregateBy ] .
</pre>
<p>
Similarly, the provenance includes assertions that the same activity was
controlled in a particular way (<code>ex:analyst</code>) by Derek, and that
- the entity <code>ex:composition1</code> took the role of the composed
+ the entity <code>ex:aggregate1</code> took the role of the aggregated
data in what the activity generated.
</p>
<pre class="turtle example">
- ex:compose
+ ex:aggregated
prov:involved [ a prov:Association ;
prov:entity ex:derek ;
prov:hadRole ex:analyst
] ;
prov:involved [ a prov:Generation ;
- prov:entity ex:composition1 ;
- prov:hadRole ex:composedData
+ prov:entity ex:aggregate1 ;
+ prov:hadRole ex:aggregatedData
] .
</pre>
</section>
@@ -665,8 +663,8 @@
<section class="appendix">
<h2>Abstract Syntax Notation for Examples</h2>
<p>
- Below we give translations of the working example snippets into the Provenance
- Notation (PROV-N).
+ Below we give translations of the working example snippets into the PROV-DM
+ abstract syntax notation (ASN).
</p>
<section>
<h3>Entities</h3>