prov package

Submodules

prov.constants module

prov.dot module

Graphical visualisation support for prov.model.

This module produces graphical visualisation for provenanve graphs. Requires pydotplus module and Graphviz.

References:

prov.dot.prov_to_dot(bundle, show_nary=True, use_labels=False, direction='BT', show_element_attributes=True, show_relation_attributes=True)[source]

Convert a provenance bundle/document into a DOT graphical representation.

Parameters:
  • bundle – The provenance bundle/document to be converted.
  • show_nary (bool) – shows all elements in n-ary relations.
  • use_labels (bool) – uses the prov:label property of an element as its name (instead of its identifier).
  • direction – specifies the direction of the graph. Valid values are “BT” (default), “TB”, “LR”, “RL”.
  • show_element_attributes (bool) – shows attributes of elements.
  • show_relation_attributes (bool) – shows attributes of relations.
Returns:

pydot.Dot – the Dot object.

prov.graph module

prov.graph.graph_to_prov(g)[source]

Convert a MultiDiGraph back to a ProvDocument.

Parameters:g – The graph instance to convert.
prov.graph.prov_to_graph(prov_document)[source]

Convert a ProvDocument to a MultiDiGraph instance of the NetworkX library.

Parameters:prov_document – The ProvDocument instance to convert.

prov.identifier module

class prov.identifier.Identifier(uri)[source]

Bases: object

Base class for all identifiers and also represents xsd:anyURI

provn_representation()[source]
uri
class prov.identifier.Namespace(prefix, uri)[source]

Bases: object

contains(identifier)[source]
prefix
qname(identifier)[source]
uri
class prov.identifier.QualifiedName(namespace, localpart)[source]

Bases: prov.identifier.Identifier

localpart
namespace
provn_representation()[source]

prov.model module

Python implementation of the W3C Provenance Data Model (PROV-DM), including support for PROV-JSON import/export

References:

PROV-DM: http://www.w3.org/TR/prov-dm/ PROV-JSON: https://provenance.ecs.soton.ac.uk/prov-json/

class prov.model.Literal(value, datatype=None, langtag=None)[source]

Bases: object

datatype
has_no_langtag()[source]
langtag
provn_representation()[source]
value
class prov.model.NamespaceManager(namespaces=None, default=None, parent=None)[source]

Bases: dict

add_namespace(namespace)[source]
add_namespaces(namespaces)[source]

Add multiple namespaces into this manager

Parameters:namespaces (list of Namespace or) – a collection of namespace(s) to add.

dict of {prefix: uri} :returns: None

