Skip to content

Commit 3daba99

Browse files
committed
Update variable binding URIs for published steps
1 parent 87d4d20 commit 3daba99

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

fairworkflows/fairworkflow.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from tempfile import TemporaryDirectory
55
from typing import Iterator, Optional
66
import inspect
7+
from urllib.parse import urldefrag
78

89
import networkx as nx
910
import rdflib
@@ -444,10 +445,22 @@ def publish_as_nanopub(self, use_test_server=False, **kwargs):
444445
if step.is_modified or not step._is_published:
445446
self._is_modified = True # If one of the steps is modified the workflow is too.
446447
old_uri = step.uri
448+
var_names = [var.name for var in (step.inputs + step.outputs)]
449+
447450
step.publish_as_nanopub(use_test_server=use_test_server, **kwargs)
448451
published_step_uri = step.uri
452+
449453
replace_in_rdf(self.rdf, oldvalue=rdflib.URIRef(old_uri),
450454
newvalue=rdflib.URIRef(published_step_uri))
455+
456+
# Similarly replace old URIs for variable name bindings
457+
published_step_uri_defrag, _ = urldefrag(published_step_uri)
458+
for var_name in var_names:
459+
old_var_uri = old_uri + '#' + var_name
460+
new_var_uri = published_step_uri_defrag + '#' + var_name
461+
replace_in_rdf(self.rdf, oldvalue=rdflib.URIRef(old_var_uri),
462+
newvalue=rdflib.URIRef(new_var_uri))
463+
451464
del self._steps[old_uri]
452465
self._steps[published_step_uri] = step
453466
return self._publish_as_nanopub(use_test_server=use_test_server, **kwargs)

0 commit comments

Comments
 (0)