Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

A library for W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)

Project Description

A library for W3C Provenance Data Model supporting PROV-O (RDF), PROV-XML, PROV-JSON import/export


  • An implementation of the W3C PROV Data Model in Python.
  • In-memory classes for PROV assertions, which can then be output as PROV-N
  • Serialization and deserializtion support: PROV-O (RDF), PROV-XML and PROV-JSON.
  • Exporting PROV documents into various graphical formats (e.g. PDF, PNG, SVG).
  • Convert a PROV document to a Networkx MultiDiGraph and back.


See a short tutorial for using this package.

This package is used extensively by ProvStore, a free online repository for provenance documents.


1.5.1 (2017-07-18)

  • Replaced pydotplus with pydot (see #111)
  • Fixed datetime and bundle error in RDF serialisation
  • Tested against Python 3.6
  • Improved documentation

1.5.0 (2016-10-19)

  • Added: Support for PROV-O (RDF) serialization and deserialization
  • Added: direction option for
  • Added: prov.graph.graph_to_prov to convert a MultiDiGraph back to a ~prov.model.ProvDocument
  • Testing with Python 3.5
  • Various minor bug fixes and improvements

1.4.0 (2015-08-13)

  • Changed the type of qualified names to prov:QUALIFIED_NAME (fixed #68)
  • Removed XSDQName class and stopped supporting parsing xsd:QName as qualified names
  • Replaced pydot dependency with pydotplus
  • Removed support for Python 2.6
  • Various minor bug fixes and improvements

1.3.2 (2015-06-17)

  • Added: prov-compare script to check equivalence of two PROV files (currently supporting JSON and XML)
  • Fixed: deserialising Python 3’s bytes objects (issue #67)

1.3.1 (2015-02-27)

  • Fixed unicode issue with deserialising text contents
  • Set the correct version requirement for six
  • Fixed format selection in prov-convert script

1.3.0 (2015-02-03)

  • Python 3.3 and 3.4 supported
  • Updated prov-convert script to support XML output
  • Added missing test JSON and XML files in distributions

1.2.0 (2014-12-19)

  • Added: prov.graph.prov_to_graph to convert a ~prov.model.ProvDocument to a MultiDiGraph
  • Added: PROV-N serializer
  • Fixed: None values for empty formal attributes in PROV-N output (issue #60)
  • Fixed: PROV-N representation for xsd:dateTime (issue #58)
  • Fixed: Unintended merging of Identifier and QualifiedName values
  • Fixed: Cloning the records when creating a new document from them
  • Fixed: incorrect SoftwareAgent records in XML serialization

1.1.0 (2014-08-21)

  • Added: Support for PROV-XML serialization and deserialization
  • A ~prov.model.ProvRecord instance can now be used as the value of an attributes
  • Added: convenient assertions methods for ~prov.model.ProvEntity, ~prov.model.ProvActivity, and ~prov.model.ProvAgent
  • Added: prov.model.ProvDocument.update and prov.model.ProvBundle.update
  • Fixed: Handling default namespaces of bundles when flattened

1.0.1 (2014-08-18)

  • Added: Default namespace inheritance for bundles
  • Fixed: prov.model.NamespaceManager.valid_qualified_name did not support ~prov.model.XSDQName
  • Added: Convenience method with a lazy format detection
  • Added: Convenience ~prov.model.ProvBundle.plot method on the ~prov.model.ProvBundle class (requiring matplotlib).
  • Changed: The previous !add_record method renamed to ~prov.model.ProvBundle.new_record
  • Added: ~prov.model.ProvBundle.add_record function which takes one argument, a ~prov.model.ProvRecord, has been added
  • Fixed: Document flattening (see ~prov.model.ProvDocument.flattened)
  • Added: ~prov.model.ProvRecord.__hash__ function added to ~prov.model.ProvRecord (at risk: to be removed as ~prov.model.ProvRecord is expected to be mutable)
  • Added: ~prov.model.ProvRecord.extra_attributes added to mirror existing ~prov.model.ProvRecord.formal_attributes

1.0.0 (2014-07-15)

  • The underlying data model has been rewritten and is incompatible with pre-1.0 versions.
  • References to PROV elements (i.e. entities, activities, agents) in relation records are now QualifiedName instances.
  • A document or bundle can have multiple records with the same identifier.
  • PROV-JSON serializer and deserializer are now separated from the data model.
  • Many tests added, including round-trip PROV-JSON encoding/decoding.
  • For changes pre-1.0, see CHANGES.txt.
Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
prov-1.5.1-py2.py3-none-any.whl (426.5 kB) Copy SHA256 Checksum SHA256 py2.py3 Wheel Jul 18, 2017
prov-1.5.1.tar.gz (123.7 kB) Copy SHA256 Checksum SHA256 Source Jul 18, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting