From 71bfa1a588d2ddf63ada901597e9abc619e30195 Mon Sep 17 00:00:00 2001 From: Paul van Genuchten Date: Mon, 30 Mar 2026 16:47:45 +0200 Subject: [PATCH] prevent parsing empty uri --- csvwlib/converter/ToRDFConverter.py | 4 +++- csvwlib/utils/TypeConverter.py | 2 +- csvwlib/utils/metadata.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/csvwlib/converter/ToRDFConverter.py b/csvwlib/converter/ToRDFConverter.py index ed438db..7936abf 100644 --- a/csvwlib/converter/ToRDFConverter.py +++ b/csvwlib/converter/ToRDFConverter.py @@ -82,7 +82,7 @@ def parse_virtual_columns(self, row_node, atdm_row, table_metadata): self.graph.add((row_node, CSVW.describes, subject)) else: print(f"term {virtual_column['propertyUrl']} not in namespaces") -S + def _add_file_metadata(self, metadata, node): language = JSONLDUtils.language(self.metadata.get('@context',[])) for key, value in metadata.items(): @@ -165,6 +165,8 @@ def _object_node(value, col_metadata, atdm_row, tm_url): @staticmethod def _normalize_to_uri(string): + if string in [None, '']: + return '' string = quote(string, safe='') string = string.replace('-', '%2D') return string diff --git a/csvwlib/utils/TypeConverter.py b/csvwlib/utils/TypeConverter.py index a6dcf94..0f2be0b 100644 --- a/csvwlib/utils/TypeConverter.py +++ b/csvwlib/utils/TypeConverter.py @@ -5,7 +5,7 @@ class TypeConverter: @staticmethod def convert_if_necessary(value, column_metadata): - if 'datatype' not in column_metadata: + if 'datatype' not in column_metadata or not isinstance(column_metadata['datatype'], dict): return value return TypeConverter.convert(value, column_metadata['datatype']) diff --git a/csvwlib/utils/metadata.py b/csvwlib/utils/metadata.py index d1b3fbb..59931b4 100644 --- a/csvwlib/utils/metadata.py +++ b/csvwlib/utils/metadata.py @@ -101,7 +101,7 @@ def validate_metadata(self, metadata): self.check_titles(table) def check_csv_reference(self, table, metadata): - if not self.start_url.endswith('.csv'): + if not (self.start_url or "").endswith('.csv'): return if table['url'] != self.start_url: for key in list(metadata.keys()):