Mercurial > code > home > repos > streamed-graph
annotate src/layout/Layout.ts @ 110:3cdbbd913f1d
table displays now just barely
author | drewp@bigasterisk.com |
---|---|
date | Fri, 18 Mar 2022 23:41:24 -0700 |
parents | 5e6840229a05 |
children | 4b33a479dc2f |
rev | line source |
---|---|
88
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
1 // Organize graph data into tables (column orders, etc) for the view layer. |
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
2 |
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
3 import Immutable from "immutable"; // mostly using this for the builtin equals() testing, since NamedNode(x)!=NamedNode(x) |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
4 import { NamedNode, Quad, Store, Term } from "n3"; |
110 | 5 import { rdf, rdfs } from "./namespaces"; |
108
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
6 import { uniqueSortedTerms } from "./rdf_value"; |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
7 import { TableDesc, ViewConfig } from "./ViewConfig"; |
88
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
8 |
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
9 type UriSet = Immutable.Set<NamedNode>; |
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
10 export type TypeToSubjs = Immutable.Map<NamedNode, UriSet>; |
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
11 |
103 | 12 interface ColumnHeader { |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
13 rdfType: NamedNode; |
103 | 14 pred: NamedNode; |
15 } | |
108
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
16 |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
17 export interface AlignedTable { |
103 | 18 columnHeaders: ColumnHeader[]; |
110 | 19 rowHeaders: NamedNode[]; |
20 rows: Term[][][]; | |
103 | 21 } |
108
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
22 |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
23 export interface PredRow { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
24 pred: NamedNode; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
25 objs: Term[]; |
103 | 26 } |
108
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
27 |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
28 export interface SubjRow { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
29 subj: NamedNode; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
30 predRows: PredRow[]; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
31 } |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
32 |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
33 export interface FreeStatements { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
34 subjRows: SubjRow[]; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
35 } |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
36 |
103 | 37 export interface LayoutResult { |
38 sections: (AlignedTable | FreeStatements)[]; | |
88
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
39 } |
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
40 |
110 | 41 interface ISP { |
42 subj: NamedNode; | |
43 pred: NamedNode; | |
44 } | |
45 const makeSP = Immutable.Record<ISP>({ | |
46 subj: new NamedNode(""), | |
47 pred: new NamedNode(""), | |
48 }); | |
49 | |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
50 class AlignedTableBuilder { |
110 | 51 subjSet = Immutable.Set<NamedNode>(); |
52 predSet = Immutable.Set<NamedNode>(); | |
53 cell = Immutable.Map<string, Immutable.Set<Term>>(); | |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
54 constructor( |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
55 public rdfType: NamedNode /* plus join types, sort instructions */ |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
56 ) {} |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
57 |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
58 addQuad(q: Quad) { |
110 | 59 const subj = q.subject as NamedNode; |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
60 const pred = q.predicate as NamedNode; |
110 | 61 this.subjSet = this.subjSet.add(subj); |
62 this.predSet = this.predSet.add(pred); | |
63 | |
64 const key =subj.id+pred.id//makeSP({ subj, pred }); | |
65 const cur = this.cell.get(key, undefined); | |
66 const newval = | |
67 cur === undefined ? Immutable.Set([q.object]) : cur.add(q.object); | |
68 | |
69 this.cell = this.cell.set(key, newval); | |
70 } | |
71 | |
72 value(): AlignedTable { | |
73 let preds = uniqueSortedTerms(this.predSet); | |
74 const tagged = preds.map((p, i)=>{ | |
75 if (p.equals(rdf.type)) { | |
76 i=999; | |
77 } | |
78 if (p.equals(rdfs.label)) { | |
79 i=-1 | |
80 } | |
81 return {sort:i, val: p} | |
82 }) | |
83 tagged.sort((a,b)=>{ | |
84 return a.sort - b.sort; | |
85 }); | |
86 preds = tagged.map((e)=>e.val); | |
87 | |
88 // const omittedColumn = pred.equals(rdf.type); | |
89 const subjs = uniqueSortedTerms(this.subjSet); | |
90 const outputGrid: Term[][][] = []; | |
91 for (let subj of subjs) { | |
92 const row: Term[][] = []; | |
93 preds.forEach((pred) => { | |
94 const key = subj.id+pred.id;//makeSP({ subj, pred }); | |
95 const objs = this.cell.get(key, Immutable.Set<Term>([])); | |
96 const uniq = uniqueSortedTerms(objs); | |
97 console.log("cell objs", objs.size, uniq.length); | |
98 row.push(uniq); | |
99 }); | |
100 outputGrid.push(row); | |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
101 } |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
102 |
110 | 103 const headers = preds.map((pred) => { |
104 return { rdfType: this.rdfType, pred: pred }; | |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
105 }); |
110 | 106 return { columnHeaders: headers, rowHeaders: subjs, rows: outputGrid }; |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
107 } |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
108 } |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
109 |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
110 function findTypesNeededForTables(viewConfig?: ViewConfig): UriSet { |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
111 const typesToGather: NamedNode[] = []; |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
112 if (viewConfig) { |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
113 viewConfig.tables.forEach((t: TableDesc) => { |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
114 typesToGather.push(t.primary); |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
115 }); |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
116 } |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
117 return Immutable.Set(typesToGather); |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
118 } |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
119 |
110 | 120 function findSubjectsWithTypes(graph: Store, typesToGather: UriSet): UriSet { |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
121 const subjectsToGather: NamedNode[] = []; |
110 | 122 const ft = typesToGather.toArray()[0]; |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
123 graph.forEach( |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
124 (q: Quad) => { |
110 | 125 if (q.object.equals(ft)) { |
126 //typesToGather.has(q.object as NamedNode)) { | |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
127 subjectsToGather.push(q.subject as NamedNode); |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
128 } |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
129 }, |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
130 null, |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
131 rdf.type, |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
132 null, |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
133 null |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
134 ); |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
135 return Immutable.Set(subjectsToGather); |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
136 } |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
137 |
108
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
138 function freeStatmentsSection(stmts: Quad[]): FreeStatements { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
139 const subjs: NamedNode[] = []; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
140 stmts.forEach((q) => { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
141 subjs.push(q.subject as NamedNode); |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
142 }); |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
143 return { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
144 subjRows: uniqueSortedTerms(subjs).map((subj) => { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
145 const preds: NamedNode[] = []; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
146 let po = Immutable.Map<NamedNode, Term[]>(); |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
147 stmts.forEach((q) => { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
148 if (q.subject.equals(subj)) { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
149 const p = q.predicate as NamedNode; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
150 preds.push(p); |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
151 po = po.set(p, po.get(p, [])); |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
152 po.get(p)?.push(q.object as Term); |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
153 } |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
154 }); |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
155 |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
156 const rows: PredRow[] = []; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
157 uniqueSortedTerms(preds).forEach((p) => { |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
158 rows.push({ pred: p, objs: uniqueSortedTerms(po.get(p, [])) }); |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
159 }); |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
160 return { subj: subj, predRows: rows }; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
161 }), |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
162 }; |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
163 } |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
164 |
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
165 // The description of how this page should look: sections, tables, etc. |
103 | 166 export class Layout { |
167 constructor(public viewConfig?: ViewConfig) {} | |
168 plan(graph: Store): LayoutResult { | |
110 | 169 const typesToTable = findTypesNeededForTables(this.viewConfig); |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
170 |
110 | 171 const subjectsToTable = findSubjectsWithTypes(graph, typesToTable); |
103 | 172 const ungrouped: Quad[] = []; |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
173 const vc = this.viewConfig; |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
174 const table = |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
175 vc && vc.tables.length > 0 |
110 | 176 ? new AlignedTableBuilder(vc.tables[0].primary) //todo multiple tables |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
177 : null; |
88
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
178 |
103 | 179 graph.forEach( |
180 (q: Quad) => { | |
110 | 181 let contains = false; |
182 subjectsToTable.forEach((s) => { | |
183 if (s.equals(q.subject)) { | |
184 contains = true; | |
185 } | |
186 }); | |
187 | |
188 // if (subjectsToTable.has(q.subject as NamedNode) && table) { // not working | |
189 if (contains && table) { | |
190 table.addQuad(q); | |
191 } else { | |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
192 ungrouped.push(q); |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
193 } |
103 | 194 }, |
195 null, | |
196 null, | |
197 null, | |
198 null | |
199 ); | |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
200 const res: LayoutResult = { sections: [] }; |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
201 if (table) { |
110 | 202 console.log("table value"); |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
203 res.sections.push(table.value()); |
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
204 } |
108
5e6840229a05
rewrite freeStatements rendering to put more planning in layout
drewp@bigasterisk.com
parents:
106
diff
changeset
|
205 res.sections.push(freeStatmentsSection(ungrouped)); |
104
1aea03d306af
WIP Layout. tests are passing but they're a little wrong
drewp@bigasterisk.com
parents:
103
diff
changeset
|
206 return res; |
103 | 207 } |
88
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
208 } |
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
209 |
103 | 210 // // One table of rows with a common rdf:type. |
211 // export class MultiSubjsTypeBlockLayout { | |
212 // subjs: NamedNode[]; | |
213 // preds: NamedNode[]; | |
214 // graphCells: Immutable.Map<ISP, Immutable.Set<Term>>; | |
215 // constructor(graph: Store, byType: TypeToSubjs, table: TableDesc) { | |
216 // const subjSet = byType.get(table.primary); | |
217 // this.subjs = subjSet ? Array.from(subjSet) : []; | |
218 // this.subjs.sort(); | |
219 | |
220 // let preds = Immutable.Set<NamedNode>(); | |
88
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
221 |
103 | 222 // this.graphCells = Immutable.Map<ISP, Immutable.Set<Term>>().withMutations( |
223 // (mutGraphCells) => { | |
224 // this.subjs.forEach((subj: NamedNode) => { | |
225 // graph.forEach( | |
226 // (q: Quad) => { | |
227 // if (!Util.isNamedNode(q.predicate)) { | |
228 // throw new Error(); | |
229 // } | |
88
ac7ad087d474
graph view rewrites and fixes for the multi-subject table
drewp@bigasterisk.com
parents:
diff
changeset
|
230 |
103 | 231 // const pred = q.predicate as NamedNode; |
232 // if (pred.equals(rdf.type)) { | |
233 // // the whole block is labeled with the type | |
234 // return; | |
235 // } | |
236 // preds = preds.add(pred); | |
237 // const cellKey = this.makeCellKey(subj, pred); | |
238 // mutGraphCells.set( | |
239 // cellKey, | |
240 // mutGraphCells.get(cellKey, Immutable.Set<Term>()).add(q.object) | |
241 // ); | |
242 // }, | |
243 // subj, | |
244 // null, | |
245 // null, | |
246 // null | |
247 // ); | |
248 // }); | |
249 // } | |
250 // ); | |
251 // this.preds = Array.from(preds); | |
252 // this.preds.splice(this.preds.indexOf(rdf.type), 1); | |
253 // // also pull out label, which should be used on 1st column | |
254 // this.preds.sort(); | |
255 // } | |
256 | |
257 // makeCellKey(subj: NamedNode, pred: NamedNode): ISP { | |
258 // return SP({ | |
259 // subj: subj, | |
260 // pred: pred, | |
261 // }); | |
262 // } | |
263 // } |