From 95a70e12989bb7f763be523f0aea69c85980294e Mon Sep 17 00:00:00 2001
From: Matthias Bodenbenner <m.bodenbenner@wzl-mq.rwth-aachen.de>
Date: Mon, 18 Mar 2024 08:00:16 +0100
Subject: [PATCH] fixed metadata provisioning of arguments and returns

---
 README.md             |  5 ++++-
 setup.py              |  2 +-
 src/soil/parameter.py | 13 ++++++++++---
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index d50a910..b822b95 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 [![Build](https://git-ce.rwth-aachen.de/wzl-mq-ms/forschung-lehre/lava/unified-device-interface/python/badges/master/pipeline.svg)](https://git-ce.rwth-aachen.de/wzl-mq-ms/forschung-lehre/lava/unified-device-interface/python/commits/master)
 
 # Python Unified Device Interface
-Current stable version: 9.3.4
+Current stable version: 9.3.5
 
 ## Installation
 1. Install the WZL-UDI package via pip
@@ -58,6 +58,9 @@ Funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation)
 
 ## Recent changes
 
+**9.3.5** - 2024-03-18
+  - fixed metadata provisioning of arguments and returns
+
 **9.3.4** - 2024-03-16
   - fixed semantic name resolution of range profiles
 
diff --git a/setup.py b/setup.py
index ae1fef7..5023de3 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
     long_description = fh.read()
 
 setup(name='wzl-udi',
-      version='9.3.4',
+      version='9.3.5',
       url='https://git-ce.rwth-aachen.de/wzl-mq-public/soil/python',
       project_urls={
           "Bug Tracker": "https://git-ce.rwth-aachen.de/wzl-mq-public/soil/python/-/issues",
diff --git a/src/soil/parameter.py b/src/soil/parameter.py
index 9743aa0..55949a3 100644
--- a/src/soil/parameter.py
+++ b/src/soil/parameter.py
@@ -6,7 +6,7 @@ from typing import Dict, Callable, Any, List
 import rdflib
 
 from .datatype import Datatype
-from .error import ReadOnlyException
+from .error import ReadOnlyException, NotImplementedException
 from .semantics import Semantics, Namespaces
 from .variable import Variable
 from ..utils import root_logger
@@ -158,8 +158,15 @@ class Parameter(Variable):
                 assert (len(triples) == 1)
                 result.remove(triples[0])
 
-            rdf_value = Variable.serialize_value(result, self.__getitem__('value', 0))
-            result.add((Semantics.namespace[self._semantic_name], Namespaces.qudt['value'], rdf_value))
+            try:
+                rdf_value = Variable.serialize_value(result, self.__getitem__('value', 0))
+                result.add((Semantics.namespace[self._semantic_name], Namespaces.qudt['value'], rdf_value))
+            except DeviceException as e:
+                if isinstance(e._predecessor, NotImplementedException):
+                    pass
+                else:
+                    raise e
+
             return result
         else:
             raise DeviceException('The provided kind of semantic information cannot be returned.')
-- 
GitLab