--- a/primer/Primer.html Sun Nov 04 13:13:39 2012 +0000
+++ b/primer/Primer.html Sun Nov 04 13:13:53 2012 +0000
@@ -449,6 +449,51 @@
<section>
<h3>Alternate Entities and Specialization</h3>
<p>
+ There is often more than one way to describe something in a record of
+ provenance. Each perspective will be referred to by a separately identified
+ entity, and PROV provides a mechanism for linking the different descriptions of
+ the same thing together through the mechanism of <i>specialization</i>. One
+ entity is a specialization of another entity if it shares the same fixed attributes,
+ with the possible addition of further fixed attributes. This concept is best
+ illustrated through a few use cases, as below.
+ </p>
+ <p>
+ Entities can be mutable things. For example, a webpage is a single
+ entity, W, despite being edited over time. Each version of the webpage is
+ also an entity, W1, W2... To connect an individual version to the webpage
+ in general, we say that the former is a specialization of the latter: W1 is a
+ specialization of W, W2 is a specialization of W, and so on.
+ </p>
+ <p>
+ Two individuals may create provenance referring to the same thing from different
+ perspectives. For example, the author of an article may attribute that article
+ to themselves using PROV while, independently, a reader might quote a fact from that
+ article elsewhere and document this in PROV. If the author later changes the fact,
+ then from the reader's perspective there are now two versions of the article, and
+ they had quoted from the version before the change. From the author's perspective,
+ there is a single article, attributed to themselves. If either of them, or a
+ third party, were to connect the two PROV records, they would say that the
+ article as referred to by the reader is a specialization of the same article
+ as referred to by the author.
+ </p>
+ <p>
+ If a file, F, is copied from one directory to another, we may want to say that
+ these are both the same file, just in a different location. We may say that
+ the file in the first directory, F1, is a specialization of F, and that the
+ file in the second directory, F2, is a specialization of F. Note that it is
+ the context (location) rather than content of the file that changes in this case.
+ </p>
+ <p>
+ The above are just some examples of where we may want to connect entities by
+ saying that they refer to the same thing, but at different levels of specialization.
+ PROV also allows us to more generally draw a connection between two descriptions
+ of the same thing, even if not at different levels of specialization. For example,
+ two versions of the webpage above, W1 and W2, are alternates of each other because
+ they describe the same webpage.
+ </p>
+ <!--
+ <h3>Alternate Entities and Specialization</h3>
+ <p>
Entities are defined in a flexible way in PROV, allowing for different
perspectives to be taken as appropriate for the application. The following
are examples illustrating this idea.
@@ -481,6 +526,7 @@
with a unique identifier even though it is specified as different alternates
throughout the provenance records.
</p>
+ -->
</section>
</section>
@@ -535,6 +581,19 @@
set_display_by_class('div','provn example','');
set_display_by_id('hide-provn-examples','');
set_display_by_id('show-provn-examples','none');" />
+ <input id="hide-provxml-examples" type="button" value="Hide XML Examples"
+ onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');" />
+ <input id="show-provxml-examples" type="button" value="Show XML Examples"
+ style="display:none"
+ onclick="
+ set_display_by_class('pre','provxml example','');
+ set_display_by_class('div','provxml example','');
+ set_display_by_id('hide-provxml-examples','');
+ set_display_by_id('show-provxml-examples','none');" />
</p>
</form>
@@ -556,10 +615,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:article a prov:Entity ;
@@ -574,10 +633,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
entity(ex:article, [dcterms:title="Crime rises in cities"])
@@ -587,6 +646,25 @@
entity(ex:chart1)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:entity prov:id="ex:article">
+ <dct:title>Crime rises in cities</dct:title>
+ </prov:entity>
+ <prov:entity prov:id="ex:dataSet1"/>
+ <prov:entity prov:id="ex:regionList"/>
+ <prov:entity prov:id="ex:composition"/>
+ <prov:entity prov:id="ex:chart1"/>
+ </pre>
+ </div>
<p>
These statements, in order, refer to the article (<code>ex:article</code>),
an original data set (<code>ex:dataSet1</code>),
@@ -616,10 +694,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:compile a prov:Activity .
@@ -629,33 +707,43 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
activity(ex:compile)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:activity prov:id="ex:compile"/>
+ <prov:activity prov:id="ex:compose"/>
+ <prov:activity prov:id="ex:illustrate"/>
+ </pre>
+ </div>
<p>
The provenance also includes reference to the more specific steps involved in this compilation,
which are first composing the data by region (<code>ex:compose</code>) and then generating the
chart graphic (<code>ex:illustrate</code>).
</p>
- <!--p>
- Further, the provenance describes the activities involved in generating chart from the data,
- first composing the data by region (<code>ex:compose</code>) and then generating the
- chart graphic (<code>ex:illustrate</code>).
- </p -->
<div class="turtle example">
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:compose a prov:Activity .
@@ -666,16 +754,48 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
activity(ex:compose)
activity(ex:illustrate)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:dataset1"/>
+ </prov:used>
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:regionList"/>
+ </prov:used>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:composition"/>
+ <prov:activity prov:ref="ex:compose"/>
+ </prov:wasGeneratedBy>
+ <prov:used>
+ <prov:activity prov:ref="ex:illustrate"/>
+ <prov:entity prov:ref="ex:composition"/>
+ </prov:used>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:chart1"/>
+ <prov:activity prov:ref="ex:illustrate"/>
+ </prov:wasGeneratedBy>
+ </pre>
+ </div>
<p>
In visualizations of the PROV data, activities are depicted as rectangles, as below.
</p>
@@ -700,10 +820,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:compose prov:used ex:dataSet1 ;
@@ -715,10 +835,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
used(ex:compose, ex:dataSet1, -)
@@ -730,6 +850,30 @@
may be expressed in each PROV-N statement.
</p>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:dataset1"/>
+ </prov:used>
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:regionList"/>
+ </prov:used>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:composition"/>
+ <prov:activity prov:ref="ex:compose"/>
+ </prov:wasGeneratedBy>
+ </pre>
+ </div>
<p>
Similarly, the chart graphic creation activity (<code>ex:illustrate</code>)
used the composed data, and the chart was generated by this activity.
@@ -738,10 +882,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:illustrate prov:used ex:composition .
@@ -752,16 +896,36 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
used(ex:illustrate, ex:composition, -)
wasGeneratedBy(ex:chart1, ex:illustrate, -)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:used>
+ <prov:activity prov:ref="ex:illustrate"/>
+ <prov:entity prov:ref="ex:composition"/>
+ </prov:used>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:chart1"/>
+ <prov:activity prov:ref="ex:illustrate"/>
+ </prov:wasGeneratedBy>
+ </pre>
+ </div>
<p>
In visualizing the PROV data, usage and generation are connections between
entities and activities. The arrows point from the future to the past.
@@ -781,10 +945,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:compose prov:wasAssociatedWith ex:derek .
@@ -795,16 +959,36 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
wasAssociatedWith(ex:compose, ex:derek, -)
wasAssociatedWith(ex:illustrate, ex:derek, -)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:wasAssociatedWith>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:agent prov:ref="ex:derek"/>
+ </prov:wasAssociatedWith>
+ <prov:wasAssociatedWith>
+ <prov:activity prov:ref="ex:illustrate"/>
+ <prov:agent prov:ref="ex:derek"/>
+ </prov:wasAssociatedWith>
+ </pre>
+ </div>
<p>
The record for Derek provides the
following description that
@@ -815,10 +999,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:derek a prov:Agent ;
@@ -831,10 +1015,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
agent(ex:derek,
@@ -842,6 +1026,23 @@
foaf:mbox="<mailto:derek@example.org>"])
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:agent prov:id="ex:derek">
+ <prov:type>prov:Person</prov:type>
+ <foaf:givenName>Derek</foaf:givenName>
+ <foaf:mbox>mailto:derek@example.org</foaf:mbox>
+ </prov:agent>
+ </pre>
+ </div>
<p>
Derek works as part of an organization, Chart Generators Inc, and so the provenance
declares that he acts on their behalf. Note that the organization is itself
@@ -851,10 +1052,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:derek prov:actedOnBehalfOf ex:chartgen .
@@ -867,10 +1068,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
agent(ex:chartgen,
@@ -879,6 +1080,27 @@
actedOnBehalfOf(ex:derek, ex:chartgen, ex:compose)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:agent prov:id="ex:chartgen">
+ <prov:type>prov:Organization</prov:type>
+ <foaf:name>Chart Generators Inc</foaf:name>
+ </prov:agent>
+ <prov:actedOnBehalfOf>
+ <prov:delegate prov:ref="ex:derek"/>
+ <prov:responsible prov:ref="ex:chartgen"/>
+ <prov:activity prov:ref="ex:compose"/>
+ </prov:actedOnBehalfOf>
+ </pre>
+ </div>
<p>
Finally, there is an explicit statement in the provenance that the chart was
attributed to Derek.
@@ -887,10 +1109,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:chart1 prov:wasAttributedTo ex:derek .
@@ -900,15 +1122,31 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
wasAttributedTo(ex:chart1, ex:derek)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:wasAttributedTo>
+ <prov:entity prov:ref="ex:chart1"/>
+ <prov:agent prov:ref="ex:derek"/>
+ </prov:wasAttributedTo>
+ </pre>
+ </div>
<p>
We can extend our graphical depiction to show the agents, association and attribution links.
@@ -940,10 +1178,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:dataToCompose a prov:Role .
@@ -960,10 +1198,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:compose prov:used ex:dataSet1 .
@@ -985,10 +1223,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:compose prov:qualifiedUsage [
@@ -1006,15 +1244,32 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
used(ex:compose, ex:dataSet1, -, [prov:role='ex:dataToCompose'])
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:dataSet1"/>
+ <prov:role>ex:dataToCompose</prov:role>
+ </prov:used>
+ </pre>
+ </div>
<p>
This can then be distinguished from the same activity's usage of the list of
regions because the roles played are different.
@@ -1023,10 +1278,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:compose prov:qualifiedUsage [
@@ -1040,15 +1295,32 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
used(ex:compose, ex:regionList, -, [prov:role='ex:regionsToAggregateBy'])
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:regionList"/>
+ <prov:role>ex:regionsToAggregateBy</prov:role>
+ </prov:used>
+ </pre>
+ </div>
<p>
Similarly, the provenance includes descriptions that the same activity was
enacted in a particular way by Derek, so it indicates that he had the role of
@@ -1059,10 +1331,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:compose prov:qualifiedAssociation [
@@ -1081,16 +1353,38 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
wasAssociatedWith(ex:compose, ex:derek, -, [prov:role='ex:analyst'])
wasGeneratedBy(ex:composition, ex:compose, -, [prov:role='ex:composedData'])
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:wasAssociatedWith>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:agent prov:ref="ex:derek"/>
+ <prov:role>ex:analyst</prov:role>
+ </prov:wasAssociatedWith>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:composition"/>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:role>ex:composedData</prov:role>
+ </prov:wasGeneratedBy>
+ </pre>
+ </div>
<p>
Depicting the above visually, we have the following.
</p>
@@ -1114,10 +1408,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:dataSet2 a prov:Entity ;
@@ -1128,16 +1422,34 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
entity(ex:dataSet2)
wasDerivedFrom(ex:dataSet2, ex:dataSet1, [prov:type='prov:Revision'])
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <entity prov:id="dataSet2"/>
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="ex:dataSet2"/>
+ <prov:usedEntity prov:ref="ex:dataSet1"/>
+ <prov:type>prov:Revision</prov:type>
+ </prov:wasDerivedFrom>
+ </pre>
+ </div>
<p>
Derek notices that there is a new dataset available and creates a new chart based on the revised data,
using another compilation activity. Betty checks the article again at a
@@ -1149,10 +1461,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:chart2 a prov:Entity ;
@@ -1163,25 +1475,41 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
wasDerivedFrom(ex:chart2, ex:dataSet2)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="ex:chart2"/>
+ <prov:usedEntity prov:ref="ex:dataSet2"/>
+ </prov:wasDerivedFrom>
+ </pre>
+ </div>
<p>and that the new chart is a revision of the original one:
</p>
<div class="turtle example">
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:chart2 a prov:Entity ;
@@ -1192,16 +1520,34 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
entity(ex:chart2)
wasDerivedFrom(ex:chart2, ex:chart1, [prov:type='prov:Revision'])
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <entity prov:id="chart2"/>
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="ex:chart2"/>
+ <prov:usedEntity prov:ref="ex:chart1"/>
+ <prov:type>prov:Revision</prov:type>
+ </prov:wasDerivedFrom>
+ </pre>
+ </div>
<p>
Derivation and revision are connections between entities, and so depicted
with arrows in our visualization.
@@ -1224,10 +1570,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:correct a prov:Activity .
@@ -1239,10 +1585,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
activity(ex:correct)
@@ -1250,6 +1596,22 @@
entity(ex:instructions)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:activity prov:id="ex:correct"/>
+ <prov:agent prov:id="ex:edith">
+ <prov:type>prov:Person</prov:type>
+ </prov:agent>
+ </pre>
+ </div>
<div class="turtle example">
<p>
The connection between them is expressed in PROV-O using a qualified association giving details of
@@ -1259,10 +1621,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:correct prov:qualifiedAssociation [
@@ -1280,16 +1642,37 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
wasAssociatedWith(ex:correct, ex:edith, ex:instructions)
wasGeneratedBy(ex:dataSet2, ex:correct, -)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:wasAssociatedWith>
+ <prov:activity prov:ref="ex:correct"/>
+ <prov:agent prov:ref="ex:edith"/>
+ <prov:plan>ex:instructions</prov:plan>
+ </prov:wasAssociatedWith>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:dataSet2"/>
+ <prov:activity prov:ref="ex:correct"/>
+ </prov:wasGeneratedBy>
+ </pre>
+ </div>
<p>
Plans are additional information about the connection from an activity to
an agent, and so, in our visualization, connect to the link between them.
@@ -1311,10 +1694,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:chart1 prov:generatedAtTime "2012-03-02T10:30:00"^^xsd:dateTime .
@@ -1325,16 +1708,36 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
wasGeneratedBy(ex:chart1, ex:compile, 2012-03-02T10:30:00)
wasGeneratedBy(ex:chart2, ex:compile2, 2012-04-01T15:21:00)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:chart1"/>
+ <prov:time>2012-03-02T10:30:00</prov:time>
+ </prov:wasGeneratedBy>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:chart2"/>
+ <prov:time>2012-04-01T15:21:00</prov:time>
+ </prov:wasGeneratedBy>
+ </pre>
+ </div>
<p>
To ensure their procedures are efficient, the agency also wish to know how long the
@@ -1347,10 +1750,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:correct prov:startedAtTime "2012-03-31T09:21:00"^^xsd:dateTime ;
@@ -1361,15 +1764,31 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
activity(ex:correct, 2012-03-31T09:21:00, 2012-04-01T15:21:00)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:activity prov:id="ex:correct">
+ <prov:startTime>2012-03-31T09:21:00</prov:startTime>
+ <prov:endTime>2012-04-01T15:21:00</prov:endTime>
+ </prov:activity>
+ </pre>
+ </div>
<p>
Time is visualized as additional information regarding activities or the
links between activities and entities or agents.
@@ -1389,10 +1808,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:blogEntry a prov:Entity ;
@@ -1403,16 +1822,34 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
entity(ex:blogEntry)
wasDerivedFrom(ex:blogEntry, ex:article, [prov:type='prov:Quotation'])
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:entity prov:id="ex:blogEntry"/>
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="ex:blogEntry"/>
+ <prov:usedEntity prov:ref="ex:article"/>
+ <prov:type>prov:Quotation</prov:type>
+ </prov:wasDerivedFrom>
+ </pre>
+ </div>
<p>
The newspaper, from past experience, anticipated that there could be revisions
to the article, and so created identifiers for both the article in general
@@ -1425,10 +1862,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:articleV1 a prov:Entity ;
@@ -1439,16 +1876,33 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
entity(ex:articleV1)
specializationOf(ex:articleV1, ex:article)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:entity prov:id="ex:articleV1"/>
+ <prov:specializationOf>
+ <prov:specificEntity prov:ref="ex:articleV1"/>
+ <prov:generalEntity prov:ref="ex:article"/>
+ </prov:specializationOf>
+ </pre>
+ </div>
<p>
Later, after the data set is corrected and the new chart generated, a new version
of the article is created, <code>ex:articleV2</code>, with its own URI where the article
@@ -1461,30 +1915,50 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b>
<a onclick="
- set_display_by_class('pre','turtle example','none');
- set_display_by_class('div','turtle example','none');
- set_display_by_id('hide-turtle-examples','none');
- set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
ex:articleV2 prov:specializationOf ex:article .
- ex:articleV2 prov:alternateOf ex:articleV1 .
+ ex:articleV2 prov:alternateOf ex:articleV1
</pre>
</div>
<div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b>
<a onclick="
- set_display_by_class('pre','provn example','none');
- set_display_by_class('div','provn example','none');
- set_display_by_id('hide-provn-examples','none');
- set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
</span></div>
<pre>
specializationOf(ex:articleV2, ex:article)
alternateOf(ex:articleV2, ex:articleV1)
</pre>
</div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre>
+ <prov:specializationOf>
+ <prov:specificEntity prov:ref="ex:articleV2"/>
+ <prov:generalEntity prov:ref="ex:article"/>
+ </prov:specializationOf>
+ <prov:alternateOf>
+ <prov:alternate1 prov:ref="ex:articleV1"/>
+ <prov:alternate2 prov:ref="ex:articleV2"/>
+ </prov:alternateOf>
+ </pre>
+ </div>
<p>
Note that above we could have also
stated that <code>ex:articleV2</code> was a revision of <code>ex:articleV1</code>,
@@ -1500,7 +1974,7 @@
<h3>Complete PROV data</h3>
<p>
The full set of examples shown above are available in <a href="primer-turtle-examples.txt">PROV-O Turtle format</a>
- or <a href="primer-provn-examples.txt">PROV-N format</a>.
+ or <a href="primer-provn-examples.txt">PROV-N format</a> or <a href="primer-prov-xml-examples.xml">PROV-XML format</a>.
We visualize the whole example below.
</p>
<img src="images/everything.png" alt="Provenance graph for whole example" width="95%"/>
@@ -1524,6 +1998,8 @@
<li>Added supporting files containing full PROV-O and PROV-N examples.</li>
<li>Figures edited so that each CURIEs is on one line rather being split across two.</li>
<li>Added buttons to hide all Turtle or PROV-N examples throughout document.</li>
+ <li>Added XML examples throughout, including buttons to hide/show and a link to a supporting complete XML file.</li>
+ <li>Rewritten intuition section on specialization and alternate to be clearer and more case-based.</li>
<li>Fixed minor typos.</li>
</ul>
</section>