Пример #1
0
        public void runRules(String[] rules, java.lang.Object[] facts)
        {
            KnowledgeBase    kbase    = KnowledgeBaseFactory.newKnowledgeBase();
            KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

            for (int i = 0; i < rules.Length; i++)
            {
                String ruleFile = rules[i];
                Console.WriteLine("Loading file: " + ruleFile);
                ruleFile = Path.GetFullPath(Path.Combine("rules", ruleFile));
                kbuilder.add(ResourceFactory.newFileResource(ruleFile), ResourceType.DRL);
            }

            java.util.Collection pkgs = kbuilder.getKnowledgePackages();
            kbase.addKnowledgePackages(pkgs);
            StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

            for (int i = 0; i < facts.Length; i++)
            {
                java.lang.Object fact = facts[i];
                //Console.WriteLine("Inserting fact: " + fact);
                ksession.insert(fact);
            }



            ksession.fireAllRules();
        }
        public void KnowledgeBaseFactoryReceivesAGoodFile()
        {
            KnowledgeBaseFactory knowledgeBaseFactory = new KnowledgeBaseFactory();
            var knowledgeBase = knowledgeBaseFactory.GetKnowledgeBase("newknowledgebase.json");

            Assert.IsNotNull(knowledgeBase);
            Assert.IsNotNull(knowledgeBase.Excludes);
            Assert.IsNotNull(knowledgeBase.FeaturedRules);
            Assert.IsNotNull(knowledgeBase.Rules);
            Assert.IsNotNull(knowledgeBase.Spliters);
            Assert.IsNotNull(knowledgeBase.Transforms);
        }
Пример #3
0
        private static void Inference(string fileName)
        {
            try {
                IKnowledgeBase kb;
                using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) {
                    kb = KnowledgeBaseFactory.FromInput(fs);
                }

                OutputKnowledgeBaseGraph(kb, "graphviz.txt");

                Console.WriteLine("Type exit to quit the program.");
                Console.WriteLine("A query is a space separated list of literals to test for satisfiability.");
                Console.WriteLine();

                while (true)
                {
                    Console.Write("Enter query: ");
                    var read = Console.ReadLine() ?? "";
                    if (read == "quit")
                    {
                        ExitWithMsg(null);
                    }

                    var query = KnowledgeBaseFactory.QueryFromLine(read);
                    var qStr  = query.ToString();

                    Console.WriteLine("[Direct] Is " + qStr + " satisfiable?");
                    var satisfied = kb.DirectQuery(query);
                    Console.WriteLine("[Direct] " + (satisfied ? "Yes " + qStr + " is" : "No " + qStr + " is not") +
                                      " satisfiable");
                    Console.WriteLine();

                    Console.WriteLine("[Refutation] Is " + qStr + " satisfiable?");
                    var refuSatisfied = kb.RefutationQuery(query);
                    Console.WriteLine("[Refutation] " + (refuSatisfied ? "Yes " + qStr + " is" : "No " + qStr + " is not") +
                                      " satisfiable");
                    Console.WriteLine();
                }
            } catch (Exception ex) {
                ExitWithMsg("Error: " + ex.Message);
            }
        }
Пример #4
0
        public int Calculate <T>(Assembly assembly, List <Type> types, List <T> objects, List <IRule> rules)
        {
            var classLoader = new TheiaClassLoader(assembly);
            var kBuilder    = CreateKnowledgeBuilder(rules, classLoader);

            var kBaseConfig = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(null, classLoader);
            var kBase       = KnowledgeBaseFactory.newKnowledgeBase(kBaseConfig);

            kBase.addKnowledgePackages(kBuilder.getKnowledgePackages());

            var kSession = kBase.newStatefulKnowledgeSession();

            foreach (var obj in objects)
            {
                kSession.insert(obj);
            }

            int firedRules = kSession.fireAllRules();

            objects.AddRange(GetObjects(classLoader, kSession, types, objects));
            kSession.dispose();

            return(firedRules);
        }
        public void KnowledgeBaseFactoryReceivesANonExistingFile()
        {
            KnowledgeBaseFactory knowledgeBaseFactory = new KnowledgeBaseFactory();

            knowledgeBaseFactory.GetKnowledgeBase("abc.json");
        }
        public void KnowledgeBaseFactoryDoesNotReceiveAFile()
        {
            KnowledgeBaseFactory knowledgeBaseFactory = new KnowledgeBaseFactory();

            knowledgeBaseFactory.GetKnowledgeBase("");
        }