Mercurial > code > home > repos > streamed-graph
annotate src/layout/graph_queries.ts @ 146:9347277e8311
try a bit harder to notice <sg-source> children after <streamed-graph> startup
author | drewp@bigasterisk.com |
---|---|
date | Mon, 08 May 2023 13:52:50 -0700 |
parents | 2468f2227d22 |
children |
rev | line source |
---|---|
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
1 // import { DataFactory, Literal, N3Store, NamedNode, Util } from "n3"; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
2 // const { literal, namedNode } = DataFactory; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
3 |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
4 // // i think this one is a worse subset of graphLiteral, below |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
5 // export function getStringValue( |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
6 // store: N3Store | undefined, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
7 // subj: NamedNode, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
8 // pred: NamedNode, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
9 // defaultValue: string = "" |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
10 // ): string { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
11 // if (store === undefined) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
12 // // this is so you can use the function before you have a graph |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
13 // return "..."; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
14 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
15 // const objs = store.getObjects(subj, pred, null); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
16 // if (objs.length == 0) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
17 // return defaultValue; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
18 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
19 // return objs[0].value; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
20 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
21 |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
22 // // workaround for uris that don't have good labels in the graph |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
23 // export function labelFromUri( |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
24 // uri: NamedNode, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
25 // prefix: string, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
26 // tailsToLabels: { [key: string]: string }, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
27 // defaultLabel: string |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
28 // ) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
29 // let label = defaultLabel === undefined ? uri.value : defaultLabel; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
30 // Object.entries(tailsToLabels).forEach(([tail, useLabel]) => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
31 // if (uri.equals(namedNode(prefix + tail))) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
32 // label = useLabel as string; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
33 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
34 // }); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
35 // return label; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
36 // } |
53 | 37 |
79
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
38 // export function graphLiteral( |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
39 // store: N3Store, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
40 // subj: NamedNode, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
41 // pred: string, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
42 // notFoundResult?: string |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
43 // ): Literal { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
44 // const keep: Array<Literal> = []; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
45 // store.forEach( |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
46 // q => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
47 // if (!Util.isLiteral(q.object)) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
48 // throw new Error("non literal found"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
49 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
50 // let seen = false; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
51 // for (let other of keep) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
52 // // why are we getting multiple matches for the same literal? seems like a bug |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
53 // if (other.equals(q.object)) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
54 // seen = true; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
55 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
56 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
57 // if (!seen) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
58 // keep.push(q.object as Literal); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
59 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
60 // }, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
61 // subj, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
62 // namedNode(pred), |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
63 // null, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
64 // null |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
65 // ); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
66 // if (keep.length == 0) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
67 // return literal(notFoundResult || "(missing)"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
68 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
69 // if (keep.length == 1) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
70 // return keep[0]; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
71 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
72 // console.log(`${subj.value} ${pred} had ${keep.length} objects:`, keep); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
73 // return keep[0]; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
74 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
75 |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
76 // export function graphUriValue( |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
77 // store: N3Store, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
78 // subj: NamedNode, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
79 // pred: string |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
80 // ): NamedNode | undefined { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
81 // const keep: Array<NamedNode> = []; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
82 // store.forEach( |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
83 // q => { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
84 // if (!Util.isNamedNode(q.object)) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
85 // throw new Error("non uri found"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
86 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
87 // keep.push(q.object as NamedNode); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
88 // }, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
89 // subj, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
90 // namedNode(pred), |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
91 // null, |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
92 // null |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
93 // ); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
94 // if (keep.length == 0) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
95 // return undefined; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
96 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
97 // if (keep.length == 1) { |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
98 // return keep[0]; |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
99 // } |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
100 // throw new Error("found multiple matches for pred"); |
0c188ed3bcd8
starting lit upgrade. total mess right now
drewp@bigasterisk.com
parents:
53
diff
changeset
|
101 // } |