public void WriteMtInfo(TextWriter writer, string mt, string serverRoot, bool toplevel) { if (toplevel) { threadLocal.tl_ServerRoot = serverRoot; } serverRoot = WithSlash(serverRoot); threadLocal.tl_writer = writer; writer.WriteLine("<h2>Siprolog Mt {0}</h2>", mt); PNode qnode = FindKB(mt); if (qnode != null) { writer.WriteLine("<h3> OutgoingEdges </h3>"); KBGraph.PrintToWriterOutEdges(qnode, 0, writer, serverRoot); writer.WriteLine("<h3> IncomingEdges </h3>"); KBGraph.PrintToWriterInEdges(qnode, 0, writer, serverRoot); mt = qnode.Id; } threadLocal.tl_mt = mt; //KBGraph.ShowGenlMts(qnode, null, 0, writer, serverRoot); writer.WriteLine("<h3> KB Operations for {0}</h3> ", mt); writer.WriteLine("<a href='{0}plot/?mt={1}&q=plot(X,Y)'>Plot Mt</a> ", serverRoot, mt); writer.WriteLine("<a href='{0}plot/?mt={1}&a=autorefresh&q=plot(X,Y)'>Scope Mt</a> ", serverRoot, mt); writer.WriteLine("<a href='{0}siprolog/?mt={1}&a=autorefresh'>Watch Mt</a> ", serverRoot, mt); writer.WriteLine("<a href='{0}siprolog/?mt={1}&q=clear'>Clear Prolog KB</a> ", serverRoot, mt); writer.WriteLine("<a href='{0}xrdf/?mt={1}&q=clearcache'>Clear RDF Cache for KB</a> ", serverRoot, mt); writer.WriteLine("<a href='{0}xrdf/?mt={1}&q=syncfromremote'>Sync From Remote</a> ", serverRoot, mt); writer.WriteLine("<a href='{0}xrdf/?mt={1}&q=synctoremote'>Sync To Remote</a> ", serverRoot, mt); writer.WriteLine("<a href='{0}xrdf/?mt={1}&q=pl2rdf'>Prolog2RDF</a> ", serverRoot, mt); writer.WriteLine("<a href='{0}xrdf/?mt={1}&q=rdf2pl'>RDF2Prolog</a> ", serverRoot, mt); writer.WriteLine("<br/>"); if (qnode != null) { ensureCompiled(qnode, ContentBackingStore.Prolog); if (RdfDeveloperSanityChecks > 2) { var kbContents0 = findVisibleKBRulesSorted(mt); ensureCompiled(qnode, ContentBackingStore.RdfMemory); ensureCompiled(qnode, ContentBackingStore.Prolog); var kbContents1 = findVisibleKBRulesSorted(mt); if (kbContents0.Count != kbContents1.Count) { Warn("findVisibleKBRulesSorted changed size {0}->{1}", kbContents0.Count, kbContents1.Count); } } } var kbContents = findVisibleKBRulesSorted(mt); int total = kbContents.Count; int local = 0; int showInheritedCount = 300; if (qnode != null) { local = qnode.pdb.rules.Count; } int inherited = total - local; bool showInherited = (local > inherited); if (local == 0) { showInherited = true; } if (inherited < showInheritedCount) { showInheritedCount = inherited; } writer.WriteLine( "<h3> KB Contents (<font color='blue'>Blue local</font> {0}) (<font color='darkgreen'>Green Inherited ({2})</font> {1})</h3>", local, inherited, !showInherited ? "unshown" : showInheritedCount >= inherited ? "all shown" : "showing the first " + showInheritedCount); if (toplevel) { writer.WriteLine("<hr/>"); } int shown = 0; var qnodeID = qnode == null ? mt : qnode.id; foreach (Rule r in kbContents) { var rmt = r.OptionalHomeMt; bool localMT = (qnodeID == rmt || rmt == null); if (!localMT) { if (!showInherited) { continue; WriteRule(writer, r, qnode); continue; } shown++; if (shown > showInheritedCount) { showInherited = false; } } WriteRule(writer, r, qnode); } if (qnode == null) { return; } if (!qnode.IsDataFrom(ContentBackingStore.Prolog) || true) { WriteMtInfoRDF(writer, qnode, mt, serverRoot, toplevel); } }
public void webWriter0(TextWriter writer, string action, string queryv, string mt, string serverRoot, bool toplevel) { serverRoot = WithSlash(serverRoot); try { if ((action == null) && (queryv == null) && (mt == null)) { queryv = "list"; } if (action == null) { if (queryv != null) { if (queryv.ToLower() == "list") { writer.WriteLine("<h2>Siprolog Mt List</h2>"); foreach (PNode p in KBGraph.SortedTopLevelNodes) { writer.WriteLine(p.ToLink(serverRoot) + "<br/>"); } writer.WriteLine("<h2>Siprolog Mt Treed</h2>"); KBGraph.PrintToWriterTreeMts(writer, serverRoot); return; } if (queryv.ToLower() == "selector") { writer.WriteLine("<table width='100%' style='height: 100%;' cellpadding='10' cellspacing='0' border='0'>"); //header writer.WriteLine("<tr>"); writer.WriteLine("<td colspan='2' style='height: 100px;' bgcolor='#777d6a'>"); writer.WriteLine("<h2>Siprolog Mt Selector view</h2>"); writer.WriteLine("</td/tr>"); //left column writer.WriteLine("<tr>"); writer.WriteLine("<td width='20%' valign='top' bgcolor='#999f8e'>"); writer.WriteLine("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"\"> <label> Select a Mt:"); writer.WriteLine("<select name=\"location\" id=\"location\" onchange=\"setIframeSource()\" size='32'>"); foreach (PNode p in KBGraph.SortedTopLevelNodes) { writer.WriteLine(p.ToOptionLink(serverRoot)); } writer.WriteLine("</select>"); writer.WriteLine("</label></form>"); writer.WriteLine("</td>"); writer.WriteLine("<td width='80%' valign='top' bgcolor='#d2d8c7'>"); writer.WriteLine("<p> </p>"); writer.WriteLine("<iframe id='myIframe' src='" + serverRoot + "siprolog/?mt=baseKB' width='100%' height='100%' frameborder='0' marginheight='0' marginwidth='0'></iframe>"); writer.WriteLine("<p> </p>"); writer.WriteLine("</td></tr>"); // Footer section writer.WriteLine("<tr>"); writer.WriteLine("<td colspan='2' align='center' bgcolor='#777d6a'>"); browserFooter(writer, "", serverRoot); writer.WriteLine("</td></tr>"); writer.WriteLine("</table>"); //writer.WriteLine("<h2>Siprolog Mt Treed</h2>"); //KBGraph.PrintToWriterTreeMts(writer, serverRoot); return; } if (queryv.ToLower() == "preds") { writer.WriteLine("<h2>Siprolog Preds List</h2>"); SharedGlobalPredDefsDirty = true; UpdateSharedGlobalPredDefs(); lock (SharedGlobalPredDefs) { foreach (var kpp in SharedGlobalPredDefs) { kpp.Value.WriteHtmlInfo(writer); } } UpdateSharedGlobalPredDefs(); WriteMtInfo(writer, rdfDefMT, serverRoot, false); return; } if (queryv.ToLower() == "listing") { List <string> allMts = new List <string>(); //writer.WriteLine("<h2>Siprolog Mt List</h2>"); foreach (PNode p in KBGraph.SortedTopLevelNodes) { string pname = p.id; allMts.Add(pname); //writer.WriteLine("<a href='{1}siprolog/?mt={0}'>{0} (prob={2})</a><br/>", pname, serverRoot, p.probability); } writer.WriteLine("<h2>Siprolog Mt Treed</h2>"); KBGraph.PrintToWriterTreeMts(writer, serverRoot); foreach (var list in allMts) { writer.WriteLine("<hr/>"); webWriter0(writer, action, null, list, null, false); } interactFooter(writer, "", serverRoot); return; } } if (mt != null) { WriteMtInfo(writer, mt, serverRoot, toplevel); if (toplevel) { interactFooter(writer, mt, serverRoot); } return; } } else { switch (action.ToLower()) { case "append": appendKB(queryv, mt); break; case "insert": insertKB(queryv, mt); break; case "clear": clearKB(mt); break; case "query": interactQuery(writer, queryv, mt, serverRoot); break; case "autoquery": interactQuery(writer, queryv, mt, serverRoot); return; break; case "remotequery": jsonQuery(writer, queryv, mt, serverRoot); return; break; } webWriter0(writer, null, null, mt, serverRoot, false); } } catch (Exception e) { writer.WriteLine("<font color='red'>{0} {1} {2}</font>", e.GetType(), e.Message, e.StackTrace); return; } }