extract-cbd-shape
Version:
Extract an entity based on CBD and a SHACL shape
95 lines • 4.19 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 });
const rdf_stores_1 = require("rdf-stores");
const ShapesGraph_1 = require("../lib/ShapesGraph");
const rdf_data_factory_1 = require("rdf-data-factory");
const rdf_dereference_1 = require("rdf-dereference");
const process = __importStar(require("process"));
const pako_1 = require("pako");
const js_base64_1 = require("js-base64");
const df = new rdf_data_factory_1.DataFactory();
// Check if at least one command line argument is provided
if (process.argv.length <= 2) {
console.error('Please provide an IRI to a dereferenceable SHACL NodeShape or an LDES or tree:Collection with with tree:shape property in it');
process.exit(1); // Exit with an error code
}
let iri = process.argv[2];
async function main() {
let df = new rdf_data_factory_1.DataFactory();
let shapeStore = rdf_stores_1.RdfStore.createDefault();
let shapesGraph;
let shapeTerm = df.namedNode(iri);
let readStream = (await rdf_dereference_1.rdfDereferencer.dereference(iri, {
localFiles: true,
})).data;
await new Promise((resolve, reject) => {
shapeStore.import(readStream).on("end", resolve).on("error", reject);
});
let tmpShapeTerm = shapeStore.getQuads(null, df.namedNode('https://w3id.org/tree#shape'), null).map((quad) => quad.object);
if (tmpShapeTerm[0]) {
shapeTerm = tmpShapeTerm[0];
iri = shapeTerm.value;
}
if (tmpShapeTerm[0] && tmpShapeTerm[0].termType === 'NamedNode') {
//Dereference the shape and add it here. The iri is not this IRI
console.error('GET ' + shapeTerm.value);
//Try to dereference this one as well. If it works, nice, if it doesn’t, too bad, we’ll continue without notice.
let readStream2 = (await rdf_dereference_1.rdfDereferencer.dereference(shapeTerm.value, {
localFiles: true,
})).data;
await new Promise((resolve, reject) => {
shapeStore.import(readStream2).on("end", resolve).on("error", () => {
console.error('Warning: couldn’t fetch ' + iri + ' but continuing');
resolve(null);
});
});
}
shapesGraph = new ShapesGraph_1.ShapesGraph(shapeStore);
const actualMermaid = shapesGraph.toMermaid(shapeTerm);
console.log('```mermaid');
console.log(actualMermaid);
console.log('```');
const formatJSON = (data) => JSON.stringify(data, undefined, 2);
const serialize = (state) => {
const data = new TextEncoder().encode(state);
const compressed = (0, pako_1.deflate)(data, { level: 9 }); // zlib level 9
return (0, js_base64_1.fromUint8Array)(compressed, true); // url safe base64 encoding
};
const defaultState = {
code: actualMermaid,
mermaid: formatJSON({
theme: 'default'
}),
autoSync: true,
updateDiagram: true
};
const json = JSON.stringify(defaultState);
const serialized = serialize(json);
console.log();
console.log('Mermaid Live: https://mermaid.live/edit#pako:' + serialized);
}
main();
//# sourceMappingURL=mermaid.js.map