From f0a7af23f88e8039c0ca81e60dd6f8498d8deddb Mon Sep 17 00:00:00 2001 From: Paul van Genuchten Date: Wed, 17 Sep 2025 22:09:49 +0200 Subject: [PATCH] - remove debug print statement - improve handling if namespace is not registered - no error if no @context in metadata - set xsd datatype fails --- csvwlib/converter/ModelConverter.py | 2 +- csvwlib/converter/ToRDFConverter.py | 2 +- csvwlib/utils/json/CommonProperties.py | 12 ++++++++++-- csvwlib/utils/rdf/OntologyUtils.py | 3 ++- csvwlib/utils/url/UriTemplateUtils.py | 1 - 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/csvwlib/converter/ModelConverter.py b/csvwlib/converter/ModelConverter.py index ab18c8a..d2bb607 100644 --- a/csvwlib/converter/ModelConverter.py +++ b/csvwlib/converter/ModelConverter.py @@ -75,7 +75,7 @@ def _add_table_metadata(table_metadata, table): def _normalize_metadata_base_url(self): if self.metadata is None: return - for context_entry in self.metadata['@context']: + for context_entry in self.metadata.get('@context',[]): if type(context_entry) is dict and '@base' in context_entry: original_url = self.metadata['url'] if original_url.startswith('http'): diff --git a/csvwlib/converter/ToRDFConverter.py b/csvwlib/converter/ToRDFConverter.py index be66f54..0e65e0c 100644 --- a/csvwlib/converter/ToRDFConverter.py +++ b/csvwlib/converter/ToRDFConverter.py @@ -78,7 +78,7 @@ def parse_virtual_columns(self, row_node, atdm_row, table_metadata): self.graph.add((row_node, CSVW.describes, subject)) def _add_file_metadata(self, metadata, node): - language = JSONLDUtils.language(self.metadata['@context']) + language = JSONLDUtils.language(self.metadata.get('@context',[])) for key, value in metadata.items(): if CommonProperties.is_common_property(key) or key == 'notes': triples = CommonProperties.property_to_triples((key, metadata[key]), node, language) diff --git a/csvwlib/utils/json/CommonProperties.py b/csvwlib/utils/json/CommonProperties.py index 0909592..6b9fda9 100644 --- a/csvwlib/utils/json/CommonProperties.py +++ b/csvwlib/utils/json/CommonProperties.py @@ -80,9 +80,17 @@ def expand_property_if_possible(prop): return prop prefix, prop = prop.split(':') - return Namespaces.get(prefix).term(prop) + return CommonProperties.ns_has_term(prefix, prop) @staticmethod def expand_property(prop): prefix, prop = prop.split(':') - return Namespaces.get(prefix).term(prop) + return CommonProperties.ns_has_term(prefix, prop) + + @staticmethod + def ns_has_term(prefix, prop): + pf = Namespaces.get(prefix) + if pf: + return pf.term(prop) + else: + raise Exception(f'Namespace {prefix} for {prop} not registered') \ No newline at end of file diff --git a/csvwlib/utils/rdf/OntologyUtils.py b/csvwlib/utils/rdf/OntologyUtils.py index c5e8afd..d6aa992 100644 --- a/csvwlib/utils/rdf/OntologyUtils.py +++ b/csvwlib/utils/rdf/OntologyUtils.py @@ -21,4 +21,5 @@ def type(column_metadata): return None datatype = OntologyUtils._name_mappings.get(datatype, datatype) - return OntologyUtils._type_mappings.get(datatype, XSD.term(datatype)) + xsd_type = getattr(XSD, datatype) + return OntologyUtils._type_mappings.get(datatype, xsd_type) diff --git a/csvwlib/utils/url/UriTemplateUtils.py b/csvwlib/utils/url/UriTemplateUtils.py index b8a18ec..2d5fdcd 100644 --- a/csvwlib/utils/url/UriTemplateUtils.py +++ b/csvwlib/utils/url/UriTemplateUtils.py @@ -27,7 +27,6 @@ def expand_template(template: str, row: dict) -> str: """ def replacer(match): var = match.group(1) - print('r',row) if var in row.keys(): return str(row[var]) raise KeyError(f"Missing value for template variable '{var}'")