annotate src/parseRdf.ts @ 21:a90cb6927c7d default tip

fix countdown queries. Display "now" instead of "In -0.4 hours"
author drewp@bigasterisk.com
date Sat, 07 Sep 2024 17:47:36 -0700
parents 20d1fa4250c0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
1 import { Parser, Quad_Predicate, Quad_Subject, Store, Term } from "n3";
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
2 export const EV = "http://bigasterisk.com/event#";
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
3 export const RDF = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
4
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
5 export function getLiteral(store: Store, graph: Term, subj: Quad_Subject, pred: Quad_Predicate, missing: string | null): string {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
6 let out = null;
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
7 store.getObjects(subj, pred, graph).forEach((attr) => {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
8 out = attr.value;
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
9 });
21
a90cb6927c7d fix countdown queries. Display "now" instead of "In -0.4 hours"
drewp@bigasterisk.com
parents: 15
diff changeset
10 if (out == null) {
15
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
11 if (missing === null) {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
12 throw new Error();
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
13 }
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
14 return missing;
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
15 }
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
16 return out;
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
17 }
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
18
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
19 export async function fetchGraph(url: string) {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
20 return await fetch(url, {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
21 method: "GET",
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
22 headers: {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
23 Accept: "application/json",
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
24 "X-Pomerium-Authorization": document.cookie.substring(document.cookie.indexOf("=") + 1),
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
25 },
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
26 });
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
27 }
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
28
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
29 export async function parseGraph(r: Response, done: (store: Store) => void) {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
30 const store = new Store();
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
31 const n3txt = await r.text();
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
32 const parser = new Parser({ format: "application/trig" });
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
33 parser.parse(n3txt, (error, quad, prefixes) => {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
34 if (quad) {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
35 store.addQuad(quad);
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
36 } else {
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
37 done(store);
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
38 }
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
39 });
20d1fa4250c0 refactor
drewp@bigasterisk.com
parents:
diff changeset
40 }