get_anonymous_identifier(local_prefix='id')[source]
get_default_namespace()[source]
get_namespace(uri)[source]
get_registered_namespaces()[source]
set_default_namespace(uri)[source]
valid_qualified_name(qname)[source]
class prov.model.ProvActivity(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvElement

FORMAL_ATTRIBUTES = (<QualifiedName: prov:startTime>, <QualifiedName: prov:endTime>)
get_endTime()[source]
get_startTime()[source]
get_type()[source]
set_time(startTime=None, endTime=None)[source]
used(entity, time=None, attributes=None)[source]
wasAssociatedWith(agent, plan=None, attributes=None)[source]
wasEndedBy(trigger, ender=None, time=None, attributes=None)[source]
wasInformedBy(informant, attributes=None)[source]
wasStartedBy(trigger, starter=None, time=None, attributes=None)[source]
class prov.model.ProvAgent(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvElement

actedOnBehalfOf(responsible, activity=None, attributes=None)[source]
get_type()[source]
class prov.model.ProvAlternate(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:alternate1>, <QualifiedName: prov:alternate2>)
get_type()[source]
class prov.model.ProvAssociation(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:activity>, <QualifiedName: prov:agent>, <QualifiedName: prov:plan>)
get_type()[source]
class prov.model.ProvAttribution(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:entity>, <QualifiedName: prov:agent>)
get_type()[source]
class prov.model.ProvBundle(records=None, identifier=None, namespaces=None, document=None)[source]

Bases: object

actedOnBehalfOf(delegate, responsible, activity=None, identifier=None, other_attributes=None)
activity(identifier, startTime=None, endTime=None, other_attributes=None)[source]
add_namespace(namespace_or_prefix, uri=None)[source]
add_record(record)[source]
agent(identifier, other_attributes=None)[source]
alternate(alternate1, alternate2)[source]
alternateOf(alternate1, alternate2)
association(activity, agent=None, plan=None, identifier=None, other_attributes=None)[source]
attribution(entity, agent, identifier=None, other_attributes=None)[source]
bundles
collection(identifier, other_attributes=None)[source]
communication(informed, informant, identifier=None, other_attributes=None)[source]
default_ns_uri

Returns the default namespace’s URI, if any

delegation(delegate, responsible, activity=None, identifier=None, other_attributes=None)[source]
derivation(generatedEntity, usedEntity, activity=None, generation=None, usage=None, identifier=None, other_attributes=None)[source]
document

Returns the parent document, if any

end(activity, trigger=None, ender=None, time=None, identifier=None, other_attributes=None)[source]
entity(identifier, other_attributes=None)[source]
generation(entity, activity=None, time=None, identifier=None, other_attributes=None)[source]
get_default_namespace()[source]
get_provn(_indent_level=0)[source]
get_record(identifier)[source]
get_records(class_or_type_or_tuple=None)[source]
get_registered_namespaces()[source]
hadMember(collection, entity)
hadPrimarySource(generatedEntity, usedEntity, activity=None, generation=None, usage=None, identifier=None, other_attributes=None)
has_bundles()[source]
identifier

Returns the bundle’s identifier

influence(influencee, influencer, identifier=None, other_attributes=None)[source]
invalidation(entity, activity=None, time=None, identifier=None, other_attributes=None)[source]
is_bundle()[source]
is_document()[source]
membership(collection, entity)[source]
mention(specificEntity, generalEntity, bundle)[source]
mentionOf(specificEntity, generalEntity, bundle)
namespaces

Returns the set of registered namespaces

new_record(record_type, identifier, attributes=None, other_attributes=None)[source]
plot(filename=None, show_nary=True, use_labels=False, show_element_attributes=True, show_relation_attributes=True)[source]

Convenience function to plot a prov document.

Parameters:
  • filename (string, optional) – The filename to save to. If not given, it will open an interactive matplotlib plot. The filetype is determined from the filename ending.
  • show_nary (bool) – shows all elements in n-ary relations.
  • use_labels – uses the prov:label property of an element as its

name (instead of its identifier). :type use_labels: bool :param show_element_attributes: shows attributes of elements. :type show_element_attributes: bool :param show_relation_attributes: shows attributes of relations. :type show_relation_attributes: bool

primary_source(generatedEntity, usedEntity, activity=None, generation=None, usage=None, identifier=None, other_attributes=None)[source]
quotation(generatedEntity, usedEntity, activity=None, generation=None, usage=None, identifier=None, other_attributes=None)[source]
records

Returns the list of all records in the current bundle

revision(generatedEntity, usedEntity, activity=None, generation=None, usage=None, identifier=None, other_attributes=None)[source]
set_default_namespace(uri)[source]
specialization(specificEntity, generalEntity)[source]
specializationOf(specificEntity, generalEntity)
start(activity, trigger=None, starter=None, time=None, identifier=None, other_attributes=None)[source]
unified()[source]

Unifies all records in the bundle that haves same identifiers

Returns:ProvBundle – the new unified bundle.
update(other)[source]

Append all the records of the other ProvBundle into this bundle.

Parameters:other (ProvBundle) – the other bundle whose records to be appended.
Returns:None.
usage(activity, entity=None, time=None, identifier=None, other_attributes=None)[source]
used(activity, entity=None, time=None, identifier=None, other_attributes=None)
valid_qualified_name(identifier)[source]
wasAssociatedWith(activity, agent=None, plan=None, identifier=None, other_attributes=None)
wasAttributedTo(entity, agent, identifier=None, other_attributes=None)
wasDerivedFrom(generatedEntity, usedEntity, activity=None, generation=None, usage=None, identifier=None, other_attributes=None)
wasEndedBy(activity, trigger=None, ender=None, time=None, identifier=None, other_attributes=None)
wasGeneratedBy(entity, activity=None, time=None, identifier=None, other_attributes=None)
wasInfluencedBy(influencee, influencer, identifier=None, other_attributes=None)
wasInformedBy(informed, informant, identifier=None, other_attributes=None)
wasInvalidatedBy(entity, activity=None, time=None, identifier=None, other_attributes=None)
wasQuotedFrom(generatedEntity, usedEntity, activity=None, generation=None, usage=None, identifier=None, other_attributes=None)
wasRevisionOf(generatedEntity, usedEntity, activity=None, generation=None, usage=None, identifier=None, other_attributes=None)
wasStartedBy(activity, trigger=None, starter=None, time=None, identifier=None, other_attributes=None)
class prov.model.ProvCommunication(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:informed>, <QualifiedName: prov:informant>)
get_type()[source]
class prov.model.ProvDelegation(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:delegate>, <QualifiedName: prov:responsible>, <QualifiedName: prov:activity>)
get_type()[source]
class prov.model.ProvDerivation(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:generatedEntity>, <QualifiedName: prov:usedEntity>, <QualifiedName: prov:activity>, <QualifiedName: prov:generation>, <QualifiedName: prov:usage>)
get_type()[source]
class prov.model.ProvDocument(records=None, namespaces=None)[source]

Bases: prov.model.ProvBundle

add_bundle(bundle, identifier=None)[source]

Add a bundle to the current document

bundle(identifier)[source]
bundles
static deserialize(source=None, content=None, format='json', **args)[source]

Deserialize the ProvDocument from source (a stream or a filepath) or directly from a string content

Format defaults to PROV-JSON.

flattened()[source]

Flattens the document by moving all the records in its bundles up to the document level.

Returns:ProvDocument – the (new) flattened document.
has_bundles()[source]
is_bundle()[source]
is_document()[source]
serialize(destination=None, format='json', **args)[source]

Serialize the ProvDocument to destination

If destination is None serialize method returns the serialization as a string. Format defaults to PROV-JSON.

unified()[source]

Returns a new document containing all records having same identifiers unified (including those inside bundles)

update(other)[source]

Append all the records of the other document/bundle into this document. Bundles having same identifiers will be merged.

Parameters:other (ProvDocument or ProvBundle) – the other document/bundle whose records to be appended.
Returns:None.
class prov.model.ProvElement(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRecord

is_element()[source]
exception prov.model.ProvElementIdentifierRequired[source]

Bases: prov.model.ProvException

class prov.model.ProvEnd(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:activity>, <QualifiedName: prov:trigger>, <QualifiedName: prov:ender>, <QualifiedName: prov:time>)
get_type()[source]
class prov.model.ProvEntity(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvElement

alternateOf(alternate2)[source]
get_type()[source]
hadMember(entity)[source]
specializationOf(generalEntity)[source]
wasAttributedTo(agent, attributes=None)[source]
wasDerivedFrom(usedEntity, activity=None, generation=None, usage=None, attributes=None)[source]
wasGeneratedBy(activity, time=None, attributes=None)[source]
wasInvalidatedBy(activity, time=None, attributes=None)[source]
exception prov.model.ProvException[source]

Bases: prov.Error

Base class for PROV model exceptions.

exception prov.model.ProvExceptionInvalidQualifiedName(qname)[source]

Bases: prov.model.ProvException

class prov.model.ProvGeneration(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:entity>, <QualifiedName: prov:activity>, <QualifiedName: prov:time>)
get_type()[source]
class prov.model.ProvInfluence(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:influencee>, <QualifiedName: prov:influencer>)
get_type()[source]
class prov.model.ProvInvalidation(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:entity>, <QualifiedName: prov:activity>, <QualifiedName: prov:time>)
get_type()[source]
class prov.model.ProvMembership(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:collection>, <QualifiedName: prov:entity>)
get_type()[source]
class prov.model.ProvMention(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvSpecialization

FORMAL_ATTRIBUTES = (<QualifiedName: prov:specificEntity>, <QualifiedName: prov:generalEntity>, <QualifiedName: prov:bundle>)
get_type()[source]
class prov.model.ProvRecord(bundle, identifier, attributes=None)[source]

Bases: object

Base class for PROV records.

FORMAL_ATTRIBUTES = ()
add_asserted_type(type_identifier)[source]
add_attributes(attributes)[source]
args
attributes
bundle
copy()[source]

Return an exact copy of this record.

extra_attributes
formal_attributes
get_asserted_types()[source]
get_attribute(attr_name)[source]
get_provn()[source]
get_type()[source]

Returning the PROV type of the record

identifier
is_element()[source]
is_relation()[source]
label
value
class prov.model.ProvRelation(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRecord

is_relation()[source]
class prov.model.ProvSpecialization(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:specificEntity>, <QualifiedName: prov:generalEntity>)
get_type()[source]
class prov.model.ProvStart(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:activity>, <QualifiedName: prov:trigger>, <QualifiedName: prov:starter>, <QualifiedName: prov:time>)
get_type()[source]
class prov.model.ProvUsage(bundle, identifier, attributes=None)[source]

Bases: prov.model.ProvRelation

FORMAL_ATTRIBUTES = (<QualifiedName: prov:activity>, <QualifiedName: prov:entity>, <QualifiedName: prov:time>)
get_type()[source]
exception prov.model.ProvWarning[source]

Bases: Warning

Base class for PROV model warnings.

prov.model.encoding_provn_value(value)[source]
prov.model.first(a_set)[source]
prov.model.parse_boolean(value)[source]
prov.model.parse_xsd_datetime(value)[source]
prov.model.parse_xsd_types(value, datatype)[source]
prov.model.sorted_attributes(element, attributes)[source]

Helper function sorting attributes into the order required by PROV-XML.

Parameters:
  • element – The prov element used to derive the type and the attribute order for the type.
  • attributes – The attributes to sort.

Module contents

exception prov.Error[source]

Bases: Exception

Base class for all errors in this package.

prov.read(source, format=None)[source]

Convenience function returning a ProvDocument instance.

It does a lazy format detection by simply using try/except for all known formats. The deserializers should fail fairly early when data of the wrong type is passed to them thus the try/except is likely cheap. One could of course also do some more advanced format auto-detection but I am not sure that is necessary.

The downside is that no proper error messages will be produced, use the format parameter to get the actual traceback.