Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
This document reports on implementations and usage of the four normative specifications ([PROV-DM], [PROV-N], [PROV-O], [PROV-CONSTRAINTS]) of the PROV Family of Documents [PROV-OVERVIEW]. In particular, it's aim is to demonstrate that the features defined in PROV are implementable and interoperable. Features are defined as: the constructs specified in [PROV-DM] and their realisation in OWL (see [PROV-O]) and in the [PROV-N] syntax; the constraints defined within [PROV-CONSTRAINTS]. Interoperability is defined through both the interchange of provenance information and the coverage of test cases.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
During the lifetime of the Provenance Working Group, implementation experience of the PROV specifications was reported. This document summarises those experiences. The version at http://www.w3.org/TR/2013/WD-prov-implementations-20130312/ is the version used for purposes of transition to proposed recommendation. For comments, please send a mail to public-prov-comments@w3.org [archive].This document was published by the Provenance Working Group as a Working Group Note. If you wish to make comments regarding this document, please send them to public-prov-comments@w3.org (subscribe, archives). All comments are welcome.
Publication as a Working Group Note does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
The goal of PROV is to enable interoperable interchange of provenance on the Web. We take two approaches to documenting the implementation and interoperability of PROV.
PROV is useful not only for applications/programs but also for exposing provenance within datasets and as a foundation for other vocabularies. We also document that usage as well.
Implementation evidence was gathered using four surveys.
This report summarizes the results of these surveys.
At the start of the Candidate Recommendation phase, the Working Group defined a series of exit criteria. These exit criteria can be summarized as for each feature defined by PROV there are at least two implementations that support the feature and that there exists one interoperability pair that can exchange that feature. Section 3.1 shows that three implementations both produce and consume all constructs defined in PROV-DM. PROV-O is implemented by over 40 implementations and PROV-N is implemented by 12 implementations.
In terms of implementation pairs, Section 4 enumerates which pairs of implementations report exchanging provenance. Here, we meet the exit criteria in that each feature is exchanged by at least two implementations.
Finally, three validators have implemented all of the constraints defined in PROV-Constraints passing the requisite test cases, thus, passing the exit criteria. The working group recognizes that implementing the PROV-Constraints document requires substantial effort. It is nice to see that three radically different approaches were chosen to implement this specification: SPARQL, Java, Prolog, which speaks to the implementability of this specification.
For a systematic enumeration of how the exit criteria were met, please see http://www.w3.org/2011/prov/wiki/MeetingProvCRExitCriteria
Implementation Type:
# | Name | Type | PROV Encodings |
---|---|---|---|
1 | StatJR eBook system | Application | PROV-O, PROV-JSON |
2 | PoN | Application | PROV-N |
3 | WingsProvenanceExport | Application | PROV-O |
4 | Taverna | Application | PROV-O |
5 | CollabMap | Application | PROV-JSON |
6 | WebLab-PROV | Application | PROV-O, PROV-N |
7 | ProvToolbox | Framework / API Service |
PROV-O, PROV-N, PROV-XML, PROV-JSON |
8 | Provenance for Earth Science | Application Service |
PROV-O |
9 | Provenance Environment (ProvEn) Services | Application Service |
PROV-O |
10 | Annotation Inference Framework | Application Framework / API |
PROV-O, PROV-N, PROV-XML, PROV-JSON |
11 | PROVoKing | Framework / API | PROV-O |
12 | Triplify | Service | PROV-O |
13 | Prov-gen | Application | PROV-N |
14 | OBIAMA (Ontology-Based Integrated Action Modelling Arena | Application | PROV-O |
15 | Amalgame | Application Framework / API Service |
PROV-O |
16 | D2R Server | Service | PROV-O |
17 | Provenance server | Service | PROV-N, PROV-JSON |
18 | agentSwitch | Application | PROV-N, PROV-JSON |
19 | Oracle Enterprise Transactions Controls Governor 8.6.4 | Application | PROV-O, PROV-XML |
20 | Pubby | Service | PROV-O |
21 | Semantic Proteomics Dashboard (SemPoD) | Application | PROV-O |
22 | DeFacto | Application | PROV-O |
23 | Quality Assessment Framework | Framework / API | PROV-O |
24 | Global Change Information System - Information Model and Semantic Application Prototypes | Application | PROV-O |
25 | OpenUp Prov | Application | PROV-O |
26 | APROVeD: Automatic Provenance Derivation | Application | PROV-N, PROV-JSON |
27 | Raw2LD | Application | PROV-O |
28 | PROV-N to Neo4J DB mapping | Application | PROV-N |
29 | Earth System Science Server | Application | PROV-XML, PROV-JSON |
30 | prov-api | Framework / API | PROV-O |
31 | Policy Reasoning Framework | Framework / API | PROV-O |
32 | Informed Rural Passenger Information Infrastructure | Application | PROV-O |
33 | PubFlow Provenance Archive | Application Framework / API |
PROV-O, PROV-XML |
34 | PROV Python library | Framework / API | PROV-N, PROV-JSON |
35 | csv2rdf4lod-automation | Application | PROV-O |
36 | recoprov | Application | PROV-O, PROV-N |
37 | DataFAQs | Application | PROV-O |
38 | provx2o | Application | PROV-O, PROV-XML |
39 | Hedgehog | Application | PROV-XML |
40 | QuerioCity research prototype | Application Framework / API Service |
PROV-O |
41 | Tinga Provenance Service | Service | PROV-O, PROV-JSON |
42 | Human Computation ontology | Vocabulary Extension | PROV-O |
43 | tavernaprov | Vocabulary Extension | PROV-O |
44 | The Open Provenance Model for Workflows (OPMW) | Vocabulary Extension | PROV-O |
45 | roevo | Vocabulary Extension | PROV-O |
46 | wfprov | Vocabulary Extension | PROV-O |
47 | P-plan | Vocabulary Extension | PROV-O |
48 | Provenance Vocabulary Core Ontology Specification | Vocabulary Extension | PROV-O |
49 | Systems molecular biology provenance ontology (SysPro) | Vocabulary Extension | PROV-O, None |
50 | Yanfeng Shu | Vocabulary Extension | PROV-O |
51 | ISO_19115_Lineage | Vocabulary Extension | PROV-O, none |
52 | PAV Provenance, Authoring and Versioning | Vocabulary Extension | PROV-O |
53 | cProv | Vocabulary Extension | PROV-N, PROV-XML |
54 | PML 3.0 | Vocabulary Extension | PROV-O |
55 | Music Ontology to Media Value Chain Ontology and PROV-O Ontology Mapping | Vocabulary Usage | PROV-O |
56 | PROV-DM: the PROV data model | Vocabulary Usage | PROV-N |
57 | DBpedia | Vocabulary Usage | PROV-O |
58 | AERS-LD | Vocabulary Usage | PROV-O |
59 | TWC Healthdata | Vocabulary Usage | PROV-O |
60 | University of Southampton Open Data | Vocabulary Usage | PROV-XML |
61 | SIGNA | Vocabulary Usage | PROV-O |
62 | Dublin Core to PROV mapping | Vocabulary Usage | PROV-O |
63 | OECD Linked Data | Vocabulary Usage | PROV-O |
64 | prov-check | Validator | PROV-O |
65 | Prov-Validator | Validator | PROV-O, PROV-N, PROV-XML, PROV-JSON |
66 | checker.pl | Validator | PROV-XML |
This section enumerates the PROV-DM terms [PROV-DM] that are consumed (), produced (), or both consumed and produced () by a particular implementation.
Hover over the numbers to see the implementation name.PROV Component | Term | #42 | #43 | #44 | #45 | #46 | #47 | #48 | #49 | #50 | #51 | #52 | #53 | #54 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
C1: Entities/Activities | Entity | 12 | |||||||||||||
Activity | 12 | ||||||||||||||
Generation | 11 | ||||||||||||||
Usage | 11 | ||||||||||||||
Communication | 3 | ||||||||||||||
Start | 4 | ||||||||||||||
End | 5 | ||||||||||||||
Invalidation | 2 | ||||||||||||||
C2: Derivations | Derivation | 5 | |||||||||||||
Revision | 3 | ||||||||||||||
Quotation | 2 | ||||||||||||||
Primary Source | 2 | ||||||||||||||
C3: Agents | Agent | 10 | |||||||||||||
Attribution | 7 | ||||||||||||||
Association | 9 | ||||||||||||||
Delegation | 3 | ||||||||||||||
Plan | 9 | ||||||||||||||
Person | 3 | ||||||||||||||
Organization | 2 | ||||||||||||||
SoftwareAgent | 5 | ||||||||||||||
Influence | 6 | ||||||||||||||
C4: Bundles | Bundle | 3 | |||||||||||||
C5: Alternate | Alternate | 2 | |||||||||||||
Specialization | 2 | ||||||||||||||
C6: Collections | Collection | 1 | |||||||||||||
EmptyCollection | 0 | ||||||||||||||
Membership | 1 | ||||||||||||||
Other Elements | Identififer | 0 | |||||||||||||
Attribute | 2 | ||||||||||||||
Label | 1 | ||||||||||||||
Location | 5 | ||||||||||||||
Role | 5 | ||||||||||||||
Type | 1 | ||||||||||||||
Value | 3 |
PROV Component | Term | #55 | #56 | #57 | #58 | #59 | #60 | #61 | #62 | #63 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|
C1: Entities/Activities | Entity | 6 | |||||||||
Activity | 7 | ||||||||||
Generation | 7 | ||||||||||
Usage | 7 | ||||||||||
Communication | 4 | ||||||||||
Start | 3 | ||||||||||
End | 3 | ||||||||||
Invalidation | 1 | ||||||||||
C2: Derivations | Derivation | 7 | |||||||||
Revision | 3 | ||||||||||
Quotation | 1 | ||||||||||
Primary Source | 2 | ||||||||||
C3: Agents | Agent | 7 | |||||||||
Attribution | 6 | ||||||||||
Association | 5 | ||||||||||
Delegation | 3 | ||||||||||
Plan | 3 | ||||||||||
Person | 1 | ||||||||||
Organization | 1 | ||||||||||
SoftwareAgent | 2 | ||||||||||
Influence | 2 | ||||||||||
C4: Bundles | Bundle | 1 | |||||||||
C5: Alternate | Alternate | 3 | |||||||||
Specialization | 3 | ||||||||||
C6: Collections | Collection | 1 | |||||||||
EmptyCollection | 1 | ||||||||||
Membership | 1 | ||||||||||
Other Elements | Identififer | 1 | |||||||||
Attribute | 1 | ||||||||||
Label | 1 | ||||||||||
Location | 2 | ||||||||||
Role | 2 | ||||||||||
Type | 1 | ||||||||||
Value | 2 |
The table above was produced from the results of running PROV-CONSTRAINTS test cases submitted by implementers.
Producer: | ProvToolbox | PROVoKing | Provenenane Server | APROVeD | PROV Python | Prov-Validator | PROV-DM | |
---|---|---|---|---|---|---|---|---|
Consumer |
Provenance Server | All (PROV-JSON) | All (PROV-JSON) | |||||
Prov-Validator | All (PROV-O) | All (PROV-N) | Partial (PROV-N) | All (PROV-N) | All (PROV-N) | |||
prov-check | All (PROV-O) | |||||||
Summary:
PROV Component | Producer: | #11 | #7 | Total | #17 | #26 | #55 | Total |
---|---|---|---|---|---|---|---|---|
Consumer: | #65 | #64 | #65 | #65 | #65 | |||
Term | PROV-O | PROV-N | ||||||
C1: Entities/Activities | Entity | 2 | 3 | |||||
Activity | 2 | 3 | ||||||
Generation | 2 | 3 | ||||||
Usage | 2 | 3 | ||||||
Communication | 2 | 2 | ||||||
Start | 2 | 2 | ||||||
End | 2 | 2 | ||||||
Invalidation | 2 | 2 | ||||||
C2: Derivations | Derivation | 2 | 3 | |||||
Revision | 2 | 2 | ||||||
Quotation | 2 | 2 | ||||||
Primary Source | 2 | 2 | ||||||
C3: Agents | Agent | 2 | 3 | |||||
Attribution | 2 | 2 | ||||||
Association | 2 | 3 | ||||||
Delegation | 2 | 2 | ||||||
Plan | 2 | 2 | ||||||
Person | 2 | 2 | ||||||
Organization | 2 | 3 | ||||||
SoftwareAgent | 2 | 2 | ||||||
Influence | 2 | 2 | ||||||
C4: Bundles | Bundle | 2 | 3 | |||||
C5: Alternate | Alternate | 2 | 2 | |||||
Specialization | 2 | 2 | ||||||
C6: Collections | Collection | 2 | 2 | |||||
EmptyCollection | 2 | 2 | ||||||
Membership | 2 | 2 | ||||||
Other Elements | Identififer | 2 | 2 | |||||
Attribute | 2 | 2 | ||||||
Label | 2 | 2 | ||||||
Location | 2 | 2 | ||||||
Role | 2 | 3 | ||||||
Type | 2 | 3 | ||||||
Value | 2 | 2 |
Although the Provenance Server (#17) and the Prov-Validator (#65) are from the same institution (i.e. University of Southampton), it is worth noting that they were built from two independent code bases (one in Python and the other in Java)
We would like to thank the following who reported their PROV implementations to us: Ali Mufajjul, Amir Sezavar Keshavarz, Ashley Smith, Chester Chen, Chris Baillie, Clément Caron, Daniel Garijo, Danius Michaelides, David Corsar, Edoardo Pignotti, Eric Stephan, Hook Hua, Irene Celino, Jacco van Ossenbruggen, James Cheney, James McCusker, Jens Lehmann, Jun Zhao, Kerry Taylor, Khalid Belhajjame, Landong Zuo, Luc Moreau, Luis M. Vilches-Blázquez, Michael Jewell, Mohamed Morsey, Olaf Hartig, Palma Raul, Paolo Missier, Paul Groth, Peer Brauer, Peter Slaughter, Reza B'Far, Rinke Hoekstra, Sara Magliacane, Sarven Capadisli, Satya Sahoo, Simon Miles, Spyros Kotoulas, Stephan Zednik, Stian Soiland-Reyes, Timothy Lebo, Tom De Nies, Trung Dong Huynh, Victor Rodriguez, Yanfeng Shu.