Search in sources :

Example 21 with Reasoner

use of org.apache.jena.reasoner.Reasoner in project jena by apache.

the class TestReasoners method testTransitiveBindReuse.

/**
     * The reasoner contract for bind(data) is not quite precise. It allows for
     * reasoners which have state so that reusing the same reasoner on a second data
     * model might lead to interference. This in fact used to happen with the transitive
     * reasoner. This is a test to check that the transitive reasoner state reuse has been fixed at source.
     */
public void testTransitiveBindReuse() {
    Reasoner r = ReasonerRegistry.getTransitiveReasoner();
    InfModel om1 = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel());
    Resource c1 = om1.createResource(PrintUtil.egNS + "Class1");
    Resource c2 = om1.createResource(PrintUtil.egNS + "Class2");
    Resource c3 = om1.createResource(PrintUtil.egNS + "Class3");
    om1.add(c1, RDFS.subClassOf, c2);
    om1.add(c2, RDFS.subClassOf, c3);
    om1.prepare();
    assertFalse(om1.isEmpty());
    InfModel om2 = ModelFactory.createInfModel(r, ModelFactory.createDefaultModel());
    StmtIterator si = om2.listStatements();
    boolean ok = !si.hasNext();
    si.close();
    assertTrue("Transitive reasoner state leak", ok);
}
Also used : StmtIterator(org.apache.jena.rdf.model.StmtIterator) TransitiveReasoner(org.apache.jena.reasoner.transitiveReasoner.TransitiveReasoner) Reasoner(org.apache.jena.reasoner.Reasoner) Resource(org.apache.jena.rdf.model.Resource) InfModel(org.apache.jena.rdf.model.InfModel)

Example 22 with Reasoner

use of org.apache.jena.reasoner.Reasoner in project jena by apache.

the class TestReasoners method testTransitiveRebind.

/**
     * Test rebind operation for the transitive reasoner
     */
public void testTransitiveRebind() {
    Graph data = Factory.createGraphMem();
    Node C1 = NodeFactory.createURI("C1");
    Node C2 = NodeFactory.createURI("C2");
    Node C3 = NodeFactory.createURI("C3");
    Node C4 = NodeFactory.createURI("C4");
    data.add(new Triple(C1, RDFS.subClassOf.asNode(), C2));
    data.add(new Triple(C2, RDFS.subClassOf.asNode(), C3));
    Reasoner reasoner = TransitiveReasonerFactory.theInstance().create(null);
    assertTrue(reasoner.supportsProperty(RDFS.subClassOf));
    assertTrue(!reasoner.supportsProperty(RDFS.domain));
    InfGraph infgraph = reasoner.bind(data);
    TestUtil.assertIteratorValues(this, infgraph.find(C1, null, null), new Object[] { new Triple(C1, RDFS.subClassOf.asNode(), C1), new Triple(C1, RDFS.subClassOf.asNode(), C2), new Triple(C1, RDFS.subClassOf.asNode(), C3) });
    Graph data2 = Factory.createGraphMem();
    data2.add(new Triple(C1, RDFS.subClassOf.asNode(), C2));
    data2.add(new Triple(C2, RDFS.subClassOf.asNode(), C4));
    infgraph.rebind(data2);
    // Incremental additions
    Node a = NodeFactory.createURI("a");
    Node b = NodeFactory.createURI("b");
    Node c = NodeFactory.createURI("c");
    infgraph.add(new Triple(a, RDFS.subClassOf.asNode(), b));
    infgraph.add(new Triple(b, RDFS.subClassOf.asNode(), c));
    TestUtil.assertIteratorValues(this, infgraph.find(b, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(b, RDFS.subClassOf.asNode(), c), new Triple(b, RDFS.subClassOf.asNode(), b) });
    TestUtil.assertIteratorValues(this, infgraph.find(a, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(a, RDFS.subClassOf.asNode(), a), new Triple(a, RDFS.subClassOf.asNode(), b), new Triple(a, RDFS.subClassOf.asNode(), c) });
    Node p = NodeFactory.createURI("p");
    Node q = NodeFactory.createURI("q");
    Node r = NodeFactory.createURI("r");
    infgraph.add(new Triple(p, RDFS.subPropertyOf.asNode(), q));
    infgraph.add(new Triple(q, RDFS.subPropertyOf.asNode(), r));
    TestUtil.assertIteratorValues(this, infgraph.find(q, RDFS.subPropertyOf.asNode(), null), new Object[] { new Triple(q, RDFS.subPropertyOf.asNode(), q), new Triple(q, RDFS.subPropertyOf.asNode(), r) });
    TestUtil.assertIteratorValues(this, infgraph.find(p, RDFS.subPropertyOf.asNode(), null), new Object[] { new Triple(p, RDFS.subPropertyOf.asNode(), p), new Triple(p, RDFS.subPropertyOf.asNode(), q), new Triple(p, RDFS.subPropertyOf.asNode(), r) });
}
Also used : Triple(org.apache.jena.graph.Triple) InfGraph(org.apache.jena.reasoner.InfGraph) InfGraph(org.apache.jena.reasoner.InfGraph) Graph(org.apache.jena.graph.Graph) TransitiveReasoner(org.apache.jena.reasoner.transitiveReasoner.TransitiveReasoner) Reasoner(org.apache.jena.reasoner.Reasoner) RDFNode(org.apache.jena.rdf.model.RDFNode) Node(org.apache.jena.graph.Node)

