Skip to content

Commit 0eb131b

Browse files
Add prov_was_derived_from property and StepRetroProv
1 parent 4352a4f commit 0eb131b

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

fairworkflows/prov.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,23 @@
77
class RetroProv(RdfWrapper):
88
def __init__(self, prov_was_derived_from, log_message: str):
99
super().__init__(uri=None, ref_name='retroprov')
10-
self.rdf.add((self.self_ref, rdflib.RDF.type, namespaces.PROV.Activity))
11-
self.rdf.add((self.self_ref, namespaces.PROV.wasDerivedFrom,
12-
rdflib.URIRef(prov_was_derived_from)))
10+
self.set_attribute(rdflib.RDF.type, namespaces.PROV.Activity)
11+
self.set_attribute(namespaces.PROV.wasDerivedFrom, rdflib.URIRef(prov_was_derived_from))
1312
self.rdf.add((self.self_ref, rdflib.RDFS.label, rdflib.Literal(log_message)))
1413

14+
@property
15+
def prov_was_derived_from(self):
16+
"""Refers to URI of object that this provenance was derived from.
17+
18+
Matches the predicate prov:wasDerivedFrom associated to this retrospective provenance
19+
object
20+
"""
21+
return self.get_attribute(namespaces.PROV.wasDerivedFrom)
22+
23+
@prov_was_derived_from.setter
24+
def prov_was_derived_from(self, value):
25+
self.set_attribute(namespaces.PROV.wasDerivedFrom, rdflib.URIRef(value), overwrite=True)
26+
1527

1628
class WorkflowRetroProv(RetroProv):
1729
def __init__(self, prov_was_derived_from, log_message):
@@ -22,3 +34,14 @@ def __str__(self):
2234
s = f'Workflow retrospective provenance.\n'
2335
s += self._rdf.serialize(format='trig').decode('utf-8')
2436
return s
37+
38+
39+
class StepRetroProv(RetroProv):
40+
def __init__(self, prov_was_derived_from, log_message):
41+
super().__init__(prov_was_derived_from, log_message)
42+
43+
def __str__(self):
44+
"""String representation."""
45+
s = f'Step retrospective provenance.\n'
46+
s += self._rdf.serialize(format='trig').decode('utf-8')
47+
return s

0 commit comments

Comments
 (0)