PROV Ontology (PROV-O)¶
The PROV Ontology (PROV-O) is an OWL2 ontology for representing provenance information according to the W3C PROV data model [1] [2]. It provides classes, properties, and restrictions for describing how entities, activities, and agents are involved in the creation, transformation, usage, and management of data and other resources [1].
PROV-O captures the lifecycle of information by representing what was generated, which activity generated it, which entities were used, and which agents were responsible or associated with the process [1]. This allows systems to formally describe who created or modified a resource, when it was created, what inputs were used, and under what circumstances the resource was produced [1].
The ontology is generic enough to support provenance modeling across different domains, while also allowing domain-specific extensions for specialized provenance requirements [1]. Recent ontology-alignment work has also explored mappings between PROV-O, Basic Formal Ontology (BFO), and Common Core Ontologies (CCO), supporting improved semantic interoperability and provenance integration across ontology-based systems [2].
PROV-O is widely used in scientific workflows, data management systems, linked data applications, digital repositories, and enterprise information governance to support traceability, accountability, reproducibility, data quality assessment, and policy compliance [1] [2].
Example Usage: Annotate a dataset’s provenance with PROV-O terms to show that a data entity was generated by a specific activity, used one or more input entities, and was associated with a responsible agent. Adding timestamps and qualified relations makes it possible to trace how the dataset was produced, transformed, and validated, supporting reproducibility and data accountability [1].
Metrics & Statistics¶
Total Nodes |
417 |
Total Edges |
1100 |
Root Nodes |
26 |
Leaf Nodes |
248 |
Classes |
39 |
Individuals |
0 |
Properties |
50 |
Maximum Depth |
6 |
Minimum Depth |
0 |
Average Depth |
2.21 |
Depth Variance |
1.98 |
Maximum Breadth |
59 |
Minimum Breadth |
5 |
Average Breadth |
30.29 |
Breadth Variance |
409.63 |
Term Types |
0 |
Taxonomic Relations |
39 |
Non-taxonomic Relations |
4 |
Average Terms per Type |
0.00 |
Usage Example¶
Use the following code to import this ontology programmatically:
from ontolearner.ontology import PROV
ontology = PROV()
ontology.load("path/to/PROV-ontology.owl")
# Extract datasets
data = ontology.extract()
# Access specific relations
term_types = data.term_typings
taxonomic_relations = data.type_taxonomies
non_taxonomic_relations = data.type_non_taxonomic_relations