From 133dab6e21f263df2baca913d3d0b7a4fd152d08 Mon Sep 17 00:00:00 2001 From: RncLsn Date: Fri, 3 Jul 2015 12:33:55 +0100 Subject: Reactome test: standard and sygenia queries. --- .../cs/pagoda/global_tests/SkolemisationTests.java | 269 +++++++++++++++++++++ .../cs/pagoda/global_tests/TestPagodaReactome.java | 14 ++ 2 files changed, 283 insertions(+) create mode 100644 test/uk/ac/ox/cs/pagoda/global_tests/SkolemisationTests.java (limited to 'test/uk/ac/ox/cs/pagoda/global_tests') diff --git a/test/uk/ac/ox/cs/pagoda/global_tests/SkolemisationTests.java b/test/uk/ac/ox/cs/pagoda/global_tests/SkolemisationTests.java new file mode 100644 index 0000000..2fc682b --- /dev/null +++ b/test/uk/ac/ox/cs/pagoda/global_tests/SkolemisationTests.java @@ -0,0 +1,269 @@ +package uk.ac.ox.cs.pagoda.global_tests; + +import org.semanticweb.owlapi.apibinding.OWLManager; +import org.semanticweb.owlapi.model.*; +import org.testng.Assert; +import org.testng.annotations.Test; +import uk.ac.ox.cs.pagoda.query.AnswerTuple; +import uk.ac.ox.cs.pagoda.query.AnswerTuples; +import uk.ac.ox.cs.pagoda.query.QueryRecord; +import uk.ac.ox.cs.pagoda.reasoner.QueryReasoner; +import uk.ac.ox.cs.pagoda.util.TestUtil; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; + +public class SkolemisationTests { + + public static final String NS = "http://example.org/test#%s"; + + private IRI getEntityIRI(String name) { + return IRI.create(String.format(NS, name)); + } + +// @Test + public void commonSuccessorTest() throws OWLOntologyCreationException, IOException, OWLOntologyStorageException { + + /* + * Build test ontology + * */ + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLOntology ontology = manager.createOntology(); + + OWLClass classA = factory.getOWLClass(getEntityIRI("A")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classA)); + OWLClass classB = factory.getOWLClass(getEntityIRI("B")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classB)); + OWLClass classC = factory.getOWLClass(getEntityIRI("C")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classC)); + OWLNamedIndividual c = factory.getOWLNamedIndividual(getEntityIRI("c")); + OWLNamedIndividual d = factory.getOWLNamedIndividual(getEntityIRI("d")); + OWLObjectProperty roleR = factory.getOWLObjectProperty(IRI.create(String.format(NS, "R"))); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(roleR)); + + // Class assertions + manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(classA, c)); // A(c) + manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(classA, d)); // A(d) + + // Minimum cardinality axiom + manager.addAxiom(ontology, + factory.getOWLSubClassOfAxiom(classA, + factory.getOWLObjectUnionOf( + factory.getOWLObjectSomeValuesFrom(roleR, classB), + factory.getOWLObjectSomeValuesFrom(roleR, classC)))); + + /* + * Save the ontology + * */ + +// manager.saveOntology(ontology, Files.newOutputStream(Paths.get("/home/alessandro/Desktop/test-ontology.owl"))); + + /* + * Test one query + * */ + + QueryReasoner pagoda = QueryReasoner.getInstance(ontology); + pagoda.loadOntology(ontology); + if(pagoda.preprocess()) { + String queryStr = "select distinct ?x ?y " + + " where { " + + " ?x <" + roleR.toStringID() + "> _:z . " + + " ?y <" + roleR.toStringID() + "> _:z " + + " }"; + QueryRecord queryRecord = pagoda.getQueryManager().create(queryStr); + pagoda.evaluate(queryRecord); + AnswerTuples answers = queryRecord.getAnswers(); + System.out.println("Difficulty: " + queryRecord.getDifficulty()); + int count = 0; + for(AnswerTuple ans; answers.isValid(); answers.moveNext()) { + ans = answers.getTuple(); + TestUtil.logInfo(ans); + count++; + } + Assert.assertEquals(count, 2); + } + pagoda.dispose(); + } + +// @Test + public void yTest() throws OWLOntologyCreationException, IOException, OWLOntologyStorageException { + + /* + * Build test ontology + * */ + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLOntology ontology = manager.createOntology(); + + OWLClass classA = factory.getOWLClass(getEntityIRI("A")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classA)); + OWLClass classB = factory.getOWLClass(getEntityIRI("B")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classB)); + OWLClass classC = factory.getOWLClass(getEntityIRI("C")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classC)); + OWLClass classD = factory.getOWLClass(getEntityIRI("D")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classD)); + OWLNamedIndividual a = factory.getOWLNamedIndividual(getEntityIRI("a")); + OWLNamedIndividual b = factory.getOWLNamedIndividual(getEntityIRI("b")); + OWLNamedIndividual c = factory.getOWLNamedIndividual(getEntityIRI("c")); + OWLNamedIndividual d = factory.getOWLNamedIndividual(getEntityIRI("d")); + OWLObjectProperty roleR = factory.getOWLObjectProperty(IRI.create(String.format(NS, "R"))); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(roleR)); + OWLObjectProperty roleS = factory.getOWLObjectProperty(IRI.create(String.format(NS, "S"))); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(roleS)); + OWLObjectProperty roleP = factory.getOWLObjectProperty(IRI.create(String.format(NS, "P"))); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(roleP)); + + // Class assertions + manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(classD, a)); // D(a) + manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(classD, b)); // D(b) + manager.addAxiom(ontology, factory.getOWLObjectPropertyAssertionAxiom(roleS, c, a)); // S(c,a) + manager.addAxiom(ontology, factory.getOWLObjectPropertyAssertionAxiom(roleP, d, b)); // P(d,b) + + // Axioms + // subsetOf(D someValuesFrom(R owl:Thing)) + manager.addAxiom(ontology, + factory.getOWLSubClassOfAxiom(classD, + factory.getOWLObjectSomeValuesFrom(roleR, + factory.getOWLThing()))); + // subsetOf(someValuesFrom(inverseOf(S) owl:Thing) allValuesFrom(R A)) + manager.addAxiom(ontology, + factory.getOWLSubClassOfAxiom(factory.getOWLObjectSomeValuesFrom(roleS.getInverseProperty(), + factory.getOWLThing()), + factory.getOWLObjectAllValuesFrom(roleR, classA))); + // subsetOf(someValuesFrom(inverseOf(P) owl:Thing) B) + manager.addAxiom(ontology, + factory.getOWLSubClassOfAxiom(factory.getOWLObjectSomeValuesFrom(roleP.getInverseProperty(), + factory.getOWLThing()), + classB)); + // subsetOf(someValuesFrom(R A) C) + manager.addAxiom(ontology, + factory.getOWLSubClassOfAxiom(factory.getOWLObjectSomeValuesFrom(roleR, classA), classC)); + + /* + * Save the ontology + * */ + + manager.saveOntology(ontology, Files.newOutputStream(Paths.get("/home/alessandro/Desktop/test-ontology.owl"))); + + /* + * Test one query + * */ + + QueryReasoner pagoda = QueryReasoner.getInstance(ontology); + pagoda.loadOntology(ontology); + if(pagoda.preprocess()) { + String queryStr = "PREFIX rdf: " + + "select distinct ?x" + + " where { " +// + " ?x rdf:type " + classB + " ." +// + " ?x " + roleR + " "+ "_:y . " + + " ?x rdf:type " + classC + + " }"; + QueryRecord queryRecord = pagoda.getQueryManager().create(queryStr); + System.out.println(queryRecord); + pagoda.evaluate(queryRecord); + AnswerTuples answers = queryRecord.getAnswers(); + System.out.println("Difficulty: " + queryRecord.getDifficulty()); + int count = 0; + for(AnswerTuple ans; answers.isValid(); answers.moveNext()) { + ans = answers.getTuple(); + TestUtil.logInfo(ans); + count++; + } +// Assert.assertEquals(count, 1); + } + pagoda.dispose(); + } + + @Test + public void rTest() throws OWLOntologyCreationException, IOException, OWLOntologyStorageException { + + /* + * Build test ontology + * */ + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLOntology ontology = manager.createOntology(); + + OWLClass classA = factory.getOWLClass(getEntityIRI("A")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classA)); + OWLClass classB = factory.getOWLClass(getEntityIRI("B")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classB)); +// OWLClass classC = factory.getOWLClass(getEntityIRI("C")); +// manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classC)); +// OWLClass classD = factory.getOWLClass(getEntityIRI("D")); +// manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(classD)); + OWLNamedIndividual a = factory.getOWLNamedIndividual(getEntityIRI("a")); + OWLNamedIndividual b = factory.getOWLNamedIndividual(getEntityIRI("b")); + OWLNamedIndividual c = factory.getOWLNamedIndividual(getEntityIRI("c")); +// OWLNamedIndividual d = factory.getOWLNamedIndividual(getEntityIRI("d")); + OWLObjectProperty roleR = factory.getOWLObjectProperty(IRI.create(String.format(NS, "R"))); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(roleR)); +// OWLObjectProperty roleF = factory.getOWLObjectProperty(IRI.create(String.format(NS, "F"))); +// manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(roleF)); + OWLObjectProperty roleP = factory.getOWLObjectProperty(IRI.create(String.format(NS, "P"))); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(roleP)); +// OWLObjectProperty roleL = factory.getOWLObjectProperty(IRI.create(String.format(NS, "L"))); +// manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(roleL)); + + // Class assertions + manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(classA, a)); // A(a) + manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(classA, b)); // A(b) + manager.addAxiom(ontology, factory.getOWLObjectPropertyAssertionAxiom(roleP, c, a)); // P(c,a) + + // Axioms + // subsetOf(A someValuesFrom(R owl:Thing)) + manager.addAxiom(ontology, + factory.getOWLSubClassOfAxiom(classA, + factory.getOWLObjectSomeValuesFrom(roleR, + factory.getOWLThing()))); + + // inverseFunctional(R) + manager.addAxiom(ontology, + factory.getOWLInverseFunctionalObjectPropertyAxiom(roleR)); + + // subsetOf(someValuesFrom(inverseOf(P) owl:thing) B) + manager.addAxiom(ontology, + factory.getOWLSubClassOfAxiom(factory.getOWLObjectSomeValuesFrom(roleP.getInverseProperty(), + factory.getOWLThing()), + classB)); + /* + * Save the ontology + * */ + + manager.saveOntology(ontology, Files.newOutputStream(Paths.get("/home/alessandro/Desktop/test-ontology.owl"))); + + /* + * Test one query + * */ + + QueryReasoner pagoda = QueryReasoner.getInstance(ontology); + pagoda.loadOntology(ontology); + if(pagoda.preprocess()) { + String queryStr = "PREFIX rdf: " + + "select distinct ?x" + + " where { " + + " ?x rdf:type " + classB + + " }"; + QueryRecord queryRecord = pagoda.getQueryManager().create(queryStr); + System.out.println(queryRecord); + pagoda.evaluate(queryRecord); + AnswerTuples answers = queryRecord.getAnswers(); + System.out.println("Difficulty: " + queryRecord.getDifficulty()); + int count = 0; + for(AnswerTuple ans; answers.isValid(); answers.moveNext()) { + ans = answers.getTuple(); + TestUtil.logInfo(ans); + count++; + } +// Assert.assertEquals(count, 1); + } + pagoda.dispose(); + } +} diff --git a/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaReactome.java b/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaReactome.java index 5c05b94..30f3d93 100644 --- a/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaReactome.java +++ b/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaReactome.java @@ -23,4 +23,18 @@ public class TestPagodaReactome { .run(); } + @Test(groups = {"sygenia"}) + public void justExecute_sygenia() throws IOException { + String ontoDir = TestUtil.getConfig().getProperty("ontoDir"); + + Pagoda.builder() + .ontology(Paths.get(ontoDir, "reactome/biopax-level3-processed.owl")) + .data(Paths.get(ontoDir, "reactome/data/sample_10.ttl")) + .query(Paths.get(ontoDir, "reactome/reactome_sygenia_queries.sparql")) + .classify(true) + .hermit(true) + .build() + .run(); + } + } -- cgit v1.2.3