static Web webFromTriple(Symbol a, Symbol b, Symbol c) { ret webFromTriple(triple(a, b, c)); } static Web webFromTriple(Triple t) { if (t == null) null; ret webFromTriple(t, 0.2, 0.2, 0.8, 0.7); } static Web webFromTriple(Triple t, double x1, double y1, double x2, double y2) { if (t == null) null; Web web = webWithoutIndexAndLock(); // save space S a = unnull(str(t.a)), b = unnull(str(t.b)), c = unnull(str(t.c)); // ensure we are making 3 nodes, even if texts are identical // ("singular is singular") WebNode nodeA = web.newNode(a), nodeC = web.newNode(c); web_addRelation(nodeA, nodeC, b); web_setPosition(first(web.nodes), x1, y1); web_setPosition(second(web.nodes), x2, y2); if (t instanceof TripleWeb) { TripleWeb w = cast t; web.globalID = w.globalID(); web.created = w.created; web.source = w.source; web.unverified = w.unverified(); } ret web; }