From 6f288163c676bd55ecb5450d13bb54ec3198657d Mon Sep 17 00:00:00 2001 From: pduchesne Date: Thu, 16 Sep 2021 10:16:20 +0200 Subject: [PATCH 1/2] Add support for xsd:float as native type --- lib/constants.js | 1 + lib/fromRdf.js | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/constants.js b/lib/constants.js index 9bd2c3d5..f6f6c412 100644 --- a/lib/constants.js +++ b/lib/constants.js @@ -27,6 +27,7 @@ module.exports = { XSD, XSD_BOOLEAN: XSD + 'boolean', XSD_DOUBLE: XSD + 'double', + XSD_FLOAT: XSD + 'float', XSD_INTEGER: XSD + 'integer', XSD_STRING: XSD + 'string', }; diff --git a/lib/fromRdf.js b/lib/fromRdf.js index fb3567c8..0b9aba9f 100644 --- a/lib/fromRdf.js +++ b/lib/fromRdf.js @@ -25,6 +25,7 @@ const { // XSD, XSD_BOOLEAN, XSD_DOUBLE, + XSD_FLOAT, XSD_INTEGER, XSD_STRING, } = require('./constants'); @@ -320,12 +321,12 @@ function _RDFToObject(o, useNativeTypes, rdfDirection) { if(i.toFixed(0) === rval['@value']) { rval['@value'] = i; } - } else if(type === XSD_DOUBLE) { + } else if(type === XSD_DOUBLE || type === XSD_FLOAT) { rval['@value'] = parseFloat(rval['@value']); } } // do not add native type - if(![XSD_BOOLEAN, XSD_INTEGER, XSD_DOUBLE, XSD_STRING].includes(type)) { + if(![XSD_BOOLEAN, XSD_INTEGER, XSD_FLOAT, XSD_DOUBLE, XSD_STRING].includes(type)) { rval['@type'] = type; } } else if(rdfDirection === 'i18n-datatype' && From 8b2674e569943ade3120172e4165389cd43e3fe6 Mon Sep 17 00:00:00 2001 From: pduchesne Date: Sun, 19 Sep 2021 18:55:40 +0200 Subject: [PATCH 2/2] keep type when converting xsd:float to native type --- lib/fromRdf.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/fromRdf.js b/lib/fromRdf.js index 0b9aba9f..71f0820a 100644 --- a/lib/fromRdf.js +++ b/lib/fromRdf.js @@ -326,7 +326,9 @@ function _RDFToObject(o, useNativeTypes, rdfDirection) { } } // do not add native type - if(![XSD_BOOLEAN, XSD_INTEGER, XSD_FLOAT, XSD_DOUBLE, XSD_STRING].includes(type)) { + // Remark: xsd:float are parsed into native type (above), but yet the type is explicitly added + // so as to keep the type information and not conflate xsd:float with xsd:double + if(![XSD_BOOLEAN, XSD_INTEGER, XSD_DOUBLE, XSD_STRING].includes(type)) { rval['@type'] = type; } } else if(rdfDirection === 'i18n-datatype' &&