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); }
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); } }
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(""); }