Beispiel #1
0
        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>&nbsp;", mt);
            writer.WriteLine("<a href='{0}plot/?mt={1}&q=plot(X,Y)'>Plot Mt</a>&nbsp;", 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);
            }
        }
Beispiel #2
0
        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>&nbsp;</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>&nbsp;</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;
            }
        }