UNPKG

@treecg/curation

Version:

This library implements a class (Curator) with methods to curate an announcement LDES in LDP.

45 lines (36 loc) 1.6 kB
/*************************************** * Title: Conversion * Description: Conversion functions * Author: Wout Slabbinck (wout.slabbinck@ugent.be) * Created on 10/12/2021 *****************************************/ import {DataService, DataSet, View} from "@treecg/ldes-announcements/dist/util/Interfaces"; import {Store, Writer} from "n3"; import {ParseOptions} from "rdf-parse/lib/RdfParser"; const rdfParser = require("rdf-parse").default; const storeStream = require("rdf-store-stream").storeStream; const streamifyString = require('streamify-string'); export async function turtleStringToStore(text: string, baseIRI?: string): Promise<Store> { return await stringToStore(text, {contentType: 'text/turtle', baseIRI}); } export async function ldjsonToStore(text: string, baseIRI?: string): Promise<Store> { return await stringToStore(text, {contentType: 'application/ld+json', baseIRI}); } /** * Converts a store to turtle string * @param store * @returns {string} */ export function storeToString(store: Store): string { const writer = new Writer(); return writer.quadsToString(store.getQuads(null, null, null, null)); } export async function stringToStore(text: string, options: ParseOptions): Promise<Store> { const textStream = streamifyString(text); const quadStream = rdfParser.parse(textStream, options); return await storeStream(quadStream); } export async function memberToString(member: DataSet | DataService | View, baseIRI?: string): Promise<string> { const store = await ldjsonToStore(JSON.stringify(member), baseIRI); return storeToString(store); }