@comake/skl-js-engine
Version:
Standard Knowledge Language Javascript Engine
138 lines • 4.99 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getEntityValue = exports.dataTypeMapping = exports.parseJSONOrDefault = exports.rdfListToArray = exports.isUrl = exports.getValueIfDefined = exports.ensureArray = exports.toJSON = exports.convertJsonLdToQuads = void 0;
const rmlmapper_js_1 = require("@comake/rmlmapper-js");
const jsonld = __importStar(require("jsonld"));
const n3_1 = require("n3");
const Vocabularies_1 = require("./Vocabularies");
async function convertJsonLdToQuads(jsonldDoc) {
const nquads = (await jsonld.toRDF(jsonldDoc, { format: 'application/n-quads' }));
const turtleParser = new n3_1.Parser({ format: 'application/n-quads' });
const store = new n3_1.Store();
turtleParser.parse(nquads).forEach((quad) => {
store.addQuad(quad);
});
return store;
}
exports.convertJsonLdToQuads = convertJsonLdToQuads;
function toJSON(jsonLd, convertBeyondFirstLevel = true) {
['@context', '@id', '@type'].forEach((key) => {
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
delete jsonLd[key];
});
if (convertBeyondFirstLevel) {
Object.keys(jsonLd).forEach((key) => {
if (Array.isArray(jsonLd[key])) {
jsonLd[key].forEach((item, index) => {
if (typeof item === 'object') {
jsonLd[key][index] = toJSON(item);
}
});
}
else if (typeof jsonLd[key] === 'object') {
jsonLd[key] = toJSON(jsonLd[key]);
}
});
}
return jsonLd;
}
exports.toJSON = toJSON;
function ensureArray(arrayable) {
if (arrayable !== null && arrayable !== undefined) {
return Array.isArray(arrayable) ? arrayable : [arrayable];
}
return [];
}
exports.ensureArray = ensureArray;
function getValueIfDefined(fieldValue) {
if (fieldValue && Array.isArray(fieldValue)) {
return fieldValue.map((valueItem) => getValueIfDefined(valueItem));
}
if (fieldValue && typeof fieldValue === 'object') {
return fieldValue['@value'];
}
if (fieldValue !== undefined && fieldValue !== null) {
return fieldValue;
}
}
exports.getValueIfDefined = getValueIfDefined;
function isUrl(value) {
if (typeof value !== 'string') {
return false;
}
try {
// eslint-disable-next-line no-new
new URL(value);
return true;
}
catch {
return false;
}
}
exports.isUrl = isUrl;
// eslint-disable-next-line @typescript-eslint/naming-convention
function rdfListToArray(list) {
if (!('@list' in list)) {
return [
list[Vocabularies_1.RDF.first],
...(0, rmlmapper_js_1.getIdFromNodeObjectIfDefined)(list[Vocabularies_1.RDF.rest]) === Vocabularies_1.RDF.nil
? []
: rdfListToArray(list[Vocabularies_1.RDF.rest])
];
}
return list['@list'];
}
exports.rdfListToArray = rdfListToArray;
function parseJSONOrDefault(json, defaultValue) {
try {
return JSON.parse(json);
}
catch {
return defaultValue;
}
}
exports.parseJSONOrDefault = parseJSONOrDefault;
exports.dataTypeMapping = {
string: Vocabularies_1.XSD.string,
boolean: Vocabularies_1.XSD.boolean,
integer: Vocabularies_1.XSD.integer,
float: Vocabularies_1.XSD.float,
double: Vocabularies_1.XSD.double,
dateTime: Vocabularies_1.XSD.dateTime,
json: Vocabularies_1.RDF.JSON
};
function getEntityValue(value, dataType = 'string'
// eslint-disable-next-line @typescript-eslint/naming-convention
) {
return {
// eslint-disable-next-line @typescript-eslint/naming-convention
'@type': exports.dataTypeMapping[dataType],
// eslint-disable-next-line @typescript-eslint/naming-convention
'@value': value
};
}
exports.getEntityValue = getEntityValue;
//# sourceMappingURL=Util.js.map