Example 23 with Reasoner

use of org.apache.jena.reasoner.Reasoner in project jena by apache.

the class TestReasoners method testRDFSRebind.

/**
     * Test rebind operation for the RDFS reasoner
     */
public void testRDFSRebind() {
    Graph data = Factory.createGraphMem();
    Node C1 = NodeFactory.createURI("C1");
    Node C2 = NodeFactory.createURI("C2");
    Node C3 = NodeFactory.createURI("C3");
    Node C4 = NodeFactory.createURI("C4");
    data.add(new Triple(C1, RDFS.subClassOf.asNode(), C2));
    data.add(new Triple(C2, RDFS.subClassOf.asNode(), C3));
    Reasoner reasoner = RDFSRuleReasonerFactory.theInstance().create(null);
    InfGraph infgraph = reasoner.bind(data);
    TestUtil.assertIteratorValues(this, infgraph.find(C1, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(C1, RDFS.subClassOf.asNode(), C1), new Triple(C1, RDFS.subClassOf.asNode(), C2), new Triple(C1, RDFS.subClassOf.asNode(), C3) });
    Graph data2 = Factory.createGraphMem();
    data2.add(new Triple(C1, RDFS.subClassOf.asNode(), C2));
    data2.add(new Triple(C2, RDFS.subClassOf.asNode(), C4));
    infgraph.rebind(data2);
    TestUtil.assertIteratorValues(this, infgraph.find(C1, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(C1, RDFS.subClassOf.asNode(), C1), new Triple(C1, RDFS.subClassOf.asNode(), C2), new Triple(C1, RDFS.subClassOf.asNode(), C4) });
}
Also used : Triple(org.apache.jena.graph.Triple) InfGraph(org.apache.jena.reasoner.InfGraph) InfGraph(org.apache.jena.reasoner.InfGraph) Graph(org.apache.jena.graph.Graph) TransitiveReasoner(org.apache.jena.reasoner.transitiveReasoner.TransitiveReasoner) Reasoner(org.apache.jena.reasoner.Reasoner) RDFNode(org.apache.jena.rdf.model.RDFNode) Node(org.apache.jena.graph.Node)

Example 24 with Reasoner

use of org.apache.jena.reasoner.Reasoner in project jena by apache.

the class TestReasoners method testTransitiveRemove.

/**
     * Test delete operation for Transtive reasoner.
     */
public void testTransitiveRemove() {
    Graph data = Factory.createGraphMem();
    Node a = NodeFactory.createURI("a");
    Node b = NodeFactory.createURI("b");
    Node c = NodeFactory.createURI("c");
    Node d = NodeFactory.createURI("d");
    Node e = NodeFactory.createURI("e");
    Node closedP = RDFS.subClassOf.asNode();
    data.add(new Triple(a, RDFS.subClassOf.asNode(), b));
    data.add(new Triple(a, RDFS.subClassOf.asNode(), c));
    data.add(new Triple(b, RDFS.subClassOf.asNode(), d));
    data.add(new Triple(c, RDFS.subClassOf.asNode(), d));
    data.add(new Triple(d, RDFS.subClassOf.asNode(), e));
    Reasoner reasoner = TransitiveReasonerFactory.theInstance().create(null);
    InfGraph infgraph = reasoner.bind(data);
    TestUtil.assertIteratorValues(this, infgraph.find(a, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(a, closedP, a), new Triple(a, closedP, b), new Triple(a, closedP, b), new Triple(a, closedP, c), new Triple(a, closedP, d), new Triple(a, closedP, e) });
    TestUtil.assertIteratorValues(this, infgraph.find(b, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(b, closedP, b), new Triple(b, closedP, d), new Triple(b, closedP, e) });
    infgraph.delete(new Triple(b, closedP, d));
    TestUtil.assertIteratorValues(this, infgraph.find(a, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(a, closedP, a), new Triple(a, closedP, b), new Triple(a, closedP, b), new Triple(a, closedP, c), new Triple(a, closedP, d), new Triple(a, closedP, e) });
    TestUtil.assertIteratorValues(this, infgraph.find(b, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(b, closedP, b) });
    infgraph.delete(new Triple(a, closedP, c));
    TestUtil.assertIteratorValues(this, infgraph.find(a, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(a, closedP, a), new Triple(a, closedP, b) });
    TestUtil.assertIteratorValues(this, infgraph.find(b, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(b, closedP, b) });
    TestUtil.assertIteratorValues(this, data.find(null, RDFS.subClassOf.asNode(), null), new Object[] { new Triple(a, closedP, b), new Triple(c, closedP, d), new Triple(d, closedP, e) });
}
Also used : Triple(org.apache.jena.graph.Triple) InfGraph(org.apache.jena.reasoner.InfGraph) InfGraph(org.apache.jena.reasoner.InfGraph) Graph(org.apache.jena.graph.Graph) TransitiveReasoner(org.apache.jena.reasoner.transitiveReasoner.TransitiveReasoner) Reasoner(org.apache.jena.reasoner.Reasoner) RDFNode(org.apache.jena.rdf.model.RDFNode) Node(org.apache.jena.graph.Node)

