Mercurial > code > home > repos > streamed-graph
view src/json_ld_quads.ts @ 9:26d3e4860adc
working on porting graph_view to n3.js. also working on making tests run
author | drewp@bigasterisk.com |
---|---|
date | Fri, 06 Dec 2019 09:19:43 -0800 |
parents | 6fefd287aff9 |
children | b9f451791f3a |
line wrap: on
line source
import * as jsonld from "jsonld"; import { DataFactory, Quad } from 'n3'; const { namedNode, literal, quad } = DataFactory; import ns from 'n3/src/IRIs'; const {rdf} = ns; export function eachJsonLdQuad(jsonLdObj: object, onQuad: (q: Quad) => void, done: () => void) { jsonld.expand(jsonLdObj, function onExpand(err, expanded) { if (err) { throw new Error(); } (expanded as [object]).forEach(function (g) { var graph = g['@id']; var graphNode = namedNode(graph); g['@graph'].forEach(function (subj) { const subjNode = namedNode(subj['@id']); for (let pred in subj) { if (pred === '@id') { continue; } let predNode; if (pred === "@type") { predNode = namedNode(rdf.type); } else { predNode = namedNode(pred['@id']); } subj[pred].forEach(function (obj) { const objNode = (obj['@id'] ? namedNode(obj['@id']) : literal(obj['@value'], obj['@language'] || obj['@type'])); onQuad(quad(subjNode, predNode, objNode, graphNode)); }); } }); }); done(); }); } ;