Mercurial > code > home > repos > streamed-graph
view src/layout/graph_queries.ts @ 119:8715633f5213
fancier column sorting to bring preds from the same type together
author | drewp@bigasterisk.com |
---|---|
date | Sun, 20 Mar 2022 01:17:35 -0700 |
parents | 2468f2227d22 |
children |
line wrap: on
line source
// import { DataFactory, Literal, N3Store, NamedNode, Util } from "n3"; // const { literal, namedNode } = DataFactory; // // i think this one is a worse subset of graphLiteral, below // export function getStringValue( // store: N3Store | undefined, // subj: NamedNode, // pred: NamedNode, // defaultValue: string = "" // ): string { // if (store === undefined) { // // this is so you can use the function before you have a graph // return "..."; // } // const objs = store.getObjects(subj, pred, null); // if (objs.length == 0) { // return defaultValue; // } // return objs[0].value; // } // // workaround for uris that don't have good labels in the graph // export function labelFromUri( // uri: NamedNode, // prefix: string, // tailsToLabels: { [key: string]: string }, // defaultLabel: string // ) { // let label = defaultLabel === undefined ? uri.value : defaultLabel; // Object.entries(tailsToLabels).forEach(([tail, useLabel]) => { // if (uri.equals(namedNode(prefix + tail))) { // label = useLabel as string; // } // }); // return label; // } // export function graphLiteral( // store: N3Store, // subj: NamedNode, // pred: string, // notFoundResult?: string // ): Literal { // const keep: Array<Literal> = []; // store.forEach( // q => { // if (!Util.isLiteral(q.object)) { // throw new Error("non literal found"); // } // let seen = false; // for (let other of keep) { // // why are we getting multiple matches for the same literal? seems like a bug // if (other.equals(q.object)) { // seen = true; // } // } // if (!seen) { // keep.push(q.object as Literal); // } // }, // subj, // namedNode(pred), // null, // null // ); // if (keep.length == 0) { // return literal(notFoundResult || "(missing)"); // } // if (keep.length == 1) { // return keep[0]; // } // console.log(`${subj.value} ${pred} had ${keep.length} objects:`, keep); // return keep[0]; // } // export function graphUriValue( // store: N3Store, // subj: NamedNode, // pred: string // ): NamedNode | undefined { // const keep: Array<NamedNode> = []; // store.forEach( // q => { // if (!Util.isNamedNode(q.object)) { // throw new Error("non uri found"); // } // keep.push(q.object as NamedNode); // }, // subj, // namedNode(pred), // null, // null // ); // if (keep.length == 0) { // return undefined; // } // if (keep.length == 1) { // return keep[0]; // } // throw new Error("found multiple matches for pred"); // }