<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <title>The ProvONE Data Model for Scientific Workflow Provenance</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- javascript for button to hide examples --> <script type="text/javascript"> /* Written by Jonathan Snook, http://www.snook.ca/jonathan Add-ons by Robert Nyman, http://www.robertnyman.com Author says "The credit comment is all it takes, no license. Go crazy " From http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/ */ function getElementsByClassName(oElm, strTagName, oClassNames){ var arrElements = (! (! (strTagName == "*") || ! (oElm.all)))? oElm.all : oElm.getElementsByTagName(strTagName); var arrReturnElements = new Array(); var arrRegExpClassNames = new Array(); if(typeof oClassNames == "object"){ for(var i=0; !(i>=oClassNames.length); i++){ /*>*/ arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames[i].replace(/\-/g, "\-") + "(\s|$)")); } } else{ arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames.replace(/\-/g, "\-") + "(\s|$)")); } var oElement; var bMatchesAll; for(var j=0; !(j>=arrElements.length); j++){ /*>*/ oElement = arrElements[j]; bMatchesAll = true; for(var k=0; !(k>=arrRegExpClassNames.length); k++){ /*>*/ if(!arrRegExpClassNames[k].test(oElement.className)){ bMatchesAll = false; break; } } if(bMatchesAll){ arrReturnElements.push(oElement); } } return (arrReturnElements) } function set_display_by_class(el, cls, newValue) { var e = getElementsByClassName(document, el, cls); if (e != null) { for (var i=0; !(i>=e.length); i++) { e[i].style.display = newValue; } } } function set_display_by_id(id, newValue) { var e = document.getElementById(id); if (e != null) { e.style.display = newValue; } } </script> <style type="text/css"> .note { font-size:small; margin-left:50px } .diamond { font-weight: normal; font-style: normal; font-size:100%; font-family: sans-serif; } table.thinborder { border-width: 1px; border-spacing: 0px; border-style: none; border-color: gray; border-collapse: collapse; } table.thinborder th { border-width: 1px; padding: 0px; border-style: solid; border-color: gray; } table.thinborder td { border-width: 1px; padding: 2px; border-style: solid; border-color: gray; } /***************************************************************** * ReSpec CSS * Robin Berjon (robin at berjon dot com) * v0.05 - 2009-07-31 *****************************************************************/ /* --- INLINES --- */ em.rfc2119 { text-transform: lowercase; font-variant: small-caps; font-style: normal; color: #900; } h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym, h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr { border: none; } dfn { font-weight: bold; } a.internalDFN { color: inherit; /*border-bottom: 1px solid #99c;*/ text-decoration: none; } a.externalDFN { color: inherit; border-bottom: 1px dotted #ccc; text-decoration: none; } a.bibref { text-decoration: none; } code { color: #ff4500; } /* --- TABLE --- */ table.simple { border-spacing: 0; border-collapse: collapse; border-bottom: 3px solid #005a9c; } .simple th { background: #005a9c; color: #fff; padding: 3px 5px; text-align: left; } .simple th[scope="row"] { background: inherit; color: inherit; border-top: 1px solid #ddd; } .simple td { padding: 3px 10px; border-top: 1px solid #ddd; } .simple tr:nth-child(even) { background: #f0f6ff; } @media screen { p.practicedesc { position: relative; top: -2em; padding: 0; margin: 1.5em 0.5em -1em 1em; } } /* --- SYNTAX HIGHLIGHTING --- */ pre.sh_sourceCode { background-color: white; color: black; font-style: normal; font-weight: normal; } </style> <style type="text/css"> /* --- EDITORIAL NOTES --- */ .component1-color { background-color: rgba(255,42,42,0.2); } .component3-color { background-color: rgba(0,68,170,0.2); } .component2-color { background-color: rgba(0,170,0,0.2); } .component4-color { background-color: rgba(244,105,14,0.2); } .component6-color { background-color: rgba(11,40,40,0.2); } .component5-color { background-color: rgba(204,255,0,0.2); } .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[id]::before { content: "Inference: " attr(id); width: 380px; /* How can we compute the length of "Constraint: " attr(id) */ } .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; } .syntax { padding: 1em; margin: 1em 0em 0em; border: 1px solid #f00; background: #fff; } .syntax[id]::before { content: "Syntax: " attr(id); width: 380px; /* How can we compute the length of "Constraint: " attr(id) */ } .syntax::before { content: "Syntax"; 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; } .interpretation { padding: 1em; margin: 1em 0em 0em; border: 1px solid #00f; background: #fff; } .interpretation[id]::before { content: "Interpretation: " attr(id); width: 380px; /* How can we compute the length of "Interpretation: " attr(id) */ } .interpretation::before { content: "Interpretation"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #00f; background: #fff; padding: 3px 1em; } .definition { padding: 1em; margin: 1em 0em 0em; border: 1px solid #777; background: #fff; } .definition[id]::before { content: "Definition: " attr(id); width: 380px; } .definition::before { content: "Definition"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #000; background: #fff; padding: 3px 1em; } .deprecatedconstraint { padding: 1em; margin: 1em 0em 0em; border: 1px solid #00f; background: #fff; } .deprecatedconstraint[id]::before { content: "Deprecated: " attr(id); width: 380px; /* How can we compute the length of "Deprecatedconstraint: " attr(id) */ } .deprecatedconstraint::before { content: "Deprecated"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #00f; background: #fff; padding: 3px 1em; } .glossary-ref { font-style: italic; } .dfn { font-weight: bold; } .attribute { font-style: italic; } .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-size: 80%; } .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; } /* generating this through java script now. .anexample[data-count]::before { content: "Example " attr(data-count) ; font-family: sans-serif; font-size: 1.6ex; font-weight: bold; } .anexample:before { content: "Example:"; font-family: sans-serif; font-size: 1.6ex; font-weight: bold; } */ .anexample { margin-top: 1ex; margin-bottom: 1ex; padding-left: 1ex; padding-right: 1ex; padding-top: 1ex; padding-bottom: 0.6ex; border: 1px dashed #2f6fab; background-color: #f9f9f9; } .anexample table { background-color: #f9f9f9; } .anexampleTitle { font-family: sans-serif; font-size: 1.6ex; font-weight: bold; } .anexampleTitle { font-family: sans-serif; font-size: 1.6ex; font-weight: bold; } .diamond { font-weight: normal; font-size:100%; font-family: sans-serif; } div[class="grammar"] span[class="name"]:before { content: "'"; } div[class="grammar"] span[class="name"]:after { content: "'"; } div[class="grammar"] span[class="optional"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="optional"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")?"; } div[class="grammar"] span[class="plus"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="plus"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")+"; } div[class="grammar"] span[class="star"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="star"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")*"; } div[class="grammar"] span[class="choice"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="choice"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")"; } div[class="grammar"] span[class="group"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="group"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")"; } table { background-color: #f9f9f9; } .interpretation-forward::before { content: "Interpretation: "; font-weight: bold; } .structural-forward::before { content: "Structural constraint: "; font-weight: bold; } .essential { font-weight: bold; } .provType::before { } .pnExpression { font-weight: normal; font-size:120%; font-family: monospace; } </style> <style> /***************************************************************** * ReSpec 3 CSS * Robin Berjon - http://berjon.com/ *****************************************************************/ /* --- INLINES --- */ em.rfc2119 { text-transform: lowercase; font-variant: small-caps; font-style: normal; color: #900; } h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym, h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr { border: none; } dfn { font-weight: bold; } a.internalDFN { color: inherit; /*border-bottom: 1px solid #99c;*/ text-decoration: none; } a.externalDFN { color: inherit; border-bottom: 1px dotted #ccc; text-decoration: none; } a.bibref { text-decoration: none; } cite .bibref { font-style: normal; } code { color: #ff4500; } /* --- TOC --- */ .toc a, .tof a { text-decoration: none; } a .secno, a .figno { color: #000; } ul.tof, ol.tof { list-style: none outside none; } .caption { margin-top: 0.5em; font-style: italic; } /* --- TABLE --- */ table.simple { border-spacing: 0; border-collapse: collapse; border-bottom: 3px solid #005a9c; } .simple th { background: #005a9c; color: #fff; padding: 3px 5px; text-align: left; } .simple th[scope="row"] { background: inherit; color: inherit; border-top: 1px solid #ddd; } .simple td { padding: 3px 10px; border-top: 1px solid #ddd; } .simple tr:nth-child(even) { background: #f0f6ff; } /* --- DL --- */ .section dd > p:first-child { margin-top: 0; } .section dd > p:last-child { margin-bottom: 0; } .section dd { margin-bottom: 1em; } .section dl.attrs dd, .section dl.eldef dd { margin-bottom: 0; } </style> <link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-REC"> <!--[if lt IE 9]> <script src='http://www.w3.org/2008/site/js/html5shiv.js'></script> <![endif]--> <style> body { background-image: url(''); } </style> </head> <body> <div class="head"> <h1 class="title" id="title"> ProvONE: A PROV Extension Data Model for Scientific Workflow Provenance </h1> <h2 id="">Draft 01 May 2016</h2> <dl> <dt>Contributors:</dt> <dd> <a href="https://sites.google.com/site/victorcuevasv/"> Víctor Cuevas-Vicenttín</a>, UC Davis/University of New Mexico </dd> <dd> <a href="http://www.cs.ucdavis.edu/people/faculty/ludaescher.html"> Bertram Ludäscher</a>, UIUC </dd> <dd> <a href="http://www.cs.ncl.ac.uk/people/Paolo.Missier"> Paolo Missier</a>, Newcastle University </dd> <dd> <a href="http://semanticweb.org/wiki/Khalid_Belhajjame"> Khalid Belhajjame</a>, PSL, Paris-Dauphine University, LAMSADE </dd> <dd> <a href="http://vgc.poly.edu/~fchirigati/"> Fernando Chirigati</a>, New York University </dd> <dd> <a href="http://www.esd.ornl.gov/edss/people/y_wei.shtml"> Yaxing Wei</a>, Oak Ridge National Laboratory </dd> <dd> <a href="http://scholar.google.com/citations?user=H2kYg4wAAAAJ&hl=en"> Saumen Dey</a>, UC Davis </dd> <dd> <a href="http://daks.ucdavis.edu/?page_id=479"> Parisa Kianmajd</a>, UC Davis </dd> <dd> <a href="http://www.cs.utah.edu/~dakoop/"> David Koop</a>, New York University </dd> <dd> <a href="http://www.cs.gonzaga.edu/~bowers/"> Shawn Bowers</a>, Gonzaga University </dd> <dd> <a href="http://swat.sdsc.edu/ilkay/"> Ilkay Altintas</a>, UC San Diego </dd> <dd> <a href="http://www.nceas.ucsb.edu/"> Christopher Jones</a>, NCEAS, UC Santa Barbara </dd> <dd> <a href="http://www.nceas.ucsb.edu/"> Matthew B. Jones</a>, NCEAS, UC Santa Barbara </dd> <dd> <a href="http://www.nceas.ucsb.edu/"> Lauren Walker</a>, NCEAS, UC Santa Barbara </dd> <dd> <a href="http://www.nceas.ucsb.edu/"> Peter Slaughter</a>, NCEAS, UC Santa Barbara </dd> <dd> <a href="http://www.nceas.ucsb.edu/"> Ben Leinfelder</a>, NCEAS, UC Santa Barbara </dd> <dd> <a href="http://www.nceas.ucsb.edu/"> Yang Cao</a>, UIUC </dd> </dl> <p class="copyright"> This document is licensed under a <a class="subfoot" rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 License</a>. </p> <hr> </div> <section id="abstract" class="introductory"><h2>Abstract</h2> <p> Provenance describes the origin and processing history of an artifact. Data provenance is an important form of metadata that explains how a particular data product was generated, by detailing the steps in the computational process producing it. Provenance information brings transparency and helps to audit and interpret data products. The state of the art scientific workflow systems (e.g. Kepler, Taverna, VisTrails, etc.) provide environments for specifying and enacting complex computational pipelines commonly referred to as scientific workflows. In such systems, provenance information is automatically captured in the form of execution traces. However, they often rely on proprietary formats that make the interchange of provenance information difficult. Furthermore, the workflow itself, which represents very useful information, may be disregarded in provenance traces. The evolution history of the workflow (i.e. its provenance) can likewise be missing. To address these shortcomings we propose ProvONE, a standard for scientific workflow provenance representation. ProvONE is defined as an extension of the W3C recommended standard PROV, aiming to capture the most relevant information concerning scientific workflow computational processes, and providing extension points to accommodate the specificities of particular scientific workflow systems. </p> <p> This document specifies the ProvONE model and details how its constituting parts are related to the W3C PROV standard. The description provided is complemented by examples including queries on ProvONE data. </p> <section id="sotd" class="introductory"><h2>Status of This Document</h2> <p> <em>Version 1 Draft: This specification is in review and is publicly released for evaluation and possible adoption. However, it is not associated with and is not supported by any standards organization.</em> </p> <h4 id="please-send-comments">Please Send Comments</h4> <p> This specification was developed by the <a href="https://www.dataone.org/working_groups/cyberinfrastructure"> DataONE Cyberinfrastructure Working Group</a>. If you wish to make comments regarding this document, please send them to <a href="developers@dataone.org">developers@dataone.org</a>. All comments are welcome. </p> <p>The source for this specification and for the OWL document that implements the specification are maintained in our <a href="https://github.com/DataONEorg/sem-prov-ontologies/tree/master/provenance/ProvONE/v1/">sem-prov-ontologies GitHub repository</a>. We all welcome submission of a pull requests via our <a href="https://github.com/DataONEorg/sem-prov-ontologies/tree/master/provenance/ProvONE/v1/">sem-prov-ontologies GitHub repository</a> if you wish to propose specific changes to the specification or the OWL model.</p> </section><!-- !!! End subsection: sotd --> </section><!-- !!! End subsection: abstract --> <!-- !!! The Table of contents should be added here --> <section id="introduction"> <!--OddPage--> <h2><span class="secno">1. </span>Introduction<br></h2> <p> Historically, one of the main uses of provenance has been to support claims of attribution and authenticity, and therefore of value for material objects (e.g. works of art, manuscripts, etc.). In science, provenance is required to provide evidence in support of the experimental results that underpin scientific publications. The importance of provenance still applies in e-Science settings, where the data is obtained through computational methods. In these cases, the provenance of the experimental outcome is typically a graph structured account of the individual computational steps, which is recorded automatically, at the level of detail specified by the system instrumentation. This form of provenance, suitably encoded for machine processing, can then be exploited using a variety of graph query and analysis tools. </p> <p> This scenario, where each piece of scientific data obtained by a computational method is associated with its provenance, is becoming increasingly prevalent. Regarding scientific workflows, detailed execution traces are routinely collected by a number of broadly used Workflow Management Systems (WfMSs) including Taverna, Kepler, VisTrails, Galaxy, e-Science Central, Pegasus, and others. However, these systems often adopt proprietary models for encoding the provenance traces captured by workflow executions. Moreover, they adopt different models to specify the workflows themselves. Such heterogeneity makes it difficult for a scientist to analyze and compare provenance traces captured using the same or similar workflows that were specified and enacted using different systems. The absence of a standard model for representing workflow provenance also means that opportunities for stitching the traces produced by different workflows, and therefore assisting the scientist in her analysis, are likely to be missed. </p> <p> This document presents ProvONE, a model for scientific workflow provenance that aims to fulfill the requirements of the desired standard. The name originates from its development in the context of the DataONE Project, which is creating a large scale and federated data infrastructure serving the earth sciences community. Nevertheless, ProvONE is designed to support a large variety of WfMSs that in turn are used by numerous scientific communities. </p> <section id="relation-to-other-standards"> <h3><span class="secno">1.1 </span>Relation to other standards</h3> <p> The provenance community has made significant efforts in developing standard models that can be used for capturing and publishing provenance of artifacts and resources on the Web. These efforts resulted in, first, the Open Provenance Model (OPM) [<cite><a class="bibref" href="#bib-MCF+11">MCF+11</a></cite>], and more recently, the W3C PROV model [<cite><a class="bibref" href="#bib-PROV">PROV</a></cite>]. While such models are useful and are being adopted by academics and industrials alike, as suggested by the number of PROV implementations, they do not suffice for encoding scientific workflow provenance. The reason being, that both OPM and PROV were developed as minimal models meant to be used for tracking the provenance of resources on the Web regardless of their types. As such, they do not provide all the concepts that are necessary for specifying workflows and encoding the provenance of data products used and generated as a result of their execution. Consequently, many WfMSs adopt their own provenance models, resulting in the aforementioned loss of interoperability opportunities. </p> <p> Thus the need arises for a new model that acts as a standard for encoding scientific workflow provenance. Instead of creating such a model from scratch, the W3C PROV model can be used as a starting point. A preliminary proposal following this direction was published in [<cite><a class="bibref" href="#bib-MDB+13">MDB+13</a></cite>]; an independent extension of PROV for scientific workflows is also presented in [<cite><a class="bibref" href="#bib-CSdO+13">CSdO+13</a></cite>], as well as in [<cite><a class="bibref" href="#bib-BKG+13">BKG+13</a></cite>] (focusing on workflow preservation). This document aims to incorporate and standardize the ideas of these works, as well as additional contributions, to derive an adequate standard that can be used by the scientific workflow community. </p> </section><!-- !!! End subsection: relation-to-other-standards --> <section id="aspects-covered-by-provone"> <h3><span class="secno">1.2 </span>Aspects covered by ProvONE</h3> <p> ProvONE aims to provide the fundamental information required to understand and analyze scientific workflow-based computational experiments. Therefore, it covers the main aspects that have been identified as relevant in the provenance literature. These correspond to prospective and retrospective provenance [<cite><a class="bibref" href="#bib-ZWF06">ZWF06</a></cite>] as well as process provenance [<cite><a class="bibref" href="#bib-FSC+06">FSC+06</a></cite>]; additionally, some essential elements of data structure are also considered. Each of these aspects is described next. </p> <ul> <li> <dfn id="dfn-prospective-provenance" class="internalDFN" title="prospective-provenance">Prospective provenance:</dfn> captures the procedure or "recipe" required to produce a data artifact. In the case of scientific workflows this corresponds to the workflow specification, which details the steps that must be carried out to generate the artifact(s). The specification need not be executable, thus enabling a degree of abstraction. This underscores the fact that an abstract specification is still useful to understand the various steps involved in the program, and how the artifacts are generated if the program is executed as expected. </li> <li> <dfn id="dfn-retrospective-provenance" class="internalDFN" title="retrospective-provenance">Retrospective provenance:</dfn> comprises the steps that were executed in the generation of a data artifact, recordings of the base inputs and intermediate data artifacts involved, and information about the associated environment. For scientific workflows the environment is represented by the WfMSs and the infrastructure that supports it. The execution steps correspond to the execution of computational tasks by software agents, tasks that use and generate a series of input and output data items, respectively. This information can be recorded at varying degrees of detail and granularity, depending on how the recording is instrumented on the system. </li> <li> <dfn id="dfn-process-provenance" class="internalDFN" title="process-provenance">Process provenance:</dfn> is related to the steps, often guided by trial and error, by which the program that is used to create the data product is itself defined. This corresponds to the various versions of a workflow specification, as it undergoes changes in a program referred to as workflow evolution. With the detailed provenance of the workflow, scientists are able to understand the various changes that were carried out to generate the desired data products. </li> <li> <dfn id="dfn-data-structure" class="internalDFN" title="data-structure">Data structure:</dfn> addresses the most relevant aspects of how the data both used and produced by a computational process is organized and represented. For scientific workflows this implies the inputs and outputs of the various tasks that form part of the workflow. </li> </ul> </section><!-- !!! End subsection: aspects-covered-by-provone --> <section class="informative" id="structure-of-this-document"> <h3><span class="secno">1.3 </span>Structure of this Document</h3> <p><a href="#section-prov-one-overview">Section 2</a> provides an overview of the ProvONE conceptual model, covering the aspects outlined in <a href="#aspects-covered-by-provone">Section 1.2</a>. The conceptual model of ProvONE is given using the Unified Modeling Language [<cite><a class="bibref" href="#bib-UML">UML</a></cite>]. </p> <p> <a href="#prov-one-model-components">Section 3</a> provides a detailed characterization of the various components of ProvONE, which is serialized as an OWL 2 ontology. It clarifies how the ProvONE concepts are related to the W3C PROV concepts, accompanying the descriptions with examples. </p> <p> <a href="#additional-resources">Section 4</a> gives references to additional resources that form part of the ProvONE standard. </p> </section><!-- !!! End subsection: structure-of-this-document --> <section class="informative" id="namespaces"> <h3><span class="secno">1.4 </span>Namespaces</h3> <p> The following namespaces and prefixes are used throughout this document. </p> <div style="text-align: left;"> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <caption id="namespace-table"> <span>Table 1<sup><a class="internalDFN" href="#namespace-table"> <span class="diamond"> â—Š:</span></a></sup> </span> Prefix and Namespaces used in this specification </caption> <!-- Table 1--> <tbody> <tr> <td><b>prefix</b></td> <td><b>namespace IRI</b></td> <td><b>definition</b></td> </tr> <tr> <td>prov</td> <td>http://www.w3.org/ns/prov#</td> <td>The PROV namespace [ <cite><a class="bibref" href="#bib-PROVO">PROVO</a></cite>] </td> </tr> <tr> <td>provone</td> <td>http://purl.dataone.org/provone/2015/01/15/ontology#</td> <td>The ProvONE namespace [<cite><a class="bibref" href="#">ProvONE</a></cite>]</td> </tr> <tr> <td>xsd</td> <td>http://www.w3.org/2000/10/XMLSchema#</td> <td>XML Schema namespace [ <cite><a class="bibref" href="#bib-XMLSCHEMA11-2">XMLSCHEMA11-2</a></cite>] </td> </tr> <tr> <td>rdf</td> <td>http://www.w3.org/1999/02/22-rdf-syntax-ns#</td> <td>The RDF namespace [ <cite><a class="bibref" href="#bib-RDF-CONCEPTS">RDF-CONCEPTS</a></cite>] </td> </tr> <tr> <td>rdfs</td> <td>http://www.w3.org/2000/01/rdf-schema#</td> <td>The RDFS namespace [ <cite><a class="bibref" href="#bib-RDF-SCHEMA">RDF-SCHEMA</a></cite>] </td> </tr> <tr> <td>owl</td> <td>http://www.w3.org/2002/07/owl#</td> <td>OWL 2 specification namespace [ <cite><a class="bibref" href="#bib-OWL2">OWL2</a></cite>] </td> </tr> <tr> <td>dcterms</td> <td>http://purl.org/dc/terms/</td> <td>Dublin Core Metadata Elements namespace [ <cite><a class="bibref" href="#bib-DC-RDF">DC-RDF</a></cite>] </td> </tr> <tr> <td>bibo</td> <td>http://purl.org/ontology/bibo</td> <td>The Bibliographic Ontology namespace [ <cite><a class="bibref" href="#bib-DC-RDF">BIBO</a></cite>] </td> </tr> <tr> <td>wfms</td> <td>http://www.wfms.org/registry.xsd</td> <td>Placeholder example WfMS namespace</td> </tr> <tr> <td>:</td> <td>http://example.com/</td> <td>Artificial namespace for examples </td> </tr> </tbody> </table> </div> </section><!-- !!! End subsection: namespaces --> </section><!-- !!! End section: introduction --> <section class="informative" id="section-provone-overview"> <!--OddPage--> <h2><span class="secno">2. </span>ProvONE Conceptual Model Overview</h2> <p> This section introduces ProvONE informally through a UML class diagram representing its conceptual model and brief descriptions of each of the aspects covered by the model. </p> <p> The ProvONE conceptual model is illustrated by the UML diagram of <a href="#provone-uml" class="fig-ref">Figure 1</a>. All classes have a correspondent PROV type denoted by a UML stereotype (e.g. «entity»), whereas this is the case for only a subset of the associations (e.g. «used»). Each of the aspects covered by ProvONE is briefly described next. </p> <div style="text-align: center; "> <span class="figure" id="provone-uml" style="max-width: 70%; "> <img src="uml/provone-model.svg" alt="ProvONE Conceptual Model UML Diagram" style="max-width: 100%; " /><br> <span class="figcaption" id="provone-uml">Figure 1 <sup> <a class="internalDFN" href="#provone-conceptual-model"> <span class="diamond"> â—Š:</span> </a> </sup> ProvONE Conceptual Model UML Diagram </span> </span> </div> <p> <b>Workflow Representation</b>. The various tasks that form part of a workflow are represented by the <em>Program</em> class. <em>Programs</em> can be either atomic or composite, the latter case specified through the <em>hasSubProgram</em> self association. A given program can be distinguished as a <em>Workflow</em>. Each <em>Program</em> may have a series of <em>Ports</em> that function as input or output ports. <em>Ports</em> from the various <em>Programs</em> are connected through <em>Channels</em>. Note that both input and output ports may be associated with multiple <em>Channels</em>, thus allowing workflow models in which a single output is copied and sent to multiple destinations, as well as in which tasks take inputs from different sources through a single input port. </p> <p> In order to specify executable instances of a <em>Workflow</em>, default parameters can be defined for some of its constituent <em>Programs</em>. The default parameters are represented by <em>Entities</em> that will described shortly. A <em>Controller</em> class can be used to specify that the execution of a given <em>Program</em> is controlled by another Program, which allows for differing models of computation. For instance, in a synchronous dataflow model, a given <em>Program</em> may only start once the execution of a preceding <em>Program</em> terminates. </p> <p> <b>Trace Representation</b>. The execution traces associated with a given <em>Workflow</em> are represented in ProvONE through the <em>Execution</em> class. Each <em>Execution</em> instance represents the execution of a particular <em>Program</em> (its <em>Plan</em>), which itself may be a <em>Workflow</em>, and may also be associated with a <em>User</em> responsible for the execution. For the execution of a <em>Program</em>, a series of input <em>Entity</em> items are read from the input <em>Ports</em> and are used to generate a series of output <em>Entity</em> items sent through the output <em>Ports</em>. These outputs may be <em>Data</em>, <em>Visualization</em>, or <em>Document</em> items, depending on the goals of the <em>Workflow</em>. Through the use of the <em>Usage</em> and <em>Generation</em> classes, whenever an <em>Entity</em> item is sent from an output <em>Port</em> to an input <em>Port</em>, this event is recorded through the <em>hadEntity</em>, <em>hadInPort</em> and <em>hadOutPort</em> properties between the <em>Entity</em> item and the associated <em>Ports</em>. In this manner, the graph structure that represents the provenance of the workflow results is generated. </p> <p> <b>Data Structure Representation</b>. The various entities associated with workflow instances and traces are represented by the <em>Data</em> class, the <em>Visualization</em> class, or the <em>Document</em> class. The <em>Data</em> class is defined to be generic and represents data items of various types (e.g. XML, JSON, CSV files, etc.). <em>Visualizations</em> are a differentiated class intended to represent various visualization items often output from workflows (JPG, PNG, SVG, MP4, etc.). The <em>Document</em> class is a generic representation of a published or unpublished article or report that was created as a result of a given <em>Execution</em> of a <em>Program</em> or <em>Workflow</em>. In the ProvONE model, each <em>Entity</em> subclass instance is uniquely identifiable regardless of it sharing the same value as another <em>Entity</em> instance. Although specific data types are not covered directly in ProvONE, collections of <em>Entity</em> items are represented through the <em>Collection</em> class. A <em>Collection</em> may in turn represent a set, bag, list or another variant of a group of items. </p> <p> <b>Workflow Evolution Representation</b>. The specific changes that are performed during the specification of a <em>Workflow</em> are not modeled directly in ProvONE, since these are expected to vary among different WfMSs. However, the different versions of a <em>Workflow</em> form a derivation tree that can be represented using PROV's <em>wasDerivedFrom</em> association, as is explained in the next section. </p> <p> The ProvONE constructs are summarized in <a href="#overview-provone-constructs">Table 2</a>. The first column lists the aspects covered by ProvONE, serving to indicate the various constructs associated with each aspect. The second and third columns indicate the type of each construct as presented in the UML class diagram (class or association) and the construct name, respectively. The last column contains a link to each construct specification in <a href="#section-provone-specification">Section 3</a>. </p> <div style="text-align: left;"> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <caption id="overview-provone-constructs"> <span>Table 2 <sup><a class="internalDFN" href="#overview-provone-constructs"> <span class="diamond">â—Š:</span></a></sup> </span> ProvONE Constructs </caption> <!-- Table 2 --> <tbody> <tr> <td> <b>ProvONE Aspect</b> </td> <td style="text-align: center;"> <b>Construct type</b> </td> <td style="text-align: center;"> <b>Name</b> </td> <td> <b>Specification</b> </td> </tr> <tr> <td rowspan="13" style="text-align: center;"> Workflow </td> <td rowspan="5" style="text-align: center;"> Class </td> <td> <a title="dfn-Program" class="internalDFN">Program</a> </td> <td> <a class="section-ref" href="#program-specification"><span>Section 3.1.1</span></a> </td> </tr> <tr> <td> <a title="dfn-Port" class="internalDFN">Port</a> </td> <td> <a class="section-ref" href="#port-specification"><span>Section 3.1.2</span></a> </td> </tr> <tr> <td> <a title="dfn-Channel" class="internalDFN">Channel</a> </td> <td> <a class="section-ref" href="#channel-specification"><span>Section 3.1.3</span></a> </td> </tr> <tr> <td> <a title="dfn-Controller" class="internalDFN">Controller</a> </td> <td> <a class="section-ref" href="#controller-specification"> <span>Section 3.1.4</span> </a> </td> </tr> <tr> <td> <a title="dfn-Entity" class="internalDFN">Workflow</a> </td> <td> <a class="section-ref" href="#workflow-specification"><span>Section 3.1.5</span></a> </td> </tr> <tr> <td rowspan="8" style="text-align: center;"> Association </td> <td> <a title="dfn-agent" class="internalDFN">hasSubProgram</a> </td> <td> <a class="section-ref" href="#hassubprogram-specification"> <span>Section 3.1.6</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">controlledBy</a> </td> <td> <a class="section-ref" href="#controlledBy-specification"> <span>Section 3.1.7</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">controls</a> </td> <td> <a class="section-ref" href="#controls-specification"> <span>Section 3.1.8</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">hasInPort</a> </td> <td> <a class="section-ref" href="#hasinport-specification"> <span>Section 3.1.9</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">hasOutPort</a> </td> <td> <a class="section-ref" href="#hasoutport-specification"> <span>Section 3.1.10</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">hasDefaultParam</a> </td> <td> <a class="section-ref" href="#hasdefaultparam-specification"> <span>Section 3.1.11</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">connectsTo</a> </td> <td> <a class="section-ref" href="#connectsto-specification"> <span>Section 3.1.12</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">wasDerivedFrom</a> </td> <td> <a class="section-ref" href="#wasderivedfrom-specification"> <span>Section 3.1.13</span> </a> </td> </tr> <tr> <td rowspan="20" style="text-align: center;"> Trace </td> <td rowspan="6" style="text-align: center;"> Class </td> <tr> <td> <a title="Execution" class="internalDFN">Execution</a> </td> <td> <a class="section-ref" href="#execution-specification"><span>Section 3.2.1</span></a> </td> </tr> <tr> <td> <a title="Association" class="internalDFN">Association</a> </td> <td> <a class="section-ref" href="#association-specification"> <span>Section 3.2.2</span> </a> </td> </tr> <tr> <td> <a title="Usage" class="internalDFN">Usage</a> </td> <td> <a class="section-ref" href="#usage-specification"><span>Section 3.2.3</span></a> </td> </tr> <tr> <td> <a title="Generation" class="internalDFN">Generation</a> </td> <td> <a class="section-ref" href="#generation-specification"><span>Section 3.2.4</span></a> </td> </tr> <tr> <td> <a title="User" class="internalDFN">User</a> </td> <td> <a class="section-ref" href="#user-specification"><span>Section 3.2.5</span></a> </td> </tr> <tr> <td rowspan="14" style="text-align: center;"> Association </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">used</a> </td> <td> <a class="section-ref" href="#used-specification"><span>Section 3.2.6</span></a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">wasGeneratedBy</a> </td> <td> <a class="section-ref" href="#wasgeneratedby-specification"> <span>Section 3.2.7</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">wasAssociatedWith</a> </td> <td> <a class="section-ref" href="#wasassociatedwith-specification"> <span>Section 3.2.8</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">wasInformedBy</a> </td> <td> <a class="section-ref" href="#wasinformedby-specification"> <span>Section 3.2.9</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">wasPartOf</a> </td> <td> <a class="section-ref" href="#waspartof-specification"><span>Section 3.2.10</span></a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">qualifiedAssociation</a> </td> <td> <a class="section-ref" href="#qualifiedassociation-specification"> <span>Section 3.2.11</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">agent</a> </td> <td> <a class="section-ref" href="#agent-specification"><span>Section 3.2.12</span></a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">hadPlan</a> </td> <td> <a class="section-ref" href="#hadplan-specification"><span>Section 3.2.13</span></a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">qualifiedUsage</a> </td> <td> <a class="section-ref" href="#qualifiedusage-specification"> <span>Section 3.2.14</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">hadInPort</a> </td> <td> <a class="section-ref" href="#hadinport-specification"><span>Section 3.2.15</span></a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">hadEntity</a> </td> <td> <a class="section-ref" href="#hadentity-specification"><span>Section 3.2.16</span></a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">qualifiedGeneration</a> </td> <td> <a class="section-ref" href="#qualifiedgeneration-specification"> <span>Section 3.2.17</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">hadOutPort</a> </td> <td> <a class="section-ref" href="#hadoutport-specification"> <span>Section 3.2.18</span> </a> </td> </tr> <tr> <td rowspan="7" style="text-align: center;"> Data Structure </td> <td rowspan="5" style="text-align: center;"> Class </td> <td> <a title="Entity" class="internalDFN">Entity</a> </td> <td> <a class="section-ref" href="#entity-specification"><span>Section 3.3.1</span></a> </td> </tr> <tr> <td> <a title="Collection" class="internalDFN">Collection</a> </td> <td> <a class="section-ref" href="#collection-specification"><span>Section 3.3.2</span></a> </td> </tr> <tr> <td> <a title="Data" class="internalDFN">Data</a> </td> <td> <a class="section-ref" href="#data-specification"><span>Section 3.3.3</span></a> </td> </tr> <tr> <td> <a title="Visualization" class="internalDFN">Visualization</a> </td> <td> <a class="section-ref" href="#visualization-specification"> <span>Section 3.3.4</span> </a> </td> </tr> <tr> <td> <a title="Document" class="internalDFN">Document</a> </td> <td> <a class="section-ref" href="#document-specification"> <span>Section 3.3.5</span> </a> </td> </tr> <tr> <td rowspan="2" style="text-align: center;"> Association </td> <td> <a title="dfn-agent" class="internalDFN">wasDerivedFrom</a> </td> <td> <a class="section-ref" href="#wasderivedfrom-specification-data"> <span>Section 3.3.6</span> </a> </td> </tr> <tr> <td> <a title="dfn-agent" class="internalDFN">hadMember</a> </td> <td> <a class="section-ref" href="#hadmember-specification"><span>Section 3.3.7</span></a> </td> </tr> </tbody> </table> </div> </section><!-- !!! End section: section-provone-overview --> <section class="informative" id="section-provone-specification"> <!--OddPage--><h2><span class="secno">3. </span>ProvONE Model Specification</h2> <p>This section presents the specification of the various components of the ProvONE model outlined in the previous section, covering them as presented in <a href="#provone-uml">Figure 1</a> and <a href="#overview-provone-constructs">Table 2</a>. The specification takes the form of an OWL 2 [<cite><a class="bibref" href="#bib-OWL2">OWL2</a></cite>] ontology that extends the W3C PROV-O ontology [<cite><a class="bibref" href="#bib-PROVO">PROVO</a></cite>]. </p> <p>The namespace for all ProvONE terms is http://purl.dataone.org/provone/2015/01/15/ontology#.</p> <p>The encoding of the ProvONE ontology can be found under this link: <a href="http://purl.dataone.org/provone/2015/01/15/ontology#">provone.owl</a></p> <form action="#"> <p> <input id="hide-examples" type="button" value="Hide Examples" onclick="set_display_by_class('div','anexample','none'); set_display_by_id('hide-examples','none'); set_display_by_id('show-examples','');"> <input id="show-examples" type="button" value="Show Examples" style="display: none" onclick="set_display_by_class('div','anexample',''); set_display_by_id('hide-examples',''); set_display_by_id('show-examples','none');"> </p> </form> <section id="workflow-constructs-specification"> <h3><span class="secno">3.1 </span>ProvONE Workflow Specification</h3> <section id="program-specification"> <h4><span class="secno">3.1.1 </span>Program class</h4> <div class="glossary-ref"> A <dfn id="concept-entity" title="Program" class="internalDFN">Program</dfn> <sup><a class="internalDFN" href="#concept-entity"><span class="diamond"> â—Š</span></a></sup> represents a computational task that consumes and produces data through its input and output ports, respectively. It can be atomic or composite, the latter case represented by a possibly nested Program. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#Program</p> <p></p><b>has super-class</b> <ul> <li><a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity</a>, <a title="http://www.w3.org/ns/prov-o#Plan" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Plan">prov:Plan</a></li> </ul> <p></p><b>is in domain of</b> <ul> <li><a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasSubProgram" href="#">provone:hasSubProgram</a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#controlledBy" href="#">provone:controlledBy</a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasInPort" href="#">provone:hasInPort</a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasOutPort" href="#">provone:hasOutPort</a>, </li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasSubProgram" href="#">provone:hasSubProgram</a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#controls" href="#">provone:controls</a>, <a title="http://www.w3.org/ns/prov-o#wasAssociatedWith" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasAssociatedWith"> <font color='red'>prov:wasDerivedFrom</font> </a>, <a title="http://www.w3.org/ns/prov-o#hadPlan" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#hadPlan"> <font color='red'>prov:hadPlan</font> </a> </li> </ul> <div class="anexample" id="program-example"> <div class="anexampleTitle">Example 1<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment specifies a <span class="name">Program</span> identified within the RDF document by <span class="name">program_1</span>. </p> <pre class="codeexample"> 1 @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 2 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . 3 @prefix owl: <http://www.w3.org/2002/07/owl#> . 4 @prefix dcterms: <http://purl.org/dc/terms/> . 5 @prefix prov: <http://www.w3.org/ns/prov#> . 6 @prefix provone: <http://purl.org/provone> . 7 @prefix wfms: <http://www.wfms.org/registry.xsd> . 8 @prefix : <http://example.com/> . 9 10 :program_1 11 12 a provone:Program; 13 dcterms:identifier "e1"^^xsd:string; 14 dcterms:title "CDMSBoxfill"^^xsd:string; 15 wfms:package "gov.llnl.uvcdat.cdms"^^xsd:string; 16 17 . </pre> Line 12 specifies class membership. In order to specify additional attributes for the <em>Program</em>, we employ first the Dublin Core Metadata Elements [<cite><a class="bibref" href="#bib-DC-RDF">DC-RDF</a></cite>]. In particular, we assign the string <span class="name">e1</span> as an <span class="name">identifier</span>, thus stating an identifier explicitly, which is independent of the RDF node identifier. In addition, a descriptive title is given in line 14. Additional attributes associated with the specific WfMS in use, in this case a placeholder example, can also be specified in a similar fashion. In this case the software package responsible for the execution of the <em>Program</em> within the WfMS is specified in line 15. </div> </section><!-- !!! End section: program-specification --> <section id="port-specification"> <h4><span class="secno">3.1.2 </span>Port class</h4> <div class="glossary-ref"> A <dfn id="concept-entity" title="Port" class="internalDFN">Port</dfn> <sup> <a class="internalDFN" href="#concept-entity"> <span class="diamond"> â—Š</span> </a> </sup> enables a Program to send or receive Entity items (Data, Visualization, or Document instances). When semantically typed as an input port using the <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasInPort" href="#">provone:hasInPort</a> object property, the Port may also be further described with default parameters using the <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasDefaultParam" href="#">provone:hasDefaultParam</a> object property. Ports that are semantically typed as output ports using the <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasOutPort" href="#">provone:hasOutPort</a> object property may be connected to input ports using the <a href="#Channel">Channel</a> class. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#Port</p> <p></p><b>has super-class</b> <ul> <li><a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity</a></li> </ul> <p></p><b>is in domain of</b> <ul> <li> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasDefaultParam", href="#">provone:hasDefaultParam</a> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#connectsTo" href="#">provone:connectsTo</a> </li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasInPort" href="#">provone:hasInPort</a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasOutPort", href="#">provone:hasOutPort</a> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hadInPort" href="#">provone:hadInPort</a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hadOutPort" href="#">provone:hadOutPort</a> </li> </ul> <div class="anexample" id="inputport-example"> <div class="anexampleTitle">Example 2 <sup> <a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a> </sup> </div> <p> The following RDF fragment specifies a <span class="name">Port</span> identified within the RDF document by <span class="name">p1_ip1</span>. </p> <pre class="codeexample"> 1 :p1_ip1 2 3 a provone:Port; 4 dcterms:identifier "e1_ip1"^^xsd:string; 5 dcterms:title "input_vars"^^xsd:string; 6 wfms:signature "gov.llnl.uvcdat.cdms:CDMSVariable"^^xsd:string; 7 8 . </pre> Again we make use of the Dublin Core Metadata Elements as well as of elements specific to an example placeholder WfMS. The <em>Port</em> is given an identifier and a descriptive title in lines 4 and 5, respectively. A signature denoting the type of data that the <em>Port</em> consumes is defined in line 6. </div> </section><!-- !!! End section: port-specification --> <section id="channel-specification"> <h4><span class="secno">3.1.3 </span>Channel class</h4> <div class="glossary-ref"> The <a href="http://purl.dataone.org/provone/2015/01/15/ontology#Channel" title="http://purl.dataone.org/provone/2015/01/15/ontology#Channel">provone:Channel</a> class provides a connection between Ports that are defined for Programs. Typically, a Program with an output Port defined using the provone:hasOutPort object property connects to a Program with an input Port defined using the provone:hasInPort object property. The two Ports are connected using a Channel with the provone:connectsTo object property. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#Channel</p> <p></p><b>has super-class</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity </a> </li> </ul> <b>is in range of</b> <ul> <li> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#connectsTo" href="#"> provone:connectsTo </a> </li> </ul> <div class="anexample" id="channel-example"> <div class="anexampleTitle"> Example 4 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment specifies a <span class="name">Channel</span> identified within the RDF document by <span class="name">p1_p2Ch</span>. </p> <pre class="codeexample"> 1 :p1_p2Ch 2 3 a provone:Channel; 4 dcterms:identifier "e1_e2Ch"^^xsd:string; 5 6 . </pre> The <em>Channel</em> is simply specified as such (line 3) given the string <span class="name">e1_e2Ch</span> as an <span class="name">identifier</span> (line 4). </div> </section><!-- !!! End section: channel-specification --> <section id="controller-specification"> <h4><span class="secno">3.1.4 </span>Controller class</h4> <div class="glossary-ref"> A <dfn id="concept-entity" title="Location" class="internalDFN">Controller</dfn> <sup> <a class="internalDFN" href="#concept-entity"> <span class="diamond"> â—Š</span> </a> </sup> specifies a Program that controls other Programs under a particular model of computation. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#Controller</p> <p></p><b>has super-class</b> <ul> <li><a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity</a></li> </ul> <p></p><b>is in domain of</b> <ul> <li><a title="http://purl.dataone.org/provone/2015/01/15/ontology#controls" href="#">provone:conrols</a></li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#controlledBy" href="#">provone:controlledBy </a> </li> </ul> <div class="anexample" id="controller-example"> <div class="anexampleTitle"> Example 5 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond">â—Š</span> </a> </sup> </div> <p> The following RDF fragment specifies a <span class="name">Controller</span> identified within the RDF document by <span class="name">p1_p2CL</span>. </p> <pre class="codeexample"> 1 :p1_p2CL 2 3 a provone:Controller; 4 dcterms:identifier "e1_e2CL"^^xsd:string; 5 6 . </pre> The <em>Controller</em> is given the string <span class="name">e1_e2CL</span> as an <span class="name">identifier</span> (line 4). </div> </section><!-- !!! End section: controller-specification --> <section id="workflow-specification"> <h4><span class="secno">3.1.5 </span>Workflow class</h4> <div class="glossary-ref"> A <dfn id="concept-entity" title="Workflow" class="internalDFN">Workflow</dfn> <sup> <a class="internalDFN" href="#concept-entity"> <span class="diamond"> â—Š</span> </a> </sup> is a distinguished Program, which indicates that is meant to represent a computational experiment in its entirety. It is also subject to versioning by <a title="http://www.w3.org/ns/prov-o#wasDerivedFrom" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasDerivedFrom">prov:wasDerivedFrom</a> through its super-class <a title="#program-specification" href="#program-specification">provone:Program</a>. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#Workflow</p> <p></p><b>has super-class</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity</a>, <a title="http://www.w3.org/ns/prov-o#Plan" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Plan">prov:Plan</a>, <a title="#program-specification" href="#program-specification">provone:Program</a> </li> </ul> <p></p><b>is in domain of</b> <ul> <li> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasSubProgram" href="#"> provone:hasSubProgram </a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#controlledBy" href="#"> provone:controlledBy </a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasInPort" href="#"> provone:hasInPort </a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasOutPort" href="#"> provone:hasOutPort </a>, <a title="http://www.w3.org/ns/prov-o#wasDerivedFrom" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasDerivedFrom"> prov:wasDerivedFrom </a> </li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasSubProgram" href="#">provone:hasSubProgram</a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#controls" href="#">provone:controls</a>, <a title="http://www.w3.org/ns/prov-o#wasDerivedFrom" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasDerivedFrom">, prov:wasDerivedFrom</a> </li> </ul> <div class="anexample" id="workflow-example"> <div class="anexampleTitle">Example 6<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment specifies a <span class="name">Workflow</span> identified within the RDF document by <span class="name">workflow_1</span>. </p> <pre class="codeexample"> 1 :workflow_1 2 3 a provone:Workflow; 4 dcterms:identifier "wf1"^^xsd:string; 5 dcterms:title "ModelComparison"^^xsd:string; 6 7 . </pre> The <em>Workflow</em> is given the string <span class="name">wf1</span> as an <span class="name">identifier</span> in line 4. In addition, it is given the string <span class="name">ModelComparison</span> as a descriptive <span class="name">title</span> in line 5. </div> </section><!-- !!! End section: workflow-specification --> <section id="hassubprogram-specification"> <h4><span class="secno">3.1.6 </span>hasSubProgram object property</h4> <div class="glossary-ref"><dfn id="concept-entity" title="hasSubProgram" class="internalDFN">hasSubProgram</dfn> <sup><a class="internalDFN" href="#concept-entity"><span class="diamond"> â—Š</span></a></sup> specifies the recursive composition of Programs, a parent Program includes a child Program as part of its specification.</div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#hasSubProgram</p> <p></p><b>has domain</b> <ul> <li><a title="#program-specification" href="#program-specification">provone:Program</a></li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#program-specification" href="#program-specification">provone:Program</a></li> </ul> <div class="anexample" id="hassubprogram-example"> <div class="anexampleTitle">Example 8<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment illustrates the use of the <span class="name">hasSubProgram</span> object property by extending <a href="#program-example">Example 1</a> of the <em>Program</em> class. </p> <pre class="codeexample"> 1 :top_program 2 3 a provone:Program; 4 dcterms:identifier "main"^^xsd:string; 5 6 . 7 8 :top_program provone:hasSubProgram :program_1 . </pre> A <em>Program</em> identified within the document as <span class="name">top_program</span>, is given the <span class="name">identifier</span> value <span class="name">main</span>. Subsequently, in line 26 it is specified that the same Program <span class="name">top_program</span> has as a sub-program the Program <span class="name">program_1</span>, defined in <a href="#program-example">Example 1</a>. </div> </section><!-- !!! End section: hassubprogram-specification --> <section id="controlledBy-specification"> <h4><span class="secno">3.1.7 </span>controlledBy object property</h4> <div class="glossary-ref"><dfn id="concept-entity" title="controlledBy" class="internalDFN">controlledBy</dfn> <sup><a class="internalDFN" href="#concept-entity"><span class="diamond"> â—Š</span></a></sup> relates a Controller to its source Program.</div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#controlledBy</p> <p></p><b>has domain</b> <ul> <li><a title="#program-specification" href="#program-specification">provone:Program</a></li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#controller-specification" href="#controller-specification">provone:Controller</a></li> </ul> <div class="anexample" id="controlledBy-example"> <div class="anexampleTitle">Example 9<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment illustrates the use of the <span class="name">controlledBy</span> object property by complementing <a href="#program-example">Example 1</a> of the <em>Program</em> class and <a href="#program-example">Example 5</a> of the <em>Controller</em> class. </p> <pre class="codeexample"> 1 2 :program_1 provone:controlledBy :p1_p2CL . 3 </pre> Line 2 specifies that the <em>Program</em> <span class="name">program_1</span>, defined in <a href="#program-example">Example 1</a>, is the source <em>Program</em> of the <em>Controller</em> <span class="name">p1_p2CL</span>, defined in <a href="#program-example">Example 5</a>. </div> </section><!-- !!! End section: controlledBy-specification --> <section id="cltodestp-specification"> <h4><span class="secno">3.1.8 </span>controls object property</h4> <div class="glossary-ref"><dfn id="concept-entity" title="controls" class="internalDFN">controls</dfn> <sup><a class="internalDFN" href="#concept-entity"><span class="diamond"> â—Š</span></a></sup> relates a Controller to its destination Program.</div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#controls</p> <p></p><b>has domain</b> <ul> <li><a title="#controller-specification" href="#controller-specification">provone:Controller</a></li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#program-specification" href="#program-specification">provone:Program</a> </li> </ul> <div class="anexample" id="controls-example"> <div class="anexampleTitle">Example 10<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment illustrates the use of the <span class="name">controls</span> object property by complementing <a href="#program-example">Example 5</a> of the <em>Controller</em> class. </p> <pre class="codeexample"> 1 2 :program_2 3 4 a provone:Program; 5 dcterms:identifier "e2"^^xsd:string; 6 dcterms:title "TemporalStatistics"^^xsd:string; 7 . 8 9 :p1_p2CL provone:controls :program_2 . 10 </pre> A <em>Program</em> identified within the document as <span class="name">program_2</span>, is given the <span class="name">identifier</span> value <span class="name">e2</span> and <span class="name">TemporalStatistics</span> as its <span class="name">title</span>. Line 9 states that the <em>Controller</em> <span class="name">p1_p2CL</span>, defined in <a href="#program-example">Example 5</a>, has as its destination the <em>Program</em> <span class="name">program_2</span>. </div> </section><!-- !!! End section: controls-specification --> <section id="hasinport-specification"> <h4><span class="secno">3.1.9 </span>hasInPort object property</h4> <div class="glossary-ref"><dfn id="concept-entity" title="hasInPort" class="internalDFN">hasInPort</dfn> <sup><a class="internalDFN" href="#concept-entity"><span class="diamond"> â—Š</span></a></sup> specifies the Ports of a particular Program that are used as input ports.</div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#hasInPort</p> <p></p><b>has domain</b> <ul> <li><a title="#program-specification" href="#program-specification">provone:Program</a></li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#port-specification" href="#port-specification">provone:Port</a></li> </ul> <div class="anexample" id="hasinport-example"> <div class="anexampleTitle">Example 11<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment illustrates the use of the <span class="name">hasInPort</span> object property by complementing <a href="#program-example">Example 1</a> of the <em>Program</em> class and <a href="#inputport-example">Example 2</a> of the <em>Port</em> class. </p> <pre class="codeexample"> 1 2 :program_1 provone:hasInPort :p1_ip1 . 3 </pre> Line 2 specifies that the <em>Program</em> <span class="name">program_1</span>, defined in <a href="#program-example">Example 1</a>, has an input <em>Port</em> <span class="name">p1_ip1</span>, defined in <a href="#inputport-example">Example 2</a>. </div> </section><!-- !!! End section: hasinport-specification --> <section id="hasoutport-specification"> <h4><span class="secno">3.1.10</span>hasOutPort object property</h4> <div class="glossary-ref"><dfn id="concept-entity" title="hasOutPort" class="internalDFN">hasOutPort</dfn> <sup><a class="internalDFN" href="#concept-entity"><span class="diamond"> â—Š</span></a></sup> specifies the Ports of a particular Program that are used as output ports.</div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#hasOutPort</p> <p></p><b>has domain</b> <ul> <li><a title="#program-specification" href="#program-specification">provone:Program</a></li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#outputport-specification" href="#outputport-specification">provone:Port</a></li> </ul> <div class="anexample" id="hasoutport-example"> <div class="anexampleTitle">Example 12<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment illustrates the use of the <span class="name">hasOutPort</span> object property by complementing <a href="#program-example">Example 1</a> of the <em>Program</em> class and the <em>Port</em> class. </p> <pre class="codeexample"> 1 2 :program_1 provone:hasOutPort :p1_op1 . 3 4 :p1_op1 a provone:Port . </pre> Line 2 specifies that the <em>Program</em> <span class="name">program_1</span>, defined in <a href="#program-example">Example 1</a>, has a <em>Port</em> <span class="name">p1_op1</span>. </div> </section><!-- !!! End section: hasoutport-specification --> <section id="hasdefaultparam-specification"> <h4><span class="secno">3.1.11 </span>hasDefaultParam object property</h4> <div class="glossary-ref"><dfn id="concept-entity" title="hasDefaultParam" class="internalDFN">hasDefaultParam</dfn> <sup><a class="internalDFN" href="#concept-entity"><span class="diamond"> â—Š</span></a></sup> specifies that a given input Port has a certain Entity item as a default parameter (usually Data). This enables the pre-configuration of executable Workflow instances with zero or more parameters.</div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#hasDefaultParam</p> <p></p><b>has domain</b> <ul> <li><a title="#port-specification" href="#port-specification">provone:Port</a></li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#data-specification" href="#data-specification">provone:Entity</a></li> </ul> <div class="anexample" id="hasdefaultparam-example"> <div class="anexampleTitle">Example 13<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment illustrates the use of the <span class="name">hasDefaultParam</span> object property by complementing <a href="#inputport-example">Example 2</a> of the <em>Port</em> class and <a href="#data-example">Example 24</a> of the <em>Data</em> class. </p> <pre class="codeexample"> 1 2 :p1_ip1 provone:hasDefaultParam :data1 . 3 </pre> Line 2 specifies that the <em>Port</em> <span class="name">p1_ip1</span>, defined in <a href="#inputport-example">Example 2</a> and associated in <a href="#hasinport-example">Example 11</a> with <em>Program</em> <span class="name">program_1</span> of <a href="#program-example">Example 1</a>, has as a default parameter the <em>Data</em> item <span class="name">data1</span>, defined in <a href="#data-example">Example 40</a>. </div> </section><!-- !!! End section: hasdefaultparam-specification --> <section id="connectsto-specification"> <h4><span class="secno">3.1.12 </span>connectsTo object property</h4> <div class="glossary-ref"><dfn id="concept-connectsTo" title="connectsTo" class="internalDFN">connectsTo</dfn> <sup><a class="internalDFN" href="#concept-connectsTo"><span class="diamond"> â—Š</span></a></sup> specifies the Channel that the given Port(s) connect to, typically with an output Port connected to an input Port.</div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#connectsTo</p> <p></p><b>has domain</b> <ul> <li><a title="#port-specification" href="#port-specification">provone:Port</a></li> </ul> <p></p><b>has range</b> <ul> <li><a title="#channel-specification" href="#">provone:Channel</a></li> </ul> <div class="anexample" id="connectsTo-example"> <div class="anexampleTitle">Example 14<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment illustrates the use of the <span class="name">connectsTo</span> object property. </p> <pre class="codeexample"> 1 :pmain_ip1 2 a provone:Port; 3 dcterms:identifier "e1_ip1"^^xsd:string; 4 . 5 6 :ch1 7 a provone:Channel; 8 dcterms:identifier "pmain_ch1"^^xsd:string; 9 . 10 11 :pmain_ip1 provone:connectsTo :ch1 . </pre> First, an input <em>Port</em> <span class="name">pmain_ip1</span>is defined in lines 1-4. Lines 6-9 specify the <em>Channel</em> <span class="name">ch1</span>, which is then is used to associate the input <em>Port</em> and the <em>Channel</em> using the <em>connectsTo</em> statement in line 11. </div> </section><!-- !!! End section: connectsto-specification --> <section id="wasderivedfrom-specification"> <h4><span class="secno">3.1.13</span>wasDerivedFrom object property</h4> <p> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasDerivedFrom" title="http://www.w3.org/ns/prov-o#wasDerivedFrom">prov:wasDerivedFrom</a> is adopted in ProvONE, in relation to workflow structure, to describe the evolution of programs and workflows. </p> <p><strong>IRI:</strong>http://www.w3.org/ns/prov#wasDerivedFrom</p> <p></p><b>has domain</b> <ul> <li> <a title="#program-specification" href="#program-specification">provone:Program</a>, <a title="#workflow-specification" href="#workflow-specification">provone:Workflow</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#program-specification" href="#program-specification">provone:Program</a>, <a title="#workflow-specification" href="#workflow-specification">provone:Workflow</a> </li> </ul> <div class="anexample" id="wasderivedfrom-example"> <div class="anexampleTitle">Example 15<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment illustrates the use of the <span class="name">wasDerivedFrom</span> object property by extending <a href="#workflow-example">Example 6</a> of the <em>Workflow</em> class. </p> <pre class="codeexample"> 1 2 :workflow_1update1 3 4 a provone:Workflow; 5 dcterms:identifier "wf1upd1"^^xsd:string; 6 dcterms:title "ModelComparison"^^xsd:string; 7 8 :workflow_1update1 prov:wasDerivedFrom :workflow_1 . 9 </pre> First, a <em>Workflow</em> <span class="name">workflow_1update1</span> is defined beginning at line 2. Line 8 specifies that <em>Workflow</em> <span class="name">workflow_1update1</span> was derived from <em>Workflow</em> <span class="name">workflow_1</span> of <a href="#workflow-example">Example 6</a>, which implies that it is a new version and the result of workflow evolution. Hence it is given the same <span class="name">title</span>. </div> </section><!-- !!! End section: wasderivedfrom-specification --> </section><!-- !!! End section: workflow-constructs-specification --> <section id="trace-constructs-specification"> <h3><span class="secno">3.2 </span>ProvONE Trace Specification</h3> <section id="execution-specification"> <h4><span class="secno">3.2.1 </span>Execution class</h4> <div class="glossary-ref">An <dfn id="concept-entity" title="Execution" class="internalDFN">Execution</dfn> <sup> <a class="internalDFN" href="#concept-entity"><span class="diamond"> â—Š</span></a> </sup> represents the execution of a Program. If the Program in question is a Workflow, then the Execution represents a trace of its execution. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#Execution</p> <p></p><b>has super-class</b> <ul> <li><a title="http://www.w3.org/ns/prov-o#Activity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Activity">prov:Activity</a> </ul> <p></p><b>is in domain of</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#used" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#used">prov:used</a>, <a title="http://www.w3.org/ns/prov-o#wasAssociatedWith" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasAssociatedWith"> prov:wasAssociatedWith </a>, <a title="http://www.w3.org/ns/prov-o#wasInformedBy" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasInformedBy"> prov:wasInformedBy </a>, <a title="http://www.w3.org/ns/prov-o#qualifiedGeneration" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedGeneration"> <font color='red'>prov:qualifiedGeneration</font> </a>, <a title="http://www.w3.org/ns/prov-o#qualifiedAssociation" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedAssociation"> <font color='red'>prov:qualifiedAssociation</font> </a>, <a title="http://www.w3.org/ns/prov-o#qualifiedUsage" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedUsage"> <font color='red'>prov:qualifiedUsage</font> </a> </li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#wasGeneratedBy" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasGeneratedBy"> prov:wasGeneratedBy </a>, <a title="http://www.w3.org/ns/prov-o#wasInformedBy" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasInformedBy"> prov:wasInformedBy </a>, <a title="#execution-specification" href="#waspartof-specification"> <font color='red'>provone:wasPartOf</font> </a> </li> </ul> <div class="anexample" id="execution-example"> <div class="anexampleTitle">Example 20 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment specifies a <span class="name">Execution</span> identified within the RDF document by <span class="name">program_1ex1</span>. </p> <pre class="codeexample"> 1 :program_1ex1 2 3 a provone:Execution; 4 dcterms:identifier "e1_ex1"^^xsd:string; 5 prov:startTime "2013-08-21 13:37:53"^^xsd:string; 6 prov:endTime "2013-08-21 13:37:53"^^xsd:string; 7 wfms:cached "0"^^xsd:integer; 8 wfms:completed "1"^^xsd:integer; 9 10 . </pre> An <em>Execution</em> is created with the string <span class="name">e1_ex1</span> as an <span class="name">identifier</span>. In addition, timestamps denoting the moment in time at which the execution begins, and then is completed, are specified through the <a title="http://www.w3.org/ns/prov-o#startedAtTime" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#startedAtTime"> prov:startedAtTime </a> and <a title="http://www.w3.org/ns/prov-o#endedAtTime" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#endedAtTime"> prov:endedAtTime </a> data properties, respectively. In addition, the value <span class="name">0</span> in line 7 indicates that the result was not obtained from a cache, while the <span class="name">1</span> value in line 8 indicates that the execution was completed successfully. </div> </section><!-- !!! End section: execution-specification --> <section id="association-specification"> <h4><span class="secno">3.2.2</span> Association class</h4> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Association" title="http://www.w3.org/ns/prov-o#Association">prov:Association</a> class is adopted directly from the PROV Ontology, and is an assignment of responsibility to an agent for an activity, indicating that the agent had a role in the activity. It further allows for a plan to be specified, which is the plan intended by the agent to achieve some goals in the context of this activity. </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#Association</p> <p></p><b>has super-class</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#AgentInfluence" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#AgentInfluence"> prov:AgentInfluence </a> </li> </ul> <p></p><b>is in domain of</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#p_agent" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#p_agent"> prov:agent </a>, <a title="http://www.w3.org/ns/prov-o#hadPlan" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#hadPlan"> prov:hadPlan </a> </li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#qualifiedAssociation" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedAssociation"> prov:qualifiedAssociation </a> </li> </ul> <div class="anexample" id="association-example"> <div class="anexampleTitle">Example 21 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment specifies a <span class="name">Association</span> identified within the RDF document by <span class="name">association_1</span>. </p> <pre class="codeexample"> 1 :association_1 2 3 a prov:Association; 4 prov:hadPlan :program_1; 5 . </pre> First, an <em>Association</em> <span class="name">association_1</span> is defined beginning at line 1. Line 4 specifies that <em>Association</em> <span class="name">association_1</span> had <em>Program</em> <span class="name">program_1</span> defined in <a href="#program-example">Example 1</a> as a plan. </div> </section><!-- !!! End section: association-specification --> <section id="usage-specification"> <h4><span class="secno">3.2.3</span> Usage class</h4> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Usage" title="http://www.w3.org/ns/prov-o#Usage">prov:Usage </a> class is adopted directly from the PROV Ontology, and is the beginning of utilizing an entity by an activity. Before usage, the activity had not begun to utilize this entity and could not have been affected by the entity. </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#Usage</p> <p></p><b>has super-class</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#InstantaneousEvent" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#InstantaneousEvent"> prov:InstantaneousEvent </a>, <a title="http://www.w3.org/ns/prov-o#EntityInfluence" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#EntityInfluence"> prov:EntityInfluence </a> </li> </ul> <p></p><b>is in domain of</b> <ul> <li> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hadInPort" href="#hadinport-specification"> hadInPort </a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hadEntity" href="#hadentity-specification"> hadEntity </a> </li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#hadUsage" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#hadUsage"> prov:hadUsage </a>, <a title="http://www.w3.org/ns/prov-o#qualifiedUsage" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedUsage"> prov:qualifiedUsage </a> </li> </ul> <div class="anexample" id="usage-example"> <div class="anexampleTitle">Example 22 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment specifies a <span class="name">Usage</span> identified within the RDF document by <span class="name">usage_1</span>. </p> <pre class="codeexample"> 1 :usage_1 2 3 a prov:Usage; 4 prov:used dataSetA; 5 provone:hadEntity dataSetA; 6 . 7 :dataSetA a prov:Entity . </pre> A <em>Usage</em> <span class="name">usage_1</span> specifies that an <em>Entity</em> <span class="name">dataSetA</span> is used at line 4. </div> </section><!-- !!! End section: usage-specification --> <section id="generation-specification"> <h4><span class="secno">3.2.4</span> Generation class</h4> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Generation" title="http://www.w3.org/ns/prov-o#Generation">prov:Generation </a> class is adopted directly from the PROV Ontology, and is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation. </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#Generation</p> <p></p><b>has super-class</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#InstantaneousEvent" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#InstantaneousEvent"> prov:InstantaneousEvent </a>, <a title="http://www.w3.org/ns/prov-o#ActivityInfluence" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#ActivityInfluence"> prov:ActivityInfluence </a> </li> </ul> <p></p><b>is in domain of</b> <ul> <li> <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hadOutPort" href="#hadoutport-specification"> hadOutPort </a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hadEntity" href="#hadentity-specification"> hadEntity </a> </li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#hadGeneration" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#hadGeneration"> prov:hadGeneration </a>, <a title="http://www.w3.org/ns/prov-o#qualifiedGeneration" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedGeneration"> prov:qualifiedGeneration </a> </li> </ul> <div class="anexample" id="generation-example"> <div class="anexampleTitle">Example 23 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment specifies a <span class="name">Generation</span> identified within the RDF document by <span class="name">generation_1</span>. </p> <pre class="codeexample"> 1 :generation_1 2 3 a prov:Generation; 4 prov:wasGeneratedBy :program_1ex1; 5 provone:hadEntity :dataSetB; 6 . 7 :dataSetB a prov:Entity . </pre> A <em>Generation</em> <span class="name">generation_1</span> is simply defined beginning at line 1. <span class="name">generation_1</span> was generated by <em>Execution</em> <span class="name">program_1ex1</span> defined in <a href="#execution-example">Example 20</a> at line 4 and had an <em>Entity</em><span class="name">dataSetB</span> at line 5. </div> </section><!-- !!! End section: generation-specification --> <section id="user-specification"> <h4><span class="secno">3.2.5</span> User class</h4> <div class="glossary-ref"> A <dfn id="concept-entity" title="User" class="internalDFN">User</dfn> <sup> <a class="internalDFN" href="#concept-entity"> <span class="diamond"> â—Š</span> </a> </sup> is the person(s) responsible for the execution of an Execution. Its specification serves attribution and accountability purposes. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#User</p> <p></p><b>has super-class</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#Agent" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Agent"> prov:Agent </a> </li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#agent" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#agent"> prov:agent </a>, <a title="http://www.w3.org/ns/prov-o#wasAssociatedWith" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasAssociatedWith"> prov:wasAssociatedWith </a> </li> </ul> <div class="anexample" id="user-example"> <div class="anexampleTitle">Example 24 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment specifies a <span class="name">User</span> identified within the RDF document by <span class="name">user_1</span>. </p> <pre class="codeexample"> 1 :user_1 2 3 a prov:Agent; 4 dcterms:identifier "user_eg_1"^^xsd:string; 5 . </pre> A <em>User</em> <span class="name">user_1</span> is created and given the string <em>user_eg_1</em> as an <em>identifier</em>. </div> </section><!-- !!! End section: user-specification --> <section id="used-specification"> <h4><span class="secno">3.2.6 </span>used object property</h4> <p> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#used" title="http://www.w3.org/ns/prov-o#used">prov:used</a> is adopted in ProvONE to state that an Execution made use of a particular Entity item as input for its execution. </p> <p><strong>IRI:</strong>http://www.w3.org/ns/prov#used</p> <p></p><b>has domain</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#data-specification" href="#data-specification">provone:Entity</a> </li> </ul> <div class="anexample" id="used-example"> <div class="anexampleTitle">Example 25 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">used</span> object property by complementing <a href="#execution-example">Example 8</a> of the <em>Execution</em> class and <a href="#data-example">Example 40</a> of the <em>Data</em> class. </p> <pre class="codeexample"> 1 2 :program_1ex1 prov:used :data1 . 3 </pre> Line 2 specifies that <em>Execution</em> <span class="name">program_1ex1</span> of <a href="#execution-example">Example 20</a> used as an input <em>Data</em> item <span class="name">data1</span> of <a href="#data-example">Example 26</a>. </div> </section><!-- !!! End section: used-specification --> <section id="wasgeneratedby-specification"> <h4><span class="secno">3.2.7 </span>wasGeneratedBy object property</h4> <p> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasGeneratedBy" title="http://www.w3.org/ns/prov-o#wasGeneratedBy"> prov:wasGeneratedBy </a> is adopted in ProvONE to state that an Execution produced a particular Entity item as output with its execution. </p> <p><strong>IRI:</strong>http://www.w3.org/ns/prov#wasGeneratedBy</p> <p></p><b>has domain</b> <ul> <li> <a title="#data-specification" href="#data-specification">provone:Entity</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <div class="anexample" id="wasgeneratedby-example"> <div class="anexampleTitle">Example 26 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">wasGeneratedBy</span> object property by complementing <a href="#execution-example">Example 20</a> of the <em>Execution</em> class. </p> <pre class="codeexample"> 1 2 :data2 3 4 a provone:Data; 5 dcterms:identifier "cdms1"^^xsd:string; 6 rdfs:label "cdms_data"^^xsd:string; 7 wfms:type "gov.llnl.uvcdat.cdms:CDMSVariable"^^xsd:string; 8 9 :data2 prov:wasGeneratedBy :program_1_ex1 . 10 </pre> First, a <em>Data</em> item <span class="name">data2</span> is defined beginning at line 2. Line 9 specifies that the <em>Data</em> item <span class="name">data2</span> was produced as an output of <em>Execution</em> <span class="name">program_1ex1</span> of <a href="#execution-example">Example 20</a>. </div> </section><!-- !!! End section: wasgeneratedby-specification --> <section id="wasassociatedwith-specification"> <h4><span class="secno">3.2.8 </span>wasAssociatedWith object property</h4> <p> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasAssociatedWith" title="http://www.w3.org/ns/prov-o#wasAssociatedWith"> prov:wasAssociatedWith </a> is adopted in ProvONE to state that a User was associated with a particular Execution. This serves as an assignment of attribution and responsibility. <p><strong>IRI:</strong>http://www.w3.org/ns/prov#wasAssociatedWith</p> <p></p><b>has domain</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#program-specification" href="#program-specification">provone:User</a> </li> </ul> <div class="anexample" id="wasassociatedwith-example"> <div class="anexampleTitle">Example 27 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">wasAssociatedWith</span> object property by complementing <a href="#execution-example">Example 20</a> of the <em>Execution</em> class. </p> <pre class="codeexample"> 1 :program_1ex1 prov:wasAssociatedWith :user_1 . </pre> Line 1 specifies that the <em>User</em> <span class="name">user_1</span> was associated with <em>Execution</em> <span class="name">program_1ex1</span> of <a href="#execution-example">Example 20</a>. </div> </section><!-- !!! End section: wasassociatedwith-specification --> <section id="wasinformedby-specification"> <h4><span class="secno">3.2.9 </span>wasInformedBy object property</h4> <p> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasInformedBy" title="http://www.w3.org/ns/prov-o#wasInformedBy"> prov:wasInformedBy </a> is adopted in ProvONE to state that an Execution communicates with another Execution through an output-input relation, and thereby triggers its execution. </p> <p><strong>IRI:</strong>http://www.w3.org/ns/prov#wasInformedBy</p> <p></p><b>has domain</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <div class="anexample" id="wasinformedby-example"> <div class="anexampleTitle">Example 28 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">wasInformedBy</span> object property by complementing <a href="#execution-example">Example 8</a> of the <em>Execution</em> class. </p> <pre class="codeexample"> 1 2 :program_2ex1 3 4 a provone:Execution; 5 dcterms:identifier "e2_ex1"^^xsd:string; 6 prov:startTime "2013-08-21 13:37:54"^^xsd:string; 7 prov:endTime "2013-08-21 13:37:54"^^xsd:string; 8 wfms:cached "0"^^xsd:integer; 9 wfms:completed "1"^^xsd:integer; 10 11 . 12 13 :program_2ex1 prov:wasInformedBy :program_1ex1 . 14 </pre> First, an <em>Execution</em> <span class="name">program_2ex1</span> is defined beginning at line 2. Line 13 specifies that <em>Execution</em> <span class="name">program_2ex1</span> defined previously received data from <em>Execution</em> <span class="name">program_1ex1</span> of <a href="#execution-example">Example 20</a>. </div> </section><!-- !!! End section: wasinformedby-specification --> <section id="waspartof-specification"> <h4><span class="secno">3.2.10 </span>wasPartOf object property</h4> <p> wasPartOf nables the specification of the structure of Execution instances in that a parent Execution (associated with a Workflow) has child Executions (associated with Programs and subworkflows). </p> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#wasPartOf</p> <p></p><b>has domain</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <div class="anexample" id="waspartof-example"> <div class="anexampleTitle">Example 29 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">wasPartOf</span> object property by complementing <a href="#workflow-example">Example 6</a> of the <em>Workflow</em> class and <a href="#execution-example">Example 20</a> of the <em>Execution</em> class. </p> <pre class="codeexample"> 1 2 :workflow_1ex1 3 4 a provone:Execution; 5 dcterms:identifier "wf1_ex1"^^xsd:string; 6 prov:startTime "2013-08-21 13:37:54"^^xsd:string; 7 prov:endTime "2013-08-21 13:37:59"^^xsd:string; 8 wfms:completed "1"^^xsd:integer; 9 10 . 11 12 :workflow_1ex1 prov:wasAssociatedWith :workflow_1 . 13 14 :program_1ex1 provone:wasPartOf :workflow_1ex1 . 15 </pre> First, an <em>Execution</em> <span class="name">workflow_1ex1</span> is defined beginning at line 2 and associated with <em>Workflow</em> <span class="name">workflow_1</span> of <a href="#workflow-example">Example 6</a> in line 12. Line 14 specifies that <em>Execution</em> <span class="name">program_1ex1</span> of <a href="#execution-example">Example 20</a> is part of <em>Execution</em> <span class="name">workflow_1ex1</span>. </div> </section><!-- !!! End section: waspartof-specification --> <section id="qualifiedassociation-specification"> <h4><span class="secno">3.2.11 </span>prov:qualifiedAssociation object property</h4> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedAssociation" title="http://www.w3.org/ns/prov-o#qualifiedAssociation">prov:qualifiedAssociation </a> object property is adopted directly from the PROV Ontology, and is cited as an assignment of responsibility to an agent for an activity, indicating that the agent had a role in the activity. It further allows for a plan to be specified, which is the plan intended by the agent to achieve some goals in the context of this activity. In the case of ProvONE, a User (Agent) is responsible for the Execution (Activity) with a specified Program or Workflow (Plan). </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#qualifiedAssociation</p> <p></p><b>has domain</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#association-specification" href="#association-specification">prov:Association</a> </li> </ul> <div class="anexample" id="qualifiedAssociation-example"> <div class="anexampleTitle">Example 30 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">qualifiedAssociation</span> object property by complementing <a href="#workflow-example">Example 6</a> of the <em>Workflow</em> class and <a href="#execution-example">Example 20</a> of the <em>Execution</em> class. </p> <pre class="codeexample"> 1 :program_1ex1 2 prov:qualifiedAssociation [ 3 a prov:Association; 4 prov:agent :user_1; 5 prov:hadPlan :program_1; 6 rdfs:comment "user_1 created this association."; 7 ] 8 . </pre> This example is complementary to the <em>Execution</em> <span class="name">program_1ex1</span> defined in <a href="#execution-example">Example 20</a>. Line 2 specifies that <span class="name">program_1ex1</span> has a qualified association with a plan <em>Program</em> <span class="name">program_1, defined in <a href="#program-example">Example 1</a></span>. Then, <span class="name">program_1ex1</span> is assocated with a <em>User</em> <span class="name">user_1</span>. </div> </section><!-- !!! End section: qualifiedassociation-specification --> <section id="agent-specification"> <h4><span class="secno">3.2.12 </span>prov:agent object property</h4> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#p_agent" title="http://www.w3.org/ns/prov-o#p_agent">prov:agent </a> object property is adopted directly from the PROV Ontology, and is cited as a property that references an prov:Agent which influenced a resource. This property applies to an prov:AgentInfluence, which is given by a subproperty of prov:qualifiedInfluence from the influenced prov:Entity, prov:Activity or prov:Agent. In ProvONE, a User (Agent) influences the Execution (Activity). </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#p_agent</p> <p></p><b>has domain</b> <ul> <li> <a title="#association-specification" href="#association-specification">prov:Association</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#user-specification" href="#user-specification">provone:User</a> </li> </ul> <div class="anexample" id="agent-example"> <div class="anexampleTitle">Example 31 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">agent</span> object property by complementing <a href="#association-example">Example 21</a> of the <em>Association</em> class. </p> <pre class="codeexample"> 1 :association_1 prov:agent foo_University . 2 3 foo_University a prov:Organization, prov:Agent . </pre> The <em>Association</em> <span class="name">asociation_1</span> is defined to have an agent <span class="name">foo_University</span> which is an <em>Organization</em>. </div> </section><!-- !!! End section: agent-specification --> <section id="hadplan-specification"> <h4><span class="secno">3.2.13 </span>prov:hadPlan object property</h4> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#hadPlan" title="http://www.w3.org/ns/prov-o#hadPlan">prov:hadPlan </a> object property is adopted directly from the PROV Ontology, and is cited as a property that references an optional Plan adopted by an Agent in Association with some Activity. In ProvONE, a User (Agent) adopts a Plan (Program or Workflow) in Association with an Execution (Activity). </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#hadPlan</p> <p></p><b>has domain</b> <ul> <li> <a title="#association-specification" href="#association-specification">prov:Association</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#program-specification" href="#program-specification">provone:Program</a> </li> </ul> <div class="anexample" id="hadPlan-example"> <div class="anexampleTitle">Example 32 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">hadPlan</span> object property by complementing <a href="#association-example">Example 21</a> of the <em>Association</em> class and <a href="#workflow-example">Example 6</a> of the <em>Workflow</em> class. </p> <pre class="codeexample"> 1 :association_1 provone:hadPlan :program_1 . </pre> Line 1 specifies that the <em>Association</em> <span class="name">association_1</span> has <em>Program</em> <span class="name">program_1</span> as a plan. </div> </section><!-- !!! End section: hadplan-specification --> <section id="qualifiedusage-specification"> <h4><span class="secno">3.2.14 </span>prov:qualifiedUsage object property</h4> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedUsage" title="http://www.w3.org/ns/prov-o#qualifiedUsage">prov:qualifiedUsage </a> object property is adopted directly from the PROV Ontology, and is cited as a qualification of how an Activity used an Entity. In ProvONE, an Execution (Activity) uses an Entity (Data, Visualization, Document) as input to the process. </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#qualifiedUsage</p> <p></p><b>has domain</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#usage-specification" href="#usage-specification">prov:Usage</a> </li> </ul> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedGeneration" title="http://www.w3.org/ns/prov-o#qualifiedGeneration">prov:qualifiedGeneration </a> object property is adopted directly from the PROV Ontology, and is cited as a qualification of how an Activity generated an Entity. In ProvONE, an Execution (Activity) generates an Entity (Data, Visualization, Document) as output of the process. </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#qualifiedGeneration</p> <p></p><b>has domain</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#generation-specification" href="#generation-specification">prov:Generation</a> </li> </ul> <div class="anexample" id="qualifiedUsage-example"> <div class="anexampleTitle">Example 33 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">qualifiedUsage</span> object property by complementing <a href="#execution-example">Example 20</a> of the <em>Execution</em> class. </p> <pre class="codeexample"> 1 :program_1ex1 2 prov:qualifiedUsage [ 3 a prov:Usage; 4 prov:entity :dataSetA; 5 ] 6 . </pre> Line 2 defines a qualified usage with an <em>Entity</em> <span class="name">dataSetA</span> for the <em>Execution</em> <span class="name">program_1ex1</span> in <a href="#execution-example">Example 20</a>. </div> </section><!-- !!! End section: qualifiedusage-specification --> <section id="hadinport-specification"> <h4><span class="secno">3.2.15 </span>hadInPort object property</h4> <div class="glossary-ref"> <dfn id="hadinport-entity" title="hadInPort" class="internalDFN">hadInPort</dfn> <sup> <a class="internalDFN" href="#hadinport-entity"> <span class="diamond"> â—Š</span> </a> </sup> specifies the Port of a particular Execution that was used as input ports, described in a given Usage. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#hadInPort</p> <p></p><b>has domain</b> <ul> <li> <a title="#usage-specification" href="#usage-specification">prov:Usage</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#port-specification" href="#port-specification">provone:Port</a> </li> </ul> <div class="anexample" id="hadInPort-example"> <div class="anexampleTitle">Example 34 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">hadInPort</span> object property by complementing <a href="#usage-example">Example 22</a> of the <em>Usage</em> class. </p> <pre class="codeexample"> 1 :usage_1 provone:hadInPort :p1_ip1 . </pre> Line 2 specifies that the <em>Usage</em> <span class="name">usage_1</span>, defined in <a href="#usage-example">Example 22</a>, has an input <em>Port</em> <span class="name">p1_ip1</span>, defined in <a href="#inputport-example">Example 2</a>. </div> </section><!-- !!! End section: hadinport-specification --> <section id="hadentity-specification"> <h4><span class="secno">3.2.16 </span>hadEntity object property</h4> <div class="glossary-ref"> <dfn id="hadentity-entity" title="hadEntity" class="internalDFN">hadEntity</dfn> <sup> <a class="internalDFN" href="#hadentity-entity"> <span class="diamond"> â—Š</span> </a> </sup> specifies the Entity of a particular Execution that were used as input ports, described in a given Usage. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#hadEntity</p> <p></p><b>has domain</b> <ul> <li> <a title="#usage-specification" href="#usage-specification">prov:Usage</a>, <a title="#generation-specification" href="#generation-specification">prov:Generation</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#entity-specification" href="#entity-specification">prov:Entity</a> </li> </ul> <div class="anexample" id="hadOutPort-example"> <div class="anexampleTitle">Example 35 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">hadOutPort</span> object property by complementing <a href="#generation-example">Example 23</a> of the <em>Generation</em> class and <a href="#usage-example">Example 22</a> of the <em>Usage</em> class.. </p> <pre class="codeexample"> 1 :generation_1 provone:hadEntity :dataSetC . 2 :usage_1 provone:hadEntity :dataSetD . 3 4 :dataSetC a prov:Entity . 5 :dataSetD a prov:Entity . </pre> Line 1 specifies the <em>Generation</em> <span class="name">generation_1</span> has an <em>Entity</em> <span class="name">dataSetC</span>. Line 2 specifies the <em>Usage</em> <span class="name">usage_1</span> has an entity dataSetD. </div> </section><!-- !!! End section: hadentity-specification --> <section id="qualifiedgeneration-specification"> <h4><span class="secno">3.2.17 </span>prov:qualifiedGeneration object property</h4> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#qualifiedGeneration" title="http://www.w3.org/ns/prov-o#qualifiedGeneration">prov:qualifiedGeneration </a> object property is adopted directly from the PROV Ontology, and is cited as a qualification of how an Activity generated an Entity. In ProvONE, an Execution (Activity) generates an Entity (Data, Visualization, Document) as output of the process. </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#qualifiedGeneration</p> <p></p><b>has domain</b> <ul> <li> <a title="#execution-specification" href="#execution-specification">provone:Execution</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#generation-specification" href="#generation-specification">prov:Generation</a> </li> </ul> <div class="anexample" id="qualifiedGeneration-example"> <div class="anexampleTitle">Example 36 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">qualifiedGeneration</span> object property by complementing <a href="#execution-example">Example 20</a> of the <em>Execution</em> class. </p> <pre class="codeexample"> 1 :program_1ex1 2 prov:qualifiedGeneration [ 3 a prov:Generation; 4 prov:atTime "2013-08-21 13:37:53"^^xsd:string; 5 ] 6 . </pre> Line 2 defines that the <em>Execution</em> <span class="name">program_1ex1</span> in <a href="#execution-example">Example 20</a> has a qualified generation with a timestamp <span class="name">"2013-08-21 13:37:53"</span>. </div> </section><!-- !!! End section: qualifiedgeneration-specification --> <section id="hadoutport-specification"> <h4><span class="secno">3.2.18 </span>hadOutPort object property</h4> <div class="glossary-ref"> <dfn id="hadoutport-entity" title="hadoutport" class="internalDFN">hadOutPort</dfn> <sup> <a class="internalDFN" href="#hadoutport-entity"> <span class="diamond"> â—Š</span> </a> </sup> specifies the Port of a particular Execution that was used as an output port, described in a given Generation. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#hadOutPort</p> <p></p><b>has domain</b> <ul> <li> <a title="#generation-specification" href="#generation-specification">prov:Generation</a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="#port-specification" href="#port-specification">provone:Port</a> </li> </ul> <div class="anexample" id="hadOutPort-example"> <div class="anexampleTitle">Example 37 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">hadOutPort</span> object property by complementing <a href="#generation-example">Example 23</a> of the <em>Generation</em> class. </p> <pre class="codeexample"> 1 :generation_1 provone:hadOutPort :p1_op1 . </pre> Line 1 specifies the <em>Generation</em> <span class="name">generation_1</span> has a <em>Port</em> <span class="name">p1_op1</span> defined in <a href="#hasoutport-example">Example 12</a> as an output. </div> </section><!-- !!! End section: hadoutport-specification --> </section><!-- !!! End section: trace-specification --> <section id="datastructure-constructs-specification"> <h3><span class="secno">3.3 </span>ProvONE Data Structure Specification</h3> <section id="entity-specification"> <h4><span class="secno">3.3.1</span> Entity class</h4> <div class="glossary-ref"> The <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity" title="http://www.w3.org/ns/prov-o#Entity">prov:Entity </a> class is adopted directly from the PROV Ontology, and is a physical, digital, conceptual, or other kind of thing with some fixed aspects; entities may be real or imaginary. In ProvONE, an Entity may be instances of the Data, Visualization, or Document classes, or other subclasses of the prov:Entity class. </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov-o#Entity</p> <p></p><b>is in domain of</b> <ul> <li> <a title="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasDerivedFrom" href="#wasderivedfrom-specification"> prov:wasDerivedFrom </a>, <a title="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasGeneratedBy" href="#wasgeneratedby-specification"> prov:wasGeneratedBy </a> </li> </ul> <p></p><b>is in range of</b> <ul> <li> <a title="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasDerivedFrom" href="#wasderivedfrom-specification"> prov:wasDerivedFrom </a>, <a title="http://www.w3.org/TR/2013/REC-prov-o-20130430/#hadMember" href="#hadmember-specification"> prov:hadMember </a>, <a title="http://www.w3.org/TR/2013/REC-prov-o-20130430/#used" href="#used-specification"> prov:used </a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hadEntity" href="#hadentity-specification"> hadEntity </a>, <a title="http://purl.dataone.org/provone/2015/01/15/ontology#hasDefaultParam" href="#hasdefaultparam-specification"> hasDefaultParam </a> </li> </ul> </section><!-- !!! End section: entity-specification --> <section id="collection-specification"> <h4><span class="secno">3.3.2 </span>Collection class</h4> <p> Instead of specifying a new class or subclass, we adopt explicitly as part of the ProvONE model PROV's <a title="http://www.w3.org/ns/prov-o#Collection" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Collection">prov:Collection</a> class, whose description we cite below. </p> <div class="glossary-ref">A <dfn id="concept-collection" title="Collection" class="internalDFN">Collection</dfn> <sup> <a class="internalDFN" href="#concept-collection"> <span class="diamond"> â—Š</span> </a> </sup> is an entity that provides a structure to some constituents, which are themselves entities. These constituents are said to be member of the collections. </div> <p><strong>IRI:</strong>http://www.w3.org/ns/prov#Collection</p> <div class="anexample" id="collection-example"> <div class="anexampleTitle">Example 39<sup><a class="internalDFN" href="#anexample-entity"><span class="diamond"> â—Š</span></a></sup></div> <p> The following RDF fragment specifies a <span class="name">Collection</span> identified within the RDF document by <span class="name">col1</span>. </p> <pre class="codeexample"> 1 :col1 2 3 a prov:Collection; 4 dcterms:identifier "inputset1"^^xsd:string; 5 6 . 7 </pre> A <em>Collection</em> is created with the string <span class="name">inputset1</span> as an <span class="name">identifier</span>. </div> </section><!-- !!! End section: collection-specification --> <section id="data-specification"> <h4><span class="secno">3.3.3 </span>Data class</h4> <div class="glossary-ref">A <dfn id="concept-data" title="Data" class="internalDFN">Data</dfn> <sup> <a class="internalDFN" href="#concept-data"> <span class="diamond"> â—Š</span> </a> </sup> item represents the basic unit of information consumed or produced by a Program. Multiple Data items may be grouped into a Collection. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#Data</p> <p></p><b>has super-class</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity </a> </li> </ul> <div class="anexample" id="data-example"> <div class="anexampleTitle">Example 40 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment specifies a <span class="name">Data</span> item identified within the RDF document by <span class="name">data1</span>. </p> <pre class="codeexample"> 1 :data1 2 3 a provone:Data; 4 dcterms:identifier "defparam1"^^xsd:string; 5 rdfs:label "filename"^^xsd:string; 6 prov:value "DLEM_NEE_onedeg_v1.0nc"^^xsd:string; 7 wfms:type "edu.sci.wfms.basic:File"^^xsd:string; 8 9 . 10 </pre> A <em>Data</em> item is created with the string <span class="name">defparam1</span> as an <span class="name">identifier</span>. It is also given the descriptive string <span class="name">filename</span> through the <a href="http://www.w3.org/TR/rdf-schema/#ch_label"><span class="name">rdfs:label</span></a> data property. The <a title="http://www.w3.org/ns/prov-o#value" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#value">prov:value</a> data property specifies the actual value of the data item, namely <span class="name">DLEM_NEE_onedeg_v1.0nc</span>. Finally, the type of the data item as defined by the WfMS is specified in line 7 to be <span class="name">edu.sci.wfms.basic:File</span>. </div> </section><!-- !!! End section: data-specification --> <section id="visualization-specification"> <h4><span class="secno">3.3.4 </span><font color='red'>Visualization</font> class</h4> <div class="glossary-ref">A <dfn id="concept-visualization" title="Visualization" class="internalDFN"> Visualization </dfn> <sup> <a class="internalDFN" href="#concept-data"> <span class="diamond"> â—Š</span> </a> </sup> item represents a basic unit of information consumed or produced by a Program, in the form of a digital visual represention. Multiple Visualization items may be grouped into a Collection. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#Visualization</p> <p></p><b>has super-class</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity </a> </li> </ul> </section><!-- !!! End section: visualization-specification --> <section id="document-specification"> <h4><span class="secno">3.3.5 </span>Document class</h4> <div class="glossary-ref">A <dfn id="concept-document" title="Document" class="internalDFN"> Document </dfn> <sup> <a class="internalDFN" href="#concept-document"> <span class="diamond"> â—Š</span> </a> </sup> item represents a body of information produced as a result of an Execution, in the form of a communication medium. Multiple Document items may be grouped into a Collection. A Document may, for instance, be a scholarly journal article or government report generated as a result of running a particular Execution of a Program. </div> <p><strong>IRI:</strong>http://purl.dataone.org/provone/2015/01/15/ontology#Document</p> <p></p><b>has super-class</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity </a> </li> </ul> </section><!-- !!! End section: document-specification --> <section id="wasderivedfrom-specification-data"> <h4><span class="secno">3.3.6 </span>wasDerivedFrom object property</h4> <p> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#wasDerivedFrom" title="http://www.w3.org/ns/prov-o#wasDerivedFrom">prov:wasDerivedFrom</a> is adopted in ProvONE, in relation to data structure, to describe dependencies between the Data items produced during workflow execution. </p> <p><strong>IRI:</strong>http://www.w3.org/ns/prov#wasDerivedFrom</p> <p></p><b>has domain</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity </li> </ul> <p></p><b>has range</b> <ul> <li> <a title="http://www.w3.org/ns/prov-o#Entity" href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity">prov:Entity </li> </ul> <div class="anexample" id="wasderivedfrom-example"> <div class="anexampleTitle">Example 43 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">wasDerivedFrom</span> object property by extending <a href="#data-example">Example 40</a> of the <em>Data</em> class. </p> <pre class="codeexample"> 1 2 :data2 3 4 a provone:Data; 5 dcterms:identifier "defparam1"^^xsd:string; 6 rdfs:label "filename"^^xsd:string; 7 prov:value "DLEM_NEE_onedeg_v1.0nc"^^xsd:string; 8 wfms:type "edu.sci.wfms.basic:File"^^xsd:string; 9 10 . 11 12 :data2 prov:wasDerivedFrom :data1 . 13 </pre> First, a <em>Data</em> item <span class="name">data2</span> is defined beginning at line 2. Line 12 specifies that the <em>Data</em> item <span class="name">data2</span> was produced from <em>Data</em> item <span class="name">data1</span> of <a href="#data-example">Example 40</a>. </div> </section><!-- !!! End section: wasderivedfrom-specification --> <section id="hadmember-specification"> <h4><span class="secno">3.3.7 </span>hadMember object property</h4> <p> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#hadMember" title="http://www.w3.org/ns/prov-o#hadMember">prov:hadMember</a> is adopted in ProvONE, in relation to data structure, to specify the Data items that form part of a Collection. </p> <p><strong>IRI:</strong>http://www.w3.org/ns/prov#hadMember</p> <p></p><b>has domain</b> <ul> <li> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Collection" title="http://www.w3.org/ns/prov-o#Collection"> prov:Collection </a> </li> </ul> <p></p><b>has range</b> <ul> <li> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/#Entity" title="http://www.w3.org/ns/prov-o#Entity"> prov:Entity </a> </li> </ul> <div class="anexample" id="hadmember-example"> <div class="anexampleTitle">Example 44 <sup> <a class="internalDFN" href="#anexample-entity"> <span class="diamond"> â—Š</span> </a> </sup> </div> <p> The following RDF fragment illustrates the use of the <span class="name">hadMember</span> object property by extending <a href="#collection-example">Example 39</a> of the <em>Collection</em> class. </p> <pre class="codeexample"> 1 2 :infile1 3 4 a provone:Data; 5 dcterms:identifier "data_file1"^^xsd:string; 6 rdfs:label "file1"^^xsd:string; 7 prov:value "file1.dat"^^xsd:string; 8 wfms:type "edu.sci.wfms.basic:File"^^xsd:string; 9 10 . 11 12 :infile2 13 14 a provone:Data; 15 dcterms:identifier "data_file2"^^xsd:string; 16 rdfs:label "file2"^^xsd:string; 17 prov:value "file2.dat"^^xsd:string; 18 wfms:type "edu.sci.wfms.basic:File"^^xsd:string; 19 20 . 21 22 :col1 prov:hadMember :infile1 . 23 24 :col1 prov:hadMember :infile2 . 25 </pre> Two <em>Data</em> items <span class="name">infile1</span> and <span class="name">infile2</span> are defined in lines 2-20. Line 22 specifies that <em>Data</em> item <span class="name">infile1</span> was a member of <em>Collection</em> item <span class="name">col1</span> of <a href="#collection-example">Example 39</a>. Analogously, line 24 specifies <em>Data</em> item <span class="name">infile2</span> also as part of <em>Collection</em> item <span class="name">col1</span>. </div> </section><!-- !!! End section: hasmember-specification --> </section><!-- !!! End section: datastructure-specification --> </section><!-- !!! End section: section-provone-specification --> <section id="references" class="appendix"><!--OddPage--> <h2><span class="secno">A. </span>References</h2> <dl class="bibliography"> <dt id="bib-BKG+13">[BKG+13]</dt> <dd> Khalid Belhajjame, Graham Klyne, Daniel Garijo, Oscar Corcho, Esteban García-Cuesta, and Raul Palma. <a href="http://wf4ever.github.io/ro/"><cite>Wf4ever Research Object Model</cite></a>. 20 August 2013. URL: <a href="http://wf4ever.github.io/ro/">http://wf4ever.github.io/ro/</a> </dd> <!-- <dt id="bib-CFS+06">[CFS+06]</dt> <dd> Steven P. Callahan, Juliana Freire, Emanuele Santos, Carlos E. Scheidegger, Cláudio T. Silva, and Huy T. Vo. <cite>Vistrails: Visualization meets data management</cite>. In Proceedings of the 2006 ACM SIGMOD International Conference on Management of Data, SIGMOD'06, pages 745-747, New York, NY, USA, 2006. ACM. </dd> --> <dt id="bib-CSdO+13">[CSdO+13]</dt> <dd> Flavio Costa, Vítor Silva, Daniel de Oliveira, Kary Ocaña, Eduardo Ogasawara, Jonas Dias, and Marta Mattoso. <cite>Capturing and Querying Workflow Runtime Provenance with PROV: a Practical Approach</cite>. In Proceedings of the Joint EDBT/ICDT 2013 Workshops, EDBT'13, pages 282-289, New York, NY, USA, 2013. ACM. </dd> <dt id="bib-DC-RDF">[DC-RDF]</dt> <dd>Dublin Core Metadata Initiative. <a href="http://dublincore.org/schemas/rdfs/"><cite>DCMI term declarations represented in RDF schema language</cite></a>. 2012 URL: <a href="http://dublincore.org/schemas/rdfs/">http://dublincore.org/schemas/rdfs/</a> </dd> <dt id="bib-BIBO">[BIBO]</dt> <dd>The Bibliographic Ontology. <a href="http://dublincore.org/schemas/rdfs/"><cite>BIBO term declarations represented in RDF schema language</cite></a>. 2014 URL: <a href="http://bibliontology.com/">http://bibliontology.com/</a> </dd> <dt id="bib-FSC+06">[FSC+06]</dt> <dd> Juliana Freire, Cláudio T. Silva, Steven P. Callahan, Emanuele Santos, Carlos E. Scheidegger, and Huy T. Vo. <cite>Managing Rapidly-Evolving Scientific Workflows</cite>. In Proceedings of the 2006 international conference on Provenance and Annotation of Data, IPAW'06, pages 10-18, Berlin, Heidelberg, 2006. Springer-Verlag. </dd> <dt id="bib-MCF+11">[MCF+11]</dt> <dd> Luc Moreau, Ben Clifford, Juliana Freire, Joe Futrelle, Yolanda Gil, Paul Groth, Natalia Kwasnikowska, Simon Miles, Paolo Missier, Jim Myers, Beth Plale, Yogesh Simmhan, Eric Stephan, and Jan Van den Bussche. <cite>The Open Provenance Model Core Specification (v1.1)</cite>. Future Gener. Comput. Syst., 27(6):743-756, June 2011. </dd> <dt id="bib-MDB+13">[MDB+13]</dt> <dd> Paolo Missier, Saumen Dey, Khalid Belhajjame, Víctor Cuevas-Vicenttín, and Bertram Ludäscher. <cite>D-PROV: Extending the PROV Provenance Model with Workflow Structure</cite>. In Proceedings of the 5th USENIX Workshop on the Theory and Practice of Provenance, TaPP '13, pages 9:1-9:7, Berkeley, CA, USA, 2013. USENIX Association. </dd> <dt id="bib-OWL2">[OWL2]</dt> <dd>World Wide Web Consortium (W3C). <a href="http://www.w3.org/TR/owl2-overview/"><cite>OWL 2 Web Ontology Language Document Overview (Second Edition)</cite></a>. W3C Recommendation 11 December 2012, URL: <a href="http://www.w3.org/TR/owl2-overview/">http://www.w3.org/TR/owl2-overview/</a> </dd> <dt id="bib-PROVO">[PROV]</dt> <dd>World Wide Web Consortium (W3C). <a href="http://www.w3.org/TR/prov-overview/"><cite>PROV-Overview: An Overview of the PROV Family of Documents</cite></a>. W3C Working Group Note 30 April 2013, URL: <a href="http://www.w3.org/TR/prov-overview/">http://www.w3.org/TR/prov-overview/</a> </dd> <dt id="bib-PROVO">[PROVO]</dt> <dd>World Wide Web Consortium (W3C). <a href="http://www.w3.org/TR/prov-o/"><cite>PROV-O: The PROV Ontology</cite></a>. W3C Recommendation 30 April 2013, URL: <a href="http://www.w3.org/TR/prov-o/">http://www.w3.org/TR/prov-o/</a> </dd> <dt id="bib-RDF-CONCEPTS">[RDF-CONCEPTS]</dt> <dd>Graham Klyne; Jeremy J. Carroll.<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/"><cite>Resource Description Framework (RDF): Concepts and Abstract Syntax.</cite></a>10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">http://www.w3.org/TR/2004/REC-rdf-concepts-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-UML">[UML]</dt> <dd>Object Management Group. <a href="http://www.omg.org/spec/UML/2.0/Superstructure/PDF/"><cite>Unified Modeling Language: Superstructure</cite></a>. version 2.0, 2005 URL: <a href="http://www.omg.org/spec/UML/2.0/Superstructure/PDF/">http://www.omg.org/spec/UML/2.0/Superstructure/PDF/</a> </dd> <dt id="bib-XMLSCHEMA11-2">[XMLSCHEMA11-2]</dt> <dd> Henry S. Thompson et al. <a href="http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/"><cite>W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes</cite></a>. 5 April 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/">http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/</a> </dd> <dt id="bib-ZWF06">[ZWF06]</dt> <dd> Yong Zhao, Michael Wilde, and Ian Foster. <cite>Applying the Virtual Data Provenance Model</cite>. In Proceedings of the 2006 international conference on Provenance and Annotation of Data, IPAW'06, pages 148-161, Berlin, Heidelberg, 2006. Springer-Verlag. </dd> </dl> </section><!-- !!! End section: references --> </body> </html>