--- a/primer/Primer.html Fri Jul 06 15:29:35 2012 -0400
+++ b/primer/Primer.html Sat Jul 07 15:06:04 2012 +0100
@@ -518,18 +518,20 @@
set_display_by_id('hide-turtle-examples','none');
set_display_by_id('show-turtle-examples','');" />
<input id="show-turtle-examples" type="button" value="Show Turtle Examples"
- style="display:none" onclick="
+ style="display:none"
+ onclick="
set_display_by_class('pre','turtle example','');
set_display_by_class('div','turtle example','');
set_display_by_id('hide-turtle-examples','');
set_display_by_id('show-turtle-examples','none');" />
<input id="hide-provn-examples" type="button" value="Hide PROV-N Examples"
- style="display:none" onclick="
+ 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','');" />
<input id="show-provn-examples" type="button" value="Show PROV-N Examples"
+ style="display:none"
onclick="
set_display_by_class('pre','provn example','');
set_display_by_class('div','provn example','');
@@ -564,11 +566,11 @@
ex:chart1 a prov:Entity .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- entity(ex:article, [dcterms:title="Crime rises in cities"])
+ entity(ex:article, [dcterms:title='Crime rises in cities'])
entity(ex:dataSet1)
entity(ex:regionList)
entity(ex:composition)
@@ -607,11 +609,11 @@
ex:compile a prov:Activity .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- activity(ex:compile)
+ activity(ex:compile)
</pre>
</div>
<p>
@@ -628,16 +630,16 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:compose a prov:Activity .
- ex:illustrate a prov:Activity .
+ ex:compose a prov:Activity .
+ ex:illustrate a prov:Activity .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- activity(ex:compose)
- activity(ex:illustrate)
+ activity(ex:compose)
+ activity(ex:illustrate)
</pre>
</div>
<p>
@@ -664,18 +666,18 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:compose prov:used ex:dataSet1 ;
- prov:used ex:regionList .
- ex:composition prov:wasGeneratedBy ex:compose .
+ ex:compose prov:used ex:dataSet1 ;
+ prov:used ex:regionList .
+ ex:composition prov:wasGeneratedBy ex:compose .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- used(ex:compose, ex:dataSet1, -)
- used(ex:compose, ex:regionList, -)
- wasGeneratedBy(ex:composition, ex:compose, -)
+ used(ex:compose, ex:dataSet1, -)
+ used(ex:compose, ex:regionList, -)
+ wasGeneratedBy(ex:composition, ex:compose, -)
</pre>
</div>
<p>
@@ -686,16 +688,16 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:illustrate prov:used ex:composition .
- ex:chart1 prov:wasGeneratedBy ex:illustrate .
+ ex:illustrate prov:used ex:composition .
+ ex:chart1 prov:wasGeneratedBy ex:illustrate .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- used(ex:illustrate, ex:composition, -)
- wasGeneratedBy(ex:chart1, ex:illustrate, -)
+ used(ex:illustrate, ex:composition, -)
+ wasGeneratedBy(ex:chart1, ex:illustrate, -)
</pre>
</div>
<p>
@@ -717,16 +719,16 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:compose prov:wasAssociatedWith ex:derek .
- ex:illustrate prov:wasAssociatedWith ex:derek .
+ ex:compose prov:wasAssociatedWith ex:derek .
+ ex:illustrate prov:wasAssociatedWith ex:derek .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- wasAssociatedWith(ex:compose, ex:derek, -)
- wasAssociatedWith(ex:illustrate, ex:derek, -)
+ wasAssociatedWith(ex:compose, ex:derek, -)
+ wasAssociatedWith(ex:illustrate, ex:derek, -)
</pre>
</div>
<p>
@@ -739,18 +741,19 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:derek a prov:Agent ;
- a prov:Person ;
- foaf:givenName "Derek"^^xsd:string ;
- foaf:mbox <mailto:derek@example.org> .
+ ex:derek a prov:Agent ;
+ a prov:Person ;
+ foaf:givenName "Derek"^^xsd:string ;
+ foaf:mbox <mailto:derek@example.org> .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- agent(ex:derek, [ prov:type="prov:Person", foaf:givenName = "Derek",
- foaf:mbox= "<mailto:derek@example.org>"])
+ agent(ex:derek,
+ [prov:type='prov:Person', foaf:givenName='Derek',
+ foaf:mbox='<mailto:derek@example.org>'])
</pre>
</div>
<p>
@@ -762,19 +765,20 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:derek prov:actedOnBehalfOf ex:chartgen .
- ex:chartgen a prov:Agent ;
- a prov:Organization ;
- foaf:name "Chart Generators Inc" .
+ ex:derek prov:actedOnBehalfOf ex:chartgen .
+ ex:chartgen a prov:Agent ;
+ a prov:Organization ;
+ foaf:name "Chart Generators Inc" .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- agent(ex:chartgen, [ prov:type="prov:Organization",
- foaf:name = "Chart Generators Inc"])
- actedOnBehalfOf(ex:derek, ex:chartgen, ex:compose)
+ agent(ex:chartgen,
+ [prov:type='prov:Organization',
+ foaf:name = 'Chart Generators Inc'])
+ actedOnBehalfOf(ex:derek, ex:chartgen, ex:compose)
</pre>
</div>
<p>
@@ -785,14 +789,14 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:chart1 prov:wasAttributedTo ex:derek .
+ ex:chart1 prov:wasAttributedTo ex:derek .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- wasAttributedTo(ex:chart1, ex:derek)
+ wasAttributedTo(ex:chart1, ex:derek)
</pre>
</div>
@@ -826,10 +830,10 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:dataToCompose a prov:Role .
- ex:regionsToAggregateBy a prov:Role .
- ex:composedData a prov:Role .
- ex:analyst a prov:Role .
+ ex:dataToCompose a prov:Role .
+ ex:regionsToAggregateBy a prov:Role .
+ ex:composedData a prov:Role .
+ ex:analyst a prov:Role .
</pre>
<p>
Examples in the sections above show descriptions of the simple facts that the
@@ -840,7 +844,7 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:compose prov:used ex:dataSet1 .
+ ex:compose prov:used ex:dataSet1 .
</pre>
<p>
The
@@ -859,14 +863,14 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:compose prov:qualifiedUsage [
- a prov:Usage ;
- prov:entity ex:dataSet1 ;
- prov:hadRole ex:dataToCompose
+ ex:compose prov:qualifiedUsage [
+ a prov:Usage ;
+ prov:entity ex:dataSet1 ;
+ prov:hadRole ex:dataToCompose
] .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<p>
In PROV-N, the role is expressed as one of the list of attributes in the used
expression, with the attribute name <code>prov:role</code>.
@@ -874,7 +878,7 @@
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- used(ex:compose, ex:dataSet1, -, [ prov:role = "ex:dataToCompose"])
+ used(ex:compose, ex:dataSet1, -, [prov:role='ex:dataToCompose'])
</pre>
</div>
<p>
@@ -885,18 +889,18 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:compose prov:qualifiedUsage [
- a prov:Usage ;
- prov:entity ex:regionList ;
- prov:hadRole ex:regionsToAggregateBy
+ ex:compose prov:qualifiedUsage [
+ a prov:Usage ;
+ prov:entity ex:regionList ;
+ prov:hadRole ex:regionsToAggregateBy
] .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- used(ex:compose, ex:regionList, -, [ prov:role = "ex:regionsToAggregateBy"])
+ used(ex:compose, ex:regionList, -, [prov:role='ex:regionsToAggregateBy'])
</pre>
</div>
<p>
@@ -909,24 +913,24 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:compose prov:qualifiedAssociation [
- a prov:Association ;
- prov:agent ex:derek ;
- prov:hadRole ex:analyst
- ] .
- ex:composition prov:qualifiedGeneration [
- a prov:Generation ;
- prov:activity ex:compose ;
- prov:hadRole ex:composedData
- ] .
+ ex:compose prov:qualifiedAssociation [
+ a prov:Association ;
+ prov:agent ex:derek ;
+ prov:hadRole ex:analyst
+ ] .
+ ex:composition prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:activity ex:compose ;
+ prov:hadRole ex:composedData
+ ] .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- wasAssociatedWith(ex:compose, ex:derek, -, [ prov:role = "ex:analyst"])
- wasGeneratedBy(ex:composition, ex:compose, -, [ prov:role = "ex:composedData"])
+ wasAssociatedWith(ex:compose, ex:derek, -, [prov:role='ex:analyst'])
+ wasGeneratedBy(ex:composition, ex:compose, -, [prov:role='ex:composedData'])
</pre>
</div>
<p>
@@ -952,16 +956,16 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:dataSet2 a prov:Entity ;
- prov:wasRevisionOf ex:dataSet1 .
+ ex:dataSet2 a prov:Entity ;
+ prov:wasRevisionOf ex:dataSet1 .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- entity(ex:dataSet2)
- wasRevisionOf(ex:dataSet2, ex:dataSet1, -)
+ entity(ex:dataSet2)
+ wasDerivedFrom(ex:dataSet2, ex:dataSet1, [prov:type='prov:Revision'])
</pre>
</div>
<p>
@@ -974,15 +978,15 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:chart2 a prov:Entity ;
- prov:wasDerivedFrom ex:dataSet2 .
+ ex:chart2 a prov:Entity ;
+ prov:wasDerivedFrom ex:dataSet2 .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- wasDerivedFrom(ex:chart2, ex:dataSet2)
+ wasDerivedFrom(ex:chart2, ex:dataSet2)
</pre>
</div>
<p>and that the new chart is a revision of the original one:
@@ -991,16 +995,16 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:chart2 a prov:Entity ;
- prov:wasRevisionOf ex:chart1 .
+ ex:chart2 a prov:Entity ;
+ prov:wasRevisionOf ex:chart1 .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- entity(ex:chart2)
- wasRevisionOf(ex:chart2, ex:chart1)
+ entity(ex:chart2)
+ wasDerivedFrom(ex:chart2, ex:chart1, [prov:type='prov:Revision'])
</pre>
</div>
<p>
@@ -1025,18 +1029,18 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:correct a prov:Activity .
- ex:edith a prov:Agent, prov:Person .
- ex:instructions a prov:Plan .
+ ex:correct a prov:Activity .
+ ex:edith a prov:Agent, prov:Person .
+ ex:instructions a prov:Plan .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- activity(ex:correct)
- agent(ex:edith, [ prov:type="prov:Person" ])
- entity(ex:instructions)
+ activity(ex:correct)
+ agent(ex:edith, [prov:type='prov:Person'])
+ entity(ex:instructions)
</pre>
</div>
<div class="turtle example">
@@ -1048,22 +1052,23 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:correct prov:qualifiedAssociation [
- a Association ;
- prov:agent ex:edith ;
- prov:hadPlan ex:instructions
- ] .
- ex:dataSet2 prov:wasGeneratedBy ex:correct .
+ ex:correct prov:qualifiedAssociation [
+ a Association ;
+ prov:agent ex:edith ;
+ prov:hadPlan ex:instructions
+ ] .
+ ex:dataSet2 prov:wasGeneratedBy ex:correct .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<p>
In PROV-N, the plan is an optional parameter to wasAssociatedWith descriptions.
</p>
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- wasAssociatedWith(ex:correct, ex:edith, ex:instructions)
+ wasAssociatedWith(ex:correct, ex:edith, ex:instructions)
+ wasGeneratedBy(ex:dataSet2, ex:correct, -)
</pre>
</div>
<p>
@@ -1087,16 +1092,16 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:chart1 prov:generatedAtTime "2012-03-02T10:30:00"^^xsd:dateTime .
- ex:chart2 prov:generatedAtTime "2012-04-01T15:21:00"^^xsd:dateTime .
+ ex:chart1 prov:generatedAtTime "2012-03-02T10:30:00"^^xsd:dateTime .
+ ex:chart2 prov:generatedAtTime "2012-04-01T15:21:00"^^xsd:dateTime .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- wasGeneratedBy(ex:chart1, ex:compile, 2012-03-02T10:30:00)
- wasGeneratedBy(ex:chart2, ex:compile2, 2012-04-01T15:21:00)
+ wasGeneratedBy(ex:chart1, ex:compile, 2012-03-02T10:30:00)
+ wasGeneratedBy(ex:chart2, ex:compile2, 2012-04-01T15:21:00)
</pre>
</div>
@@ -1111,15 +1116,15 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:correct prov:startedAtTime "2012-03-31T09:21:00"^^xsd:dateTime ;
- prov:endedAtTime "2012-04-01T15:21:00"^^xsd:dateTime .
+ ex:correct prov:startedAtTime "2012-03-31T09:21:00"^^xsd:dateTime ;
+ prov:endedAtTime "2012-04-01T15:21:00"^^xsd:dateTime .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- activity(ex:correct, 2012-03-31T09:21:00, 2012-04-01T15:21:00)
+ activity(ex:correct, 2012-03-31T09:21:00, 2012-04-01T15:21:00)
</pre>
</div>
<p>
@@ -1135,22 +1140,22 @@
<p>
Before noticing anything wrong with the government data, Betty had already
posted a blog entry about the article. The blog entry had its own published
- provenance, stating that it quoted from the article.
+ provenance, stating that it quoted some text from the article.
</p>
<div class="turtle example">
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:blogEntry a prov:Entity ;
- prov:wasQuotedFrom ex:article .
+ ex:blogEntry a prov:Entity ;
+ prov:wasQuotedFrom ex:article .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- entity(ex:blogEntry)
- wasQuotedFrom(ex:blogEntry, ex:article)
+ entity(ex:blogEntry)
+ wasDerivedFrom(ex:blogEntry, ex:article, [prov:type='prov:Quotation'])
</pre>
</div>
<p>
@@ -1165,15 +1170,16 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:articleV1 prov:specializationOf ex:article .
+ ex:articleV1 a prov:Entity ;
+ prov:specializationOf ex:article .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- entity(ex:articleV1)
- specializationOf(ex:articleV1, ex:article)
+ entity(ex:articleV1)
+ specializationOf(ex:articleV1, ex:article)
</pre>
</div>
<p>
@@ -1188,16 +1194,16 @@
<div class="exampleheader">
<span class="exampleheader"><b>Turtle Example</b></span></div>
<pre>
- ex:articleV2 prov:specializationOf ex:article .
- ex:articleV2 prov:alternateOf ex:articleV1 .
+ ex:articleV2 prov:specializationOf ex:article .
+ ex:articleV2 prov:alternateOf ex:articleV1 .
</pre>
</div>
- <div class="provn example" style="display:none">
+ <div class="provn example">
<div class="exampleheader">
<span class="exampleheader"><b>PROV-N Example</b></span></div>
<pre>
- specializationOf(ex:articleV2, ex:article)
- alternateOf(ex:articleV2, ex:articleV1)
+ specializationOf(ex:articleV2, ex:article)
+ alternateOf(ex:articleV2, ex:articleV1)
</pre>
</div>
<p>
@@ -1214,8 +1220,7 @@
<section>
<h3>Complete PROV data</h3>
<p>
- The set of provenance records above could be grouped into one or multiple bundles.
- We visualize the whole example as a single bundle below.
+ We visualize the whole example below.
</p>
<img src="images/everything.png" alt="Provenance graph for whole example" width="95%"/>
</section>
@@ -1233,8 +1238,10 @@
<ul>
<li>Added selection between Turtle and PROV-N examples with supporting text.</li>
<li>Removed PROV-N appendix.</li>
- <li>Clarifications and improvements throughout the text.</li>
<li>Removed reference to accounts, using bundles instead.</li>
+ <li>Scaled the width of wide figures to aid printing.</li>
+ <li>Used generatedAtTime rather than qualified PROV-O.</li>
+ <li>Many clarifications and improvements throughout the text.</li>
</ul>
</section>