annotate src/layout/graph_queries.ts @ 150:3ce355e4f388 default tip

bye jest; hi vitest. new working test for styles.ts
author drewp@bigasterisk.com
date Mon, 08 May 2023 17:27:44 -0700
parents 2468f2227d22
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
601a604c097a new module with getStringValue
drewp@bigasterisk.com
parents:
diff changeset
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 // }