From aa0d236db918a0e9be6c36f39e018bcabd8e08eb Mon Sep 17 00:00:00 2001 From: samwaseda Date: Wed, 29 Jan 2025 10:00:44 +0000 Subject: [PATCH 1/5] change definition of tag --- pyiron_ontology/parser.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/pyiron_ontology/parser.py b/pyiron_ontology/parser.py index c920975..02e1060 100644 --- a/pyiron_ontology/parser.py +++ b/pyiron_ontology/parser.py @@ -69,11 +69,12 @@ def _translate_has_value( value: Any = None, units: URIRef | None = None, ) -> Graph: - graph.add((label, PNS.hasValue, URIRef(tag))) + tag_uri = URIRef(tag + ".value") + graph.add((label, PNS.hasValue, tag_uri)) if value is not None: - graph.add((URIRef(tag), RDF.value, Literal(value))) + graph.add((tag_uri, RDF.value, Literal(value))) if units is not None: - graph.add((URIRef(tag), PNS.hasUnits, URIRef(units))) + graph.add((tag_uri, PNS.hasUnits, URIRef(units))) return graph @@ -133,11 +134,7 @@ def get_triples( workflow_namespace += "." graph = Graph() full_label = workflow_namespace + data["label"] - # Triple already exists - label_def_triple = (URIRef(full_label), RDF.type, PROV.Activity) - if len(list(graph.triples(label_def_triple))) > 0: - return graph - graph.add(label_def_triple) + graph.add((URIRef(full_label), RDF.type, PROV.Activity)) graph.add((URIRef(full_label), PNS.hasSourceFunction, URIRef(data["function"]))) for io_ in ["inputs", "outputs"]: for key, d in data[io_].items(): @@ -155,7 +152,7 @@ def get_triples( graph = _translate_has_value( graph, label, - workflow_namespace + d["connection"] + ".value", + workflow_namespace + d["connection"], d.get("value", None), units=d.get("units", None), ) @@ -163,7 +160,7 @@ def get_triples( graph = _translate_has_value( graph, label, - label + ".value", + label, d.get("value", None), units=d.get("units", None), ) From 511438e3b41b00e4857bed55c62f8f2df2806326 Mon Sep 17 00:00:00 2001 From: samwaseda Date: Wed, 29 Jan 2025 10:01:43 +0000 Subject: [PATCH 2/5] refactor tag --- pyiron_ontology/parser.py | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/pyiron_ontology/parser.py b/pyiron_ontology/parser.py index 02e1060..812f3a8 100644 --- a/pyiron_ontology/parser.py +++ b/pyiron_ontology/parser.py @@ -148,22 +148,16 @@ def get_triples( graph.add((label, PNS.inputOf, URIRef(full_label))) elif io_ == "outputs": graph.add((label, PNS.outputOf, URIRef(full_label))) + tag = label if io_ == "inputs" and d.get("connection", None) is not None: - graph = _translate_has_value( - graph, - label, - workflow_namespace + d["connection"], - d.get("value", None), - units=d.get("units", None), - ) - else: - graph = _translate_has_value( - graph, - label, - label, - d.get("value", None), - units=d.get("units", None), - ) + tag = workflow_namespace + d["connection"] + graph = _translate_has_value( + graph=graph, + label=label, + tag=tag, + value=d.get("value", None), + units=d.get("units", None), + ) if d.get("connection", None) is not None and io_ == "inputs": graph.add( ( From dac3b2fc69c1a76650ff0c4116cf63d262217e04 Mon Sep 17 00:00:00 2001 From: samwaseda Date: Wed, 29 Jan 2025 10:02:35 +0000 Subject: [PATCH 3/5] not repeat if --- pyiron_ontology/parser.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/pyiron_ontology/parser.py b/pyiron_ontology/parser.py index 812f3a8..a64a687 100644 --- a/pyiron_ontology/parser.py +++ b/pyiron_ontology/parser.py @@ -151,14 +151,6 @@ def get_triples( tag = label if io_ == "inputs" and d.get("connection", None) is not None: tag = workflow_namespace + d["connection"] - graph = _translate_has_value( - graph=graph, - label=label, - tag=tag, - value=d.get("value", None), - units=d.get("units", None), - ) - if d.get("connection", None) is not None and io_ == "inputs": graph.add( ( label, @@ -166,6 +158,13 @@ def get_triples( URIRef(workflow_namespace + d["connection"]), ) ) + graph = _translate_has_value( + graph=graph, + label=label, + tag=tag, + value=d.get("value", None), + units=d.get("units", None), + ) for t in _get_triples_from_restrictions(d): graph.add(_parse_triple(t, ns=full_label, label=label)) return graph From dfaa947f71104225ac04120f25b997c1a0e5da0d Mon Sep 17 00:00:00 2001 From: samwaseda Date: Wed, 29 Jan 2025 10:09:35 +0000 Subject: [PATCH 4/5] Refactor --- pyiron_ontology/parser.py | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/pyiron_ontology/parser.py b/pyiron_ontology/parser.py index a64a687..980e710 100644 --- a/pyiron_ontology/parser.py +++ b/pyiron_ontology/parser.py @@ -133,40 +133,33 @@ def get_triples( else: workflow_namespace += "." graph = Graph() - full_label = workflow_namespace + data["label"] - graph.add((URIRef(full_label), RDF.type, PROV.Activity)) - graph.add((URIRef(full_label), PNS.hasSourceFunction, URIRef(data["function"]))) + node_label = workflow_namespace + data["label"] + graph.add((URIRef(node_label), RDF.type, PROV.Activity)) + graph.add((URIRef(node_label), PNS.hasSourceFunction, URIRef(data["function"]))) for io_ in ["inputs", "outputs"]: for key, d in data[io_].items(): - full_key = full_label + f".{io_}." + key - label = URIRef(full_key) - graph.add((label, RDFS.label, Literal(full_key))) - graph.add((label, RDF.type, PROV.Entity)) + channel_label = URIRef(node_label + f".{io_}." + key) + graph.add((channel_label, RDFS.label, Literal(channel_label.identifier))) + graph.add((channel_label, RDF.type, PROV.Entity)) if d.get("uri", None) is not None: - graph.add((label, RDF.type, URIRef(d["uri"]))) + graph.add((channel_label, RDF.type, URIRef(d["uri"]))) if io_ == "inputs": - graph.add((label, PNS.inputOf, URIRef(full_label))) + graph.add((channel_label, PNS.inputOf, URIRef(node_label))) elif io_ == "outputs": - graph.add((label, PNS.outputOf, URIRef(full_label))) - tag = label + graph.add((channel_label, PNS.outputOf, URIRef(node_label))) + tag = channel_label if io_ == "inputs" and d.get("connection", None) is not None: tag = workflow_namespace + d["connection"] - graph.add( - ( - label, - PNS.inheritsPropertiesFrom, - URIRef(workflow_namespace + d["connection"]), - ) - ) + graph.add((channel_label, PNS.inheritsPropertiesFrom, URIRef(tag))) graph = _translate_has_value( graph=graph, - label=label, + label=channel_label, tag=tag, value=d.get("value", None), units=d.get("units", None), ) for t in _get_triples_from_restrictions(d): - graph.add(_parse_triple(t, ns=full_label, label=label)) + graph.add(_parse_triple(t, ns=node_label, label=channel_label)) return graph From 83d4a7bb702b00f4aff8404ea8e966a34dc8b0c9 Mon Sep 17 00:00:00 2001 From: samwaseda Date: Wed, 29 Jan 2025 10:16:31 +0000 Subject: [PATCH 5/5] replace identifier by str --- pyiron_ontology/parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_ontology/parser.py b/pyiron_ontology/parser.py index 980e710..d1a5e2f 100644 --- a/pyiron_ontology/parser.py +++ b/pyiron_ontology/parser.py @@ -139,7 +139,7 @@ def get_triples( for io_ in ["inputs", "outputs"]: for key, d in data[io_].items(): channel_label = URIRef(node_label + f".{io_}." + key) - graph.add((channel_label, RDFS.label, Literal(channel_label.identifier))) + graph.add((channel_label, RDFS.label, Literal(str(channel_label)))) graph.add((channel_label, RDF.type, PROV.Entity)) if d.get("uri", None) is not None: graph.add((channel_label, RDF.type, URIRef(d["uri"])))