From 707c92d87948ed0daddb063cc9c33e18636fafa8 Mon Sep 17 00:00:00 2001 From: jona42-ui Date: Tue, 24 Mar 2026 21:50:49 +0300 Subject: [PATCH 1/2] fix: use XSD.nonNegativeInteger for TTL field instead of XSD.dateTim - Improves semantic correctness and client interoperability Fixes TTL field datatype semantic incorrectness Signed-off-by: jona42-ui --- tdd/registration.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tdd/registration.py b/tdd/registration.py index a0c081c..6b70f12 100644 --- a/tdd/registration.py +++ b/tdd/registration.py @@ -45,9 +45,20 @@ def get_registration_dict(uri, rdf_graph): keys = ["created", "modified", "expires", "ttl"] if len(results) == 0: return {} - registration = dict( - zip(keys, [x.value.isoformat() if x is not None else None for x in results[0]]) - ) + + # Handle different datatypes properly + values = [] + for i, x in enumerate(results[0]): + if x is None: + values.append(None) + elif keys[i] == "ttl": + # TTL should be an integer (seconds) + values.append(int(x.value)) + else: + # Date/time fields should be ISO format strings + values.append(x.value.isoformat()) + + registration = dict(zip(keys, values)) for key, value in dict(registration).items(): if value is None: del registration[key] @@ -120,7 +131,7 @@ def yield_registration_triples(td_uri, registration): yield ( registration_uri, TDD["ttl"], - Literal(registration["ttl"], datatype=XSD.dateTime), + Literal(registration["ttl"], datatype=XSD.nonNegativeInteger), ) if "retrieve" in registration: yield ( From c33eae68e959659a669bc91bee97f9e32f1b8839 Mon Sep 17 00:00:00 2001 From: jona42-ui Date: Tue, 24 Mar 2026 22:09:55 +0300 Subject: [PATCH 2/2] style: fix linting issues in registration.py Signed-off-by: jona42-ui --- tdd/registration.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tdd/registration.py b/tdd/registration.py index 6b70f12..62a7550 100644 --- a/tdd/registration.py +++ b/tdd/registration.py @@ -45,7 +45,7 @@ def get_registration_dict(uri, rdf_graph): keys = ["created", "modified", "expires", "ttl"] if len(results) == 0: return {} - + # Handle different datatypes properly values = [] for i, x in enumerate(results[0]): @@ -57,7 +57,7 @@ def get_registration_dict(uri, rdf_graph): else: # Date/time fields should be ISO format strings values.append(x.value.isoformat()) - + registration = dict(zip(keys, values)) for key, value in dict(registration).items(): if value is None: