CINXE.COM

PROV-N: The Provenance Notation

<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <title>PROV-N: The Provenance Notation</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="http://www.w3.org/ns/prov#has_provenance" href="https://www.w3.org/2011/prov/provenance/prov-n"> <style type="text/css"> .note { font-size:small; margin-left:50px } table.thinborder { border-width: 1px; border-spacing: 0px; border-style: none; border-color: gray; border-collapse: collapse; } table.thinborder th { border-width: 1px; padding: 0px; border-style: solid; border-color: gray; } table.thinborder td { border-width: 1px; padding: 2px; border-style: solid; border-color: gray; } </style> <style type="text/css"> /***************************************************************** * ReSpec CSS * Robin Berjon (robin at berjon dot com) * v0.05 - 2009-07-31 *****************************************************************/ /* --- INLINES --- */ em.rfc2119 { text-transform: lowercase; font-variant: small-caps; font-style: normal; color: #900; } h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym, h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr { border: none; } dfn { font-weight: bold; } a.internalDFN { color: inherit; border-bottom: 1px solid #99c; text-decoration: none; } a.externalDFN { color: inherit; border-bottom: 1px dotted #ccc; text-decoration: none; } a.bibref { text-decoration: none; } /* code { color: #ff4500; } */ table.parameters, table.exceptions { border-spacing: 0; border-collapse: collapse; margin: 0.5em 0; width: 100%; } table.parameters { border-bottom: 1px solid #90b8de; } table.exceptions { border-bottom: 1px solid #deb890; } .parameters th, .exceptions th { color: #fff; padding: 3px 5px; text-align: left; font-family: initial; font-weight: normal; text-shadow: #666 1px 1px 0; } .parameters th { background: #90b8de; } .exceptions th { background: #deb890; } .parameters td, .exceptions td { padding: 3px 10px; border-top: 1px solid #ddd; vertical-align: top; } .parameters tr:first-child td, .exceptions tr:first-child td { border-top: none; } .parameters td.prmName, .exceptions td.excName, .exceptions td.excCodeName { width: 100px; } .parameters td.prmType { width: 120px; } table.exceptions table { border-spacing: 0; border-collapse: collapse; width: 100%; } /* --- 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; } /* --- EXAMPLES --- */ pre.example { border-top: 1px solid #ff4500; border-bottom: 1px solid #ff4500; padding: 1em; margin-top: 1em; } pre.example::before { content: "Example"; display: block; width: 150px; background: #ff4500; color: #fff; font-family: initial; padding: 3px; font-weight: bold; margin: -1em 0 1em -1em; } @media screen { p.practicedesc { position: relative; top: -2em; padding: 0; margin: 1.5em 0.5em -1em 1em; } } </style> <style type="text/css"> /* --- EDITORIAL NOTES --- */ .pending { padding: 1em; margin: 1em 0em 0em; border: 1px solid #f00; background: #BFEFFF; } .pending::before { content: "Pending Review"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #f00; background: #fff; padding: 3px 1em; } .resolved { padding: 1em; margin: 1em 0em 0em; border: 1px solid #f00; background: #9BCD9B; } .resolved::before { content: "Resolved"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #f00; background: #fff; padding: 3px 1em; } .inference { padding: 1em; margin: 1em 0em 0em; border: 1px solid #f00; background: #fff; } .inference-example { padding: 1em; margin: 1em 0em 0em; border: 1px solid #f00; background: #fff; } .syntax { padding: 1em; margin: 1em 0em 0em; border: 1px solid #f00; background: #fff; } .syntax[id]::before { content: "Syntax: " attr(id); width: 380px; /* How can we compute the length of "Constraint: " attr(id) */ } .syntax::before { content: "Syntax"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #f00; background: #fff; padding: 3px 1em; } .unamedconstraint { padding: 1em; margin: 1em 0em 0em; border: 1px solid #00f; background: #fff; } .unamedconstraint::before { content: "Constraint"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #00f; background: #fff; padding: 3px 1em; } .constraint { padding: 1em; margin: 1em 0em 0em; border: 1px solid #00f; background: #fff; } .constraint-example { padding: 1em; margin: 1em 0em 0em; border: 1px solid #00f; background: #fff; } .interpretation { padding: 1em; margin: 1em 0em 0em; border: 1px solid #00f; background: #fff; } .interpretation[id]::before { content: "Interpretation: " attr(id); width: 380px; /* How can we compute the length of "Interpretation: " attr(id) */ } .interpretation::before { content: "Interpretation"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #00f; background: #fff; padding: 3px 1em; } .definition { padding: 1em; margin: 1em 0em 0em; border: 1px solid #777; background: #fff; } .definition-example { padding: 1em; margin: 1em 0em 0em; border: 1px solid #777; background: #fff; } .deprecatedconstraint { padding: 1em; margin: 1em 0em 0em; border: 1px solid #00f; background: #fff; } .deprecatedconstraint[id]::before { content: "Deprecated: " attr(id); width: 380px; /* How can we compute the length of "Deprecatedconstraint: " attr(id) */ } .deprecatedconstraint::before { content: "Deprecated"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #00f; background: #fff; padding: 3px 1em; } .glossary-ref { font-style: italic; } .dfn { font-weight: bold; } .attribute { font-style: italic; } .conditional { color: blue; } .grammar { margin-top: 1ex; margin-bottom: 1ex; padding-left: 1ex; padding-right: 1ex; padding-top: 1ex; padding-bottom: 0.6ex; border: 1px dashed #2f6fab; font-size: 95%; } .nonterminal { font-weight: bold; font-family: sans-serif; font-size: 95%; } .name { font-family: monospace; } .math { font-family: roman; font-style:italic; } .xmpl { padding: 1em; margin: 1em 0em 0em; border: 1px solid #f00; background: #fff; } .xmpl::before { content: "Example"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #f00; background: #fff; padding: 3px 1em; } .anexample { margin-top: 1ex; margin-bottom: 1ex; padding-left: 1ex; padding-right: 1ex; padding-top: 1ex; padding-bottom: 0.6ex; border: 1px dashed #2f6fab; background-color: #f9f9f9; } .anexample table { background-color: #f9f9f9; } .conceptexample:before { content: "Example:"; font-family: sans-serif; font-size: 1.6ex; font-weight: bold; } .conceptexample { margin-top: 1ex; margin-bottom: 1ex; padding-left: 1ex; padding-right: 1ex; padding-top: 1ex; padding-bottom: 0.6ex; border: 1px dashed #2f6fab; background-color: #f9f9f9; } .pnExpression { font-weight: normal; font-size:120%; font-family: monospace; } div[class="grammar"] span[class="name"]:before { content: "'"; } div[class="grammar"] span[class="name"]:after { content: "'"; } div[class="grammar"] span[class="optional"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="optional"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")?"; } div[class="grammar"] span[class="plus"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="plus"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")+"; } div[class="grammar"] span[class="star"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="star"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")*"; } div[class="grammar"] span[class="choice"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="choice"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")"; } div[class="grammar"] span[class="group"]:before { font-weight: normal; font-size:130%; font-family: monospace; content: "("; } div[class="grammar"] span[class="group"]:after { font-weight: normal; font-size:130%; font-family: monospace; content: ")"; } table { background-color: #f9f9f9; } .component1-color { background-color: rgba(255,42,42,0.2); } .component2-color { background-color: rgba(0,68,170,0.2); } .component3-color { background-color: rgba(0,170,0,0.2); } .component4-color { background-color: rgba(204,255,0,0.2); } .component5-color { background-color: rgba(11,40,40,0.2); } .component6-color { background-color: rgba(244,105,14,0.2); } .interpretation-forward::before { content: "Interpretation: "; font-weight: bold; } .structural-forward::before { content: "Structural constraint: "; font-weight: bold; } code { color: black !important; } .ruleTitle { font-family: sans-serif; font-size: 1.6ex; font-weight: bold; } .remark { padding: 1em; margin: 1em 0em 0em; border: 1px dashed #000; background: #F0F0F0; } .remark::before { content: "Remark"; display: block; width: 150px; margin: -1.5em 0 0.5em 0; font-weight: bold; border: 1px solid #000; background: #fff; padding: 3px 1em; } table.thinborder { border-width: 1px; border-spacing: 0px; border-style: none; border-color: gray; border-collapse: collapse; } table.thinborder th { border-width: 1px; padding: 0px; border-style: solid; border-color: gray; } table.thinborder td { border-width: 1px; padding: 2px; border-style: solid; border-color: gray; } </style> <style>/***************************************************************** * ReSpec 3 CSS * Robin Berjon - http://berjon.com/ *****************************************************************/ /* --- INLINES --- */ em.rfc2119 { text-transform: lowercase; font-variant: small-caps; font-style: normal; color: #900; } h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym, h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr { border: none; } dfn { font-weight: bold; } a.internalDFN { color: inherit; border-bottom: 1px solid #99c; text-decoration: none; } a.externalDFN { color: inherit; border-bottom: 1px dotted #ccc; text-decoration: none; } a.bibref { text-decoration: none; } cite .bibref { font-style: normal; } code { color: #ff4500; } /* --- TOC --- */ .toc a, .tof a { text-decoration: none; } a .secno, a .figno { color: #000; } ul.tof, ol.tof { list-style: none outside none; } .caption { margin-top: 0.5em; font-style: italic; } /* --- TABLE --- */ table.simple { border-spacing: 0; border-collapse: collapse; border-bottom: 3px solid #005a9c; } .simple th { background: #005a9c; color: #fff; padding: 3px 5px; text-align: left; } .simple th[scope="row"] { background: inherit; color: inherit; border-top: 1px solid #ddd; } .simple td { padding: 3px 10px; border-top: 1px solid #ddd; } .simple tr:nth-child(even) { background: #f0f6ff; } /* --- DL --- */ .section dd > p:first-child { margin-top: 0; } .section dd > p:last-child { margin-bottom: 0; } .section dd { margin-bottom: 1em; } .section dl.attrs dd, .section dl.eldef dd { margin-bottom: 0; } </style><link rel="stylesheet" href="https://www.w3.org/StyleSheets/TR/W3C-REC"><!--[if lt IE 9]><script src='http://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head> <body><div class="head"> <p> <a href="https://www.w3.org/"><img width="72" height="48" src="https://www.w3.org/Icons/w3c_home" alt="W3C"></a> </p> <h1 class="title" id="title">PROV-N: The Provenance Notation</h1> <h2 id="w3c-recommendation-30-april-2013"><abbr title="World Wide Web Consortium">W3C</abbr> Recommendation 30 April 2013</h2> <dl> <dt>This version:</dt> <dd><a href="https://www.w3.org/TR/2013/REC-prov-n-20130430/">http://www.w3.org/TR/2013/REC-prov-n-20130430/</a></dd> <dt>Latest published version:</dt> <dd><a href="https://www.w3.org/TR/prov-n/">http://www.w3.org/TR/prov-n/</a></dd> <dt>Implementation report:</dt> <dd><a href="https://www.w3.org/TR/2013/NOTE-prov-implementations-20130430/">http://www.w3.org/TR/2013/NOTE-prov-implementations-20130430/</a></dd> <dt>Previous version:</dt> <dd><a href="https://www.w3.org/TR/2013/PR-prov-n-20130312/">http://www.w3.org/TR/2013/PR-prov-n-20130312/</a> <a href="diff-n.html">(color-coded diff)</a></dd> <dt>Editors:</dt> <dd><a href="http://www.ecs.soton.ac.uk/~lavm/">Luc Moreau</a>, University of Southampton</dd> <dd><a href="http://www.cs.ncl.ac.uk/people/Paolo.Missier">Paolo Missier</a>, Newcastle University</dd> <dt>Contributors:</dt> <dd><a href="http://homepages.inf.ed.ac.uk/jcheney/">James Cheney</a>, University of Edinburgh</dd> <dd><a href="http://soiland-reyes.com/stian/">Stian Soiland-Reyes</a>, University of Manchester</dd> </dl> <p> Please refer to the <a href="https://www.w3.org/2011/prov/errata.html"><strong>errata</strong></a> for this document, which may include some normative corrections. </p> <p> The English version of this specification is the only normative version. Non-normative <a href="https://www.w3.org/Consortium/Translation/">translations</a> may also be available. </p> <p class="copyright"> <a href="https://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2012-2013 <a href="https://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="https://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="https://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="https://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply. </p> <hr> </div> <section id="abstract" class="introductory"><h2>Abstract</h2> <p> Provenance is information about entities, activities, and people involved in producing a piece of data or thing, which can be used to form assessments about its quality, reliability or trustworthiness. PROV-DM is the conceptual data model that forms a basis for the <abbr title="World Wide Web Consortium">W3C</abbr> provenance (PROV) family of specifications. PROV-DM distinguishes core structures, forming the essence of provenance information, from extended structures catering for more specific uses of provenance. PROV-DM is organized in six components, respectively dealing with: (1) entities and activities, and the time at which they were created, used, or ended; (2) derivations of entities from entities; (3) agents bearing responsibility for entities that were generated and activities that happened; (4) a notion of bundle, a mechanism to support provenance of provenance; and, (5) properties to link entities that refer to the same thing; (6) collections forming a logical structure for its members. </p> <p>To provide examples of the PROV data model, the PROV notation (PROV-N) is introduced: aimed at human consumption, PROV-N allows serializations of PROV instances to be created in a compact manner. PROV-N facilitates the mapping of the PROV data model to concrete syntax, and is used as the basis for a formal semantics of PROV. The purpose of this document is to define the PROV-N notation. </p> <p>The <a href="https://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> </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="https://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="https://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="https://www.w3.org/TR/2013/NOTE-prov-primer-20130430/">PROV-PRIMER</a> (Note), a primer for the PROV data model [<cite><a class="bibref" href="#bib-PROV-PRIMER">PROV-PRIMER</a></cite>];</li> <li> <a href="https://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="https://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="https://www.w3.org/TR/2013/REC-prov-n-20130430/">PROV-N</a> (Recommendation), a notation for provenance aimed at human consumption (this document);</li> <li> <a href="https://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="https://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="https://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="https://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="https://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="https://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="https://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="endorsed-by-w3c">Endorsed By <abbr title="World Wide Web Consortium">W3C</abbr></h4> <p>This document has been reviewed by <abbr title="World Wide Web Consortium">W3C</abbr> Members, by software developers, and by other <abbr title="World Wide Web Consortium">W3C</abbr> groups and interested parties, and is endorsed by the Director as a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation. It is a stable document and may be used as reference material or cited from another document. <abbr title="World Wide Web Consortium">W3C</abbr>'s role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.</p> <h4 id="please-send-comments">Please Send Comments</h4> <p> This document was published by the <a href="https://www.w3.org/2011/prov/">Provenance Working Group</a> as a Recommendation. 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> This document was produced by a group operating under the <a href="https://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="https://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="https://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="https://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><ul class="toc"><li class="tocline"><a href="#purpose" class="tocxref"><span class="secno">1.1 </span>Purpose of this Document and Target Audience</a></li><li class="tocline"><a href="#compliance-with-this-document" class="tocxref"><span class="secno">1.2 </span>Compliance with this Document</a></li><li class="tocline"><a href="#structure-of-this-document" class="tocxref"><span class="secno">1.3 </span>Structure of this Document</a></li><li class="tocline"><a href="#notational-conventions" class="tocxref"><span class="secno">1.4 </span>Notational Conventions</a></li></ul></li><li class="tocline"><a href="#general-conventions" class="tocxref"><span class="secno">2. </span>General grammar considerations</a><ul class="toc"><li class="tocline"><a href="#functional-syntax" class="tocxref"><span class="secno">2.1 </span>Functional-style Syntax</a></li><li class="tocline"><a href="#grammar-notation" class="tocxref"><span class="secno">2.2 </span>EBNF Grammar</a></li><li class="tocline"><a href="#main-productions" class="tocxref"><span class="secno">2.3 </span>Main Productions</a></li><li class="tocline"><a href="#prov-n-optionals" class="tocxref"><span class="secno">2.4 </span>Optional terms in expressions</a></li><li class="tocline"><a href="#prov-n-standard-terms" class="tocxref"><span class="secno">2.5 </span>Identifiers and attributes</a></li><li class="tocline"><a href="#comments" class="tocxref"><span class="secno">2.6 </span>Comments</a></li></ul></li><li class="tocline"><a href="#prov-n-expressions" class="tocxref"><span class="secno">3. </span>PROV-N Productions per Component</a><ul class="toc"><li class="tocline"><a href="#component1" class="tocxref"><span class="secno">3.1 </span>Component 1: Entities and Activities</a><ul class="toc"><li class="tocline"><a href="#expression-Entity" class="tocxref"><span class="secno">3.1.1 </span>Entity</a></li><li class="tocline"><a href="#expression-Activity" class="tocxref"><span class="secno">3.1.2 </span>Activity</a></li><li class="tocline"><a href="#expression-Generation" class="tocxref"><span class="secno">3.1.3 </span>Generation</a></li><li class="tocline"><a href="#expression-Usage" class="tocxref"><span class="secno">3.1.4 </span>Usage</a></li><li class="tocline"><a href="#expression-wasInformedBy" class="tocxref"><span class="secno">3.1.5 </span>Communication</a></li><li class="tocline"><a href="#expression-Start" class="tocxref"><span class="secno">3.1.6 </span>Start</a></li><li class="tocline"><a href="#expression-End" class="tocxref"><span class="secno">3.1.7 </span>End</a></li><li class="tocline"><a href="#expression-Invalidation" class="tocxref"><span class="secno">3.1.8 </span>Invalidation</a></li></ul></li><li class="tocline"><a href="#component2" class="tocxref"><span class="secno">3.2 </span>Component 2: Derivations</a><ul class="toc"><li class="tocline"><a href="#Derivation-Relation" class="tocxref"><span class="secno">3.2.1 </span>Derivation</a></li><li class="tocline"><a href="#expression-Revision" class="tocxref"><span class="secno">3.2.2 </span>Revision</a></li><li class="tocline"><a href="#expression-quotation" class="tocxref"><span class="secno">3.2.3 </span>Quotation</a></li><li class="tocline"><a href="#expression-primary-source" class="tocxref"><span class="secno">3.2.4 </span>Primary Source</a></li></ul></li><li class="tocline"><a href="#component3" class="tocxref"><span class="secno">3.3 </span>Component 3: Agents, Responsibility, and Influence</a><ul class="toc"><li class="tocline"><a href="#expression-Agent" class="tocxref"><span class="secno">3.3.1 </span>Agent</a></li><li class="tocline"><a href="#expression-attribution" class="tocxref"><span class="secno">3.3.2 </span>Attribution</a></li><li class="tocline"><a href="#expression-Association" class="tocxref"><span class="secno">3.3.3 </span>Association</a></li><li class="tocline"><a href="#expression-delegation" class="tocxref"><span class="secno">3.3.4 </span>Delegation</a></li><li class="tocline"><a href="#expression-influence" class="tocxref"><span class="secno">3.3.5 </span>Influence</a></li></ul></li><li class="tocline"><a href="#component4" class="tocxref"><span class="secno">3.4 </span>Component 4: Bundles</a><ul class="toc"><li class="tocline"><a href="#expression-bundle-constructor" class="tocxref"><span class="secno">3.4.1 </span>Bundle Constructor</a></li><li class="tocline"><a href="#expression-bundle-type" class="tocxref"><span class="secno">3.4.2 </span>Bundle Type</a></li></ul></li><li class="tocline"><a href="#component5" class="tocxref"><span class="secno">3.5 </span>Component 5: Alternate Entities</a><ul class="toc"><li class="tocline"><a href="#expression-alternate" class="tocxref"><span class="secno">3.5.1 </span>Alternate</a></li><li class="tocline"><a href="#expression-specialization" class="tocxref"><span class="secno">3.5.2 </span>Specialization</a></li></ul></li><li class="tocline"><a href="#component6" class="tocxref"><span class="secno">3.6 </span>Component 6: Collections</a><ul class="toc"><li class="tocline"><a href="#expression-collection" class="tocxref"><span class="secno">3.6.1 </span>Collection</a></li><li class="tocline"><a href="#expression-collection-membership" class="tocxref"><span class="secno">3.6.2 </span>Membership</a></li></ul></li><li class="tocline"><a href="#subexpressions" class="tocxref"><span class="secno">3.7 </span>Further Expressions</a><ul class="toc"><li class="tocline"><a href="#expression-identifier" class="tocxref"><span class="secno">3.7.1 </span>Identifier</a></li><li class="tocline"><a href="#expression-attribute" class="tocxref"><span class="secno">3.7.2 </span>Attribute</a></li><li class="tocline"><a href="#expression-literal" class="tocxref"><span class="secno">3.7.3 </span>Literal</a><ul class="toc"><li class="tocline"><a href="#expression-types" class="tocxref"><span class="secno">3.7.3.1 </span>Reserved Type Values</a></li><li class="tocline"><a href="#expression-Time" class="tocxref"><span class="secno">3.7.3.2 </span>Time Values</a></li></ul></li><li class="tocline"><a href="#expression-NamespaceDeclaration" class="tocxref"><span class="secno">3.7.4 </span>Namespace Declaration</a></li><li class="tocline"><a href="#semantic-rules-summary" class="tocxref"><span class="secno">3.7.5 </span>Summary of additional semantic rules</a></li></ul></li></ul></li><li class="tocline"><a href="#document" class="tocxref"><span class="secno">4. </span>Document</a></li><li class="tocline"><a href="#extensibility" class="tocxref"><span class="secno">5. </span>Extensibility</a></li><li class="tocline"><a href="#media-type" class="tocxref"><span class="secno">6. </span>Media Type</a></li><li class="tocline"><a href="#change-log" class="tocxref"><span class="secno">A. </span>Change Log</a><ul class="toc"><li class="tocline"><a href="#changes-since-proposed-recommendation" class="tocxref"><span class="secno">A.1 </span>Changes since Proposed Recommendation</a></li><li class="tocline"><a href="#changes-since-candidate-recommendation" class="tocxref"><span class="secno">A.2 </span>Changes since Candidate Recommendation</a></li><li class="tocline"><a href="#changes-since-last-call" class="tocxref"><span class="secno">A.3 </span>Changes since last call</a></li></ul></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">B. </span>Acknowledgements</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="#normative-references" class="tocxref"><span class="secno">C.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">C.2 </span>Informative references</a></li></ul></li></ul></section> <section id="introduction"> <!--OddPage--><h2><span class="secno">1. </span>Introduction</h2> <p> Provenance is a record that describes the people, institutions, entities, and activities, involved in producing, influencing, or delivering a piece of data or a thing in the world. Two companion specifications respectively define PROV-DM, a data model for provenance, allowing provenance descriptions to be expressed [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>] and a set of constraints that provenance descriptions are expected to satisfy [<cite><a class="bibref" href="#bib-PROV-CONSTRAINTS">PROV-CONSTRAINTS</a></cite>]. </p> <section id="purpose"> <h3><span class="secno">1.1 </span>Purpose of this Document and Target Audience</h3> A key goal of PROV is the specification of a machine-processable data model for provenance. However, communicating provenance between humans is also important when teaching, illustrating, formalizing, and discussing provenance-related issues. <!-- As such, representations of PROV-DM are available in RDF and XML. --> With these two requirements in mind, this document introduces PROV-N, the PROV notation, a syntax designed to write instances of the PROV data model according to the following design principles: <ul> <li>Technology independence. PROV-N provides a simple syntax that can be mapped to several technologies. </li><li>Human readability. PROV-N follows a functional syntax style that is meant to be easily human-readable so it can be used in illustrative examples, such as those presented in the PROV documents suite. </li><li>Formality. PROV-N is defined through a formal grammar amenable to be used with parser generators. </li></ul> PROV-N has several known uses: <ul> <li> It is the notation used in the examples found in [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>], as well as in the definition of PROV constraints [<cite><a class="bibref" href="#bib-PROV-CONSTRAINTS">PROV-CONSTRAINTS</a></cite>]; </li> <li> It is a source language for the encoding of PROV data model instances into a variety of target languages, including amongst others RDF [<cite><a class="bibref" href="#bib-PROV-RDF">PROV-RDF</a></cite>] and XML [<cite><a class="bibref" href="#bib-PROV-XML">PROV-XML</a></cite>]; </li> <li> It provides the basis for a formal semantics of the PROV data model [<cite><a class="bibref" href="#bib-PROV-SEM">PROV-SEM</a></cite>], in which an interpretation is given to each element of the PROV-N language. </li></ul> <p>This document introduces the PROV-N grammar along with examples of its usage.</p> <p>Its target audience is twofold: </p><ul> <li>Developers of provenance management applications, as well as implementors of new PROV data model encodings, and thus in particular of PROV-N parsers. These readers may be interested in the entire structure of the grammar, starting from the top level nonterminal <code><a class="grammarRef" href="#prod-document">document</a></code>.</li> <li>Readers of the [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>] and of [<cite><a class="bibref" href="#bib-PROV-CONSTRAINTS">PROV-CONSTRAINTS</a></cite>] documents, who are interested in the details of the formal language underpinning the notation used in the examples and in the definition of the constraints. Those readers may find the <code><a class="grammarRef" href="#prod-expression">expression</a></code> nonterminal a useful entry point into the grammar.</li> </ul> </section> <section id="compliance-with-this-document"> <h3><span class="secno">1.2 </span>Compliance with this Document</h3> <p>For the purpose of compliance, all sections of this document are normative, except <a href="#change-log">Appendix A</a>, <a href="#acknowledgements">Appendix B</a>, and <a href="#informative-references">Appendix C.2</a>. </p><ul> <li> Information in tables is normative. </li> <li> Text in boxes labeled "Example" is informative. </li><li> Productions (displayed in boxes) are normative, as opposed to the separate <a href="grammar.txt">file</a> grouping all productions for convenience of programmers, which is informative. </li></ul> </section> <section id="structure-of-this-document"> <h3><span class="secno">1.3 </span>Structure of this Document</h3> <p>This document is structured as follows. </p><p><a href="#general-conventions">Section 2</a> provides general consideration about the PROV-N grammar.</p> <p><a href="#prov-n-expressions">Section 3</a> presents the grammar of all expressions of the language grouped according to the PROV data model components.</p> <p><a href="#document">Section 4</a> defines the grammar of document, a house-keeping construct of PROV-N capable of packaging up PROV-N expressions and namespace declarations.</p> <p><a href="#extensibility">Section 5</a> defines the extensibility mechanism for the PROV-N notation.</p> <p><a href="#media-type">Section 6</a> defines media type for the PROV-N notation.</p> </section> <section id="notational-conventions"> <h3><span class="secno">1.4 </span>Notational Conventions</h3> <p>The key words "<em class="rfc2119" title="MUST">MUST</em>", "<em class="rfc2119" title="MUST NOT">MUST NOT</em>", "<em class="rfc2119" title="REQUIRED">REQUIRED</em>", "<em class="rfc2119" title="SHALL">SHALL</em>", "<em class="rfc2119" title="SHALL NOT">SHALL NOT</em>", "<em class="rfc2119" title="SHOULD">SHOULD</em>", "<em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em>", "<em class="rfc2119" title="RECOMMENDED">RECOMMENDED</em>", "<em class="rfc2119" title="MAY">MAY</em>", and "<em class="rfc2119" title="OPTIONAL">OPTIONAL</em>" in this document are to be interpreted as described in [<cite><a class="bibref" href="#bib-RFC2119">RFC2119</a></cite>].</p> <p> The following namespaces prefixes are used throughout this document. </p><div style="text-align: left;"> <table border="1" style="margin-left: auto; margin-right: auto;"> <caption id="namespace-table">Table 1: Prefix and Namespaces used in this specification</caption> <tbody><tr><td><b>prefix</b></td><td><b>namespace uri</b></td> <td><b>definition</b></td></tr> <tr><td>prov</td><td>http://www.w3.org/ns/prov#</td><td>The PROV namespace (see Section <a href="#expression-NamespaceDeclaration">3.7.4</a>)</td></tr> <tr><td>xsd</td><td>http://www.w3.org/2000/10/XMLSchema#</td><td>XML Schema Namespace [<cite><a class="bibref" href="#bib-XMLSCHEMA11-2">XMLSCHEMA11-2</a></cite>]</td></tr> <tr><td>(others)</td><td>(various)</td><td>All other namespace prefixes are used in examples only. <br> In particular, URIs starting with "http://example.com" represent<br> some application-dependent URI [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>]</td></tr> </tbody></table> </div> </section> </section> <section id="general-conventions"> <!--OddPage--><h2><span class="secno">2. </span>General grammar considerations</h2> <p>For convenience, all productions presented in this document have been grouped in a separate <a href="grammar.txt">file</a>.</p> <section id="functional-syntax"> <h3><span class="secno">2.1 </span>Functional-style Syntax</h3> <p> PROV-N adopts a functional-style syntax consisting of a predicate name and an ordered list of terms.</p> <p> All PROV data model types have an identifier. Furthermore, some expressions also admit additional elements that further characterize it. </p> <div class="anexample" id="example_1"><div class="anexampleTitle"><a class="internalDFN" href="#example_1">Example 1</a></div> <p>The following expression should be read as "entity <span class="name">e1</span>". </p><pre class="codeexample">entity(e1) </pre> </div> <div class="anexample" id="example_2"><div class="anexampleTitle"><a class="internalDFN" href="#example_2">Example 2</a></div> <p>The following expression should be read as "activity <span class="name">a2</span>, which occurred between <code>2011-11-16T16:00:00</code> and <code>2011-11-16T16:00:01</code>". </p><pre class="codeexample">entity(e1) activity(a2, 2011-11-16T16:00:00, 2011-11-16T16:00:01) </pre> </div> <p> All PROV data model relations involve two primary elements, the <em>subject</em> and the <em>object</em>, in this order. Furthermore, some expressions also admit additional elements that further characterize it. </p><div class="anexample" id="example_3"><div class="anexampleTitle"><a class="internalDFN" href="#example_3">Example 3</a></div> <p>The following expression should be read as "<span class="name">e2</span> was derived from <span class="name">e1</span>". Here <span class="name">e2</span> is the subject, and <span class="name">e1</span> is the object. </p><pre class="codeexample">wasDerivedFrom(e2, e1) </pre> </div> <div class="anexample" id="example_4"><div class="anexampleTitle"><a class="internalDFN" href="#example_4">Example 4</a></div> <p>The following expression expands the above derivation relation by providing additional elements the optional activity <span class="name">a</span>, the generation <span class="name">g2</span>, and the usage <span class="name">u1</span>: </p><pre class="codeexample">wasDerivedFrom(e2, e1, a, g2, u1) </pre> </div> </section> <section id="grammar-notation"> <h3><span class="secno">2.2 </span>EBNF Grammar</h3> <p>The grammar is specified using a subset of the Extended Backus-Naur Form (EBNF) notation, as defined in Extensible Markup Language (XML) 1.1 [<cite><a class="bibref" href="#bib-XML11">XML11</a></cite>] section <a href="https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-notation">6 Notation</a>. </p> <p> The text below provides an introduction to the EBNF notation used in this document.</p> <p> EBNF specifies a series of production rules (<dfn id="dfn-production">production</dfn>). A production rule in the grammar defines a symbol <code class="grammarRef">expr</code> (<dfn id="dfn-nonterminal-symbol">nonterminal symbol</dfn>) using the following form:</p> <div class="grammar"> <code class="grammarRef">expr</code> &nbsp;::= <em>term</em> </div> <p>Symbols are written with an initial capital letter if they are the start symbol of a regular language, otherwise with an initial lowercase letter. A production rule in the grammar defines a symbol <code class="grammarRef">&lt;TERMINAL&gt;</code> (<dfn id="dfn-terminal-symbol">terminal symbol</dfn>) using the following form:</p> <div class="grammar"> <code class="grammarRef">&lt;TERMINAL&gt;</code> &nbsp;::= <em>term</em> </div> <p>Within the term on the right-hand side of a rule, the following <em>term</em>s are used to match strings of one or more characters: </p><ul> <li> <code class="grammarRef">expr</code>: matches production for nonterminal symbol <code class="grammarRef">expr</code> </li> <li> <code class="grammarRef">TERMINAL</code>: matches production for terminal symbol <code class="grammarRef">TERMINAL</code> </li> <li> <code class="grammarRef">"abc"</code>: matches the literal string inside the single quotes. </li> <li> <code class="grammarRef">(term)?</code>: optional, matches <em>term</em> or nothing. </li> <li> <code class="grammarRef">(term)+</code>: matches one or more occurrences of <em>term</em>. </li> <li> <code class="grammarRef">(term)*</code>: matches zero or more occurrences of <em>term</em>. </li> <li> <code class="grammarRef">(term | term)</code>: matches one of the two <em>terms</em>. </li> </ul> <p>Where suitable, the PROV-N grammar reuses production and terminal names of the SPARQL grammar [<cite><a class="bibref" href="#bib-RDF-SPARQL-QUERY">RDF-SPARQL-QUERY</a></cite>].</p> </section> <section id="main-productions"> <h3><span class="secno">2.3 </span>Main Productions</h3> <p>Two productions are entry points to the grammar.</p> <p>The production <code class="grammarRef"><a class="grammarRef" href="#prod-expression">expression</a></code> provides the structure for the <em>core expressions</em> of PROV-N. </p><table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-expression" data-name="prod-expression"></a>[<span class="prodNo">2</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">expression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-entityExpression">entityExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-activityExpression">activityExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-generationExpression">generationExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-usageExpression">usageExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-startExpression">startExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-endExpression">endExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-invalidationExpression">invalidationExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-communicationExpression">communicationExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-agentExpression">agentExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-associationExpression">associationExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-attributionExpression">attributionExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-delegationExpression">delegationExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-derivationExpression">derivationExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-influenceExpression">influenceExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-alternateExpression">alternateExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-specializationExpression">specializationExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-membershipExpression">membershipExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-extensibilityExpression">extensibilityExpression</a></span> )</code></td> </tr> </tbody> </table> <p>Each of the symbols included in <code>expression</code> above, i.e., <code><a class="grammarRef" href="#prod-entityExpression">entityExpression</a></code>, <code><a class="grammarRef" href="#prod-activityExpression">activityExpression</a></code> etc., corresponds to one concept (e.g., Entity, Activity, etc.) of the PROV data model.</p> <p>Alternatively, the production rule <code><a href="#prod-document"><span class="grammarRef">document</span></a></code> provides the overall structure of PROV-N descriptions. It is a wrapper for a set of expressions, such that the text for an element matches the corresponding <code><a class="grammarRef" href="#prod-expression">expression</a></code> production, and some namespace declarations.</p> </section> <section id="prov-n-optionals"> <h3><span class="secno">2.4 </span>Optional terms in expressions</h3> Some terms in an expression may be optional. For example: <div class="anexample" id="example_5"><div class="anexampleTitle"><a class="internalDFN" href="#example_5">Example 5</a></div> <pre class="codeexample">wasDerivedFrom(e2, e1, a, g2, u1) wasDerivedFrom(e2, e1) </pre> In a derivation expression, the activity, generation, and usage are optional terms. They are specified in the first derivation, but not in the second. </div> <div class="anexample" id="example_6"><div class="anexampleTitle"><a class="internalDFN" href="#example_6">Example 6</a></div> <pre class="codeexample">activity(a2, 2011-11-16T16:00:00, 2011-11-16T16:00:01) activity(a1) </pre> The start and end times for an activity are optional. They are specified in the first expression, but not in the second. </div> <p>The general rule for optionals is that, if <em>none</em> of the optionals are used in the expression, then they are simply omitted, resulting in a simpler expression as in the examples above.</p> However, it may be the case that only some of the optional terms are omitted. Because the position of the terms in the expression matters, an additional marker must be used to indicate that a particular term is not available. The symbol <span class="name">'-'</span> is used for this purpose. <div class="anexample" id="example_7"><div class="anexampleTitle"><a class="internalDFN" href="#example_7">Example 7</a></div> <p>In the first expression below, all optionals are specified. However in the second and third, only one optional is specified, forcing the use of the marker for the missing terms. </p><pre class="codeexample">wasDerivedFrom(e2, e1, a, g2, u1) wasDerivedFrom(e2, e1, -, -, u1) wasDerivedFrom(e2, e1, a, -, -) </pre> </div> Note that the more succinct form is just shorthand for a complete expression with all the markers specified: <div class="anexample" id="example_8"><div class="anexampleTitle"><a class="internalDFN" href="#example_8">Example 8</a></div> <pre class="codeexample">activity(a1) activity(a1, -, -) </pre> </div> </section> <section id="prov-n-standard-terms"> <h3><span class="secno">2.5 </span>Identifiers and attributes</h3> <p>Almost all expressions defined in the grammar include an identifier (see <a href="#expression-identifier">Section 3.7.1</a> for the full syntax of identifiers). Most expressions can also include a set of attribute-value pairs, delimited by square brackets. Identifiers are optional except for Entities, Activities, and Agents. Identifiers are always the first term in any expression. <em>Optional</em> identifiers <em class="rfc2119" title="MUST">MUST</em> be separated using a semi-colon ';', but where the identifiers are required, a regular comma ',' <em class="rfc2119" title="MUST">MUST</em> be used. This makes it possible to completely omit an optional identifier with no ambiguity arising. Also, if the set of attribute-value pairs is present, it is always the last term in any expression.</p> <div class="anexample" id="example_9"><div class="anexampleTitle"><a class="internalDFN" href="#example_9">Example 9</a></div> <p>Derivation has an optional identifier. In the first expression, the identifier is not available, while it is explicit in the second. The third example shows that one can optionally indicate the missing identifier using the <span class="name">-</span> marker. This is equivalent to the first expression. </p> <pre class="codeexample">wasDerivedFrom(e2, e1) wasDerivedFrom(d; e2, e1) wasDerivedFrom(-; e2, e1) </pre> </div> Lack of attributes can be equivalently expressed by omitting the list, or by using an empty list. <!-- Expressions with no attributes A distinction is made between expressions with no attributes, and expressions that include an empty list of attributes. --> <div class="anexample" id="example_10"><div class="anexampleTitle"><a class="internalDFN" href="#example_10">Example 10</a></div> <p>The first and second activity expressions do not specify any attributes, and are equivalent. <!-- does not have any attributes. The second has an empty list of attributes. --> The third activity expression specifies two attributes. </p><pre class="codeexample">activity(ex:a1) activity(ex:a1, []) activity(ex:a1, [ex:param1="a", ex:param2="b"]) </pre> </div> </section> <section id="comments"> <h3><span class="secno">2.6 </span>Comments</h3> Comments in PROV-N take two forms: <ul> <li> '//' outside an <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rIRI_REF">IRI_REF</a></code> or <code class="content"><a class="grammarRef" href="#prod-STRING_LITERAL">STRING_LITERAL</a></code>; such comments continue to the end of line (marked by characters U+000D or U+000A) or end of file if there is no end of line after the comment marker. </li><li> '/*' ... '*/', outside an <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rIRI_REF">IRI_REF</a></code> or <code class="content"><a class="grammarRef" href="#prod-STRING_LITERAL">STRING_LITERAL</a></code>. </li></ul> <p>Comments are treated as white space.</p> </section> </section> <section id="prov-n-expressions"> <!--OddPage--><h2><span class="secno">3. </span>PROV-N Productions per Component</h2> <p>This section introduces grammar productions for each expression, followed by small examples of expressions illustrating the grammar. Strings conforming to the grammar are valid expressions in the PROV-N language.</p> <section id="component1"> <h3><span class="secno">3.1 </span>Component 1: Entities and Activities</h3> <section id="expression-Entity"> <h4><span class="secno">3.1.1 </span>Entity</h4> <p> </p><table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-entityExpression" data-name="prod-entityExpression"></a>[<span class="prodNo">3</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">entityExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"entity" "(" <span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-optionalAttributeValuePairs" data-name="prod-optionalAttributeValuePairs"></a>[<span class="prodNo">4</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">optionalAttributeValuePairs</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( "," "[" <span class="prod"><a class="grammarRef" href="#prod-attributeValuePairs">attributeValuePairs</a></span> "]" )?</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-attributeValuePairs" data-name="prod-attributeValuePairs"></a>[<span class="prodNo">5</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">attributeValuePairs</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( | <span class="prod"><a class="grammarRef" href="#prod-attributeValuePair">attributeValuePair</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-attributeValuePair">attributeValuePair</a></span> )* )</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-attributeValuePair" data-name="prod-attributeValuePair"></a>[<span class="prodNo">6</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">attributeValuePair</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-attribute">attribute</a></span> "=" <span class="prod"><a class="grammarRef" href="#prod-literal">literal</a></span></code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Entity maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-entity">Entity</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#entity.id"><span class="attribute" id="entity.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-identifier">identifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#entity.attributes"><span class="attribute" id="entity.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_11"><div class="anexampleTitle"><a class="internalDFN" href="#example_11">Example 11</a></div> <pre class="codeexample">entity(tr:WD-prov-dm-20111215, [ prov:type="document" ]) </pre> Here <span class="name">tr:WD-prov-dm-20111215</span> is the entity identifier, and <span class="name">[ prov:type="document" ]</span> groups the optional attributes, only one in this example, with their values. <pre class="codeexample"><!-- entity(tr:WD-prov-dm-20111215, [ prov:type="document", ex:version=2 ]) --> entity(tr:WD-prov-dm-20111215) </pre> Here, the optional attributes are absent. </div> </section> <section id="expression-Activity"> <h4><span class="secno">3.1.2 </span>Activity</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-activityExpression" data-name="prod-activityExpression"></a>[<span class="prodNo">7</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">activityExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"activity" "(" <span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></span> )? <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-timeOrMarker" data-name="prod-timeOrMarker"></a>[<span class="prodNo">8</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">timeOrMarker</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-time">time</a></span> | "-" )</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Activity maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-activity">Activity</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#activity.id"><span class="attribute" id="activity.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-identifier">identifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#activity.startTime"><span class="attribute" id="activity.startTime">startTime</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#activity.endTime"><span class="attribute" id="activity.endTime">endTime</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#activity.attributes"><span class="attribute" id="activity.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_12"><div class="anexampleTitle"><a class="internalDFN" href="#example_12">Example 12</a></div> <pre class="codeexample">activity(ex:a10, 2011-11-16T16:00:00, 2011-11-16T16:00:01, [prov:type="createFile"]) </pre> <p>Here <span class="name">ex:a10</span> is the activity identifier, <span class="name">2011-11-16T16:00:00</span> and <span class="name">2011-11-16T16:00:01</span> are the optional start and end times for the activity, and <span class="name">[prov:type="createFile"]</span> is a list of optional attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">activity(ex:a10) activity(ex:a10, -, -) activity(ex:a10, -, -, [prov:type="edit"]) activity(ex:a10, -, 2011-11-16T16:00:00) activity(ex:a10, 2011-11-16T16:00:00, -) activity(ex:a10, 2011-11-16T16:00:00, -, [prov:type="createFile"]) activity(ex:a10, [prov:type="edit"]) </pre> </div> </section> <section id="expression-Generation"> <h4><span class="secno">3.1.3 </span>Generation</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-generationExpression" data-name="prod-generationExpression"></a>[<span class="prodNo">9</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">generationExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"wasGeneratedBy" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></span> )? <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-optionalIdentifier" data-name="prod-optionalIdentifier"></a>[<span class="prodNo">10</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">optionalIdentifier</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-identifierOrMarker">identifierOrMarker</a></span> ";" )?</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-identifierOrMarker" data-name="prod-identifierOrMarker"></a>[<span class="prodNo">11</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">identifierOrMarker</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span> | "-" )</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Generation maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-wasgeneratedby">Generation</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.id"><span class="attribute" id="generation.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.entity"><span class="attribute" id="generation.entity">entity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.activity"><span class="attribute" id="generation.activity">activity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.time"><span class="attribute" id="generation.time">time</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.attributes"><span class="attribute" id="generation.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_13"><div class="anexampleTitle"><a class="internalDFN" href="#example_13">Example 13</a></div> <pre class="codeexample">wasGeneratedBy(ex:g1; tr:WD-prov-dm-20111215, ex:edit1, 2011-11-16T16:00:00, [ex:fct="save"]) </pre> <p> Here <span class="name">ex:g1</span> is the optional generation identifier, <span class="name">tr:WD-prov-dm-20111215</span> is the identifier of the entity being generated, <span class="name">ex:edit1</span> is the optional identifier of the generating activity, <span class="name">2011-11-16T16:00:00</span> is the optional generation time, and <span class="name"> [ex:fct="save"]</span> is a list of optional attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">wasGeneratedBy(e2, a1, -) wasGeneratedBy(e2, a1, 2011-11-16T16:00:00) wasGeneratedBy(e2, a1, -, [ex:fct="save"]) wasGeneratedBy(e2, [ex:fct="save"]) wasGeneratedBy(ex:g1; e) wasGeneratedBy(ex:g1; e, a, tr:WD-prov-dm-20111215) </pre> </div> <p>Additional semantic rules (<a href="#semantic-rules-summary">Section 3.7.5</a>) apply to <code class="content"><a class="grammarRef" href="#prod-generationExpression">generationExpression</a></code>.</p> <!-- <p><strong>Note:</strong> Even though the production allows for expressions <span class="name">wasGeneratedBy(e2, -, -)</span> and <span class="name">wasGeneratedBy(-; e2, -, -)</span>, these expressions are not valid in PROV-N, since at least one of <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.id"><span class='attribute'>id</span></a>, <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.activity"><span class='attribute'>activity</span></a>, <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.time"><span class='attribute'>time</span></a>, and <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.attributes"><span class='attribute'>attributes</span></a> MUST be present.</p> --> </section> <section id="expression-Usage"> <h4><span class="secno">3.1.4 </span>Usage</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-usageExpression" data-name="prod-usageExpression"></a>[<span class="prodNo">12</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">usageExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"used" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-eIdentifierOrMarker">eIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></span> )? <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Usage maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-used">Usage</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#usage.id"><span class="attribute" id="usage.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#usage.activity"><span class="attribute" id="usage.activity">activity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></code></td></tr><tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#usage.entity"><span class="attribute" id="usage.entity">entity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifierOrMarker">eIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#usage.time"><span class="attribute" id="usage.time">time</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#usage.attributes"><span class="attribute" id="usage.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_14"><div class="anexampleTitle"><a class="internalDFN" href="#example_14">Example 14</a></div> <pre class="codeexample">used(ex:u1; ex:act2, ar3:0111, 2011-11-16T16:00:00, [ex:fct="load"]) </pre> <p> Here <span class="name">ex:u1</span> is the optional usage identifier, <span class="name">ex:act2</span> is the identifier of the using activity, <span class="name">ar3:0111</span> is the identifier of the entity being used, <span class="name">2011-11-16T16:00:00</span> is the optional usage time, and <span class="name"> [ex:fct="load"]</span> is a list of optional attributes.</p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">used(ex:act2) used(ex:act2, ar3:0111, 2011-11-16T16:00:00) used(a1,e1, -, [ex:fct="load"]) used(ex:u1; ex:act2, ar3:0111, -) </pre> </div> <p>Additional semantic rules (<a href="#semantic-rules-summary">Section 3.7.5</a>) apply to <code class="content"><a class="grammarRef" href="#prod-usageExpression">usageExpression</a></code>.</p> </section> <section id="expression-wasInformedBy"> <h4><span class="secno">3.1.5 </span>Communication</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-communicationExpression" data-name="prod-communicationExpression"></a>[<span class="prodNo">13</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">communicationExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"wasInformedBy" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Communication maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-wasinformedby">Communication</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#communication.id"><span class="attribute" id="communication.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#communication.informed"><span class="attribute" id="communication.informed">informed</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#communication.informant"><span class="attribute" id="communication.informant">informant</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#communication.attributes"><span class="attribute" id="communication.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_15"><div class="anexampleTitle"><a class="internalDFN" href="#example_15">Example 15</a></div> <pre class="codeexample">wasInformedBy(ex:inf1; ex:a1, ex:a2, [ex:param1="a", ex:param2="b"]) </pre> <p> Here <span class="name">ex:inf1</span> is the optional communication identifier, <span class="name">ex:a1</span> is the identifier of the informed activity, <span class="name">ex:a2</span> is the identifier of the informant activity, and <span class="name">[ex:param1="a", ex:param2="b"]</span> is a list of optional attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">wasInformedBy(ex:a1, ex:a2) wasInformedBy(ex:a1, ex:a2, [ex:param1="a", ex:param2="b"]) wasInformedBy(ex:i; ex:a1, ex:a2) wasInformedBy(ex:i; ex:a1, ex:a2, [ex:param1="a", ex:param2="b"]) </pre> </div> </section> <section id="expression-Start"> <h4><span class="secno">3.1.6 </span>Start</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-startExpression" data-name="prod-startExpression"></a>[<span class="prodNo">14</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">startExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"wasStartedBy" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-eIdentifierOrMarker">eIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></span> )? <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Start maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-wasstartedby">Start</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.id"><span class="attribute" id="start.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.activity"><span class="attribute" id="start.activity">activity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.trigger"><span class="attribute" id="start.trigger">trigger</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifierOrMarker">eIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.starter"><span class="attribute" id="start.starter">starter</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.time"><span class="attribute" id="start.time">time</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.attributes"><span class="attribute" id="start.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_16"><div class="anexampleTitle"><a class="internalDFN" href="#example_16">Example 16</a></div> <pre class="codeexample">wasStartedBy(ex:start; ex:act2, ex:trigger, ex:act1, 2011-11-16T16:00:00, [ex:param="a"]) </pre> <p>Here <span class="name">start</span> is the optional start identifier, <span class="name">ex:act2</span> is the identifier of the started activity, <span class="name">ex:trigger</span> is the optional identifier for the entity that triggered the activity start, <span class="name">ex:act1</span> is the optional identifier for the activity that generated the (possibly unspecified) entity <span class="name">ex:trigger</span>, <span class="name">2011-11-16T16:00:00</span> is the optional start time, and <span class="name"> [ex:param="a"]</span> is a list of optional attributes.</p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">wasStartedBy(ex:act2, -, ex:act1, -) wasStartedBy(ex:act2, -, ex:act1, 2011-11-16T16:00:00) wasStartedBy(ex:act2, -, -, 2011-11-16T16:00:00) wasStartedBy(ex:act2, [ex:param="a"]) wasStartedBy(ex:start; ex:act2, e, ex:act1, 2011-11-16T16:00:00) </pre> </div> <p>Additional semantic rules (<a href="#semantic-rules-summary">Section 3.7.5</a>) apply to <code class="content"><a class="grammarRef" href="#prod-startExpression">startExpression</a></code>.</p> </section> <section id="expression-End"> <h4><span class="secno">3.1.7 </span>End</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-endExpression" data-name="prod-endExpression"></a>[<span class="prodNo">15</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">endExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"wasEndedBy" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-eIdentifierOrMarker">eIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></span> )? <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM End maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-wasendedby">End</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.id"><span class="attribute" id="end.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.activity"><span class="attribute" id="end.activity">activity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.trigger"><span class="attribute" id="end.trigger">trigger</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifierOrMarker">eIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.ender"><span class="attribute" id="end.ender">ender</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.time"><span class="attribute" id="end.time">time</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.attributes"><span class="attribute" id="end.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_17"><div class="anexampleTitle"><a class="internalDFN" href="#example_17">Example 17</a></div> <pre class="codeexample">wasEndedBy(ex:end; ex:act2, ex:trigger, ex:act3, 2011-11-16T16:00:00, [ex:param="a"]) </pre> <p> Here <span class="name">end</span> is the optional end identifier, <span class="name">ex:act2</span> is the identifier of the ending activity, <span class="name">ex:trigger</span> is the identifier of the entity that triggered the activity end, <span class="name">ex:act3</span> is the optional identifier for the activity that generated the (possibly unspecified) entity <span class="name">ex:trigger</span>, <span class="name">2011-11-16T16:00:00</span> is the optional usage time, and <span class="name"> [ex:param="a"]</span> is a list of optional attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">wasEndedBy(ex:act2, ex:trigger, -, -) wasEndedBy(ex:act2, ex:trigger, -, 2011-11-16T16:00:00) wasEndedBy(ex:act2, -, -, 2011-11-16T16:00:00) wasEndedBy(ex:act2, -, -, 2011-11-16T16:00:00, [ex:param="a"]) wasEndedBy(ex:end; ex:act2) wasEndedBy(ex:end; ex:act2, ex:trigger, -, 2011-11-16T16:00:00) </pre> </div> <p>Additional semantic rules (<a href="#semantic-rules-summary">Section 3.7.5</a>) apply to <code class="content"><a class="grammarRef" href="#prod-endExpression">endExpression</a></code>.</p> </section> <section id="expression-Invalidation"> <h4><span class="secno">3.1.8 </span>Invalidation</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-invalidationExpression" data-name="prod-invalidationExpression"></a>[<span class="prodNo">16</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">invalidationExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"wasInvalidatedBy" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></span> )? <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Invalidation maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-wasinvalidatedby">Invalidation</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#invalidation.id"><span class="attribute" id="invalidation.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#invalidation.entity"><span class="attribute" id="invalidation.entity">entity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#invalidation.activity"><span class="attribute" id="invalidation.activity">activity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#invalidation.time"><span class="attribute" id="invalidation.time">time</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-timeOrMarker">timeOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#invalidation.attributes"><span class="attribute" id="invalidation.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_18"><div class="anexampleTitle"><a class="internalDFN" href="#example_18">Example 18</a></div> <pre class="codeexample">wasInvalidatedBy(ex:inv; tr:WD-prov-dm-20111215, ex:edit1, 2011-11-16T16:00:00, [ex:fct="save"]) </pre> <p> Here <span class="name">ex:inv</span> is the optional invalidation identifier, <span class="name">tr:WD-prov-dm-20111215</span> is the identifier of the entity being invalidated, <span class="name">ex:edit1</span> is the optional identifier of the invalidating activity, <span class="name">2011-11-16T16:00:00</span> is the optional invalidation time, and <span class="name"> [ex:fct="save"]</span> is a list of optional attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">wasInvalidatedBy(tr:WD-prov-dm-20111215, ex:edit1, -) wasInvalidatedBy(tr:WD-prov-dm-20111215, ex:edit1, 2011-11-16T16:00:00) wasInvalidatedBy(e2, a1, -, [ex:fct="save"]) wasInvalidatedBy(e2, -, -, [ex:fct="save"]) wasInvalidatedBy(ex:inv; tr:WD-prov-dm-20111215, ex:edit1, -) wasInvalidatedBy(tr:WD-prov-dm-20111215, ex:edit1, -) </pre> </div> <p>Additional semantic rules (<a href="#semantic-rules-summary">Section 3.7.5</a>) apply to <code class="content"><a class="grammarRef" href="#prod-invalidationExpression">invalidationExpression</a></code>.</p> </section> </section> <section id="component2"> <h3><span class="secno">3.2 </span>Component 2: Derivations</h3> <section id="Derivation-Relation"> <h4><span class="secno">3.2.1 </span>Derivation</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-derivationExpression" data-name="prod-derivationExpression"></a>[<span class="prodNo">17</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">derivationExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"wasDerivedFrom" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-gIdentifierOrMarker">gIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-uIdentifierOrMarker">uIdentifierOrMarker</a></span> )? <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Derivation maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-wasderivedfrom">Derivation</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#derivation.id"><span class="attribute" id="derivation.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#derivation.generatedEntity"><span class="attribute" id="derivation.generatedEntity">generatedEntity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#derivation.usedEntity"><span class="attribute" id="derivation.usedEntity">usedEntity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#derivation.activity"><span class="attribute" id="derivation.activity">activity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#derivation.generation"><span class="attribute" id="derivation.generation">generation</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-gIdentifierOrMarker">gIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#derivation.usage"><span class="attribute" id="derivation.usage">usage</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-uIdentifierOrMarker">uIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#derivation.attributes"><span class="attribute" id="derivation.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="anexample-derivation"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-derivation">Example 19</a></div> <pre class="codeexample">wasDerivedFrom(ex:d; e2, e1, a, g2, u1, [ex:comment="a righteous derivation"]) </pre> <p> Here <span class="name">d</span> is the optional derivation identifier, <span class="name">e2</span> is the identifier for the entity being derived, <span class="name">e1</span> is the identifier of the entity from which <span class="name">e2</span> is derived, <span class="name">a</span> is the optional identifier of the activity which used/generated the entities, <span class="name">g2</span> is the optional identifier of the generation, <span class="name">u1</span> is the optional identifier of the usage, and <span class="name">[ex:comment="a righteous derivation"]</span> is a list of optional attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">wasDerivedFrom(e2, e1) wasDerivedFrom(e2, e1, a, g2, u1) wasDerivedFrom(e2, e1, -, g2, u1) wasDerivedFrom(e2, e1, a, -, u1) wasDerivedFrom(e2, e1, a, g2, -) wasDerivedFrom(e2, e1, a, -, -) wasDerivedFrom(e2, e1, -, -, u1) wasDerivedFrom(e2, e1, -, -, -) wasDerivedFrom(ex:d; e2, e1, a, g2, u1) wasDerivedFrom(-; e2, e1, a, g2, u1) </pre> </div> </section> <section id="expression-Revision"> <h4><span class="secno">3.2.2 </span>Revision</h4> <p id="provn-type-Revision"> PROV-N provides no dedicated syntax for Revision. Instead, a Revision <em class="rfc2119" title="MUST">MUST</em> be expressed as a <code class="content"><a class="grammarRef" href="#prod-derivationExpression">derivationExpression</a></code> with attribute <code>prov:type='prov:Revision'</code>.</p> <div class="anexample" id="example_20"><div class="anexampleTitle"><a class="internalDFN" href="#example_20">Example 20</a></div> <pre class="codeexample">wasDerivedFrom(ex:d; e2, e1, a, g2, u1, [prov:type='prov:Revision', ex:comment="a righteous derivation"]) </pre> <p>Here, the derivation from <a href="#anexample-derivation" class="anexample-ref"><span>Example 19</span></a> is extended with a <span class="name">prov:type</span> attribute and value <span class="name">prov:Revision</span>. The expression <code>'prov:Revision'</code> is <code class="content"><a class="grammarRef" href="#prod-convenienceNotation">convenienceNotation</a></code> to denote a <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code> literal (See <a href="#expression-literal">Section 3.7.3. Literal</a>). </p></div> </section> <!-- end revision --> <section id="expression-quotation"> <h4><span class="secno">3.2.3 </span>Quotation</h4> <p id="provn-type-Quotation"> PROV-N provides no dedicated syntax for Quotation. Instead, a Quotation <em class="rfc2119" title="MUST">MUST</em> be expressed as a <code class="content"><a class="grammarRef" href="#prod-derivationExpression">derivationExpression</a></code> with attribute <code>prov:type='prov:Quotation'</code>.</p> <div class="anexample" id="example_21"><div class="anexampleTitle"><a class="internalDFN" href="#example_21">Example 21</a></div> <pre class="codeexample">wasDerivedFrom(ex:quoteId1; ex:blockQuote,ex:blog, ex:act1, ex:g, ex:u, [ prov:type='prov:Quotation' ]) </pre> <p>Here, the derivation is provided with a <span class="name">prov:type</span> attribute and value <span class="name">prov:Quotation</span>. </p></div> </section> <!-- end quotation --> <section id="expression-primary-source"> <h4><span class="secno">3.2.4 </span>Primary Source</h4> <p id="provn-type-Primary-Source"> PROV-N provides no dedicated syntax for PrimarySource. Instead, a PrimarySource <em class="rfc2119" title="MUST">MUST</em> be expressed as a <code class="content"><a class="grammarRef" href="#prod-derivationExpression">derivationExpression</a></code> with attribute <code>prov:type='prov:Primary-Source'</code>.</p> <div class="anexample" id="example_22"><div class="anexampleTitle"><a class="internalDFN" href="#example_22">Example 22</a></div> <pre class="codeexample">wasDerivedFrom(ex:sourceId1; ex:e1, ex:e2, ex:act, ex:g, ex:u, [ prov:type='prov:PrimarySource' ]) </pre> <p>Here, the derivation is provided with a <span class="name">prov:type</span> attribute and value <span class="name">prov:PrimarySource</span>. </p> </div> </section> <!-- end primary source --> </section> <section id="component3"> <h3><span class="secno">3.3 </span>Component 3: Agents, Responsibility, and Influence</h3> <section id="expression-Agent"> <h4><span class="secno">3.3.1 </span>Agent</h4> <!-- <div class='grammar'> <span class="nonterminal">agentExpression</span>&nbsp;::= <span class="name">agent</span> <span class="name">(</span> <span class="nonterminal">identifier</span> <span class="nonterminal">optional-attribute-values</span> <span class="name">)</span> </div> </div> --> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-agentExpression" data-name="prod-agentExpression"></a>[<span class="prodNo">18</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">agentExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"agent" "(" <span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Agent maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-agent">Agent</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#agent.id"><span class="attribute" id="agent.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-identifier">identifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#agent.attributes"><span class="attribute" id="agent.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <p> PROV-N provides no dedicated syntax for Person, Organization, SoftwareAgent. Instead, a Person, an Organization, or a SoftwareAgent <em class="rfc2119" title="MUST">MUST</em> be expressed as an <code class="content"><a class="grammarRef" href="#prod-agentExpression">agentExpression</a></code> with attribute <span id="provn-type-Person"><code>prov:type='prov:Person'</code></span>, <span id="provn-type-Organization"><code>prov:type='prov:Organization'</code></span>, or <span id="provn-type-SoftwareAgent"><code>prov:type='prov:SoftwareAgent'</code></span>, respectively.</p> <div class="anexample" id="example_23"><div class="anexampleTitle"><a class="internalDFN" href="#example_23">Example 23</a></div> <pre class="codeexample">agent(ex:ag4, [ prov:type='prov:Person', ex:name="David" ]) </pre> <p>Here <span class="name">ag</span> is the agent identifier, and <span class="name">[ prov:type='prov:Person', ex:name="David" ]</span> is a list of optional attributes. </p> In the next example, the optional attributes are omitted. <pre class="codeexample">agent(ex:ag4) </pre> </div> </section> <section id="expression-attribution"> <h4><span class="secno">3.3.2 </span>Attribution</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-attributionExpression" data-name="prod-attributionExpression"></a>[<span class="prodNo">19</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">attributionExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"wasAttributedTo" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-agIdentifier">agIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Attribution maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-wasattributedto">Attribution</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#attribution.id"><span class="attribute" id="attribution.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#attribution.entity"><span class="attribute" id="attribution.entity">entity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-identifier">eIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#attribution.agent"><span class="attribute" id="attribution.agent">agent</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-agIdentifier">agIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#attribution.attributes"><span class="attribute" id="attribution.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_24"><div class="anexampleTitle"><a class="internalDFN" href="#example_24">Example 24</a></div> <pre class="codeexample">wasAttributedTo(ex:attr; e, ag, [ex:license='cc:attributionURL' ]) </pre> <p> Here <span class="name">attr</span> is the optional attribution identifier, <span class="name">e</span> is an entity identifier, <span class="name">ag</span> is the identifier of the agent to whom the entity is ascribed, and <span class="name">[ex:license='cc:attributionURL' ]</span> is a list of optional attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">wasAttributedTo(e, ag) wasAttributedTo(e, ag, [ex:license='cc:attributionURL' ]) </pre> </div> </section> <!-- end attribution --> <section id="expression-Association"> <h4><span class="secno">3.3.3 </span>Association</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-associationExpression" data-name="prod-associationExpression"></a>[<span class="prodNo">20</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">associationExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"wasAssociatedWith" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-agIdentifierOrMarker">agIdentifierOrMarker</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-eIdentifierOrMarker">eIdentifierOrMarker</a></span> )? <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Association maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-wasassociatedwith">Association</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.id"><span class="attribute" id="association.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.activity"><span class="attribute" id="association.activity">activity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.agent"><span class="attribute" id="association.agent">agent</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-agIdentifierOrMarker">agIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.plan"><span class="attribute" id="association.plan">plan</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifierOrMarker">eIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.attributes"><span class="attribute" id="association.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <p id="provn-type-Plan"> PROV-N provides no dedicated syntax for Plan. Instead, a Plan <em class="rfc2119" title="MUST">MUST</em> be expressed as an <code class="content"><a class="grammarRef" href="#prod-entityExpression">entityExpression</a></code> with attribute <code>prov:type='prov:Plan'</code>.</p> <div class="anexample" id="example_25"><div class="anexampleTitle"><a class="internalDFN" href="#example_25">Example 25</a></div> <pre class="codeexample">wasAssociatedWith(ex:assoc; ex:a1, ex:ag1, ex:e1, [ex:param1="a", ex:param2="b"]) </pre> <p> Here <span class="name">ex:assoc</span> is the optional attribution identifier, <span class="name">ex:a1</span> is an activity identifier, <span class="name">ex:ag1</span> is the optional identifier of the agent associated to the activity, <span class="name">ex:e1</span> is the optional identifier of the plan used by the agent in the context of the activity, and <span class="name"> [ex:param1="a", ex:param2="b"]</span> is a list of optional attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">wasAssociatedWith(ex:a1, -, ex:e1) wasAssociatedWith(ex:a1, ex:ag1) wasAssociatedWith(ex:a1, ex:ag1, ex:e1) wasAssociatedWith(ex:a1, ex:ag1, ex:e1, [ex:param1="a", ex:param2="b"]) wasAssociatedWith(ex:assoc; ex:a1, -, ex:e1) </pre> </div> <p>Additional semantic rules (<a href="#semantic-rules-summary">Section 3.7.5</a>) apply to <code class="content"><a class="grammarRef" href="#prod-associationExpression">associationExpression</a></code>.</p> <div class="anexample" id="example_26"><div class="anexampleTitle"><a class="internalDFN" href="#example_26">Example 26</a></div> <p>The following expression illustrates a plan. </p><pre class="codeexample"> entity(ex:pl1, [ prov:type='prov:Plan' ]) </pre> </div> <!-- <p><strong>Note:</strong>The production <code class="content"><a class="grammarRef" href="#prod-associationExpression">associationExpression</a></code> allows for expressions <span class="name">wasAssociatedWith(a, -, -)</span> and <span class="name">wasAssociatedWith(-; a, -, -)</span>. However, these expressions are not valid in PROV-N, since at least one of <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.id"><span class='attribute'>id</span></a>, <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.agent"><span class='attribute'>agent</span></a>, <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.plan"><span class='attribute'>plan</span></a>, and <a href="http://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.attributes"><span class='attribute'>attributes</span></a> MUST be present.</p> --> </section> <section id="expression-delegation"> <h4><span class="secno">3.3.4 </span>Delegation</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-delegationExpression" data-name="prod-delegationExpression"></a>[<span class="prodNo">21</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">delegationExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"actedOnBehalfOf" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-agIdentifier">agIdentifier</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-agIdentifier">agIdentifier</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></span> )? <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Delegation maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-actedonbehalfof">Delegation</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#delegation.id"><span class="attribute" id="delegation.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#delegation.delegate"><span class="attribute" id="delegation.delegate">delegate</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-agIdentifier">agIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#delegation.responsible"><span class="attribute" id="delegation.responsible">responsible</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-agIdentifier">agIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#delegation.activity"><span class="attribute" id="delegation.activity">activity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-aIdentifierOrMarker">aIdentifierOrMarker</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#delegation.attributes"><span class="attribute" id="delegation.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_27"><div class="anexampleTitle"><a class="internalDFN" href="#example_27">Example 27</a></div> <pre class="codeexample">actedOnBehalfOf(ex:del1; ex:ag2, ex:ag1, ex:a, [prov:type="contract"]) </pre> <p> Here <span class="name">ex:del1</span> is the optional delegation identifier, <span class="name">ex:ag2</span> is the identifier for the delegate agent, <span class="name">ex:ag1</span> is the identifier of the responsible agent, <span class="name">ex:a</span> is the optional identifier of the activity for which the delegation link holds, and <span class="name">[prov:type="contract"]</span> is a list of optional attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">actedOnBehalfOf(ex:ag1, ex:ag2) actedOnBehalfOf(ex:ag1, ex:ag2, ex:a) actedOnBehalfOf(ex:ag1, ex:ag2, -, [prov:type="delegation"]) actedOnBehalfOf(ex:ag2, ex:ag3, ex:a, [prov:type="contract"]) actedOnBehalfOf(ex:del1; ex:ag2, ex:ag3, ex:a, [prov:type="contract"]) </pre> </div> </section> <section id="expression-influence"> <h4><span class="secno">3.3.5 </span>Influence</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-influenceExpression" data-name="prod-influenceExpression"></a>[<span class="prodNo">22</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">influenceExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"wasInfluencedBy" "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Influence maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-wasinfluencedby">Influence</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#influence.id"><span class="attribute" id="influence.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#influence.influencee"><span class="attribute" id="influence.influencee">influencee</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#influence.influencer"><span class="attribute" id="influence.influencer">influencer</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#influence.attributes"><span class="attribute" id="influence.attributes">attributes</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_28"><div class="anexampleTitle"><a class="internalDFN" href="#example_28">Example 28</a></div> <pre class="codeexample">wasInfluencedBy(ex:infl1;e2,e1,[ex:param="a"]) </pre> <p> Here, <span class="name">ex:infl1</span> is the optional influence identifier, <span class="name">ex:e2</span> is an entity identifier, <span class="name">ex:e1</span> is the identifier for an ancestor entity that <span class="name">ex:e2</span> is influenced by, and <span class="name">[ex:param="a"]</span> is the optional set of attributes. </p> The remaining examples show cases where some of the optionals are omitted. <pre class="codeexample">wasInfluencedBy(ex:e2,ex:e1) wasInfluencedBy(ex:e2,ex:e1,[ex:param="a"]) wasInfluencedBy(ex:infl1; ex:e2,ex:e1) </pre> </div> </section> </section> <section id="component4"> <h3><span class="secno">3.4 </span>Component 4: Bundles</h3> <section id="expression-bundle-constructor"> <h4><span class="secno">3.4.1 </span>Bundle Constructor</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-bundle" data-name="prod-bundle"></a>[<span class="prodNo">23</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">bundle</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"bundle" <span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span> (<span class="prod"><a class="grammarRef" href="#prod-namespaceDeclarations">namespaceDeclarations</a></span>)? (<span class="prod"><a class="grammarRef" href="#prod-expression">expression</a></span>)* "endBundle"</code></td> </tr> </tbody> </table> <p>Bundles cannot be nested. It is for this reason that a <code><a class="grammarRef" href="#prod-bundle">bundle</a></code> is not defined as an <code><a class="grammarRef" href="#prod-expression">expression</a></code>, to prevent the occurrence of a <code><a class="grammarRef" href="#prod-bundle">bundle</a></code> inside another <code><a class="grammarRef" href="#prod-bundle">bundle</a></code>.</p> <p>Each identifier occurring in a bundle, including the bundle identifier itself, <em class="rfc2119" title="MUST">MUST</em> be interpreted with respect to the namespace declarations of that bundle, or if the identifier's prefix is not declared in the bundle, with respect to the namespace declarations in the document. </p> <p>The following table summarizes how each constituent of a PROV-DM bundle maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-bundle-constructor">Bundle</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#bundle.constructor.id"><span class="attribute" id="bundle.id">id</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-identifier">identifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#bundle.constructor.descriptions"><span class="attribute" id="bundle.descriptions">descriptions</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-expression">expression</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-namespaceDeclaration"><span class="attribute" id="namespaceDeclaration">namespaceDeclaration</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-namespaceDeclarations">namespaceDeclarations</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="anexample-bundle1"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-bundle1">Example 29</a></div> <pre class="codeexample">bundle ex:author-view prefix ex &lt;http://example.org/&gt; agent(ex:Paolo, [ prov:type='prov:Person' ]) agent(ex:Simon, [ prov:type='prov:Person' ]) //... endBundle </pre> <p> Here <span class="name">ex:author-view</span> is the name of the bundle. </p> </div> </section> <section id="expression-bundle-type"> <h4><span class="secno">3.4.2 </span>Bundle Type</h4> <p id="provn-type-Bundle"> When described, a Bundle <em class="rfc2119" title="MUST">MUST</em> be expressed as an <code class="content"><a class="grammarRef" href="#prod-entityExpression">entityExpression</a></code> with attribute <code>prov:type='prov:Bundle'</code>.</p> <div class="anexample" id="example_30"><div class="anexampleTitle"><a class="internalDFN" href="#example_30">Example 30</a></div> <p>The bundle of <a href="#anexample-bundle1" class="anexample-ref"><span>Example 29</span></a> can be referred to as an entity, and its provenance described.</p> <pre class="codeexample"> entity(ex:author-view, [ prov:type='prov:Bundle' ]) </pre> </div> </section> </section> <section id="component5"> <h3><span class="secno">3.5 </span>Component 5: Alternate Entities</h3> <section id="expression-alternate"> <h4><span class="secno">3.5.1 </span>Alternate</h4> <!-- <div class='grammar'> <span class="nonterminal">alternateExpression</span>&nbsp;::= <span class="name">alternateOf</span> <span class="name">(</span> <span class="nonterminal">eIdentifier</span> <span class="name">,</span> <span class="nonterminal">eIdentifier</span> <span class="name">)</span> </div> --> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-alternateExpression" data-name="prod-alternateExpression"></a>[<span class="prodNo">24</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">alternateExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"alternateOf" "(" <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Alternate maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-alternateof">Alternate</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#alternate.alternate1"><span class="attribute" id="alternate.alternate1">alternate1</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#alternate.alternate2"><span class="attribute" id="alternate.alternate2">alternate2</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_31"><div class="anexampleTitle"><a class="internalDFN" href="#example_31">Example 31</a></div> <pre class="codeexample">alternateOf(tr:WD-prov-dm-20111215,ex:alternate-20111215) </pre> Here <span class="name">tr:WD-prov-dm-20111215</span> is alternate for <span class="name">ex:alternate-20111215</span>. </div> </section> <section id="expression-specialization"> <h4><span class="secno">3.5.2 </span>Specialization</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-specializationExpression" data-name="prod-specializationExpression"></a>[<span class="prodNo">25</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">specializationExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"specializationOf" "(" <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Specialization maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-specializationof">Specialization</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#specialization.specificEntity"><span class="attribute" id="specialization.specificEntity">specificEntity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#specialization.generalEntity"><span class="attribute" id="specialization.generalEntity">generalEntity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_32"><div class="anexampleTitle"><a class="internalDFN" href="#example_32">Example 32</a></div> <pre class="codeexample">specializationOf(tr:WD-prov-dm-20111215,tr:prov-dm) </pre> Here <span class="name">tr:WD-prov-dm-20111215</span> is a specialization of <span class="name">tr:prov-dm</span>. </div> </section> </section> <section id="component6"> <h3><span class="secno">3.6 </span>Component 6: Collections</h3> <section id="expression-collection"> <h4><span class="secno">3.6.1 </span>Collection</h4> <p> PROV-N provides no dedicated syntax for Collection and EmptyCollection. Instead, a Collection or an EmptyCollection <em class="rfc2119" title="MUST">MUST</em> be expressed as an <code class="content"><a class="grammarRef" href="#prod-entityExpression">entityExpression</a></code> with attribute <span id="provn-type-Collection"><code>prov:type='prov:Collection'</code></span>, or <span id="provn-type-EmptyCollection"><code>prov:type='prov:EmptyCollection'</code></span>, respectively.</p> <div class="anexample" id="example_33"><div class="anexampleTitle"><a class="internalDFN" href="#example_33">Example 33</a></div> <p>The following two expressions are about a collection and an empty collection, respectively. </p><pre class="codeexample"> entity(ex:col1, [ prov:type='prov:Collection' ]) entity(ex:col2, [ prov:type='prov:EmptyCollection' ]) </pre> </div> </section> <section id="expression-collection-membership"> <h4><span class="secno">3.6.2 </span>Membership</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-membershipExpression" data-name="prod-membershipExpression"></a>[<span class="prodNo">26</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">membershipExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"hadMember" "(" <span class="prod"><a class="grammarRef" href="#prod-cIdentifier">cIdentifier</a></span> "," <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> ")"</code></td> </tr> </tbody> </table> <p>The following table summarizes how each constituent of a PROV-DM Membership maps to a PROV-N syntax element.</p> <div style="text-align: left; "> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <tbody><tr><td><b><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-hadmember">Membership</a></b></td><td><b>Non-Terminal</b></td></tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#membership.collection"><span class="attribute" id="membership.collection">collection</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-cIdentifier">cIdentifier</a></code></td></tr> <tr><td><a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#membership.entity"><span class="attribute" id="membership.entity">entity</span></a></td><td><code class="content"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></code></td></tr> </tbody></table> </div> <div class="anexample" id="example_34"><div class="anexampleTitle"><a class="internalDFN" href="#example_34">Example 34</a></div> <pre class="codeexample"> hadMember(ex:c, ex:e1) // ex:c contained ex:e1 hadMember(ex:c, ex:e2) // ex:c contained ex:e2 </pre> <p> Here <span class="name">ex:c</span> is the identifier for the collection whose membership is stated, and <span class="name">ex:e1</span> and <span class="name">ex:e2</span> are the entities that are members of collection <span class="name">ex:c</span>. <!-- <span class="name">true</span> is the complete flag indicating that the collection member is believed to be closed, and <span class="name">[prov:label="A beautiful collection"]</span> is the optional set of attributes. </p> --> </p></div> </section> </section> <!-- end collections--> <section id="subexpressions"> <h3><span class="secno">3.7 </span>Further Expressions</h3> This section defines further expressions of PROV-N. <section id="expression-identifier"> <h4><span class="secno">3.7.1 </span>Identifier</h4> <p>Various kinds of identifiers are used in productions.</p> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-eIdentifier" data-name="prod-eIdentifier"></a>[<span class="prodNo">27</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">eIdentifier</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-aIdentifier" data-name="prod-aIdentifier"></a>[<span class="prodNo">28</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">aIdentifier</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-agIdentifier" data-name="prod-agIdentifier"></a>[<span class="prodNo">29</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">agIdentifier</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-gIdentifier" data-name="prod-gIdentifier"></a>[<span class="prodNo">30</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">gIdentifier</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-uIdentifier" data-name="prod-uIdentifier"></a>[<span class="prodNo">31</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">uIdentifier</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-cIdentifier" data-name="prod-cIdentifier"></a>[<span class="prodNo">32</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">cIdentifier</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-identifier">identifier</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-eIdentifierOrMarker" data-name="prod-eIdentifierOrMarker"></a>[<span class="prodNo">33</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">eIdentifierOrMarker</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-eIdentifier">eIdentifier</a></span> | "-" )</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-aIdentifierOrMarker" data-name="prod-aIdentifierOrMarker"></a>[<span class="prodNo">34</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">aIdentifierOrMarker</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-aIdentifier">aIdentifier</a></span> | "-" )</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-agIdentifierOrMarker" data-name="prod-agIdentifierOrMarker"></a>[<span class="prodNo">35</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">agIdentifierOrMarker</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-agIdentifier">agIdentifier</a></span> | "-" )</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-gIdentifierOrMarker" data-name="prod-gIdentifierOrMarker"></a>[<span class="prodNo">36</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">gIdentifierOrMarker</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-gIdentifier">gIdentifier</a></span> | "-" )</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-uIdentifierOrMarker" data-name="prod-uIdentifierOrMarker"></a>[<span class="prodNo">37</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">uIdentifierOrMarker</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-uIdentifier">uIdentifier</a></span> | "-" )</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-identifier" data-name="prod-identifier"></a>[<span class="prodNo">38</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">identifier</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></span></code></td> </tr> </tbody> </table> <p> A <dfn id="dfn-qualifiedName">qualified name</dfn> is a name subject to namespace interpretation. It consists of a namespace, denoted by an optional prefix, and a local name. The PROV data model stipulates that a qualified name can be mapped to an IRI by concatenating the IRI associated with the prefix and the local part. This section provides the exact details of this procedure for qualified names defined by PROV-N. </p> <p>A qualified name's prefix is <em class="rfc2119" title="OPTIONAL">OPTIONAL</em>. If a prefix occurs in a qualified name, the prefix <em class="rfc2119" title="MUST">MUST</em> refer to a namespace declared in a namespace declaration. In the absence of prefix, the qualified name belongs to the default namespace.</p> <!-- <div class='grammar'> <span class="nonterminal">eIdentifier</span>&nbsp;::= <span class="nonterminal">identifier</span><br/> <span class="nonterminal">aIdentifier</span>&nbsp;::= <span class="nonterminal">identifier</span><br/> <span class="nonterminal">agIdentifier</span>&nbsp;::= <span class="nonterminal">identifier</span><br/> <span class="nonterminal">gIdentifier</span>&nbsp;::= <span class="nonterminal">identifier</span><br/> <span class="nonterminal">identifier</span>&nbsp;::= <span class="nonterminal">QUALIFIED_NAME</span><br/> <span class="nonterminal">eIdentifier</span>&nbsp;::= <span class="nonterminal">identifier</span> <em>(intended to denote an entity)</em><br/> <span class="nonterminal">aIdentifier</span>&nbsp;::= <span class="nonterminal">identifier</span> <em>(intended to denote an activity)</em><br/> <span class="nonterminal">agIdentifier</span>&nbsp;::= <span class="nonterminal">identifier</span> <em>(intended to denote an agent)</em><br/> <span class="nonterminal">gIdentifier</span>::= <span class="nonterminal">identifier</span> <em>(intended to denote a generation)</em><br/> <span class="nonterminal">uIdentifier</span>::= <span class="nonterminal">identifier</span> <em>(intended to denote a usage)</em><br/> <span class="nonterminal">nIdentifier</span>::= <span class="nonterminal">identifier</span> <em>(intended to denote a note)</em><br/> <span class="nonterminal">cIdentifier</span>::= <span class="nonterminal">identifier</span> <em>(intended to denote a collection)</em><br/> </div> --> <p>A PROV-N qualified name (production <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code>) has a more permissive syntax than XML's <code class="content"><a href="https://www.w3.org/TR/2009/REC-xml-names-20091208/#NT-QName">QName</a></code> [<cite><a class="bibref" href="#bib-XML-NAMES">XML-NAMES</a></cite>] and SPARQL <code class="content"><a href="https://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/#rPrefixedName">PrefixedName</a></code> [<cite><a class="bibref" href="#bib-RDF-SPARQL-QUERY">RDF-SPARQL-QUERY</a></cite>]. A <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code> consists of a prefix and a local part. Prefixes follow the production <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></code> defined by SPARQL [<cite><a class="bibref" href="#bib-RDF-SPARQL-QUERY">RDF-SPARQL-QUERY</a></cite>]. Local parts have to be conformant with <code class="content"><a class="grammarRef" href="#prod-PN_LOCAL">PN_LOCAL</a></code>, which extends the original SPARQL <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_LOCAL">PN_LOCAL</a></code> definition by allowing further characters (see <code class="content"><a class="grammarRef" href="#prod-PN_CHARS_OTHERS">PN_CHARS_OTHERS</a></code>):</p> <ul> <li> an extra set of characters commonly encountered in IRIs; </li><li> %-escaped characters (see <code class="content"><a class="grammarRef" href="#prod-PERCENT">PERCENT</a></code>) to be interpreted as per Section 3.1. Mapping of IRIs to URIs in [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>];</li> <li> and \-escaped characters (see <code class="content"><a class="grammarRef" href="#prod-PN_CHARS_ESC">PN_CHARS_ESC</a></code>).</li> </ul> <p>Given that '=' (equal), ''' (single quote), '(' (left bracket), ')' (right bracket), ',' (comma), ':' (colon), ';' (semi-colon), '"' (double quote), <!-- " --> '[' (left square bracket), ']' (right square bracket) are used by the PROV notation as delimiters, they are not allowed in local parts. Instead, among those characters, those that are permitted in SPARQL <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rIRI_REF">IRI_REF</a></code> are also allowed in <code class="content"><a class="grammarRef" href="#prod-PN_LOCAL">PN_LOCAL</a></code> if they are escaped by the '\' (backslash character) as per production <code class="content"><a class="grammarRef" href="#prod-PN_CHARS_ESC">PN_CHARS_ESC</a></code>. Furthermore, '.' (dot), ':' (colon), '-' (hyphen) can also be \-escaped.</p> <p>A PROV-N qualified name <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code> can be mapped to a valid IRI [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] by concatenating the namespace denoted its local name <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></code> to the local name <code class="content"><a class="grammarRef" href="#prod-PN_LOCAL">PN_LOCAL</a></code>, whose \-escaped characters have been unescaped by dropping the character '\' (backslash).</p> <table class="grammar"> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-QUALIFIED_NAME" data-name="prod-QUALIFIED_NAME"></a>[<span class="prodNo">52</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">QUALIFIED_NAME</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></span> ":" )? <span class="prod"><a class="grammarRef" href="#prod-PN_LOCAL">PN_LOCAL</a></span><br> | <span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></span> ":"</code></td> </tr> </tbody> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-PN_LOCAL" data-name="prod-PN_LOCAL"></a>[<span class="prodNo">53</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">PN_LOCAL</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_CHARS_U">PN_CHARS_U</a></span> | [0-9] | <span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_OTHERS">PN_CHARS_OTHERS</a></span> ) ( ( <span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_CHARS">PN_CHARS</a></span> | "." | <span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_OTHERS">PN_CHARS_OTHERS</a></span> )* ( <span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_CHARS">PN_CHARS</a></span> | <span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_OTHERS">PN_CHARS_OTHERS</a></span> ) )?</code></td> </tr> </tbody> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-PN_CHARS_OTHERS" data-name="prod-PN_CHARS_OTHERS"></a>[<span class="prodNo">54</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">PN_CHARS_OTHERS</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"/"<br> | "@"<br> | "~"<br> | "&amp;"<br> | "+"<br> | "*"<br> | "?"<br> | "#"<br> | "$"<br> | "!"<br> | <span class="prod"><a class="grammarRef" href="#prod-PERCENT">PERCENT</a></span><br> | <span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_ESC">PN_CHARS_ESC</a></span></code></td> </tr> </tbody> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-PN_CHARS_ESC" data-name="prod-PN_CHARS_ESC"></a>[<span class="prodNo">55</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">PN_CHARS_ESC</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"\" ( "=" | "'" | "(" | ")" | "," | "-" | ":" | ";" | "[" | "]" | "." )</code></td> </tr> </tbody> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-PERCENT" data-name="prod-PERCENT"></a>[<span class="prodNo">56</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">PERCENT</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"%" <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span></code></td> </tr> </tbody> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-HEX" data-name="prod-HEX"></a>[<span class="prodNo">57</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">HEX</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">[0-9]<br> | [A-F]<br> | [a-f]</code></td> </tr> </tbody> </table> <div class="anexample" id="anexample-qualified-name"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-qualified-name">Example 35</a></div> <p>Examples of articles on the BBC Web site seen as entities.</p> <pre class="codeexample">document prefix bbc &lt;http://www.bbc.co.uk/&gt; prefix bbcNews &lt;http://www.bbc.co.uk/news/&gt; entity(bbc:) // bbc site itself entity(bbc:news/) // bbc news entity(bbc:news/world-asia-17507976) // a given news article entity(bbcNews:) // an alternative way of referring to the bbc news site endDocument </pre> </div> <div class="anexample" id="anexample-qualified-name2"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-qualified-name2">Example 36</a></div> <p>Examples of entities with declared and default namespace.</p> <pre class="codeexample">document default &lt;http://example.org/2/&gt; prefix ex &lt;http://example.org/1/&gt; entity(ex:a) // corresponds to IRI http://example.org/1/a entity(ex:a/) // corresponds to IRI http://example.org/1/a/ entity(ex:a/b) // corresponds to IRI http://example.org/1/a/b entity(b) // corresponds to IRI http://example.org/2/b entity(ex:1234) // corresponds to IRI http://example.org/1/1234 entity(4567) // corresponds to IRI http://example.org/2/4567 entity(c/) // corresponds to IRI http://example.org/2/c/ entity(ex:/) // corresponds to IRI http://example.org/1// endDocument </pre> </div> <div class="anexample" id="anexample-qualified-name3"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-qualified-name3">Example 37</a></div> <p>Examples of \-escaped characters.</p> <pre class="codeexample">document prefix ex &lt;http://example.org/&gt; default &lt;http://example.org/default&gt; entity(ex:foo?a\=1) // corresponds to IRI http://example.org/foo?a=1 entity(ex:\-) // corresponds to IRI http://example.org/- entity(ex:?fred\=fish%20soup) // corresponds to IRI http://example.org/?fred=fish%20soup used(-;a1,e1,-) // identifier not specified for usage used(\-;a1,e1,-) // usage identifier corresponds to http://example.org/default- endDocument </pre> </div> <p><b>Note:</b> The productions for the terminals <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code> and <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></code> are conflicting. Indeed, for a tokenizer operating independently of the parse tree, <code>abc</code> matches both <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code> and <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></code>. In the context of a <code class="content"><a class="grammarRef" href="#prod-namespaceDeclaration">namespaceDeclaration</a></code>, a tokenizer should give preference to the production <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></code>. </p> </section> <section id="expression-attribute"> <h4><span class="secno">3.7.2 </span>Attribute</h4> <!-- <div class='grammar'> <span class="nonterminal">attribute</span>&nbsp;::= <span class="nonterminal">qualifiedName</span><br/> </div> --> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-attribute" data-name="prod-attribute"></a>[<span class="prodNo">39</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">attribute</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></span></code></td> </tr> </tbody> </table> <p>The reserved attributes in the PROV namespace are the following. Their meaning is explained by [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>] (see <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute">Section 5.7.2: Attribute</a>). </p> <ol> <li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute-label"><span class="name">prov:label</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute-location"><span class="name">prov:location</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute-role"><span class="name">prov:role</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute-type"><span class="name">prov:type</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute-value"><span class="name">prov:value</span></a> </li></ol> </section> <section id="expression-literal"> <h4><span class="secno">3.7.3 </span>Literal</h4> <!-- <div class='grammar'> <span class="nonterminal">Literal</span> &nbsp;::= <span class="nonterminal">typedLiteral</span> | <span class="nonterminal">convenienceNotation</span> <br/> <span class="nonterminal">typedLiteral</span> ::= <span class="nonterminal">quotedString</span> <span class="name">%%</span> <span class="nonterminal">datatype</span><br/> <span class="nonterminal">datatype</span> ::= <span class="nonterminal">qualifiedName</span> <em> listed in Table <a href="#permitted-datatypes">permitted-datatypes</a></em><br/> <span class="nonterminal">convenienceNotation</span> &nbsp;::= <span class="nonterminal">stringLiteral</span> | <span class="nonterminal">intLiteral</span><br/> <span class="nonterminal">stringLiteral</span> ::= <span class="nonterminal">quotedString</span><br/> <span class="nonterminal">quotedString</span> ::= <em>a finite sequence of characters in which &quot; (#x22) and \ (#x5C) occur only in pairs of the form \&quot; (#x5C, #x22) and \\ (#x5C, #x5C), enclosed in a pair of &quot; (#x22) characters</em><br/> <span class="nonterminal">intLiteral</span> ::= <em>a finite-length non-empty sequence of decimal digits (#x30-#x39) with an optional leading negative sign (-)</em> </div> --> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-literal" data-name="prod-literal"></a>[<span class="prodNo">40</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">literal</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-typedLiteral">typedLiteral</a></span><br> | <span class="prod"><a class="grammarRef" href="#prod-convenienceNotation">convenienceNotation</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-typedLiteral" data-name="prod-typedLiteral"></a>[<span class="prodNo">41</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">typedLiteral</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-STRING_LITERAL">STRING_LITERAL</a></span> "%%" <span class="prod"><a class="grammarRef" href="#prod-datatype">datatype</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-datatype" data-name="prod-datatype"></a>[<span class="prodNo">42</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">datatype</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-convenienceNotation" data-name="prod-convenienceNotation"></a>[<span class="prodNo">43</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">convenienceNotation</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-STRING_LITERAL">STRING_LITERAL</a></span> (<span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rLANGTAG">LANGTAG</a></span>)?<br> | <span class="prod"><a class="grammarRef" href="#prod-INT_LITERAL">INT_LITERAL</a></span><br> | <span class="prod"><a class="grammarRef" href="#prod-QUALIFIED_NAME_LITERAL">QUALIFIED_NAME_LITERAL</a></span></code></td> </tr> </tbody> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-STRING_LITERAL" data-name="prod-STRING_LITERAL"></a>[<span class="prodNo">58</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">STRING_LITERAL</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rSTRING_LITERAL2">STRING_LITERAL2</a></span><br> | <span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rSTRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a></span></code></td> </tr> </tbody> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-INT_LITERAL" data-name="prod-INT_LITERAL"></a>[<span class="prodNo">60</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">INT_LITERAL</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">("-")? (<span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span>)+</code></td> </tr> </tbody> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-DIGIT" data-name="prod-DIGIT"></a>[<span class="prodNo">62</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">DIGIT</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">[0-9]</code></td> </tr> </tbody> <tbody class="term"> <tr style="vertical-align: baseline; "> <td><a id="prod-QUALIFIED_NAME_LITERAL" data-name="prod-QUALIFIED_NAME_LITERAL"></a>[<span class="prodNo">61</span>]&nbsp;&nbsp;&nbsp;</td> <td>&lt;<code class="production term">QUALIFIED_NAME_LITERAL</code>&gt;</td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"'" <span class="prod"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></span> "'"</code></td> </tr> </tbody> </table> <p>In production <code class="content"><a class="grammarRef" href="#prod-datatype">datatype</a></code>, the <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code> is used to denote a <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-value">PROV data type</a> [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>]. </p><p>The non terminals <code class="content"><a class="grammarRef" href="#prod-STRING_LITERAL">STRING_LITERAL</a></code>, <code class="content"><a class="grammarRef" href="#prod-INT_LITERAL">INT_LITERAL</a></code>, and <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME_LITERAL">QUALIFIED_NAME_LITERAL</a></code> are syntactic sugar for quoted strings with datatype <code class="content"><a href="https://www.w3.org/TR/xmlschema11-2/#string"><span class="name">xsd:string</span></a></code>, <code class="content"><a href="https://www.w3.org/TR/xmlschema11-2/#int"><span class="name">xsd:int</span></a></code>, and <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">prov:QUALIFIED_NAME</a></code> respectively. </p> <p> In particular, a Literal may be an IRI-typed string (with datatype <span class="name">xsd:anyURI</span>); such IRI has no specific interpretation in the context of PROV.</p> <p><b>Note:</b> The productions for terminals <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code> and <code class="content"><a class="grammarRef" href="#prod-INT_LITERAL">INT_LITERAL</a></code> are conflicting. Indeed, for a tokenizer operating independently of the parse tree, <code>1234</code> matches both <code class="content"><a class="grammarRef" href="#prod-INT_LITERAL">INT_LITERAL</a></code> and <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code> (local name without prefix). In the context of a <code class="content"><a class="grammarRef" href="#prod-convenienceNotation">convenienceNotation</a></code>, a tokenizer should give preference to the production <code class="content"><a class="grammarRef" href="#prod-INT_LITERAL">INT_LITERAL</a></code>. </p> <div class="anexample" id="anexample-convenience"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-convenience">Example 38</a></div> <p> The following examples illustrate convenience notations.</p> <p>The two following expressions are strings; if <code class="content"><a class="grammarRef" href="#prod-datatype">datatype</a></code> is not specified, it is <code>xsd:string</code>.</p> <pre class="codeexample"> "abc" %% xsd:string "abc" </pre> <p>The two following expressions are integers. For convenience, numbers, expressed as digits optionally preceded by a minus sign, can occur without quotes.</p> <pre class="codeexample"> "1234" %% xsd:integer 1234 "-1234" %% xsd:integer -1234 </pre> <p>The two following expressions are qualified names. Values of type qualified name can be conveniently expressed within single quotes.</p> <pre class="codeexample"> "ex:value" %% prov:QUALIFIED_NAME 'ex:value' </pre> </div> <div class="anexample" id="anexample-value"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-value">Example 39</a></div> <p> The following examples respectively are the string "abc", the string (in French) "bonjour", the integer number 1, and the IRI "http://example.org/foo".</p> <pre class="codeexample"> "abc" "bonjour"@fr "1" %% xsd:integer "http://example.org/foo" %% xsd:anyURI </pre> <p>The following examples respectively are the floating point number 1.01 and the boolean true.</p> <pre class="codeexample"> "1.01" %% xsd:float "true" %% xsd:boolean </pre> </div> <section id="expression-types"> <h5><span class="secno">3.7.3.1 </span>Reserved Type Values</h5> <p>The reserved type values in the PROV namespace are the following. Their meaning is defined [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>] (see <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-attribute-type">Section 5.7.2.4: prov:type</a>). </p> <ol> <li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#term-bundle-entity"><span class="name">prov:Bundle</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#concept-collection"><span class="name">prov:Collection</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#concept-empty-collection"><span class="name">prov:EmptyCollection</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#concept-organization"><span class="name">prov:Organization</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#concept-person"><span class="name">prov:Person</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#concept-plan"><span class="name">prov:Plan</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-primary-source"><span class="name">prov:PrimarySource</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-quotation"><span class="name">prov:Quotation</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#dfn-revision"><span class="name">prov:Revision</span></a> </li><li> <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#concept-software-agent"><span class="name">prov:SoftwareAgent</span></a> </li></ol> <div class="anexample" id="anexample-types"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-types">Example 40</a></div> <p>The agent <span class="name">ag</span> is a person (type: <span class="name">prov:Person</span>), whereas the entity <span class="name">pl</span> is a plan (type: <span class="name">prov:Plan</span>).</p> <pre class="codeexample">agent(ag, [ prov:type='prov:Person' ]) entity(pl, [ prov:type='prov:Plan' ]) </pre> </div> </section> <section id="expression-Time"> <h5><span class="secno">3.7.3.2 </span>Time Values</h5> <p><dfn id="dfn-time">Time instants</dfn> are defined according to xsd:dateTime [<cite><a class="bibref" href="#bib-XMLSCHEMA11-2">XMLSCHEMA11-2</a></cite>].</p> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-time" data-name="prod-time"></a>[<span class="prodNo">44</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">time</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/xmlschema11-2/#nt-dateTimeRep">DATETIME</a></span></code></td> </tr> </tbody> </table> <div class="anexample" id="anexample-time"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-time">Example 41</a></div> <p>The third argument in the following usage expression is a time instance, namely 4pm on 2011-11-16.</p> <pre class="codeexample">used(ex:act2, ar3:0111, 2011-11-16T16:00:00) </pre> </div> </section> </section> <section id="expression-NamespaceDeclaration"> <h4><span class="secno">3.7.4 </span>Namespace Declaration</h4> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-namespaceDeclarations" data-name="prod-namespaceDeclarations"></a>[<span class="prodNo">45</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">namespaceDeclarations</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-defaultNamespaceDeclaration">defaultNamespaceDeclaration</a></span> | <span class="prod"><a class="grammarRef" href="#prod-namespaceDeclaration">namespaceDeclaration</a></span> ) (<span class="prod"><a class="grammarRef" href="#prod-namespaceDeclaration">namespaceDeclaration</a></span>)*</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-namespaceDeclaration" data-name="prod-namespaceDeclaration"></a>[<span class="prodNo">46</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">namespaceDeclaration</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"prefix" <span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></span> <span class="prod"><a class="grammarRef" href="#prod-namespace">namespace</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-defaultNamespaceDeclaration" data-name="prod-defaultNamespaceDeclaration"></a>[<span class="prodNo">47</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">defaultNamespaceDeclaration</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"default" <span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rIRI_REF">IRI_REF</a></span></code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-namespace" data-name="prod-namespace"></a>[<span class="prodNo">48</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">namespace</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rIRI_REF">IRI_REF</a></span></code></td> </tr> </tbody> </table> <p>A <code><a class="grammarRef" href="#prod-namespaceDeclaration">namespaceDeclaration</a></code> consists of a binding between a prefix and a namespace. Every qualified name with this prefix in the scope of this declaration belongs to this namespace. A <code><a class="grammarRef" href="#prod-defaultNamespaceDeclaration">defaultNamespaceDeclaration</a></code> consists of a namespace. Every qualified name without prefix in the scope of this declaration belongs to this namespace. Scope of a prefix-namespace declaration is specified as follows:</p> <ul> <li> The scope of a prefix-namespace declaration directly occurring in a <code><a class="grammarRef" href="#prod-bundle">bundle</a></code> is the <code><a class="grammarRef" href="#prod-bundle">bundle</a></code> itself.</li> <li> The scope of a prefix-namespace declaration directly occurring in a <code><a class="grammarRef" href="#prod-document">document</a></code> is the <code><a class="grammarRef" href="#prod-document">document</a></code> including the <code><a class="grammarRef" href="#prod-bundle">bundles</a></code> it contains but excluding those <code><a class="grammarRef" href="#prod-bundle">bundles</a></code> that re-declare this prefix.</li> </ul> <p>A set of namespace declarations <code><a class="grammarRef" href="#prod-namespaceDeclarations">namespaceDeclarations</a></code> <em class="rfc2119" title="MUST NOT">MUST NOT</em> re-declare the same prefix.</p> <p>A set of namespace declarations <code><a class="grammarRef" href="#prod-namespaceDeclarations">namespaceDeclarations</a></code> occurring in a bundle <em class="rfc2119" title="MAY">MAY</em> re-declare a prefix declared in a surrounding document.</p> <p>A namespace declaration <code><a class="grammarRef" href="#prod-namespaceDeclaration">namespaceDeclaration</a></code> <em class="rfc2119" title="MUST NOT">MUST NOT</em> declare prefixes <span class="name">prov</span> and <span class="name">xsd</span> (see <a href="#namespace-table">Table 1</a> for their IRI).</p> <div class="anexample" id="anexample-namespace"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-namespace">Example 42</a></div> <p>The following example declares three namespaces, one default, and two with explicit prefixes <span class="name">ex1</span> and <span class="name">ex2</span>.</p> <pre class="codeexample">document default &lt;http://example.org/0/&gt; prefix ex1 &lt;http://example.org/1/&gt; prefix ex2 &lt;http://example.org/2/&gt; ... endDocument </pre> </div> <div class="anexample" id="anexample-namespace-scope"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-namespace-scope">Example 43</a></div> <p>In the following example, a document declares a default namespace and the occurrence of <code>e001</code> directly occurring in the document refers to that namespace. A nested bundle also declares a default namespace, but with a different IRI. In that bundle, the occurrences of <code>e001</code>, including the bundle name, refer to the latest default namespace.</p> <pre class="codeexample">document default &lt;http://example.org/1/&gt; entity(e001) // IRI: http://example.org/1/e001 bundle e001 // IRI: http://example.org/2/e001 default &lt;http://example.org/2/&gt; entity(e001) // IRI: http://example.org/2/e001 endBundle endDocument </pre> </div> <div class="anexample" id="anexample-namespace-scope2"><div class="anexampleTitle"><a class="internalDFN" href="#anexample-namespace-scope2">Example 44</a></div> <p>In the following example, a document declares a namespace with prefix <code>ex</code> and the occurrence of <code>ex:e001</code> directly occurring in the document refers to that namespace. In a nested bundle, the occurrence of <code>ex:e001</code> also refers to the same namespace.</p> <pre class="codeexample">document prefix ex &lt;http://example.org/1/&gt; entity(ex:e001) // IRI: http://example.org/1/e001 bundle b entity(ex:001) // IRI: http://example.org/1/e001 endBundle endDocument </pre> </div> </section> <section id="semantic-rules-summary"> <h4><span class="secno">3.7.5 </span>Summary of additional semantic rules</h4> <p>Some of the grammar productions allow for expressions that are syntactically correct, and yet according to [<cite><a class="bibref" href="#bib-PROV-DM">PROV-DM</a></cite>] they are not acceptable, because additional semantic rules are defined for those expressions. The following table provides a summary of such expressions along with examples of syntactically correct but unacceptable forms, and the additional semantic rules.</p> <div style="text-align: left;"> <table class="thinborder" style="margin-left: auto; margin-right: auto;"> <caption id="validity-rules-table">Table 2: Summary of additional semantic rules for grammar productions</caption> <tbody><tr><td><b>Production</b></td> <td><b>Examples of syntactically correct expressions</b></td> <td><b>Additional semantic rule</b></td> </tr> <tr><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td><td style="border-width: 0px; "></td></tr> <tr><td><a class="grammarRef" href="#prod-generationExpression">Generation expression</a></td> <td><span class="name">wasGeneratedBy(e2, -, -)</span><br><span class="name">wasGeneratedBy(-; e2, -, -)</span></td> <td>At least one of <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.id"><span class="attribute">id</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.activity"><span class="attribute">activity</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.time"><span class="attribute">time</span></a>, and <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#generation.attributes"><span class="attribute">attributes</span></a> <em class="rfc2119" title="MUST">MUST</em> be present.</td> </tr> <tr><td><a class="grammarRef" href="#prod-usageExpression">Usage expression</a></td> <td><span class="name">used(a2, -, -)</span><br><span class="name">used(-; a2, -, -)</span></td> <td>At least one of <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#usage.id"><span class="attribute">id</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#usage.entity"><span class="attribute">entity</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#usage.time"><span class="attribute">time</span></a>, and <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#usage.attributes"><span class="attribute">attributes</span></a> <em class="rfc2119" title="MUST">MUST</em> be present</td> </tr> <tr> <td><a class="grammarRef" href="#prod-startExpression">Start expression</a></td> <td> <span class="name">wasStartedBy(e2, -, -, -)</span><br><span class="name">wasStartedBy(-; e2, -, -, -)</span></td> <td>At least one of <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.id"><span class="attribute">id</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.trigger"><span class="attribute">trigger</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.starter"><span class="attribute">starter</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.time"><span class="attribute">time</span></a>, and <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#start.attributes"><span class="attribute">attributes</span></a> <em class="rfc2119" title="MUST">MUST</em> be present</td> </tr> <tr> <td><a class="grammarRef" href="#prod-endExpression">End expression</a></td> <td><span class="name">wasEndedBy(e2, -, -, -)</span><br><span class="name">wasEndedBy(-; e2, -, -, -)</span></td> <td>At least one of <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.id"><span class="attribute">id</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.trigger"><span class="attribute">trigger</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.ender"><span class="attribute">ender</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.time"><span class="attribute">time</span></a>, and <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#end.attributes"><span class="attribute">attributes</span></a> <em class="rfc2119" title="MUST">MUST</em> be present</td> </tr> <tr> <td><a class="grammarRef" href="#prod-invalidationExpression">Invalidation expression</a></td> <td><span class="name">wasInvalidatedBy(e2, -, -)</span> <br><span class="name">wasInvalidatedBy(-; e2, -, -)</span></td> <td>At least one of <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#invalidation.id"><span class="attribute">id</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#invalidation.activity"><span class="attribute">activity</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#invalidation.time"><span class="attribute">time</span></a>, and <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#invalidation.attributes"><span class="attribute">attributes</span></a> <em class="rfc2119" title="MUST">MUST</em> be present</td> </tr> <tr> <td><a class="grammarRef" href="#prod-associationExpression">Association expression</a></td> <td><span class="name">wasAssociatedWith(a, -, -)</span> <br><span class="name">wasAssociatedWith(-; a, -, -)</span></td> <td>At least one of <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.id"><span class="attribute">id</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.agent"><span class="attribute">agent</span></a>, <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.plan"><span class="attribute">plan</span></a>, and <a href="https://www.w3.org/TR/2013/REC-prov-dm-20130430/#association.attributes"><span class="attribute">attributes</span></a> <em class="rfc2119" title="MUST">MUST</em> be present</td> </tr> </tbody></table> </div> </section> </section> </section> <!-- end sec 3 --> <section id="document"> <!--OddPage--><h2><span class="secno">4. </span>Document</h2> <p>A <dfn id="dfn-document">document</dfn> is a house-keeping construct of PROV-N capable of packaging up PROV-N expressions and namespace declarations. A document forms a self-contained package of provenance descriptions for the purpose of <em>exchanging</em> them. A document may be used to package up PROV-N expressions in response to a request for the provenance of something ([<cite><a class="bibref" href="#bib-PROV-AQ">PROV-AQ</a></cite>]).</p> <p> Given its status of house-keeping construct for the purpose of exchanging provenance expressions, a document is not defined as a PROV-N expression (production <code class="content"><a class="grammarRef" href="#prod-expression">expression</a></code>).</p> <p>A document's text matches the <code class="content"><a class="grammarRef" href="#prod-document">document</a></code> production.</p> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-document" data-name="prod-document"></a>[<span class="prodNo">1</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">document</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"document" (<span class="prod"><a class="grammarRef" href="#prod-namespaceDeclarations">namespaceDeclarations</a></span>)? (<span class="prod"><a class="grammarRef" href="#prod-expression">expression</a></span>)* (<span class="prod"><a class="grammarRef" href="#prod-bundle">bundle</a></span>)* "endDocument"</code></td> </tr> </tbody> </table> <p>A document contains: </p><ul> <li><em>namespaceDeclarations</em>: a set of namespace declarations <code><a class="grammarRef" href="#prod-namespaceDeclarations">namespaceDeclarations</a></code>, declaring namespaces and associated prefixes, which can be used in attributes and identifiers occurring inside <em>expressions</em> or <em>bundles</em>;</li> <li><em>expressions</em>: a set of expressions, each matching <code><a class="grammarRef" href="#prod-expression">expression</a></code>;</li> <li><em>bundles</em>: a set of expressions, each matching <code><a class="grammarRef" href="#prod-bundle">bundle</a></code>.</li> </ul> <p>Thus, bundles <em class="rfc2119" title="MAY">MAY</em> occur inside a document, but do not appear inside other bundles. </p> <div class="anexample" id="example_45"><div class="anexampleTitle"><a class="internalDFN" href="#example_45">Example 45</a></div> <p> The following document contains expressions related to the provenance of entity <span class="name">e2</span>. </p> <pre class="codeexample">document default &lt;http://anotherexample.org/&gt; prefix ex &lt;http://example.org/&gt; entity(e2, [ prov:type="File", ex:path="/shared/crime.txt", ex:creator="Alice", ex:content="There was a lot of crime in London last month."]) activity(a1, 2011-11-16T16:05:00, -, [prov:type="edit"]) wasGeneratedBy(e2, a1, -, [ex:fct="save"]) wasAssociatedWith(a1, ag2, -, [prov:role="author"]) agent(ag2, [ prov:type='prov:Person', ex:name="Bob" ]) endDocument </pre> <p>This container could, for instance, be returned as the result of a query to a provenance store for the provenance of entity <span class="name">e2</span> [<cite><a class="bibref" href="#bib-PROV-AQ">PROV-AQ</a></cite>]. </p> </div> </section> <section id="extensibility"> <!--OddPage--><h2><span class="secno">5. </span>Extensibility</h2> <p>The PROV data model is extensible by means of attributes <span class="name">prov:type</span> and <span class="name">prov:role</span> allowing subtyping of expressions. For some applications, novel syntax may also be convenient. Hence, the normative requirements are as follow.</p> <ul> <li> PROV-N compliant parsers <em class="rfc2119" title="MUST">MUST</em> be able to parse expressions matching the <code class="content"><a class="grammarRef" href="#prod-extensibilityExpression">extensibilityExpression</a></code> production defined below. </li><li> As PROV provides no definition for these expressions, PROV compliant implementations <em class="rfc2119" title="MAY">MAY</em> ignore these expressions.</li> <li> Extensions to PROV and PROV-N <em class="rfc2119" title="MAY">MAY</em> specify more specific productions and interpretations for these expressions, which applications <em class="rfc2119" title="MAY">MAY</em> elect to follow. </li> </ul> <table class="grammar"> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-extensibilityExpression" data-name="prod-extensibilityExpression"></a>[<span class="prodNo">49</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">extensibilityExpression</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></span> "(" <span class="prod"><a class="grammarRef" href="#prod-optionalIdentifier">optionalIdentifier</a></span> <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> )* <span class="prod"><a class="grammarRef" href="#prod-optionalAttributeValuePairs">optionalAttributeValuePairs</a></span> ")"</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-extensibilityArgument" data-name="prod-extensibilityArgument"></a>[<span class="prodNo">50</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">extensibilityArgument</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-identifierOrMarker">identifierOrMarker</a></span> | <span class="prod"><a class="grammarRef" href="#prod-literal">literal</a></span> | <span class="prod"><a class="grammarRef" href="#prod-time">time</a></span> | <span class="prod"><a class="grammarRef" href="#prod-extensibilityExpression">extensibilityExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-extensibilityTuple">extensibilityTuple</a></span> )</code></td> </tr> </tbody> <tbody class="prod"> <tr style="vertical-align: baseline; "> <td><a id="prod-extensibilityTuple" data-name="prod-extensibilityTuple"></a>[<span class="prodNo">51</span>]&nbsp;&nbsp;&nbsp;</td> <td><code class="production prod">extensibilityTuple</code></td> <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> <td><code class="content">"{" <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> )* "}"<br> | "(" <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> )* ")"</code></td> </tr> </tbody> </table> <p>Expressions compatible with the <code class="content"><a class="grammarRef" href="#prod-extensibilityExpression">extensibilityExpression</a></code> production follow a general form of functional syntax, in which the predicate <em class="rfc2119" title="MUST">MUST</em> be a <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">qualifiedName</a></code> with a non-empty <code class="content"><a class="grammarRef" href="https://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">prefix</a></code>.</p> <div class="anexample" id="example_46"><div class="anexampleTitle"><a class="internalDFN" href="#example_46">Example 46</a></div> <p> <a href="#component6">Collections</a> are sets of entities, whose membership can be expressed using the <span class="name">hadMember</span> relation. The following example shows how one can express membership for <em>dictionaries</em>, an illustrative extension of Collections consisting of sets of key-entity pairs, where a key is a <code><a class="grammarRef" href="#prod-literal">literal</a></code>. The notation is a variation of that used for Collections membership, allowing multiple member elements to be declared, and in which the elements are pairs. The name of the relation is qualified with the extension-specific namespace <span class="name">http://example.org/dictionaries</span>. </p> <pre class="codeexample"> prefix dictExt &lt;http://example.org/dictionaries#&gt; dictExt:hadMembers(mId; d, {("k1",e1), ("k2",e2), ("k3",e3)}, []) </pre> Note that the generic <code class="content"><a class="grammarRef" href="#prod-extensibilityExpression">extensibilityExpression</a></code> production above allows for alternative notations to be used for expressing membership, if the designers of the extensions so desire. Here is an alternate syntax that is consistent with the productions: <pre class="codeexample"> prefix dictExt &lt;http://example.org/dictionaries#&gt; dictExt:hadMembers(mid; d, dictExt:set(dictExt:pair("k1",e1), dictExt:pair("k2",e2), dictExt:pair("k3",e3)), [dictExt:uniqueKeys="true"]) </pre> </div> </section> <section id="media-type"> <!--OddPage--><h2><span class="secno">6. </span>Media Type</h2> <p> The media type of PROV-N is <span class="name">text/provenance-notation</span>. The content encoding of PROV-N content is UTF-8. </p> <dl> <dt>Contact:</dt> <dd>Ivan Herman</dd> <dt>See also:</dt> <dd><a href="https://www.w3.org/2002/06/registering-mediatype">How to Register a Media Type for a <abbr title="World Wide Web Consortium">W3C</abbr> Specification</a></dd> <dd><a href="https://www.w3.org/2001/tag/2002/0129-mime">Internet Media Type registration, consistency of use</a><br>TAG Finding 3 June 2002 (Revised 4 September 2002)</dd> </dl> <p>The Internet Media Type / MIME Type for PROV-N is "text/provenance-notation".</p> <p>It is recommended that PROV-N files have the extension ".provn" (all lowercase) on all platforms.</p> <p>It is recommended that PROV-N files stored on Macintosh HFS file systems be given a file type of "TEXT".</p> <p>The information that follows has been <a href="http://www.iana.org/assignments/media-types/text/provenance-notation">registered with IANA</a>.</p> <dl> <dt>Type name:</dt> <dd>text</dd> <dt>Subtype name:</dt> <dd>provenance-notation</dd> <dt>Required parameters:</dt> <dd><kbd>charset</kbd> — the value of <kbd>charset</kbd> <em class="rfc2119" title="MUST">MUST</em> always be <kbd>UTF-8</kbd>.</dd> <dt>Optional parameters:</dt> <dd>None</dd> <dt>Encoding considerations: 8bit</dt> <dd>The syntax of PROV-N is expressed over code points in Unicode [<cite><a class="bibref" href="#bib-UNICODE">UNICODE</a></cite>]. The encoding is always UTF-8 [<cite><a class="bibref" href="#bib-UTF-8">UTF-8</a></cite>].</dd> <dd>Unicode code points may also be expressed using an \uXXXX (U+0 to U+FFFF) or \UXXXXXXXX syntax (for U+10000 onwards) where X is a hexadecimal digit [0-9A-F]</dd> <dt>Security considerations:</dt> <dd>PROV-N is a general-purpose language for describing the provenance of things; applications may evaluate given data to infer more descriptions or to dereference URIs, invoking the security considerations of the scheme for that URI. Note in particular, the privacy issues in [<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10 for HTTP URIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended URIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data.</dd> <dd>PROV-N is used to express the provenance of arbitrary application data; security considerations will vary by domain of use. Security tools and protocols applicable to text (e.g. PGP encryption, MD5 sum validation, password-protected compression) may also be used on PROV-N documents. Security/privacy protocols must be imposed which reflect the sensitivity of the embedded information. </dd> <dd>PROV-N can express data which is presented to the user, for example, by means of label attributes. Application rendering strings retrieved from untrusted PROV-N documents must ensure that malignant strings may not be used to mislead the reader. The security considerations in the media type registration for XML ([<cite><a class="bibref" href="#bib-RFC3023">RFC3023</a></cite>] section 10) provide additional guidance around the expression of arbitrary data and markup.</dd> <dd>PROV-N is a language for describing the provenance of things, and therefore a PROV-N document is metadata for other resources. Untrusted PROV-N documents may mislead its consumers by indicating that a third-party resource has a reputable lineage, when it has not. Provenance of PROV-N document should be sought. </dd> <dd>PROV-N uses qualified names mappable to IRIs as term identifiers. Applications interpreting data expressed in PROV-N should address the security issues of <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8, as well as <a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>] Section 7.</dd> <dd>Multiple IRIs may have the same appearance. Characters in different scripts may look similar (a Cyrillic "о" may appear similar to a Latin "o"). A character followed by combining characters may have the same visual representation as another character (LATIN SMALL LETTER E followed by COMBINING ACUTE ACCENT has the same visual representation as LATIN SMALL LETTER E WITH ACUTE). <!-- (<code>foo:resum&#40751;code> and <code>f&#1086;&#1086;:resume&#769;</code>)--> Any person or application that is writing or interpreting data in PROV-N must take care to use the IRI that matches the intended semantics, and avoid IRIs that make look similar. Further information about matching of similar characters can be found in <a class="inform" href="http://www.unicode.org/reports/tr36/">Unicode Security Considerations</a> [<cite><a class="bibref" href="#bib-UNISEC">UNISEC</a></cite>] and <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>] Section 8. </dd> <dd>PROV-N offers an extensibility mechanism, which in turn may introduce additional security considerations. For example, predicates in extensibility expressions use qualified names, mappable to IRIs, and appropriate security considerations for IRIs apply too.</dd> <dt>Interoperability considerations:</dt> <dd>There are no known interoperability issues.</dd> <dt>Published specification:</dt> <dd>PROV-N: The Provenance Notation, Moreau, Missier, (eds), Cheney, Soiland-Reyes <a href="https://www.w3.org/TR/prov-n/">http://www.w3.org/TR/prov-n/</a>, 2012.</dd> <dt>Applications which use this media type:</dt> <dd>It may be used by any application for publishing provenance information. This format is designed to be a human-readable form of provenance. </dd> <dt>Additional information:</dt> <dt>Magic number(s):</dt> <dd>PROV-N documents may have the strings 'document' near the beginning of the document.</dd> <dt>File extension(s):</dt> <dd>".provn"</dd> <dt>Base URI:</dt> <dd>There are no constructs in the PROV-N Syntax to change the Base IRI.</dd> <dt>Macintosh file type code(s):</dt> <dd>"TEXT"</dd> <dt>Person &amp; email address to contact for further information:</dt> <dd>Ivan Herman, ivan@w3.org</dd> <dt>Intended usage:</dt> <dd>COMMON</dd> <dt>Restrictions on usage:</dt> <dd>None</dd> <dt>Author/Change controller:</dt> <dd>The PROV-N specification is the product of the World Wide Web Consortium's Provenance Working Group. The <abbr title="World Wide Web Consortium">W3C</abbr> has change control over this specification.</dd> </dl> </section> <section class="appendix informative" id="change-log"> <!--OddPage--><h2><span class="secno">A. </span>Change Log</h2><p><em>This section is non-normative.</em></p> <section id="changes-since-proposed-recommendation"> <h3><span class="secno">A.1 </span>Changes since Proposed Recommendation</h3><p><em>This section is non-normative.</em></p> <ul> <li> Changed the status of this document section. </li><li> Changed all URLs to PROV documents. </li><li> Updated URL to IANA registered text/provenance-notation mime type. </li><li> Added ex: prefix to some identifiers in examples. </li><li> The mapping table <a href="#expression-bundle-constructor">for the bundle production</a> incorrectly referred to optionalIdentifier, which was not present in the production. It was replaced by identifier. </li><li> Replaced "are optional attributes" by the grammatically more correct "is a list of optional attributes". </li></ul> </section> <section class="appendix informative" id="changes-since-candidate-recommendation"> <h3><span class="secno">A.2 </span>Changes since Candidate Recommendation</h3><p><em>This section is non-normative.</em></p> <ul> <li> Checked that all fragments resolved. </li><li> Changed the status of this document section: added new documents to the PROV Family of Document, and removed the how to read section, referring instead to PROV-OVERVIEW. </li><li> Changed all URLs to PROV documents. </li><li> Clarified a sentence about the (non) nesting of bundles. </li><li> Added html link to provenance. </li><li> Updated security consideration for extensibility feature of PROV-N following IANA feedback. </li></ul> </section> <section class="appendix informative" id="changes-since-last-call"> <h3><span class="secno">A.3 </span>Changes since last call</h3><p><em>This section is non-normative.</em></p> <p> Please see the <a href="https://www.w3.org/2011/prov/wiki/ResponsesToPublicComments">Responses to Public Comments on the Last Call Working Draft</a> for more details about the justification of these changes.</p> <ul> <li> <a href="https://www.w3.org/2011/prov/track/issues/543">ISSUE-543</a>: Uses key-entity pair terminology for example 43. </li><li> <a href="https://www.w3.org/2011/prov/track/issues/538">ISSUE-538</a>: Rephrasing of text in example 10. </li><li> <a href="https://www.w3.org/2011/prov/track/issues/547">ISSUE-547</a>: Aligned terminology and productions with prov-constraints document, renaming 'toplevel bundle' to 'document', and renaming 'named bundle' to 'bundle'. </li><li> <a href="https://www.w3.org/2011/prov/track/issues/496">ISSUE-496</a>: For each prov-n term, added a cross-reference to corresponding prov-dm term (see table following each production). Rephrased text related to scope of a namespace declaration. Added an informative file with all productions. </li><li> <a href="https://www.w3.org/2011/prov/track/issues/573">ISSUE-573</a>: Updated Media Type section. </li><li> <a href="https://www.w3.org/2011/prov/track/issues/589">ISSUE-589</a>: Updated scoping rule for prefix-namespace declaration. Also refrained from saying bundles are self-contained. </li><li> Moved feature at Risk mention into a separate note. </li><li> Editorial's pass pre-publication. </li></ul> </section> </section> <section class="appendix informative" id="acknowledgements"> <!--OddPage--><h2><span class="secno">B. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p> <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, Robert Freimuth, Satrajit Ghosh, Ralph Hodgson, Renato Iannella, Jacek Kopecky, James Leigh, 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 id="references" class="appendix"><!--OddPage--><h2><span class="secno">C. </span>References</h2><section id="normative-references"><h3><span class="secno">C.1 </span>Normative references</h3><dl class="bibliography"><dt id="bib-PROV-CONSTRAINTS">[PROV-CONSTRAINTS]</dt><dd>James Cheney; Paolo Missier; Luc Moreau; eds. <a href="https://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="https://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-DM">[PROV-DM]</dt><dd>Luc Moreau; Paolo Missier; eds. <a href="https://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="https://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-O">[PROV-O]</dt><dd>Timothy Lebo; Satya Sahoo; Deborah McGuinness; eds. <a href="https://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="https://www.w3.org/TR/2013/REC-prov-o-20130430/">http://www.w3.org/TR/2013/REC-prov-o-20130430/</a> </dd><dt id="bib-RDF-SPARQL-QUERY">[RDF-SPARQL-QUERY]</dt><dd>Andy Seaborne; Eric Prud'hommeaux. <a href="https://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115"><cite>SPARQL Query Language for RDF</cite></a>. 15 January 2008. W3C Recommendation. URL: <a href="https://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115">http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115</a> </dd><dt id="bib-RFC2119">[RFC2119]</dt><dd>S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a> </dd><dt id="bib-RFC3023">[RFC3023]</dt><dd>M. Murata; S. St.Laurent; D. Kohn. <a href="http://www.ietf.org/rfc/rfc3023.txt"><cite>XML Media Types (RFC 3023)</cite></a>. January 2001. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3023.txt">http://www.ietf.org/rfc/rfc3023.txt</a> </dd><dt id="bib-RFC3986">[RFC3986]</dt><dd>T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax (RFC 3986)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a> </dd><dt id="bib-RFC3987">[RFC3987]</dt><dd>M. Dürst; M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRIs) (RFC 3987)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a> </dd><dt id="bib-UNICODE">[UNICODE]</dt><dd>The Unicode Consortium. <a href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html"><cite>The Unicode Standard.</cite></a> Defined by: The Unicode Standard, Version 6.2.0, (Mountain View, CA: The Unicode Consortium, 2012. ISBN 978-1-936213-07-8) , as updated from time to time by the publication of new versions URL: <a href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html">http://www.unicode.org/unicode/standard/versions/enumeratedversions.html</a> </dd><dt id="bib-UTF-8">[UTF-8]</dt><dd>F. Yergeau. <a href="http://www.ietf.org/rfc/rfc3629.txt"><cite>UTF-8, a transformation format of ISO 10646</cite></a>. IETF RFC 3629. November 2003. URL: <a href="http://www.ietf.org/rfc/rfc3629.txt">http://www.ietf.org/rfc/rfc3629.txt</a> </dd><dt id="bib-XML-NAMES">[XML-NAMES]</dt><dd>Richard Tobin et al. <a href="https://www.w3.org/TR/2009/REC-xml-names-20091208/"><cite>Namespaces in XML 1.0 (Third Edition)</cite></a>. 8 December 2009. W3C Recommendation. URL: <a href="https://www.w3.org/TR/2009/REC-xml-names-20091208/">http://www.w3.org/TR/2009/REC-xml-names-20091208/</a> </dd><dt id="bib-XML11">[XML11]</dt><dd>Eve Maler et al. <a href="https://www.w3.org/TR/2006/REC-xml11-20060816"><cite>Extensible Markup Language (XML) 1.1 (Second Edition)</cite></a>. 16 August 2006. W3C Recommendation. URL: <a href="https://www.w3.org/TR/2006/REC-xml11-20060816">http://www.w3.org/TR/2006/REC-xml11-20060816</a> </dd><dt id="bib-XMLSCHEMA11-2">[XMLSCHEMA11-2]</dt><dd>Henry S. Thompson et al. <a href="https://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/"><cite>W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes</cite></a>. 5 April 2012. W3C Recommendation. URL: <a href="https://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/">http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/</a> </dd></dl></section><section id="informative-references"><h3><span class="secno">C.2 </span>Informative references</h3><dl class="bibliography"><dt id="bib-PROV-AQ">[PROV-AQ]</dt><dd>Graham Klyne; Paul Groth; eds. <a href="https://www.w3.org/TR/2013/NOTE-prov-aq-20130430/"><cite>Provenance Access and Query</cite></a>. 30 April 2013, W3C Note. URL: <a href="https://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-DC">[PROV-DC]</dt><dd>Daniel Garijo; Kai Eckert; eds. <a href="https://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="https://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="https://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="https://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-LINKS">[PROV-LINKS]</dt><dd>Luc Moreau; Timothy Lebo; eds. <a href="https://www.w3.org/TR/2013/NOTE-prov-links-20130430/"><cite>Linking Across Provenance Bundles</cite></a>. 30 April 2013, W3C Note. URL: <a href="https://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-OVERVIEW">[PROV-OVERVIEW]</dt><dd>Paul Groth; Luc Moreau; eds. <a href="https://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="https://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-PRIMER">[PROV-PRIMER]</dt><dd>Yolanda Gil; Simon Miles; eds. <a href="https://www.w3.org/TR/2013/NOTE-prov-primer-20130430/"><cite>PROV Model Primer</cite></a>. 30 April 2013, W3C Note. URL: <a href="https://www.w3.org/TR/2013/NOTE-prov-primer-20130430/">http://www.w3.org/TR/2013/NOTE-prov-primer-20130430/</a> </dd><dt id="bib-PROV-RDF">[PROV-RDF]</dt><dd>James Cheney <a href="https://www.w3.org/2011/prov/wiki/ProvRDF"><cite>PROV-RDF Mapping </cite></a>2012, Working in Progress. URL: <a href="https://www.w3.org/2011/prov/wiki/ProvRDF">http://www.w3.org/2011/prov/wiki/ProvRDF</a> </dd><dt id="bib-PROV-SEM">[PROV-SEM]</dt><dd>James Cheney; ed. <a href="https://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="https://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="https://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="https://www.w3.org/TR/2013/NOTE-prov-xml-20130430/">http://www.w3.org/TR/2013/NOTE-prov-xml-20130430/</a> </dd><dt id="bib-UNISEC">[UNISEC]</dt><dd> Mark Davis; Michel Suignard. <a href="http://www.unicode.org/reports/tr36/"><cite>Unicode Security Considerations<cite></cite></cite></a>. 4 August 2010. URL: <a href="http://www.unicode.org/reports/tr36/">http://www.unicode.org/reports/tr36/</a> </dd></dl></section></section><script src="https://www.w3.org/scripts/TR/fixup.js"></script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10