From a3c2fb93809367bb162ec9ab2286e8a745e92f8f Mon Sep 17 00:00:00 2001 From: rossbowen Date: Fri, 21 Jan 2022 10:24:18 +0000 Subject: [PATCH] Stop emitting triple when cell is null and valueUrl is present #45 --- lib/metadata/TableSchema.js | 17 ++++++++-------- test/support/test031-null-cell.csv | 3 +++ .../test031-null-cell.csv-metadata.json | 20 +++++++++++++++++++ test/support/test031-null-cell.nt | 17 ++++++++++++++++ 4 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 test/support/test031-null-cell.csv create mode 100644 test/support/test031-null-cell.csv-metadata.json create mode 100644 test/support/test031-null-cell.nt diff --git a/lib/metadata/TableSchema.js b/lib/metadata/TableSchema.js index 141cf94..5d95898 100644 --- a/lib/metadata/TableSchema.js +++ b/lib/metadata/TableSchema.js @@ -144,20 +144,21 @@ class TableSchema { return undefined } - if (column.valueUrl) { - return this.factory.namedNode(column.valueUrl.fill(row)) - } - let value = column.titles.reduce((value, title) => { return value || row[title] }, '') - if (value === '') { - value = column.defaultValue + if (!column.virtual) { + if (value === '') { + value = column.defaultValue + } + if (typeof value === 'undefined' || value === column.nullValue) { + return undefined + } } - if (typeof value === 'undefined' || value === column.nullValue) { - return undefined + if (column.valueUrl) { + return this.factory.namedNode(column.valueUrl.fill(row)) } if (column.datatype.base.value === this.ns.dateTime.value) { diff --git a/test/support/test031-null-cell.csv b/test/support/test031-null-cell.csv new file mode 100644 index 0000000..97d95ad --- /dev/null +++ b/test/support/test031-null-cell.csv @@ -0,0 +1,3 @@ +a,b +100,200 +300, diff --git a/test/support/test031-null-cell.csv-metadata.json b/test/support/test031-null-cell.csv-metadata.json new file mode 100644 index 0000000..d7240e0 --- /dev/null +++ b/test/support/test031-null-cell.csv-metadata.json @@ -0,0 +1,20 @@ +{ + "@context": "http://www.w3.org/ns/csvw", + "url": "nulls.csv", + "tableSchema": { + "columns": [ + { + "titles": "a", + "name": "a", + "propertyUrl": "http://example.org/a", + "valueUrl": "http://example.org/{a}" + }, + { + "titles": "b", + "name": "b", + "propertyUrl": "http://example.org/b", + "valueUrl": "http://example.org/{b}" + } + ] + } +} \ No newline at end of file diff --git a/test/support/test031-null-cell.nt b/test/support/test031-null-cell.nt new file mode 100644 index 0000000..8dc29fa --- /dev/null +++ b/test/support/test031-null-cell.nt @@ -0,0 +1,17 @@ +_:c14n0 . +_:c14n0 _:c14n3 . +_:c14n0 "1"^^ . +_:c14n0 . +_:c14n1 . +_:c14n1 _:c14n0 . +_:c14n1 _:c14n5 . +_:c14n1 . +_:c14n2 . +_:c14n3 . +_:c14n3 . +_:c14n4 . +_:c14n4 _:c14n1 . +_:c14n5 . +_:c14n5 _:c14n2 . +_:c14n5 "2"^^ . +_:c14n5 . \ No newline at end of file