--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/primer/WD-prov-primer-20130312/Overview.html Thu Feb 28 17:27:37 2013 +0000
@@ -0,0 +1,2059 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+<head>
+ <title>PROV Model Primer</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <link rel="http://www.w3.org/ns/prov#has_provenance" href="http://www.w3.org/2011/prov/provenance/prov-primer">
+ <!--
+ === NOTA BENE ===
+ For the three scripts below, if your spec resides on dev.w3 you can check them
+ out in the same tree and use relative links so that they'll work offline,
+ -->
+ <!-- PM -->
+ <style type="text/css">
+ .note { font-size:small; margin-left:50px }
+ </style>
+
+ <script src="toggles.js" type="text/javascript"></script><style type="text/css"></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;
+}
+
+
+/* --- --- */
+ol.algorithm { counter-reset:numsection; list-style-type: none; }
+ol.algorithm li { margin: 0.5em 0; }
+ol.algorithm li:before { font-weight: bold; counter-increment: numsection; content: counters(numsection, ".") ") "; }
+
+/* --- 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-WD"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+ <body><div class="head">
+ <p>
+
+ <a href="http://www.w3.org/"><img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C"></a>
+
+ </p>
+ <h1 class="title" id="title">PROV Model Primer</h1>
+
+ <h2 id="w3c-working-draft-28-february-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Working Draft 28 February 2013</h2>
+ <dl>
+
+ <dt>This version:</dt>
+ <dd><a href="http://www.w3.org/TR/2013/WD-prov-primer-20130228/">http://www.w3.org/TR/2013/WD-prov-primer-20130228/</a></dd>
+ <dt>Latest published version:</dt>
+ <dd><a href="http://www.w3.org/TR/prov-primer/">http://www.w3.org/TR/prov-primer/</a></dd>
+
+
+ <dt>Latest editor's draft:</dt>
+ <dd><a href="http://dvcs.w3.org/hg/prov/raw-file/default/primer/Primer.html">http://dvcs.w3.org/hg/prov/raw-file/default/primer/Primer.html</a></dd>
+
+
+
+
+
+ <dt>Previous version:</dt>
+ <dd><a href="http://www.w3.org/TR/2012/WD-prov-primer-20120724/">http://www.w3.org/TR/2012/WD-prov-primer-20120724/</a></dd>
+
+
+ <dt>Editors:</dt>
+ <dd><a href="http://www.isi.edu/~gil/">Yolanda Gil</a>, Information Sciences Institute, University of Southern California, US</dd>
+<dd><a href="http://www.inf.kcl.ac.uk/staff/simonm">Simon Miles</a>, King's College London, UK</dd>
+
+
+ <dt>Authors:</dt>
+ <dd><span><a href="http://semanticweb.org/wiki/Khalid_Belhajjame">Khalid Belhajjame</a></span>, University of Manchester</dd>
+<dd><span>Helena Deus</span>, Digital Enterprise Research Institute (DERI), NUI Galway</dd>
+<dd><span><a href="http://www.oeg-upm.net/index.php/en/phdstudents/28-dgarijo">Daniel Garijo</a></span>, Universidad Politécnica de Madrid</dd>
+<dd><span>Graham Klyne</span>, University of Oxford</dd>
+<dd><span><a href="http://www.cs.ncl.ac.uk/people/Paolo.Missier">Paolo Missier</a></span>, Newcastle University</dd>
+<dd><span><a href="http://soiland-reyes.com/stian/">Stian Soiland-Reyes</a></span>, University of Manchester</dd>
+<dd><span><a href="http://tw.rpi.edu/web/person/StephanZednik">Stephan Zednik</a></span>, Rensselaer Polytechnic Institute</dd>
+
+
+ </dl>
+
+
+
+
+
+ <p class="copyright">
+ <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
+ 2013
+
+ <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
+ (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
+ <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
+ <a href="http://www.keio.ac.jp/">Keio</a>, <a href="http://ev.buaa.edu.cn/">Beihang</a>), All Rights Reserved.
+ <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+ <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
+ <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.
+ </p>
+
+
+ <hr>
+</div>
+ <section id="abstract" class="introductory"><h2>Abstract</h2>
+ <p>
+ This document provides an intuitive introduction and guide to the
+ PROV specification for provenance on the Web. PROV is a core data model for
+ provenance for building representations of the entities, people and
+ processes involved in producing a piece of data or thing in the world.
+ This primer explains the fundamental PROV concepts and provides examples
+ of its use. The primer is intended as a starting point for those wishing
+ to create or use PROV data.
+ </p>
+ <p>
+ The <a href="http://www.w3.org/TR/2012/WD-prov-overview-20121211/">PROV Document Overview</a> describes the overall state of PROV, and should be read before other PROV documents.
+ </p>
+
+ <!-- p>
+ This is a document for internal discussion, which will ultimately
+ evolve in the first Public Working Draft of the Primer.</p -->
+ </section><section id="sotd" class="introductory"><h2>Status of This Document</h2>
+
+
+
+ <p>
+ <em>This section describes the status of this document at the time of its publication. Other
+ documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
+ of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
+ index</a> at http://www.w3.org/TR/.</em>
+ </p>
+
+<h4 id="prov-family-of-documents">PROV Family of Documents</h4>
+This document is part of the PROV family of documents, a set of documents defining various aspects that are necessary to achieve the vision of inter-operable
+interchange of provenance information in heterogeneous environments such as the Web. These documents are listed below. Please consult the [<cite><a class="bibref" href="#bib-PROV-OVERVIEW">PROV-OVERVIEW</a></cite>] for a guide to reading these documents.
+<ul>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-overview-20130312/">PROV-OVERVIEW</a> (To be published as Note), an overview of the PROV family of documents [<cite><a class="bibref" href="#bib-PROV-OVERVIEW">PROV-OVERVIEW</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-primer-20130312/">PROV-PRIMER</a> (To be published as Note), a primer for the PROV data model (this document);</li>
+<li> <a href="http://www.w3.org/TR/2013/PR-prov-o-20130312/">PROV-O</a> (Proposed Recommendation), the PROV ontology, an OWL2 ontology allowing the mapping of PROV to RDF [<cite><a class="bibref" href="#bib-PROV-O">PROV-O</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2013/PR-prov-dm-20130312/">PROV-DM</a> (Proposed Recommendation), the PROV data model for provenance [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2013/PR-prov-n-20130312/">PROV-N</a> (Proposed Recommendation), a notation for provenance aimed at human consumption [<cite><a class="bibref" href="#bib-PROV-N">PROV-N</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2013/PR-prov-constraints-20130312/">PROV-CONSTRAINTS</a> (Proposed Recommendation), a set of constraints applying to the PROV data model [<cite><a class="bibref" href="#bib-PROV-CONSTRAINTS">PROV-CONSTRAINTS</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-xml-20130312/">PROV-XML</a> (To be published as Note), an XML schema for the PROV data model [<cite><a class="bibref" href="#bib-PROV-XML">PROV-XML</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-aq-20130312/">PROV-AQ</a> (To be published as Note), the mechanisms for accessing and querying provenance [<cite><a class="bibref" href="#bib-PROV-AQ">PROV-AQ</a></cite>]; </li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-dictionary-20130312/">PROV-DICTIONARY</a> (To be published as Note) introduces a specific type of collection, consisting of key-entity pairs [<cite><a class="bibref" href="#bib-PROV-DICTIONARY">PROV-DICTIONARY</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-dc-20130312/">PROV-DC</a> (To be published as Note) provides a mapping between PROV and Dublic Core Terms [<cite><a class="bibref" href="#bib-PROV-DC">PROV-DC</a></cite>];</li>
+<li> <a href="http://www.w3.org/TR/2013/WD-prov-links-20130312/">PROV-LINKS</a> (To be published as Note) introduces a mechanism to link across bundles [<cite><a class="bibref" href="#bib-PROV-LINKS">PROV-LINKS</a></cite>].</li>
+</ul>
+
+ <p>
+ This document was published by the <a href="http://www.w3.org/2011/prov/">Provenance Working Group</a> as a Working Draft.
+
+
+ If you wish to make comments regarding this document, please send them to
+ <a href="mailto:public-prov-comments@w3.org">public-prov-comments@w3.org</a>
+ (<a href="mailto:public-prov-comments-request@w3.org?subject=subscribe">subscribe</a>,
+ <a href="http://lists.w3.org/Archives/Public/public-prov-comments/">archives</a>).
+
+
+
+
+ All comments are welcome.
+
+
+ </p><p>
+ Publication as a Working Draft does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> Membership.
+ This is a draft document and may be updated, replaced or obsoleted by other documents at
+ any time. It is inappropriate to cite this document as other than work in progress.
+ </p>
+
+
+ <p>
+
+ This document was produced by a group operating under the
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
+
+ The group does not expect this document to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.
+
+
+ <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46974/status" rel="disclosure">public list of any patent disclosures</a>
+
+ made in connection with the deliverables of the group; that page also includes instructions for
+ disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains
+ <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
+ information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
+ 6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
+
+
+ </p>
+
+
+
+
+</section><section id="toc"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a href="#intuitive-overview-of-prov" class="tocxref"><span class="secno">2. </span>Intuitive overview of PROV</a><ul class="toc"><li class="tocline"><a href="#entities" class="tocxref"><span class="secno">2.1 </span>Entities</a></li><li class="tocline"><a href="#activities" class="tocxref"><span class="secno">2.2 </span>Activities</a></li><li class="tocline"><a href="#usage-and-generation" class="tocxref"><span class="secno">2.3 </span>Usage and Generation</a></li><li class="tocline"><a href="#agents-and-responsibility" class="tocxref"><span class="secno">2.4 </span>Agents and Responsibility</a></li><li class="tocline"><a href="#roles" class="tocxref"><span class="secno">2.5 </span>Roles</a></li><li class="tocline"><a href="#derivation-and-revision" class="tocxref"><span class="secno">2.6 </span>Derivation and Revision</a></li><li class="tocline"><a href="#plans" class="tocxref"><span class="secno">2.7 </span>Plans</a></li><li class="tocline"><a href="#time" class="tocxref"><span class="secno">2.8 </span>Time</a></li><li class="tocline"><a href="#alternate-entities-and-specialization" class="tocxref"><span class="secno">2.9 </span>Alternate Entities and Specialization</a></li></ul></li><li class="tocline"><a href="#examples-of-key-concepts-in-prov" class="tocxref"><span class="secno">3. </span>Examples of Key Concepts in PROV</a><ul class="toc"><li class="tocline"><a href="#entities-1" class="tocxref"><span class="secno">3.1 </span>Entities</a></li><li class="tocline"><a href="#activities-1" class="tocxref"><span class="secno">3.2 </span>Activities</a></li><li class="tocline"><a href="#usage-and-generation-1" class="tocxref"><span class="secno">3.3 </span>Usage and Generation</a></li><li class="tocline"><a href="#agents-and-responsibility-1" class="tocxref"><span class="secno">3.4 </span>Agents and Responsibility</a></li><li class="tocline"><a href="#roles-1" class="tocxref"><span class="secno">3.5 </span>Roles</a></li><li class="tocline"><a href="#derivation-and-revision-1" class="tocxref"><span class="secno">3.6 </span>Derivation and Revision</a></li><li class="tocline"><a href="#plans-1" class="tocxref"><span class="secno">3.7 </span>Plans</a></li><li class="tocline"><a href="#time-1" class="tocxref"><span class="secno">3.8 </span>Time</a></li><li class="tocline"><a href="#alternate-entities-and-specialization-1" class="tocxref"><span class="secno">3.9 </span>Alternate Entities and Specialization</a></li><li class="tocline"><a href="#complete-prov-data" class="tocxref"><span class="secno">3.10 </span>Complete PROV data</a></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a href="#changes-since-fourth-public-working-draft" class="tocxref"><span class="secno">B. </span>Changes Since Fourth Public Working Draft</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">C.1 </span>Informative references</a></li></ul></li></ul></section>
+
+
+
+ <section id="introduction">
+ <!--OddPage--><h2><span class="secno">1. </span>Introduction</h2>
+ <p>
+ This primer document provides an accessible introduction to the PROV
+ specification for provenance on the Web.
+ The <i>provenance</i> of digital objects represents their origins. PROV is a
+ proposed specification to express provenance records,
+ which contain <i>descriptions</i> of the entities
+ and activities involved in producing and delivering or otherwise influencing a
+ given object.
+ For the remainder of this document, we use the term 'provenance' to refer also
+ to records of provenance, except where the distinction is important for clarity.
+ By knowing the provenance of an object, we can perceive how to
+ use it. Provenance can be used for many purposes, such as
+ understanding how data was collected so it can be meaningfully used, determining
+ ownership and rights over an object, making judgments about information to
+ determine whether to trust it, verifying that the process and steps used to obtain a
+ result complies with given requirements, and reproducing how something was generated.
+ </p>
+
+ <p>
+ As a specification for provenance, PROV accommodates all those different uses
+ of provenance. Different people may have different perspectives on provenance,
+ and as a result different types of information might be captured in provenance records.
+ </p><ul>
+ <li>
+ One perspective might focus on <i>agent-centered provenance</i>, that is, what entities
+ were involved in generating or manipulating the information in question. For example,
+ in the provenance of a picture in a news article we might capture the photographer who
+ took it, the person that edited it, and the newspaper that published it.
+ </li>
+ <li>
+ A second perspective
+ might focus on <i>object-centered provenance</i>, by tracing the origins of portions of a
+ document to other documents. An example is having a web page that was assembled from content
+ from a news article, quotes of interviews with experts, and a chart that plots data from a
+ government agency.
+ </li>
+ <li>A third perspective one might take is on <i>process-centered provenance</i>,
+ capturing the actions and steps taken to generate the information in question. For example, a
+ chart may have been generated by invoking a service to retrieve data from a database, then
+ extracting certain statistics from the data using some statistics package, and finally
+ processing these results with a graphing tool.
+ </li>
+ </ul>
+ <p></p>
+
+ <p>
+ Provenance records are metadata. There are other kinds of metadata that is
+ not provenance. For example, the size of an image is metadata of
+ that image but it is not provenance.
+ For general background on provenance, a
+ comprehensive overview of requirements, use cases, prior research, and proposed
+ vocabularies for provenance are available from the
+ Final Report of the <abbr title="World Wide Web Consortium">W3C</abbr> Provenance Incubator Group [<cite><a class="bibref" href="#bib-PROVENANCE-XG">PROVENANCE-XG</a></cite>].
+ That document contains three general scenarios
+ that may help identify the provenance aspects of planned applications and
+ help plan the design of a provenance system.
+ </p>
+
+ <p>
+ This primer document aims to ease the adoption of the PROV specifications by providing:
+ </p>
+ <ul>
+ <li>An intuitive explanation of how PROV models provenance. A detailed description of
+ all the concepts and relations in the PROV Data Model is provided in [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>].</li>
+ <li>A simple self-contained example that illustrates how to produce and use PROV assertions, highlighting how
+ to combine PROV with other popular vocabularies such as FOAF and Dublin Core. A description
+ of the formal PROV ontology (PROV-O) can be found in [<cite><a class="bibref" href="#bib-PROV-O">PROV-O</a></cite>].</li>
+ <li>Example snippets using a notation of PROV designed for human
+ consumption (PROV-N). Details of this notation can be found at [<cite><a class="bibref" href="#bib-PROV-N">PROV-N</a></cite>].</li>
+ </ul>
+
+ <p>There are additional reference documents for PROV that are not covered in this
+ primer, including the PROV Access and Query aspects of the specification [<cite><a class="bibref" href="#bib-PROV-AQ">PROV-AQ</a></cite>],
+ the constraints on the PROV data model [<cite><a class="bibref" href="#bib-PROV-CONSTRAINTS">PROV-CONSTRAINTS</a></cite>],
+ a formal semantics of the PROV data model [<cite><a class="bibref" href="#bib-PROV-SEM">PROV-SEM</a></cite>], and the PROV XML notation
+ [<cite><a class="bibref" href="#bib-PROV-XML">PROV-XML</a></cite>]. </p>
+
+ </section>
+
+ <section id="intuitive-overview-of-prov">
+ <!--OddPage--><h2><span class="secno">2. </span>Intuitive overview of PROV</h2>
+
+ <p>
+ This section provides an intuitive explanation of the main concepts in PROV.
+ As with the rest of this document, it should be treated as a starting point for
+ understanding the model. The PROV data model document [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>]
+ provides precise definitions and constraints [<cite><a class="bibref" href="#bib-PROV-CONSTRAINTS">PROV-CONSTRAINTS</a></cite>] to be used.
+ </p>
+ <p>
+ The following diagram provides a high level overview of the structure of PROV records,
+ limited to some key PROV concepts discussed in this document.
+ Note that because PROV is meant to describe how things were created or delivered,
+ PROV relations are named so they can be used in assertions about the past.
+ </p>
+
+ <div style="text-align: center;">
+ <img src="images/key-concepts.png" alt="PROV key concepts overview">
+ </div>
+
+ <section id="entities">
+ <h3><span class="secno">2.1 </span>Entities</h3>
+
+ <p>
+ In PROV, physical, digital, conceptual, or other kinds of thing are called
+ <i>entities</i>.
+ Examples of such entities are a web page, a chart, and a spellchecker.
+ Provenance records can describe the provenance of entities, and
+ an entity’s provenance may refer to many other entities. For example, a document D is
+ an entity whose provenance refers to other entities such as a chart inserted into D,
+ and the dataset that was used to create that chart.
+ Entities may be described as having different attributes and
+ be described from different perspectives. For example,
+ document D as stored in my file system, the second version of document D,
+ and D as an evolving document,
+ are three distinct entities for which we may describe provenance.
+ </p>
+ </section>
+
+ <section id="activities">
+ <h3><span class="secno">2.2 </span>Activities</h3>
+
+ <p>
+ <i>Activities</i> are how entities come into
+ existence and how their attributes change to become new entities,
+ often making use of previously existing entities to achieve this.
+ They are
+ dynamic aspects of the world, such as actions, processes, etc.
+ For example, if the second version of document D was generated
+ by a translation from the first version of the document in another language,
+ then this translation is an activity.
+ </p>
+ </section>
+
+ <section id="usage-and-generation">
+ <h3><span class="secno">2.3 </span>Usage and Generation</h3>
+ <p>
+ Activities <i>generate</i> new entities.
+ For example, writing a document brings the document into existence, while
+ revising the document brings a new version into existence.
+ Activities also make <i>use</i> of entities. For example, revising a document
+ to fix spelling mistakes uses the original version of the document as well
+ as a list of corrections.
+ Generation does not always occur at the end of an activity, and an activity may generate entities
+ part-way through.
+ Likewise, usage does not always occur at the beginning of an activity.
+ </p>
+ </section>
+
+ <section id="agents-and-responsibility">
+ <h3><span class="secno">2.4 </span>Agents and Responsibility</h3>
+ <p>
+ An <i>agent</i> takes a role in an activity such
+ that the agent can be assigned some degree of <i>responsibility</i> for the activity taking
+ place.
+ An agent can be a person, a piece of software, an inanimate object, an organization, or
+ other entities that may be ascribed responsibility.
+ When an agent has some responsibility for an activity, PROV says the agent was
+ <i>associated</i> with the activity, where several agents may be associated with
+ an activity and vice-versa.
+ Consider a chart displaying some statistics
+ regarding crime rates over time in a linear regression. To represent the
+ provenance of that chart, we could state that the person who created the
+ chart was an agent involved in its creation, and that the software used to
+ create the chart was also an agent involved in that activity.
+ An agent may be <i>acting on behalf</i> of others, e.g. an employee on behalf of their
+ organization, and we can express such chains of responsibility in the provenance.
+ </p>
+ <p>
+ We can also describe that an entity is <i>attributed</i> to an agent to express
+ the agent's responsibility for that entity, possibly along with other agents.
+ This description can be understood as a shorthand
+ for saying that the agent was responsible for the activity which generated
+ the entity.
+ </p>
+ <p>
+ One may want to describe the provenance of an agent. For example, an organization
+ responsible for the creation of a report may evolve over time as the report is written as
+ some members leave and others join. To make provenance assertions about an agent in PROV,
+ the agent must be declared explicitly both as an agent and as an entity.
+ </p>
+
+ </section>
+
+ <section id="roles">
+ <h3><span class="secno">2.5 </span>Roles</h3>
+ <p>
+ A <i>role</i> is a description of the function or the part that an entity
+ played in an activity. Roles specify
+ the relationship between an entity and an activity, i.e. how
+ the activity used or generated the entity. Roles also specify how agents are
+ involved in an activity, qualifying their participation in the activity or
+ specifying for what aspect of it each agent was responsible.
+ For example, an agent may play the role of "editor" in an activity that uses
+ one entity in the role of "document to be edited" and another in the role of
+ "addition to be made to the document", to generate a further entity in the role of "edited document".
+ Roles are application specific, so PROV does not define any particular roles.
+ </p>
+ </section>
+
+ <section id="derivation-and-revision">
+ <h3><span class="secno">2.6 </span>Derivation and Revision</h3>
+ <p>
+ When one entity's existence, content, characteristics and so on are
+ at least partly due to another entity, then we say that the former was
+ <i>derived</i> from the latter. For example, one document may contain
+ material copied from another,
+ and a chart was derived from the data that it illustrates.
+ </p>
+ <p>
+ PROV allows some common, specialized kinds of derivation to be described.
+ For example, a given entity, such as a document, may go through multiple <i>revisions</i>
+ over time. Between revisions,
+ one or more attributes of the entity may change.
+ In PROV, the result of each revision is a new entity.
+ PROV allows one to relate those entities by making a description that
+ one was a revision of another.
+ Another specialized kind of derivation is to say that one entity, commonly
+ a document, <i>quotes</i> from another.
+ </p>
+ </section>
+
+ <section id="plans">
+ <h3><span class="secno">2.7 </span>Plans</h3>
+ <p>
+ Activities may follow pre-defined procedures, such as recipes, tutorials, instructions, or workflows.
+ PROV refers to these, in general, as <i>plans</i>, and allows the description that a plan was followed, by agents,
+ in executing an activity.
+ </p>
+ </section>
+
+ <section id="time">
+ <h3><span class="secno">2.8 </span>Time</h3>
+ <p>
+ Time is often a critical aspect of provenance.
+ PROV allows the timing of significant events to be described, including
+ when an entity was generated or used, or when an activity started
+ and finished. For example, the model can be used to describe facts such as when a new
+ version of a document was created (generation time), or when a document was
+ edited (start and end of the editing activity).
+ </p>
+ </section>
+
+ <section id="alternate-entities-and-specialization">
+ <h3><span class="secno">2.9 </span>Alternate Entities and Specialization</h3>
+ <p>
+ There is often more than one way to describe something in a record of
+ provenance. Each perspective will be referred to by a separately identified
+ entity, and PROV provides a mechanism for linking the different descriptions of
+ the same thing together through the mechanism of <i>specialization</i>. One
+ entity is a specialization of another entity if it shares the same fixed attributes,
+ with the possible addition of further fixed attributes. This concept is best
+ illustrated through a few use cases, as below.
+ </p>
+ <p>
+ Entities can be mutable things. For example, a webpage is a single
+ entity, W, despite being edited over time. Each version of the webpage is
+ also an entity, W1, W2... To connect an individual version to the webpage
+ in general, we say that the former is a specialization of the latter: W1 is a
+ specialization of W, W2 is a specialization of W, and so on.
+ </p>
+ <p>
+ Two individuals may create provenance referring to the same thing from different
+ perspectives. For example, the author of an article may attribute that article
+ to themselves using PROV while, independently, a reader might quote a fact from that
+ article elsewhere and document this in PROV. If the author later changes the fact,
+ then from the reader's perspective there are now two versions of the article, and
+ they had quoted from the version before the change. From the author's perspective,
+ there is a single article, attributed to themselves. If either of them, or a
+ third party, were to connect the two PROV records, they would say that the
+ article as referred to by the reader is a specialization of the same article
+ as referred to by the author.
+ </p>
+ <p>
+ The above illustrates where we may want to connect entities by
+ saying that they refer to the same thing, but at different levels of specialization.
+ PROV also allows us to more generally draw a connection between two descriptions
+ of the same thing, even if not at different levels of specialization, describing the
+ entities as <i>alternates</i> of each other. For example,
+ two versions of the webpage above, W1 and W2, are alternates of each other because
+ they describe the same webpage.
+ </p>
+ <p>
+ As another example, if a file is copied from one directory to another to create a backup,
+ we may say that the copies are alternate versions of the same, location-independent, file.
+ Specifically, we may say that the file in the first directory, entity F1, is an alternate of the
+ file in the second directory, entity F2. Note that it is
+ the context (location) rather than content of the file that differs between the entities
+ in this case.
+ </p>
+ </section>
+
+ </section>
+
+ <section id="examples-of-key-concepts-in-prov">
+ <!--OddPage--><h2><span class="secno">3. </span>Examples of Key Concepts in PROV</h2>
+
+ <p>
+ In the following sections, we show how PROV can be used to model
+ provenance in a specific example scenario. Samples of PROV data are given.
+ These samples use the namespace prefixes <b>prov</b>, denoting
+ terms from the PROV ontology, and <b>ex</b>, denoting terms specific to the example.
+ We illustrate in these examples how PROV can be used in combination with other
+ languages, such as FOAF and Dublin Core (with namespace prefix <b>foaf</b> and
+ <b>dcterms</b> respectively).
+ </p>
+ <p>
+ The samples can be displayed in one or more of the following formats.
+ </p>
+ <ul>
+ <li>[<cite><a class="bibref" href="#bib-PROV-O">PROV-O</a></cite>] RDF triples, expressed using the [<cite><a class="bibref" href="#bib-TURTLE">TURTLE</a></cite>] notation.</li>
+ <li>[<cite><a class="bibref" href="#bib-PROV-N">PROV-N</a></cite>] expressions.</li>
+ <li>[<cite><a class="bibref" href="#bib-PROV-XML">PROV-XML</a></cite>] fragments.</li>
+ </ul>
+ <p>
+ Select the formats to display using the buttons below. Note that if all formats
+ are hidden, the worked examples may not make sense!
+ </p>
+ <form action="#"><p>
+ <input id="hide-turtle-examples" type="button" value="Hide Turtle Examples" onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');">
+ <input id="show-turtle-examples" type="button" value="Show Turtle Examples" style="display:none" onclick="
+ set_display_by_class('pre','turtle example','');
+ set_display_by_class('div','turtle example','');
+ set_display_by_id('hide-turtle-examples','');
+ set_display_by_id('show-turtle-examples','none');">
+ <input id="hide-provn-examples" type="button" value="Hide PROV-N Examples" onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');">
+ <input id="show-provn-examples" type="button" value="Show PROV-N Examples" style="display:none" onclick="
+ set_display_by_class('pre','provn example','');
+ set_display_by_class('div','provn example','');
+ set_display_by_id('hide-provn-examples','');
+ set_display_by_id('show-provn-examples','none');">
+ <input id="hide-provxml-examples" type="button" value="Hide XML Examples" onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');">
+ <input id="show-provxml-examples" type="button" value="Show XML Examples" style="display:none" onclick="
+ set_display_by_class('pre','provxml example','');
+ set_display_by_class('div','provxml example','');
+ set_display_by_id('hide-provxml-examples','');
+ set_display_by_id('show-provxml-examples','none');">
+ </p>
+ </form>
+
+
+ <section id="entities-1">
+ <h3><span class="secno">3.1 </span>Entities</h3>
+
+ <p>
+ An online newspaper publishes an article with a chart about crime statistics making using of data (GovData) provided through a government portal.
+ The article includes a chart based on the data, with data values composed (aggregated) by
+ geographical regions.
+ </p>
+ <p>
+ A blogger, Betty, looking at the article, spots what she thinks to be an error in the chart.
+ Betty retrieves a record of the provenance of the article, describing how it was created.
+ </p>
+ <p>Betty finds the following descriptions of entities in the provenance.</p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:article a prov:Entity ;
+ dcterms:title "Crime rises in cities" .
+ ex:dataset1 a prov:Entity .
+ ex:regionList a prov:Entity .
+ ex:composition a prov:Entity .
+ ex:chart1 a prov:Entity .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> entity(ex:article, [dcterms:title="Crime rises in cities"])
+ entity(ex:dataSet1)
+ entity(ex:regionList)
+ entity(ex:composition)
+ entity(ex:chart1)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:entity prov:id="ex:article">
+ <dct:title>Crime rises in cities</dct:title>
+ </prov:entity>
+ <prov:entity prov:id="ex:dataSet1"/>
+ <prov:entity prov:id="ex:regionList"/>
+ <prov:entity prov:id="ex:composition"/>
+ <prov:entity prov:id="ex:chart1"/>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ These statements, in order, refer to the article (<code>ex:article</code>),
+ an original data set (<code>ex:dataSet1</code>),
+ a list of regions (<code>ex:regionList</code>),
+ data aggregated by region (<code>ex:composition</code>),
+ and a chart (<code>ex:chart1</code>), and state that each is an entity.
+ Any entity may have attributes, such as the title
+ of the article, expressed using <code>dcterms:title</code> above.
+ </p>
+ <p>
+ PROV data is commonly visualized for human consumption using particular conventions,
+ which we will introduce over the following sections. To start with, entities
+ are denoted using ovals, as shown below.
+ </p>
+ <img src="images/entities.png" alt="Visualization of the example entities">
+ </section>
+
+ <section id="activities-1">
+ <h3><span class="secno">3.2 </span>Activities</h3>
+
+ <p>
+ Further, the provenance describes that there was
+ an activity (<code>ex:compile</code>) denoting the compilation of the
+ chart from the data set.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:compile a prov:Activity .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> activity(ex:compile)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:activity prov:id="ex:compile"/>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ The provenance also includes reference to the more specific steps involved in this compilation,
+ which are first composing the data by region (<code>ex:compose</code>) and then generating the
+ chart graphic (<code>ex:illustrate</code>).
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:compose a prov:Activity .
+ ex:illustrate a prov:Activity .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> activity(ex:compose)
+ activity(ex:illustrate)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:activity prov:id="ex:compose"/>
+ <prov:activity prov:id="ex:illustrate"/>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ In visualizations of the PROV data, activities are depicted as rectangles, as below.
+ </p>
+ <img src="images/activities.png" alt="Visualization of the example activities">
+ </section>
+
+ <section id="usage-and-generation-1">
+ <h3><span class="secno">3.3 </span>Usage and Generation</h3>
+
+ <p>
+ Concluding the basic description of what occurred, the provenance
+ describes the key relations among the above
+ entities and activities, i.e. the usage of an entity by an activity,
+ or the generation of an entity by an activity.
+ </p>
+ <p>
+ For example, the descriptions below state that the composition activity
+ (<code>ex:compose</code>) used the original data set, that it used the list of
+ regions, and that the composed data was generated by this activity.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:compose prov:used ex:dataSet1 ;
+ prov:used ex:regionList .
+ ex:composition prov:wasGeneratedBy ex:compose .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> used(ex:compose, ex:dataSet1, -)
+ used(ex:compose, ex:regionList, -)
+ wasGeneratedBy(ex:composition, ex:compose, -)
+ </pre>
+ <p>Note that the - argument in the examples above denote unspecified optional
+ information. See the [<cite><a class="bibref" href="#bib-PROV-N">PROV-N</a></cite>] specification for the details of what arguments
+ may be expressed in each PROV-N statement.
+ </p>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:dataset1"/>
+ </prov:used>
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:regionList"/>
+ </prov:used>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:composition"/>
+ <prov:activity prov:ref="ex:compose"/>
+ </prov:wasGeneratedBy>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Similarly, the chart graphic creation activity (<code>ex:illustrate</code>)
+ used the composed data, and the chart was generated by this activity.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:illustrate prov:used ex:composition .
+ ex:chart1 prov:wasGeneratedBy ex:illustrate .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> used(ex:illustrate, ex:composition, -)
+ wasGeneratedBy(ex:chart1, ex:illustrate, -)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:used>
+ <prov:activity prov:ref="ex:illustrate"/>
+ <prov:entity prov:ref="ex:composition"/>
+ </prov:used>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:chart1"/>
+ <prov:activity prov:ref="ex:illustrate"/>
+ </prov:wasGeneratedBy>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ In visualizing the PROV data, usage and generation are connections between
+ entities and activities. The arrows point from the future to the past.
+ </p>
+ <img src="images/use-generate.png" alt="Connection of the entities and activities by use and generation links">
+ </section>
+
+ <section id="agents-and-responsibility-1">
+ <h3><span class="secno">3.4 </span>Agents and Responsibility</h3>
+
+ <p>
+ Digging deeper, Betty wants to know who compiled the chart.
+ Betty sees that Derek was involved in both the composition and
+ chart creation activities:
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:compose prov:wasAssociatedWith ex:derek .
+ ex:illustrate prov:wasAssociatedWith ex:derek .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> wasAssociatedWith(ex:compose, ex:derek, -)
+ wasAssociatedWith(ex:illustrate, ex:derek, -)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:wasAssociatedWith>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:agent prov:ref="ex:derek"/>
+ </prov:wasAssociatedWith>
+ <prov:wasAssociatedWith>
+ <prov:activity prov:ref="ex:illustrate"/>
+ <prov:agent prov:ref="ex:derek"/>
+ </prov:wasAssociatedWith>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ The record for Derek provides the
+ following description that
+ Derek is an agent, specifically a person, followed by non-PROV information
+ giving attributes of Derek.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:derek a prov:Agent ;
+ a prov:Person ;
+ foaf:givenName "Derek"^^xsd:string ;
+ foaf:mbox <mailto:derek@example.org> .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> agent(ex:derek,
+ [prov:type='prov:Person', foaf:givenName="Derek",
+ foaf:mbox="<mailto:derek@example.org>"])
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:agent prov:id="ex:derek">
+ <prov:type>prov:Person</prov:type>
+ <foaf:givenName>Derek</foaf:givenName>
+ <foaf:mbox>mailto:derek@example.org</foaf:mbox>
+ </prov:agent>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Derek works as part of an organization, Chart Generators Inc, and so the provenance
+ declares that he acts on their behalf. Note that the organization is itself
+ an agent.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:derek prov:actedOnBehalfOf ex:chartgen .
+ ex:chartgen a prov:Agent ;
+ a prov:Organization ;
+ foaf:name "Chart Generators Inc" .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> agent(ex:chartgen,
+ [prov:type='prov:Organization',
+ foaf:name="Chart Generators Inc"])
+ actedOnBehalfOf(ex:derek, ex:chartgen)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:agent prov:id="ex:chartgen">
+ <prov:type>prov:Organization</prov:type>
+ <foaf:name>Chart Generators Inc</foaf:name>
+ </prov:agent>
+ <prov:actedOnBehalfOf>
+ <prov:delegate prov:ref="ex:derek"/>
+ <prov:responsible prov:ref="ex:chartgen"/>
+ </prov:actedOnBehalfOf>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ It would also be possible to express the more specific statement that Derek
+ worked on the organization's behalf for a particular activity, rather than
+ in general, and so may have acted on behalf of other organizations for other
+ activities. See the PROV specifications for details on how to express
+ activity-specific delegation.
+ </p>
+ <p>
+ Finally, there is an explicit statement in the provenance that the chart was
+ attributed to Derek.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:chart1 prov:wasAttributedTo ex:derek .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> wasAttributedTo(ex:chart1, ex:derek)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:wasAttributedTo>
+ <prov:entity prov:ref="ex:chart1"/>
+ <prov:agent prov:ref="ex:derek"/>
+ </prov:wasAttributedTo>
+ </prov:document>
+ </pre>
+ </div>
+
+ <p>
+ We can extend our graphical depiction to show the agents, association and attribution links.
+ </p>
+ <img src="images/agents.png" alt="Agents added to provenance graph and linked to entities and activities">
+ </section>
+
+ <section id="roles-1">
+ <h3><span class="secno">3.5 </span>Roles</h3>
+
+ <p>
+ For Betty to understand where the error lies, she needs to have more detailed
+ information on how entities have been used in and generated
+ by activities. Betty has determined that <code>ex:compose</code> used
+ entities <code>ex:regionList</code> and <code>ex:dataSet1</code>, but she does not
+ know what function these entities played in the processing. Betty
+ also knows that <code>ex:derek</code> was associated with the activities, but she does
+ not know if Derek was the analyst responsible for determining how the data
+ should be composed.
+ </p>
+ <p>
+ The above information is described as roles in the provenance. The composition
+ activity involved entities in four roles: the data to be composed (<code>ex:dataToCompose</code>),
+ the regions to aggregate by (<code>ex:regionsToAggregateBy</code>), the
+ resulting composed data (<code>ex:composedData</code>), and the
+ analyst doing the composition (<code>ex:analyst</code>).
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:dataToCompose a prov:Role .
+ ex:regionsToAggregateBy a prov:Role .
+ ex:composedData a prov:Role .
+ ex:analyst a prov:Role .
+ </pre>
+ <p>
+ Examples in the sections above show descriptions of the simple facts that the
+ composition activity used, generated and was enacted by entities/agents.
+ For example, the usage of the data set by the compose activity is expressed
+ as follows.
+ </p>
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:compose prov:used ex:dataSet1 .
+ </pre>
+ <p>
+ The
+ provenance can contain more details of exactly how these entities and agents
+ were involved in the activity.
+ To express this, PROV-O refers to <i>qualified usage</i>, <i>qualified generation</i>, etc.,
+ which are descriptions consisting of several statements about how usage, generation, etc. took place.
+ For example, we may describe the plan followed by an agent in performing an activity, or
+ the time at which an activity generated an entity, both illustrated later.
+ Another example of qualified involvement is the role an entity played in an activity.
+ The descriptions below state
+ that the composition activity (<code>ex:compose</code>) included the usage
+ of the government data set (<code>ex:dataSet1</code>) in the role of the data
+ to be composed (<code>ex:dataToCompose</code>).
+ </p>
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:compose prov:qualifiedUsage [
+ a prov:Usage ;
+ prov:entity ex:dataSet1 ;
+ prov:hadRole ex:dataToCompose
+ ] .
+ </pre>
+ </div>
+ <div class="provn example">
+ <p>
+ In PROV-N, the role is expressed as one of the list of attributes in the used
+ expression, with the attribute name <code>prov:role</code>.
+ </p>
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> used(ex:compose, ex:dataSet1, -, [prov:role='ex:dataToCompose'])
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:dataSet1"/>
+ <prov:role>ex:dataToCompose</prov:role>
+ </prov:used>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ This can then be distinguished from the same activity's usage of the list of
+ regions because the roles played are different.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:compose prov:qualifiedUsage [
+ a prov:Usage ;
+ prov:entity ex:regionList ;
+ prov:hadRole ex:regionsToAggregateBy
+ ] .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> used(ex:compose, ex:regionList, -, [prov:role='ex:regionsToAggregateBy'])
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:used>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:entity prov:ref="ex:regionList"/>
+ <prov:role>ex:regionsToAggregateBy</prov:role>
+ </prov:used>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Similarly, the provenance includes descriptions that the same activity was
+ enacted in a particular way by Derek, so it indicates that he had the role of
+ <code>ex:analyst</code>, and that the entity <code>ex:composition</code> took the role of the composed
+ data in what the activity generated:
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:compose prov:qualifiedAssociation [
+ a prov:Association ;
+ prov:agent ex:derek ;
+ prov:hadRole ex:analyst
+ ] .
+ ex:composition prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:activity ex:compose ;
+ prov:hadRole ex:composedData
+ ] .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> wasAssociatedWith(ex:compose, ex:derek, -, [prov:role='ex:analyst'])
+ wasGeneratedBy(ex:composition, ex:compose, -, [prov:role='ex:composedData'])
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:wasAssociatedWith>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:agent prov:ref="ex:derek"/>
+ <prov:role>ex:analyst</prov:role>
+ </prov:wasAssociatedWith>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:composition"/>
+ <prov:activity prov:ref="ex:compose"/>
+ <prov:role>ex:composedData</prov:role>
+ </prov:wasGeneratedBy>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Depicting the above visually, we have the following.
+ </p>
+ <img src="images/roles.png" alt="Provenance graph annotated with roles played by entities and agents">
+ </section>
+
+ <section id="derivation-and-revision-1">
+ <h3><span class="secno">3.6 </span>Derivation and Revision</h3>
+
+ <p>
+ After looking at the detail of the compilation activity, there appears
+ to be nothing wrong, so Betty concludes the error is in the government dataset.
+ She looks at the dataset <code>ex:dataSet1</code>,
+ and sees that it is missing data from one of the zipcodes in the area. She contacts
+ the government agency, and a new version of GovData is created, declared to be the
+ next revision of the data. The provenance of this new dataset,
+ <code>ex:dataSet2</code>, states that it is a revision of the
+ old data set, <code>ex:dataSet1</code>.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:dataSet2 a prov:Entity ;
+ prov:wasRevisionOf ex:dataSet1 .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> entity(ex:dataSet2)
+ wasDerivedFrom(ex:dataSet2, ex:dataSet1, [prov:type='prov:Revision'])
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <entity prov:id="dataSet2"/>
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="ex:dataSet2"/>
+ <prov:usedEntity prov:ref="ex:dataSet1"/>
+ <prov:type>prov:Revision</prov:type>
+ </prov:wasDerivedFrom>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Derek notices that there is a new dataset available and creates a new chart based on the revised data,
+ using another compilation activity. Betty checks the article again at a
+ later point, and wants to know if it is based on the old or new GovData.
+ She sees a new description stating that the new chart is derived from the new dataset
+ (the same relation could be expressed between the old chart and old dataset).
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:chart2 a prov:Entity ;
+ prov:wasDerivedFrom ex:dataSet2 .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> wasDerivedFrom(ex:chart2, ex:dataSet2)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="ex:chart2"/>
+ <prov:usedEntity prov:ref="ex:dataSet2"/>
+ </prov:wasDerivedFrom>
+ </prov:document>
+ </pre>
+ </div>
+ <p>and that the new chart is a revision of the original one:
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:chart2 a prov:Entity ;
+ prov:wasRevisionOf ex:chart1 .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> entity(ex:chart2)
+ wasDerivedFrom(ex:chart2, ex:chart1, [prov:type='prov:Revision'])
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <entity prov:id="chart2"/>
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="ex:chart2"/>
+ <prov:usedEntity prov:ref="ex:chart1"/>
+ <prov:type>prov:Revision</prov:type>
+ </prov:wasDerivedFrom>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Derivation and revision are connections between entities, and so depicted
+ with arrows in our visualization.
+ </p>
+ <img src="images/derivation.png" alt="Derivation and revision links between entities">
+ </section>
+
+ <section id="plans-1">
+ <h3><span class="secno">3.7 </span>Plans</h3>
+
+ <p>
+ Betty then wishes to know whether the new data set correctly addresses
+ the error that existed before. The provenance of the new dataset,
+ <code>ex:dataSet2</code>, describes not only who performed the corrections,
+ Edith, but also what instructions she followed in doing so (in PROV terms, the plan).
+ First, the correction activity (<code>ex:correct</code>), the person who corrected
+ it, Edith (<code>ex:edith</code>), and the correction instructions (<code>ex:instructions</code>)
+ are described.
+ </p><div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:correct a prov:Activity .
+ ex:edith a prov:Agent, prov:Person .
+ ex:instructions a prov:Plan .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> activity(ex:correct)
+ agent(ex:edith, [prov:type='prov:Person'])
+ entity(ex:instructions)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:activity prov:id="ex:correct"/>
+ <prov:agent prov:id="ex:edith">
+ <prov:type>prov:Person</prov:type>
+ </prov:agent>
+ <prov:entity prov:id="ex:instructions">
+ <prov:type>prov:Plan</prov:type>
+ </prov:entity>
+ </prov:document>
+ </pre>
+ </div>
+ <div class="turtle example">
+ <p>
+ The connection between them is expressed in PROV-O using a qualified association giving details of
+ how Edith was associated with the correction activity,
+ including that she followed the above correction instructions.
+ </p>
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:correct prov:qualifiedAssociation [
+ a Association ;
+ prov:agent ex:edith ;
+ prov:hadPlan ex:instructions
+ ] .
+ ex:dataSet2 prov:wasGeneratedBy ex:correct .
+ </pre>
+ </div>
+ <div class="provn example">
+ <p>
+ In PROV-N, the plan is an optional parameter to wasAssociatedWith descriptions.
+ </p>
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> wasAssociatedWith(ex:correct, ex:edith, ex:instructions)
+ wasGeneratedBy(ex:dataSet2, ex:correct, -)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <p>
+ In PROV-XML, the plan is an optional child of the wasAssociatedWith element.
+ </p>
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:wasAssociatedWith>
+ <prov:activity prov:ref="ex:correct"/>
+ <prov:agent prov:ref="ex:edith"/>
+ <prov:plan prov:ref="ex:instructions"/>
+ </prov:wasAssociatedWith>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:dataSet2"/>
+ <prov:activity prov:ref="ex:correct"/>
+ </prov:wasGeneratedBy>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Plans are additional information about the connection from an activity to
+ an agent, and so, in our visualization, connect to the link between them.
+ </p>
+ <img src="images/plans.png" alt="Annotaion of example provenance graph with plan followed">
+ </section>
+
+ <section id="time-1">
+ <h3><span class="secno">3.8 </span>Time</h3>
+
+ <p>
+ The government agency that produced GovData is concerned to know how long
+ the incorrect chart was in circulation before the corrected chart was created.
+ That is, they wish to compare the times at which the original and the corrected
+ charts were generated. The snippet below shows that the second chart
+ was generated roughly a month after the first.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:chart1 prov:generatedAtTime "2012-03-02T10:30:00"^^xsd:dateTime .
+ ex:chart2 prov:generatedAtTime "2012-04-01T15:21:00"^^xsd:dateTime .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> wasGeneratedBy(ex:chart1, ex:compile, 2012-03-02T10:30:00)
+ wasGeneratedBy(ex:chart2, ex:compile2, 2012-04-01T15:21:00)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:chart1"/>
+ <prov:time>2012-03-02T10:30:00</prov:time>
+ </prov:wasGeneratedBy>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="ex:chart2"/>
+ <prov:time>2012-04-01T15:21:00</prov:time>
+ </prov:wasGeneratedBy>
+ </prov:document>
+ </pre>
+ </div>
+
+ <p>
+ To ensure their procedures are efficient, the agency also wish to know how long the
+ corrections took once the error was discovered. That is, they wish to know the
+ start and end times of the correction activity (<code>ex:correct</code>).
+ These details are expressed as follows, showing that the corrections took a
+ little over a day.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:correct prov:startedAtTime "2012-03-31T09:21:00"^^xsd:dateTime ;
+ prov:endedAtTime "2012-04-01T15:21:00"^^xsd:dateTime .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> activity(ex:correct, 2012-03-31T09:21:00, 2012-04-01T15:21:00)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:activity prov:id="ex:correct">
+ <prov:startTime>2012-03-31T09:21:00</prov:startTime>
+ <prov:endTime>2012-04-01T15:21:00</prov:endTime>
+ </prov:activity>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Time is visualized as additional information regarding activities or the
+ links between activities and entities or agents.
+ </p>
+ <img src="images/time.png" alt="Annotation of provenance graph with example timestamps">
+ </section>
+
+ <section id="alternate-entities-and-specialization-1">
+ <h3><span class="secno">3.9 </span>Alternate Entities and Specialization</h3>
+
+ <p>
+ Before noticing anything wrong with the government data, Betty had already
+ posted a blog entry about the article. The blog entry had its own published
+ provenance. In particular, it contains some text copied from the article, and the
+ provenance states that this text (<code>ex:quoteInBlogEntry</code>) is quoted
+ from the article.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:quoteInBlogEntry a prov:Entity ;
+ prov:value "Smaller cities have more crime than larger ones" ;
+ prov:wasQuotedFrom ex:article .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> entity(ex:quoteInBlogEntry, prov:value="Smaller cities have more crime than larger ones")
+ wasDerivedFrom(ex:quoteInBlogEntry, ex:article, [prov:type='prov:Quotation'])
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:entity prov:id="ex:quoteInBlogEntry">
+ <prov:value>Smaller cities have more crime than larger ones</prov:value>
+ </prov:entity>
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="ex:quoteInBlogEntry"/>
+ <prov:usedEntity prov:ref="ex:article"/>
+ <prov:type>prov:Quotation</prov:type>
+ </prov:wasDerivedFrom>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ The newspaper, from past experience, anticipated that there could be revisions
+ to the article, and so created identifiers for both the article in general
+ (<code>ex:article</code>) as a URI that got redirected to the first version of the article (<code>ex:articleV1</code>),
+ allowing both to be referred to as entities in provenance data.
+ In the provenance records, the newspaper describes the connection between the two: that
+ the first version of the article is a specialization of the article in general.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:articleV1 a prov:Entity ;
+ prov:specializationOf ex:article .
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> entity(ex:articleV1)
+ specializationOf(ex:articleV1, ex:article)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:entity prov:id="ex:articleV1"/>
+ <prov:specializationOf>
+ <prov:specificEntity prov:ref="ex:articleV1"/>
+ <prov:generalEntity prov:ref="ex:article"/>
+ </prov:specializationOf>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Later, after the data set is corrected and the new chart generated, a new version
+ of the article is created, <code>ex:articleV2</code>, with its own URI where the article
+ is redirected to. To ensure that those
+ consulting the provenance of <code>ex:articleV2</code> understand that it
+ is connected with the provenance of <code>ex:article</code> and <code>ex:articleV1</code>,
+ the newspaper describes how these entities are related.
+ </p>
+ <div class="turtle example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>Turtle Example</b>
+ <a onclick="
+ set_display_by_class('pre','turtle example','none');
+ set_display_by_class('div','turtle example','none');
+ set_display_by_id('hide-turtle-examples','none');
+ set_display_by_id('show-turtle-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> ex:articleV2 prov:specializationOf ex:article .
+ ex:articleV2 prov:alternateOf ex:articleV1
+ </pre>
+ </div>
+ <div class="provn example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>PROV-N Example</b>
+ <a onclick="
+ set_display_by_class('pre','provn example','none');
+ set_display_by_class('div','provn example','none');
+ set_display_by_id('hide-provn-examples','none');
+ set_display_by_id('show-provn-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> specializationOf(ex:articleV2, ex:article)
+ alternateOf(ex:articleV2, ex:articleV1)
+ </pre>
+ </div>
+ <div class="provxml example">
+ <div class="exampleheader">
+ <span class="exampleheader"><b>XML Example</b>
+ <a onclick="
+ set_display_by_class('pre','provxml example','none');
+ set_display_by_class('div','provxml example','none');
+ set_display_by_id('hide-provxml-examples','none');
+ set_display_by_id('show-provxml-examples','');"><u><i>(hide all)</i></u></a>
+ </span></div>
+ <pre> <prov:document>
+ ...
+ <prov:specializationOf>
+ <prov:specificEntity prov:ref="ex:articleV2"/>
+ <prov:generalEntity prov:ref="ex:article"/>
+ </prov:specializationOf>
+ <prov:alternateOf>
+ <prov:alternate1 prov:ref="ex:articleV1"/>
+ <prov:alternate2 prov:ref="ex:articleV2"/>
+ </prov:alternateOf>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Note that above we could have also
+ stated that <code>ex:articleV2</code> was a revision of <code>ex:articleV1</code>,
+ as we did between <code>ex:chart2</code> and <code>ex:chart1</code>,
+ which would describe more concretely how the alternate entities are related.
+ Specialization and alternate relations connect entities, and so are visualized
+ as links between them.
+ </p>
+ <img src="images/specialization.png" alt="Specialization and alternate links between entities">
+ </section>
+
+ <section id="complete-prov-data">
+ <h3><span class="secno">3.10 </span>Complete PROV data</h3>
+ <p>
+ The full set of examples shown above are available in <a href="primer-turtle-examples.txt">PROV-O Turtle format</a>
+ or <a href="primer-provn-examples.txt">PROV-N format</a> or <a href="primer-prov-xml-examples.xml">PROV-XML format</a>.
+ We visualize the whole example below.
+ </p>
+ <img src="images/everything.png" alt="Provenance graph for whole example">
+ </section>
+ </section>
+
+ <section class="appendix" id="acknowledgements">
+ <!--OddPage--><h2><span class="secno">A. </span>Acknowledgements</h2>
+ <p>
+ The Provenance Working Group members.
+ </p>
+ </section>
+
+ <section class="appendix" id="changes-since-fourth-public-working-draft">
+ <!--OddPage--><h2><span class="secno">B. </span>Changes Since Fourth Public Working Draft</h2>
+ <ul>
+ <li>Corrected XML example for activities</li>
+ <li>Clarified usage of adoptedOnBehalfOf relation</li>
+ <li>Clarified wasQuotedFrom example</li>
+ <li>Adapted PROV-XML examples to clarify they are not RDF/XML</li>
+ </ul>
+ </section>
+
+
+<section id="references" class="appendix"><!--OddPage--><h2><span class="secno">C. </span>References</h2><section id="informative-references"><h3><span class="secno">C.1 </span>Informative references</h3><dl class="bibliography"><dt id="bib-PROV-AQ">[PROV-AQ]</dt><dd>Graham Klyne; Paul Groth; eds. <a href="http://www.w3.org/TR/2013/WD-prov-aq-20130312/"><cite>Provenance Access and Query</cite></a>. 12 March 2013, Working Draft. URL: <a href="http://www.w3.org/TR/2013/WD-prov-aq-20130312/">http://www.w3.org/TR/2013/WD-prov-aq-20130312/</a>
+</dd><dt id="bib-PROV-CONSTRAINTS">[PROV-CONSTRAINTS]</dt><dd>James Cheney; Paolo Missier; Luc Moreau; eds. <a href="http://www.w3.org/TR/2013/PR-prov-constraints-20130312/"><cite>Constraints of the PROV Data Model</cite></a>. 12 March 2013, W3C Proposed Recommendation. URL: <a href="http://www.w3.org/TR/2013/PR-prov-constraints-20130312/">http://www.w3.org/TR/2013/PR-prov-constraints-20130312/</a>
+</dd><dt id="bib-PROV-DC">[PROV-DC]</dt><dd>Daniel Garijo; Kai Eckert; eds. <a href="http://www.w3.org/TR/2013/WD-prov-dc-20130312/"><cite>Dublin Core to PROV Mapping</cite></a>. 12 March 2013, Working Draft. URL: <a href="http://www.w3.org/TR/2013/WD-prov-dc-20130312/">http://www.w3.org/TR/2013/WD-prov-dc-20130312/</a>
+</dd><dt id="bib-PROV-DICTIONARY">[PROV-DICTIONARY]</dt><dd>Tom De Nies; Sam Coppens; eds. <a href="http://www.w3.org/TR/2013/WD-prov-dictionary-20130312/"><cite>PROV Dictionary</cite></a>. 12 March 2013, Working Draft. URL: <a href="http://www.w3.org/TR/2013/WD-prov-dictionary-20130312/">http://www.w3.org/TR/2013/WD-prov-dictionary-20130312/</a>
+</dd><dt id="bib-PROV-DM">[PROV-DM]</dt><dd>Luc Moreau; Paolo Missier; eds. <a href="http://www.w3.org/TR/2013/PR-prov-dm-20130312/"><cite>PROV-DM: The PROV Data Model</cite></a>. 12 March 2013, W3C Proposed Recommendation. URL: <a href="http://www.w3.org/TR/2013/PR-prov-dm-20130312/">http://www.w3.org/TR/2013/PR-prov-dm-20130312/</a>
+</dd><dt id="bib-PROV-LINKS">[PROV-LINKS]</dt><dd>Luc Moreau; Timothy Lebo; eds. <a href="http://www.w3.org/TR/2013/WD-prov-links-20130312/"><cite>Linking Across Provenance Bundles</cite></a>. 12 March 2013, Working Draft. URL: <a href="http://www.w3.org/TR/2013/WD-prov-links-20130312/">http://www.w3.org/TR/2013/WD-prov-links-20130312/</a>
+</dd><dt id="bib-PROV-N">[PROV-N]</dt><dd>Luc Moreau; Paolo Missier; eds. <a href="http://www.w3.org/TR/2013/PR-prov-n-20130312/"><cite>PROV-N: The Provenance Notation</cite></a>. 12 March 2013, W3C Proposed Recommendation. URL: <a href="http://www.w3.org/TR/2013/PR-prov-n-20130312/">http://www.w3.org/TR/2013/PR-prov-n-20130312/</a>
+</dd><dt id="bib-PROV-O">[PROV-O]</dt><dd>Timothy Lebo; Satya Sahoo; Deborah McGuinness; eds. <a href="http://www.w3.org/TR/2013/PR-prov-o-20130312/"><cite>PROV-O: The PROV Ontology</cite></a>. 12 March 2013, W3C Proposed Recommendation. URL: <a href="http://www.w3.org/TR/2013/PR-prov-o-20130312/">http://www.w3.org/TR/2013/PR-prov-o-20130312/</a>
+</dd><dt id="bib-PROV-OVERVIEW">[PROV-OVERVIEW]</dt><dd>Paul Groth; Luc Moreau; eds. <a href="http://www.w3.org/TR/2013/WD-prov-overview-20130312/"><cite>PROV-OVERVIEW: An Overview of the PROV Family of Documents</cite></a>. 12 March 2013, Working Draft. URL: <a href="http://www.w3.org/TR/2013/WD-prov-overview-20130312/">http://www.w3.org/TR/2013/WD-prov-overview-20130312/</a>
+</dd><dt id="bib-PROV-SEM">[PROV-SEM]</dt><dd>James Cheney; ed. <a href="http://www.w3.org/TR/2013/WD-prov-sem-20130312"><cite>Semantics of the PROV Data Model</cite></a>. 12 March 2013, Working Draft. URL: <a href="http://www.w3.org/TR/2013/WD-prov-sem-20130312">http://www.w3.org/TR/2013/WD-prov-sem-20130312</a>.
+</dd><dt id="bib-PROV-XML">[PROV-XML]</dt><dd>Hook Hua; Curt Tilmes; Stephan Zednik; eds. <a href="http://www.w3.org/TR/2013/WD-prov-xml-20130312/"><cite>PROV-XML: The PROV XML Schema</cite></a>. 12 March 2013, Working Draft. URL: <a href="http://www.w3.org/TR/2013/WD-prov-xml-20130312/">http://www.w3.org/TR/2013/WD-prov-xml-20130312/</a>
+</dd><dt id="bib-PROVENANCE-XG">[PROVENANCE-XG]</dt><dd>Yolanda Gil, James Cheney, Paul Groth, Olaf Hartig, Simon Miles, Luc Moreau, Paulo Pinheiro da Silva <a href="http://www.w3.org/2005/Incubator/prov/XGR-prov/"><cite>Provenance XG Final Report</cite></a>. 8 December 2010. URL: <a href="http://www.w3.org/2005/Incubator/prov/XGR-prov/">http://www.w3.org/2005/Incubator/prov/XGR-prov/</a>
+</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd>Eric Prud'hommeaux, Gavin Carothers <a href="http://www.w3.org/TR/2011/WD-turtle-20110809/"><cite>Turtle: Terse RDF Triple Language</cite></a>. 9 August 2011. W3C Working Draft. URL: <a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">http://www.w3.org/TR/2011/WD-turtle-20110809/</a>
+</dd></dl></section></section></body></html>
\ No newline at end of file