Example 25 with Reasoner

use of org.apache.jena.reasoner.Reasoner in project jena by apache.

the class TestReasoners method doTestMetaLevel.

/**
     * Test metalevel add/remove subproperty operations for a reasoner.
     */
public void doTestMetaLevel(ReasonerFactory rf) {
    Graph data = Factory.createGraphMem();
    Node c1 = NodeFactory.createURI("C1");
    Node c2 = NodeFactory.createURI("C2");
    Node c3 = NodeFactory.createURI("C3");
    Node p = NodeFactory.createURI("p");
    Node q = NodeFactory.createURI("q");
    Node sC = RDFS.subClassOf.asNode();
    Node sP = RDFS.subPropertyOf.asNode();
    data.add(new Triple(c2, sC, c3));
    data.add(new Triple(c1, p, c2));
    Reasoner reasoner = rf.create(null);
    InfGraph infgraph = reasoner.bind(data);
    TestUtil.assertIteratorValues(this, infgraph.find(c1, sC, null), new Object[] {});
    infgraph.add(new Triple(p, q, sC));
    TestUtil.assertIteratorValues(this, infgraph.find(c1, sC, null), new Object[] {});
    infgraph.add(new Triple(q, sP, sP));
    TestUtil.assertIteratorValues(this, infgraph.find(c1, sC, null), new Object[] { new Triple(c1, sC, c1), new Triple(c1, sC, c2), new Triple(c1, sC, c3) });
    infgraph.delete(new Triple(p, q, sC));
    TestUtil.assertIteratorValues(this, infgraph.find(c1, sC, null), new Object[] {});
}
Also used : Triple(org.apache.jena.graph.Triple) InfGraph(org.apache.jena.reasoner.InfGraph) InfGraph(org.apache.jena.reasoner.InfGraph) Graph(org.apache.jena.graph.Graph) TransitiveReasoner(org.apache.jena.reasoner.transitiveReasoner.TransitiveReasoner) Reasoner(org.apache.jena.reasoner.Reasoner) RDFNode(org.apache.jena.rdf.model.RDFNode) Node(org.apache.jena.graph.Node)

Aggregations

Reasoner (org.apache.jena.reasoner.Reasoner)45 InfGraph (org.apache.jena.reasoner.InfGraph)36 TransitiveReasoner (org.apache.jena.reasoner.transitiveReasoner.TransitiveReasoner)7 Graph (org.apache.jena.graph.Graph)5 Node (org.apache.jena.graph.Node)5 Triple (org.apache.jena.graph.Triple)5 InfModel (org.apache.jena.rdf.model.InfModel)5 RDFNode (org.apache.jena.rdf.model.RDFNode)5 ByteArrayInputStream (java.io.ByteArrayInputStream)2 OntModel (org.apache.jena.ontology.OntModel)2 Model (org.apache.jena.rdf.model.Model)2 Resource (org.apache.jena.rdf.model.Resource)2 JenaException (org.apache.jena.shared.JenaException)2 CommandLine (org.apache.commons.cli.CommandLine)1 CommandLineParser (org.apache.commons.cli.CommandLineParser)1 DefaultParser (org.apache.commons.cli.DefaultParser)1 Options (org.apache.commons.cli.Options)1 MultiUnion (org.apache.jena.graph.compose.MultiUnion)1 Property (org.apache.jena.rdf.model.Property)1 StmtIterator (org.apache.jena.rdf.model.StmtIterator)1