public GlassBoxExplanation(final OpenlletReasonerFactory factory, final OpenlletReasoner reasoner) { super(reasoner.getRootOntology(), factory, reasoner); _axiomConverter = new AxiomConverter(reasoner); }
public GlassBoxExplanation(final OpenlletReasonerFactory factory, final OpenlletReasoner reasoner) { super(reasoner.getRootOntology(), factory, reasoner); _axiomConverter = new AxiomConverter(reasoner); }
public GlassBoxExplanation(final OpenlletReasonerFactory factory, final OpenlletReasoner reasoner) { super(reasoner.getRootOntology(), factory, reasoner); _axiomConverter = new AxiomConverter(reasoner); }
private static void testExplanation(final OWLAxiom axiom) { OWLOntology ont = null; try { ont = OWL.Ontology(axiom); final OpenlletReasoner reasoner = OpenlletReasonerFactory.getInstance().createReasoner(ont); reasoner.getKB().setDoExplanation(true); assertTrue("Entailment failed", reasoner.isEntailed(axiom)); final Set<ATermAppl> terms = reasoner.getKB().getExplanationSet(); assertTrue("Explanation incorrect " + terms, terms.size() == 1); final OWLAxiom explanation = new AxiomConverter(reasoner).convert(terms.iterator().next()); assertEquals("Unexpected explanation", axiom, explanation); } finally { if (ont != null) _manager.removeOntology(ont); } }
@Test public void testAxiomConverterRules1() { final KnowledgeBase kb = new KnowledgeBaseImpl(); final AxiomConverter converter = new AxiomConverter(kb, OWL._factory); final ATermAppl C = ATermUtils.makeTermAppl("C"); final ATermAppl D = ATermUtils.makeTermAppl("D"); final ATermAppl x = ATermUtils.makeVar("x"); kb.addClass(C); kb.addClass(D); final ATermAppl[] head = new ATermAppl[] { ATermUtils.makeTypeAtom(x, D) }; final ATermAppl[] body = new ATermAppl[] { ATermUtils.makeTypeAtom(x, C) }; final ATermAppl rule = ATermUtils.makeRule(head, body); final OWLAxiom actual = converter.convert(rule); final Set<SWRLAtom> antecedent = new HashSet<>(); final Set<SWRLAtom> consequent = new HashSet<>(); antecedent.add(classAtom(Class("C"), variable("x"))); consequent.add(classAtom(Class("D"), variable("x"))); final OWLAxiom expected = rule(antecedent, consequent); assertEquals(expected, actual); }
public void testAxiomConverterRules1c() { final KnowledgeBase kb = new KnowledgeBaseImpl(); final AxiomConverter converter = new AxiomConverter(kb, OWL._manager.getOWLDataFactory()); final ATermAppl C = ATermUtils.makeTermAppl("C"); final ATermAppl D = ATermUtils.makeTermAppl("D"); final ATermAppl x = ATermUtils.makeVar("x"); final ATermAppl name = ATermUtils.makeBnode("MyRule"); kb.addClass(C); kb.addClass(D); final ATermAppl[] head = new ATermAppl[] { ATermUtils.makeTypeAtom(x, D) }; final ATermAppl[] body = new ATermAppl[] { ATermUtils.makeTypeAtom(x, C) }; final ATermAppl rule = ATermUtils.makeRule(name, head, body); final OWLAxiom actual = converter.convert(rule); final Set<SWRLAtom> antecedent = new HashSet<>(); final Set<SWRLAtom> consequent = new HashSet<>(); antecedent.add(classAtom(Class("C"), variable("x"))); consequent.add(classAtom(Class("D"), variable("x"))); final OWLAxiom expected = rule(name.getArgument(0).toString(), true, antecedent, consequent); assertEquals(expected, actual); }
@Test public void testAxiomConverterRules1b() { final KnowledgeBase kb = new KnowledgeBaseImpl(); final AxiomConverter converter = new AxiomConverter(kb, OWL._manager.getOWLDataFactory()); final ATermAppl C = ATermUtils.makeTermAppl("C"); final ATermAppl D = ATermUtils.makeTermAppl("D"); final ATermAppl x = ATermUtils.makeVar("x"); final ATermAppl name = ATermUtils.makeTermAppl("MyRule"); kb.addClass(C); kb.addClass(D); final ATermAppl[] head = new ATermAppl[] { ATermUtils.makeTypeAtom(x, D) }; final ATermAppl[] body = new ATermAppl[] { ATermUtils.makeTypeAtom(x, C) }; final ATermAppl rule = ATermUtils.makeRule(name, head, body); final OWLAxiom actual = converter.convert(rule); final Set<SWRLAtom> antecedent = new HashSet<>(); final Set<SWRLAtom> consequent = new HashSet<>(); antecedent.add(classAtom(Class("C"), variable("x"))); consequent.add(classAtom(Class("D"), variable("x"))); final OWLAxiom expected = rule(name.getName(), antecedent, consequent); assertEquals(expected, actual); }
@Test public void testAxiomConverterRules2() { final KnowledgeBase kb = new KnowledgeBaseImpl(); final AxiomConverter converter = new AxiomConverter(kb, OWL._manager.getOWLDataFactory()); final ATermAppl C = ATermUtils.makeTermAppl("C"); final ATermAppl D = ATermUtils.makeTermAppl("D"); final ATermAppl i = ATermUtils.makeTermAppl("i"); kb.addClass(C); kb.addClass(D); kb.addIndividual(i); final ATermAppl[] head = new ATermAppl[] { ATermUtils.makeTypeAtom(i, D) }; final ATermAppl[] body = new ATermAppl[] { ATermUtils.makeTypeAtom(i, C) }; final ATermAppl rule = ATermUtils.makeRule(head, body); final OWLAxiom actual = converter.convert(rule); final Set<SWRLAtom> antecedent = new HashSet<>(); final Set<SWRLAtom> consequent = new HashSet<>(); antecedent.add(classAtom(Class("C"), SWRL.individual(OWL.Individual("i")))); consequent.add(classAtom(Class("D"), SWRL.individual(OWL.Individual("i")))); final OWLAxiom expected = rule(antecedent, consequent); assertEquals(expected, actual); }
@Test public void testAxiomConverterRules4() { final KnowledgeBase kb = new KnowledgeBaseImpl(); final AxiomConverter converter = new AxiomConverter(kb, OWL._manager.getOWLDataFactory()); final ATermAppl r = ATermUtils.makeTermAppl("r"); final ATermAppl s = ATermUtils.makeTermAppl("s"); final ATermAppl x = ATermUtils.makeVar("x"); final ATermAppl y = ATermUtils.makeVar("y"); kb.addDatatypeProperty(r); kb.addDatatypeProperty(s); final ATermAppl[] head = new ATermAppl[] { ATermUtils.makePropAtom(r, x, y) }; final ATermAppl[] body = new ATermAppl[] { ATermUtils.makePropAtom(s, x, y) }; final ATermAppl rule = ATermUtils.makeRule(head, body); final OWLAxiom actual = converter.convert(rule); final Set<SWRLAtom> antecedent = new HashSet<>(); final Set<SWRLAtom> consequent = new HashSet<>(); antecedent.add(propertyAtom(DataProperty("s"), variable("x"), variable("y"))); consequent.add(propertyAtom(DataProperty("r"), variable("x"), variable("y"))); final OWLAxiom expected = rule(antecedent, consequent); assertEquals(expected, actual); }
@Test public void testAxiomConverterRules3() { final KnowledgeBase kb = new KnowledgeBaseImpl(); final OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); final OWLDataFactory df = manager.getOWLDataFactory(); final AxiomConverter converter = new AxiomConverter(kb, df); final ATermAppl p = ATermUtils.makeTermAppl("p"); final ATermAppl q = ATermUtils.makeTermAppl("q"); final ATermAppl x = ATermUtils.makeVar("x"); final ATermAppl y = ATermUtils.makeVar("y"); kb.addObjectProperty(p); kb.addObjectProperty(q); final ATermAppl[] head = new ATermAppl[] { ATermUtils.makePropAtom(q, x, y) }; final ATermAppl[] body = new ATermAppl[] { ATermUtils.makePropAtom(p, x, y) }; final ATermAppl rule = ATermUtils.makeRule(head, body); final OWLAxiom actual = converter.convert(rule); final Set<SWRLAtom> antecedent = new HashSet<>(); final Set<SWRLAtom> consequent = new HashSet<>(); antecedent.add(propertyAtom(ObjectProperty("p"), variable("x"), variable("y"))); consequent.add(propertyAtom(ObjectProperty("q"), variable("x"), variable("y"))); final OWLAxiom expected = rule(antecedent, consequent); assertEquals(expected, actual); }