Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
The PROV Ontology (also PROV-O) encodes the PROV Data Model [PROV-DM] in the OWL2 Web Ontology Language (OWL2). The PROV ontology consists of a set of classes, properties, and restrictions that can be used to represent provenance information. The PROV ontology can also be specialized to create new classes and properties for modeling provenance information specific to different domain applications. The PROV ontology supports a set of entailments based on OWL2 formal semantics and provenance specific inference rules. The PROV ontology is available for download as a separate OWL2 document.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This specification defines the PROV Ontology as the normative representation of the PROV Data Model using the Web Ontology Language (OWL2). This document is part of a set of specifications being created to address the issue of provenance interchange in Web applications. This document is accompanied by (1) the PROV Data Model, (2) the PROV Access and Query, and (3) the Primer documents.
This document was published by the Provenance Working Group as a First Public Working Draft. This document is intended to become a W3C Recommendation. If you wish to make comments regarding this document, please send them to public-prov-wg@w3.org (subscribe, archives). All feedback is welcome.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures 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 Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
PROV Ontology (also PROV-O) defines the normative modeling of the PROV Data Model [PROV-DM] using the W3C OWL2 Web Ontology Language. This document specification describes the set of classes, properties, and restrictions that constitute the PROV ontology, which have been introduced in the PROV Data Model [PROV-DM]. This ontology specification provides the foundation for implementation of provenance applications in different domains using the PROV ontology for representing, exchanging, and integrating provenance information. Together with the PROV Access and Query [PROV-PAQ] and PROV Data Model [PROV-DM], this document forms a framework for provenance information interchange and management in domain-specific Web-based applications.
The PROV ontology classes and properties are defined such that they can not only be used directly to represent provenance information, but also can be specialized for modeling application-specific provenance details in a variety of domains. Thus, the PROV ontology is expected to be both directly usable in applications as well as serve as a reference model for creation of domain-specific provenance ontology and thereby facilitate interoperable provenance modeling. This document uses an example provenance scenario introduced in the PROV Data Model [PROV-DM] to demonstrate the use PROV-O classes and properties to model provenance information.
Finally, this document describes the formal semantics of the PROV ontology using the OWL2 semantics, [OWL2-DIRECT-SEMANTICS], [OWL2-RDF-BASED-SEMANTICS], and a set of provenance-specific inference rules. This is expected to support provenance implementations to automatically check for consistency of provenance information represented using PROV ontology and explicitly assert implicit provenance knowledge.
The key words "must", "must not", "required", "shall", "shall not", "should", "should not", "recommended", "may", and "optional" in this document are to be interpreted as described in [RFC2119].
This document is intended for provide an understanding of the PROV ontology and how it can be used by different applications to represent their provenance information. The intended audience of this document include users who are new to provenance modeling as well as experienced users who would like their provenance model compatible with the PROV ontology to facilitate standardization. This document assumes a basic understanding of the W3C RDF(S) and OWL2 specification. Readers are referred to the OWL2 and RDF(S) documentations, starting with the [OWL2-PRIMER] and [RDF-PRIMER], for further details about the OWL2 and RDF(S) specifications respectively.
Section 2 describes the mapping of the PROV Data Model [PROV-DM] to the PROV ontology. Section 3 introduces the classes and properties of the PROV ontology. Section 4 describes the approach used to specialize the PROV ontology create a domain specific ontology for an example provenance scenario introduced in the PROV Data Model [PROV-DM]. The PROV ontology supports a set of provenance entailments and these are described in Section 5.
The PROV Data Model [PROV-DM] introduces a minimal set of concepts to represent provenance information in a variety of application domains. This document maps the PROV Data Model to PROV Ontology using the OWL2 ontology language, which facilitates a fixed interpretation and use of the PROV Data Model concepts based on the formal semantics of OWL2 [OWL2-DIRECT-SEMANTICS] [OWL2-RDF-BASED-SEMANTICS].
The PROV Ontology can be used directly in a domain application, though many domain applications may require specialization of PROV-O Classes and Properties for representing domain-specific provenance information. We briefly introduce some of the OWL2 modeling terms that will be used to describe the PROV ontology. An OWL2 instance is an individual object in a domain of discourse, for example a person named Alice or a car, and a set of individuals sharing a set of common characteristics is called a class. Person and Car are examples of classes representing the set of individual persons and cars respectively. The OWL2 object properties are used to link individuals, classes, or create a property hierarchy. For example, the object property "hasOwner" can be used to link car with person. The OWL2 datatype properties are used to link individuals or classes to data values, including XML Schema datatypes [XMLSCHEMA-2].
The PROV Data Model document [PROV-DM] introduces an example provenance scenario describing the creation of crime statistics file stored on a shared file system and edited by journalists Alice, Bob, Charles, David, and Edith. This scenario is used as a running example in this document to describe the PROV ontology classes and properties, the specialization mechanism, and the entailments supported by the PROV ontology.
The PROV Data Model [PROV-DM] uses an Abstract Syntax Notation (ASN) to describe the set of provenance terms that are used to construct the PROV ontology. There are a number of differences between the PROV-DM ASN and the Semantic Web RDF, RDFS and OWL2 technologies; hence the approach used to model the provenance terms in PROV ontology differ, partially or significantly, from the PROV-DM approach.
For example, the notion of "expressions" used in the PROV-DM map to RDF triple assertions in PROV-O. Similarly, the PROV-DM discusses the use of "Qualifier" to assert additional information about provenance terms. Following the general knowledge representation practices and OWL2 ontologies specifically, the PROV ontology specializes a given provenance term to create either a sub class or sub property to represent "additionally" qualified terms. Throughout this document, we explicitly state the difference, if any, between the PROV-DM term and PROV ontology term.
This document uses the RDF/XML syntax, which is the mandatory syntax supported by all OWL2 syntax [OWL2-PRIMER] to represent the PROV ontology. Provenance assertions using PROV-O can use any of the RDF syntax defined in the RDF specification [RDF-PRIMER].
The corresponding OWL2 version of this PROV Ontology is available at [PROV-Ontology-Namespace] and as ProvenanceOntology.owl. The namespace for the PROV ontology and all terms defined in this document is http://www.w3.org/ns/prov-o/
[PROV-Ontology-Namespace] and is in this document denoted by the prefix prov
.
We now introduce the classes and properties that constitute the PROV ontology. We first give a textual description of each ontology term, followed by OWL2 syntax representing the ontology term and an example use of the class in the provenance scenario.
The PROV ontology consists of classes that can be organized into a hierarchical structure using the rdfs:subClassOf
property.
Note: CamelBack notation is used for class names
Entity is defined to be "An Entity represents an identifiable characterized thing." [PROV-DM]
prov:Entity rdfs:subClassOf owl:Thing.
Example of instances of class Entity from the provenance scenario are files with identifiers e1 and e2. The RDF/XML syntax for asserting that e1 is an instance of Entity is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e1"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Entity"/> </rdf:Description>
Additional assertions can be made about the Entity instances that describe additional attributes of the entities. Following common knowledge representation approach, the Entity class can be specialized to create multiple sub classes, using the rdfs:subClassOf
property, representing distinct categories of entities using additional characterizing attributes (as defined in the [PROV-DM]). The additional attributes should use an appropriate namespace, and the new sub classes may be introduced by application-specific provenance ontologies.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e2"> <rdf:type rdf:resource="http://www.example.com/crime#CrimeFile"> </rdf:Description> <rdf:Description rdf:about="http://www.example.com/crime#CrimeFile"> <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov-o/Entity"/> </rdf:Description>
Activity is defined to be "an identifiable activity, which performs a piece of work." [PROV-DM]
prov:Activity rdfs:subClassOf owl:Thing.
Example instances of the class Activity (from the provenance scenario ) are "file creation" (pe0) and "file editing" (pe2) . The RDF/XML syntax for asserting that act2 is an instance of Activity is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act2"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Activity"/> </rdf:Description>
:Emailing
, which is defined to be sub-class of class prov:Activity
in the CrimeFile ontology. Hence, using standard RDFS entailment allows us to infer that act2 is also an instance of prov:Activity
.
Agent is defined to be a "characterized entity capable of activity" [PROV-DM]
prov:Agent rdfs:subClassOf prov:Entity.
Example of instances of class Agent from the provenance scenario are Alice and Edith. The RDF/XML syntax for asserting that Alice is an instance of Agent is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#Alice"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Agent"/> </rdf:Description>
TemporalEntity represents temporal information about entities in the Provenance model. This class has been re-used from the OWL Time ontology [OWL-TIME]. The PROV ontology also models the two sub classes of TemporalEntity, namely Instant and Interval.
The Instant class represents "point-line" temporal information that have "no interior points" [OWL-TIME]. The Interval class represents temporal information that have a non-zero duration [OWL-TIME]
time:TemporalEntity rdfs:subClassOf owl:Thing.
Example of instances of class TemporalEntity from the provenance scenario are t and t+1. t+1 is associated with the instance of Activity act2. The instances of TemporalEntity are linked to instances of Entity or Activity classes by the hadTemporalValue property that is described later in this document.
The RDF/XML syntax for this asserting that t+1 is an instance of class TemporalEntity and t+1 is associated with act2 is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act2"> <prov:hadTemporalValue rdf:about="http://www.example.com/crimeFile#t+1"> <rdf:type rdf:resource="http://www.w3.org/2006/time#TemporalEntity"/> </prov:hadTemporalValue> </rdf:Description>
ProvenanceContainer is defined to be an aggregation of provenance assertions. A provenance container should have an URI associated with it. The ProvenanceContainer class can also be used to model the PROV-DM concept of Account.
prov:ProvenanceContainer rdfs:subClassOf owl:Thing.
Examples of instance of class ProvenanceContainer includes a RDF graph containing set of assertions describing the provenance of a car, such as its manufacturer, date of manufacture, and place of manufacture.
<rdf:Description rdf:about="http://www.example.com/crimeFile#ProvenanceContainer1"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/ProvenanceContainer"/> <cf:contains rdf:resource="http://www.example.com/crimeFile#Statement1"/> <cf:contains rdf:resource="http://www.example.com/crimeFile#Statement2"/> <cf:assertedBy rdf:resource="http://www.example.com/crimeFile#Alice"/> </rdf:Description>
If a RDF graph contains a set of RDF assertions then, (a) if an explicit asserter is associated with the RDF graph it corresponds to the term "Account" in PROV-DM, and (b) if an asserted is not associated with the RDF graph it corresponds to the term "ProvenanceContainer" in PROV-DM.
Location is defined to be "is an identifiable geographic place (ISO 19112)." [PROV-DM]
prov:Location rdfs:subClassOf owl:Thing.
Example of instances of class Location from the provenance scenario is the location of the crime file in the shared directory /share with file path /shared/crime.txt. The RDF/XML syntax for asserting that the location of the crime file is the shared directory.
<cf:hasLocation> <rdf:Description rdf:about="http://www.example.com/crimeFile#sharedDirectoryLocation1"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Location"/> <cf:hasFilePath rdf:datatype="http://www.w3.org/2001/XMLSchema#string">/share/crime.txt</cf:hasFilePath> </rdf:Description> </cf:hasLocation>
The QualifiedInvolvement class represents an n-ary property to capture qualifying information related to the the use, generation, control, and participation.
prov:QualifiedInvolvement rdfs:subClassOf owl:Thing.
The Usage class represents an n-ary property to capture qualifying information related to the use of Entity by Activity.
prov:Usage rdfs:subClassOf prov:QualifiedInvolvement.
Example of instances of class Usage from the provenance scenario provenance scenario ??? is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#u1"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Usage"/> <prov:hadQualifiedEntity rdf:resource="http://www.example.com/crimeFile#Bob"/> </rdf:Description>
The Participation class represents an n-ary property to capture qualifying information related to the participation of Entity in Activity.
prov:Participation rdfs:subClassOf prov:QualifiedInvolvement.
Example of instances of class Participation from the provenance scenario provenance scenario ??? is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#p1"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Participation"/> <prov:hadQualifiedEntity rdf:resource="http://www.example.com/crimeFile#Bob"/> </rdf:Description>
The Control class represents an n-ary property to capture qualifying information related to the control of Activity by Agent.
prov:Control rdfs:subClassOf prov:QualifiedInvolvement.
Example of instances of class Control from the provenance scenario provenance scenario ??? is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#c1"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Control"/> <prov:hadQualifiedEntity rdf:resource="http://www.example.com/crimeFile#Bob"/> </rdf:Description>
The Generation class represents an n-ary property to capture qualifying information related to the generation of Entity by Activity.
prov:Generation rdfs:subClassOf prov:QualifiedInvolvement.
Example of instances of class Generation from the provenance scenario ??? is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#g1"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Generation"/> <prov:hadQualifiedEntity rdf:resource="http://www.example.com/crimeFile#Bob"/> </rdf:Description>
Recipe represents the specification of a Activity. PROV ontology does not define the different types of recipes that can be created by provenance applications in different domains.
prov:Recipe rdfs:subClassOf owl:Thing.
An example of recipe from the provenance scenario may be the editing protocol followed by the journalists to edit a news report.
<rdf:Description rdf:about="http://www.example.com/crimeFile#news_editing"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Activity"/> <prov:hadRecipe rdf:resource="http://www.example.com/crimeFile#NewsReportEditingProtocol"/> </rdf:Description>
Role class models additional information about Entity or Activity class with respect to the QualifiedInvolvement class [PROV-DM]
prov:Role rdfs:subClassOf owl:Thing.
Example of instances of class Role from the provenance scenario are author (for Alice) and save (for act1). The RDF/XML syntax for asserting that Alice played a role of author in the usage u1 (instance of class Usage) of file e1 in the activity of adding content.
<rdf:Description rdf:about="http://www.example.com/crimeFile#u1"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Usage"/> <prov:hadRole rdf:resource="www.example.com/crimeFile#author"/> </rdf:Description>
Temporary section for terms not part of "core" ontology.
Time
is subclass of time:Instant
from [OWL-TIME] which requires that the time is defined
using the time:inXSDDateTime
property. This
class used with startedAt
and other subproperties
of hasTemporalValue
ensures compatibility with xsd:dateTime
literals
expressions in [PROV-DM] ASN and other serialisations.
c
The PROV ontology has the following object properties.
Note: Names of properties starts with a verb in lower case followed by verb(s) starting with upper case
The wasGeneratedBy property links the Entity class with the Activity class.
Note: No arity constraints are assumed between Entity and Activity
Example of wasGeneratedBy property from the provenance scenario is e1 wasGeneratedBy act0. The RDF/XML syntax for asserting this information is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e1"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Entity"/> <prov:wasGeneratedBy> <rdf:Description rdf:about="http://www.example.com/crimeFile#act0"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Activity"/> </rdf:Description> <prov:wasGeneratedBy> </rdf:Description>
The wasRevisionOf property links two instances of Entity class, where one instance is a revision of another instance, and there is explicit role of an Agent in asserting this information.
Example of wasRevisionOf property from the provenance scenario is e3 wasRevisionOf e2. The RDF/XML syntax for asserting this information is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e3"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Entity"/> <prov:wasRevisionOf> <rdf:Description rdf:about="http://www.example.com/crimeFile#e2"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Entity"/> </rdf:Description> <prov:wasRevisionOf> </rdf:Description>
The wasDerivedFrom property links two instances of Entity class, where "some characterized entity is transformed from, created from, or affected by another characterized entity." [PROV-DM]
Example of wasDerivedFrom property from the provenance scenario is e3 wasDerivedFrom e2. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e3"> <prov:wasDerivedFrom rdf:resource="http://www.example.com/crimeFile#e2"/> </rdf:Description>
This object property is used to link two instances of Entity class that "...are not directly used and generated respectively" by a single instance of Activity class [PROV-DM].
Example of wasEventuallyDerivedFrom property from the provenance scenario is e5 wasEventuallyDerivedFrom e2. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e5"> <prov:wasEventuallyDerivedFrom rdf:resource="http://www.example.com/crimeFile#e2"/> </rdf:Description>
The dependedOn property links two instances of Entity class to model the derivation of one instance from another instance. This is a transitive property, in other words if an Entity instance a1 dependedOn a2 and a2 dependedOn a3, then a1 dependedOn a3 is also true.
Example of dependedOn property from the provenance scenario is e5 dependedOn e2. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e5"> <prov:dependedOn rdf:resource="http://www.example.com/crimeFile#e2"/> </rdf:Description>
The used property links the Activity class to the Entity class, where the Entity instance is "consumed" by a Activity instance.
Note: No arity constraints are assumed between Entity and Activity
Example of used property from the provenance scenario is pe2 used e2. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act2"> <prov:used rdf:resource="http://www.example.com/crimeFile#e2"/> </rdf:Description>
The hadPariticipant property links Entity class to Activity class, where Entity used or wasGeneratedBy Activity.
Note: No arity constraints are assumed between Entity and Activity
Example of hadParticipant property from the provenance scenario is pe2 hadParticipant e2. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act2"> <prov:hadParticipant rdf:resource="http://www.example.com/crimeFile#e2"/> </rdf:Description>
The wasComplementOf property links two instances of set of assertions about Entity instances, where "it is relationship between two characterized entities asserted to have compatible characterization over some continuous time interval." [PROV-DM]
The wasControlledBy property links Activity class to Agent class, where control represents the involvement of the Agent in modifying the characteristics of the instance of the Activity class"[PROV-DM].
Example of wasControlledBy property from the provenance scenario is FileAppending (Activity) wasControlledBy Bob. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act1"> <prov:wasControlledBy> <rdf:Description rdf:about="http://www.example.com/crimeFile#Bob"> <rdf:type rdf:resource="http://www.example.com/crime#Journalist"/> </rdf:Description> </prov:wasControlledBy> </rdf:Description>
This property links the Activity class to the Recipe class, which describes the execution characteristics of the instance of the Activity class. The recipe might or might not have been followed exactly by the Activity.
Example of hadRecipe property in the (extended) provenance scenario is that act1 (instance of Activity class) followed some file appending instructions (instructions1). The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act1"> <prov:hadRecipe rdf:resource="http://www.example.com/crimeFile#instructions1"/> </rdf:Description>
This object property links two instances of the Activity classes. It is used to express the information that a given process execution used an entity that was generated by another process execution.
Example of wasInformedBy property from the provenance scenario is pe4 wasInformedBy act3. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act4"> <prov:wasInformedBy rdf:resource="http://www.example.com/crimeFile#act3"/> </rdf:Description>
This property links two instances of Activity class to specify the order of their executions. Specifically, it is used to specify that a given process execution starts after the end of another process execution.
Example of wasScheduledAfter property from the provenance scenario is pe4 wasScheduledAfter act3. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act4"> <prov:wasScheduledAfter rdf:resource="http://www.example.com/crimeFile#act3"/> </rdf:Description>
This object property links an instance of Activity
or Entity
with an time:TemporalEntity
from [OWL-TIME], thereby allowing association of time value with instances of the two classes and their subclasses.
Example of hadTemporalValue property from the provenance scenario is t+3 time value is associated with the act3 Activity instanc. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act3"> <prov:hasTemporalValue rdf:resource="http://www.example.com/crimeFile#t+3"/> </rdf:Description>
This object property defines the time when Activity
started. The time is specified as an time:Instant
[OWL-TIME].
Example of startedAt property is that a act1 (instance of Activity class) is "2011-10-20T17:14:12Z". The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act1"> <prov:startedAt rdf:about="http://www.example.com/crimeFile#t1> <rdf:type rdf:resource=""http://www.w3.org/2006/time#Instant"/> <time:inXSDDateTime>2011-10-20T17:14:12Z</time:inXSDDateTime> </prov:startedAt> </rdf:Description>
This object property defines the time when a Activity
ended. The time is specified as an time:Instant
[OWL-TIME].
Example of endedAt property is that a act1 (instance of Activity class) is "2011-10-20T20:14:12Z". The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act1"> <prov:endedAt rdf:about="http://www.example.com/crimeFile#t2> <rdf:type rdf:resource=""http://www.w3.org/2006/time#Instant"/> <time:inXSDDateTime>2011-10-20T20:14:12Z</time:inXSDDateTime> </prov:endedAt> </rdf:Description>
This object property defines the time when a Entity
was generated by Activity.
Example of wasGeneratedAt property is that a e1 (instance of Entity class) wasGeneratedAt "2011-10-20T20:12:12Z". The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e1"> <prov:wasGeneratedAt rdf:about="http://www.example.com/crimeFile#t3> <rdf:type rdf:resource=""http://www.w3.org/2006/time#Instant"/> <time:inXSDDateTime>2011-10-20T20:12:12Z</time:inXSDDateTime> </prov:startedAt> </rdf:Description>
The wasAttributedTo property links an instance of the Entity class to an instance of Agent class.
Example of wasAttributedTo property as an addition to the provenance scenario is the attribution of e3 to David for writting editing the file (e3 wasAttributedTo David). The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e3"> <prov:wasAttributedTo rdf:resource="http://www.example.com/crimeFile#David"/> </rdf:Description>
The wasQuoteOf property links an instance of the Entity class to an instance of the Agent class.
Example of wasQuoteOf property as an addition to the provenance scenario is e2 quoting Alice, recorded by Bob ( e2 wasQuoteOf Alice). The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e2"> <prov:wasQuoteOf rdf:resource="http://www.example.com/crimeFile#Alice"/> </rdf:Description>
The wasSummaryOf property links two instances of the Entity class.
Example of wasSummaryOf property as an addition to the provenance scenario is e3 summarizing some additional statistics( e3 wasSummaryOf statistics). The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e3"> <prov:wasSummaryOf rdf:resource="http://www.example.com/crimeFile#statistics"/> </rdf:Description>
The hadOriginalSource property links two instances of the Entity class. This property is defined to be a specialization of the wasEventuallyDerivedFrom propery.
Example of hadOriginalSource property from the provenance scenario e6 hadOriginalSource e1. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e6"> <prov:hadOriginalSource rdf:resource="http://www.example.com/crimeFile#e1"/> </rdf:Description>
The hadQualifiedUsage property links the Activity class with the Usage class.
Example of hadQualifiedUsage property from the provenance scenario act1 hadQualifiedUsage u1, where the hadRole describes the usage of e1 as a "load". The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act1"> <prov:hadQualifiedUsage rdf:resource="http://www.example.com/Usage#u1"/> </rdf:Description>
The hadQualifiedParticipation property links the Activity class with the Participation class.
Example of hadQualifiedParticipation property from the provenance scenario act1 hadQualifiedParticipation p1, where the hadRole describes the participation of Alice as an "author" in act1. The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act1"> <prov:hadQualifiedParticipation rdf:resource="http://www.example.com/crimeFile#p1"/> </rdf:Description>
The hadQualifiedControl property links the Activity class with the Control class.
Example of hadQualifiedControl property from the provenance scenario act0 hadQualifiedControl c1, where the hadRole describes the control of act0 by Alice as "creator". The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#act0"> <prov:hadQualifiedControl rdf:resource="http://www.example.com/crimeFile#c1"/> </rdf:Description>
The hadQualifiedGeneration property links the Activity class with the Generation class.
Example of hadQualifiedGeneration property from the provenance scenario e1 hadQualifiedGeneration g1, where the hadRole describes the generation of e1 by "save". The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#e1"> <prov:hadQualifiedGeneration rdf:resource="http://www.example.com/crimeFile#u1"/> </rdf:Description>
The hadQualifiedEntity property links the QualifiedInvolvement class with the Entity class.
Example of hadQualifiedEntity property from the provenance scenario u2 hadQualifiedEntity e2, where the hadRole describes the usage of e2 as an "attachment". The RDF/XML syntax for asserting this is given below.
<rdf:Description rdf:about="http://www.example.com/crimeFile#u2"> <prov:hadQualifiedEntity rdf:resource="http://www.example.com/crimeFile#e2"/> </rdf:Description>
The table below summarizes the characteristics of the object properties that are defined in the OWL schema.
Functional | Reverse functional | Transitive | Symmetric | Asymmetric | Reflexive | Irreflexive | |
---|---|---|---|---|---|---|---|
wasControlledBy | No | No | ? | No | Yes | No | Yes |
wasDerivedFrom | No | No | Yes | No | Yes | No | Yes |
hadParticipant | No | No | ? | No | Yes | No | Yes |
wasGeneratedBy | Yes | No | ? | No | Yes | No | Yes |
used | No | No | ? | No | Yes | No | Yes |
wasInformedBy | No | No | No | No | No | No | No |
wasScheduledAfter | No | No | Yes | No | Yes | No | Yes |
The PROV ontology uses the OWL2 annotation properties to describe additional information about the PROV ontology classes, properties, individuals, and axioms. OWL2 defines nine annotation properties that are part of the OWL2 structural specification (see OWL2 Syntax document for additional details [OWL2-SYNTAX]):
Additional annotation properties can be defined by provenance ontologies, but unlike the OWL2 annotation properties, these custom annotation properties may not be interpreted in a standard manner across different provenance applications.
The following diagram illustrates the complete PROV ontology except for QualifiedInvolvement
which is detailed in the subsection on Qualified Involvement below.
The QualifiedInvolvement class describes qualifying information on the PROV-O properties, namely used, wasGeneratedBy, wasControlledBy, and hadParticipant. The following figure illustrates the representation of qualifying information using these PROV-O classes and properties.
This section is non-normative.
The PROV Ontology does not include all the provenance terms that are required by different application to model provenance information. For example, the classes and properties to model provenance information in the provenance scenario, such as "Journalist" or "FileEditing", are not part of the PROV ontology. This is a deliberate design choice for PROV ontology, since modeling provenance terms for a variety of domain applications in a single ontology is impractical. Hence, the PROV Ontology is conceived as an ontology that can be extended by various domain-specific applications to model the required set of provenance terms. The PROV Ontology classes and properties can be specialized using the following two RDFS properties:
A new provenance ontology can be created to model the classes and properties required by an application to represent its domain-specific provenance terms. The new provenance ontology, for the given application, is also expected to include all the PROV Ontology classes and properties, which will facilitate provenance exchange through a common set of terms.
The following are a few example classes from the provenance scenario that are created by specializing PROV Ontology classes:
The PROV ontology uses OWL2 as the ontology language, hence it supports a set of entailments based on the standard RDF semantics [RDF-MT] and OWL2 semantics ([OWL2-DIRECT-SEMANTICS], [OWL2-RDF-BASED-SEMANTICS]). In this section, we describe these set of semantics as applied to the PROV ontology along with a set of constraints introduced in the PROV-DM [PROV-DM] that are provenance-specific. It is intended that provenance applications can leverage this normative description of the formal semantics of PROV ontology to support:
We briefly summarize the essential features of the RDF Semantics and refer to the RDF semantics [RDF-MT] for the normative specification. The RDF Semantics uses model theory, with a notion of interpretation I defined over RDF (rdf-interpretation) or RDFS (rdfs-interpretation) vocabulary, for specifying the formal semantics of a RDF or RDFS graph [RDF-MT]. The rdf-interpretation is an interpretation that satisfies a set of constraints called "RDF semantic conditions" and a set of "RDF axiomatic triples" (see Section 3.1 of RDF Semantics [RDF-MT]). The rdfs-interpretation is defined over the additional terms in the RDFS vocabulary, including rdfs:domain, rdfs:range, rdfs:Class, rdfs:subClassOf, and rdfs:subPropertyOf. An rdfs-interpretation satisfies a set of constraints called "RDFS semantic conditions" and "RDFS axiomatic triples" (see Section 4.1 of RDFS Semantics [RDF-MT]).
The rdfs-interpretation supports the following set of the entailment rules that are applicable to the PROV ontology (we do not discuss the simple RDF entailments):
If a PROV ontology class X is defined to be domain of a PROV property, then an individual asserted as "subject" of that property in a RDF triple is an instance of the class X. (from rdf2 Rule defined in RDF Semantics)
Similar to Rule 1, if a PROV ontology class Y is defined to be range of a PROV object property, then an individual asserted as "object" of that property in a RDF triple is an instance of the class Y. (from rdf3 Rule defined in RDF Semantics)
Both the rdfs:subClassOf
and rdfs:subPropertyOf
are transitive properties, hence provenance assertions, in form of RDF triples, using a specialized sub class or sub property can be inferred to be true for their parent class or parent property. For example, in the provenance scenario, though alice and bob are asserted to be individuals of the class Journalist, we can infer that they are also individuals of the PROV ontology class Agent and Entity.
<rdf:Description rdf:about="http://www.example.com/crimeFile#Alice"> <rdf:type rdf:resource="http://www.example.com/crime#Journalist"/> </rdf:Description>
and
<rdf:Description rdf:about="http://www.example.com/crime#Journalist"> <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov-o/Agent"/> </rdf:Description> <rdf:Description rdf:about="http://www.w3.org/ns/prov-o/Agent"> <rdfs:subClassOf rdf:resource="http://www.w3.org/ns/prov-o/Entity"/> </rdf:Description>
we can infer the following
<rdf:Description rdf:about="http://www.example.com/crimeFile#Alice"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Agent"/> </rdf:Description>
and
<rdf:Description rdf:about="http://www.example.com/crimeFile#Alice"> <rdf:type rdf:resource="http://www.w3.org/ns/prov-o/Entity"/> </rdf:Description>
In addition to RDF Semantics, the OWL2 semantics as described in [OWL2-DIRECT-SEMANTICS], [OWL2-RDF-BASED-SEMANTICS] are also applicable to PROV ontology. We consider the OWL2 RDF-Based Semantics (since it is a semantics superset of OWL2 Direct Semantics) and specifically the extension of the D-interpretation, which satisfies the constraints for rdf-interpretation, rdfs-interpretation (as defined in previous section), graphs with blank nodes, and interpretation defined for RDF datatypes (see Section 5.1 in RDF Semantics [RDF-MT]). The OWL2 RDF-based semantics introduces the notion of "facets" to constrain datatypes, both the rdf:XMLLiteral defined in the RDF Semantics [RDF-MT] and datatypes defined in the OWL2 Structural Specifications [OWL2-SYNTAX]. The OWL2 RDF-based interpretation, also called D-interpretation with facets is a D-interpretation that also satisfies the OWL2 RDF-based semantics called "semantic constraints" (see Section 5 in OWL2 RDF-Based Semantics [OWL2-RDF-BASED-SEMANTICS]).
The PROV-DM [PROV-DM] introduces a set of provenance-specific constraints. These provenance constraints will be modeled in PROV ontology as OWL axioms or as rules using the Rule Interchange Framework (RIF) [RIF-OVERVIEW]. These constraints are expected to be used by provenance applications in addition to the PROV ontology file.
The Provenance Working Group Members.