--- a/ontology/Overview.html Fri Nov 18 16:45:13 2011 +0000
+++ b/ontology/Overview.html Fri Nov 18 16:46:35 2011 +0000
@@ -479,7 +479,7 @@
pre.sh_sourceCode .sh_attribute { color: #006400; }
</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 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-17-november-2011">W3C Working Draft 17 November 2011</h2><dl><dt>This version:</dt><dd><a href="http://www.w3.org/TR/2011/WD-prov-o-20111117/">http://www.w3.org/TR/2011/WD-prov-o-20111117/</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-18-november-2011">W3C Working Draft 18 November 2011</h2><dl><dt>This version:</dt><dd><a href="http://www.w3.org/TR/2011/WD-prov-o-20111118/">http://www.w3.org/TR/2011/WD-prov-o-20111118/</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><span>(In alphabetical order)</span></dd>
<dd><a href="http://semanticweb.org/wiki/Khalid_Belhajjame">Khalid Belhajjame</a>, University of Manchester, UK</dd>
@@ -493,7 +493,7 @@
<p> The PROV Ontology (also PROV-O) encodes the PROV Data 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="#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="#mapping-the-prov-dm-terms-to-prov-ontology" class="tocxref"><span class="secno">2.1 </span>Mapping the PROV-DM terms to PROV Ontology</a></li><li class="tocline"><a href="#owl2-syntax-used-in-this-document" class="tocxref"><span class="secno">2.2 </span>OWL2 Syntax Used in this Document</a></li><li class="tocline"><a href="#namespace-and-owl2-version" class="tocxref"><span class="secno">2.3 </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="#temporalentity" class="tocxref"><span class="secno">3.1.4 </span>TemporalEntity</a></li><li class="tocline"><a href="#provenancecontainer" class="tocxref"><span class="secno">3.1.5 </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.5.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.6 </span>Location</a></li><li class="tocline"><a href="#qualifiedinvolvement" class="tocxref"><span class="secno">3.1.7 </span>QualifiedInvolvement</a><ul class="toc"><li class="tocline"><a href="#usage" class="tocxref"><span class="secno">3.1.7.1 </span>Usage</a></li><li class="tocline"><a href="#participation" class="tocxref"><span class="secno">3.1.7.2 </span>Participation</a></li><li class="tocline"><a href="#control" class="tocxref"><span class="secno">3.1.7.3 </span>Control</a></li><li class="tocline"><a href="#generation" class="tocxref"><span class="secno">3.1.7.4 </span>Generation</a></li></ul></li><li class="tocline"><a href="#recipe" class="tocxref"><span class="secno">3.1.8 </span>Recipe</a></li><li class="tocline"><a href="#role" class="tocxref"><span class="secno">3.1.9 </span>Role</a></li><li class="tocline"><a href="#classes-under-discussion" class="tocxref"><span class="secno">3.1.10 </span>Classes under Discussion</a><ul class="toc"><li class="tocline"><a href="#time" class="tocxref"><span class="secno">3.1.10.1 </span>Time</a></li></ul></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="#hadtemporalvalue" class="tocxref"><span class="secno">3.2.13 </span>hadTemporalValue</a><ul class="toc"><li class="tocline"><a href="#startedat" class="tocxref"><span class="secno">3.2.13.1 </span>startedAt</a></li><li class="tocline"><a href="#endedat" class="tocxref"><span class="secno">3.2.13.2 </span>endedAt</a></li><li class="tocline"><a href="#wasGeneratedat" class="tocxref"><span class="secno">3.2.13.3 </span>wasGeneratedAt</a></li></ul></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="#hadqualifiedusage" class="tocxref"><span class="secno">3.2.18 </span>hadQualifiedUsage</a></li><li class="tocline"><a href="#hadqualifiedparticipation" class="tocxref"><span class="secno">3.2.19 </span>hadQualifiedParticipation</a></li><li class="tocline"><a href="#hadqualifiedcontrol" class="tocxref"><span class="secno">3.2.20 </span>hadQualifiedControl</a></li><li class="tocline"><a href="#hadqualifiedgeneration" class="tocxref"><span class="secno">3.2.21 </span>hadQualifiedGeneration</a></li><li class="tocline"><a href="#hadqualifiedentity" class="tocxref"><span class="secno">3.2.22 </span>hadQualifiedEntity</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="#overview-of-the-ontology" class="tocxref"><span class="secno">3.5 </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>
+<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="#mapping-the-prov-dm-terms-to-prov-ontology" class="tocxref"><span class="secno">2.1 </span>Mapping the PROV-DM terms to PROV Ontology</a></li><li class="tocline"><a href="#owl2-syntax-used-in-this-document" class="tocxref"><span class="secno">2.2 </span>OWL2 Syntax Used in this Document</a></li><li class="tocline"><a href="#namespace-and-owl2-version" class="tocxref"><span class="secno">2.3 </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="#temporalentity" class="tocxref"><span class="secno">3.1.4 </span>TemporalEntity</a></li><li class="tocline"><a href="#provenancecontainer" class="tocxref"><span class="secno">3.1.5 </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.5.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.6 </span>Location</a></li><li class="tocline"><a href="#qualifiedinvolvement" class="tocxref"><span class="secno">3.1.7 </span>QualifiedInvolvement</a><ul class="toc"><li class="tocline"><a href="#usage" class="tocxref"><span class="secno">3.1.7.1 </span>Usage</a></li><li class="tocline"><a href="#participation" class="tocxref"><span class="secno">3.1.7.2 </span>Participation</a></li><li class="tocline"><a href="#control" class="tocxref"><span class="secno">3.1.7.3 </span>Control</a></li><li class="tocline"><a href="#generation" class="tocxref"><span class="secno">3.1.7.4 </span>Generation</a></li></ul></li><li class="tocline"><a href="#recipe" class="tocxref"><span class="secno">3.1.8 </span>Recipe</a></li><li class="tocline"><a href="#role" class="tocxref"><span class="secno">3.1.9 </span>Role</a></li><li class="tocline"><a href="#classes-under-discussion" class="tocxref"><span class="secno">3.1.10 </span>Classes under Discussion</a><ul class="toc"><li class="tocline"><a href="#time" class="tocxref"><span class="secno">3.1.10.1 </span>Time</a></li></ul></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="#hadtemporalvalue" class="tocxref"><span class="secno">3.2.13 </span>hadTemporalValue</a><ul class="toc"><li class="tocline"><a href="#startedat" class="tocxref"><span class="secno">3.2.13.1 </span>startedAt</a></li><li class="tocline"><a href="#endedat" class="tocxref"><span class="secno">3.2.13.2 </span>endedAt</a></li><li class="tocline"><a href="#wasGeneratedat" class="tocxref"><span class="secno">3.2.13.3 </span>wasGeneratedAt</a></li></ul></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="#hadqualifiedusage" class="tocxref"><span class="secno">3.2.18 </span>hadQualifiedUsage</a></li><li class="tocline"><a href="#hadqualifiedparticipation" class="tocxref"><span class="secno">3.2.19 </span>hadQualifiedParticipation</a></li><li class="tocline"><a href="#hadqualifiedcontrol" class="tocxref"><span class="secno">3.2.20 </span>hadQualifiedControl</a></li><li class="tocline"><a href="#hadqualifiedgeneration" class="tocxref"><span class="secno">3.2.21 </span>hadQualifiedGeneration</a></li><li class="tocline"><a href="#hadqualifiedentity" class="tocxref"><span class="secno">3.2.22 </span>hadQualifiedEntity</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="#overview-of-the-ontology" class="tocxref"><span class="secno">3.5 </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="#example-workflow" class="tocxref"><span class="secno">4.2.3 </span>Example workflow</a></li><li class="tocline"><a href="#example-workflow-run" class="tocxref"><span class="secno">4.2.4 </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>
@@ -1526,7 +1526,6 @@
connecting together disparate set of domain-specific tools and
services.
</p>
-
<p>
Capturing the provenance of executions in such a workflow
system will typically include details of each of the process
@@ -1541,10 +1540,16 @@
domain specific attributes based on the PROV ontology.
</p>
<p>
- <img alt="New classes wf:WorkFlowEngine, wf:Process, wf:ValueAtPort, wf:FileValue, and wf:Value extend prov:Agent, prov:ProcessExecution, prov:EntityInRole. New properties wf:wasLaunchedBy, wf:ranInWorkflowEngine, wf:wasSubProcessExecutionOf, wf:wasReadFrom, wf:sawValue extend prov:wasControlledBy, prov:wasDerivedFrom." style="width: 60%; min-width: 20em; max-width: 40em" src="examples/ontology-extensions/workflow/workflowOntology.png" />
+ <img alt="New classes wf:WorkFlowEngine, wf:Process,
+ wf:ValueAtPort, wf:FileValue, and wf:Value extend prov:Agent,
+ prov:ProcessExecution. New properties wf:wasLaunchedBy, wf:ranInWorkflowEngine, wf:wasSubProcessExecutionOf, wf:wasReadFrom, wf:sawValue extend prov:wasControlledBy, prov:wasDerivedFrom." style="width: 60%; min-width: 20em; max-width: 40em" src="examples/ontology-extensions/workflow/workflowOntology.png" />
<br />
<em>Example extension of PROV ontology in order to describe
- workflow provenance</em>
+ workflow provenance. This OWL ontology can be downloaded as
+ <a href="examples/ontology-extensions/workflow/workflowOntology.rdf">RDF/XML</a>
+ and
+ <a href="examples/ontology-extensions/workflow/workflowOntology.ttl">Turtle</a>
+ </em>
</p>
<div id="workflow-extensions-to-prov-classes" class="section">
<h4><span class="secno">4.2.1 </span>Workflow extensions to PROV classes</h4>
@@ -1576,21 +1581,14 @@
value appearing in the workflow execution, it will
typically be <i>used</i> or <i>generated</i> by
<i>wf:Process</i> executions. The actual value can
- be provided with a <i>wf:value</i> property.
- </dd>
- <dt>wf:ValueAtPort</dt>
- <dd>
- A subclass of <i>wf:Value</i> and <i>prov:EntityInRole</i>,
- indicating a value while in the role of being used
- or generated by a <i>wf:Process</i> at a particular
- <i>wf:Port</i>.
+ be provided as a literal with a <i>wf:value</i> property.
</dd>
<dt>wf:FileValue</dt>
<dd>
A <i>wf:Value</i> which has been read from a file.
As an <i>prov:Entity</i> this represents
an entity with both attributes <i>wf:value</i> and
- <i>wf:filename</i> fixed, that is the entity describes
+ <i>wf:file</i> fixed, that is the entity describes
the point when the given file contained the
content. As the file might be read a while before
the <i>wf:Value</i> is used by a <i>wf:Process</i>,
@@ -1599,6 +1597,15 @@
this file value using the <i>wf:wasReadFrom</i>
property.
</dd>
+ <dt>wf:ValueAtPort</dt>
+ <dd>
+ A subclass of <i>prov:QualifiedInvolvement</i>, representing a
+ value (given by <i>wf:sawValue</i>) observed at a
+ given port in the workflow (given by
+ <i>wf:seenAtPort</i>. This description is the range
+ of <i>wf:generatedValue</i> and <i>wf:usedValue</i>
+ on a <i>wf:Process</i>.
+ </dd>
</dl>
</div>
<div id="workflow-extensions-to-prov-properties" class="section">
@@ -1668,35 +1675,59 @@
</dd>
<dt>wf:sawValue</dt>
<dd>
- A subproperty of <i>prov:wasAssumedBy</i> which
+ A subproperty of <i>prov:hadQualifiedEntity</i> which
indicates that an <i>wf:Value</i> was
<i>wf:seenAtPort</i> within an
- <i>wf:ValueAtPort</i>. This ValueAtPort is a complement of the
- pointed at Value because one can consider this
- entity to to have the same attributes, but in
- addition the <i>wf:seenAtPort</i> property is fixed.
+ <i>wf:ValueAtPort</i>.
</dd>
- <dt>wf:wasSeenAtPort</dt>
+ <dt>wf:seenAtPort</dt>
<dd>
- A subproperty of <i>prov:assumedRole</i> (not yet defined in
- PROV ontology) indicating which <i>wf:Port</i> a
- <i>wf:ValueAtPort</i> was seen at. Thus one can see
+ A subproperty of <i>prov:hadRole</i>
+ indicating which <i>wf:Port</i> (in the workflow
+ definition) a <i>wf:ValueAtPort</i> was seen at. Thus one can see
at which output port a value was generated, or at
which input port(s) it was used.
-
- As a functional property this requires a different
- <i>wf:ValueAtPort</i> for each <i>use</i> and
- <i>generation</i> of a value. The
- <i>wf:ValueAtPort</i> is linked to the
- <i>wf:Entity</i> using <i>prov:wasComplementOf</i>
- <div class="issue">Need
- prov:assumedRole in ontology -Stian</div>
</dd>
+ <dt>wf:generatedValue</dt>
+ <dd>
+ A subproperty of <i>prov:hadQualifiedGeneration</i>,
+ specifying which port we <i>wf:sawValue</i> and
+ where it <i>wf:wasSeenAtPort</i> as it was
+ generated. The domain of this
+ property is <i>wf:Process</i>, the range
+ <i>wf:ValueAtPort</i> (and implied
+ <i>prov:Generation</i>)
+ </dd>
+ <dt>wf:usedValue</dt>
+ <dd>
+ A subproperty of <i>prov:hadQualifiedUsage</i>,
+ specifying which port we <i>wf:sawValue</i> and
+ where it <i>wf:wasSeenAtPort</i> as it was
+ used. The domain of this
+ property is <i>wf:Process</i>, the range
+ <i>wf:ValueAtPort</i> (and implied
+ <i>prov:Usage</i>)
+ </dd>
+ <dt>wf:sameValueAs</dt>
+ <dd>
+ A subproperty of <i>prov:wasComplementOf</i> and
+ <i>prov:wasDerivedFrom</i>,
+ specifying that an <i>wf:Value</i> was the same as
+ another <i>wf:Value</i>. This is used to indicate
+ that a value at an workflow output port is the same
+ as the value at a processor output port, although
+ they have different history of generation, they both
+ represent the same <i>wf:value</i> and are the same
+ "thing".
+ </dd>
+
</dl>
</div>
- <div id="workflow-structure" class="section">
- <h4><span class="secno">4.2.3 </span>Workflow structure</h4>
+
+<!--
+ <section id="workflow-structure">
+ <h4>Workflow structure</h4>
<p>
This ontology includes a simple definition language for
describing the overall workflow structure. This is not
@@ -1761,9 +1792,11 @@
</p>
</dd>
</dl>
- </div>
+ </section>
+ -->
+
<div id="example-workflow" class="section">
- <h4><span class="secno">4.2.4 </span>Example workflow</h4>
+ <h4><span class="secno">4.2.3 </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>,
@@ -1776,260 +1809,157 @@
to the other workflow port.
</p>
<p>
- Using the definition ontology above this workflow can be
- expressed in RDF/XML as:
+ An example of abstract definition of this workflow can be
+ seen as
+ <a href="examples/ontology-extensions/workflow/workflowDefinition.rdf">RDF/XML</a>
+ and
+ <a href="examples/ontology-extensions/workflow/workflowDefinition.ttl">Turtle</a>
</p>
- <div class="exampleOuter">
- <pre class="example"><rdf:RDF xml:base="http://www.example.com/workflow1#"
- xmlns:impl="http://company.example.org/engine-implementation#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:wf="http://www.example.com/scientific-workflow#">
-
- <wf:ProcessDefinition rdf:about="#workflow">
- <rdf:type rdf:resource="http://company.example.org/engine-implementation#Workflow"/>
- <wf:definesInput>
- <wf:Input rdf:about="#inName">
- <wf:linksTo rdf:resource="#catIn2" />
- </wf:Input>
- </wf:definesInput>
- <wf:definesOutput rdf:resource="#combined" />
- <wf:definesOutput rdf:resource="#sha1" />
- <wf:definesSubProcess>
- <impl:Constant rdf:about="#String_constant">
- <impl:constant>Hello, </impl:constant>
- <wf:definesOutput>
- <wf:Output rdf:about="#constantValue">
- <wf:linksTo rdf:resource="#catIn1"/>
- </wf:Output>
- </wf:definesOutput>
- </impl:Constant>
- </wf:definesSubProcess>
- <wf:definesSubProcess>
- <impl:Command rdf:about="#cat">
- <impl:command>cat</impl:command>
- <wf:definesInput rdf:resource="#catIn1" />
- <wf:definesInput rdf:resource="#catIn2" />
- <wf:definesOutput>
- <wf:Output rdf:about="#catOut">
- <wf:linksTo rdf:resource="#shaIn"/>
- </wf:Output>
- </wf:definesOutput>
- </impl:Command>
- </wf:definesSubProcess>
- <wf:definesSubProcess>
- <impl:Command rdf:about="#shasum">
- <impl:command>shasum</impl:command>
- <wf:definesInput rdf:resource="#shaIn" />
- <wf:definesOutput>
- <wf:Output rdf:about="#shaOut">
- <wf:linksTo rdf:resource="#sha1"/>
- </wf:Output>
- </wf:definesOutput>
- </impl:Command>
- </wf:definesSubProcess>
- </wf:ProcessDefinition>
-</rdf:RDF> </pre></div>
</div>
<div id="example-workflow-run" class="section">
- <h4><span class="secno">4.2.5 </span>Example workflow run</h4>
+ <h4><span class="secno">4.2.4 </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:cnt="http://www.w3.org/2011/content#"
+ <div class="exampleOuter"><pre class="example"><rdf:RDF xmlns="http://www.example.com/scientific-workflow#"
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:run="http://www.example.com/run1#"
- xmlns:base="http://www.example.com/run1#"
- >
-
- <prov:Agent rdf:about="#aUser">
- <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
- <foaf:name>Stian Soiland-Reyes</foaf:name>
- </prov:Agent>
-
- <wf:WorkflowEngine rdf:about="#workflowEngine" />
-
- <wf:FileValue rdf:about="#inputFile">
- <wf:file>/tmp/myinput.txt</wf:file>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>Steve</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:FileValue>
-
- <wf:Value rdf:about="#input">
- <wf:wasReadFrom rdf:resource="#inputFile"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>Steve</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
-
- <wf:Process rdf:about="#workflowRun">
- <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>
- </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">
- <prov:wasGeneratedBy rdf:resource="#constant"/>
- <prov:wasGeneratedAt rdf:resource="#t0"/>
- <prov:endedAt rdf:resource="#t0" />
- <wf:value>
- <cnt:ContentAsText>
- <cnt:chars>Hello, </cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
-
- <wf:ValueAtPort rdf:about="#helloValue">
- <prov:wasGeneratedBy rdf:resource="#constant"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:chars>Hello, </cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- <wf:sawEntity rdf:resource="#hello"/>
- </wf:ValueAtPort>
+ xmlns:time="http://www.w3.org/2006/time#"
+ xmlns:wf="http://www.example.com/scientific-workflow#">
- <wf:Process rdf:about="#combine">
- <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>
- </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>
- </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>
+ <Process rdf:about="#workflowRun">
+ <ranInWorkflowEngine>
+ <WorkflowEngine rdf:about="#workflowEngine" />
+ </ranInWorkflowEngine>
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#workflow"/>
+ <wasLaunchedBy>
+ <prov:Agent rdf:about="#aUser">
+ <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
+ <foaf:name>Stian Soiland-Reyes</foaf:name>
+ </prov:Agent>
+ </wasLaunchedBy>
+ <prov:startedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
</prov:startedAt>
- <prov:endedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:25Z</time:inDateTimeXSD>
- </prov:Time>
+ <prov:endedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:23:32Z</time:inDateTimeXSD>
</prov:endedAt>
- </wf:Process>
-
- <wf:Value rdf:about="#combined">
- <prov:wasGeneratedBy rdf:resource="#combine"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:chars>Hello, Steve</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
+ <wf:usedValue>
+ <prov:Usage>
+ <sawValue>
+ <Value rdf:about="#input">
+ <value>Steve</value>
+ <wasReadFrom>
+ <FileValue rdf:about="#inputFile">
+ <file>/tmp/myinput.txt</file>
+ <value>Steve</value>
+ </FileValue>
+ </wasReadFrom>
+ </Value>
+ </sawValue>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#inName"/>
+ <prov:hadTemporalValue rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:21:31Z</time:inDateTimeXSD>
+ </prov:hadTemporalValue>
+ </prov:Usage>
+ </wf:usedValue>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue>
+ <Value rdf:about="#sha1FromWorkflow">
+ <value>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</value>
+ <wf:sameValueAs rdf:resource="#sha1"/>
+ </Value>
+ </sawValue>
+ <wasSeenAt rdf:resource="http://www.example.com/workflow1#sha1"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
- <wf:Process rdf:about="#shasum">
- <prov:used rdf:resource="#combined"/>
- <wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
- <wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#shasum"/>
+ <Process rdf:about="#constant">
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#String_Constant"/>
+ <wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
<prov:startedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:30Z</time:inDateTimeXSD>
- </prov:Time>
+ <time:Instant rdf:about="#t0">
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
+ </time:Instant>
</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">
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
+ <prov:endedAt rdf:resource="#t0"/>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue rdf:resource="http://www.example.com/workflow1#String_Constant_value"/>
+ <prov:hadQualifiedEntity>
+ <Value rdf:about="#hello">
+ <value>Hello, </value>
+ </Value>
+ </prov:hadQualifiedEntity>
+ <prov:hadTemporalValue rdf:resource="#t0"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
- <wf:ValueAtPort rdf:about="#sha1OutputFromShasum">
- <prov:wasGeneratedBy rdf:resource="#shasum"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- <wf:sawValue rdf:resource="#sha1"/>
- <wf:wasSeenAt rdf:resource="http://www.example.com/workflow1#shaOut"/>
- </wf:ValueAtPort>
-
- <wf:ValueAtPort rdf:about="#sha1OutputFromWorkflow">
- <prov:wasGeneratedBy rdf:resource="#workflowRun"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- <wf:sawValue rdf:resource="#sha1"/>
- <wf:wasSeenAt rdf:resource="http://www.example.com/workflow1#sha1"/>
- </wf:ValueAtPort>
-
+ <Process rdf:about="#combine">
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#cat"/>
+ <wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
+ <prov:startedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:20Z</time:inDateTimeXSD>
+ </prov:startedAt>
+ <prov:endedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:25Z</time:inDateTimeXSD>
+ </prov:endedAt>
+ <wf:usedValue>
+ <prov:Usage>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#catIn1"/>
+ <prov:hadQualifiedEntity rdf:resource="#hello"/>
+ <prov:hadTemporalValue rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:21Z</time:inDateTimeXSD>
+ </prov:hadTemporalValue>
+ </prov:Usage>
+ </wf:usedValue>
+ <wf:usedValue>
+ <prov:Usage>
+ <sawValue rdf:resource="#input"/>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#catIn2"/>
+ <prov:hadTemporalValue rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:23Z</time:inDateTimeXSD>
+ </prov:hadTemporalValue>
+ </prov:Usage>
+ </wf:usedValue>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue>
+ <Value rdf:about="#combined">
+ <value>Hello, Steve</value>
+ </Value>
+ </sawValue>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#catOut"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
+ <Process rdf:about="#shasum">
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#shasum"/>
+ <wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
+ <prov:startedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:30Z</time:inDateTimeXSD>
+ </prov:startedAt>
+ <prov:endedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:21:00Z</time:inDateTimeXSD>
+ </prov:endedAt>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue>
+ <Value rdf:about="#sha1">
+ <value>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</value>
+ </Value>
+ </sawValue>
+ <wasSeenAt rdf:resource="http://www.example.com/workflow1#shaOut"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
</rdf:RDF></pre>
<em>Example available as
<a href="examples/ontology-extensions/workflow/workflow.rdf">RDF/XML</a>
--- a/ontology/ProvenanceFormalModel.html Fri Nov 18 16:45:13 2011 +0000
+++ b/ontology/ProvenanceFormalModel.html Fri Nov 18 16:46:35 2011 +0000
@@ -1257,7 +1257,6 @@
connecting together disparate set of domain-specific tools and
services.
</p>
-
<p>
Capturing the provenance of executions in such a workflow
system will typically include details of each of the process
@@ -1275,10 +1274,18 @@
<img
src="examples/ontology-extensions/workflow/workflowOntology.png"
style="width: 60%; min-width: 20em; max-width: 40em"
- alt="New classes wf:WorkFlowEngine, wf:Process, wf:ValueAtPort, wf:FileValue, and wf:Value extend prov:Agent, prov:ProcessExecution, prov:EntityInRole. New properties wf:wasLaunchedBy, wf:ranInWorkflowEngine, wf:wasSubProcessExecutionOf, wf:wasReadFrom, wf:sawValue extend prov:wasControlledBy, prov:wasDerivedFrom." />
+ alt="New classes wf:WorkFlowEngine, wf:Process,
+ wf:ValueAtPort, wf:FileValue, and wf:Value extend prov:Agent,
+ prov:ProcessExecution. New properties wf:wasLaunchedBy, wf:ranInWorkflowEngine, wf:wasSubProcessExecutionOf, wf:wasReadFrom, wf:sawValue extend prov:wasControlledBy, prov:wasDerivedFrom." />
<br>
<em>Example extension of PROV ontology in order to describe
- workflow provenance</em>
+ workflow provenance. This OWL ontology can be downloaded as
+ <a
+ href="examples/ontology-extensions/workflow/workflowOntology.rdf">RDF/XML</a>
+ and
+ <a
+ href="examples/ontology-extensions/workflow/workflowOntology.ttl">Turtle</a>
+ </em>
</p>
<section id="workflow-extensions-to-prov-classes">
<h4>Workflow extensions to PROV classes</h4>
@@ -1310,21 +1317,14 @@
value appearing in the workflow execution, it will
typically be <i>used</i> or <i>generated</i> by
<i>wf:Process</i> executions. The actual value can
- be provided with a <i>wf:value</i> property.
- </dd>
- <dt>wf:ValueAtPort</dt>
- <dd>
- A subclass of <i>wf:Value</i> and <i>prov:EntityInRole</i>,
- indicating a value while in the role of being used
- or generated by a <i>wf:Process</i> at a particular
- <i>wf:Port</i>.
+ be provided as a literal with a <i>wf:value</i> property.
</dd>
<dt>wf:FileValue</dt>
<dd>
A <i>wf:Value</i> which has been read from a file.
As an <i>prov:Entity</i> this represents
an entity with both attributes <i>wf:value</i> and
- <i>wf:filename</i> fixed, that is the entity describes
+ <i>wf:file</i> fixed, that is the entity describes
the point when the given file contained the
content. As the file might be read a while before
the <i>wf:Value</i> is used by a <i>wf:Process</i>,
@@ -1333,6 +1333,15 @@
this file value using the <i>wf:wasReadFrom</i>
property.
</dd>
+ <dt>wf:ValueAtPort</dt>
+ <dd>
+ A subclass of <i>prov:QualifiedInvolvement</i>, representing a
+ value (given by <i>wf:sawValue</i>) observed at a
+ given port in the workflow (given by
+ <i>wf:seenAtPort</i>. This description is the range
+ of <i>wf:generatedValue</i> and <i>wf:usedValue</i>
+ on a <i>wf:Process</i>.
+ </dd>
</dl>
</section>
<section id="workflow-extensions-to-prov-properties">
@@ -1402,33 +1411,56 @@
</dd>
<dt>wf:sawValue</dt>
<dd>
- A subproperty of <i>prov:wasAssumedBy</i> which
+ A subproperty of <i>prov:hadQualifiedEntity</i> which
indicates that an <i>wf:Value</i> was
<i>wf:seenAtPort</i> within an
- <i>wf:ValueAtPort</i>. This ValueAtPort is a complement of the
- pointed at Value because one can consider this
- entity to to have the same attributes, but in
- addition the <i>wf:seenAtPort</i> property is fixed.
+ <i>wf:ValueAtPort</i>.
</dd>
- <dt>wf:wasSeenAtPort</dt>
+ <dt>wf:seenAtPort</dt>
<dd>
- A subproperty of <i>prov:assumedRole</i> (not yet defined in
- PROV ontology) indicating which <i>wf:Port</i> a
- <i>wf:ValueAtPort</i> was seen at. Thus one can see
+ A subproperty of <i>prov:hadRole</i>
+ indicating which <i>wf:Port</i> (in the workflow
+ definition) a <i>wf:ValueAtPort</i> was seen at. Thus one can see
at which output port a value was generated, or at
which input port(s) it was used.
-
- As a functional property this requires a different
- <i>wf:ValueAtPort</i> for each <i>use</i> and
- <i>generation</i> of a value. The
- <i>wf:ValueAtPort</i> is linked to the
- <i>wf:Entity</i> using <i>prov:wasComplementOf</i>
- <div class='issue'>Need
- prov:assumedRole in ontology -Stian</div>
</dd>
+ <dt>wf:generatedValue</dt>
+ <dd>
+ A subproperty of <i>prov:hadQualifiedGeneration</i>,
+ specifying which port we <i>wf:sawValue</i> and
+ where it <i>wf:wasSeenAtPort</i> as it was
+ generated. The domain of this
+ property is <i>wf:Process</i>, the range
+ <i>wf:ValueAtPort</i> (and implied
+ <i>prov:Generation</i>)
+ </dd>
+ <dt>wf:usedValue</dt>
+ <dd>
+ A subproperty of <i>prov:hadQualifiedUsage</i>,
+ specifying which port we <i>wf:sawValue</i> and
+ where it <i>wf:wasSeenAtPort</i> as it was
+ used. The domain of this
+ property is <i>wf:Process</i>, the range
+ <i>wf:ValueAtPort</i> (and implied
+ <i>prov:Usage</i>)
+ </dd>
+ <dt>wf:sameValueAs</dt>
+ <dd>
+ A subproperty of <i>prov:wasComplementOf</i> and
+ <i>prov:wasDerivedFrom</i>,
+ specifying that an <i>wf:Value</i> was the same as
+ another <i>wf:Value</i>. This is used to indicate
+ that a value at an workflow output port is the same
+ as the value at a processor output port, although
+ they have different history of generation, they both
+ represent the same <i>wf:value</i> and are the same
+ "thing".
+ </dd>
+
</dl>
</section>
+ <!--
<section id="workflow-structure">
<h4>Workflow structure</h4>
<p>
@@ -1496,6 +1528,7 @@
</dd>
</dl>
</section>
+ -->
<section id="example-workflow">
<h4>Example workflow</h4>
<img src="examples/ontology-extensions/workflow/Concatsha1.png"
@@ -1511,61 +1544,14 @@
to the other workflow port.
</p>
<p>
- Using the definition ontology above this workflow can be
- expressed in RDF/XML as:
+ An example of abstract definition of this workflow can be
+ seen as
+ <a
+ href="examples/ontology-extensions/workflow/workflowDefinition.rdf">RDF/XML</a>
+ and
+ <a
+ href="examples/ontology-extensions/workflow/workflowDefinition.ttl">Turtle</a>
</p>
- <div class="exampleOuter">
- <pre class="example">
-<rdf:RDF xml:base="http://www.example.com/workflow1#"
- xmlns:impl="http://company.example.org/engine-implementation#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:wf="http://www.example.com/scientific-workflow#">
-
- <wf:ProcessDefinition rdf:about="#workflow">
- <rdf:type rdf:resource="http://company.example.org/engine-implementation#Workflow"/>
- <wf:definesInput>
- <wf:Input rdf:about="#inName">
- <wf:linksTo rdf:resource="#catIn2" />
- </wf:Input>
- </wf:definesInput>
- <wf:definesOutput rdf:resource="#combined" />
- <wf:definesOutput rdf:resource="#sha1" />
- <wf:definesSubProcess>
- <impl:Constant rdf:about="#String_constant">
- <impl:constant>Hello, </impl:constant>
- <wf:definesOutput>
- <wf:Output rdf:about="#constantValue">
- <wf:linksTo rdf:resource="#catIn1"/>
- </wf:Output>
- </wf:definesOutput>
- </impl:Constant>
- </wf:definesSubProcess>
- <wf:definesSubProcess>
- <impl:Command rdf:about="#cat">
- <impl:command>cat</impl:command>
- <wf:definesInput rdf:resource="#catIn1" />
- <wf:definesInput rdf:resource="#catIn2" />
- <wf:definesOutput>
- <wf:Output rdf:about="#catOut">
- <wf:linksTo rdf:resource="#shaIn"/>
- </wf:Output>
- </wf:definesOutput>
- </impl:Command>
- </wf:definesSubProcess>
- <wf:definesSubProcess>
- <impl:Command rdf:about="#shasum">
- <impl:command>shasum</impl:command>
- <wf:definesInput rdf:resource="#shaIn" />
- <wf:definesOutput>
- <wf:Output rdf:about="#shaOut">
- <wf:linksTo rdf:resource="#sha1"/>
- </wf:Output>
- </wf:definesOutput>
- </impl:Command>
- </wf:definesSubProcess>
- </wf:ProcessDefinition>
-</rdf:RDF>
- </pre></div>
</section>
<section id="example-workflow-run">
<h4>Example workflow run</h4>
@@ -1575,201 +1561,144 @@
the workflow defined above.
</p>
<div class="exampleOuter"><pre class="example">
-<rdf:RDF
- xmlns:cnt="http://www.w3.org/2011/content#"
+<rdf:RDF xmlns="http://www.example.com/scientific-workflow#"
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:run="http://www.example.com/run1#"
- xmlns:base="http://www.example.com/run1#"
- >
-
- <prov:Agent rdf:about="#aUser">
- <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
- <foaf:name>Stian Soiland-Reyes</foaf:name>
- </prov:Agent>
-
- <wf:WorkflowEngine rdf:about="#workflowEngine" />
-
- <wf:FileValue rdf:about="#inputFile">
- <wf:file>/tmp/myinput.txt</wf:file>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>Steve</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:FileValue>
-
- <wf:Value rdf:about="#input">
- <wf:wasReadFrom rdf:resource="#inputFile"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>Steve</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
-
- <wf:Process rdf:about="#workflowRun">
- <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>
- </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">
- <prov:wasGeneratedBy rdf:resource="#constant"/>
- <prov:wasGeneratedAt rdf:resource="#t0"/>
- <prov:endedAt rdf:resource="#t0" />
- <wf:value>
- <cnt:ContentAsText>
- <cnt:chars>Hello, </cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
-
- <wf:ValueAtPort rdf:about="#helloValue">
- <prov:wasGeneratedBy rdf:resource="#constant"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:chars>Hello, </cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- <wf:sawEntity rdf:resource="#hello"/>
- </wf:ValueAtPort>
+ xmlns:time="http://www.w3.org/2006/time#"
+ xmlns:wf="http://www.example.com/scientific-workflow#">
- <wf:Process rdf:about="#combine">
- <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>
- </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>
- </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>
+ <Process rdf:about="#workflowRun">
+ <ranInWorkflowEngine>
+ <WorkflowEngine rdf:about="#workflowEngine" />
+ </ranInWorkflowEngine>
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#workflow"/>
+ <wasLaunchedBy>
+ <prov:Agent rdf:about="#aUser">
+ <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
+ <foaf:name>Stian Soiland-Reyes</foaf:name>
+ </prov:Agent>
+ </wasLaunchedBy>
+ <prov:startedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
</prov:startedAt>
- <prov:endedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:25Z</time:inDateTimeXSD>
- </prov:Time>
+ <prov:endedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:23:32Z</time:inDateTimeXSD>
</prov:endedAt>
- </wf:Process>
-
- <wf:Value rdf:about="#combined">
- <prov:wasGeneratedBy rdf:resource="#combine"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:chars>Hello, Steve</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
+ <wf:usedValue>
+ <prov:Usage>
+ <sawValue>
+ <Value rdf:about="#input">
+ <value>Steve</value>
+ <wasReadFrom>
+ <FileValue rdf:about="#inputFile">
+ <file>/tmp/myinput.txt</file>
+ <value>Steve</value>
+ </FileValue>
+ </wasReadFrom>
+ </Value>
+ </sawValue>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#inName"/>
+ <prov:hadTemporalValue rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:21:31Z</time:inDateTimeXSD>
+ </prov:hadTemporalValue>
+ </prov:Usage>
+ </wf:usedValue>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue>
+ <Value rdf:about="#sha1FromWorkflow">
+ <value>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</value>
+ <wf:sameValueAs rdf:resource="#sha1"/>
+ </Value>
+ </sawValue>
+ <wasSeenAt rdf:resource="http://www.example.com/workflow1#sha1"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
- <wf:Process rdf:about="#shasum">
- <prov:used rdf:resource="#combined"/>
- <wf:wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
- <wf:wasDefinedBy rdf:resource="http://www.example.com/workflow1#shasum"/>
+ <Process rdf:about="#constant">
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#String_Constant"/>
+ <wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
<prov:startedAt>
- <prov:Time>
- <time:inDateTimeXSD>2011-10-21T09:20:30Z</time:inDateTimeXSD>
- </prov:Time>
+ <time:Instant rdf:about="#t0">
+ <time:inDateTimeXSD>2011-10-21T09:20:15Z</time:inDateTimeXSD>
+ </time:Instant>
</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">
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- </wf:Value>
- <wf:ValueAtPort rdf:about="#sha1OutputFromShasum">
- <prov:wasGeneratedBy rdf:resource="#shasum"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- <wf:sawValue rdf:resource="#sha1"/>
- <wf:wasSeenAt rdf:resource="http://www.example.com/workflow1#shaOut"/>
- </wf:ValueAtPort>
+ <prov:endedAt rdf:resource="#t0"/>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue rdf:resource="http://www.example.com/workflow1#String_Constant_value"/>
+ <prov:hadQualifiedEntity>
+ <Value rdf:about="#hello">
+ <value>Hello, </value>
+ </Value>
+ </prov:hadQualifiedEntity>
+ <prov:hadTemporalValue rdf:resource="#t0"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
- <wf:ValueAtPort rdf:about="#sha1OutputFromWorkflow">
- <prov:wasGeneratedBy rdf:resource="#workflowRun"/>
- <wf:value>
- <cnt:ContentAsText>
- <cnt:characterEncoding>UTF-8</cnt:characterEncoding>
- <cnt:chars>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</cnt:chars>
- </cnt:ContentAsText>
- </wf:value>
- <wf:sawValue rdf:resource="#sha1"/>
- <wf:wasSeenAt rdf:resource="http://www.example.com/workflow1#sha1"/>
- </wf:ValueAtPort>
-
+ <Process rdf:about="#combine">
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#cat"/>
+ <wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
+ <prov:startedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:20Z</time:inDateTimeXSD>
+ </prov:startedAt>
+ <prov:endedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:25Z</time:inDateTimeXSD>
+ </prov:endedAt>
+ <wf:usedValue>
+ <prov:Usage>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#catIn1"/>
+ <prov:hadQualifiedEntity rdf:resource="#hello"/>
+ <prov:hadTemporalValue rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:21Z</time:inDateTimeXSD>
+ </prov:hadTemporalValue>
+ </prov:Usage>
+ </wf:usedValue>
+ <wf:usedValue>
+ <prov:Usage>
+ <sawValue rdf:resource="#input"/>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#catIn2"/>
+ <prov:hadTemporalValue rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:23Z</time:inDateTimeXSD>
+ </prov:hadTemporalValue>
+ </prov:Usage>
+ </wf:usedValue>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue>
+ <Value rdf:about="#combined">
+ <value>Hello, Steve</value>
+ </Value>
+ </sawValue>
+ <seenAtPort rdf:resource="http://www.example.com/workflow1#catOut"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
+ <Process rdf:about="#shasum">
+ <wasDefinedBy rdf:resource="http://www.example.com/workflow1#shasum"/>
+ <wasSubProcessExecutionOf rdf:resource="#workflowRun"/>
+ <prov:startedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:20:30Z</time:inDateTimeXSD>
+ </prov:startedAt>
+ <prov:endedAt rdf:parseType="Resource">
+ <time:inDateTimeXSD>2011-10-21T09:21:00Z</time:inDateTimeXSD>
+ </prov:endedAt>
+ <wf:generatedValue>
+ <prov:Generation>
+ <sawValue>
+ <Value rdf:about="#sha1">
+ <value>a33d1fb1658d4fbf017de59ab67437a3eb5ff50d</value>
+ </Value>
+ </sawValue>
+ <wasSeenAt rdf:resource="http://www.example.com/workflow1#shaOut"/>
+ </prov:Generation>
+ </wf:generatedValue>
+ </Process>
</rdf:RDF>
-
</pre>
<em>Example available as
<a