--- a/primer/NOTE-prov-primer-20130430/Overview.html Tue Apr 23 22:37:10 2013 +0200
+++ b/primer/NOTE-prov-primer-20130430/Overview.html Tue Apr 23 21:52:40 2013 +0100
@@ -1,2251 +1,2247 @@
-<!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>/*****************************************************************
- * 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="http://www.w3.org/StyleSheets/TR/W3C-WG-NOTE"><!--[if lt IE 9]><script src='http://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="http://www.w3.org/Icons/w3c_home" alt="W3C"></a>
-
- </p>
- <h1 class="title" id="title">PROV Model Primer</h1>
-
- <h2 id="w3c-working-group-note-30-april-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Working Group Note 30 April 2013</h2>
- <dl>
-
- <dt>This version:</dt>
- <dd><a href="http://www.w3.org/TR/2013/NOTE-prov-primer-20130430/">http://www.w3.org/TR/2013/NOTE-prov-primer-20130430/</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>Previous version:</dt>
- <dd><a href="http://www.w3.org/TR/2013/WD-prov-primer-20130312/">http://www.w3.org/TR/2013/WD-prov-primer-20130312/</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>Contributors:</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>, Ontology Engineering Group, Universidad Politécnica de Madrid, Spain</dd>
-<dd><span>Graham Klyne</span>, University of Oxford</dd>
-<dd><span><a href="http://www.ncl.ac.uk/computing/people/profile/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 Data Model for provenance interchange on the web. PROV defines 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/2013/NOTE-prov-overview-20130430/">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/NOTE-prov-overview-20130430/">PROV-OVERVIEW</a> (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/NOTE-prov-primer-20130430/">PROV-PRIMER</a> (Note), a primer for the PROV data model (this document);</li>
- <li> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/">PROV-O</a> (Recommendation), the PROV ontology, an OWL2 ontology allowing the mapping of the PROV data model to RDF [<cite><a class="bibref" href="#bib-PROV-O">PROV-O</a></cite>];</li>
- <li> <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/">PROV-DM</a> (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/REC-prov-n-20130430/">PROV-N</a> (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/REC-prov-constraints-20130430/">PROV-CONSTRAINTS</a> (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/NOTE-prov-xml-20130430/">PROV-XML</a> (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/NOTE-prov-aq-20130430/">PROV-AQ</a> (Note), 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/NOTE-prov-dictionary-20130430/">PROV-DICTIONARY</a> (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/NOTE-prov-dc-20130430/">PROV-DC</a> (Note) provides a mapping between PROV-O and Dublin Core Terms [<cite><a class="bibref" href="#bib-PROV-DC">PROV-DC</a></cite>];</li>
- <li> <a href="http://www.w3.org/TR/2013/NOTE-prov-sem-20130430/">PROV-SEM</a> (Note), a declarative specification in terms of first-order logic of the PROV data model [<cite><a class="bibref" href="#bib-PROV-SEM">PROV-SEM</a></cite>];</li>
- <li> <a href="http://www.w3.org/TR/2013/NOTE-prov-links-20130430/">PROV-LINKS</a> (Note) introduces a mechanism to link across bundles [<cite><a class="bibref" href="#bib-PROV-LINKS">PROV-LINKS</a></cite>].</li>
- </ul>
-
- <h4 id="implementations-encouraged">Implementations Encouraged</h4>
- <p>
- The Provenance Working Group encourages implementation of the material defined in this document.
- Although work on this document by the Provenance Working Group is complete,
- errors may be recorded in the <a href="http://www.w3.org/2011/prov/errata.html">errata</a> or and these may be addressed in future revisions.
- </p>
-
- <h4 id="please-send-comments">Please Send Comments</h4>
-
-
- <p>
- This document was published by the <a href="http://www.w3.org/2011/prov/">Provenance Working Group</a> as a Working Group Note.
-
-
- 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 Group Note 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>.
-
-
-
-
- <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="#the-complete-example" class="tocxref"><span class="secno">3.10 </span>The Complete Example</a></li></ul></li><li class="tocline"><a href="#summary" class="tocxref"><span class="secno">4. </span>Summary</a></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
- data model for provenance interchange on the Web.
- The <i>provenance</i> of digital objects represents their origins. PROV is a
- 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.
- 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 judgements 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 people or organizations
- 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 are
- 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>A high-level explanation of how PROV models provenance, in Section 2. 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, in
- Section 3.
- The example includes snippets in RDF using the PROV ontology [<cite><a class="bibref" href="#bib-PROV-O">PROV-O</a></cite>], in a
- notation designed for human consumption [<cite><a class="bibref" href="#bib-PROV-N">PROV-N</a></cite>], and in PROV's XML format [<cite><a class="bibref" href="#bib-PROV-XML">PROV-XML</a></cite>].
- The example shows how
- to combine PROV with other popular vocabularies such as FOAF [<cite><a class="bibref" href="#bib-FOAF">FOAF</a></cite>] and Dublin Core [<cite><a class="bibref" href="#bib-DCTERMS">DCTERMS</a></cite>].</li>
- </ul>
-
- <p>The document ends with a summary of major capabilities and features of PROV.</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 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 followed.
- </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 responsibility 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 kind of derivation is to say that one entity, a quotation, <i>was quoted from</i>
- another entity, commonly a document.
- </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.
- </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
- the reader had quoted from the version before the change. From the author's perspective,
- there is a single article, attributed to the author. If the author, the reader, or a
- third party, were to connect the two PROV records, that party 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 prefixes <b>exc</b>, <b>exn</b>, <b>exb</b>, <b>exg</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 [<cite><a class="bibref" href="#bib-FOAF">FOAF</a></cite>] and Dublin Core [<cite><a class="bibref" href="#bib-DCTERMS">DCTERMS</a></cite>] (with namespace prefix <b>foaf</b> and
- <b>dcterms</b> respectively).
- </p>
- <p>
- The scenario describes a blogger exploring the provenance of an online newspaper
- article, including a chart produced from a government agency dataset. The
- provenance data comes from different sources: the blogger, the newspaper,
- the chart generator company and the government agency. The samples of provenance from each source
- use a different namespace prefix for identifiers that source has
- created: <b>exb</b>, <b>exn</b>, <b>exc</b>, and <b>exg</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
- based on data (GovData) provided by 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> exn:article a prov:Entity ;
- dcterms:title "Crime rises in cities" .
- exg:dataset1 a prov:Entity .
- exc:regionList a prov:Entity .
- exc:composition1 a prov:Entity .
- exc: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(exn:article, [dcterms:title="Crime rises in cities"])
- entity(exg:dataset1)
- entity(exc:regionList)
- entity(exc:composition1)
- entity(exc: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="exn:article">
- <dct:title>Crime rises in cities</dct:title>
- </prov:entity>
- <prov:entity prov:id="exg:dataset1"/>
- <prov:entity prov:id="exc:regionList1"/>
- <prov:entity prov:id="exc:composition1"/>
- <prov:entity prov:id="exc:chart1"/>
- </prov:document>
- </pre>
- </div>
- <p>
- These statements, in order, refer to the article
- (<code>exn:article</code>),
- an original data set (<code>exg:dataset1</code>),
- a list of regions (<code>exc:regionList</code>),
- data aggregated by region (<code>exc:composition1</code>),
- and a chart (<code>exc: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>
- Notice the different namespace prefixes used: for the article it corresponds to the
- newspaper that published it (<code>exn</code>), and
- for the dataset it is the government namespace (<code>exg</code>).
- The <code>dcterms:title</code> namespace is taken from the Dublin Core
- vocabulary.
- </p>
- <p>
- PROV data is commonly visualized for human consumption using <a href="http://www.w3.org/2011/prov/wiki/Diagrams">particular conventions</a>,
- 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>exc:compile1</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> exc:compile1 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(exc:compile1)
- </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="exc:compile1"/>
- </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>exc:compose1</code>) and then generating the
- chart graphic (<code>exc:illustrate1</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> exc:compose1 a prov:Activity .
- exc:illustrate1 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(exc:compose1)
- activity(exc:illustrate1)
- </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="exc:compose1"/>
- <prov:activity prov:id="exc:illustrate1"/>
- </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>exc:compose1</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> exc:compose1 prov:used exg:dataset1 ;
- prov:used exc:regionList1 .
- exc:composition1 prov:wasGeneratedBy exc:compose1 .
- </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(exc:compose1, exg:dataset1, -)
- used(exc:compose1, exc:regionList1, -)
- wasGeneratedBy(exc:composition1, exc:compose1, -)
- </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="exc:compose1"/>
- <prov:entity prov:ref="exg:dataset1"/>
- </prov:used>
- <prov:used>
- <prov:activity prov:ref="exc:compose1"/>
- <prov:entity prov:ref="exc:regionList1"/>
- </prov:used>
- <prov:wasGeneratedBy>
- <prov:entity prov:ref="exc:composition1"/>
- <prov:activity prov:ref="exc:compose1"/>
- </prov:wasGeneratedBy>
- </prov:document>
- </pre>
- </div>
- <p>
- Similarly, the chart graphic creation activity (<code>exc:illustrate1</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> exc:illustrate1 prov:used exc:composition1 .
- exc:chart1 prov:wasGeneratedBy exc:illustrate1 .
- </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(exc:illustrate1, exc:composition1, -)
- wasGeneratedBy(exc:chart1, exc:illustrate1, -)
- </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="exc:illustrate1"/>
- <prov:entity prov:ref="exc:composition1"/>
- </prov:used>
- <prov:wasGeneratedBy>
- <prov:entity prov:ref="exc:chart1"/>
- <prov:activity prov:ref="exc:illustrate1"/>
- </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> exc:compose1 prov:wasAssociatedWith exc:derek .
- exc:illustrate1 prov:wasAssociatedWith exc: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(exc:compose1, exc:derek, -)
- wasAssociatedWith(exc:illustrate1, exc: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="exc:compose1"/>
- <prov:agent prov:ref="exc:derek"/>
- </prov:wasAssociatedWith>
- <prov:wasAssociatedWith>
- <prov:activity prov:ref="exc:illustrate1"/>
- <prov:agent prov:ref="exc: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> exc: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(exc: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="exc: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. The namespace prefix used by the organization is <code>exc</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> exc:derek prov:actedOnBehalfOf exc:chartgen .
- exc: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(exc:chartgen,
- [prov:type='prov:Organization',
- foaf:name="Chart Generators Inc"])
- actedOnBehalfOf(exc:derek, exc: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="exc:chartgen">
- <prov:type>prov:Organization</prov:type>
- <foaf:name>Chart Generators Inc</foaf:name>
- </prov:agent>
- <prov:actedOnBehalfOf>
- <prov:delegate prov:ref="exc:derek"/>
- <prov:responsible prov:ref="exc: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> exc:chart1 prov:wasAttributedTo exc: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(exc:chart1, exc: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="exc:chart1"/>
- <prov:agent prov:ref="exc: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>exc:compose1</code> used
- entities <code>exc:regionList1</code> and <code>exg:dataset1</code>, but she does not
- know what function these entities played in the processing. Betty
- also knows that <code>exc: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>exc:dataToCompose</code>),
- the regions to aggregate by (<code>exc:regionsToAggregateBy</code>), the
- resulting composed data (<code>exc:composedData</code>), and the
- analyst doing the composition (<code>exc: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> exc:dataToCompose a prov:Role .
- exc:regionsToAggregateBy a prov:Role .
- exc:composedData a prov:Role .
- exc: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> exc:compose1 prov:used exg: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>exc:compose1</code>) included the usage
- of the government data set (<code>exg:dataset1</code>) in the role of the data
- to be composed (<code>exc: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> exc:compose1 prov:qualifiedUsage [
- a prov:Usage ;
- prov:entity exg:dataset1 ;
- prov:hadRole exc: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(exc:compose1, exg:dataset1, -, [prov:role='exc: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="exc:compose1"/>
- <prov:entity prov:ref="exg:dataset1"/>
- <prov:role>exc: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> exc:compose1 prov:qualifiedUsage [
- a prov:Usage ;
- prov:entity exc:regionList1 ;
- prov:hadRole exc: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(exc:compose1, exc:regionList1, -, [prov:role='exc: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="exc:compose1"/>
- <prov:entity prov:ref="exc:regionList1"/>
- <prov:role>exc: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>exc:analyst</code>, and that the entity <code>exc:composition1</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> exc:compose1 prov:qualifiedAssociation [
- a prov:Association ;
- prov:agent exc:derek ;
- prov:hadRole exc:analyst
- ] .
- exc:composition1 prov:qualifiedGeneration [
- a prov:Generation ;
- prov:activity exc:compose1 ;
- prov:hadRole exc: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(exc:compose1, exc:derek, -, [prov:role='exc:analyst'])
- wasGeneratedBy(exc:composition1, exc:compose1, -, [prov:role='exc: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="exc:compose1"/>
- <prov:agent prov:ref="exc:derek"/>
- <prov:role>exc:analyst</prov:role>
- </prov:wasAssociatedWith>
- <prov:wasGeneratedBy>
- <prov:entity prov:ref="exc:composition1"/>
- <prov:activity prov:ref="exc:compose1"/>
- <prov:role>exc: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>exg: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>exg:dataset2</code>, states that it is a revision of the
- old data set, <code>exg: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> exg:dataset2 a prov:Entity ;
- prov:wasRevisionOf exg: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(exg:dataset2)
- wasDerivedFrom(exg:dataset2, exg: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="exg:dataset2"/>
- <prov:usedEntity prov:ref="exg: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> exc:chart2 a prov:Entity ;
- prov:wasDerivedFrom exg: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(exc:chart2, exg: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="exc:chart2"/>
- <prov:usedEntity prov:ref="exg: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> exc:chart2 a prov:Entity ;
- prov:wasRevisionOf exc: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(exc:chart2)
- wasDerivedFrom(exc:chart2, exc: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="exc:chart2"/>
- <prov:usedEntity prov:ref="exc: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>exg: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>exg:correct1</code>), the person who corrected
- it, Edith (<code>exg:edith</code>), and the correction instructions (<code>exg: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> exg:correct1 a prov:Activity .
- exg:edith a prov:Agent, prov:Person .
- exg: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(exg:correct1)
- agent(exg:edith, [prov:type='prov:Person'])
- entity(exg: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="exg:correct1"/>
- <prov:agent prov:id="exg:edith">
- <prov:type>prov:Person</prov:type>
- </prov:agent>
- <prov:entity prov:id="exg: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> exg:correct1 prov:qualifiedAssociation [
- a Association ;
- prov:agent exg:edith ;
- prov:hadPlan exg:instructions
- ] .
- exg:dataset2 prov:wasGeneratedBy exg:correct1 .
- </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(exg:correct1, exg:edith, exg:instructions)
- wasGeneratedBy(exg:dataset2, exg:correct1, -)
- </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="exg:correct1"/>
- <prov:agent prov:ref="exg:edith"/>
- <prov:plan prov:ref="exg:instructions"/>
- </prov:wasAssociatedWith>
- <prov:wasGeneratedBy>
- <prov:entity prov:ref="exg:dataset2"/>
- <prov:activity prov:ref="exg:correct1"/>
- </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> exc:chart1 prov:generatedAtTime "2012-03-02T10:30:00"^^xsd:dateTime .
- exc: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(exc:chart1, exc:compile1, 2012-03-02T10:30:00)
- wasGeneratedBy(exc:chart2, exc: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="exc:chart1"/>
- <prov:time>2012-03-02T10:30:00</prov:time>
- </prov:wasGeneratedBy>
- <prov:wasGeneratedBy>
- <prov:entity prov:ref="exc: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 wishes 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>exg:correct1</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> exg:correct1 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(exg:correct1, 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="exg:correct1">
- <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>exb:quoteInBlogEntry-20130326</code>) is quoted
- from the article. Note the namespace prefix (<code>exb</code>) used for the blog.
- </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> exb:quoteInBlogEntry-20130326 a prov:Entity ;
- prov:value "Smaller cities have more crime than larger ones" ;
- prov:wasQuotedFrom exn: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(exb:quoteInBlogEntry-20130326, prov:value="Smaller cities have more crime than larger ones")
- wasDerivedFrom(exb:quoteInBlogEntry-20130326, exn: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="exb:BlogEntry-20130326">
- <prov:value>Smaller cities have more crime than larger ones</prov:value>
- </prov:entity>
- <prov:wasDerivedFrom>
- <prov:generatedEntity prov:ref="exb:quoteInBlogEntry-20130326"/>
- <prov:usedEntity prov:ref="exn: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>exn:article</code>) as a URI that got redirected to the first version of the article (<code>exn: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> exn:articleV1 a prov:Entity ;
- prov:specializationOf exn: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(exn:articleV1)
- specializationOf(exn:articleV1, exn: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="exn:articleV1"/>
- <prov:specializationOf>
- <prov:specificEntity prov:ref="exn:articleV1"/>
- <prov:generalEntity prov:ref="exn: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>exn:articleV2</code>, with its own URI where the article
- is redirected to. To ensure that those
- consulting the provenance of <code>exn:articleV2</code> understand that it
- is connected with the provenance of <code>exn:article</code> and <code>exn: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> exn:articleV2 prov:specializationOf exn:article .
- exn:articleV2 prov:alternateOf exn: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(exn:articleV2, exn:article)
- alternateOf(exn:articleV2, exn: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="exn:articleV2"/>
- <prov:generalEntity prov:ref="exn:article"/>
- </prov:specializationOf>
- <prov:alternateOf>
- <prov:alternate1 prov:ref="exn:articleV1"/>
- <prov:alternate2 prov:ref="exn:articleV2"/>
- </prov:alternateOf>
- </prov:document>
- </pre>
- </div>
- <p>
- Note that above we could have also
- stated that <code>exn:articleV2</code> was a revision of <code>exn:articleV1</code>,
- as we did between <code>exc:chart2</code> and <code>exc: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="the-complete-example">
- <h3><span class="secno">3.10 </span>The Complete Example</h3>
- <p>
- The full set of examples shown above are available in <a href="primer-turtle-examples.ttl">PROV-O Turtle format</a>
- or <a href="primer-provn-examples.provn">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 id="summary">
- <!--OddPage--><h2><span class="secno">4. </span>Summary</h2>
- <p>The examples in the previous section highlight the following important capabilities of PROV:
- </p>
- <ol>
- <li><b>Representing diverse entities involved in provenance</b>.
- The examples illustrate that provenance records can contain different
- kinds of information:
- <ul>
- <li>The newspaper took an object-centered view on their provenance statements,
- stating what objects were derived from others but not stating what processes
- were used or what entities were involved.</li>
- <li>Betty the blogger took a very agent-centered view on provenance.
- She chose to associate her blog post with herself, the government agency
- that published the data, and the newspaper that published the article.</li>
- <li>Derek took a process-centered perspective and combined it with object-centered
- and agent-centered provenance information. The processes followed to derive the
- charts from the government datasets were clearly. All intermediate and final
- documents were stated. His involvement in the various activities was clearly
- recorded, and the resulting documents were attributed to him.</li>
- </ul></li>
- <li><b>Stating partial or incomplete provenance</b>. The newspaper omitted
- information about their specific editorial processes in publishing articles.
- The chart generator said nothing about the software used, therefore omitting
- information about other agents involved in the processes.</li>
- <li><b>Integrating provenance-related information represented in other vocabularies</b>.
- The FOAF vocabulary was used for specifying details about Derek and his company.
- The Dublin Core vocabulary was used for specifying the article title. </li>
- <li><b>Combining distributed provenance records provided by different parties</b>.
- The provenance records described in this example came from a government source,
- a newspaper, a company, and a blogger. Using URIs and namespaces, a provenance
- record can draw from multiple sources on the Web.</li>
- <li><b>Describing the commonalities in the derivation of two entities</b>.
- The two versions of the charts were both derived through a similar compile activity.</li>
- <li><b>Relating versions of objects over time</b>.
- The second dataset was described as a revision of the first one.</li>
- <li><b>Stating the provenance of provenance assertions</b>.
- Betty could create a provenance record for her blog post, and
- then assert the provenance of that provenance record.</li>
- <li><b>Enabling alternative accounts for the provenance of an entity</b>.
- The blog post could have a provenance account from Betty as its author and another
- one from the newspaper that the blog quoted from.</li>
- <li><b>Supporting queries over provenance of different granularity</b>.
- The activity of composing the data from different regions was described
- in greater detail than the other steps to produce the chart.
- The provenance of the chart has much finer-grained detail than
- the provenance of the government dataset.</li>
- <li><b>Supporting reasoning and inference over provenance records</b>.
- The provenance assertions explicitly stated above can be used to infer
- additional assertions that are true according to the PROV model.
- For example, because Derek created the chart acting on behalf of Chart
- Generators, a PROV inference may be that the chart can be attributed to Chart Generators.</li>
- </ol>
- <p>The examples also illustrate how PROV enables many uses of provenance,
- such as checking for possible errors, tracking down parties responsible for
- fixing them, repeating processes to re-generate datasets, relating versions of
- documents over time, and inspecting sources and attribution.
- </p>
-
- <p>There are additional aspects of the PROV data model that we have not covered
- in this primer and that are important in many uses of provenance. These include
- the following.
- </p>
- <ol>
- <li><b>Provenance of provenance</b>:
- It is often useful to state the provenance of a provenance record.
- To enable this, PROV allows the grouping of provenance assertions as a <i>bundle</i>.
- A bundle is a type of entity, and therefore its provenance can be asserted in turn.
- For example, supposed that Betty wanted to express in the provenance of her blog
- entry that she personally checked her sources. She would want to state the
- provenance of her blog entry, and then state that she stands by that provenance.
- To do this, she would create a bundle that contains provenance assertions for
- her blog entry, and then she would state that she was the creator of that bundle. </li>
- <li><b>Collections of entities</b>:
- A <i>collection</i> in PROV is a type of entity that has other entities as members.
- For example, Derek could decide to create several types of charts using dataset2.
- He would describe all the charts as a collection, and then state the provenance of
- the collection to be a single step that generates all the charts. </li>
- </ol>
- <p>
- Please see the [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>] specification for details on these
- and other concepts.
- </p>
-</section>
-
-<section class="appendix" id="acknowledgements">
- <!--OddPage--><h2><span class="secno">A. </span>Acknowledgements</h2>
- <p>
- This document has been produced by the Provenance Working Group, and its contents reflect extensive discussion within the Working Group as a whole. The editors extend special thanks to Sandro Hawke (<abbr title="World Wide Web Consortium">W3C</abbr>/<abbr title="Massachusetts Institute of Technology">MIT</abbr>) and Ivan Herman (<abbr title="World Wide Web Consortium">W3C</abbr>/<abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr>), <abbr title="World Wide Web Consortium">W3C</abbr> contacts for the Provenance Working Group.
- </p>
- <p>
- The editors acknowledge valuable contributions from the following:
- Tom Baker,
- David Booth,
- Bob DuCharme,
- Robert Freimuth,
- Satrajit Ghosh,
- Ralph Hodgson,
- Renato Iannella,
- Jacek Kopecky,
- James Leigh,
- Chuck Morris,
- Jacco van Ossenbruggen,
- Alan Ruttenberg,
- Reza Samavi, and
- Antoine Zimmermann.
- </p>
- <p>
- Members of the Provenance Working Group at the time of publication of this document were:
-
- Ilkay Altintas (Invited expert),
- Reza B'Far (Oracle Corporation),
- Khalid Belhajjame (University of Manchester),
- James Cheney (University of Edinburgh, School of Informatics),
- Sam Coppens (iMinds - Ghent University),
- David Corsar (University of Aberdeen, Computing Science),
- Stephen Cresswell (The National Archives),
- Tom De Nies (iMinds - Ghent University),
- Helena Deus (DERI Galway at the National University of Ireland, Galway, Ireland),
- Simon Dobson (Invited expert),
- Martin Doerr (Foundation for Research and Technology - Hellas(FORTH)),
- Kai Eckert (Invited expert),
- Jean-Pierre EVAIN (European Broadcasting Union, EBU-UER),
- James Frew (Invited expert),
- Irini Fundulaki (Foundation for Research and Technology - Hellas(FORTH)),
- Daniel Garijo (Universidad Politécnica de Madrid),
- Yolanda Gil (Invited expert),
- Ryan Golden (Oracle Corporation),
- Paul Groth (Vrije Universiteit),
- Olaf Hartig (Invited expert),
- David Hau (National Cancer Institute, NCI),
- Sandro Hawke (<abbr title="World Wide Web Consortium">W3C</abbr>/<abbr title="Massachusetts Institute of Technology">MIT</abbr>),
- Jörn Hees (German Research Center for Artificial Intelligence (DFKI) Gmbh),
- Ivan Herman, (<abbr title="World Wide Web Consortium">W3C</abbr>/<abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr>),
- Ralph Hodgson (TopQuadrant),
- Hook Hua (Invited expert),
- Trung Dong Huynh (University of Southampton),
- Graham Klyne (University of Oxford),
- Michael Lang (Revelytix, Inc.),
- Timothy Lebo (Rensselaer Polytechnic Institute),
- James McCusker (Rensselaer Polytechnic Institute),
- Deborah McGuinness (Rensselaer Polytechnic Institute),
- Simon Miles (Invited expert),
- Paolo Missier (School of Computing Science, Newcastle university),
- Luc Moreau (University of Southampton),
- James Myers (Rensselaer Polytechnic Institute),
- Vinh Nguyen (Wright State University),
- Edoardo Pignotti (University of Aberdeen, Computing Science),
- Paulo da Silva Pinheiro (Rensselaer Polytechnic Institute),
- Carl Reed (Open Geospatial Consortium),
- Adam Retter (Invited Expert),
- Christine Runnegar (Invited expert),
- Satya Sahoo (Invited expert),
- David Schaengold (Revelytix, Inc.),
- Daniel Schutzer (FSTC, Financial Services Technology Consortium),
- Yogesh Simmhan (Invited expert),
- Stian Soiland-Reyes (University of Manchester),
- Eric Stephan (Pacific Northwest National Laboratory),
- Linda Stewart (The National Archives),
- Ed Summers (Library of Congress),
- Maria Theodoridou (Foundation for Research and Technology - Hellas(FORTH)),
- Ted Thibodeau (OpenLink Software Inc.),
- Curt Tilmes (National Aeronautics and Space Administration),
- Craig Trim (IBM Corporation),
- Stephan Zednik (Rensselaer Polytechnic Institute),
- Jun Zhao (University of Oxford),
- Yuting Zhao (University of Aberdeen, Computing Science).
-</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>
- <li>Clarified varying sources of example provenance data with different namespace prefixes,
- and in division of complete example provenance graph</li>
- <li>Used instance-specific identifiers for entities, activities and agents</li>
- <li>Added section summarising some additional aspects of PROV not covered in depth</li>
- <li>Added summary section</li>
- <li>Added proper acknowledgements</li>
- <li>Clarified the introduction regarding what is in each section.</li>
- <li>Added references for FOAF, Dublin Core and newer PROV documents.</li>
- <li>Typos fixed and minor clarifications throughout</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-DCTERMS">[DCTERMS]</dt><dd>Dublin Core Metadata Initiative. <a href="http://dublincore.org/documents/2012/06/14/dcmi-terms/"><cite>DCMI Metadata Terms</cite></a>. 14 June 2012. URL: <a href="http://dublincore.org/documents/2012/06/14/dcmi-terms/">http://dublincore.org/documents/2012/06/14/dcmi-terms/</a>
-</dd><dt id="bib-FOAF">[FOAF]</dt><dd>Dan Brickley, Libby Miller; eds. <a href="http://xmlns.com/foaf/spec/20100809.html"><cite>FOAF Vocabulary Specification 0.98</cite></a>. 9 August 2010. URL: <a href="http://xmlns.com/foaf/spec/20100809.html">http://xmlns.com/foaf/spec/20100809.html</a>
-</dd><dt id="bib-PROV-AQ">[PROV-AQ]</dt><dd>Graham Klyne; Paul Groth; eds. <a href="http://www.w3.org/TR/2013/NOTE-prov-aq-20130430/"><cite>Provenance Access and Query</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-aq-20130430/">http://www.w3.org/TR/2013/NOTE-prov-aq-20130430/</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/REC-prov-constraints-20130430/"><cite>Constraints of the PROV Data Model</cite></a>. 30 April 2013, W3C Recommendation. URL: <a href="http://www.w3.org/TR/2013/REC-prov-constraints-20130430/">http://www.w3.org/TR/2013/REC-prov-constraints-20130430/</a>
-</dd><dt id="bib-PROV-DC">[PROV-DC]</dt><dd>Daniel Garijo; Kai Eckert; eds. <a href="http://www.w3.org/TR/2013/NOTE-prov-dc-20130430/"><cite>Dublin Core to PROV Mapping</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-dc-20130430/">http://www.w3.org/TR/2013/NOTE-prov-dc-20130430/</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/NOTE-prov-dictionary-20130430/"><cite>PROV Dictionary</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-dictionary-20130430/">http://www.w3.org/TR/2013/NOTE-prov-dictionary-20130430/</a>
-</dd><dt id="bib-PROV-DM">[PROV-DM]</dt><dd>Luc Moreau; Paolo Missier; eds. <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/"><cite>PROV-DM: The PROV Data Model</cite></a>. 30 April 2013, W3C Recommendation. URL: <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/">http://www.w3.org/TR/2013/REC-prov-dm-20130430/</a>
-</dd><dt id="bib-PROV-LINKS">[PROV-LINKS]</dt><dd>Luc Moreau; Timothy Lebo; eds. <a href="http://www.w3.org/TR/2013/NOTE-prov-links-20130430/"><cite>Linking Across Provenance Bundles</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-links-20130430/">http://www.w3.org/TR/2013/NOTE-prov-links-20130430/</a>
-</dd><dt id="bib-PROV-N">[PROV-N]</dt><dd>Luc Moreau; Paolo Missier; eds. <a href="http://www.w3.org/TR/2013/REC-prov-n-20130430/"><cite>PROV-N: The Provenance Notation</cite></a>. 30 April 2013, W3C Recommendation. URL: <a href="http://www.w3.org/TR/2013/REC-prov-n-20130430/">http://www.w3.org/TR/2013/REC-prov-n-20130430/</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/REC-prov-o-20130430/"><cite>PROV-O: The PROV Ontology</cite></a>. 30 April 2013, W3C Recommendation. URL: <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/">http://www.w3.org/TR/2013/REC-prov-o-20130430/</a>
-</dd><dt id="bib-PROV-OVERVIEW">[PROV-OVERVIEW]</dt><dd>Paul Groth; Luc Moreau; eds. <a href="http://www.w3.org/TR/2013/NOTE-prov-overview-20130430/"><cite>PROV-OVERVIEW: An Overview of the PROV Family of Documents</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-overview-20130430/">http://www.w3.org/TR/2013/NOTE-prov-overview-20130430/</a>
-</dd><dt id="bib-PROV-SEM">[PROV-SEM]</dt><dd>James Cheney; ed. <a href="http://www.w3.org/TR/2013/NOTE-prov-sem-20130430"><cite>Semantics of the PROV Data Model</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-sem-20130430">http://www.w3.org/TR/2013/NOTE-prov-sem-20130430</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/NOTE-prov-xml-20130430/"><cite>PROV-XML: The PROV XML Schema</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-xml-20130430/">http://www.w3.org/TR/2013/NOTE-prov-xml-20130430/</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-20101214/"><cite>Provenance XG Final Report</cite></a>. 8 December 2010. URL: <a href="http://www.w3.org/2005/Incubator/prov/XGR-prov-20101214/">http://www.w3.org/2005/Incubator/prov/XGR-prov-20101214/</a>
-</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd>Eric Prud'hommeaux, Gavin Carothers; eds. <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>
+<!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>/*****************************************************************
+ * 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="http://www.w3.org/StyleSheets/TR/W3C-WG-NOTE"><!--[if lt IE 9]><script src='http://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="http://www.w3.org/Icons/w3c_home" alt="W3C"></a>
+
+ </p>
+ <h1 class="title" id="title">PROV Model Primer</h1>
+
+ <h2 id="w3c-working-group-note-30-april-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Working Group Note 30 April 2013</h2>
+ <dl>
+
+ <dt>This version:</dt>
+ <dd><a href="http://www.w3.org/TR/2013/NOTE-prov-primer-20130430/">http://www.w3.org/TR/2013/NOTE-prov-primer-20130430/</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>Previous version:</dt>
+ <dd><a href="http://www.w3.org/TR/2013/WD-prov-primer-20130312/">http://www.w3.org/TR/2013/WD-prov-primer-20130312/</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>Contributors:</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>, Ontology Engineering Group, Universidad Politécnica de Madrid, Spain</dd>
+<dd><span>Graham Klyne</span>, University of Oxford</dd>
+<dd><span><a href="http://www.ncl.ac.uk/computing/people/profile/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 Data Model for provenance interchange on the web. PROV defines 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/2013/NOTE-prov-overview-20130430/">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/NOTE-prov-overview-20130430/">PROV-OVERVIEW</a> (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/NOTE-prov-primer-20130430/">PROV-PRIMER</a> (Note), a primer for the PROV data model (this document);</li>
+ <li> <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/">PROV-O</a> (Recommendation), the PROV ontology, an OWL2 ontology allowing the mapping of the PROV data model to RDF [<cite><a class="bibref" href="#bib-PROV-O">PROV-O</a></cite>];</li>
+ <li> <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/">PROV-DM</a> (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/REC-prov-n-20130430/">PROV-N</a> (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/REC-prov-constraints-20130430/">PROV-CONSTRAINTS</a> (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/NOTE-prov-xml-20130430/">PROV-XML</a> (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/NOTE-prov-aq-20130430/">PROV-AQ</a> (Note), 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/NOTE-prov-dictionary-20130430/">PROV-DICTIONARY</a> (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/NOTE-prov-dc-20130430/">PROV-DC</a> (Note) provides a mapping between PROV-O and Dublin Core Terms [<cite><a class="bibref" href="#bib-PROV-DC">PROV-DC</a></cite>];</li>
+ <li> <a href="http://www.w3.org/TR/2013/NOTE-prov-sem-20130430/">PROV-SEM</a> (Note), a declarative specification in terms of first-order logic of the PROV data model [<cite><a class="bibref" href="#bib-PROV-SEM">PROV-SEM</a></cite>];</li>
+ <li> <a href="http://www.w3.org/TR/2013/NOTE-prov-links-20130430/">PROV-LINKS</a> (Note) introduces a mechanism to link across bundles [<cite><a class="bibref" href="#bib-PROV-LINKS">PROV-LINKS</a></cite>].</li>
+ </ul>
+
+ <h4 id="implementations-encouraged">Implementations Encouraged</h4>
+ <p>
+ The Provenance Working Group encourages implementation of the material defined in this document.
+ Although work on this document by the Provenance Working Group is complete,
+ errors may be recorded in the <a href="http://www.w3.org/2011/prov/errata.html">errata</a> or and these may be addressed in future revisions.
+ </p>
+
+ <h4 id="please-send-comments">Please Send Comments</h4>
+
+
+ <p>
+ This document was published by the <a href="http://www.w3.org/2011/prov/">Provenance Working Group</a> as a Working Group Note.
+
+
+ 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 Group Note 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>.
+
+
+
+
+ <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="#the-complete-example" class="tocxref"><span class="secno">3.10 </span>The Complete Example</a></li></ul></li><li class="tocline"><a href="#summary" class="tocxref"><span class="secno">4. </span>Summary</a></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
+ data model for provenance interchange on the Web.
+ The <i>provenance</i> of digital objects represents their origins. PROV is a
+ 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.
+ 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 judgements 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 people or organizations
+ 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 are
+ 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>A high-level explanation of how PROV models provenance, in Section 2. 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, in
+ Section 3.
+ The example includes snippets in RDF using the PROV ontology [<cite><a class="bibref" href="#bib-PROV-O">PROV-O</a></cite>], in a
+ notation designed for human consumption [<cite><a class="bibref" href="#bib-PROV-N">PROV-N</a></cite>], and in PROV's XML format [<cite><a class="bibref" href="#bib-PROV-XML">PROV-XML</a></cite>].
+ The example shows how
+ to combine PROV with other popular vocabularies such as FOAF [<cite><a class="bibref" href="#bib-FOAF">FOAF</a></cite>] and Dublin Core [<cite><a class="bibref" href="#bib-DCTERMS">DCTERMS</a></cite>].</li>
+ </ul>
+
+ <p>The document ends with a summary of major capabilities and features of PROV.</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 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 followed.
+ </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 responsibility 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 kind of derivation is to say that one entity, a quotation, <i>was quoted from</i>
+ another entity, commonly a document.
+ </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.
+ </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
+ the reader had quoted from the version before the change. From the author's perspective,
+ there is a single article, attributed to the author. If the author, the reader, or a
+ third party, were to connect the two PROV records, that party 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 prefixes <b>exc</b>, <b>exn</b>, <b>exb</b>, <b>exg</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 [<cite><a class="bibref" href="#bib-FOAF">FOAF</a></cite>] and Dublin Core [<cite><a class="bibref" href="#bib-DCTERMS">DCTERMS</a></cite>] (with namespace prefix <b>foaf</b> and
+ <b>dcterms</b> respectively).
+ </p>
+ <p>
+ The scenario describes a blogger exploring the provenance of an online newspaper
+ article, including a chart produced from a government agency dataset. The
+ provenance data comes from different sources: the blogger, the newspaper,
+ the chart generator company and the government agency. The samples of provenance from each source
+ use a different namespace prefix for identifiers that source has
+ created: <b>exb</b>, <b>exn</b>, <b>exc</b>, and <b>exg</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
+ based on data (GovData) provided by 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> exn:article a prov:Entity ;
+ dcterms:title "Crime rises in cities" .
+ exg:dataset1 a prov:Entity .
+ exc:regionList a prov:Entity .
+ exc:composition1 a prov:Entity .
+ exc: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(exn:article, [dcterms:title="Crime rises in cities"])
+ entity(exg:dataset1)
+ entity(exc:regionList)
+ entity(exc:composition1)
+ entity(exc: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="exn:article">
+ <dct:title>Crime rises in cities</dct:title>
+ </prov:entity>
+ <prov:entity prov:id="exg:dataset1"/>
+ <prov:entity prov:id="exc:regionList1"/>
+ <prov:entity prov:id="exc:composition1"/>
+ <prov:entity prov:id="exc:chart1"/>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ These statements, in order, refer to the article
+ (<code>exn:article</code>),
+ an original data set (<code>exg:dataset1</code>),
+ a list of regions (<code>exc:regionList</code>),
+ data aggregated by region (<code>exc:composition1</code>),
+ and a chart (<code>exc: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>
+ Notice the different namespace prefixes used: for the article it corresponds to the
+ newspaper that published it (<code>exn</code>), and
+ for the dataset it is the government namespace (<code>exg</code>).
+ The <code>dcterms:title</code> namespace is taken from the Dublin Core
+ vocabulary.
+ </p>
+ <p>
+ PROV data is commonly visualized for human consumption using <a href="http://www.w3.org/2011/prov/wiki/Diagrams">particular conventions</a>,
+ 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>exc:compile1</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> exc:compile1 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(exc:compile1)
+ </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="exc:compile1"/>
+ </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>exc:compose1</code>) and then generating the
+ chart graphic (<code>exc:illustrate1</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> exc:compose1 a prov:Activity .
+ exc:illustrate1 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(exc:compose1)
+ activity(exc:illustrate1)
+ </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="exc:compose1"/>
+ <prov:activity prov:id="exc:illustrate1"/>
+ </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>exc:compose1</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> exc:compose1 prov:used exg:dataset1 ;
+ prov:used exc:regionList1 .
+ exc:composition1 prov:wasGeneratedBy exc:compose1 .
+ </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(exc:compose1, exg:dataset1, -)
+ used(exc:compose1, exc:regionList1, -)
+ wasGeneratedBy(exc:composition1, exc:compose1, -)
+ </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="exc:compose1"/>
+ <prov:entity prov:ref="exg:dataset1"/>
+ </prov:used>
+ <prov:used>
+ <prov:activity prov:ref="exc:compose1"/>
+ <prov:entity prov:ref="exc:regionList1"/>
+ </prov:used>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="exc:composition1"/>
+ <prov:activity prov:ref="exc:compose1"/>
+ </prov:wasGeneratedBy>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Similarly, the chart graphic creation activity (<code>exc:illustrate1</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> exc:illustrate1 prov:used exc:composition1 .
+ exc:chart1 prov:wasGeneratedBy exc:illustrate1 .
+ </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(exc:illustrate1, exc:composition1, -)
+ wasGeneratedBy(exc:chart1, exc:illustrate1, -)
+ </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="exc:illustrate1"/>
+ <prov:entity prov:ref="exc:composition1"/>
+ </prov:used>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="exc:chart1"/>
+ <prov:activity prov:ref="exc:illustrate1"/>
+ </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> exc:compose1 prov:wasAssociatedWith exc:derek .
+ exc:illustrate1 prov:wasAssociatedWith exc: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(exc:compose1, exc:derek, -)
+ wasAssociatedWith(exc:illustrate1, exc: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="exc:compose1"/>
+ <prov:agent prov:ref="exc:derek"/>
+ </prov:wasAssociatedWith>
+ <prov:wasAssociatedWith>
+ <prov:activity prov:ref="exc:illustrate1"/>
+ <prov:agent prov:ref="exc: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> exc: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(exc: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="exc: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. The namespace prefix used by the organization is <code>exc</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> exc:derek prov:actedOnBehalfOf exc:chartgen .
+ exc: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(exc:chartgen,
+ [prov:type='prov:Organization',
+ foaf:name="Chart Generators Inc"])
+ actedOnBehalfOf(exc:derek, exc: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="exc:chartgen">
+ <prov:type>prov:Organization</prov:type>
+ <foaf:name>Chart Generators Inc</foaf:name>
+ </prov:agent>
+ <prov:actedOnBehalfOf>
+ <prov:delegate prov:ref="exc:derek"/>
+ <prov:responsible prov:ref="exc: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> exc:chart1 prov:wasAttributedTo exc: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(exc:chart1, exc: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="exc:chart1"/>
+ <prov:agent prov:ref="exc: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>exc:compose1</code> used
+ entities <code>exc:regionList1</code> and <code>exg:dataset1</code>, but she does not
+ know what function these entities played in the processing. Betty
+ also knows that <code>exc: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>exc:dataToCompose</code>),
+ the regions to aggregate by (<code>exc:regionsToAggregateBy</code>), the
+ resulting composed data (<code>exc:composedData</code>), and the
+ analyst doing the composition (<code>exc: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> exc:dataToCompose a prov:Role .
+ exc:regionsToAggregateBy a prov:Role .
+ exc:composedData a prov:Role .
+ exc: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> exc:compose1 prov:used exg: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>exc:compose1</code>) included the usage
+ of the government data set (<code>exg:dataset1</code>) in the role of the data
+ to be composed (<code>exc: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> exc:compose1 prov:qualifiedUsage [
+ a prov:Usage ;
+ prov:entity exg:dataset1 ;
+ prov:hadRole exc: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(exc:compose1, exg:dataset1, -, [prov:role='exc: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="exc:compose1"/>
+ <prov:entity prov:ref="exg:dataset1"/>
+ <prov:role>exc: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> exc:compose1 prov:qualifiedUsage [
+ a prov:Usage ;
+ prov:entity exc:regionList1 ;
+ prov:hadRole exc: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(exc:compose1, exc:regionList1, -, [prov:role='exc: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="exc:compose1"/>
+ <prov:entity prov:ref="exc:regionList1"/>
+ <prov:role>exc: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>exc:analyst</code>, and that the entity <code>exc:composition1</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> exc:compose1 prov:qualifiedAssociation [
+ a prov:Association ;
+ prov:agent exc:derek ;
+ prov:hadRole exc:analyst
+ ] .
+ exc:composition1 prov:qualifiedGeneration [
+ a prov:Generation ;
+ prov:activity exc:compose1 ;
+ prov:hadRole exc: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(exc:compose1, exc:derek, -, [prov:role='exc:analyst'])
+ wasGeneratedBy(exc:composition1, exc:compose1, -, [prov:role='exc: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="exc:compose1"/>
+ <prov:agent prov:ref="exc:derek"/>
+ <prov:role>exc:analyst</prov:role>
+ </prov:wasAssociatedWith>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="exc:composition1"/>
+ <prov:activity prov:ref="exc:compose1"/>
+ <prov:role>exc: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>exg: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>exg:dataset2</code>, states that it is a revision of the
+ old data set, <code>exg: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> exg:dataset2 a prov:Entity ;
+ prov:wasRevisionOf exg: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(exg:dataset2)
+ wasDerivedFrom(exg:dataset2, exg: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="exg:dataset2"/>
+ <prov:usedEntity prov:ref="exg: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> exc:chart2 a prov:Entity ;
+ prov:wasDerivedFrom exg: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(exc:chart2, exg: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="exc:chart2"/>
+ <prov:usedEntity prov:ref="exg: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> exc:chart2 a prov:Entity ;
+ prov:wasRevisionOf exc: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(exc:chart2)
+ wasDerivedFrom(exc:chart2, exc: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="exc:chart2"/>
+ <prov:usedEntity prov:ref="exc: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>exg: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>exg:correct1</code>), the person who corrected
+ it, Edith (<code>exg:edith</code>), and the correction instructions (<code>exg: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> exg:correct1 a prov:Activity .
+ exg:edith a prov:Agent, prov:Person .
+ exg: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(exg:correct1)
+ agent(exg:edith, [prov:type='prov:Person'])
+ entity(exg: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="exg:correct1"/>
+ <prov:agent prov:id="exg:edith">
+ <prov:type>prov:Person</prov:type>
+ </prov:agent>
+ <prov:entity prov:id="exg: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> exg:correct1 prov:qualifiedAssociation [
+ a Association ;
+ prov:agent exg:edith ;
+ prov:hadPlan exg:instructions
+ ] .
+ exg:dataset2 prov:wasGeneratedBy exg:correct1 .
+ </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(exg:correct1, exg:edith, exg:instructions)
+ wasGeneratedBy(exg:dataset2, exg:correct1, -)
+ </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="exg:correct1"/>
+ <prov:agent prov:ref="exg:edith"/>
+ <prov:plan prov:ref="exg:instructions"/>
+ </prov:wasAssociatedWith>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="exg:dataset2"/>
+ <prov:activity prov:ref="exg:correct1"/>
+ </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> exc:chart1 prov:generatedAtTime "2012-03-02T10:30:00"^^xsd:dateTime .
+ exc: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(exc:chart1, exc:compile1, 2012-03-02T10:30:00)
+ wasGeneratedBy(exc:chart2, exc: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="exc:chart1"/>
+ <prov:time>2012-03-02T10:30:00</prov:time>
+ </prov:wasGeneratedBy>
+ <prov:wasGeneratedBy>
+ <prov:entity prov:ref="exc: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 wishes 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>exg:correct1</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> exg:correct1 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(exg:correct1, 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="exg:correct1">
+ <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>exb:quoteInBlogEntry-20130326</code>) is quoted
+ from the article. Note the namespace prefix (<code>exb</code>) used for the blog.
+ </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> exb:quoteInBlogEntry-20130326 a prov:Entity ;
+ prov:value "Smaller cities have more crime than larger ones" ;
+ prov:wasQuotedFrom exn: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(exb:quoteInBlogEntry-20130326, prov:value="Smaller cities have more crime than larger ones")
+ wasDerivedFrom(exb:quoteInBlogEntry-20130326, exn: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="exb:BlogEntry-20130326">
+ <prov:value>Smaller cities have more crime than larger ones</prov:value>
+ </prov:entity>
+ <prov:wasDerivedFrom>
+ <prov:generatedEntity prov:ref="exb:quoteInBlogEntry-20130326"/>
+ <prov:usedEntity prov:ref="exn: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>exn:article</code>) as a URI that got redirected to the first version of the article (<code>exn: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> exn:articleV1 a prov:Entity ;
+ prov:specializationOf exn: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(exn:articleV1)
+ specializationOf(exn:articleV1, exn: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="exn:articleV1"/>
+ <prov:specializationOf>
+ <prov:specificEntity prov:ref="exn:articleV1"/>
+ <prov:generalEntity prov:ref="exn: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>exn:articleV2</code>, with its own URI where the article
+ is redirected to. To ensure that those
+ consulting the provenance of <code>exn:articleV2</code> understand that it
+ is connected with the provenance of <code>exn:article</code> and <code>exn: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> exn:articleV2 prov:specializationOf exn:article .
+ exn:articleV2 prov:alternateOf exn: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(exn:articleV2, exn:article)
+ alternateOf(exn:articleV2, exn: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="exn:articleV2"/>
+ <prov:generalEntity prov:ref="exn:article"/>
+ </prov:specializationOf>
+ <prov:alternateOf>
+ <prov:alternate1 prov:ref="exn:articleV1"/>
+ <prov:alternate2 prov:ref="exn:articleV2"/>
+ </prov:alternateOf>
+ </prov:document>
+ </pre>
+ </div>
+ <p>
+ Note that above we could have also
+ stated that <code>exn:articleV2</code> was a revision of <code>exn:articleV1</code>,
+ as we did between <code>exc:chart2</code> and <code>exc: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="the-complete-example">
+ <h3><span class="secno">3.10 </span>The Complete Example</h3>
+ <p>
+ The full set of examples shown above are available in <a href="primer-turtle-examples.ttl">PROV-O Turtle format</a>
+ or <a href="primer-provn-examples.provn">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 id="summary">
+ <!--OddPage--><h2><span class="secno">4. </span>Summary</h2>
+ <p>The examples in the previous section highlight the following important capabilities of PROV:
+ </p>
+ <ol>
+ <li><b>Representing diverse entities involved in provenance</b>.
+ The examples illustrate that provenance records can contain different
+ kinds of information:
+ <ul>
+ <li>The newspaper took an object-centered view on their provenance statements,
+ stating what objects were derived from others but not stating what processes
+ were used or what entities were involved.</li>
+ <li>Betty the blogger took a very agent-centered view on provenance.
+ She chose to associate her blog post with herself, the government agency
+ that published the data, and the newspaper that published the article.</li>
+ <li>Derek took a process-centered perspective and combined it with object-centered
+ and agent-centered provenance information. The processes followed to derive the
+ charts from the government datasets were clearly. All intermediate and final
+ documents were stated. His involvement in the various activities was clearly
+ recorded, and the resulting documents were attributed to him.</li>
+ </ul></li>
+ <li><b>Stating partial or incomplete provenance</b>. The newspaper omitted
+ information about their specific editorial processes in publishing articles.
+ The chart generator said nothing about the software used, therefore omitting
+ information about other agents involved in the processes.</li>
+ <li><b>Integrating provenance-related information represented in other vocabularies</b>.
+ The FOAF vocabulary was used for specifying details about Derek and his company.
+ The Dublin Core vocabulary was used for specifying the article title. </li>
+ <li><b>Combining distributed provenance records provided by different parties</b>.
+ The provenance records described in this example came from a government source,
+ a newspaper, a company, and a blogger. Using URIs and namespaces, a provenance
+ record can draw from multiple sources on the Web.</li>
+ <li><b>Describing the commonalities in the derivation of two entities</b>.
+ The two versions of the charts were both derived through a similar compile activity.</li>
+ <li><b>Relating versions of objects over time</b>.
+ The second dataset was described as a revision of the first one.</li>
+ <li><b>Stating the provenance of provenance assertions</b>.
+ Betty could create a provenance record for her blog post, and
+ then assert the provenance of that provenance record.</li>
+ <li><b>Enabling alternative accounts for the provenance of an entity</b>.
+ The blog post could have a provenance account from Betty as its author and another
+ one from the newspaper that the blog quoted from.</li>
+ <li><b>Supporting queries over provenance of different granularity</b>.
+ The activity of composing the data from different regions was described
+ in greater detail than the other steps to produce the chart.
+ The provenance of the chart has much finer-grained detail than
+ the provenance of the government dataset.</li>
+ <li><b>Supporting reasoning and inference over provenance records</b>.
+ The provenance assertions explicitly stated above can be used to infer
+ additional assertions that are true according to the PROV model.
+ For example, because Derek created the chart acting on behalf of Chart
+ Generators, a PROV inference may be that the chart can be attributed to Chart Generators.</li>
+ </ol>
+ <p>The examples also illustrate how PROV enables many uses of provenance,
+ such as checking for possible errors, tracking down parties responsible for
+ fixing them, repeating processes to re-generate datasets, relating versions of
+ documents over time, and inspecting sources and attribution.
+ </p>
+
+ <p>There are additional aspects of the PROV data model that we have not covered
+ in this primer and that are important in many uses of provenance. These include
+ the following.
+ </p>
+ <ol>
+ <li><b>Provenance of provenance</b>:
+ It is often useful to state the provenance of a provenance record.
+ To enable this, PROV allows the grouping of provenance assertions as a <i>bundle</i>.
+ A bundle is a type of entity, and therefore its provenance can be asserted in turn.
+ For example, supposed that Betty wanted to express in the provenance of her blog
+ entry that she personally checked her sources. She would want to state the
+ provenance of her blog entry, and then state that she stands by that provenance.
+ To do this, she would create a bundle that contains provenance assertions for
+ her blog entry, and then she would state that she was the creator of that bundle. </li>
+ <li><b>Collections of entities</b>:
+ A <i>collection</i> in PROV is a type of entity that has other entities as members.
+ For example, Derek could decide to create several types of charts using dataset2.
+ He would describe all the charts as a collection, and then state the provenance of
+ the collection to be a single step that generates all the charts. </li>
+ </ol>
+ <p>
+ Please see the [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>] specification for details on these
+ and other concepts.
+ </p>
+</section>
+
+<section class="appendix" id="acknowledgements">
+ <!--OddPage--><h2><span class="secno">A. </span>Acknowledgements</h2>
+ <p>
+ This document has been produced by the Provenance Working Group, and its contents reflect extensive discussion within the Working Group as a whole. The editors extend special thanks to Sandro Hawke (<abbr title="World Wide Web Consortium">W3C</abbr>/<abbr title="Massachusetts Institute of Technology">MIT</abbr>) and Ivan Herman (<abbr title="World Wide Web Consortium">W3C</abbr>/<abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr>), <abbr title="World Wide Web Consortium">W3C</abbr> contacts for the Provenance Working Group.
+ </p>
+ <p>
+ The editors acknowledge valuable contributions from the following:
+ Tom Baker,
+ David Booth,
+ Bob DuCharme,
+ Robert Freimuth,
+ Satrajit Ghosh,
+ Ralph Hodgson,
+ Renato Iannella,
+ Jacek Kopecky,
+ James Leigh,
+ Chuck Morris,
+ Jacco van Ossenbruggen,
+ Alan Ruttenberg,
+ Reza Samavi, and
+ Antoine Zimmermann.
+ </p>
+ <p>
+ Members of the Provenance Working Group at the time of publication of this document were:
+
+ Ilkay Altintas (Invited expert),
+ Reza B'Far (Oracle Corporation),
+ Khalid Belhajjame (University of Manchester),
+ James Cheney (University of Edinburgh, School of Informatics),
+ Sam Coppens (iMinds - Ghent University),
+ David Corsar (University of Aberdeen, Computing Science),
+ Stephen Cresswell (The National Archives),
+ Tom De Nies (iMinds - Ghent University),
+ Helena Deus (DERI Galway at the National University of Ireland, Galway, Ireland),
+ Simon Dobson (Invited expert),
+ Martin Doerr (Foundation for Research and Technology - Hellas(FORTH)),
+ Kai Eckert (Invited expert),
+ Jean-Pierre EVAIN (European Broadcasting Union, EBU-UER),
+ James Frew (Invited expert),
+ Irini Fundulaki (Foundation for Research and Technology - Hellas(FORTH)),
+ Daniel Garijo (Universidad Politécnica de Madrid),
+ Yolanda Gil (Invited expert),
+ Ryan Golden (Oracle Corporation),
+ Paul Groth (Vrije Universiteit),
+ Olaf Hartig (Invited expert),
+ David Hau (National Cancer Institute, NCI),
+ Sandro Hawke (<abbr title="World Wide Web Consortium">W3C</abbr>/<abbr title="Massachusetts Institute of Technology">MIT</abbr>),
+ Jörn Hees (German Research Center for Artificial Intelligence (DFKI) Gmbh),
+ Ivan Herman, (<abbr title="World Wide Web Consortium">W3C</abbr>/<abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr>),
+ Ralph Hodgson (TopQuadrant),
+ Hook Hua (Invited expert),
+ Trung Dong Huynh (University of Southampton),
+ Graham Klyne (University of Oxford),
+ Michael Lang (Revelytix, Inc.),
+ Timothy Lebo (Rensselaer Polytechnic Institute),
+ James McCusker (Rensselaer Polytechnic Institute),
+ Deborah McGuinness (Rensselaer Polytechnic Institute),
+ Simon Miles (Invited expert),
+ Paolo Missier (School of Computing Science, Newcastle university),
+ Luc Moreau (University of Southampton),
+ James Myers (Rensselaer Polytechnic Institute),
+ Vinh Nguyen (Wright State University),
+ Edoardo Pignotti (University of Aberdeen, Computing Science),
+ Paulo da Silva Pinheiro (Rensselaer Polytechnic Institute),
+ Carl Reed (Open Geospatial Consortium),
+ Adam Retter (Invited Expert),
+ Christine Runnegar (Invited expert),
+ Satya Sahoo (Invited expert),
+ David Schaengold (Revelytix, Inc.),
+ Daniel Schutzer (FSTC, Financial Services Technology Consortium),
+ Yogesh Simmhan (Invited expert),
+ Stian Soiland-Reyes (University of Manchester),
+ Eric Stephan (Pacific Northwest National Laboratory),
+ Linda Stewart (The National Archives),
+ Ed Summers (Library of Congress),
+ Maria Theodoridou (Foundation for Research and Technology - Hellas(FORTH)),
+ Ted Thibodeau (OpenLink Software Inc.),
+ Curt Tilmes (National Aeronautics and Space Administration),
+ Craig Trim (IBM Corporation),
+ Stephan Zednik (Rensselaer Polytechnic Institute),
+ Jun Zhao (University of Oxford),
+ Yuting Zhao (University of Aberdeen, Computing Science).
+</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>
+ <li>Clarified varying sources of example provenance data with different namespace prefixes,
+ and in division of complete example provenance graph</li>
+ <li>Used instance-specific identifiers for entities, activities and agents</li>
+ <li>Added section summarising some additional aspects of PROV not covered in depth</li>
+ <li>Added summary section</li>
+ <li>Added proper acknowledgements</li>
+ <li>Clarified the introduction regarding what is in each section.</li>
+ <li>Added references for FOAF, Dublin Core and newer PROV documents.</li>
+ <li>Typos fixed and minor clarifications throughout</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-DCTERMS">[DCTERMS]</dt><dd>Dublin Core Metadata Initiative. <a href="http://dublincore.org/documents/2012/06/14/dcmi-terms/"><cite>DCMI Metadata Terms</cite></a>. 14 June 2012. URL: <a href="http://dublincore.org/documents/2012/06/14/dcmi-terms/">http://dublincore.org/documents/2012/06/14/dcmi-terms/</a>
+</dd><dt id="bib-FOAF">[FOAF]</dt><dd>Dan Brickley, Libby Miller; eds. <a href="http://xmlns.com/foaf/spec/20100809.html"><cite>FOAF Vocabulary Specification 0.98</cite></a>. 9 August 2010. URL: <a href="http://xmlns.com/foaf/spec/20100809.html">http://xmlns.com/foaf/spec/20100809.html</a>
+</dd><dt id="bib-PROV-AQ">[PROV-AQ]</dt><dd>Graham Klyne; Paul Groth; eds. <a href="http://www.w3.org/TR/2013/NOTE-prov-aq-20130430/"><cite>Provenance Access and Query</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-aq-20130430/">http://www.w3.org/TR/2013/NOTE-prov-aq-20130430/</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/REC-prov-constraints-20130430/"><cite>Constraints of the PROV Data Model</cite></a>. 30 April 2013, W3C Recommendation. URL: <a href="http://www.w3.org/TR/2013/REC-prov-constraints-20130430/">http://www.w3.org/TR/2013/REC-prov-constraints-20130430/</a>
+</dd><dt id="bib-PROV-DC">[PROV-DC]</dt><dd>Daniel Garijo; Kai Eckert; eds. <a href="http://www.w3.org/TR/2013/NOTE-prov-dc-20130430/"><cite>Dublin Core to PROV Mapping</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-dc-20130430/">http://www.w3.org/TR/2013/NOTE-prov-dc-20130430/</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/NOTE-prov-dictionary-20130430/"><cite>PROV Dictionary: Modeling Provenance for Dictionary Data Structures</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-dictionary-20130430/">http://www.w3.org/TR/2013/NOTE-prov-dictionary-20130430/</a>
+</dd><dt id="bib-PROV-DM">[PROV-DM]</dt><dd>Luc Moreau; Paolo Missier; eds. <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/"><cite>PROV-DM: The PROV Data Model</cite></a>. 30 April 2013, W3C Recommendation. URL: <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/">http://www.w3.org/TR/2013/REC-prov-dm-20130430/</a>
+</dd><dt id="bib-PROV-LINKS">[PROV-LINKS]</dt><dd>Luc Moreau; Timothy Lebo; eds. <a href="http://www.w3.org/TR/2013/NOTE-prov-links-20130430/"><cite>Linking Across Provenance Bundles</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-links-20130430/">http://www.w3.org/TR/2013/NOTE-prov-links-20130430/</a>
+</dd><dt id="bib-PROV-N">[PROV-N]</dt><dd>Luc Moreau; Paolo Missier; eds. <a href="http://www.w3.org/TR/2013/REC-prov-n-20130430/"><cite>PROV-N: The Provenance Notation</cite></a>. 30 April 2013, W3C Recommendation. URL: <a href="http://www.w3.org/TR/2013/REC-prov-n-20130430/">http://www.w3.org/TR/2013/REC-prov-n-20130430/</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/REC-prov-o-20130430/"><cite>PROV-O: The PROV Ontology</cite></a>. 30 April 2013, W3C Recommendation. URL: <a href="http://www.w3.org/TR/2013/REC-prov-o-20130430/">http://www.w3.org/TR/2013/REC-prov-o-20130430/</a>
+</dd><dt id="bib-PROV-OVERVIEW">[PROV-OVERVIEW]</dt><dd>Paul Groth; Luc Moreau; eds. <a href="http://www.w3.org/TR/2013/NOTE-prov-overview-20130430/"><cite>PROV-OVERVIEW: An Overview of the PROV Family of Documents</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-overview-20130430/">http://www.w3.org/TR/2013/NOTE-prov-overview-20130430/</a>
+</dd><dt id="bib-PROV-SEM">[PROV-SEM]</dt><dd>James Cheney; ed. <a href="http://www.w3.org/TR/2013/NOTE-prov-sem-20130430"><cite>Semantics of the PROV Data Model</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-sem-20130430">http://www.w3.org/TR/2013/NOTE-prov-sem-20130430</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/NOTE-prov-xml-20130430/"><cite>PROV-XML: The PROV XML Schema</cite></a>. 30 April 2013, W3C Note. URL: <a href="http://www.w3.org/TR/2013/NOTE-prov-xml-20130430/">http://www.w3.org/TR/2013/NOTE-prov-xml-20130430/</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-20101214/"><cite>Provenance XG Final Report</cite></a>. 8 December 2010. URL: <a href="http://www.w3.org/2005/Incubator/prov/XGR-prov-20101214/">http://www.w3.org/2005/Incubator/prov/XGR-prov-20101214/</a>
+</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd>Eric Prud'hommeaux, Gavin Carothers; eds. <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