CARVIEW |
PROV Implementation Report
W3C Working Group Note 30 April 2013
- This version:
- https://www.w3.org/TR/2013/NOTE-prov-implementations-20130430/
- Latest published version:
- https://www.w3.org/TR/prov-implementations/
- Previous version:
- https://www.w3.org/TR/2013/WD-prov-implementations-20130312/
- Editors:
- Trung Dong Huynh, University of Southampton
- Paul Groth, VU University Amsterdam
- Stephan Zednik, Rensselaer Polytechnic Institute
Copyright © 2013 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark and document use rules apply.
Abstract
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.
Status of This Document
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 https://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 https://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.
Table of Contents
1. Introduction
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.
- For the data model [PROV-DM] and the two working group defined serializations, we document the existence of multiple implementations that support each of the constructs within the data model and that there exists at least two implementations that are reported to exchange these constructs.
- We document that the PROV-Constraints specification is implementable by documenting the existence of at least two implementations that report to support all the defined constraints. To evaluate the coverage of implementations, the PROV-Constraints Test Cases are used as a point of reference. There are 280 test cases in total, which map to the the constraints defined by the document.
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.
- Implementations in software
- Usage in datasets or the web
- Extensions of the PROV vocabulary
- Implementations of PROV-Constraints
This report summarizes the results of these surveys.
1.1 Meeting the Exit Criteria
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 https://www.w3.org/2011/prov/wiki/MeetingProvCRExitCriteria
2. List of Implementations
The following lists the reported implementations, the type of implementation, supported PROV encodings and the URL of the implementation.Implementation Type:
- Application
- Framework/API
- Service
- Vocabulary
- Constraints Validator
# | 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 |
3. Feature Coverage
3.1 PROV Usage
This section enumerates the PROV-DM terms [PROV-DM] that are consumed (),
produced (
),
or both consumed and produced (
)
by a particular implementation.
3.2 PROV Usage by Extension
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 |
3.3 PROV Usage in Datasets
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 |
3.4 PROV Constraints Implementation
The table above was produced from the results of running PROV-CONSTRAINTS test cases submitted by implementers.
4. Implementations Exchanging Provenance
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:
- The Provenance Server (University of Southampton, Python code base) consumes provenance documents deposited by the ProvToolbox Converter and Prov-Validator (University of Southampton, Java code base)
- The Prov-Validator (University of Southampton) validates:
- All PROV-O terms generated by PROVoKing (King's College London)
- All PROV-N terms generated by the Provenance Server and the PROV-Python library (University of Southampton, Python code base)
- The subset of PROV-N terms generated by APROVeD (Ghent University)
- All PROV-N terms from the examples in the PROV-DM documents
- The prov-check (VU University of Amsterdam) validates all PROV-O terms converted by the ProvToolbox (University of Southampton)
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)
A. Acknowledgements
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.
B. References
B.1 Informative references
- [PROV-CONSTRAINTS]
- James Cheney; Paolo Missier; Luc Moreau; eds. Constraints of the PROV Data Model. 30 April 2013, W3C Recommendation. URL: https://www.w3.org/TR/2013/REC-prov-constraints-20130430/
- [PROV-DM]
- Luc Moreau; Paolo Missier; eds. PROV-DM: The PROV Data Model. 30 April 2013, W3C Recommendation. URL: https://www.w3.org/TR/2013/REC-prov-dm-20130430/
- [PROV-N]
- Luc Moreau; Paolo Missier; eds. PROV-N: The Provenance Notation. 30 April 2013, W3C Recommendation. URL: https://www.w3.org/TR/2013/REC-prov-n-20130430/
- [PROV-O]
- Timothy Lebo; Satya Sahoo; Deborah McGuinness; eds. PROV-O: The PROV Ontology. 30 April 2013, W3C Recommendation. URL: https://www.w3.org/TR/2013/REC-prov-o-20130430/
- [PROV-OVERVIEW]
- Paul Groth; Luc Moreau; eds. PROV-OVERVIEW: An Overview of the PROV Family of Documents. 30 April 2013, W3C Note. URL: https://www.w3.org/TR/2013/NOTE-prov-overview-20130430/