Mercurial > code > home > repos > streamed-graph
comparison src/json_ld_quads.ts @ 3:a7ba8627a7b6
still trying to make imports work. add other files too
author | drewp@bigasterisk.com |
---|---|
date | Wed, 04 Dec 2019 00:09:15 -0800 |
parents | |
children | 6fefd287aff9 |
comparison
equal
deleted
inserted
replaced
2:6cd3aaf431b6 | 3:a7ba8627a7b6 |
---|---|
1 import { Quad, Node } from "./rdf_types"; | |
2 import * as jsonld from "jsonld"; | |
3 | |
4 function quadFromExpandedStatement(rdfEnv: any, subj: any, pred: string, obj: any, graphNode: any): Quad { | |
5 return { | |
6 subject: rdfEnv.createNamedNode(subj['@id']), | |
7 predicate: rdfEnv.createNamedNode(pred), | |
8 object: (obj['@id'] ? rdfEnv.createNamedNode(obj['@id']) : | |
9 rdfEnv.createLiteral(obj['@value'], obj['@language'], obj['@type'])), | |
10 graph: graphNode, | |
11 }; | |
12 } | |
13 function quadFromTypeStatement(rdfEnv: any, subj: any, obj: any, graphNode: any): Quad { | |
14 return { | |
15 subject: rdfEnv.createNamedNode(subj['@id']), | |
16 predicate: rdfEnv.createNamedNode('rdf:type'), | |
17 object: rdfEnv.createNamedNode(obj), | |
18 graph: graphNode, | |
19 }; | |
20 } | |
21 | |
22 export function eachJsonLdQuad(rdfEnv: any, jsonLdObj: object, onQuad: (Quad) => void, done: () => void) { | |
23 jsonld.expand(jsonLdObj, function onExpand(err, expanded) { | |
24 if (err) { | |
25 throw new Error(); | |
26 } | |
27 (expanded as [object]).forEach(function (g) { | |
28 var graph = g['@id']; | |
29 var graphNode = rdfEnv.createNamedNode(graph) as Node; | |
30 g['@graph'].forEach(function (subj) { | |
31 for (let pred in subj) { | |
32 if (pred.match(/^[^@]/)) { | |
33 subj[pred].forEach(function (obj) { | |
34 onQuad(quadFromExpandedStatement(rdfEnv, subj, pred, obj, graphNode)); | |
35 }); | |
36 } | |
37 else { | |
38 if (pred === "@type") { | |
39 subj[pred].forEach((obj) => { | |
40 onQuad(quadFromTypeStatement(rdfEnv, subj, obj, graphNode)); | |
41 }); | |
42 } | |
43 } | |
44 } | |
45 }); | |
46 }); | |
47 done(); | |
48 }); | |
49 } | |
50 ; |