UNPKG

@tpluscode/rdfine

Version:
36 lines (35 loc) 1.29 kB
import rdf from '@rdfjs/data-model'; export function fromLiteral(env, type, obj) { if (type === Boolean) { return rdf.literal('true', env.ns.xsd.boolean).equals(obj.term); } if (type === Number) { return Number.parseFloat(obj.value); } if (type === Date) { return new Date(Date.parse(obj.value)); } return obj.value; } export function toLiteral(env, value, datatype) { switch (typeof value) { case 'boolean': return rdf.literal(value.toString(), datatype || env.ns.xsd.boolean); case 'number': return rdf.literal(value.toString(), datatype || (Number.isInteger(value) ? env.ns.xsd.integer : env.ns.xsd.float)); case 'bigint': return rdf.literal(value.toString(), datatype || env.ns.xsd.long); case 'string': return rdf.literal(value, datatype); case 'object': if (value instanceof Date) { const literal = value.toISOString(); if (env.ns.xsd.date.equals(datatype)) { return rdf.literal(literal.substr(0, 10), env.ns.xsd.date); } return rdf.literal(literal, datatype || env.ns.xsd.dateTime); } break; } return undefined; }