--- a/ontology/Overview.html Thu Oct 27 15:50:47 2011 +0100
+++ b/ontology/Overview.html Thu Oct 27 16:10:19 2011 +0100
@@ -478,8 +478,155 @@
pre.sh_sourceCode .sh_paren { color: red; }
pre.sh_sourceCode .sh_attribute { color: #006400; }
+</style><style type="text/css">
+/* --- EDITORIAL NOTES --- */
+.pending {
+ padding: 1em;
+ margin: 1em 0em 0em;
+ border: 1px solid #f00;
+ background: #BFEFFF;
+}
+
+.pending::before {
+ content: "Pending Review";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+
+.resolved {
+ padding: 1em;
+ margin: 1em 0em 0em;
+ border: 1px solid #f00;
+ background: #9BCD9B;
+}
+
+.resolved::before {
+ content: "Resolved";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+
+.inference {
+ padding: 1em;
+ margin: 1em 0em 0em;
+ border: 1px solid #f00;
+ background: #fff;
+}
+
+.inference::before {
+ content: "Inference";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+.unamedconstraint {
+ padding: 1em;
+ margin: 1em 0em 0em;
+ border: 1px solid #00f;
+ background: #fff;
+}
+
+
+.unamedconstraint::before {
+ content: "Constraint";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #00f;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+
+
+.constraint {
+ padding: 1em;
+ margin: 1em 0em 0em;
+ border: 1px solid #00f;
+ background: #fff;
+}
+
+.constraint[id]::before {
+ content: "Constraint: " attr(id);
+ width: 380px; /* How can we compute the length of "Constraint: " attr(id) */
+}
+
+
+.constraint::before {
+ content: "Constraint";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #00f;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+
+
+.conditional {
+ color: blue;
+}
+
+.grammar {
+ margin-top: 1ex;
+ margin-bottom: 1ex;
+ padding-left: 1ex;
+ padding-right: 1ex;
+ padding-top: 1ex;
+ padding-bottom: 0.6ex;
+ border: 1px dashed #2f6fab;
+ font-family: monospace;
+}
+.nonterminal {
+ font-weight: bold;
+ font-family: sans-serif;
+ font-size: 95%;
+}
+
+.name {
+ font-family: monospace;
+}
+
+
+.xmpl {
+ padding: 1em;
+ margin: 1em 0em 0em;
+ border: 1px solid #f00;
+ background: #fff;
+}
+
+.xmpl::before {
+ content: "Example";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #f00;
+ background: #fff;
+ padding: 3px 1em;
+}
</style><link href="http://www.w3.org/StyleSheets/TR/W3C-WD" rel="stylesheet" type="text/css" charset="utf-8" /></head>
- <body style="display: inherit;"><div class="head"><p><a href="http://www.w3.org/"><img height="48" width="72" alt="W3C" src="http://www.w3.org/Icons/w3c_home" /></a></p><h1 id="title" class="title">PROV Ontology Model</h1><h2 id="w3c-working-draft-21-october-2011">W3C Working Draft 21 October 2011</h2><dl><dt>This version:</dt><dd><a href="http://www.w3.org/TR/2011/WD-prov-o-20111021/">http://www.w3.org/TR/2011/WD-prov-o-20111021/</a></dd><dt>Latest published version:</dt><dd><a href="http://www.w3.org/TR/prov-o/">http://www.w3.org/TR/prov-o/</a></dd><dt>Latest editor's draft:</dt><dd><a href="http://www.w3.org/TR/2011/WD-prov-o-20111013/">http://www.w3.org/TR/2011/WD-prov-o-20111013/</a></dd><dt>Editors:</dt><dd><a href="http://cci.case.edu/cci/index.php/Satya_Sahoo">Satya Sahoo</a>, Case Western Reserve University, USA</dd>
+ <body style="display: inherit;"><div class="head"><p><a href="http://www.w3.org/"><img width="72" height="48" alt="W3C" src="http://www.w3.org/Icons/w3c_home" /></a></p><h1 id="title" class="title">PROV Ontology Model</h1><h2 id="w3c-working-draft-26-october-2011">W3C Working Draft 26 October 2011</h2><dl><dt>This version:</dt><dd><a href="http://www.w3.org/TR/2011/WD-prov-o-20111026/">http://www.w3.org/TR/2011/WD-prov-o-20111026/</a></dd><dt>Latest published version:</dt><dd><a href="http://www.w3.org/TR/prov-o/">http://www.w3.org/TR/prov-o/</a></dd><dt>Latest editor's draft:</dt><dd><a href="http://www.w3.org/TR/2011/WD-prov-o-20111013/">http://www.w3.org/TR/2011/WD-prov-o-20111013/</a></dd><dt>Editors:</dt><dd><a href="http://cci.case.edu/cci/index.php/Satya_Sahoo">Satya Sahoo</a>, Case Western Reserve University, USA</dd>
<dd><a href="http://tw.rpi.edu/instances/Deborah_L_McGuinness">Deborah McGuinness</a>, Rensselaer Polytechnic Institute, USA</dd>
<dt>Authors:</dt><dd><a href="http://semanticweb.org/wiki/Khalid_Belhajjame">Khalid Belhajjame</a>, University of Manchester, UK</dd>
<dd><a href="http://homepages.inf.ed.ac.uk/jcheney/">James Cheney</a>, University of Edinburgh, UK</dd>
@@ -493,18 +640,19 @@
Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] in the OWL2 Web Ontology Language (OWL2). The PROV ontology consists of a set of classes, properties, and restrictions that can be used to represent provenance information. The PROV ontology is specialized to create domain-specific provenance ontologies that model the provenance information specific to different applications. The PROV ontology supports a set of entailments based on OWL2 formal semantics and provenance specific inference rules. The PROV ontology is available for download as a separate OWL2 document.</p>
</div><div class="introductory section" id="sotd"><h2>Status of This Document</h2><p><em>This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/">W3C technical reports index</a> at http://www.w3.org/TR/.</em></p>
-<p>This document was published by the <a href="http://www.w3.org/2011/prov/wiki/Main_Page">Provenance Working Group</a> as a First Public Working Draft. This document is intended to become a W3C Recommendation. If you wish to make comments regarding this document, please send them to <a href="mailto:public-prov-wg@w3.org">public-prov-wg@w3.org</a> (<a href="mailto:public-prov-wg-request@w3.org?subject=subscribe">subscribe</a>, <a href="http://lists.w3.org/Archives/Public/public-prov-wg/">archives</a>). All feedback is welcome.</p><p>Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</p><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>. W3C maintains a <a rel="disclosure" href="">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</a>.</p></div><div id="toc" class="section"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#prov-ontology" class="tocxref"><span class="secno">1. </span>PROV Ontology</a><ul class="toc"><li class="tocline"><a href="#owl2-syntax-used-in-this-document" class="tocxref"><span class="secno">1.1 </span>OWL2 Syntax Used in this Document</a></li><li class="tocline"><a href="#namespace-and-owl2-version" class="tocxref"><span class="secno">1.2 </span>Namespace and OWL2 version</a></li></ul></li><li class="tocline"><a href="#prov-ontology--owl-encoding-of-prov-data-model" class="tocxref"><span class="secno">2. </span>PROV Ontology: Classes and Properties</a><ul class="toc"><li class="tocline"><a href="#classes" class="tocxref"><span class="secno">2.1 </span>Classes</a><ul class="toc"><li class="tocline"><a href="#entity" class="tocxref"><span class="secno">2.1.1 </span>Entity</a></li><li class="tocline"><a href="#processexecution" class="tocxref"><span class="secno">2.1.2 </span>ProcessExecution</a></li><li class="tocline"><a href="#agent" class="tocxref"><span class="secno">2.1.3 </span>Agent</a></li><li class="tocline"><a href="#recipe" class="tocxref"><span class="secno">2.1.4 </span>Recipe</a></li><li class="tocline"><a href="#time" class="tocxref"><span class="secno">2.1.5 </span>TemporalEntity</a></li><li class="tocline"><a href="#time" class="tocxref"><span class="secno">2.1.6 </span>Time</a></li><li class="tocline"><a href="#revision" class="tocxref"><span class="secno">2.1.7 </span>Revision</a></li><li class="tocline"><a href="#provenancecontainer" class="tocxref"><span class="secno">2.1.8 </span>ProvenanceContainer</a><ul class="toc"><li class="tocline"><a href="#modeling-provenancecontainer-and-account-as-rdf-graph" class="tocxref"><span class="secno">2.1.8.1 </span>Modeling ProvenanceContainer and Account as RDF Graph</a></li></ul></li><li class="tocline"><a href="#location" class="tocxref"><span class="secno">2.1.9 </span>Location</a></li><li class="tocline"><a href="#entityinrole" class="tocxref"><span class="secno">2.1.10 </span>EntityInRole</a></li></ul></li><li class="tocline"><a href="#object-properties" class="tocxref"><span class="secno">2.2 </span>Object Properties</a><ul class="toc"><li class="tocline"><a href="#wasgeneratedby" class="tocxref"><span class="secno">2.2.1 </span>wasGeneratedBy</a></li><li class="tocline"><a href="#wasderivedfrom" class="tocxref"><span class="secno">2.2.2 </span>wasDerivedFrom</a><ul class="toc"><li class="tocline"><a href="#waseventuallyderivedfrom" class="tocxref"><span class="secno">2.2.2.1 </span>wasEventuallyDerivedFrom</a></li><li class="tocline"><a href="#dependedon" class="tocxref"><span class="secno">2.2.2.2 </span>dependedOn</a></li></ul></li><li class="tocline"><a href="#used" class="tocxref"><span class="secno">2.2.3 </span>used</a></li><li class="tocline"><a href="#hadparticipant" class="tocxref"><span class="secno">2.2.4 </span>hadParticipant</a></li><li class="tocline"><a href="#wascomplementof" class="tocxref"><span class="secno">2.2.5 </span>wasComplementOf</a></li><li class="tocline"><a href="#wascontrolledby" class="tocxref"><span class="secno">2.2.6 </span>wasControlledBy</a></li><li class="tocline"><a href="#hadrecipe" class="tocxref"><span class="secno">2.2.7 </span>hadRecipe</a></li><li class="tocline"><a href="#wasinformedby" class="tocxref"><span class="secno">2.2.8 </span>wasInformedBy</a></li><li class="tocline"><a href="#wascheduledafter" class="tocxref"><span class="secno">2.2.9 </span>wasScheduledAfter</a></li><li class="tocline"><a href="#followed" class="tocxref"><span class="secno">2.2.10 </span>followed</a></li><li class="tocline"><a href="#hastemporalvalue" class="tocxref"><span class="secno">2.2.11 </span>hasTemporalValue</a></li><li class="tocline"><a href="#startedAt" class="tocxref"><span class="secno">2.2.12 </span>startedAt</a></li><li class="tocline"><a href="#endedAt" class="tocxref"><span class="secno">2.2.13 </span>endedAt</a></li><li class="tocline"><a href="#wasGeneratedAt" class="tocxref"><span class="secno">2.2.14 </span>wasGeneratedAt</a></li><li class="tocline"><a href="#wasAssumedBy" class="tocxref"><span class="secno">2.2.15 </span>wasAssumedBy</a></li><li class="tocline"><a href="#assumedRole" class="tocxref"><span class="secno">2.2.16 </span>assumedRole</a></li><li class="tocline"><a href="#assumedRoleAt" class="tocxref"><span class="secno">2.2.17 </span>assumedRoleAt</a></li></ul></li><li class="tocline"><a href="#characteristics-of-object-properties" class="tocxref"><span class="secno">2.3 </span>Characteristics of Object Properties </a></li><li class="tocline"><a href="#annotation-properties" class="tocxref"><span class="secno">2.4 </span>Annotation Properties</a></li><li class="tocline"><a href="#overview-of-the-ontology" class="tocxref"><span class="secno">2.5 </span>Overview of the ontology</a></li><li class="tocline"><a href="#data-model-properties-not-addressed-in-prov-ontology" class="tocxref"><span class="secno">2.6 </span>Data model properties not yet addressed in PROV-O</a></li></ul></li><li class="tocline"><a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications" class="tocxref"><span class="secno">3. </span>Specializing Provenance Ontology for Domain-specific Provenance Applications</a><ul class="toc"><li class="tocline"><a href="#moeling-the-crime-file-scenario" class="tocxref"><span class="secno">3.1 </span>Modeling the Crime File Scenario</a><ul class="toc"><li class="tocline"><a href="#specialization-of-prov-ontology-classes" class="tocxref"><span class="secno">3.1.1 </span>Specialization of PROV Ontology Classes</a><ul class="toc"><li class="tocline"><a href="#cf-journalist" class="tocxref"><span class="secno">3.1.1.1 </span>cf:Journalist</a></li><li class="tocline"><a href="#cf-crimefile" class="tocxref"><span class="secno">3.1.1.2 </span>cf:CrimeFile</a></li><li class="tocline"><a href="#cf-filecreation" class="tocxref"><span class="secno">3.1.1.3 </span>cf:FileCreation, cf:FileEditing, cf:FileAppending, cf:Emailing, cf:SpellChecking</a></li></ul></li><li class="tocline"><a href="#specialization-of-prov-ontology-properties" class="tocxref"><span class="secno">3.1.2 </span>Specialization of PROV Ontology Properties</a><ul class="toc"><li class="tocline"><a href="#cf-hadfilepath" class="tocxref"><span class="secno">3.1.2.1 </span>cf:hadFilePath</a></li></ul></li></ul></li><li class="tocline"><a href="#modeling-an-example-scientific-workflow-scenario" class="tocxref"><span class="secno">3.2 </span>Modeling an Example Scientific Workflow Scenario</a><ul class="toc"><li class="tocline"><a href="#workflow-extensions-to-prov-classes" class="tocxref"><span class="secno">3.2.1 </span>Workflow extensions to PROV classes</a></li><li class="tocline"><a href="#workflow-extensions-to-prov-properties" class="tocxref"><span class="secno">3.2.2 </span>Workflow extensions to PROV properties</a></li><li class="tocline"><a href="#workflow-structure" class="tocxref"><span class="secno">3.2.3 </span>Workflow structure</a></li><li class="tocline"><a href="#example-workflow" class="tocxref"><span class="secno">3.2.4 </span>Example workflow</a></li><li class="tocline"><a href="#example-workflow-run" class="tocxref"><span class="secno">3.2.5 </span>Example workflow run</a></li></ul></li></ul></li><li class="tocline"><a href="#formal-semantics-of-the-prov-ontology" class="tocxref"><span class="secno">4. </span>Formal Semantics of the PROV Ontology</a><ul class="toc"><li class="tocline"><a href="#rdf-semantics-for-prov-ontology" class="tocxref"><span class="secno">4.1 </span>RDF Semantics for PROV Ontology</a></li><li class="tocline"><a href="#owl2-semantics-for-prov-ontology" class="tocxref"><span class="secno">4.2 </span>OWL2 Semantics for PROV Ontology</a></li><li class="tocline"><a href="#entailments-supported-by-the-provenance-model" class="tocxref"><span class="secno">4.3 </span>Provenance-specific Entailments Supported by PROV Ontology</a><ul class="toc"><li class="tocline"><a href="#provenance-constraint-on-processexecution" class="tocxref"><span class="secno">4.3.1 </span>Provenance constraint on ProcessExecution</a></li><li class="tocline"><a href="#provenance-constraint-on-wasgeneratedby-generation-affects-attributes" class="tocxref"><span class="secno">4.3.2 </span>Provenance constraint on wasGeneratedBy (generation-affects-attributes)</a></li><li class="tocline"><a href="#provenance-constraint-on-wasgeneratedby-generation-pe-ordering" class="tocxref"><span class="secno">4.3.3 </span>Provenance constraint on wasGeneratedBy (generation-pe-ordering)</a></li><li class="tocline"><a href="#provenance-constraint-on-wasgeneratedby-generation-unicity" class="tocxref"><span class="secno">4.3.4 </span>Provenance constraint on wasGeneratedBy (generation-unicity)</a></li><li class="tocline"><a href="#provenance-constraint-on-used-use-attributes" class="tocxref"><span class="secno">4.3.5 </span>Provenance constraint on Used (use-attributes)</a></li><li class="tocline"><a href="#provenance-constraint-on-used-pe-ordering" class="tocxref"><span class="secno">4.3.6 </span>Provenance constraint on Used (use-pe-ordering)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-attributes" class="tocxref"><span class="secno">4.3.7 </span>Provenance constraint on wasDerivedFrom (derivation-attributes)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-use-generation-ordering" class="tocxref"><span class="secno">4.3.8 </span>Provenance constraint on wasDerivedFrom (derivation-use-generation-ordering)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-events" class="tocxref"><span class="secno">4.3.9 </span>Provenance constraint on wasDerivedFrom (derivation-events)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-process-execution" class="tocxref"><span class="secno">4.3.10 </span>Provenance constraint on wasDerivedFrom (derivation-events)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-use" class="tocxref"><span class="secno">4.3.11 </span>Provenance constraint on wasDerivedFrom (derivation-use)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-generation-generation-ordering" class="tocxref"><span class="secno">4.3.12 </span>Provenance constraint on wasEventuallyDerivedFrom (derivation-generation-generation-ordering)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-linked-independent" class="tocxref"><span class="secno">4.3.13 </span>Provenance constraint on wasEventuallyDerivedFrom (derivation-linked-independent)</a></li><li class="tocline"><a href="#provenance-constraint-on-complementof-necessary-cond" class="tocxref"><span class="secno">4.3.14 </span>Provenance constraint on wasComplementOf (wasComplementOf-necessary-cond)</a></li><li class="tocline"><a href="#provenance-constraint-on-hasParticipant-participant" class="tocxref"><span class="secno">4.3.15 </span>Provenance constraint on hadParticipant (participant)</a></li></ul></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></div>
+<p>This document was published by the <a href="http://www.w3.org/2011/prov/wiki/Main_Page">Provenance Working Group</a> as a First Public Working Draft. This document is intended to become a W3C Recommendation. If you wish to make comments regarding this document, please send them to <a href="mailto:public-prov-wg@w3.org">public-prov-wg@w3.org</a> (<a href="mailto:public-prov-wg-request@w3.org?subject=subscribe">subscribe</a>, <a href="http://lists.w3.org/Archives/Public/public-prov-wg/">archives</a>). All feedback is welcome.</p><p>Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</p><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>. W3C maintains a <a rel="disclosure" href="">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</a>.</p></div><div id="toc" class="section"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#guide-to-this-document" class="tocxref"><span class="secno">1.1 </span>Guide to this Document</a></li></ul></li><li class="tocline"><a href="#prov-ontology" class="tocxref"><span class="secno">2. </span>PROV Ontology</a><ul class="toc"><li class="tocline"><a href="#owl2-syntax-used-in-this-document" class="tocxref"><span class="secno">2.1 </span>OWL2 Syntax Used in this Document</a></li><li class="tocline"><a href="#namespace-and-owl2-version" class="tocxref"><span class="secno">2.2 </span>Namespace and OWL2 version</a></li></ul></li><li class="tocline"><a href="#prov-ontology--owl-encoding-of-prov-data-model" class="tocxref"><span class="secno">3. </span>PROV Ontology: Classes and Properties</a><ul class="toc"><li class="tocline"><a href="#classes" class="tocxref"><span class="secno">3.1 </span>Classes</a><ul class="toc"><li class="tocline"><a href="#entity" class="tocxref"><span class="secno">3.1.1 </span>Entity</a></li><li class="tocline"><a href="#processexecution" class="tocxref"><span class="secno">3.1.2 </span>ProcessExecution</a></li><li class="tocline"><a href="#agent" class="tocxref"><span class="secno">3.1.3 </span>Agent</a></li><li class="tocline"><a href="#recipe" class="tocxref"><span class="secno">3.1.4 </span>Recipe</a></li><li class="tocline"><a href="#temporalentity" class="tocxref"><span class="secno">3.1.5 </span>TemporalEntity</a></li><li class="tocline"><a href="#time" class="tocxref"><span class="secno">3.1.6 </span>Time</a></li><li class="tocline"><a href="#provenancecontainer" class="tocxref"><span class="secno">3.1.7 </span>ProvenanceContainer</a><ul class="toc"><li class="tocline"><a href="#modeling-provenancecontainer-and-account-as-rdf-graph" class="tocxref"><span class="secno">3.1.7.1 </span>Modeling ProvenanceContainer and Account as RDF Graph</a></li></ul></li><li class="tocline"><a href="#location" class="tocxref"><span class="secno">3.1.8 </span>Location</a></li><li class="tocline"><a href="#entityinrole" class="tocxref"><span class="secno">3.1.9 </span>EntityInRole</a></li></ul></li><li class="tocline"><a href="#object-properties" class="tocxref"><span class="secno">3.2 </span>Object Properties</a><ul class="toc"><li class="tocline"><a href="#wasgeneratedby" class="tocxref"><span class="secno">3.2.1 </span>wasGeneratedBy</a></li><li class="tocline"><a href="#revision" class="tocxref"><span class="secno">3.2.2 </span>wasRevisionOf</a></li><li class="tocline"><a href="#wasderivedfrom" class="tocxref"><span class="secno">3.2.3 </span>wasDerivedFrom</a></li><li class="tocline"><a href="#waseventuallyderivedfrom" class="tocxref"><span class="secno">3.2.4 </span>wasEventuallyDerivedFrom</a></li><li class="tocline"><a href="#dependedon" class="tocxref"><span class="secno">3.2.5 </span>dependedOn</a></li><li class="tocline"><a href="#used" class="tocxref"><span class="secno">3.2.6 </span>used</a></li><li class="tocline"><a href="#hadparticipant" class="tocxref"><span class="secno">3.2.7 </span>hadParticipant</a></li><li class="tocline"><a href="#wascomplementof" class="tocxref"><span class="secno">3.2.8 </span>wasComplementOf</a></li><li class="tocline"><a href="#wascontrolledby" class="tocxref"><span class="secno">3.2.9 </span>wasControlledBy</a></li><li class="tocline"><a href="#hadrecipe" class="tocxref"><span class="secno">3.2.10 </span>hadRecipe</a></li><li class="tocline"><a href="#wasinformedby" class="tocxref"><span class="secno">3.2.11 </span>wasInformedBy</a></li><li class="tocline"><a href="#wascheduledafter" class="tocxref"><span class="secno">3.2.12 </span>wasScheduledAfter</a></li><li class="tocline"><a href="#followed" class="tocxref"><span class="secno">3.2.13 </span>followed</a></li><li class="tocline"><a href="#attribution" class="tocxref"><span class="secno">3.2.14 </span>wasAttributedTo</a></li><li class="tocline"><a href="#quotation" class="tocxref"><span class="secno">3.2.15 </span>wasQuoteOf</a></li><li class="tocline"><a href="#summary" class="tocxref"><span class="secno">3.2.16 </span>wasSummaryOf</a></li><li class="tocline"><a href="#originalsource" class="tocxref"><span class="secno">3.2.17 </span>hadOriginalSource</a></li><li class="tocline"><a href="#hastemporalvalue" class="tocxref"><span class="secno">3.2.18 </span>hasTemporalValue</a></li><li class="tocline"><a href="#startedAt" class="tocxref"><span class="secno">3.2.19 </span>startedAt</a></li><li class="tocline"><a href="#endedAt" class="tocxref"><span class="secno">3.2.20 </span>endedAt</a></li><li class="tocline"><a href="#wasGeneratedAt" class="tocxref"><span class="secno">3.2.21 </span>wasGeneratedAt</a></li><li class="tocline"><a href="#wasAssumedBy" class="tocxref"><span class="secno">3.2.22 </span>wasAssumedBy</a></li><li class="tocline"><a href="#assumedRole" class="tocxref"><span class="secno">3.2.23 </span>assumedRole</a></li><li class="tocline"><a href="#assumedRoleAt" class="tocxref"><span class="secno">3.2.24 </span>assumedRoleAt</a></li></ul></li><li class="tocline"><a href="#characteristics-of-object-properties" class="tocxref"><span class="secno">3.3 </span>Characteristics of Object Properties </a></li><li class="tocline"><a href="#annotation-properties" class="tocxref"><span class="secno">3.4 </span>Annotation Properties</a></li><li class="tocline"><a href="#collections" class="tocxref"><span class="secno">3.5 </span>Collections</a><ul class="toc"><li class="tocline"><a href="#collection-adding" class="tocxref"><span class="secno">3.5.1 </span>Expansion</a></li><li class="tocline"><a href="#collection-removal" class="tocxref"><span class="secno">3.5.2 </span>Reduction</a></li><li class="tocline"><a href="#emptycollection" class="tocxref"><span class="secno">3.5.3 </span>EmptyCollection</a></li><li class="tocline"><a href="#collection-content" class="tocxref"><span class="secno">3.5.4 </span>Collection content</a></li></ul></li><li class="tocline"><a href="#overview-of-the-ontology" class="tocxref"><span class="secno">3.6 </span>Overview of the ontology</a></li></ul></li><li class="tocline"><a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications" class="tocxref"><span class="secno">4. </span>Specializing Provenance Ontology for Domain-specific Provenance Applications</a><ul class="toc"><li class="tocline"><a href="#moeling-the-crime-file-scenario" class="tocxref"><span class="secno">4.1 </span>Modeling the Crime File Scenario</a><ul class="toc"><li class="tocline"><a href="#specialization-of-prov-ontology-classes" class="tocxref"><span class="secno">4.1.1 </span>Specialization of PROV Ontology Classes</a><ul class="toc"><li class="tocline"><a href="#cf-journalist" class="tocxref"><span class="secno">4.1.1.1 </span>cf:Journalist</a></li><li class="tocline"><a href="#cf-crimefile" class="tocxref"><span class="secno">4.1.1.2 </span>cf:CrimeFile</a></li><li class="tocline"><a href="#cf-filecreation" class="tocxref"><span class="secno">4.1.1.3 </span>cf:FileCreation, cf:FileEditing, cf:FileAppending, cf:Emailing, cf:SpellChecking</a></li></ul></li><li class="tocline"><a href="#specialization-of-prov-ontology-properties" class="tocxref"><span class="secno">4.1.2 </span>Specialization of PROV Ontology Properties</a><ul class="toc"><li class="tocline"><a href="#cf-hadfilepath" class="tocxref"><span class="secno">4.1.2.1 </span>cf:hadFilePath</a></li></ul></li></ul></li><li class="tocline"><a href="#modeling-an-example-scientific-workflow-scenario" class="tocxref"><span class="secno">4.2 </span>Modeling an Example Scientific Workflow Scenario</a><ul class="toc"><li class="tocline"><a href="#workflow-extensions-to-prov-classes" class="tocxref"><span class="secno">4.2.1 </span>Workflow extensions to PROV classes</a></li><li class="tocline"><a href="#workflow-extensions-to-prov-properties" class="tocxref"><span class="secno">4.2.2 </span>Workflow extensions to PROV properties</a></li><li class="tocline"><a href="#workflow-structure" class="tocxref"><span class="secno">4.2.3 </span>Workflow structure</a></li><li class="tocline"><a href="#example-workflow" class="tocxref"><span class="secno">4.2.4 </span>Example workflow</a></li><li class="tocline"><a href="#example-workflow-run" class="tocxref"><span class="secno">4.2.5 </span>Example workflow run</a></li></ul></li></ul></li><li class="tocline"><a href="#formal-semantics-of-the-prov-ontology" class="tocxref"><span class="secno">5. </span>Formal Semantics of the PROV Ontology</a><ul class="toc"><li class="tocline"><a href="#rdf-semantics-for-prov-ontology" class="tocxref"><span class="secno">5.1 </span>RDF Semantics for PROV Ontology</a></li><li class="tocline"><a href="#owl2-semantics-for-prov-ontology" class="tocxref"><span class="secno">5.2 </span>OWL2 Semantics for PROV Ontology</a></li><li class="tocline"><a href="#entailments-supported-by-the-provenance-model" class="tocxref"><span class="secno">5.3 </span>Provenance-specific Entailments Supported by PROV Ontology</a><ul class="toc"><li class="tocline"><a href="#provenance-constraint-on-processexecution" class="tocxref"><span class="secno">5.3.1 </span>Provenance constraint on ProcessExecution</a></li><li class="tocline"><a href="#provenance-constraint-on-wasgeneratedby-generation-affects-attributes" class="tocxref"><span class="secno">5.3.2 </span>Provenance constraint on wasGeneratedBy (generation-affects-attributes)</a></li><li class="tocline"><a href="#provenance-constraint-on-wasgeneratedby-generation-pe-ordering" class="tocxref"><span class="secno">5.3.3 </span>Provenance constraint on wasGeneratedBy (generation-pe-ordering)</a></li><li class="tocline"><a href="#provenance-constraint-on-wasgeneratedby-generation-unicity" class="tocxref"><span class="secno">5.3.4 </span>Provenance constraint on wasGeneratedBy (generation-unicity)</a></li><li class="tocline"><a href="#provenance-constraint-on-used-use-attributes" class="tocxref"><span class="secno">5.3.5 </span>Provenance constraint on Used (use-attributes)</a></li><li class="tocline"><a href="#provenance-constraint-on-used-pe-ordering" class="tocxref"><span class="secno">5.3.6 </span>Provenance constraint on Used (use-pe-ordering)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-attributes" class="tocxref"><span class="secno">5.3.7 </span>Provenance constraint on wasDerivedFrom (derivation-attributes)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-use-generation-ordering" class="tocxref"><span class="secno">5.3.8 </span>Provenance constraint on wasDerivedFrom (derivation-use-generation-ordering)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-events" class="tocxref"><span class="secno">5.3.9 </span>Provenance constraint on wasDerivedFrom (derivation-events)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-process-execution" class="tocxref"><span class="secno">5.3.10 </span>Provenance constraint on wasDerivedFrom (derivation-events)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-use" class="tocxref"><span class="secno">5.3.11 </span>Provenance constraint on wasDerivedFrom (derivation-use)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-generation-generation-ordering" class="tocxref"><span class="secno">5.3.12 </span>Provenance constraint on wasEventuallyDerivedFrom (derivation-generation-generation-ordering)</a></li><li class="tocline"><a href="#provenance-constraint-on-derivation-linked-independent" class="tocxref"><span class="secno">5.3.13 </span>Provenance constraint on wasEventuallyDerivedFrom (derivation-linked-independent)</a></li><li class="tocline"><a href="#provenance-constraint-on-complementof-necessary-cond" class="tocxref"><span class="secno">5.3.14 </span>Provenance constraint on wasComplementOf (wasComplementOf-necessary-cond)</a></li><li class="tocline"><a href="#provenance-constraint-on-hasParticipant-participant" class="tocxref"><span class="secno">5.3.15 </span>Provenance constraint on hadParticipant (participant)</a></li></ul></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></div>
- <div class="section">
- <a id="introduction"></a>
- <h2 id="introduction-1">Introduction</h2>
+ <div id="introduction" class="section">
+
+<!-- OddPage -->
+<h2><span class="secno">1. </span>Introduction</h2>
<p>
PROV Ontology Model (also PROV ontology) defines the normative modeling of the PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] using the W3C OWL2 Web Ontology Language. This document specification describes the set of classes, properties, and restrictions that constitute the PROV ontology, which have been introduced in the PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]. This ontology specification provides the foundation for implementation of provenance applications in different applications using the PROV ontology for representing, exchanging, and integrating provenance information. Together with the PROV Access and Query [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-PAQ">PROV-PAQ</a></cite>] and PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>], this document forms a framework for provenance information management in domain-specific Web-based applications.
</p>
<p>
- The PROV ontology classes and properties are defined such that they can be specialized for modeling application-specific provenance information in a variety of domains. Thus, the PROV ontology is expected to serve as a <i>reference model</i> for domain-specific provenance ontology and thereby facilitate consistent provenance interchange. This document uses an example <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> introduced in the PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] to demonstrate the specialization of PROV ontology.
+ The PROV ontology classes and properties are defined such that they can be specialized for modeling application-specific provenance information in a variety of domains. Thus, the PROV ontology is expected to serve as a <i>reference model</i> for domain-specific provenance ontology and thereby facilitate consistent provenance interchange. This document uses an example <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> introduced in the PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] to demonstrate the specialization of PROV ontology.
</p>
<p>
Finally, this document describes the formal semantics of the PROV ontology using the OWL2 semantics, [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-DIRECT-SEMANTICS">OWL2-DIRECT-SEMANTICS</a></cite>], [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-RDF-BASED-SEMANTICS">OWL2-RDF-BASED-SEMANTICS</a></cite>], and a set of provenance-specific inference rules. This is expected to support provenance implementations to automatically check for consistency of provenance information represented using PROV ontology and explicitly assert implicit provenance knowledge.
@@ -515,15 +663,15 @@
"<em class="rfc2119" title="optional">optional</em>" in this document are to be interpreted as described in
[<cite><a class="bibref" rel="biblioentry" href="#bib-RFC2119">RFC2119</a></cite>].</p>
- <div class="section">
- <h3 id="guide-to-this-document">Guide to this Document</h3>
+ <div id="guide-to-this-document" class="section">
+ <h3><span class="secno">1.1 </span>Guide to this Document</h3>
<p> This document is intended for provide an understanding of
the PROV ontology and how it can be used by various applications
to represent their provenance information. The intended audience
of this document include users who are new to provenance
modeling as well as experienced users who would like their provenance model compatible with the PROV ontology to facilitate standardization.This document assumes a basic understanding of the W3C OWL2 specification , including modeling of classes, properties, and restrictions in an OWL2 ontology. Readers are referred to the OWL2 documentations, starting with the [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-PRIMER">OWL2-PRIMER</a></cite>], for the OWL2 specification.
</p>
- <p><a href="#prov-ontology--owl-encoding-of-prov-data-model">Section 2</a> describes the mapping of the PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] to the PROV ontology. <a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications">Section 3</a> introduces the classes and properties of the PROV ontology. <a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications">Section 4</a> describes the approach used to specialize the PROV ontology create a domain specific ontology for an example <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance scenario</a> introduced in the PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]. The PROV ontology supports a set of provenance entailments and these are described in <a href="#entailments-supported-by-the-provenance-model">Section 5</a>.
+ <p><a href="#prov-ontology--owl-encoding-of-prov-data-model">Section 2</a> describes the mapping of the PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] to the PROV ontology. <a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications">Section 3</a> introduces the classes and properties of the PROV ontology. <a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications">Section 4</a> describes the approach used to specialize the PROV ontology create a domain specific ontology for an example <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance scenario</a> introduced in the PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]. The PROV ontology supports a set of provenance entailments and these are described in <a href="#entailments-supported-by-the-provenance-model">Section 5</a>.
</p>
</div>
@@ -536,25 +684,26 @@
<div id="prov-ontology" class="section">
<!-- OddPage -->
-<h2><span class="secno">1. </span>PROV Ontology</h2>
+<h2><span class="secno">2. </span>PROV Ontology</h2>
<p> The PROV Data Model [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] introduces a minimal set of concepts to represent provenance information in a variety of application domains. This document maps the PROV Data Model to PROV Ontology using the OWL2 ontology language, which facilitates a fixed interpretation and use of the PROV Data Model concepts based on the formal semantics of OWL2 [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-DIRECT-SEMANTICS">OWL2-DIRECT-SEMANTICS</a></cite>] [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-RDF-BASED-SEMANTICS">OWL2-RDF-BASED-SEMANTICS</a></cite>].
</p>
<p>The PROV Ontology is not designed to be used directly in a domain application and its Classes and Properties represent "higher-level" or abstract level concepts that can be specialized further for representing domain-specific provenance information. We briefly introduce some of the OWL2 modeling terms that will be used to describe the PROV ontology. An OWL2 <i>instance</i> is an individual object in a domain of discourse, for example a person named Alice or a car, and a set of individuals sharing a set of common characteristics is called a <i>class</i>. Person and Car are examples of classes representing the set of individual persons and cars respectively. The OWL2 object properties are used to link individuals, classes, or create a property hierarchy. For example, the object property "hasOwner" can be used to link car with person. The OWL2 datatype properties are used to link individuals or classes to data values, including XML Schema datatypes [<cite><a class="bibref" rel="biblioentry" href="#bib-XMLSCHEMA-2">XMLSCHEMA-2</a></cite>].
</p>
- <p>The PROV Data Model document [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] introduces an example <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> describing the creation of crime statistics file stored on a shared file system and edited by journalists Alice, Bob, Charles, David, and Edith. This scenario is used as a running example in this document to describe the PROV ontology classes and properties, the specialization mechanism and entailments supported by the PROV ontology.
+ <p>The PROV Data Model document [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] introduces an example <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> describing the creation of crime statistics file stored on a shared file system and edited by journalists Alice, Bob, Charles, David, and Edith. This scenario is used as a running example in this document to describe the PROV ontology classes and properties, the specialization mechanism and entailments supported by the PROV ontology.
</p>
<div id="owl2-syntax-used-in-this-document" class="section">
- <h3><span class="secno">1.1 </span>OWL2 Syntax Used in this Document</h3>
+ <h3><span class="secno">2.1 </span>OWL2 Syntax Used in this Document</h3>
<p>This document uses the RDF/XML syntax, which is the mandatory syntax
supported by all OWL2 syntax [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-PRIMER">OWL2-PRIMER</a></cite>] to represent the
PROV ontology. Provenance assertions using PROV-O can use any
RDF syntax.
</p></div>
<div id="namespace-and-owl2-version" class="section">
- <h3><span class="secno">1.2 </span>Namespace and OWL2 version</h3>
+ <h3><span class="secno">2.2 </span>Namespace and OWL2 version</h3>
+ <p>
The corresponding OWL2 version of this PROV Ontology is
available at [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-Ontology-Namespace">PROV-Ontology-Namespace</a></cite>] and as
@@ -562,7 +711,7 @@
the PROV ontology and all classes/properties defined in this
document is <code>http://www.w3.org/ns/prov-o/</code> [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-Ontology-Namespace">PROV-Ontology-Namespace</a></cite>]
and is in this document denoted by the prefix <code>prov</code>.
- <p></p>
+ </p>
<div class="issue">
It has been suggested that [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] and PROV-O should instead use
the namespace <code>http://www.w3.org/ns/prov/</code> for terms that are
@@ -577,25 +726,25 @@
<div id="prov-ontology--owl-encoding-of-prov-data-model" class="section">
<!-- OddPage -->
-<h2><span class="secno">2. </span>PROV Ontology: Classes and Properties</h2>
- <p> We now introduce the classes and properties that constitute the PROV ontology. We first give a textual description of each ontology term, followed by OWL2 syntax representing the ontology term and an example use of the term in the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance scenario</a>.
+<h2><span class="secno">3. </span>PROV Ontology: Classes and Properties</h2>
+ <p> We now introduce the classes and properties that constitute the PROV ontology. We first give a textual description of each ontology term, followed by OWL2 syntax representing the ontology term and an example use of the term in the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance scenario</a>.
</p>
<div id="classes" class="section">
- <h3><span class="secno">2.1 </span>Classes</h3>
+ <h3><span class="secno">3.1 </span>Classes</h3>
<p>The PROV ontology consists of classes that can be organized in a taxonomic structure.
</p>
<img alt="Class hierarchy of the PROV ontology" style="width: 50%; min-width: 25em; max-width: 37em" src="diagram-history/khalidDiagrams/Ontology_hierarchy.png" />
<br />
<p><i>Note: CamelBack notation is used for class names</i></p>
<div id="entity" class="section">
- <h4><span class="secno">2.1.1 </span>Entity</h4>
+ <h4><span class="secno">3.1.1 </span>Entity</h4>
<div><b>Class Description</b></div>
<p>Entity is defined to be "An Entity represents an identifiable characterized thing." [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]</p>
<div><b>OWL syntax</b></div>
<pre> prov:Entity rdfs:subClassOf owl:Thing.
</pre>
<div><b>Example</b></div>
- <p> Example of instances of class Entity from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are files with identifiers <i>e1</i> and <i>e2</i>. The RDF/XML syntax for asserting that e1 is an instance of Entity is given below.
+ <p> Example of instances of class Entity from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are files with identifiers <i>e1</i> and <i>e2</i>. The RDF/XML syntax for asserting that e1 is an instance of Entity is given below.
</p><div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e1">
<rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Entity"/>
@@ -625,13 +774,13 @@
<div id="processexecution" class="section">
- <h4><span class="secno">2.1.2 </span>ProcessExecution</h4>
+ <h4><span class="secno">3.1.2 </span>ProcessExecution</h4>
<div><b>Class Description</b></div>
<p>ProcessExecution is defined to be "an identifiable activity, which performs a piece of work." [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]</p>
<div><b>OWL syntax</b></div>
<pre>prov:ProcessExecution rdfs:subClassOf owl:Thing.</pre>
<div><b>Example</b></div>
- <p> Example of instances of class ProcessExecution from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are file creation (<i>pe0</i>) and file editing (<i>pe2</i>) . The RDF/XML syntax for asserting that pe2 is an instance of ProcessExecution is given below.
+ <p> Example of instances of class ProcessExecution from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are file creation (<i>pe0</i>) and file editing (<i>pe2</i>) . The RDF/XML syntax for asserting that pe2 is an instance of ProcessExecution is given below.
</p><div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe2">
<rdf:type rdf:resource="http://www.w3.org/ns/prov-o/ProcessExecution"/>
@@ -645,13 +794,13 @@
<div id="agent" class="section">
- <h4><span class="secno">2.1.3 </span>Agent</h4>
+ <h4><span class="secno">3.1.3 </span>Agent</h4>
<div><b>Class Description</b></div>
<p>Agent is defined to be a "characterized entity capable of activity" [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]</p>
<div><b>OWL syntax</b></div>
<pre>prov:Agent rdfs:subClassOf prov:Entity.</pre>
<div><b>Example</b></div>
- <p> Example of instances of class Agent from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are <i>Alice</i> and <i>Edith</i>. The RDF/XML syntax for asserting that Alice is an instance of Agent is given below.
+ <p> Example of instances of class Agent from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are <i>Alice</i> and <i>Edith</i>. The RDF/XML syntax for asserting that Alice is an instance of Agent is given below.
</p><div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#Alice">
<rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Agent"/>
@@ -664,7 +813,7 @@
<div id="recipe" class="section">
- <h4><span class="secno">2.1.4 </span>Recipe</h4>
+ <h4><span class="secno">3.1.4 </span>Recipe</h4>
<div><b>Class Description</b></div>
<p>Recipe represents a process specification. The definition of process specifications is outside the scope of PROV. Therefore, this class acts as a place holder in the ontology that can be extended and specialized by users.</p>
<div><b>OWL syntax</b></div>
@@ -675,14 +824,16 @@
- <div id="time" class="section">
- <h4><span class="secno">2.1.5 </span>TemporalEntity</h4>
+ <div id="temporalentity" class="section">
+ <h4><span class="secno">3.1.5 </span>TemporalEntity</h4>
<div><b>Class Description</b></div>
- <p>TemporalEntity represents temporal information about entities in the Provenance model. This class has been re-used from the OWL Time ontology. The PROV ontology also models the two sub classes of TemporalEntity, namely Instant and Interval.</p>
+ <p>TemporalEntity represents temporal information about
+ entities in the Provenance model. This class has been re-used
+ from the OWL Time ontology [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL-TIME">OWL-TIME</a></cite>]. The PROV ontology also models the two sub classes of TemporalEntity, namely Instant and Interval.</p>
<div><b>OWL syntax</b></div>
<pre>time:TemporalEntity rdfs:subClassOf owl:Thing.</pre>
<div><b>Example</b></div>
- <p> Example of instances of class TemporalEntity from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are <i>t</i> and <i>t+1</i>. The RDF/XML syntax for this asserting that t+1 is an instance of class Instant is given below.
+ <p> Example of instances of class TemporalEntity from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are <i>t</i> and <i>t+1</i>. The RDF/XML syntax for this asserting that t+1 is an instance of class Instant is given below.
</p><div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#t+1">
<rdf:type rdf:resource="http://www.w3.org/2006/time#Instant"/>
@@ -691,7 +842,7 @@
</div>
<div id="time" class="section">
- <h4><span class="secno">2.1.6 </span>Time</h4>
+ <h4><span class="secno">3.1.6 </span>Time</h4>
<div><b>Class Description</b></div>
<p><code>Time</code> is subclass of <code>time:Instant</code>
from [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL-TIME">OWL-TIME</a></cite>] which requires that the time is defined
@@ -702,21 +853,10 @@
c</p>
</div>
-
- <div id="revision" class="section">
- <h4><span class="secno">2.1.7 </span>Revision</h4>
+ <div id="provenancecontainer" class="section">
+ <h4><span class="secno">3.1.7 </span>ProvenanceContainer</h4>
<div><b>Class Description</b></div>
- <p>Revision is defined as a modified version of a Entity.</p>
- <div><b>OWL syntax</b></div>
- <pre>prov:Revision rdfs:subClassOf owl:Thing.</pre>
- </div>
-
-
-
- <div id="provenancecontainer" class="section">
- <h4><span class="secno">2.1.8 </span>ProvenanceContainer</h4>
- <div><b>Class Description</b></div>
- <p>ProvenanceContainer is defined to be an aggregation of provenance assertions. A provenance container should have an URI associated with it. The ProvenanceContainer class can also be used to model the PROV-DM concept of <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#expression-Account">Account</a>.</p>
+ <p>ProvenanceContainer is defined to be an aggregation of provenance assertions. A provenance container should have an URI associated with it. The ProvenanceContainer class can also be used to model the PROV-DM concept of <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#expression-Account">Account</a>.</p>
<div><b>OWL syntax</b></div>
<pre>prov:ProvenanceContainer rdfs:subClassOf owl:Thing.</pre>
<p>Examples of instance of class ProvenanceContainer includes a file describing the manufacturing details of a car, such as its batch number, manufacturer, date of manufacture, place of manufacture etc. </p>
@@ -725,21 +865,21 @@
</div>
<div class="issue">Scope and Identifiers.
This is <a href="http://www.w3.org/2011/prov/track/issues/81">ISSUE-81</a>.</div>
- <div id="modeling-provenancecontainer-and-account-as-rdf-graph" class="section">
- <h5><span class="secno">2.1.8.1 </span>Modeling ProvenanceContainer and Account as RDF Graph</h5>
- <p>Placeholder for Tim's description</p>
- </div>
- </div>
+ <div id="modeling-provenancecontainer-and-account-as-rdf-graph" class="section">
+ <h5><span class="secno">3.1.7.1 </span>Modeling ProvenanceContainer and Account as RDF Graph</h5>
+ <p>Placeholder for Tim's description</p>
+ </div>
+ </div>
<div id="location" class="section">
- <h4><span class="secno">2.1.9 </span>Location</h4>
+ <h4><span class="secno">3.1.8 </span>Location</h4>
<div><b>Class Description</b></div>
<p>Location is defined to be "is an identifiable geographic place (ISO 19112)." [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]</p>
<div><b>OWL syntax</b></div>
<pre>prov:Location rdfs:subClassOf owl:Thing.</pre>
- <p> Example of instances of class Location from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is the location of the crime file in the shared directory <i>/share</i> with file path <i>/shared/crime.txt</i>. The RDF/XML syntax for asserting that the location of the crime file is the shared directory.
+ <p> Example of instances of class Location from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is the location of the crime file in the shared directory <i>/share</i> with file path <i>/shared/crime.txt</i>. The RDF/XML syntax for asserting that the location of the crime file is the shared directory.
</p><div class="exampleOuter">
<pre class="example"><cf:hasLocation>
<rdf:Description rdf:about="http://www.example.com/crimeFile#sharedDirectoryLocation1">
@@ -754,13 +894,13 @@
<div id="entityinrole" class="section">
- <h4><span class="secno">2.1.10 </span>EntityInRole</h4>
+ <h4><span class="secno">3.1.9 </span>EntityInRole</h4>
<div><b>Class Description</b></div>
<p>EntityInRole is defined to be a "realizable entity" (cite?) "assumed by a Entity or an agent." [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>]</p>
<div><b>OWL syntax</b></div>
<pre>prov:EntityInRole rdfs:subClassOf prov:Entity.</pre>
<div><b>Example</b></div>
- <p> Example of instances of class EntityInRole from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are <i>author</i> role assumed by Bob and <i>file creator</i> role assumed by Alice. The RDF/XML syntax for asserting that Bob assumes the role of an author is given below.
+ <p> Example of instances of class EntityInRole from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are <i>author</i> role assumed by Bob and <i>file creator</i> role assumed by Alice. The RDF/XML syntax for asserting that Bob assumes the role of an author is given below.
</p><div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#BobAsAuthor">
<rdf:type rdf:resource="http://www.w3.org/ns/prov-o/EntityInRole"/>
@@ -792,25 +932,25 @@
<code>used(pe1, Bob, qualifier(role="author", parameter="p1")</code>.
</p>
- <div class="issue">The PROV-DM defines the term <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#expression-qualifier">Qualifier</a>, which is incorporated implicitly in definition of OWL sub-classes and sub-properties that specialize a parent class or property by defining additional qualifying constraints. Hence, <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#expression-qualifier">Qualifier</a> is not modeled explicitly in PROV ontology.</div>
+ <div class="issue">The PROV-DM defines the term <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#expression-qualifier">Qualifier</a> is not modeled explicitly in PROV ontology.</div>
</div>
</div>
<div id="object-properties" class="section">
- <h3><span class="secno">2.2 </span>Object Properties</h3>
+ <h3><span class="secno">3.2 </span>Object Properties</h3>
<p>The Provenance Model consists of the following object properties. </p>
<p><i>Note: Names of properties starts with a verb in lower case followed by verb(s) starting with upper case </i></p>
<div id="wasgeneratedby" class="section">
- <h4><span class="secno">2.2.1 </span>wasGeneratedBy</h4>
+ <h4><span class="secno">3.2.1 </span>wasGeneratedBy</h4>
<p>wasGeneratedBy links Entity with ProcessExecution representing that Entity was generated as a result of ProcessExecution</p>
<p><i>Note: No arity constraints are assumed between Entity and ProcessExecution</i></p>
<img alt="wasGeneratedBy links Entity to ProcessExecution" style="height: 3em" src="diagram-history/khalidDiagrams/wasGeneratedBy.png" />
<div><b>Example</b></div>
- <p> Example of wasGeneratedBy property from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is <i>e1 wasGeneratedBy pe0</i>. The RDF/XML syntax for asserting this is given below.
+ <p> Example of wasGeneratedBy property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>e1 wasGeneratedBy pe0</i>. The RDF/XML syntax for asserting this is given below.
</p><div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e1">
<rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Entity"/>
@@ -825,14 +965,17 @@
</div>
</div>
-
+ <div id="revision" class="section">
+ <h4><span class="secno">3.2.2 </span>wasRevisionOf</h4>
+ <p>wasRevisionOf links two instances of Entity class, where one instance is a revision of another.</p>
+ </div>
<div id="wasderivedfrom" class="section">
- <h4><span class="secno">2.2.2 </span>wasDerivedFrom</h4>
+ <h4><span class="secno">3.2.3 </span>wasDerivedFrom</h4>
<p>wasDerivedFrom links two distinct characterized entities, where "some characterized entity is transformed from, created from, or affected by another characterized entity."</p>
<img alt="wasDerivedFrom links Entity to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/wasDerivedFrom.png" />
<div><b>Example</b></div>
- <p> Example of wasDerivedFrom property from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is <i>e3 wasDerivedFrom e2</i>. The RDF/XML syntax for asserting this is given below.
+ <p> Example of wasDerivedFrom property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>e3 wasDerivedFrom e2</i>. The RDF/XML syntax for asserting this is given below.
</p><div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e3">
<prov:wasDerivedFrom rdf:resource="http://www.example.com/crimeFile#e2"/>
@@ -840,32 +983,48 @@
</div>
<div class="issue">Should derivation have a time? Which time? This is <a href="http://www.w3.org/2011/prov/track/issues/43">ISSUE-43</a>.</div>
<div class="issue">Should we specifically mention derivation of agents? This is <a href="http://www.w3.org/2011/prov/track/issues/42">ISSUE-42</a>.</div>
+ </div>
<div id="waseventuallyderivedfrom" class="section">
- <h5><span class="secno">2.2.2.1 </span>wasEventuallyDerivedFrom</h5>
+ <h4><span class="secno">3.2.4 </span>wasEventuallyDerivedFrom</h4>
<p>This object property is used to link two entities that are not directly used and generated respectively by a single instance of ProcessExecution.
</p>
- <img alt="wasEventuallyDerivedFrom links Entity to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/wasEventuallyDerivedFrom.png" />
+ <img alt="wasEventuallyDerivedFrom links Entity to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/wasEventuallyDerivedFrom.png" />
+ <div><b>Example</b></div>
+ <p> Example of wasEventuallyDerivedFrom property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>e5 wasEventuallyDerivedFrom e2</i>. The RDF/XML syntax for asserting this is given below.
+ </p><div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e5">
+ <prov:wasEventuallyDerivedFrom rdf:resource="http://www.example.com/crimeFile#e2"/>
+</rdf:Description> </pre>
+ </div>
<div class="issue">Is the current definition of wasEventuallyDerivedFrom inconsistent with definition of wasDerivedFrom? This is <a href="http://www.w3.org/2011/prov/track/issues/122">ISSUE-122 </a> and <a href="http://www.w3.org/2011/prov/track/issues/126">ISSUE-126</a></div>
</div>
<div id="dependedon" class="section">
- <h5><span class="secno">2.2.2.2 </span>dependedOn</h5>
+ <h4><span class="secno">3.2.5 </span>dependedOn</h4>
<p>dependedOn links two instances of Entity to model derivation of one instance of Entity from another instance of Entity. This property is asserted to be transitive</p>
- <img alt="dependedOn links Entity to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/dependedOn.png" />
- <div class="issue">Is dependedOn a parent property of wasDerivedFrom? This is <a href="http://www.w3.org/2011/prov/track/issues/125">ISSUE-125</a>
- </div></div>
- </div>
+ <img alt="dependedOn links Entity to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/dependedOn.png" />
+ <div><b>Example</b></div>
+ <p> Example of dependedOn property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>e5 dependedOn e2</i>. The RDF/XML syntax for asserting this is given below.
+ </p><div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e5">
+ <prov:dependedOn rdf:resource="http://www.example.com/crimeFile#e2"/>
+</rdf:Description> </pre>
+ </div>
+ <div class="issue">Is dependedOn a parent property of
+ wasDerivedFrom? This is <a href="http://www.w3.org/2011/prov/track/issues/125">ISSUE-125</a>
+ </div>
+ </div>
<div id="used" class="section">
- <h4><span class="secno">2.2.3 </span>used</h4>
+ <h4><span class="secno">3.2.6 </span>used</h4>
<p>used links ProcessExecution to Entity, where Entity is consumed by ProcessExecution.</p>
<p><i>Note: No arity constraints are assumed between Entity and ProcessExecution</i></p>
<img alt="used links ProcessExecution to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/used.png" />
<div><b>Example</b></div>
- <p> Example of used property from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is <i>pe2 used e2</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <p> Example of used property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe2 used e2</i>. The RDF/XML syntax for asserting this is given below.</p>
<div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe2">
<prov:used rdf:resource="http://www.example.com/crimeFile#e2"/>
@@ -874,20 +1033,25 @@
</div>
-
-
<div id="hadparticipant" class="section">
- <h4><span class="secno">2.2.4 </span>hadParticipant</h4>
+ <h4><span class="secno">3.2.7 </span>hadParticipant</h4>
<p>hadPariticipant links Entity to ProcessExecution, where Entity used or wasGeneratedBy ProcessExecution.
</p><p><i>Note: No arity constraints are assumed between Entity and ProcessExecution</i></p>
- <img alt="hadParticipant links ProcessExecution to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/hadParticipant.png" />
+ <img alt="hadParticipant links ProcessExecution to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/hadParticipant.png" />
+ <div><b>Example</b></div>
+ <p> Example of hadParticipant property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe2 hadParticipant e2</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe2">
+ <prov:hadParticipant rdf:resource="http://www.example.com/crimeFile#e2"/>
+</rdf:Description> </pre>
+ </div>
<div class="pending">Suggested definition for participation. This is <a href="http://www.w3.org/2011/prov/track/issues/49">ISSUE-49</a>.</div>
</div>
<div id="wascomplementof" class="section">
- <h4><span class="secno">2.2.5 </span>wasComplementOf</h4>
+ <h4><span class="secno">3.2.8 </span>wasComplementOf</h4>
<p>wasComplementOf links two instances of Entity, where "it is relationship between two characterized entities asserted to have compatible characterization over some continuous time interval." <i>(from the Provenance Conceptual Model)</i></p>
<img alt="wasComplementOf links Entity to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/wasComplementOf.png" />
</div>
@@ -895,11 +1059,11 @@
<div id="wascontrolledby" class="section">
- <h4><span class="secno">2.2.6 </span>wasControlledBy</h4>
+ <h4><span class="secno">3.2.9 </span>wasControlledBy</h4>
<p>wasControlledBy links ProcessExecution to Agent, where "Control represents the involvement of an agent or a Entity in a process execution"<i>(from the Provenance Conceptual Model)</i></p>
<img alt="wasControlledBy links ProcessExecution to Agent" style="height: 3em" src="diagram-history/khalidDiagrams/wasControlledBy.png" />
<div><b>Example</b></div>
- <p> Example of wasControlledBy property from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is <i>FileAppending</i> (ProcessExecution) <i>wasControlledBy Bob</i>. The RDF/XML syntax for asserting this is given below.
+ <p> Example of wasControlledBy property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>FileAppending</i> (ProcessExecution) <i>wasControlledBy Bob</i>. The RDF/XML syntax for asserting this is given below.
</p><div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
<prov:wasControlledBy>
@@ -914,7 +1078,7 @@
<div id="hadrecipe" class="section">
- <h4><span class="secno">2.2.7 </span>hadRecipe</h4>
+ <h4><span class="secno">3.2.10 </span>hadRecipe</h4>
<p>The ProcessExecution activity performed can be described as
having the given recipe resource. It is out of the scope for PROV to
define the structure or meaning of the recipe. The recipe
@@ -922,35 +1086,115 @@
Execution.
</p>
<img alt="hadRecipe links ProcessExecution to Agent" style="height: 3em" src="diagram-history/khalidDiagrams/hadRecipe.png" />
+ <div><b>Example</b></div>
+ <p> Example of hadRecipe property as an addition to the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is pe1 using some file appending instructions (instructions1) (<i> pe1 hadRecipe instructions1</i>). The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
+ <prov:hadRecipe rdf:resource="http://www.example.com/crimeFile#instructions1"/>
+</rdf:Description> </pre>
+ </div>
</div>
<div id="wasinformedby" class="section">
- <h4><span class="secno">2.2.8 </span>wasInformedBy</h4>
+ <h4><span class="secno">3.2.11 </span>wasInformedBy</h4>
<p> This object property links two process executions. It is used to express the fact that a given process execution used an entity that was generated by another process execution.
</p>
<img alt="wasInformedBy links ProcessExecution to ProcessExecution" style="height: 3em" src="diagram-history/khalidDiagrams/wasInformedBy.png" />
+ <div><b>Example</b></div>
+ <p> Example of wasInformedBy property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe4 wasInformedBy pe3</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe4">
+ <prov:wasInformedBy rdf:resource="http://www.example.com/crimeFile#pe3"/>
+</rdf:Description> </pre>
+ </div>
</div>
<div id="wascheduledafter" class="section">
- <h4><span class="secno">2.2.9 </span>wasScheduledAfter</h4>
+ <h4><span class="secno">3.2.12 </span>wasScheduledAfter</h4>
<p>
This object property links two instances of ProcessExecution to specify the order in which they took place. Specifically, it is used to specify that a given process execution starts after the end of another process execution.
</p>
<img alt="wasScheduledAfter links ProcessExecution to ProcessExecution" style="height: 3em" src="diagram-history/khalidDiagrams/wasScheduledAfter.png" />
+ <div><b>Example</b></div>
+ <p> Example of wasScheduledAfter property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe4 wasScheduledAfter pe3</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe4">
+ <prov:wasScheduledAfter rdf:resource="http://www.example.com/crimeFile#pe3"/>
+</rdf:Description> </pre>
+ </div>
</div>
<div id="followed" class="section">
- <h4><span class="secno">2.2.10 </span>followed</h4>
+ <h4><span class="secno">3.2.13 </span>followed</h4>
<p>wasInformedBy links two instances of ProcessExecution to model ordering of the ProcessExecution instances.</p>
- <img alt="followed links ProcessExecution to ProcessExecution" style="height: 3em" src="diagram-history/khalidDiagrams/followed.png" />
+ <img alt="followed links ProcessExecution to ProcessExecution" style="height: 3em" src="diagram-history/khalidDiagrams/followed.png" />
+ <div><b>Example</b></div>
+ <p> Example of followed property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe4 followed pe1</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe4">
+ <prov:wasScheduledAfter rdf:resource="http://www.example.com/crimeFile#pe1"/>
+</rdf:Description> </pre>
+ </div>
+ </div>
+
+ <div id="attribution" class="section">
+ <h4><span class="secno">3.2.14 </span>wasAttributedTo</h4>
+ <p>wasAttributedTo links an instance of the Entity class to an instance of Agent class.</p>
+ <img alt="wasAttributedTo links Entity to Agent" style="height: 3em" src="diagram-history/khalidDiagrams/wasAttributedTo.png" />
+ <div><b>Example</b></div>
+ <p> Example of wasAttributedTo property as an addition to the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is the attribution of e3 to David for writting editing the file (<i>e3 wasAttributedTo David</i>). The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e3">
+ <prov:wasAttributedTo rdf:resource="http://www.example.com/crimeFile#David"/>
+</rdf:Description> </pre>
+ </div>
+ </div>
+
+ <div id="quotation" class="section">
+ <h4><span class="secno">3.2.15 </span>wasQuoteOf</h4>
+ <p>wasQuoteOf links an instance of the Entity class to an instance of of the Agent class.</p>
+ <img alt="wasQuoteOf links Entity to Agent" style="height: 3em" src="diagram-history/khalidDiagrams/wasQuoteOf.png" />
+ <div><b>Example</b></div>
+ <p> Example of wasQuoteOf property as an addition to the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is e2 quoting Alice words, recorded by Bob (<i> e2 wasQuoteOf Alice</i>). The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e2">
+ <prov:wasQuoteOf rdf:resource="http://www.example.com/crimeFile#Alice"/>
+</rdf:Description> </pre>
+ </div>
+ </div>
+
+ <div id="summary" class="section">
+ <h4><span class="secno">3.2.16 </span>wasSummaryOf</h4>
+ <p>wasSummaryOf links two instances of the Entity class.</p>
+ <img alt="wasSummaryOf links Entity to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/wasSummaryOf.png" />
+ <div><b>Example</b></div>
+ <p> Example of wasSummaryOf property as an addition to the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is e3 summarizing some additional statistics(<i> e3 wasSummaryOf statistics</i>). The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e3">
+ <prov:wasSummaryOf rdf:resource="http://www.example.com/crimeFile#statistics"/>
+</rdf:Description> </pre>
+ </div>
+ </div>
+
+ <div id="originalsource" class="section">
+ <h4><span class="secno">3.2.17 </span>hadOriginalSource</h4>
+ <p>hadOriginalSource links two instances of the Entity class. This property is defined to be a specialization of the wasEventuallyDerivedFrom propery.</p>
+ <img alt="hadOriginalSource links Entity to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/hadOriginalSource.png" />
+ <div><b>Example</b></div>
+ <p> Example of hadOriginalSource property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> <i> e6 hadOriginalSource e1</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e6">
+ <prov:hadOriginalSource rdf:resource="http://www.example.com/crimeFile#e1"/>
+</rdf:Description> </pre>
+ </div>
</div>
<div id="hastemporalvalue" class="section">
- <h4><span class="secno">2.2.11 </span>hasTemporalValue</h4>
+ <h4><span class="secno">3.2.18 </span>hasTemporalValue</h4>
<p> This object property links an instance of
<code>ProcessExecution</code> or <code>Entity</code> with an
<code>time:TemporalEntity</code> from [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL-TIME">OWL-TIME</a></cite>], thereby
@@ -967,13 +1211,14 @@
</p>
</div>
<div id="startedAt" class="section">
- <h4><span class="secno">2.2.12 </span>startedAt</h4>
+ <h4><span class="secno">3.2.19 </span>startedAt</h4>
<p> This object property defines the time when a
<code>ProcessExecution</code> started. The time is specified as an
<code>time:Instant</code> [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL-TIME">OWL-TIME</a></cite>], which <em class="rfc2119" title="may">may</em> be a
<code>Time</code> subclass by specifying the time using a
<code>time:inXSDDateTime</code> data property.
</p>
+ <img alt="startedAt links ProcessExecution to Instant" style="height: 3em" src="diagram-history/khalidDiagrams/startedAt.png" />
<div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
<prov:startedAt rdf:parseType="Resource">
@@ -984,13 +1229,14 @@
</div>
</div>
<div id="endedAt" class="section">
- <h4><span class="secno">2.2.13 </span>endedAt</h4>
+ <h4><span class="secno">3.2.20 </span>endedAt</h4>
<p> This object property defines the time when a
<code>ProcessExecution</code> ended. The time is specified as an
<code>time:Instant</code> [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL-TIME">OWL-TIME</a></cite>], which <em class="rfc2119" title="may">may</em> be a
<code>Time</code> subclass by specifying the time using a
<code>time:inXSDDateTime</code> data property.
</p>
+ <img alt="endedAt links ProcessExecution to Instant" style="height: 3em" src="diagram-history/khalidDiagrams/endedAt.png" />
<div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
<prov:endedAt rdf:parseType="Resource">
@@ -1001,7 +1247,7 @@
</div>
</div>
<div id="wasGeneratedAt" class="section">
- <h4><span class="secno">2.2.14 </span>wasGeneratedAt</h4>
+ <h4><span class="secno">3.2.21 </span>wasGeneratedAt</h4>
<p> This object property defines the time when a
<code>Entity</code> was generated (as specified using
<code>wasGeneratedBy</code>), meaning the instant when the entity
@@ -1011,11 +1257,12 @@
<code>Time</code> subclass by specifying the time using a
<code>time:inXSDDateTime</code> data property.
</p>
+ <img alt="wasGeneratedAt links Entity to Instant" style="height: 3em" src="diagram-history/khalidDiagrams/wasGeneratedAt.png" />
<p>
Note that by constraint
</p>
<div class="exampleOuter">
- <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e1">
+ <pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#e2">
<prov:wasGeneratedAt rdf:parseType="Resource">
<rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Time"/>
<time:inXSDDateTime>2011-10-20T17:14:12Z</time:inXSDDateTime>
@@ -1024,7 +1271,7 @@
</div>
</div>
<div id="wasAssumedBy" class="section">
- <h4><span class="secno">2.2.15 </span>wasAssumedBy</h4>
+ <h4><span class="secno">3.2.22 </span>wasAssumedBy</h4>
<p>This object property defines which
<code>Entity</code> assumed a <em>role</em>, forming
a placeholder <code>EntityInRole</code> for use in
@@ -1035,6 +1282,7 @@
is assumed by one and only one <code>Entity</code>.
<code>wasAssumedBy</code> is a subproperty of <code>wasComplementOf</code>.
</p>
+ <img alt="wasAssumedBy links EntityInRole to Entity" style="height: 3em" src="diagram-history/khalidDiagrams/wasAssumedBy.png" />
<div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
<prov:used>
@@ -1052,13 +1300,14 @@
</p>
</div>
<div id="assumedRole" class="section">
- <h4><span class="secno">2.2.16 </span>assumedRole</h4>
+ <h4><span class="secno">3.2.23 </span>assumedRole</h4>
<p>This object property defines which
<code>Role</code> has been assumed in an
<code>EntityInRole</code>. This property is applied in
relations such as <code>used</code> and
<code>wasGeneratedBy</code>.
</p>
+ <img alt="assumedRole links EntityInRole to Role" style="height: 3em" src="diagram-history/khalidDiagrams/assumedRole.png" />
<p>
The definition and interpretation of the <code>Role</code>
is outside the scope for PROV-O. The <code>Role</code> class is
@@ -1087,7 +1336,7 @@
</div>
</div>
<div id="assumedRoleAt" class="section">
- <h4><span class="secno">2.2.17 </span>assumedRoleAt</h4>
+ <h4><span class="secno">3.2.24 </span>assumedRoleAt</h4>
<p> This object property defines the first time an
<code>Entity</code> assumed a <em>role</em>, ie. when the
<code>EntityInRole</code> which <code>wasAssumedBy</code> was active.
@@ -1098,6 +1347,7 @@
<code>Time</code> subclass by specifying the time using a
<code>time:inXSDDateTime</code> data property.
</p>
+ <img alt="assumedRoleAt links EntityInRole to Instant" style="height: 3em" src="diagram-history/khalidDiagrams/assumedRoleAt.png" />
<p>
According to the constraint <a href="#provenance-constraint-on-wasgeneratedby-generation-unicity">generation-unicity</a>
from [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] an entity can only be generated once by a single process
@@ -1121,7 +1371,7 @@
</div>
<div id="characteristics-of-object-properties" class="section">
- <h3><span class="secno">2.3 </span>Characteristics of Object Properties </h3>
+ <h3><span class="secno">3.3 </span>Characteristics of Object Properties </h3>
<p>The table below summarizes the characteristics of the object properties that are defined in the OWL schema.
</p>
<table style="border-collapse: separate; border-spacing: 0; border-width: 1px; border-style: solid; border-color: #000; padding: 0">
@@ -1224,7 +1474,7 @@
</div>
<div id="annotation-properties" class="section">
- <h3><span class="secno">2.4 </span>Annotation Properties</h3>
+ <h3><span class="secno">3.4 </span>Annotation Properties</h3>
<p>The PROV ontology uses the OWL2 annotation properties to describe additional information about the PROV ontology classes, properties, individuals, and axioms. OWL2 defines nine annotation properties that are part of the OWL2 structural specification (see OWL2 Syntax document for additional details [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-SYNTAX">OWL2-SYNTAX</a></cite>]):</p>
<ul>
<li><a href="http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Annotation_Properties"><b>rdfs:label</b></a>- This property is used to associated a "human-readable label" with a term. For example, the class "<a href="#location">Location</a>" can be annotated with "Geo-spatial Location" label using rdfs:label</li>
@@ -1243,8 +1493,237 @@
</div>
</div>
+
+ <div id="collections" class="section">
+ <h3><span class="secno">3.5 </span>Collections</h3>
+ <p>A <code>Collection</code> is a type of
+ <code>Entity</code> which have been composed of other
+ entities. A PROV-O <code>Collection</code> can represent
+ any kind of collection, such as a ordered list, array,
+ associative list, dictionary, hashtable, map. It is out of scope
+ for PROV to further define the exact nature of the collection, but
+ PROV-O defines shortcuts for defining that a entity have
+ been added or removed to a collection. These operations are
+ modelled as subproperties of <code>wasDerivedFrom</code>
+ between two static collections, corresponding to <a href="http://www.w3.org/TR/prov-dm/#expression-Collection">collection
+ assertions</a> [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>].
+ </p>
+
+ <div id="collection-adding" class="section">
+ <h4><span class="secno">3.5.1 </span>Expansion</h4>
+ <p>
+ An <code>Entity</code> can be added to a
+ <code>Collection</code>, producing a new (derived)
+ <code>Collection</code> which contains the new item
+ in addition to the items of the old collection.
+ The item can be added at a certain <em>key</em> (represented
+ as another <code>Entity</code>), which could be
+ a <em>position</em> (for ordered lists), a <em>hash key</em>
+ for a dictionary, or the value itself (for sets).
+ In PROV-O the addition is specified using the functional
+ properties <code>wasExpandedFrom</code>,
+ <code>wasExpandedBy</code> and <code>wasExpandedAt</code>.
+ These correspond to the PROV-ASN <a href="http://www.w3.org/TR/prov-dm/#expression-Collection">collection
+ assertions</a>
+ <code>wasAddedTo_Coll</code> (the expanded collection),
+ <code>wasAddedTo_Entity</code> (the expansion)
+ and <code>wasAddedTo_Key</code> (the key it was expanded at). The properties are
+ functional so that only one expansion is asserted at a time,
+ relating the three properties without requiring an
+ explicit "Expansion" class, and also asserting that no other
+ entities have been added or removed to the two
+ collections related using <code>prov:wasExpandedBy</code>.
+ </p>
+ <div class="issue">[<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] does not make the guarantee
+ that other entities have not been added. Is it fair to make
+ such an assumption here?
+ </div>
+ <div class="exampleOuter">
+ <pre class="example">:col1 a prov:Collection ;
+ prov:wasExpandedFrom :col0 ;
+ prov:wasExpandedBy :e1 ;
+ prov:wasExpandedAt :key1 .
+
+:col2 a prov:Collection ;
+ prov:wasExpandedFrom :col1 ;
+ prov:wasExpandedBy :e2 ;
+ prov:wasExpandedAt :key2 . </pre>
+ </div>
+ <div class="issue">TODO: Write Collection examples as RDF/XML</div>
+ <p>
+ The above example describes collections <code>:col0</code>,
+ <code>:col1</code> and <code>:col2</code>. We know that
+ <code>:col2:</code> has the entries:
+ <code>(:key2, :e2)</code> and <code>(:key1, :e2)</code>. As
+ we don't have the provenance of :col0 it might or might not
+ contain other keys and entities.
+ </p>
+ <div id="expanded-collection" class="constraint">
+ If a Collection has one of the functional
+ <code>prov:wasExpandedFrom</code>,
+ <code>prov:wasExpandedBy</code> or
+ <code>prov:wasExpandedAt</code> properties asserted, then it
+ is an <code>ExpandedCollection</code> and the
+ existence of the remaining <code>wasExpanded*</code> properties are implied.
+ </div>
+ <div class="issue">TODO: Express the constraint <em>expanded-collection</em> in the OWL ontology</div>
+ <div class="issue">Does prov:Collection allow replacement or
+ multiple additions on the same key?
+ If we do a second expansion using the :key1,
+ will :e1 still be in the collection? We
+ recommend that for <em>map</em> functionality replacement
+ should always be represented by first an explicit removal
+ (wasReducedBy) followed by insertion (wasExpandedBy).
+ </div>
+ </div>
+
+ <div id="collection-removal" class="section">
+ <h4><span class="secno">3.5.2 </span>Reduction</h4>
+ <p>
+ Removing from a collection is modelled in a similar way as
+ expansion, by deriving a new <em>reduced</em> collection
+ which does not have the removed item or key. This is done
+ using the properties <code>prov:wasReducedFrom</code>,
+ <code>prov:wasReducedBy</code> and
+ <code>prov:wasReducedAt</code>, which correspond go
+ [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] properties <code>wasRemovedFrom_Coll</code>
+ and <code>wasRemovedFrom_Key</code>.
+ </p>
+ <div class="exampleOuter">
+ <pre class="example">:col3 a prov:Collection ;
+ prov:wasReducedFrom :col2 ;
+ prov:wasReducedAt :key1 .
+
+:col4 a prov:Collection ;
+ prov:wasReducedFrom :col3 ;
+ prov:wasReducedBy :e2 ;
+ prov:wasReducedAt :key2 . </pre>
+ </div>
+ <p>
+ The example above says that in :col3 does not contain
+ what :col2 had at <code>:key1</code>, e.g. (:key1, :e1).
+ :col4 does not contain (:key2, :e2).
+ </p>
+ <div id="reduced-collection" class="constraint">
+ If a Collection has one of the functional
+ <code>prov:wasReducedFrom</code>,
+ <code>prov:wasReducedBy</code> or
+ <code>prov:wasReducedAt</code> properties asserted, then it
+ is a <code>ReducedCollection</code> and the
+ existence of the remaining <code>wasReduced*</code> properties are
+ implied. A <code>ReducedCollection</code> is disjoint from a
+ <code>ExpandedCollection</code>, so it is not possible to
+ combine any <code>wasReduced*</code> property with any
+ <code>wasExpanded*</code> property.
+ </div>
+ <div class="issue">TODO: Express the constraint <em>reduced-collection</em> in the OWL ontology</div>
+ <div class="issue">
+ Does removal at :key1 mean it is no longer present in
+ the collection? What if the collection is a linked list,
+ where :key1 is a position? (:e2 would now be at :key1).
+ Does removal assert that the key existed in the
+ collection, or simply that it no longer is in the
+ collection? If it is possible to insert several values
+ at the same key, is it possible to remove only one of
+ these at a given key?
+ </div>
+ <p>
+ Asserting <code>prov:wasReducedBy</code> is optional, as
+ <code>prov:wasReducedAt</code> will remove any value at that
+ key. (PROV-DM does not describe wasRemovedFrom_Entity).
+ </p>
+ </div>
+
+ <div class="collection-empty section" id="emptycollection">
+ <h4><span class="secno">3.5.3 </span>EmptyCollection</h4>
+ <p>PROV-O defines
+ a subclass of <code>Collection</code> called
+ <code>EmptyCollection</code>. Asserting that a
+ collection is empty means that it does not contain
+ any key/value pairs. Combined with expansion and
+ reduction statements this allows the assertion of
+ the complete content of a collection.
+ </p>
+ <div class="exampleOuter">
+ <pre class="example">:col0 a prov:EmptyCollection .
+:col4 a prov:EmptyCollection .</pre>
+ </div>
+ <div class="issue">[<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] does not describe the concept
+ of an empty collection</div>
+ <p>
+ With the additional information given above, one can
+ conclude that <code>:col1</code> (which
+ <code>prov:wasExpandedFrom :col0</code>) only
+ contains the expanded entity <code>:e1</code>, and that
+ <code>:col2</code> only contains the keys <code>:key1</code>
+ and <code>:key2</code>.</p>
+
+
+ <div id="empty-collection-disjoint" class="constraint">
+ An EmptyCollection is disjoint from an ExpandedCollection.
+ </div>
+ <div id="empty-collection-range" class="constraint">It is not valid for an asserted
+ <code>EmptyCollection</code> to be
+ in the domain of <code>prov:wasExpandedFrom</code> or
+ in the range of <code>prov:wasReducedFrom</code>.
+ </div>
+ <div class="issue">TODO: Include the constraints
+ <em>empty-collection-disjoint</em> and
+ <em>empty-collection-range</em> in the OWL ontology</div>
+ </div>
+
+ <div id="collection-content" class="section">
+ <h4><span class="secno">3.5.4 </span>Collection content</h4>
+ <p>To describe the complete content of a Collection (its
+ keys and values), an asserter can form a chain of
+ <code>wasExpandedFrom</code> assertions starting from an
+ <code>EmptyCollection</code>. Note that although this does
+ enforce an ordering of the addition of the elements to the
+ final collection, it does not neccessarily assert that this
+ happened sequentially, as the corresponding implied
+ <code>ProcessExecution</code>s could have had zero duration.
+ To assert that the intermediate expansions occurred
+ "instantly" and not expose any temporal ordering of the
+ insertions, you may state that the <em>generation time</em>
+ of the initial and final collection is the same:
+ </p>
+ <div class="exampleOuter">
+ <pre class="example">:col0 a prov:EmptyCollection ;
+ <b>prov:wasGeneratedAt :t0 .</b>
+:col1 a prov:Collection ;
+ prov:wasExpandedFrom :col0 ;
+ prov:wasExpandedBy :e1 .
+:col2 a prov:Collection ;
+ prov:wasExpandedFrom :col1 ;
+ prov:wasExpandedBy :e2 ;
+ <b>prov:wasGeneratedAt :t0 .</b></pre>
+ </div>
+ <p>The collection <code>:col2</code> described above was
+ created with the entities
+ <code>:e1</code> and <code>:e2</code>. Both items were
+ inserted at the same time <code>:t0</code>. (The
+ wasGeneratedAt :t0 for :col1 is implied above due to the
+ <a href="http://www.w3.org/TR/prov-dm/#derivation-use-generation-ordering">derivation-use-generation-ordering</a>
+ constraint.)
+ </p>
+ <div class="issue">
+ FIXME: What if the asserter knows and want to assert the
+ content, and she knows it was inserted in a temporal order - but
+ don't know that order? (for instance "members of the Royal
+ Society"). Should there be a prov:hadContent property? Is it
+ possible to use rdf collections for such a shorthand?
+ </div>
+ <div class="issue">
+ Is it possible to express set operations (union, difference,
+ intersection, negation) between two collections without
+ having to express all the individual members?
+ </div>
+ </div>
+
+ </div>
+
<div id="overview-of-the-ontology" class="section">
- <h3><span class="secno">2.5 </span>Overview of the ontology</h3>
+ <h3><span class="secno">3.6 </span>Overview of the ontology</h3>
<p>The following diagram illustrates the complete PROV ontology. </p>
<img alt="Classes and properties of the PROV ontology" style="min-width: 45em; width: 55em; max-width: 95%" src="diagram-history/2011-10-03-tlebo/ProvenanceOntology.png " />
@@ -1255,37 +1734,24 @@
-->
</div>
- <div id="data-model-properties-not-addressed-in-prov-ontology" class="section">
- <h3><span class="secno">2.6 </span>Data model properties not yet addressed in PROV-O</h3>
- <p>The following data model properties have not yet been discussed and included in the ontology: </p>
- <ul>
- <li><a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#attribution-expression">Attribution expression</a></li>
- <li><a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#quotation-expression">Quotation expression</a></li>
- <li><a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#summary-expression">Summary expression</a></li>
- <li><a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#original-source-expression">Original source expression</a></li>
- <li><a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#expression-Revision">Revision expression</a></li>
- </ul>
- </div>
</div>
<div id="specializing-provenance-ontology-for-domain-specific-provenance-applications" class="section">
<!-- OddPage -->
-<h2><span class="secno">3. </span>Specializing Provenance Ontology for Domain-specific Provenance Applications</h2>
+<h2><span class="secno">4. </span>Specializing Provenance Ontology for Domain-specific Provenance Applications</h2>
<p>The PROV Ontology is conceived as a reference ontology that can be extended by various domain-specific applications to model the required set of provenance terms. The PROv Ontology classes and properties can be specialized using the following two RDFS properties:</p>
<ul>
- <li>rdfs:subClassOf: The property rdfs:subClassOf is an instance of rdf:Property that is used to state that all the instances of one class are instances of another. [RDFS-Ref]</li>
- <li>rdfs:subPropertyOf: "A rdfs:subPropertyOf axiom defines that the property is a subproperty of some other property." [OWL-Ref]</li>
+ <li>rdfs:subClassOf: The property rdfs:subClassOf is an instance of rdf:Property that is used to state that all the instances of one class are instances of another [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>]</li>
+ <li>rdfs:subPropertyOf: "A rdfs:subPropertyOf axiom defines that the property is a subproperty of some other property" [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>]</li>
</ul>
- <p>To illustrate the specialization mechanism, the PROV Ontology is extended to create an ontology schema for the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance scenario</a> describing the creation of the crime statistics file. </p>
+ <p>To illustrate the specialization mechanism, the PROV Ontology is extended to create an ontology schema for the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance scenario</a> describing the creation of the crime statistics file. </p>
<div id="moeling-the-crime-file-scenario" class="section">
- <h3><span class="secno">3.1 </span>Modeling the Crime File Scenario</h3>
- <p>The example scenario can be encoded as a <a href="http://www.w3.org/TR/rdf-primer/"> Resource Description Framework (RDF) </a> graph in <a href="">Figure X</a>:</p>
- <div class="issue">insert figure X</div>
- <p><a href="">Figure X</a> represents the ontology schema that extends the PROV ontology to model the provenance details of the crime file scenario. For example,</p>
+ <h3><span class="secno">4.1 </span>Modeling the Crime File Scenario</h3>
+ <p>The example scenario can be encoded as a <a href="http://www.w3.org/TR/rdf-primer/"> Resource Description Framework (RDF)</a>. For example,</p>
<ul>
<li>specialization of <a href="#agent">Agent</a> to define a class called Journalist, which has individuals such as alice, bob, and edith </li>
<li><a href="#processexecution">ProcessExecution</a>, e.g. FileCreation, FileAppending, and FileEditing </li>
@@ -1312,8 +1778,26 @@
<rdf:type rdf:resource="http://www.example.com/crime#Journalist"/>
</rdf:Description>
</prov:wasControlledBy>
+ <prov:startedAt>
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#t1">
+ <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Time"/>
+ <time:inXSDDateTime>2011-10-20T16:26:45Z</time:inXSDDateTime>
+ </rdf:Description>
+ </prov:startedAt>
+ <prov:endedAt>
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#t3">
+ <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Time"/>
+ <time:inXSDDateTime>2011-11-21T18:36:52Z</time:inXSDDateTime>
+ </rdf:Description>
+ </prov:endedAt>
</rdf:Description>
</prov:wasGeneratedBy>
+ <prov:wasGeneratedAt>
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#t2">
+ <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Time"/>
+ <time:inXSDDateTime>2011-10-20T17:14:12Z</time:inXSDDateTime>
+ </rdf:Description>
+ </prov:wasGeneratedAt>
<prov:wasDerivedFrom rdf:resource="http://www.example.com/crimeFile#e1"/>
<cf:hasLocation>
<rdf:Description rdf:about="http://www.example.com/crimeFile#sharedDirectoryLocation1">
@@ -1331,10 +1815,10 @@
</rdf:RDF></pre>
</div>
<div id="specialization-of-prov-ontology-classes" class="section">
- <h4><span class="secno">3.1.1 </span>Specialization of PROV Ontology Classes</h4>
+ <h4><span class="secno">4.1.1 </span>Specialization of PROV Ontology Classes</h4>
<p> The following new classes were created in the CrimeFile Ontology by extending the PROV ontology classes:</p>
<div id="cf-journalist" class="section">
- <h5><span class="secno">3.1.1.1 </span>cf:Journalist</h5>
+ <h5><span class="secno">4.1.1.1 </span>cf:Journalist</h5>
<p>The cf:Journalist is a specialization of the PROV ontology <a href="#agent">Agent</a> class and models all individuals that participate in creating, editing, and sharing the crime file.The following RDF/XML code illustrates how cf:Journalist is asserted to be a specialization of <a href="#agent">prov:Agent.</a></p>
<div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crime#Journalist">
@@ -1343,8 +1827,8 @@
</div>
</div>
<div id="cf-crimefile" class="section">
- <h5><span class="secno">3.1.1.2 </span>cf:CrimeFile</h5>
- <p> The cf:CrimeFile is a specialization of the PROV ontology <a href="#entity">Entity</a> class and it models the the file describing the crime statistics in the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance scenario</a>, including the multiple versions of the file. The following RDF/XML code illustrates how cf:Journalist is asserted to be a specialization of <a href="#entity">prov:Entity</a>.
+ <h5><span class="secno">4.1.1.2 </span>cf:CrimeFile</h5>
+ <p> The cf:CrimeFile is a specialization of the PROV ontology <a href="#entity">Entity</a> class and it models the the file describing the crime statistics in the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance scenario</a>, including the multiple versions of the file. The following RDF/XML code illustrates how cf:Journalist is asserted to be a specialization of <a href="#entity">prov:Entity</a>.
</p>
<div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crime#CrimeFile">
@@ -1353,11 +1837,11 @@
</div>
</div>
<div id="cf-filecreation" class="section">
- <h5><span class="secno">3.1.1.3 </span>cf:FileCreation, cf:FileEditing, cf:FileAppending, cf:Emailing, cf:SpellChecking</h5>
+ <h5><span class="secno">4.1.1.3 </span>cf:FileCreation, cf:FileEditing, cf:FileAppending, cf:Emailing, cf:SpellChecking</h5>
<p>The classes cf:FileCreation, cf:FileEditing,
cf:FileAppending, cf:Emailing, cf:SpellChecking are
specialization of the PROV ontology <a href="#processexecution">ProcessExecution</a> and model the
- different activities in the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance
+ different activities in the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance
scenario</a>. The following RDF/XML code illustrates the
specialization of the <a href="#processexecution">prov:ProcessExecution</a> to define class cf:FileCreation (other classes can be similarly defined by using the subClassOf property).</p>
<div class="exampleOuter">
@@ -1381,10 +1865,10 @@
</div>
</div>
<div id="specialization-of-prov-ontology-properties" class="section">
- <h4><span class="secno">3.1.2 </span>Specialization of PROV Ontology Properties</h4>
+ <h4><span class="secno">4.1.2 </span>Specialization of PROV Ontology Properties</h4>
<p> The following new object property was created in the CrimeFile Ontology by extending the PROV ontology object property:</p>
<div id="cf-hadfilepath" class="section">
- <h5><span class="secno">3.1.2.1 </span>cf:hadFilePath</h5>
+ <h5><span class="secno">4.1.2.1 </span>cf:hadFilePath</h5>
<p>The property cf:hadFilePath is a specialization of the PROV ontology hadLocation object property and links the class CrimeFile to the FileDirectory class. The following RDF/XML code illustrates the use of rdfs:subPropertyOf to create hadFilePath property.</p>
<div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crime#hadFilePath">
@@ -1407,7 +1891,7 @@
</div>
</div>
<div id="modeling-an-example-scientific-workflow-scenario" class="section">
- <h3><span class="secno">3.2 </span>Modeling an Example Scientific Workflow Scenario</h3>
+ <h3><span class="secno">4.2 </span>Modeling an Example Scientific Workflow Scenario</h3>
<p>This section describes an example of extending the PROV
ontology to create a provenance ontology for scientific
workflows.</p>
@@ -1443,7 +1927,7 @@
workflow provenance</em>
</p>
<div id="workflow-extensions-to-prov-classes" class="section">
- <h4><span class="secno">3.2.1 </span>Workflow extensions to PROV classes</h4>
+ <h4><span class="secno">4.2.1 </span>Workflow extensions to PROV classes</h4>
<p>
In order to describe workflow executions following the
model above, the PROV ontology is extended with
@@ -1498,7 +1982,7 @@
</dl>
</div>
<div id="workflow-extensions-to-prov-properties" class="section">
- <h4><span class="secno">3.2.2 </span>Workflow extensions to PROV properties</h4>
+ <h4><span class="secno">4.2.2 </span>Workflow extensions to PROV properties</h4>
<p>
While for most cases subclassing will provide the
additional expressionality the application needs, this
@@ -1592,7 +2076,7 @@
</dl>
</div>
<div id="workflow-structure" class="section">
- <h4><span class="secno">3.2.3 </span>Workflow structure</h4>
+ <h4><span class="secno">4.2.3 </span>Workflow structure</h4>
<p>
This ontology includes a simple definition language for
describing the overall workflow structure. This is not
@@ -1659,7 +2143,7 @@
</dl>
</div>
<div id="example-workflow" class="section">
- <h4><span class="secno">3.2.4 </span>Example workflow</h4>
+ <h4><span class="secno">4.2.4 </span>Example workflow</h4>
<img alt="An example workflow with input, three processes, and two outputs." src="examples/ontology-extensions/workflow/Concatsha1.png" />
<p>This is an example workflow which defines a workflow
input <i>input</i>, three processes <i>String_constant</i>,
@@ -1727,24 +2211,27 @@
</rdf:RDF> </pre></div>
</div>
<div id="example-workflow-run" class="section">
- <h4><span class="secno">3.2.5 </span>Example workflow run</h4>
+ <h4><span class="secno">4.2.5 </span>Example workflow run</h4>
<p>
This example shows how using the workflow extensions
together with PROV can provide the provenance of executing
the workflow defined above.
</p>
- <div class="exampleOuter"><pre class="example"><rdf:RDF xmlns="http://www.w3.org/ns/prov-o/"
+ <div class="exampleOuter"><pre class="example"><rdf:RDF
xmlns:cnt="http://www.w3.org/2011/content#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:prov="http://www.w3.org/ns/prov-o/"
+ xmlns:time="http://www.w3.org/2006/time#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:wf="http://www.example.com/scientific-workflow#"
- xmlns:base="http://www.example.com/run1#" >
+ xmlns:run="http://www.example.com/run1#"
+ xmlns:base="http://www.example.com/run1#"
+ >
- <Agent rdf:about="#aUser">
+ <prov:Agent rdf:about="#aUser">
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
<foaf:name>Stian Soiland-Reyes</foaf:name>
- </Agent>
+ </prov:Agent>
<wf:WorkflowEngine rdf:about="#workflowEngine" />
@@ -1769,25 +2256,48 @@
</wf:Value>
<wf:Process rdf:about="#workflowRun">
- <used>
+ <prov:used>
<wf:ValueAtPort>
<wf:sawValue rdf:resource="#input"/>
<wf:seenAtPort rdf:resource="http://www.example.com/workflow1#inName"/>
+ <prov:assumedRoleAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:21:31Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:assumedRoleAt>
</wf:ValueAtPort>
- </used>
+ </prov:used>
<wf:ranInWorkflowEngine rdf:resource="#workflowEngine"/>
<wf:wasLaunchedBy rdf:resource="#aUser"/>
<wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#workflow"/>
+ <prov:startedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:startedAt>
+ <prov:endedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:23:32Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:endedAt>
</wf:Process>
<wf:Process rdf:about="#constant">
<wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
<wf:wasDefinedBy
rdf:resource="http://www.example.com/workflow1#String_Constant"/>
+ <prov:startedAt>
+ <prov:Time rdf:about="#t0">
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:startedAt>
+ <prov:endedAt rdf:resource="#t0" />
</wf:Process>
<wf:Value rdf:about="#hello">
- <wasGeneratedBy rdf:resource="#constant"/>
+ <prov:wasGeneratedBy rdf:resource="#constant"/>
+ <prov:wasGeneratedAt rdf:resource="#t0"/>
+ <prov:endedAt rdf:resource="#t0" />
<wf:value>
<cnt:ContentAsText>
<cnt:chars>Hello, </cnt:chars>
@@ -1796,7 +2306,7 @@
</wf:Value>
<wf:ValueAtPort rdf:about="#helloValue">
- <wasGeneratedBy rdf:resource="#constant"/>
+ <prov:wasGeneratedBy rdf:resource="#constant"/>
<wf:value>
<cnt:ContentAsText>
<cnt:chars>Hello, </cnt:chars>
@@ -1806,24 +2316,44 @@
</wf:ValueAtPort>
<wf:Process rdf:about="#combine">
- <used>
+ <prov:used>
<wf:ValueAtPort>
<wf:sawValue rdf:resource="#hello"/>
<wf:seenAtPort rdf:resource="http://www.example.com/workflow1#catIn1"/>
+ <prov:assumedRoleAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:21Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:assumedRoleAt>
</wf:ValueAtPort>
- </used>
- <used>
+ </prov:used>
+ <prov:used>
<wf:ValueAtPort>
<wf:sawValue rdf:resource="#input"/>
<wf:seenAtPort rdf:resource="http://www.example.com/workflow1#catIn2"/>
+ <prov:assumedRoleAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:23Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:assumedRoleAt>
</wf:ValueAtPort>
- </used>
+ </prov:used>
<wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
<wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#cat"/>
+ <prov:startedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:20Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:startedAt>
+ <prov:endedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:25Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:endedAt>
</wf:Process>
<wf:Value rdf:about="#combined">
- <wasGeneratedBy rdf:resource="#combine"/>
+ <prov:wasGeneratedBy rdf:resource="#combine"/>
<wf:value>
<cnt:ContentAsText>
<cnt:chars>Hello, Steve</cnt:chars>
@@ -1832,9 +2362,19 @@
</wf:Value>
<wf:Process rdf:about="#shasum">
- <used rdf:resource="#combined"/>
+ <prov:used rdf:resource="#combined"/>
<wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
<wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#shasum"/>
+ <prov:startedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:30Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:startedAt>
+ <prov:endedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:21:00Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:endedAt>
</wf:Process>
<wf:Value rdf:about="#sha1">
@@ -1847,7 +2387,7 @@
</wf:Value>
<wf:ValueAtPort rdf:about="#sha1OutputFromShasum">
- <wasGeneratedBy rdf:resource="#shasum"/>
+ <prov:wasGeneratedBy rdf:resource="#shasum"/>
<wf:value>
<cnt:ContentAsText>
<cnt:characterEncoding>UTF-8</cnt:characterEncoding>
@@ -1859,7 +2399,7 @@
</wf:ValueAtPort>
<wf:ValueAtPort rdf:about="#sha1OutputFromWorkflow">
- <wasGeneratedBy rdf:resource="#workflowRun"/>
+ <prov:wasGeneratedBy rdf:resource="#workflowRun"/>
<wf:value>
<cnt:ContentAsText>
<cnt:characterEncoding>UTF-8</cnt:characterEncoding>
@@ -1870,7 +2410,7 @@
<wf:wasSeenAt rdf:resource="http://www.example.com/workflow1#sha1"/>
</wf:ValueAtPort>
-</rdf:RDF> </pre>
+</rdf:RDF></pre>
<em>Example available as
<a href="examples/ontology-extensions/workflow/workflow.rdf">RDF/XML</a>
and
@@ -1892,7 +2432,7 @@
<div id="formal-semantics-of-the-prov-ontology" class="section">
<!-- OddPage -->
-<h2><span class="secno">4. </span>Formal Semantics of the PROV Ontology</h2>
+<h2><span class="secno">5. </span>Formal Semantics of the PROV Ontology</h2>
<p>The PROV ontology uses OWL2 as the ontology language, hence it supports a set of entailments based on the standard RDF semantics [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-MT">RDF-MT</a></cite>] and OWL2 semantics ([<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-DIRECT-SEMANTICS">OWL2-DIRECT-SEMANTICS</a></cite>], [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-RDF-BASED-SEMANTICS">OWL2-RDF-BASED-SEMANTICS</a></cite>]). In this section, we describe these set of semantics as applied to the PROV ontology along with a set of constraints introduced in the PROV-DM [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] that are provenance-specific. It is intended that provenance applications can leverage this normative description of the formal semantics of PROV ontology to support:</p>
<ul>
<li><b>Automated consistency checking </b>of provenance assertions (in RDF): Any RDF graph generated to represent provenance information using the PROV ontology as schema can be automatically checked for consistency using reasoning tool, such as FaCT++, Pellet, and Racer among others.</li>
@@ -1902,7 +2442,7 @@
<div id="rdf-semantics-for-prov-ontology" class="section">
- <h3><span class="secno">4.1 </span>RDF Semantics for PROV Ontology</h3>
+ <h3><span class="secno">5.1 </span>RDF Semantics for PROV Ontology</h3>
<p> We briefly summarize the essential features of the RDF Semantics and refer to the RDF semantics [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-MT">RDF-MT</a></cite>] for the normative specification. The RDF Semantics uses model theory, with a notion of interpretation I defined over RDF (rdf-interpretation) or RDFS (rdfs-interpretation) vocabulary, for specifying the formal semantics of a RDF or RDFS graph [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-MT">RDF-MT</a></cite>]. The rdf-interpretation is an interpretation that satisfies a set of constraints called "<i>RDF semantic conditions</i>" and a set of "<i>RDF axiomatic triples</i>" (see Section 3.1 of RDF Semantics [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-MT">RDF-MT</a></cite>]). The rdfs-interpretation is defined over the additional terms in the RDFS vocabulary, including <i>rdfs:domain</i>, <i>rdfs:range</i>, <i>rdfs:Class</i>, <i>rdfs:subClassOf</i>, and <i>rdfs:subPropertyOf</i>. An rdfs-interpretation satisfies a set of constraints called "<i>RDFS semantic conditions</i>" and "<i>RDFS axiomatic triples</i>" (see Section 4.1 of RDFS Semantics [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-MT">RDF-MT</a></cite>]).
</p>
<p>The rdfs-interpretation supports the following set of the entailment rules that are applicable to the PROV ontology (we do not discuss the simple RDF entailments):
@@ -1914,7 +2454,7 @@
<p>Similar to Rule 1, if a PROV ontology class Y is defined to be <i>range</i> of a PROV object property, then an individual asserted as "object" of that property in a RDF triple is an instance of the class Y. (from rdf3 Rule defined in RDF Semantics)
</p>
<h4 id="rule-3">Rule 3</h4>
- <p>Both the rdfs:subClassOf and rdfsubPropertyOf are transitive properties, hence provenance assertions, in form of RDF triples, using a specialized sub class or sub property can be inferred to be true for their parent class or parent property. For example, in the provenance scenario, though alice and bob are asserted to be individuals of the class Journalist, we can infer that they are also individuals of the PROV ontology class Agent and Entity. Given,
+ <p>Both the <code>rdfs:subClassOf</code> and <code>rdfs:subPropertyOf</code> are transitive properties, hence provenance assertions, in form of RDF triples, using a specialized sub class or sub property can be inferred to be true for their parent class or parent property. For example, in the provenance scenario, though alice and bob are asserted to be individuals of the class Journalist, we can infer that they are also individuals of the PROV ontology class Agent and Entity. Given,
</p>
<div class="exampleOuter">
<pre class="example"><rdf:Description rdf:about="http://www.example.com/crimeFile#Alice">
@@ -1947,103 +2487,103 @@
<div id="owl2-semantics-for-prov-ontology" class="section">
- <h3><span class="secno">4.2 </span>OWL2 Semantics for PROV Ontology</h3>
+ <h3><span class="secno">5.2 </span>OWL2 Semantics for PROV Ontology</h3>
<p>In addition to RDF Semantics, the OWL2 semantics as described in [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-DIRECT-SEMANTICS">OWL2-DIRECT-SEMANTICS</a></cite>], [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-RDF-BASED-SEMANTICS">OWL2-RDF-BASED-SEMANTICS</a></cite>] are also applicable to PROV ontology. We consider the OWL2 RDF-Based Semantics (since it is a semantics superset of OWL2 Direct Semantics) and specifically the extension of the D-interpretation, which satisfies the constraints for rdf-interpretation, rdfs-interpretation (as defined in previous section), graphs with blank nodes, and interpretation defined for RDF datatypes (see Section 5.1 in RDF Semantics [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-MT">RDF-MT</a></cite>]). The OWL2 RDF-based semantics introduces the notion of "facets" to constrain datatypes, both the rdf:XMLLiteral defined in the RDF Semantics [<cite><a class="bibref" rel="biblioentry" href="#bib-RDF-MT">RDF-MT</a></cite>] and datatypes defined in the OWL2 Structural Specifications [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-SYNTAX">OWL2-SYNTAX</a></cite>]. The OWL2 RDF-based interpretation, also called <b>D-interpretation with facets</b> is a D-interpretation that also satisfies the OWL2 RDF-based semantics called "semantic constraints" (see Section 5 in OWL2 RDF-Based Semantics [<cite><a class="bibref" rel="biblioentry" href="#bib-OWL2-RDF-BASED-SEMANTICS">OWL2-RDF-BASED-SEMANTICS</a></cite>]).
</p>
</div>
<div id="entailments-supported-by-the-provenance-model" class="section">
- <h3><span class="secno">4.3 </span>Provenance-specific Entailments Supported by PROV Ontology</h3>
+ <h3><span class="secno">5.3 </span>Provenance-specific Entailments Supported by PROV Ontology</h3>
<p>The PROV-DM [<cite><a class="bibref" rel="biblioentry" href="#bib-PROV-DM">PROV-DM</a></cite>] introduces a set of specific constraints applicable to PROV ontology. The following is a list of constraints that will be supported by the PROV ontology and any provenance application that uses the PROV ontology.</p>
<div id="provenance-constraint-on-processexecution" class="section">
- <h4><span class="secno">4.3.1 </span>Provenance constraint on ProcessExecution</h4>
+ <h4><span class="secno">5.3.1 </span>Provenance constraint on ProcessExecution</h4>
<p>The PROV-DM describes a constraint on ordering of time (or event) associated with a <a href="#processexecution">ProcessExecution.</a> </p>
<div class="issue">"From a process execution expression, one can infer that the start event precedes the end event of the represented activity." This is <a href="http://www.w3.org/2011/prov/track/issues/121">ISSUE-121</a></div>
</div>
<div id="provenance-constraint-on-wasgeneratedby-generation-affects-attributes" class="section">
- <h4><span class="secno">4.3.2 </span>Provenance constraint on wasGeneratedBy (generation-affects-attributes)</h4>
+ <h4><span class="secno">5.3.2 </span>Provenance constraint on wasGeneratedBy (generation-affects-attributes)</h4>
<p>The PROV-DM describes a constraint on wasGeneratedBy that associates the values of attributes of an Entity with the ProcessExecution that generated the Entity.</p>
<div class="issue">"Given a process execution pe, entity e, role r, and optional time t, if the assertion wasGeneratedBy(e,pe,r) or wasGeneratedBy(e,pe,r,t) holds, the values of some of e's attributes are determined by the activity denoted by pe and the entities used by pe. Only some (possibly none) of the attributes values may be determined since, in an open world, not all used entities may have been asserted." This is <a href="http://www.w3.org/2011/prov/track/issues/122">ISSUE-122 </a> and <a href="http://www.w3.org/2011/prov/track/issues/105">ISSUE-105</a></div>
</div>
<div id="provenance-constraint-on-wasgeneratedby-generation-pe-ordering" class="section">
- <h4><span class="secno">4.3.3 </span>Provenance constraint on wasGeneratedBy (generation-pe-ordering)</h4>
+ <h4><span class="secno">5.3.3 </span>Provenance constraint on wasGeneratedBy (generation-pe-ordering)</h4>
<p>The second constraint on wasGeneratedBy associates an ordering of events associated with the generation of an Entity instance and the start, end time or event of the PE instance.</p>
<div class="note"> Without an explicit association of <a href="#time">TemporalEntity</a> with the <a href="#entity">Entity</a> instance and <a href="#processexecution">PE</a> instance, it is not possible to state or enforce this constraint in the PROV ontology schema and the corresponding RDF dataset.
</div>
</div>
<div id="provenance-constraint-on-wasgeneratedby-generation-unicity" class="section">
- <h4><span class="secno">4.3.4 </span>Provenance constraint on wasGeneratedBy (generation-unicity)</h4>
+ <h4><span class="secno">5.3.4 </span>Provenance constraint on wasGeneratedBy (generation-unicity)</h4>
<p>The PROV-DM describes a constraint on wasGeneratedBy that asserts that given an account, only one PE instance can be associated to an Entity instance by the property wasGeneratedBy.</p>
<div class="issue">"Given an entity expression denoted by e, two process execution expressions denoted by pe1 and pe2, and two qualifiers q1 and q2, if the expressions wasGeneratedBy(e,pe1,q1) and wasGeneratedBy(e,pe2,q2) exist in the scope of a given account, then pe1=pe2 and q1=q2." This is <a href="http://www.w3.org/2011/prov/track/issues/105">ISSUE-105</a></div>
</div>
<div id="provenance-constraint-on-used-use-attributes" class="section">
- <h4><span class="secno">4.3.5 </span>Provenance constraint on Used (use-attributes)</h4>
+ <h4><span class="secno">5.3.5 </span>Provenance constraint on Used (use-attributes)</h4>
<p>A constraint is defined for the Used relation in PROV-DM, that makes it necessary for an attribute-value to be true for an Entity instance linked to a ProcessExecution instance by relation Used.
</p>
<div class="issue">"Given a process execution expression identified by pe, an entity expression identified by e, a qualifier q, and optional time t, if assertion used(pe,e,q) or used(pe,e,q,t) holds, then the existence of an attribute-value pair in the entity expression identified by e is a pre-condition for the termination of the activity represented by the process execution expression identified by pe." This is <a href="http://www.w3.org/2011/prov/track/issues/124">ISSUE-124</a></div>
</div>
<div id="provenance-constraint-on-used-pe-ordering" class="section">
- <h4><span class="secno">4.3.6 </span>Provenance constraint on Used (use-pe-ordering)</h4>
+ <h4><span class="secno">5.3.6 </span>Provenance constraint on Used (use-pe-ordering)</h4>
<p>The PROV-DM describes a constraint for Used relation, which makes it necessary for an Entity instance e (linked to a ProcessExecution instance pe by Used relation) to be "used" before pe terminates and also the "generation" of e precedes "use" of e.
</p>
<div class="issue">"Given a process execution expression identified by pe, an entity expression identified by e, a qualifier q, and optional time t, if assertion used(pe,e,q) or used(pe,e,q,t) holds, then the use of the thing represented by entity expression identified by e precedes the end time contained in the process execution expression identified by pe and follows its beginning. Furthermore, the generation of the thing denoted by entity expression identified by e always precedes its use." This is <a href="http://www.w3.org/2011/prov/track/issues/124">ISSUE-124</a></div>
</div>
<div id="provenance-constraint-on-derivation-attributes" class="section">
- <h4><span class="secno">4.3.7 </span>Provenance constraint on wasDerivedFrom (derivation-attributes)</h4>
+ <h4><span class="secno">5.3.7 </span>Provenance constraint on wasDerivedFrom (derivation-attributes)</h4>
<p>The PROV-DM describes a constraint for asserting wasDerivedFrom property between two Entity instances if some attributes of an Entity instance are partially or fully determined by attributes values of the other Entity instance.
</p>
<div class="issue">"Given a process execution expression denoted by pe, entity expressions denoted by e1 and e2, qualifiers q1 and q2, the assertion wasDerivedFrom(e2,e1,pe,q2,q1) or wasDerivedFrom(e2,e1) holds if and only if the values of some attributes of the entity expression identified by e2 are partly or fully determined by the values of some attributes of the entity expression identified by e1." This is <a href="http://www.w3.org/2011/prov/track/issues/125">ISSUE-125</a></div>
</div>
<div id="provenance-constraint-on-derivation-use-generation-ordering" class="section">
- <h4><span class="secno">4.3.8 </span>Provenance constraint on wasDerivedFrom (derivation-use-generation-ordering)</h4>
+ <h4><span class="secno">5.3.8 </span>Provenance constraint on wasDerivedFrom (derivation-use-generation-ordering)</h4>
<p>The PROV-DM describes a constraint that if wasDerivedFrom property is asserted between two Entity instances e1 and e2, that is wasDerivedFrom (e2, e1), then the for time instant t1 associated with a PE instance that "used" is less than the time instant t2 associated with "generation" of e2.
</p>
<div class="note"> Without an explicit association of <a href="#time">TemporalEntity</a> with the <a href="#entity">Entity</a> instance and <a href="#processexecution">PE</a> instance, it is not possible to state or enforce this constraint in the PROV ontology schema and the corresponding RDF dataset.
</div>
</div>
<div id="provenance-constraint-on-derivation-events" class="section">
- <h4><span class="secno">4.3.9 </span>Provenance constraint on wasDerivedFrom (derivation-events)</h4>
+ <h4><span class="secno">5.3.9 </span>Provenance constraint on wasDerivedFrom (derivation-events)</h4>
<p>The PROV-DM describes a constraint that if wasDerivedFrom property is asserted between two Entity instances e1 and e2, that is wasDerivedFrom (e2, e1, pe), then wasGeneratedBy(e2, pe) and used(pe, e1) can also be asserted.
</p>
<div class="note"> Since the above constraint defined in PROV-DM does not define how pe is linked to the derivation of e2 from e1, this constraint can be supported in the "opposite" direction in PROV-O. In other words, given e2 was generated at time instant t2 by pe and pe used e1 at time instant t1 and t1 is less than t2, then we can assert that wasDerivedFrom(e2, e1).
</div>
</div>
<div id="provenance-constraint-on-derivation-process-execution" class="section">
- <h4><span class="secno">4.3.10 </span>Provenance constraint on wasDerivedFrom (derivation-events)</h4>
+ <h4><span class="secno">5.3.10 </span>Provenance constraint on wasDerivedFrom (derivation-events)</h4>
<p>The PROV-DM describes a constraint that if wasDerivedFrom property is asserted between two Entity instances e1 and e2, then there exists some PE instance such that wasGeneratedBy(e2, pe) and used(pe, e1) can also be asserted.
</p>
<div class="note"> This constraint is a re-statement of the generic Semantic Web "open-world assumption". Hence, it is not mapped to PROV ontology.
</div>
</div>
<div id="provenance-constraint-on-derivation-use" class="section">
- <h4><span class="secno">4.3.11 </span>Provenance constraint on wasDerivedFrom (derivation-use)</h4>
+ <h4><span class="secno">5.3.11 </span>Provenance constraint on wasDerivedFrom (derivation-use)</h4>
<p>The PROV-DM describes a constraint that if wasDerivedFrom property is asserted between two Entity instances e1 and e2, and wasGeneratedBy(e2, pe) is also asserted then Used(pe, e1) can also be asserted.
</p>
<div class="note"> This will be asserted as a rule.
</div>
</div>
<div id="provenance-constraint-on-derivation-generation-generation-ordering" class="section">
- <h4><span class="secno">4.3.12 </span>Provenance constraint on wasEventuallyDerivedFrom (derivation-generation-generation-ordering)</h4>
+ <h4><span class="secno">5.3.12 </span>Provenance constraint on wasEventuallyDerivedFrom (derivation-generation-generation-ordering)</h4>
<p>The PROV-DM describes a constraint that if wasEventuallyDerivedFrom property is asserted between two Entity instances e1 and e2, then generation of e1 occurred before generation of e2.
</p>
<div class="note"> Without an explicit association of <a href="#time">TemporalEntity</a> (or event) with the <a href="#entity">Entity</a> instance and <a href="#processexecution">PE</a> instance, it is not possible to state or enforce this constraint in the PROV ontology schema and the corresponding RDF dataset.
</div>
</div>
<div id="provenance-constraint-on-derivation-linked-independent" class="section">
- <h4><span class="secno">4.3.13 </span>Provenance constraint on wasEventuallyDerivedFrom (derivation-linked-independent)</h4>
+ <h4><span class="secno">5.3.13 </span>Provenance constraint on wasEventuallyDerivedFrom (derivation-linked-independent)</h4>
<p>The PROV-DM describes a constraint that if wasDerivedFrom property is asserted between two Entity instances e1 and e2, then wasEventuallyDerivedFrom property can also be asserted between the two Entity instances.
</p>
<div class="note"> Is this an equivalence constraint or can we assert a subPropertyOf property between wasDerivedFrom and wasEventuallyFrom?
</div>
</div>
<div id="provenance-constraint-on-complementof-necessary-cond" class="section">
- <h4><span class="secno">4.3.14 </span>Provenance constraint on wasComplementOf (wasComplementOf-necessary-cond)</h4>
+ <h4><span class="secno">5.3.14 </span>Provenance constraint on wasComplementOf (wasComplementOf-necessary-cond)</h4>
<p>The PROV-DM describes a constraint that wasComplementOf property holds between two entities over a temporal intersection of the two entities.
</p>
<div class="note"> Without an explicit association of time value, this constraint cannot be stated or enforced in PROV ontology.
</div>
</div>
<div id="provenance-constraint-on-hasParticipant-participant" class="section">
- <h4><span class="secno">4.3.15 </span>Provenance constraint on hadParticipant (participant)</h4>
+ <h4><span class="secno">5.3.15 </span>Provenance constraint on hadParticipant (participant)</h4>
<p>The PROV-DM describes a constraint that hadParticipant property holds between an instance of Entity and instance of ProcessExecution if the two instances are linked by "used" of "wasControlledBy" or "wasComplementOf".
</p>
<div class="issue"> "Given two identifiers pe and e, respectively identifying a process execution expression and an entity expression, the expression hadParticipant(pe,e) holds if and only if:
@@ -2077,6 +2617,7 @@
</dd><dt id="bib-OWL2-SYNTAX">[OWL2-SYNTAX]</dt><dd>Boris Motik; Peter F. Patel-Schneider; Bijan Parsia. <a href="http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/"><cite>OWL 2 Web Ontology Language:Structural Specification and Functional-Style Syntax.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/">http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/</a>
</dd><dt id="bib-PROV-DM">[PROV-DM]</dt><dd>Luc Moreau, Paolo Missier<a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/"><cite>The PROV Data Model and Abstract Syntax Notation</cite></a>. 18 October 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/">http://www.w3.org/TR/2011/WD-prov-dm-20111018/</a>
</dd><dt id="bib-RDF-MT">[RDF-MT]</dt><dd>Patrick Hayes. <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210"><cite>RDF Semantics.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210">http://www.w3.org/TR/2004/REC-rdf-mt-20040210</a>
+</dd><dt id="bib-RDF-SCHEMA">[RDF-SCHEMA]</dt><dd>Dan Brickley; Ramanathan V. Guha. <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210"><cite>RDF Vocabulary Description Language 1.0: RDF Schema.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210">http://www.w3.org/TR/2004/REC-rdf-schema-20040210</a>
</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd>S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
</dd><dt id="bib-XMLSCHEMA-2">[XMLSCHEMA-2]</dt><dd>Paul V. Biron; Ashok Malhotra. <a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/"><cite>XML Schema Part 2: Datatypes Second Edition.</cite></a> 28 October 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/</a>
</dd></dl></div><div id="informative-references" class="section"><h3><span class="secno">B.2 </span>Informative references</h3><dl class="bibliography"><dt id="bib-PROV-Ontology-Namespace">[PROV-Ontology-Namespace]</dt><dd>TBD<a href="http://www.w3.org/ns/prov-o/"><cite>PROV Ontology Namespace</cite></a>. 2011, Work in progress. URL: <a href="http://www.w3.org/ns/prov-o/">http://www.w3.org/ns/prov-o/</a>
--- a/ontology/ProvenanceFormalModel.html Thu Oct 27 15:50:47 2011 +0100
+++ b/ontology/ProvenanceFormalModel.html Thu Oct 27 16:10:19 2011 +0100
@@ -65,7 +65,8 @@
// if you want to have extra CSS, append them to this list
// it is recommended that the respec.css stylesheet be kept
- extraCSS: ["http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css"],
+ extraCSS:
+ ["http://dev.w3.org/2009/dap/ReSpec.js/css/respec.css", "./extra.css"],
// editors, add as many as you like
// only "name" is required
@@ -130,14 +131,13 @@
<section id='sotd'>
</section>
- <section>
- <a id ="introduction"></a>
+ <section id="introduction">
<h2>Introduction</h2>
<p>
PROV Ontology Model (also PROV ontology) defines the normative modeling of the PROV Data Model [[PROV-DM]] using the W3C OWL2 Web Ontology Language. This document specification describes the set of classes, properties, and restrictions that constitute the PROV ontology, which have been introduced in the PROV Data Model [[PROV-DM]]. This ontology specification provides the foundation for implementation of provenance applications in different applications using the PROV ontology for representing, exchanging, and integrating provenance information. Together with the PROV Access and Query [[PROV-PAQ]] and PROV Data Model [[PROV-DM]], this document forms a framework for provenance information management in domain-specific Web-based applications.
</p>
<p>
- The PROV ontology classes and properties are defined such that they can be specialized for modeling application-specific provenance information in a variety of domains. Thus, the PROV ontology is expected to serve as a <i>reference model</i> for domain-specific provenance ontology and thereby facilitate consistent provenance interchange. This document uses an example <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> introduced in the PROV Data Model [[PROV-DM]] to demonstrate the specialization of PROV ontology.
+ The PROV ontology classes and properties are defined such that they can be specialized for modeling application-specific provenance information in a variety of domains. Thus, the PROV ontology is expected to serve as a <i>reference model</i> for domain-specific provenance ontology and thereby facilitate consistent provenance interchange. This document uses an example <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> introduced in the PROV Data Model [[PROV-DM]] to demonstrate the specialization of PROV ontology.
</p>
<p>
Finally, this document describes the formal semantics of the PROV ontology using the OWL2 semantics, [[!OWL2-DIRECT-SEMANTICS]], [[!OWL2-RDF-BASED-SEMANTICS]], and a set of provenance-specific inference rules. This is expected to support provenance implementations to automatically check for consistency of provenance information represented using PROV ontology and explicitly assert implicit provenance knowledge.
@@ -155,7 +155,7 @@
of this document include users who are new to provenance
modeling as well as experienced users who would like their provenance model compatible with the PROV ontology to facilitate standardization.This document assumes a basic understanding of the W3C OWL2 specification , including modeling of classes, properties, and restrictions in an OWL2 ontology. Readers are referred to the OWL2 documentations, starting with the [[!OWL2-PRIMER]], for the OWL2 specification.
</p>
- <p><a href="#prov-ontology--owl-encoding-of-prov-data-model">Section 2</a> describes the mapping of the PROV Data Model [[PROV-DM]] to the PROV ontology. <a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications">Section 3</a> introduces the classes and properties of the PROV ontology. <a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications">Section 4</a> describes the approach used to specialize the PROV ontology create a domain specific ontology for an example <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance scenario</a> introduced in the PROV Data Model [[PROV-DM]]. The PROV ontology supports a set of provenance entailments and these are described in <a href="#entailments-supported-by-the-provenance-model">Section 5</a>.
+ <p><a href="#prov-ontology--owl-encoding-of-prov-data-model">Section 2</a> describes the mapping of the PROV Data Model [[PROV-DM]] to the PROV ontology. <a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications">Section 3</a> introduces the classes and properties of the PROV ontology. <a href="#specializing-provenance-ontology-for-domain-specific-provenance-applications">Section 4</a> describes the approach used to specialize the PROV ontology create a domain specific ontology for an example <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance scenario</a> introduced in the PROV Data Model [[PROV-DM]]. The PROV ontology supports a set of provenance entailments and these are described in <a href="#entailments-supported-by-the-provenance-model">Section 5</a>.
</p>
</section>
@@ -169,7 +169,7 @@
</p>
<p>The PROV Ontology is not designed to be used directly in a domain application and its Classes and Properties represent "higher-level" or abstract level concepts that can be specialized further for representing domain-specific provenance information. We briefly introduce some of the OWL2 modeling terms that will be used to describe the PROV ontology. An OWL2 <i>instance</i> is an individual object in a domain of discourse, for example a person named Alice or a car, and a set of individuals sharing a set of common characteristics is called a <i>class</i>. Person and Car are examples of classes representing the set of individual persons and cars respectively. The OWL2 object properties are used to link individuals, classes, or create a property hierarchy. For example, the object property "hasOwner" can be used to link car with person. The OWL2 datatype properties are used to link individuals or classes to data values, including XML Schema datatypes [[!XMLSCHEMA-2]].
</p>
- <p>The PROV Data Model document [[PROV-DM]] introduces an example <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> describing the creation of crime statistics file stored on a shared file system and edited by journalists Alice, Bob, Charles, David, and Edith. This scenario is used as a running example in this document to describe the PROV ontology classes and properties, the specialization mechanism and entailments supported by the PROV ontology.
+ <p>The PROV Data Model document [[PROV-DM]] introduces an example <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> describing the creation of crime statistics file stored on a shared file system and edited by journalists Alice, Bob, Charles, David, and Edith. This scenario is used as a running example in this document to describe the PROV ontology classes and properties, the specialization mechanism and entailments supported by the PROV ontology.
</p>
@@ -183,6 +183,7 @@
</section>
<section>
<h3>Namespace and OWL2 version</h3>
+ <p>
The corresponding OWL2 version of this PROV Ontology is
available at [[PROV-Ontology-Namespace]] and as
@@ -203,7 +204,7 @@
<section id="prov-ontology--owl-encoding-of-prov-data-model">
<h2>PROV Ontology: Classes and Properties</h2>
- <p> We now introduce the classes and properties that constitute the PROV ontology. We first give a textual description of each ontology term, followed by OWL2 syntax representing the ontology term and an example use of the term in the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance scenario</a>.
+ <p> We now introduce the classes and properties that constitute the PROV ontology. We first give a textual description of each ontology term, followed by OWL2 syntax representing the ontology term and an example use of the term in the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance scenario</a>.
</p>
<section>
<h3>Classes</h3>
@@ -222,7 +223,7 @@
<pre> prov:Entity rdfs:subClassOf owl:Thing.
</pre>
<div><b>Example</b></div>
- <p> Example of instances of class Entity from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are files with identifiers <i>e1</i> and <i>e2</i>. The RDF/XML syntax for asserting that e1 is an instance of Entity is given below.
+ <p> Example of instances of class Entity from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are files with identifiers <i>e1</i> and <i>e2</i>. The RDF/XML syntax for asserting that e1 is an instance of Entity is given below.
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#e1">
@@ -260,7 +261,7 @@
<div><b>OWL syntax</b></div>
<pre>prov:ProcessExecution rdfs:subClassOf owl:Thing.</pre>
<div><b>Example</b></div>
- <p> Example of instances of class ProcessExecution from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are file creation (<i>pe0</i>) and file editing (<i>pe2</i>) . The RDF/XML syntax for asserting that pe2 is an instance of ProcessExecution is given below.
+ <p> Example of instances of class ProcessExecution from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are file creation (<i>pe0</i>) and file editing (<i>pe2</i>) . The RDF/XML syntax for asserting that pe2 is an instance of ProcessExecution is given below.
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#pe2">
@@ -282,7 +283,7 @@
<div><b>OWL syntax</b></div>
<pre>prov:Agent rdfs:subClassOf prov:Entity.</pre>
<div><b>Example</b></div>
- <p> Example of instances of class Agent from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are <i>Alice</i> and <i>Edith</i>. The RDF/XML syntax for asserting that Alice is an instance of Agent is given below.
+ <p> Example of instances of class Agent from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are <i>Alice</i> and <i>Edith</i>. The RDF/XML syntax for asserting that Alice is an instance of Agent is given below.
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#Alice">
@@ -308,14 +309,16 @@
- <section id="time">
+ <section id="temporalentity">
<h4>TemporalEntity</h4>
<div><b>Class Description</b></div>
- <p>TemporalEntity represents temporal information about entities in the Provenance model. This class has been re-used from the OWL Time ontology. The PROV ontology also models the two sub classes of TemporalEntity, namely Instant and Interval.</p>
+ <p>TemporalEntity represents temporal information about
+ entities in the Provenance model. This class has been re-used
+ from the OWL Time ontology [[!OWL-TIME]]. The PROV ontology also models the two sub classes of TemporalEntity, namely Instant and Interval.</p>
<div><b>OWL syntax</b></div>
<pre>time:TemporalEntity rdfs:subClassOf owl:Thing.</pre>
<div><b>Example</b></div>
- <p> Example of instances of class TemporalEntity from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are <i>t</i> and <i>t+1</i>. The RDF/XML syntax for this asserting that t+1 is an instance of class Instant is given below.
+ <p> Example of instances of class TemporalEntity from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are <i>t</i> and <i>t+1</i>. The RDF/XML syntax for this asserting that t+1 is an instance of class Instant is given below.
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#t+1">
@@ -340,7 +343,7 @@
<section id="provenancecontainer">
<h4>ProvenanceContainer</h4>
<div><b>Class Description</b></div>
- <p>ProvenanceContainer is defined to be an aggregation of provenance assertions. A provenance container should have an URI associated with it. The ProvenanceContainer class can also be used to model the PROV-DM concept of <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#expression-Account">Account</a>.</p>
+ <p>ProvenanceContainer is defined to be an aggregation of provenance assertions. A provenance container should have an URI associated with it. The ProvenanceContainer class can also be used to model the PROV-DM concept of <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#expression-Account">Account</a>.</p>
<div><b>OWL syntax</b></div>
<pre>prov:ProvenanceContainer rdfs:subClassOf owl:Thing.</pre>
<p>Examples of instance of class ProvenanceContainer includes a file describing the manufacturing details of a car, such as its batch number, manufacturer, date of manufacture, place of manufacture etc. </p>
@@ -349,13 +352,13 @@
</div>
<div class='issue'>Scope and Identifiers.
This is <a href="http://www.w3.org/2011/prov/track/issues/81">ISSUE-81</a>.</div>
- <section>
- <h4>Modeling ProvenanceContainer and Account as RDF Graph</h4>
- <p>Placeholder for Tim's description</p>
- </section>
- </section>
+ <section>
+ <h5>Modeling ProvenanceContainer and Account as RDF Graph</h5>
+ <p>Placeholder for Tim's description</p>
+ </section>
+ </section>
<section id="location">
<h4>Location</h4>
@@ -363,7 +366,7 @@
<p>Location is defined to be "is an identifiable geographic place (ISO 19112)." [[PROV-DM]]</p>
<div><b>OWL syntax</b></div>
<pre>prov:Location rdfs:subClassOf owl:Thing.</pre>
- <p> Example of instances of class Location from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is the location of the crime file in the shared directory <i>/share</i> with file path <i>/shared/crime.txt</i>. The RDF/XML syntax for asserting that the location of the crime file is the shared directory.
+ <p> Example of instances of class Location from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is the location of the crime file in the shared directory <i>/share</i> with file path <i>/shared/crime.txt</i>. The RDF/XML syntax for asserting that the location of the crime file is the shared directory.
<div class="exampleOuter">
<pre class="example">
<cf:hasLocation>
@@ -386,7 +389,7 @@
<div><b>OWL syntax</b></div>
<pre>prov:EntityInRole rdfs:subClassOf prov:Entity.</pre>
<div><b>Example</b></div>
- <p> Example of instances of class EntityInRole from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> are <i>author</i> role assumed by Bob and <i>file creator</i> role assumed by Alice. The RDF/XML syntax for asserting that Bob assumes the role of an author is given below.
+ <p> Example of instances of class EntityInRole from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> are <i>author</i> role assumed by Bob and <i>file creator</i> role assumed by Alice. The RDF/XML syntax for asserting that Bob assumes the role of an author is given below.
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#BobAsAuthor">
@@ -422,7 +425,7 @@
<code>used(pe1, Bob, qualifier(role="author", parameter="p1")</code>.
</p>
- <div class='issue'>The PROV-DM defines the term <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#expression-qualifier">Qualifier</a>, which is incorporated implicitly in definition of OWL sub-classes and sub-properties that specialize a parent class or property by defining additional qualifying constraints. Hence, <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#expression-qualifier">Qualifier</a> is not modeled explicitly in PROV ontology.</div>
+ <div class='issue'>The PROV-DM defines the term <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#expression-qualifier">Qualifier</a> is not modeled explicitly in PROV ontology.</div>
</section>
</section>
@@ -441,7 +444,7 @@
<img src="diagram-history/khalidDiagrams/wasGeneratedBy.png"
style="height: 3em" alt="wasGeneratedBy links Entity to ProcessExecution" />
<div><b>Example</b></div>
- <p> Example of wasGeneratedBy property from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is <i>e1 wasGeneratedBy pe0</i>. The RDF/XML syntax for asserting this is given below.
+ <p> Example of wasGeneratedBy property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>e1 wasGeneratedBy pe0</i>. The RDF/XML syntax for asserting this is given below.
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#e1">
@@ -469,7 +472,7 @@
<img src="diagram-history/khalidDiagrams/wasDerivedFrom.png"
style="height: 3em" alt="wasDerivedFrom links Entity to Entity" />
<div><b>Example</b></div>
- <p> Example of wasDerivedFrom property from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is <i>e3 wasDerivedFrom e2</i>. The RDF/XML syntax for asserting this is given below.
+ <p> Example of wasDerivedFrom property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>e3 wasDerivedFrom e2</i>. The RDF/XML syntax for asserting this is given below.
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#e3">
@@ -479,13 +482,23 @@
</div>
<div class='issue'>Should derivation have a time? Which time? This is <a href="http://www.w3.org/2011/prov/track/issues/43">ISSUE-43</a>.</div>
<div class='issue'>Should we specifically mention derivation of agents? This is <a href="http://www.w3.org/2011/prov/track/issues/42">ISSUE-42</a>.</div>
+ </section>
<section>
<h4>wasEventuallyDerivedFrom</h4>
<p>This object property is used to link two entities that are not directly used and generated respectively by a single instance of ProcessExecution.
</p>
<img src="diagram-history/khalidDiagrams/wasEventuallyDerivedFrom.png"
- style="height: 3em" alt="wasEventuallyDerivedFrom links Entity to Entity" />
+ style="height: 3em" alt="wasEventuallyDerivedFrom links Entity to Entity" />
+ <div><b>Example</b></div>
+ <p> Example of wasEventuallyDerivedFrom property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>e5 wasEventuallyDerivedFrom e2</i>. The RDF/XML syntax for asserting this is given below.
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#e5">
+ <prov:wasEventuallyDerivedFrom rdf:resource="http://www.example.com/crimeFile#e2"/>
+ </rdf:Description>
+ </pre>
+ </div>
<div class='issue'>Is the current definition of wasEventuallyDerivedFrom inconsistent with definition of wasDerivedFrom? This is <a href="http://www.w3.org/2011/prov/track/issues/122">ISSUE-122 </a> and <a href="http://www.w3.org/2011/prov/track/issues/126">ISSUE-126</a></div>
</section>
@@ -493,10 +506,21 @@
<h4>dependedOn</h4>
<p>dependedOn links two instances of Entity to model derivation of one instance of Entity from another instance of Entity. This property is asserted to be transitive</p>
<img src="diagram-history/khalidDiagrams/dependedOn.png"
- style="height: 3em" alt="dependedOn links Entity to Entity" />
- <div class='issue'>Is dependedOn a parent property of wasDerivedFrom? This is <a href="http://www.w3.org/2011/prov/track/issues/125">ISSUE-125</a>
- </section>
- </section>
+ style="height: 3em" alt="dependedOn links Entity to Entity" />
+ <div><b>Example</b></div>
+ <p> Example of dependedOn property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>e5 dependedOn e2</i>. The RDF/XML syntax for asserting this is given below.
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#e5">
+ <prov:dependedOn rdf:resource="http://www.example.com/crimeFile#e2"/>
+ </rdf:Description>
+ </pre>
+ </div>
+ <div class='issue'>Is dependedOn a parent property of
+ wasDerivedFrom? This is <a
+ href="http://www.w3.org/2011/prov/track/issues/125">ISSUE-125</a>
+ </div>
+ </section>
@@ -507,7 +531,7 @@
<img src="diagram-history/khalidDiagrams/used.png"
style="height: 3em" alt="used links ProcessExecution to Entity" />
<div><b>Example</b></div>
- <p> Example of used property from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is <i>pe2 used e2</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <p> Example of used property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe2 used e2</i>. The RDF/XML syntax for asserting this is given below.</p>
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#pe2">
@@ -518,14 +542,21 @@
</section>
-
-
<section id="hadparticipant">
<h4>hadParticipant</h4>
<p>hadPariticipant links Entity to ProcessExecution, where Entity used or wasGeneratedBy ProcessExecution.
<p><i>Note: No arity constraints are assumed between Entity and ProcessExecution</i></p>
<img src="diagram-history/khalidDiagrams/hadParticipant.png"
- style="height: 3em" alt="hadParticipant links ProcessExecution to Entity" />
+ style="height: 3em" alt="hadParticipant links ProcessExecution to Entity" />
+ <div><b>Example</b></div>
+ <p> Example of hadParticipant property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe2 hadParticipant e2</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#pe2">
+ <prov:hadParticipant rdf:resource="http://www.example.com/crimeFile#e2"/>
+ </rdf:Description>
+ </pre>
+ </div>
<div class='pending'>Suggested definition for participation. This is <a href="http://www.w3.org/2011/prov/track/issues/49">ISSUE-49</a>.</div>
</section>
@@ -546,7 +577,7 @@
<img src="diagram-history/khalidDiagrams/wasControlledBy.png"
style="height: 3em" alt="wasControlledBy links ProcessExecution to Agent" />
<div><b>Example</b></div>
- <p> Example of wasControlledBy property from the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario"> provenance scenario </a> is <i>FileAppending</i> (ProcessExecution) <i>wasControlledBy Bob</i>. The RDF/XML syntax for asserting this is given below.
+ <p> Example of wasControlledBy property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>FileAppending</i> (ProcessExecution) <i>wasControlledBy Bob</i>. The RDF/XML syntax for asserting this is given below.
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
@@ -572,6 +603,15 @@
</p>
<img src="diagram-history/khalidDiagrams/hadRecipe.png"
style="height: 3em" alt="hadRecipe links ProcessExecution to Agent" />
+ <div><b>Example</b></div>
+ <p> Example of hadRecipe property as an addition to the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is pe1 using some file appending instructions (instructions1) (<i> pe1 hadRecipe instructions1</i>). The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
+ <prov:hadRecipe rdf:resource="http://www.example.com/crimeFile#instructions1"/>
+ </rdf:Description>
+ </pre>
+ </div>
</section>
@@ -582,6 +622,15 @@
</p>
<img src="diagram-history/khalidDiagrams/wasInformedBy.png"
style="height: 3em" alt="wasInformedBy links ProcessExecution to ProcessExecution" />
+ <div><b>Example</b></div>
+ <p> Example of wasInformedBy property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe4 wasInformedBy pe3</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#pe4">
+ <prov:wasInformedBy rdf:resource="http://www.example.com/crimeFile#pe3"/>
+ </rdf:Description>
+ </pre>
+ </div>
</section>
@@ -593,33 +642,95 @@
</p>
<img src="diagram-history/khalidDiagrams/wasScheduledAfter.png"
style="height: 3em" alt="wasScheduledAfter links ProcessExecution to ProcessExecution" />
+ <div><b>Example</b></div>
+ <p> Example of wasScheduledAfter property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe4 wasScheduledAfter pe3</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#pe4">
+ <prov:wasScheduledAfter rdf:resource="http://www.example.com/crimeFile#pe3"/>
+ </rdf:Description>
+ </pre>
+ </div>
</section>
<section id="followed">
<h4>followed</h4>
<p>wasInformedBy links two instances of ProcessExecution to model ordering of the ProcessExecution instances.</p>
<img src="diagram-history/khalidDiagrams/followed.png"
- style="height: 3em" alt="followed links ProcessExecution to ProcessExecution" />
+ style="height: 3em" alt="followed links ProcessExecution to ProcessExecution" />
+ <div><b>Example</b></div>
+ <p> Example of followed property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is <i>pe4 followed pe1</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#pe4">
+ <prov:wasScheduledAfter rdf:resource="http://www.example.com/crimeFile#pe1"/>
+ </rdf:Description>
+ </pre>
+ </div>
</section>
<section id="attribution">
<h4>wasAttributedTo</h4>
- <p>wasAttributedTo links an instance of Entity class to an instance of Agent class.</p>
+ <p>wasAttributedTo links an instance of the Entity class to an instance of Agent class.</p>
+ <img src="diagram-history/khalidDiagrams/wasAttributedTo.png"
+ style="height: 3em" alt="wasAttributedTo links Entity to Agent" />
+ <div><b>Example</b></div>
+ <p> Example of wasAttributedTo property as an addition to the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is the attribution of e3 to David for writting editing the file (<i>e3 wasAttributedTo David</i>). The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#e3">
+ <prov:wasAttributedTo rdf:resource="http://www.example.com/crimeFile#David"/>
+ </rdf:Description>
+ </pre>
+ </div>
</section>
<section id="quotation">
<h4>wasQuoteOf</h4>
- <p>wasQuoteOf links an instances of Entity class to instances of Agent class.</p>
+ <p>wasQuoteOf links an instance of the Entity class to an instance of of the Agent class.</p>
+ <img src="diagram-history/khalidDiagrams/wasQuoteOf.png"
+ style="height: 3em" alt="wasQuoteOf links Entity to Agent" />
+ <div><b>Example</b></div>
+ <p> Example of wasQuoteOf property as an addition to the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is e2 quoting Alice words, recorded by Bob (<i> e2 wasQuoteOf Alice</i>). The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#e2">
+ <prov:wasQuoteOf rdf:resource="http://www.example.com/crimeFile#Alice"/>
+ </rdf:Description>
+ </pre>
+ </div>
</section>
<section id="summary">
<h4>wasSummaryOf</h4>
- <p>wasSummaryOf links an instances of Entity class.</p>
+ <p>wasSummaryOf links two instances of the Entity class.</p>
+ <img src="diagram-history/khalidDiagrams/wasSummaryOf.png"
+ style="height: 3em" alt="wasSummaryOf links Entity to Entity" />
+ <div><b>Example</b></div>
+ <p> Example of wasSummaryOf property as an addition to the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> is e3 summarizing some additional statistics(<i> e3 wasSummaryOf statistics</i>). The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#e3">
+ <prov:wasSummaryOf rdf:resource="http://www.example.com/crimeFile#statistics"/>
+ </rdf:Description>
+ </pre>
+ </div>
</section>
<section id="originalsource">
<h4>hadOriginalSource</h4>
- <p>hadOriginalSource links an instances of Entity class. This property is defined to be a specialization of the wasEventuallyDerivedFrom propery.</p>
+ <p>hadOriginalSource links two instances of the Entity class. This property is defined to be a specialization of the wasEventuallyDerivedFrom propery.</p>
+ <img src="diagram-history/khalidDiagrams/hadOriginalSource.png"
+ style="height: 3em" alt="hadOriginalSource links Entity to Entity" />
+ <div><b>Example</b></div>
+ <p> Example of hadOriginalSource property from the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario"> provenance scenario </a> <i> e6 hadOriginalSource e1</i>. The RDF/XML syntax for asserting this is given below.</p>
+ <div class="exampleOuter">
+ <pre class="example">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#e6">
+ <prov:hadOriginalSource rdf:resource="http://www.example.com/crimeFile#e1"/>
+ </rdf:Description>
+ </pre>
+ </div>
</section>
<section id="hastemporalvalue">
@@ -647,6 +758,8 @@
<code>Time</code> subclass by specifying the time using a
<code>time:inXSDDateTime</code> data property.
</p>
+ <img src="diagram-history/khalidDiagrams/startedAt.png"
+ style="height: 3em" alt="startedAt links ProcessExecution to Instant" />
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
@@ -666,6 +779,8 @@
<code>Time</code> subclass by specifying the time using a
<code>time:inXSDDateTime</code> data property.
</p>
+ <img src="diagram-history/khalidDiagrams/endedAt.png"
+ style="height: 3em" alt="endedAt links ProcessExecution to Instant" />
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
@@ -688,12 +803,14 @@
<code>Time</code> subclass by specifying the time using a
<code>time:inXSDDateTime</code> data property.
</p>
+ <img src="diagram-history/khalidDiagrams/wasGeneratedAt.png"
+ style="height: 3em" alt="wasGeneratedAt links Entity to Instant" />
<p>
Note that by constraint
</p>
<div class="exampleOuter">
<pre class="example">
- <rdf:Description rdf:about="http://www.example.com/crimeFile#e1">
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#e2">
<prov:wasGeneratedAt rdf:parseType="Resource">
<rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Time"/>
<time:inXSDDateTime>2011-10-20T17:14:12Z</time:inXSDDateTime>
@@ -714,6 +831,8 @@
is assumed by one and only one <code>Entity</code>.
<code>wasAssumedBy</code> is a subproperty of <code>wasComplementOf</code>.
</p>
+ <img src="diagram-history/khalidDiagrams/wasAssumedBy.png"
+ style="height: 3em" alt="wasAssumedBy links EntityInRole to Entity" />
<div class="exampleOuter">
<pre class="example">
<rdf:Description rdf:about="http://www.example.com/crimeFile#pe1">
@@ -740,6 +859,8 @@
relations such as <code>used</code> and
<code>wasGeneratedBy</code>.
</p>
+ <img src="diagram-history/khalidDiagrams/assumedRole.png"
+ style="height: 3em" alt="assumedRole links EntityInRole to Role" />
<p>
The definition and interpretation of the <code>Role</code>
is outside the scope for PROV-O. The <code>Role</code> class is
@@ -782,6 +903,8 @@
<code>Time</code> subclass by specifying the time using a
<code>time:inXSDDateTime</code> data property.
</p>
+ <img src="diagram-history/khalidDiagrams/assumedRoleAt.png"
+ style="height: 3em" alt="assumedRoleAt links EntityInRole to Instant" />
<p>
According to the constraint <a
href="#provenance-constraint-on-wasgeneratedby-generation-unicity">generation-unicity</a>
@@ -930,6 +1053,246 @@
</div>
</section>
+
+ <section id="collections">
+ <h3>Collections</h3>
+ <p>A <code>Collection</code> is a type of
+ <code>Entity</code> which have been composed of other
+ entities. A PROV-O <code>Collection</code> can represent
+ any kind of collection, such as a ordered list, array,
+ associative list, dictionary, hashtable, map. It is out of scope
+ for PROV to further define the exact nature of the collection, but
+ PROV-O defines shortcuts for defining that a entity have
+ been added or removed to a collection. These operations are
+ modelled as subproperties of <code>wasDerivedFrom</code>
+ between two static collections, corresponding to <a
+ href="http://www.w3.org/TR/prov-dm/#expression-Collection">collection
+ assertions</a> [[PROV-DM]].
+ </p>
+
+ <section id="collection-adding">
+ <h4>Expansion</h4>
+ <p>
+ An <code>Entity</code> can be added to a
+ <code>Collection</code>, producing a new (derived)
+ <code>Collection</code> which contains the new item
+ in addition to the items of the old collection.
+ The item can be added at a certain <em>key</em> (represented
+ as another <code>Entity</code>), which could be
+ a <em>position</em> (for ordered lists), a <em>hash key</em>
+ for a dictionary, or the value itself (for sets).
+ In PROV-O the addition is specified using the functional
+ properties <code>wasExpandedFrom</code>,
+ <code>wasExpandedBy</code> and <code>wasExpandedAt</code>.
+ These correspond to the PROV-ASN <a
+ href="http://www.w3.org/TR/prov-dm/#expression-Collection">collection
+ assertions</a>
+ <code>wasAddedTo_Coll</code> (the expanded collection),
+ <code>wasAddedTo_Entity</code> (the expansion)
+ and <code>wasAddedTo_Key</code> (the key it was expanded at). The properties are
+ functional so that only one expansion is asserted at a time,
+ relating the three properties without requiring an
+ explicit "Expansion" class, and also asserting that no other
+ entities have been added or removed to the two
+ collections related using <code>prov:wasExpandedBy</code>.
+ </p>
+ <div class="issue">[[PROV-DM]] does not make the guarantee
+ that other entities have not been added. Is it fair to make
+ such an assumption here?
+ </div>
+ <div class="exampleOuter">
+ <pre class="example">
+ :col1 a prov:Collection ;
+ prov:wasExpandedFrom :col0 ;
+ prov:wasExpandedBy :e1 ;
+ prov:wasExpandedAt :key1 .
+
+ :col2 a prov:Collection ;
+ prov:wasExpandedFrom :col1 ;
+ prov:wasExpandedBy :e2 ;
+ prov:wasExpandedAt :key2 .
+ </pre>
+ </div>
+ <div class="issue">TODO: Write Collection examples as RDF/XML</div>
+ <p>
+ The above example describes collections <code>:col0</code>,
+ <code>:col1</code> and <code>:col2</code>. We know that
+ <code>:col2:</code> has the entries:
+ <code>(:key2, :e2)</code> and <code>(:key1, :e2)</code>. As
+ we don't have the provenance of :col0 it might or might not
+ contain other keys and entities.
+ </p>
+ <div class="constraint" id="expanded-collection">
+ If a Collection has one of the functional
+ <code>prov:wasExpandedFrom</code>,
+ <code>prov:wasExpandedBy</code> or
+ <code>prov:wasExpandedAt</code> properties asserted, then it
+ is an <code>ExpandedCollection</code> and the
+ existence of the remaining <code>wasExpanded*</code> properties are implied.
+ </div>
+ <div class="issue">TODO: Express the constraint <em>expanded-collection</em> in the OWL ontology</div>
+ <div class="issue">Does prov:Collection allow replacement or
+ multiple additions on the same key?
+ If we do a second expansion using the :key1,
+ will :e1 still be in the collection? We
+ recommend that for <em>map</em> functionality replacement
+ should always be represented by first an explicit removal
+ (wasReducedBy) followed by insertion (wasExpandedBy).
+ </div>
+ </section>
+
+ <section id="collection-removal">
+ <h4>Reduction</h4>
+ <p>
+ Removing from a collection is modelled in a similar way as
+ expansion, by deriving a new <em>reduced</em> collection
+ which does not have the removed item or key. This is done
+ using the properties <code>prov:wasReducedFrom</code>,
+ <code>prov:wasReducedBy</code> and
+ <code>prov:wasReducedAt</code>, which correspond go
+ [[PROV-DM]] properties <code>wasRemovedFrom_Coll</code>
+ and <code>wasRemovedFrom_Key</code>.
+ </p>
+ <div class="exampleOuter">
+ <pre class="example">
+ :col3 a prov:Collection ;
+ prov:wasReducedFrom :col2 ;
+ prov:wasReducedAt :key1 .
+
+ :col4 a prov:Collection ;
+ prov:wasReducedFrom :col3 ;
+ prov:wasReducedBy :e2 ;
+ prov:wasReducedAt :key2 .
+ </pre>
+ </div>
+ <p>
+ The example above says that in :col3 does not contain
+ what :col2 had at <code>:key1</code>, e.g. (:key1, :e1).
+ :col4 does not contain (:key2, :e2).
+ </p>
+ <div class="constraint" id="reduced-collection">
+ If a Collection has one of the functional
+ <code>prov:wasReducedFrom</code>,
+ <code>prov:wasReducedBy</code> or
+ <code>prov:wasReducedAt</code> properties asserted, then it
+ is a <code>ReducedCollection</code> and the
+ existence of the remaining <code>wasReduced*</code> properties are
+ implied. A <code>ReducedCollection</code> is disjoint from a
+ <code>ExpandedCollection</code>, so it is not possible to
+ combine any <code>wasReduced*</code> property with any
+ <code>wasExpanded*</code> property.
+ </div>
+ <div class="issue">TODO: Express the constraint <em>reduced-collection</em> in the OWL ontology</div>
+ <div class="issue">
+ Does removal at :key1 mean it is no longer present in
+ the collection? What if the collection is a linked list,
+ where :key1 is a position? (:e2 would now be at :key1).
+ Does removal assert that the key existed in the
+ collection, or simply that it no longer is in the
+ collection? If it is possible to insert several values
+ at the same key, is it possible to remove only one of
+ these at a given key?
+ </div>
+ <p>
+ Asserting <code>prov:wasReducedBy</code> is optional, as
+ <code>prov:wasReducedAt</code> will remove any value at that
+ key. (PROV-DM does not describe wasRemovedFrom_Entity).
+ </p>
+ </section>
+
+ <section class="collection-empty">
+ <h4>EmptyCollection</h4>
+ <p>PROV-O defines
+ a subclass of <code>Collection</code> called
+ <code>EmptyCollection</code>. Asserting that a
+ collection is empty means that it does not contain
+ any key/value pairs. Combined with expansion and
+ reduction statements this allows the assertion of
+ the complete content of a collection.
+ </p>
+ <div class="exampleOuter">
+ <pre class="example">
+ :col0 a prov:EmptyCollection .
+ :col4 a prov:EmptyCollection .
+ </pre>
+ </div>
+ <div class="issue">[[PROV-DM]] does not describe the concept
+ of an empty collection</div>
+ <p>
+ With the additional information given above, one can
+ conclude that <code>:col1</code> (which
+ <code>prov:wasExpandedFrom :col0</code>) only
+ contains the expanded entity <code>:e1</code>, and that
+ <code>:col2</code> only contains the keys <code>:key1</code>
+ and <code>:key2</code>.</p>
+
+
+ <div class="constraint" id="empty-collection-disjoint">
+ An EmptyCollection is disjoint from an ExpandedCollection.
+ </div>
+ <div class="constraint" id="empty-collection-range">It is not valid for an asserted
+ <code>EmptyCollection</code> to be
+ in the domain of <code>prov:wasExpandedFrom</code> or
+ in the range of <code>prov:wasReducedFrom</code>.
+ </div>
+ <div class="issue">TODO: Include the constraints
+ <em>empty-collection-disjoint</em> and
+ <em>empty-collection-range</em> in the OWL ontology</div>
+ </section>
+
+ <section>
+ <h4>Collection content</h4>
+ <p>To describe the complete content of a Collection (its
+ keys and values), an asserter can form a chain of
+ <code>wasExpandedFrom</code> assertions starting from an
+ <code>EmptyCollection</code>. Note that although this does
+ enforce an ordering of the addition of the elements to the
+ final collection, it does not neccessarily assert that this
+ happened sequentially, as the corresponding implied
+ <code>ProcessExecution</code>s could have had zero duration.
+ To assert that the intermediate expansions occurred
+ "instantly" and not expose any temporal ordering of the
+ insertions, you may state that the <em>generation time</em>
+ of the initial and final collection is the same:
+ </p>
+ <div class="exampleOuter">
+ <pre class="example">
+ :col0 a prov:EmptyCollection ;
+ <b>prov:wasGeneratedAt :t0 .</b>
+ :col1 a prov:Collection ;
+ prov:wasExpandedFrom :col0 ;
+ prov:wasExpandedBy :e1 .
+ :col2 a prov:Collection ;
+ prov:wasExpandedFrom :col1 ;
+ prov:wasExpandedBy :e2 ;
+ <b>prov:wasGeneratedAt :t0 .</b>
+ </pre>
+ </div>
+ <p>The collection <code>:col2</code> described above was
+ created with the entities
+ <code>:e1</code> and <code>:e2</code>. Both items were
+ inserted at the same time <code>:t0</code>. (The
+ wasGeneratedAt :t0 for :col1 is implied above due to the
+ <a
+ href="http://www.w3.org/TR/prov-dm/#derivation-use-generation-ordering">derivation-use-generation-ordering</a>
+ constraint.)
+ </p>
+ <div class="issue">
+ FIXME: What if the asserter knows and want to assert the
+ content, and she knows it was inserted in a temporal order - but
+ don't know that order? (for instance "members of the Royal
+ Society"). Should there be a prov:hadContent property? Is it
+ possible to use rdf collections for such a shorthand?
+ </div>
+ <div class="issue">
+ Is it possible to express set operations (union, difference,
+ intersection, negation) between two collections without
+ having to express all the individual members?
+ </div>
+ </section>
+
+ </section>
+
<section id="overview-of-the-ontology">
<h3>Overview of the ontology</h3>
<p>The following diagram illustrates the complete PROV ontology. </p>
@@ -951,7 +1314,7 @@
<li>rdfs:subClassOf: The property rdfs:subClassOf is an instance of rdf:Property that is used to state that all the instances of one class are instances of another [[!RDF-SCHEMA]]</li>
<li>rdfs:subPropertyOf: "A rdfs:subPropertyOf axiom defines that the property is a subproperty of some other property" [[!RDF-SCHEMA]]</li>
</ul>
- <p>To illustrate the specialization mechanism, the PROV Ontology is extended to create an ontology schema for the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance scenario</a> describing the creation of the crime statistics file. </p>
+ <p>To illustrate the specialization mechanism, the PROV Ontology is extended to create an ontology schema for the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance scenario</a> describing the creation of the crime statistics file. </p>
@@ -985,8 +1348,26 @@
<rdf:type rdf:resource="http://www.example.com/crime#Journalist"/>
</rdf:Description>
</prov:wasControlledBy>
+ <prov:startedAt>
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#t1">
+ <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Time"/>
+ <time:inXSDDateTime>2011-10-20T16:26:45Z</time:inXSDDateTime>
+ </rdf:Description>
+ </prov:startedAt>
+ <prov:endedAt>
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#t3">
+ <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Time"/>
+ <time:inXSDDateTime>2011-11-21T18:36:52Z</time:inXSDDateTime>
+ </rdf:Description>
+ </prov:endedAt>
</rdf:Description>
</prov:wasGeneratedBy>
+ <prov:wasGeneratedAt>
+ <rdf:Description rdf:about="http://www.example.com/crimeFile#t2">
+ <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Time"/>
+ <time:inXSDDateTime>2011-10-20T17:14:12Z</time:inXSDDateTime>
+ </rdf:Description>
+ </prov:wasGeneratedAt>
<prov:wasDerivedFrom rdf:resource="http://www.example.com/crimeFile#e1"/>
<cf:hasLocation>
<rdf:Description rdf:about="http://www.example.com/crimeFile#sharedDirectoryLocation1">
@@ -1020,7 +1401,7 @@
</section>
<section id="cf-crimefile">
<h5>cf:CrimeFile</h5>
- <p> The cf:CrimeFile is a specialization of the PROV ontology <a href="#entity">Entity</a> class and it models the the file describing the crime statistics in the <a href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance scenario</a>, including the multiple versions of the file. The following RDF/XML code illustrates how cf:Journalist is asserted to be a specialization of <a href="#entity">prov:Entity</a>.
+ <p> The cf:CrimeFile is a specialization of the PROV ontology <a href="#entity">Entity</a> class and it models the the file describing the crime statistics in the <a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance scenario</a>, including the multiple versions of the file. The following RDF/XML code illustrates how cf:Journalist is asserted to be a specialization of <a href="#entity">prov:Entity</a>.
</p>
<div class="exampleOuter">
<pre class="example">
@@ -1037,7 +1418,7 @@
specialization of the PROV ontology <a
href="#processexecution">ProcessExecution</a> and model the
different activities in the <a
- href="http://dvcs.w3.org/hg/prov/raw-file/default/model/ProvenanceModel.html#a-file-scenario">provenance
+ href="http://www.w3.org/TR/2011/WD-prov-dm-20111018/#a-file-scenario">provenance
scenario</a>. The following RDF/XML code illustrates the
specialization of the <a href="#processexecution">prov:ProcessExecution</a> to define class cf:FileCreation (other classes can be similarly defined by using the subClassOf property).</p>
<div class="exampleOuter">
@@ -1424,19 +1805,21 @@
the workflow defined above.
</p>
<div class="exampleOuter"><pre class="example">
-
-<rdf:RDF xmlns="http://www.w3.org/ns/prov-o/"
+<rdf:RDF
xmlns:cnt="http://www.w3.org/2011/content#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:prov="http://www.w3.org/ns/prov-o/"
+ xmlns:time="http://www.w3.org/2006/time#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:wf="http://www.example.com/scientific-workflow#"
- xmlns:base="http://www.example.com/run1#" >
+ xmlns:run="http://www.example.com/run1#"
+ xmlns:base="http://www.example.com/run1#"
+ >
- <Agent rdf:about="#aUser">
+ <prov:Agent rdf:about="#aUser">
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
<foaf:name>Stian Soiland-Reyes</foaf:name>
- </Agent>
+ </prov:Agent>
<wf:WorkflowEngine rdf:about="#workflowEngine" />
@@ -1461,25 +1844,48 @@
</wf:Value>
<wf:Process rdf:about="#workflowRun">
- <used>
+ <prov:used>
<wf:ValueAtPort>
<wf:sawValue rdf:resource="#input"/>
<wf:seenAtPort rdf:resource="http://www.example.com/workflow1#inName"/>
+ <prov:assumedRoleAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:21:31Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:assumedRoleAt>
</wf:ValueAtPort>
- </used>
+ </prov:used>
<wf:ranInWorkflowEngine rdf:resource="#workflowEngine"/>
<wf:wasLaunchedBy rdf:resource="#aUser"/>
<wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#workflow"/>
+ <prov:startedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:startedAt>
+ <prov:endedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:23:32Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:endedAt>
</wf:Process>
<wf:Process rdf:about="#constant">
<wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
<wf:wasDefinedBy
rdf:resource="http://www.example.com/workflow1#String_Constant"/>
+ <prov:startedAt>
+ <prov:Time rdf:about="#t0">
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:startedAt>
+ <prov:endedAt rdf:resource="#t0" />
</wf:Process>
<wf:Value rdf:about="#hello">
- <wasGeneratedBy rdf:resource="#constant"/>
+ <prov:wasGeneratedBy rdf:resource="#constant"/>
+ <prov:wasGeneratedAt rdf:resource="#t0"/>
+ <prov:endedAt rdf:resource="#t0" />
<wf:value>
<cnt:ContentAsText>
<cnt:chars>Hello, </cnt:chars>
@@ -1488,7 +1894,7 @@
</wf:Value>
<wf:ValueAtPort rdf:about="#helloValue">
- <wasGeneratedBy rdf:resource="#constant"/>
+ <prov:wasGeneratedBy rdf:resource="#constant"/>
<wf:value>
<cnt:ContentAsText>
<cnt:chars>Hello, </cnt:chars>
@@ -1498,24 +1904,44 @@
</wf:ValueAtPort>
<wf:Process rdf:about="#combine">
- <used>
+ <prov:used>
<wf:ValueAtPort>
<wf:sawValue rdf:resource="#hello"/>
<wf:seenAtPort rdf:resource="http://www.example.com/workflow1#catIn1"/>
+ <prov:assumedRoleAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:21Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:assumedRoleAt>
</wf:ValueAtPort>
- </used>
- <used>
+ </prov:used>
+ <prov:used>
<wf:ValueAtPort>
<wf:sawValue rdf:resource="#input"/>
<wf:seenAtPort rdf:resource="http://www.example.com/workflow1#catIn2"/>
+ <prov:assumedRoleAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:23Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:assumedRoleAt>
</wf:ValueAtPort>
- </used>
+ </prov:used>
<wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
<wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#cat"/>
+ <prov:startedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:20Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:startedAt>
+ <prov:endedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:25Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:endedAt>
</wf:Process>
<wf:Value rdf:about="#combined">
- <wasGeneratedBy rdf:resource="#combine"/>
+ <prov:wasGeneratedBy rdf:resource="#combine"/>
<wf:value>
<cnt:ContentAsText>
<cnt:chars>Hello, Steve</cnt:chars>
@@ -1524,9 +1950,19 @@
</wf:Value>
<wf:Process rdf:about="#shasum">
- <used rdf:resource="#combined"/>
+ <prov:used rdf:resource="#combined"/>
<wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
<wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#shasum"/>
+ <prov:startedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:20:30Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:startedAt>
+ <prov:endedAt>
+ <prov:Time>
+ <time:inDateTimeXSD>2011-10-21T09:21:00Z</time:inDateTimeXSD>
+ </prov:Time>
+ </prov:endedAt>
</wf:Process>
<wf:Value rdf:about="#sha1">
@@ -1539,7 +1975,7 @@
</wf:Value>
<wf:ValueAtPort rdf:about="#sha1OutputFromShasum">
- <wasGeneratedBy rdf:resource="#shasum"/>
+ <prov:wasGeneratedBy rdf:resource="#shasum"/>
<wf:value>
<cnt:ContentAsText>
<cnt:characterEncoding>UTF-8</cnt:characterEncoding>
@@ -1551,7 +1987,7 @@
</wf:ValueAtPort>
<wf:ValueAtPort rdf:about="#sha1OutputFromWorkflow">
- <wasGeneratedBy rdf:resource="#workflowRun"/>
+ <prov:wasGeneratedBy rdf:resource="#workflowRun"/>
<wf:value>
<cnt:ContentAsText>
<cnt:characterEncoding>UTF-8</cnt:characterEncoding>
@@ -1562,7 +1998,8 @@
<wf:wasSeenAt rdf:resource="http://www.example.com/workflow1#sha1"/>
</wf:ValueAtPort>
-</rdf:RDF>
+</rdf:RDF>
+
</pre>
<em>Example available as
<a
@@ -1607,7 +2044,7 @@
<p>Similar to Rule 1, if a PROV ontology class Y is defined to be <i>range</i> of a PROV object property, then an individual asserted as "object" of that property in a RDF triple is an instance of the class Y. (from rdf3 Rule defined in RDF Semantics)
</p>
<h4>Rule 3</h4>
- <p>Both the rdfs:subClassOf and rdfsubPropertyOf are transitive properties, hence provenance assertions, in form of RDF triples, using a specialized sub class or sub property can be inferred to be true for their parent class or parent property. For example, in the provenance scenario, though alice and bob are asserted to be individuals of the class Journalist, we can infer that they are also individuals of the PROV ontology class Agent and Entity. Given,
+ <p>Both the <code>rdfs:subClassOf</code> and <code>rdfs:subPropertyOf</code> are transitive properties, hence provenance assertions, in form of RDF triples, using a specialized sub class or sub property can be inferred to be true for their parent class or parent property. For example, in the provenance scenario, though alice and bob are asserted to be individuals of the class Journalist, we can infer that they are also individuals of the PROV ontology class Agent and Entity. Given,
</p>
<div class="exampleOuter">
<pre class="example">