From b8212705e65db860bbb899b16fa0e7bc9e8536cf Mon Sep 17 00:00:00 2001 From: RncLsn Date: Thu, 28 May 2015 19:14:03 +0100 Subject: Bug-fix in tester. --- .../ac/ox/cs/pagoda/global_tests/CheckAnswers.java | 35 ---------- .../pagoda/global_tests/TestGapMappedToLower.java | 68 +++++++++++++++++++ .../ox/cs/pagoda/global_tests/TestPagodaFLY.java | 1 + .../ox/cs/pagoda/global_tests/TestPagodaLUBM.java | 1 + .../ox/cs/pagoda/global_tests/TestPagodaUOBM.java | 1 + .../ox/cs/pagoda/junit/TestGapMappedToLower.java | 77 ---------------------- test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java | 53 +++++++++++++++ 7 files changed, 124 insertions(+), 112 deletions(-) delete mode 100644 test/uk/ac/ox/cs/pagoda/global_tests/CheckAnswers.java create mode 100644 test/uk/ac/ox/cs/pagoda/global_tests/TestGapMappedToLower.java delete mode 100644 test/uk/ac/ox/cs/pagoda/junit/TestGapMappedToLower.java create mode 100644 test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java (limited to 'test/uk/ac') diff --git a/test/uk/ac/ox/cs/pagoda/global_tests/CheckAnswers.java b/test/uk/ac/ox/cs/pagoda/global_tests/CheckAnswers.java deleted file mode 100644 index 14050ce..0000000 --- a/test/uk/ac/ox/cs/pagoda/global_tests/CheckAnswers.java +++ /dev/null @@ -1,35 +0,0 @@ -package uk.ac.ox.cs.pagoda.global_tests; - -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import org.testng.Assert; -import uk.ac.ox.cs.pagoda.query.QueryRecord; - -import java.io.BufferedReader; -import java.io.IOException; -import java.lang.reflect.Type; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Set; - -/** - * It provides auxiliary methods for checking answers. - * */ -public class CheckAnswers { - - private CheckAnswers() { - } - - public static void assertSameAnswers(Path computedAnswersFile, Path givenAnswersFile) throws IOException { - BufferedReader computedReader = Files.newBufferedReader(computedAnswersFile); - BufferedReader givenReader = Files.newBufferedReader(givenAnswersFile); - - Gson gson = QueryRecord.GsonCreator.getInstance(); - - Type cqType = new TypeToken>() {}.getType(); - Set computedAnswers = gson.fromJson(computedReader, cqType); - Set givenAnswers = gson.fromJson(givenReader, cqType); - - Assert.assertEquals(computedAnswers, givenAnswers); - } -} diff --git a/test/uk/ac/ox/cs/pagoda/global_tests/TestGapMappedToLower.java b/test/uk/ac/ox/cs/pagoda/global_tests/TestGapMappedToLower.java new file mode 100644 index 0000000..4b1ec6d --- /dev/null +++ b/test/uk/ac/ox/cs/pagoda/global_tests/TestGapMappedToLower.java @@ -0,0 +1,68 @@ +package uk.ac.ox.cs.pagoda.global_tests; + +import junit.framework.Assert; +import org.semanticweb.owlapi.apibinding.OWLManager; +import org.semanticweb.owlapi.model.*; +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.reasoner.QueryReasoner; +import uk.ac.ox.cs.pagoda.util.Namespace; + +public class TestGapMappedToLower { + + public static final String ns = "http://example.org/test#%s"; + + public IRI getEntityIRI(String name) { + return IRI.create(String.format(ns, name)); + } + + @Test + public void test() throws OWLOntologyCreationException { + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLOntology ontology = manager.createOntology(); + OWLClass A = factory.getOWLClass(getEntityIRI("A")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(A)); + OWLClass B = factory.getOWLClass(getEntityIRI("B")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(B)); + OWLClass C = factory.getOWLClass(getEntityIRI("C")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(C)); + OWLClass A1 = factory.getOWLClass(getEntityIRI("A1")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(A1)); + OWLClass A2 = factory.getOWLClass(getEntityIRI("A2")); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(A2)); + OWLNamedIndividual a = factory.getOWLNamedIndividual(getEntityIRI("a")); + OWLNamedIndividual b = factory.getOWLNamedIndividual(getEntityIRI("b")); + OWLNamedIndividual c = factory.getOWLNamedIndividual(getEntityIRI("c")); + OWLObjectProperty r = factory.getOWLObjectProperty(IRI.create(String.format(ns, "r"))); + manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(r)); + + manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(A, a)); // A(a) + manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(B, b)); // B(b) + manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(C, c)); // C(c) + manager.addAxiom(ontology, factory.getOWLObjectPropertyAssertionAxiom(r, a, b)); // r(a,b) + manager.addAxiom(ontology, factory.getOWLObjectPropertyAssertionAxiom(r, a, c)); // r(a,c) + manager.addAxiom(ontology, factory.getOWLSubClassOfAxiom(A, factory.getOWLObjectUnionOf(A1, A2))); // A \sqsubseteq A1 \sqcup A2 + manager.addAxiom(ontology, factory.getOWLSubClassOfAxiom(A1, factory.getOWLObjectMaxCardinality(1, r))); // A1 \sqsubseteq \leq 1 r.\top + manager.addAxiom(ontology, factory.getOWLSubClassOfAxiom(A2, factory.getOWLObjectMaxCardinality(1, r))); // A2 \sqsubseteq \leq 1 r.\top + + QueryReasoner pagoda = QueryReasoner.getInstance(ontology); + pagoda.loadOntology(ontology); + if (pagoda.preprocess()) { + String sparql = "select ?x where { " + + "?x <" + r.toStringID() + "> ?y . " + + "?y " + Namespace.RDF_TYPE_QUOTED + " <" + B.toStringID() + "> . " + + "?y " + Namespace.RDF_TYPE_QUOTED + " <" + C.toStringID() + "> . } "; + AnswerTuples rs = pagoda.evaluate(sparql); + int count = 0; + for (AnswerTuple ans; rs.isValid(); rs.moveNext()) { + ans = rs.getTuple(); + System.out.println(ans.getGroundTerm(0)); + ++count; + } + Assert.assertEquals(1, count); + } + } + +} diff --git a/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaFLY.java b/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaFLY.java index d8d2b76..352bcba 100644 --- a/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaFLY.java +++ b/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaFLY.java @@ -2,6 +2,7 @@ package uk.ac.ox.cs.pagoda.global_tests; import org.testng.annotations.Test; import uk.ac.ox.cs.pagoda.Pagoda; +import uk.ac.ox.cs.pagoda.query.CheckAnswers; import uk.ac.ox.cs.pagoda.util.TestUtil; import java.io.File; diff --git a/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaLUBM.java b/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaLUBM.java index d261d84..1db4a43 100644 --- a/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaLUBM.java +++ b/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaLUBM.java @@ -2,6 +2,7 @@ package uk.ac.ox.cs.pagoda.global_tests; import org.testng.annotations.Test; import uk.ac.ox.cs.pagoda.Pagoda; +import uk.ac.ox.cs.pagoda.query.CheckAnswers; import uk.ac.ox.cs.pagoda.util.TestUtil; import java.io.File; diff --git a/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaUOBM.java b/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaUOBM.java index 558ac1f..4f49fe0 100644 --- a/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaUOBM.java +++ b/test/uk/ac/ox/cs/pagoda/global_tests/TestPagodaUOBM.java @@ -3,6 +3,7 @@ package uk.ac.ox.cs.pagoda.global_tests; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import uk.ac.ox.cs.pagoda.Pagoda; +import uk.ac.ox.cs.pagoda.query.CheckAnswers; import uk.ac.ox.cs.pagoda.util.TestUtil; import java.io.File; diff --git a/test/uk/ac/ox/cs/pagoda/junit/TestGapMappedToLower.java b/test/uk/ac/ox/cs/pagoda/junit/TestGapMappedToLower.java deleted file mode 100644 index 3e385e5..0000000 --- a/test/uk/ac/ox/cs/pagoda/junit/TestGapMappedToLower.java +++ /dev/null @@ -1,77 +0,0 @@ -package uk.ac.ox.cs.pagoda.junit; - -import junit.framework.Assert; - -import org.junit.Test; -import org.semanticweb.owlapi.apibinding.OWLManager; -import org.semanticweb.owlapi.model.IRI; -import org.semanticweb.owlapi.model.OWLClass; -import org.semanticweb.owlapi.model.OWLDataFactory; -import org.semanticweb.owlapi.model.OWLNamedIndividual; -import org.semanticweb.owlapi.model.OWLObjectProperty; -import org.semanticweb.owlapi.model.OWLOntology; -import org.semanticweb.owlapi.model.OWLOntologyCreationException; -import org.semanticweb.owlapi.model.OWLOntologyManager; - -import uk.ac.ox.cs.pagoda.query.AnswerTuple; -import uk.ac.ox.cs.pagoda.query.AnswerTuples; -import uk.ac.ox.cs.pagoda.reasoner.QueryReasoner; -import uk.ac.ox.cs.pagoda.util.Namespace; - -public class TestGapMappedToLower { - - public static final String ns = "http://example.org/test#%s"; - - public IRI getEntityIRI(String name) { - return IRI.create(String.format(ns, name)); - } - - @Test - public void test() throws OWLOntologyCreationException { - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLDataFactory factory = manager.getOWLDataFactory(); - OWLOntology ontology = manager.createOntology(); - OWLClass A = factory.getOWLClass(getEntityIRI("A")); - manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(A)); - OWLClass B = factory.getOWLClass(getEntityIRI("B")); - manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(B)); - OWLClass C = factory.getOWLClass(getEntityIRI("C")); - manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(C)); - OWLClass A1 = factory.getOWLClass(getEntityIRI("A1")); - manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(A1)); - OWLClass A2 = factory.getOWLClass(getEntityIRI("A2")); - manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(A2)); - OWLNamedIndividual a = factory.getOWLNamedIndividual(getEntityIRI("a")); - OWLNamedIndividual b = factory.getOWLNamedIndividual(getEntityIRI("b")); - OWLNamedIndividual c = factory.getOWLNamedIndividual(getEntityIRI("c")); - OWLObjectProperty r = factory.getOWLObjectProperty(IRI.create(String.format(ns, "r"))); - manager.addAxiom(ontology, factory.getOWLDeclarationAxiom(r)); - - manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(A, a)); // A(a) - manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(B, b)); // B(b) - manager.addAxiom(ontology, factory.getOWLClassAssertionAxiom(C, c)); // C(c) - manager.addAxiom(ontology, factory.getOWLObjectPropertyAssertionAxiom(r, a, b)); // r(a,b) - manager.addAxiom(ontology, factory.getOWLObjectPropertyAssertionAxiom(r, a, c)); // r(a,c) - manager.addAxiom(ontology, factory.getOWLSubClassOfAxiom(A, factory.getOWLObjectUnionOf(A1, A2))); // A \sqsubseteq A1 \sqcup A2 - manager.addAxiom(ontology, factory.getOWLSubClassOfAxiom(A1, factory.getOWLObjectMaxCardinality(1, r))); // A1 \sqsubseteq \leq 1 r.\top - manager.addAxiom(ontology, factory.getOWLSubClassOfAxiom(A2, factory.getOWLObjectMaxCardinality(1, r))); // A2 \sqsubseteq \leq 1 r.\top - - QueryReasoner pagoda = QueryReasoner.getInstance(ontology); - pagoda.loadOntology(ontology); - if (pagoda.preprocess()) { - String sparql = "select ?x where { " - + "?x <" + r.toStringID() + "> ?y . " - + "?y " + Namespace.RDF_TYPE_QUOTED + " <" + B.toStringID() + "> . " - + "?y " + Namespace.RDF_TYPE_QUOTED + " <" + C.toStringID() + "> . } "; - AnswerTuples rs = pagoda.evaluate(sparql); - int count = 0; - for (AnswerTuple ans; rs.isValid(); rs.moveNext()) { - ans = rs.getTuple(); - System.out.println(ans.getGroundTerm(0)); - ++count; - } - Assert.assertEquals(1, count); - } - } - -} diff --git a/test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java b/test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java new file mode 100644 index 0000000..f16d657 --- /dev/null +++ b/test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java @@ -0,0 +1,53 @@ +package uk.ac.ox.cs.pagoda.query; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import org.testng.Assert; + +import java.io.BufferedReader; +import java.io.IOException; +import java.lang.reflect.Type; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Set; + +/** + * It provides auxiliary methods for checking answers. + */ +public class CheckAnswers { + + private CheckAnswers() { + } + + public static void assertSameAnswers(Path computedAnswersFile, Path givenAnswersFile) throws IOException { + BufferedReader computedReader = Files.newBufferedReader(computedAnswersFile); + BufferedReader givenReader = Files.newBufferedReader(givenAnswersFile); + + Gson gson = QueryRecord.GsonCreator.getInstance(); + + Type cqType = new TypeToken>() { + }.getType(); + Set computedAnswersRecords = gson.fromJson(computedReader, cqType); + Set givenAnswersRecords = gson.fromJson(givenReader, cqType); + + for(QueryRecord computedAnswersRecord : computedAnswersRecords) { + if(computedAnswersRecord.queryID == 8) continue; // DEBUG + Set givenAnswers = null; + for(QueryRecord givenAnswersRecord : givenAnswersRecords) { + if(givenAnswersRecord.queryID == computedAnswersRecord.queryID) { + givenAnswers = givenAnswersRecord.soundAnswerTuples; + break; + } + } + + Assert.assertNotNull(givenAnswers, "Missing given answer for query no. " + computedAnswersRecord.queryID); + + Set computedAnswers = computedAnswersRecord.soundAnswerTuples; + Assert.assertEquals(computedAnswers.size(), givenAnswers.size(), + "Different number sound answers for query " + computedAnswersRecord.queryID + "!" + + "Expected " + givenAnswers.size() + ", got " + computedAnswers.size()); + Assert.assertEquals(computedAnswers, givenAnswers, + "Different sound answers for query " + computedAnswersRecord.queryID + "!"); + } + } +} -- cgit v1.2.3