From 83dbce64ddb3202838f25c3792242837d87b82a4 Mon Sep 17 00:00:00 2001 From: Matthias Mayr Date: Mon, 19 Feb 2024 13:30:19 +0100 Subject: [PATCH 1/2] Fix: Always return a rdflib-URIRef from 'lightstring2uri' Previously this function could return strings, which caused an instance check in rdflib to fail with "must be an rdflib term". --- .../src/skiros2_world_model/core/ontology_rdflib.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skiros2_world_model/src/skiros2_world_model/core/ontology_rdflib.py b/skiros2_world_model/src/skiros2_world_model/core/ontology_rdflib.py index 23879af..9e4d00e 100644 --- a/skiros2_world_model/src/skiros2_world_model/core/ontology_rdflib.py +++ b/skiros2_world_model/src/skiros2_world_model/core/ontology_rdflib.py @@ -67,11 +67,11 @@ def lightstring2uri(self, name): if name == "": return None if name.find("#") > 0: - return name + return rdflib.term.URIRef(name) if name.find(":") < 1: if name.find(":") == 0: name = name[1:] - return self.add_default_prefix(name) + return rdflib.term.URIRef(self.add_default_prefix(name)) tokens = name.split(":") for prefix, uri in self._ontology.namespaces(): if tokens[0] == prefix: From 8b93a4e1a76035c27a99318c2e29d3c0faa9304d Mon Sep 17 00:00:00 2001 From: Matthias Mayr Date: Mon, 19 Feb 2024 14:27:02 +0100 Subject: [PATCH 2/2] New: WM element ID retrieval after # Previously obtaining the ID of URI's like: "http://www.inf.ufrgs.br/phi-group/ontologies/cora.owl#Robot-186" Failed, because it was assumed that "-" only appears once in the URI. Now it searches only after the hash "#" if one exists --- skiros2_common/src/skiros2_common/core/world_element.py | 8 ++++++-- .../src/skiros2_world_model/core/world_model.py | 5 +++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/skiros2_common/src/skiros2_common/core/world_element.py b/skiros2_common/src/skiros2_common/core/world_element.py index f4a5ac8..59a7a0f 100644 --- a/skiros2_common/src/skiros2_common/core/world_element.py +++ b/skiros2_common/src/skiros2_common/core/world_element.py @@ -150,9 +150,13 @@ def getIdNumber(self): """ @brief Return the element id number as integer """ - if self._id.find('-') < 0: + hash_pos = self._id.find('#') + # Search after # if there is one + if hash_pos == -1: + hash_pos = 0 + if self._id.find("-", hash_pos) < 0: return -1 - return int(self._id.split('-')[1]) + return int((self._id[hash_pos:]).split('-')[1]) def setUri(self, eid): self._setLastUpdate() diff --git a/skiros2_world_model/src/skiros2_world_model/core/world_model.py b/skiros2_world_model/src/skiros2_world_model/core/world_model.py index c92b070..4e4e70a 100644 --- a/skiros2_world_model/src/skiros2_world_model/core/world_model.py +++ b/skiros2_world_model/src/skiros2_world_model/core/world_model.py @@ -548,9 +548,10 @@ def _uri2type(self, uri): return uri.split('-')[0] def _uri2id(self, uri): - if uri.find('-') < 0: + hash_pos = uri.find('#') + if hash_pos < 0 or uri.find("-", hash_pos) < 0: return -1 - return int(uri.split('-')[1]) + return int((uri[hash_pos:]).split('-')[1]) @synchronized def load_context(self, filename):