This wiki has been archived and is now read-only.

PROV OWL ontology components

From Provenance WG Wiki
Jump to: navigation, search

Author: Tim Lebo

This page provides an overview of the ontology components available in the mercurial repository at:


For realistic examples, see PROV OWL ontology component examples.

For artificial examples, see Artificial PROV OWL ontology component examples.


This directory contains small sets of OWL axioms, i.e. "components", that can contribute to the authoritative OWL encoding of PROV. These components, if they do not make it into the authoritative encoding, can also be used to create variant and extension OWL encodings of PROV to suit different users needs.

Note that the presence of an axiom as a component does not imply that it is a part of the authoritative OWL encoding of PROV. As the authoritative encoding is developed, it may include or omit any of these proposed components. This collection of components exists to provide concrete encodings of proposals while the authoritative OWL encoding is developed.

Thus, these components will likely be a SUPERSET of the authoritative OWL encoding, and may even be logically inconsistent if all are incorporated into a single OWL ontology.

Directory Organization

Class components

The following files describe classes that can become part of the PROV ontology [1]:

(last updated 2011-11-08 tlebo)

Property components

The following files describe properties that can become part of the PROV ontology [2]:

(last updated 2011-11-08 tlebo)

Example instance data

Directories (e.g. components/assumedBy/) for each component (e.g. components/assumedBy.ttl) contain small examples that exercise some or all of the axioms in the component. For consistency, the names of the examples directories correspond with the name of the component file. For example, the assumedBy component provides the following two examples in the assumedBy/ directory:

For an overview of the examples independent of their component, see PROV OWL ontology component examples.

Unit tests

Directories (e.g. components/wasControlledBy/example-1/) for each component example (e.g. components/wasControlledBy/example-1.ttl) contain SPARQL queries (e.g. components/wasControlledBy/example-1/test-1.rq) that can be used to unit test the corresponding example. If OWL reasoning is required to test the instance data, a corresponding OWL file (e.g. components/wasControlledBy/example-1/test-1.owl) will accompany the SPARQL unit test. These OWL files should use only owl:imports to specify components or component aggregations -- they should not include the axioms directly.

Note, testing is not implemented yet.

Component Aggregations

The directory component-aggregations contains files that aggregate different components using the owl:imports mechanism. The owl:imports can be implemented to produce an aggregation (technically, and RDF union) of the components it specifies.

For example, component-aggregations/prov-variant-1.ttl aggregates components associated to two classes and a property:

@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix prov: <http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/ProvenanceOntology.owl#> .

   a owl:Ontology;
   owl:imports <../components/Account.ttl>;
   owl:imports <../components/EntityInRole.ttl>;
   owl:imports <../components/assumedBy.ttl>;

Performing the owl:imports produces the OWL file at component-aggregations/prov-variant-1.owl, which has derivation provenance described using PROV OWL at component-aggregations/prov-variant-1.owl.prov.ttl.

The aggregation (e.g. component-aggregations/prov-variant-1.owl) can then be viewed in any OWL ontology browser such as Manchester's.

How to aggregate a component aggregation list

After checking out the Mercurial repository, run:

cd /Users/tlebo/Desktop/prov-wg/hg/prov/ontology/component-aggregations

./aggregate.sh prov.ttl 
prov.ttl --=(closure)=--> prov.owl

   += http://dvcs.w3.org/hg/prov/raw-file/ff40085a2c94/ontology/ProvenanceOntology.owl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/involved.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/used.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/hadParticipant.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/wasControlledBy.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/generated.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/wasGeneratedBy.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/63887c796f43/ontology/components/QualifiedInvolvement.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/Usage.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/Participation.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/Control.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/Generation.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/role.ttl
   += http://dvcs.w3.org/hg/prov/raw-file/tip/ontology/components/wasDerivedFrom.ttl
   ==-> prov.owl