About Provenance¶
The W3C defines provenance as follows: Provenance is defined as a record that describes the people, institutions, entities and activities involved in producing, influencing, or delivering a piece of data or a thing.
By recording the provenance, authors can be recognised and critical analyses of the origin of objects can be carried out. The analyses can then be used to make statements about the quality, reliability and trustworthiness of the information used.
PROV-Datamodel¶
The PROV-Datamodel (PROV-DM) is the conceptual, domain-independent data model designed by the W3C for the standardised implementation of provenance. One aim of standardisation is to make provenance processable for machines in different ways.
At its core, the datamodel describes the use and production of entities by activities, which may be influenced in various ways by agents. The core structures are defined as follows:
An entity is a physical, digital, conceptual, or other kind of thing with some fixed aspects; entities may be real or imaginary.
An activity is something that occurs over a period of time and acts upon or with entities; it may include consuming, processing, transforming, modifying, relocating, using, or generating entities.
An agent is something that bears some form of responsibility for an activity taking place, for the existence of an entity, or for another agent’s activity.
Additionally there are seven core relations:
Generation is the completion of production of a new entity by an activity. This entity did not exist before generation and becomes available for usage after this generation.
Usage is the beginning of utilizing an entity by an activity. Before usage, the activity had not begun to utilize this entity and could not have been affected by the entity.
A derivation is a transformation of an entity into another, an update of an entity resulting in a new one, or the construction of a new entity based on a pre-existing entity.
Communication is the exchange of some unspecified entity by two activities, one activity using some entity generated by the other.
Attribution is the ascribing of an entity to an agent.
An activity association is an assignment of responsibility to an agent for an activity, indicating that the agent had a role in the activity.
Delegation is the assignment of authority and responsibility to an agent (by itself or by another agent) to carry out a specific activity as a delegate or representative, while the agent it acts on behalf of retains some responsibility for the outcome of the delegated work.
The content of this section cites PROV-DM - The PROV Data Model.
How to record provenance in your project¶
Before recording provenance in your project, you need to be sure about the questions you want to answer. Questions that fit to an example application can be found in Integration of django-prov.
After that, you need to be sure which models you want to track and whether they belong to the entities or agents. There can also be edge cases where you have objects that usually would be entities because they represent data. But in some cases these objects represent real persons, e.g. students. Tracking them as agents can be more rational then. More information can be found in the sections How to record entities and How to record agents.
If you have decided on the models that you want to track, you need to define the activities you want to track. More information can be found in How to record activities