/** * */ package uk.ac.ebi; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import uk.ac.ebi.brain.core.Brain; import uk.ac.ebi.brain.error.BrainException; import uk.ac.ebi.brain.error.ClassExpressionException; import uk.ac.ebi.brain.error.ExistingClassException; import uk.ac.ebi.brain.error.ExistingEntityException; /** * @author Samuel Croset * */ public class BrainQueryTest { Brain brain; @Before public void bootstrap() throws BrainException { brain = new Brain("http://localhost/", "http://localhost/test.owl"); brain.learn("src/test/resources/dev.owl"); } @After public void dispose() { brain.sleep(); } @Test public void getNamedSubClass() throws BrainException { Brain brain = new Brain(); brain.addClass("Animal"); brain.addClass("Lion"); brain.subClassOf("Lion", "Animal"); brain.getSubClasses("Animal", false); assertEquals(true, brain.getSubClasses("Animal", false).contains("Lion")); assertEquals(true, brain.getSubClasses("Animal", false).contains("Lion")); } @Test public void getNamedIndividual() throws BrainException { Brain brain = new Brain(); brain.learn("src/test/resources/individuals.owl"); List<String>individuals = brain.getInstances("Human", false); assertEquals(1, individuals.size()); assertEquals("Joe", individuals.get(0)); individuals = brain.getInstances("Human", true); assertEquals(0, individuals.size()); individuals = brain.getInstances("Fireman", true); assertEquals(1, individuals.size()); individuals = brain.getInstancesFromLabel("'a human'", false); assertEquals(1, individuals.size()); } //TODO more test could be done regarding individuals - like anonymous class expressions (from label for instance) @Test public void getUnsatisfiableClasses() throws BrainException { Brain brain = new Brain(); brain.addClass("A"); brain.addClass("B"); brain.addClass("C"); brain.disjointClasses("A", "B"); brain.subClassOf("C", "A"); brain.subClassOf("C", "B"); brain.sleep(); assertEquals(1, brain.getUnsatisfiableClasses().size()); brain.sleep(); } @Test public void reStart() throws BrainException { brain.sleep(); List<String> subClasses = brain.getSubClasses("I", false); assertEquals(2, subClasses.size()); } @Test public void owlProfileTest() throws BrainException { boolean satisfied = brain.hasElProfile(); assertEquals(true, satisfied); List<String> violations = brain.getElProfileViolations(); assertEquals(0, violations.size()); } @Test public void prefixesAndLearnTest() throws BrainException { Brain newBrain = new Brain(); newBrain.addClass("http://whatever.com/TEST_A"); newBrain.prefix("http://whatever.com/", "whatever"); brain.prefix("http://www.example.org/", "example"); brain.learn(newBrain); assertEquals("http://whatever.com/", brain.getPrefixManager().getPrefix("whatever:")); assertEquals("http://www.example.org/", brain.getPrefixManager().getPrefix("example:")); } @Test public void classifyTest() { brain.classify(); } @Test public void getDirectSubClassesTest() throws ClassExpressionException{ List<String> subClasses = brain.getSubClasses("I", true); assertEquals(1, subClasses.size()); } @Test public void getIndirectSubClassesTest() throws BrainException { List<String> subClasses = brain.getSubClasses("G", false); assertEquals(3, subClasses.size()); } @Test public void getDirectAnonymousSubClassesTest() throws BrainException { List<String> subClasses = brain.getSubClasses("part-of some L", true); assertEquals(1, subClasses.size()); } @Test public void getIndirectAnonymousSubClassesTest() throws BrainException { List<String> subClasses = brain.getSubClasses("part-of some L", false); assertEquals(3, subClasses.size()); } @Test public void getAnonymousClassesNewOntology() throws BrainException { Brain brain = new Brain(); brain.addClass("A"); brain.addClass("B"); brain.addObjectProperty("part-of"); brain.subClassOf("B", "part-of some A"); List<String> subClasses = brain.getSubClasses("part-of some A", true); assertEquals(1, subClasses.size()); } @Test(expected = ClassExpressionException.class) public void getAnonymousClassesErrorNewOntology() throws BrainException { Brain brain = new Brain(); brain.addClass("A"); brain.addClass("B"); brain.addObjectProperty("part-of"); brain.subClassOf("B", "part-of some C"); List<String> subClasses = brain.getSubClasses("part-of some A", true); assertEquals(1, subClasses.size()); } @Test public void getSuperClassesTest() throws BrainException { List<String> superClasses = brain.getSuperClasses("C", false); assertEquals(4, superClasses.size()); List<String> superClasses1 = brain.getSuperClasses("C", true); assertEquals(1, superClasses1.size()); } @Test public void getEquivalentClassesTest() throws BrainException { List<String> equivalentClasses = brain.getEquivalentClasses("M"); assertEquals(1, equivalentClasses.size()); assertEquals("N", equivalentClasses.get(0)); } @Test(expected = ClassExpressionException.class) public void errorsWhenQueryingForLabel() throws BrainException { List<String> subClasses = brain.getSubClasses("ID01", false); assertEquals(1, subClasses.size()); @SuppressWarnings("unused") List<String> subClasses1 = brain.getSubClassesFromLabel("ID011", false); } @Test public void getSubClassesFromLabelTest() throws BrainException { List<String> subClasses = brain.getSubClassesFromLabel("animal", false); assertEquals(2, subClasses.size()); assertEquals("ID02", subClasses.get(0)); assertEquals("R", subClasses.get(1)); List<String> subClasses1 = brain.getSubClassesFromLabel("part-of some animal", false); assertEquals(2, subClasses1.size()); assertEquals("ID01", subClasses1.get(0)); } @Test public void getFromSpaceSeparatedLabels() throws BrainException { List<String> equivalents = brain.getEquivalentClassesFromLabel("'pouet pouet'"); assertEquals(1, equivalents.size()); assertEquals("A", equivalents.get(0)); } @Test public void getSuperClassesFromLabelTest() throws BrainException { List<String> superClasses = brain.getSuperClassesFromLabel("animal", false); assertEquals(1, superClasses.size()); assertEquals("Thing", superClasses.get(0)); List<String> subClasses1 = brain.getSuperClassesFromLabel("part-of some animal", false); assertEquals(1, subClasses1.size()); assertEquals("Thing", subClasses1.get(0)); } @Test public void getEquivalentClassesFromLabelTest() throws BrainException { List<String> equivalentClasses = brain.getEquivalentClassesFromLabel("pouet"); assertEquals(1, equivalentClasses.size()); assertEquals("Z", equivalentClasses.get(0)); } @Test public void getEquivalentAnonClassesTest() throws BrainException { List<String> equivalentClasses = brain.getEquivalentClasses("part-of some M"); assertEquals(1, equivalentClasses.size()); assertEquals("O", equivalentClasses.get(0)); } @Test public void isSubClassTest() throws BrainException { boolean isSubClass = brain.isSubClass("D", "Thing", false); assertEquals(true, isSubClass); boolean isSubClass1 = brain.isSubClass("Q", "part-of some K", false); assertEquals(true, isSubClass1); boolean isSubClass2 = brain.isSubClass("part-of some K", "Q", false); assertEquals(false, isSubClass2); } @Test public void isSuperClassTest() throws BrainException { boolean isSuperClass = brain.isSuperClass("Thing", "D", false); assertEquals(true, isSuperClass); boolean isSuperClass1 = brain.isSuperClass("Q", "part-of some K", false); assertEquals(false, isSuperClass1); boolean isSuperClass2 = brain.isSuperClass("part-of some K", "Q", false); assertEquals(true, isSuperClass2); } @Test public void knowsTest() { boolean knowsClass = brain.knowsClass("M"); assertEquals(true, knowsClass); boolean notknowsClass = brain.knowsClass("POUET"); assertEquals(false, notknowsClass); boolean notknowsObjectProperty = brain.knowsObjectProperty("part-of"); assertEquals(true, notknowsObjectProperty); boolean notknowsDataProperty = brain.knowsDataProperty("age"); assertEquals(false, notknowsDataProperty); boolean notknowsAnnotationProperty = brain.knowsAnnotationProperty("testing"); assertEquals(true, notknowsAnnotationProperty); } @Test public void getLabelTest() throws BrainException { String label = brain.getLabel("A"); assertEquals("pouet", label); String comment = brain.getComment("A"); assertEquals("comment attached to the class", comment); String isDefinedBy = brain.getIsDefinedBy("A"); assertEquals("something", isDefinedBy); String seeAlso = brain.getSeeAlso("A"); assertEquals("bar", seeAlso); String testing = brain.getAnnotation("A", "testing"); assertEquals("whatever", testing); } @Test public void getAnnotationArrayTest() throws BrainException { List<String> annotations = brain.getAnnotations("G", "testing"); assertEquals(2, annotations.size()); assertEquals("value2", annotations.get(0)); assertEquals("value1", annotations.get(1)); } @Test public void learnFromLocalFile() throws BrainException { Brain brain = new Brain(); brain.learn("src/test/resources/demo.owl"); brain.addClass("A"); brain.save("src/test/resources/output.owl"); } @Test(expected = ExistingClassException.class) public void learnSupportsIdenticalIRIs() throws BrainException { Brain brain = new Brain(); brain.addClass("http://www.example.org/N"); brain.learn("src/test/resources/dev.owl"); brain.addClass("M"); } @Test(expected = ExistingEntityException.class) public void learnSupportsIdenticalIRIsButNotForDifferentTypes() throws BrainException { Brain brain = new Brain(); brain.addClass("http://www.example.org/part-of"); brain.learn("src/test/resources/dev.owl"); } @Test public void learnOntologyFromTheWeb() throws BrainException { Brain brain = new Brain(); brain.learn("https://raw.github.com/loopasam/Brain/master/src/test/resources/demo.owl"); assertNotNull(brain.getOWLClass("Cell")); } @Test public void learnFromOtherBrainTest() throws BrainException { Brain brain = new Brain(); brain.addClass("A"); Brain brain1 = new Brain(); brain1.learn(brain); assertNotNull(brain1.getOWLClass("A")); } @Test(expected = ExistingEntityException.class) public void learnFromOtherBrainErrorTest() throws BrainException { Brain brain = new Brain(); brain.addClass("http://example.org/A"); brain.addClass("B"); Brain brain1 = new Brain(); brain1.addClass("A"); brain1.learn(brain); } @Test public void getTopClass() throws BrainException { Brain brain = new Brain(); assertNotNull(brain.getOWLClass("Thing")); } @Test public void getUnstatisfiableClasses() throws BrainException { List<String> unsatisfiableClasses = brain.getUnsatisfiableClasses(); assertEquals(1, unsatisfiableClasses.size()); assertEquals("R", unsatisfiableClasses.get(0)); } }