From: <jen...@us...> - 2008-02-19 13:20:08
|
Revision: 610 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=610&view=rev Author: jenslehmann Date: 2008-02-19 05:20:01 -0800 (Tue, 19 Feb 2008) Log Message: ----------- extended jUnit reasoner test and fixed a bug which it revealed Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/KB.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java trunk/src/dl-learner/org/dllearner/test/junit/AllTestsRunner.java trunk/src/dl-learner/org/dllearner/test/junit/ReasonerTests.java Modified: trunk/src/dl-learner/org/dllearner/core/owl/KB.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/KB.java 2008-02-19 12:05:53 UTC (rev 609) +++ trunk/src/dl-learner/org/dllearner/core/owl/KB.java 2008-02-19 13:20:01 UTC (rev 610) @@ -106,6 +106,7 @@ for(String name : conceptNames) { ret.add(new NamedClass(name)); } + return ret; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-02-19 12:05:53 UTC (rev 609) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-02-19 13:20:01 UTC (rev 610) @@ -21,10 +21,6 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.OutputStream; import java.nio.charset.Charset; import java.util.Iterator; import java.util.List; Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-02-19 12:05:53 UTC (rev 609) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-02-19 13:20:01 UTC (rev 610) @@ -118,9 +118,9 @@ private Set<Description> allowedConceptsInSubsumptionHierarchy; // primitives - Set<NamedClass> atomicConcepts; - Set<ObjectProperty> atomicRoles; - SortedSet<Individual> individuals; + Set<NamedClass> atomicConcepts = new TreeSet<NamedClass>(conceptComparator); + Set<ObjectProperty> atomicRoles = new TreeSet<ObjectProperty>(roleComparator); + SortedSet<Individual> individuals = new TreeSet<Individual>(); public OWLAPIReasoner(Set<KnowledgeSource> sources) { this.sources = sources; @@ -179,9 +179,6 @@ allImports.addAll(manager.getImportsClosure(ontology)); classes.addAll(ontology.getReferencedClasses()); properties.addAll(ontology.getReferencedObjectProperties()); - // does not seem to work => workaround: query all instances of Top - // maybe one can also query for instances of OWLObjectProperty, - // OWLClass, OWLIndividual owlIndividuals.addAll(ontology.getReferencedIndividuals()); } catch (OWLOntologyCreationException e) { e.printStackTrace(); @@ -192,6 +189,8 @@ // OWL API ontology } else { KB kb = source.toKB(); +// System.out.println(kb.toString(null,null)); + URI ontologyURI = URI.create("http://example.com"); OWLOntology ontology = null; try { @@ -200,6 +199,10 @@ e.printStackTrace(); } OWLAPIAxiomConvertVisitor.fillOWLOntology(manager, ontology, kb); + allImports.add(ontology); + atomicConcepts.addAll(kb.findAllAtomicConcepts()); + atomicRoles.addAll(kb.findAllAtomicRoles()); + individuals.addAll(kb.findAllIndividuals()); } } @@ -214,6 +217,8 @@ // instantiate Pellet reasoner reasoner = new org.mindswap.pellet.owlapi.Reasoner(manager); + // change log level to WARN for Pellet, because otherwise log + // output will be very large Logger pelletLogger = Logger.getLogger("org.mindswap.pellet"); pelletLogger.setLevel(Level.WARN); } @@ -257,13 +262,10 @@ // } // read in primitives - atomicConcepts = new TreeSet<NamedClass>(conceptComparator); for(OWLClass owlClass : classes) atomicConcepts.add(new NamedClass(owlClass.getURI().toString())); - atomicRoles = new TreeSet<ObjectProperty>(roleComparator); for(OWLObjectProperty owlProperty : properties) atomicRoles.add(new ObjectProperty(owlProperty.getURI().toString())); - individuals = new TreeSet<Individual>(); for(OWLIndividual owlIndividual : owlIndividuals) individuals.add(new Individual(owlIndividual.getURI().toString())); Modified: trunk/src/dl-learner/org/dllearner/test/junit/AllTestsRunner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/AllTestsRunner.java 2008-02-19 12:05:53 UTC (rev 609) +++ trunk/src/dl-learner/org/dllearner/test/junit/AllTestsRunner.java 2008-02-19 13:20:01 UTC (rev 610) @@ -19,6 +19,10 @@ */ package org.dllearner.test.junit; +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; import org.junit.runner.JUnitCore; /** @@ -33,6 +37,15 @@ public class AllTestsRunner { public static void main(String[] args) { + + // create logger + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + Logger logger = Logger.getRootLogger(); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.INFO); + JUnitCore.main("org.dllearner.test.junit.ComponentTests", "org.dllearner.test.junit.ReasonerTests"); } Modified: trunk/src/dl-learner/org/dllearner/test/junit/ReasonerTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ReasonerTests.java 2008-02-19 12:05:53 UTC (rev 609) +++ trunk/src/dl-learner/org/dllearner/test/junit/ReasonerTests.java 2008-02-19 13:20:01 UTC (rev 610) @@ -20,7 +20,9 @@ package org.dllearner.test.junit; import java.io.IOException; +import java.util.List; +import org.apache.log4j.Logger; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; import org.dllearner.core.KnowledgeSource; @@ -32,7 +34,6 @@ import org.dllearner.kb.KBFile; import org.dllearner.parser.KBParser; import org.dllearner.parser.ParseException; -import org.dllearner.reasoning.OWLAPIReasoner; import org.junit.Test; import static org.junit.Assert.*; @@ -45,10 +46,18 @@ */ public class ReasonerTests { + private static Logger logger = Logger.getLogger(ReasonerTests.class); + private KB getSimpleKnowledgeBase() { String kb = "person SUB TOP."; kb += "man SUB person."; + kb += "man SUB male."; kb += "woman SUB person."; + kb += "woman SUB female."; + kb += "(male AND female) = BOTTOM."; + kb += "man(stephen)."; + kb += "woman(maria)."; + kb += "hasChild(stephen,maria)."; KB kbObject = null; try { kbObject = KBParser.parseKBFile(kb); @@ -60,6 +69,10 @@ return kbObject; } + /** + * Performs an instance checks on all reasoner components to verify that + * they all return the correct result. + */ @Test public void instanceCheckTest() { try { @@ -67,13 +80,18 @@ KB kb = getSimpleKnowledgeBase(); KnowledgeSource ks = new KBFile(kb); ks.init(); - ReasonerComponent reasoner = cm.reasoner(OWLAPIReasoner.class, ks); - reasoner.init(); Description d; - d = KBParser.parseConcept("man"); - Individual i = new Individual("alex"); - boolean result = reasoner.instanceCheck(d, i); - assertFalse(result); + // d = KBParser.parseConcept("man"); + d = KBParser.parseConcept("(person AND EXISTS hasChild.female)"); + Individual i = new Individual(KBParser.getInternalURI("stephen")); + List<Class<? extends ReasonerComponent>> reasonerClasses = cm.getReasonerComponents(); + for (Class<? extends ReasonerComponent> reasonerClass : reasonerClasses) { + ReasonerComponent reasoner = cm.reasoner(reasonerClass, ks); + reasoner.init(); + boolean result = reasoner.instanceCheck(d, i); + logger.debug("instance check: " + reasoner + " " + d + " " + i + " " + result); + assertTrue(result); + } } catch (ParseException e) { e.printStackTrace(); } catch (ReasoningMethodUnsupportedException e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |