final Property p = ResourceFactory.createProperty("urn:eg:p"); final Model rawData = ModelFactory.createDefaultModel(); final Resource a = rawData.createResource("urn:a"); final Resource b = rawData.createResource("urn:b"); final Resource c = rawData.createResource("urn:c"); a.addProperty(p, b); b.addProperty(p, c); a.addProperty(p, c); final String rules = "[rule1: (?a urn:eg:p ?b) (?b urn:eg:p ?c) -> (?a urn:eg:p ?c)]"; final Reasoner reasoner = new GenericRuleReasoner(Rule.parseRules(rules)); reasoner.setDerivationLogging(true); final InfModel inf = ModelFactory.createInfModel(reasoner, rawData); assertTrue(inf.contains(a,p,c)); final Iterator<Derivation> d0 = inf.getDerivation(inf.asStatement(Triple.create(a.asNode(), p.asNode(), c.asNode()))); assertFalse(d0.hasNext()); inf.remove(a,p,c); assertTrue(inf.contains(a,p,c)); final Iterator<Derivation> d1 = inf.getDerivation(inf.asStatement(Triple.create(a.asNode(), p.asNode(), c.asNode()))); assertTrue(d1.hasNext());
Statement s = i.nextStatement(); System.out.println("Statement is " + s); for (Iterator<Derivation> id = inf.getDerivation(s); id.hasNext(); ) { Derivation deriv = (Derivation) id.next(); deriv.printTrace(out, true);