From: <lor...@us...> - 2008-12-01 11:24:18
|
Revision: 1540 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1540&view=rev Author: lorenz_b Date: 2008-12-01 11:24:10 +0000 (Mon, 01 Dec 2008) Log Message: ----------- fixed failures caused by reasoning updates Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-12-01 07:40:08 UTC (rev 1539) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -61,6 +61,7 @@ desc.setText(((EvaluatedDescription) value).getDescription().toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); //round accuracy to 2 digits double accuracy = ((EvaluatedDescription) value).getAccuracy(); + BigDecimal roundedAccuracy = new BigDecimal(accuracy * 100); roundedAccuracy = roundedAccuracy.setScale(2, BigDecimal.ROUND_HALF_UP); cor.setText(roundedAccuracy.toString()); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -0,0 +1,102 @@ +package org.dllearner.tools.ore; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URI; +import java.util.Set; + +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLException; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; + +import com.clarkparsia.explanation.PelletExplanation; +import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; + + +public class ExplanationTest { + +// private static final String file = "file:examples/ore/inconsistent.owl"; + private static final String file = "file:examples/ore/buggyPolicy.owl"; + private static final String NS = "http://cohse.semanticweb.org/ontologies/people#"; + + /** + * @param args + */ + public static void main(String[] args) { + + try { + PelletExplanation.setup(); + + // The renderer is used to pretty print explanation + ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); + // The writer used for the explanation rendered + PrintWriter out = new PrintWriter( System.out ); + renderer.startRendering( out ); + + // Create an OWLAPI manager that allows to load an ontology file and + // create OWLEntities + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntology( URI.create( file ) ); + OWLDataFactory factory = manager.getOWLDataFactory(); + + // Create the reasoner and load the ontology + Reasoner reasoner = new Reasoner( manager ); + reasoner.loadOntology( ontology ); + + // Create an explanation generator + PelletExplanation expGen = new PelletExplanation( reasoner ); + + // Create some concepts + OWLClass madCow = factory.getOWLClass( URI.create( NS + "mad+cow" ) ); + OWLClass animalLover = factory.getOWLClass( URI.create( NS + "animal+lover" ) ); + OWLClass petOwner = factory.getOWLClass( URI.create( NS + "pet+owner" ) ); + + //Explain why ontology is inconsistent + out.println( "Why is ontology inconsistent?" ); + renderer.render(expGen.getInconsistencyExplanations()); + + out.println( "unsatisfiable classes:" ); + for(OWLClass cl : reasoner.getClasses()){ + if(!reasoner.isSatisfiable(cl)){ + out.println(cl); + renderer.render(expGen.getUnsatisfiableExplanations(cl)); + } + } + + + + + // Explain why mad cow is an unsatisfiable concept + Set<Set<OWLAxiom>> exp = expGen.getUnsatisfiableExplanations( madCow ); + out.println( "Why is " + madCow + " concept unsatisfiable?" ); + renderer.render( exp ); + + // Now explain why animal lover is a sub class of pet owner + exp = expGen.getSubClassExplanations( animalLover, petOwner ); + out.println( "Why is " + animalLover + " subclass of " + petOwner + "?" ); + renderer.render( exp ); + + renderer.endRendering(); + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (UnsupportedOperationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } +} + + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-12-01 07:40:08 UTC (rev 1539) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -66,8 +66,8 @@ private PosNegDefinitionLP lp; private ComponentManager cm; - private FastInstanceChecker fastReasoner; - private OWLAPIReasoner owlReasoner; + private ReasonerComponent fastReasoner; + private ReasonerComponent owlReasoner; private SortedSet<Individual> posExamples; private SortedSet<Individual> negExamples; @@ -85,9 +85,9 @@ public ORE() { - + cm = ComponentManager.getInstance(); - + } // step 1: detect knowledge sources @@ -141,7 +141,7 @@ modifier = new OntologyModifier(owlReasoner, rs); baseURI = fastReasoner.getBaseURI(); prefixes = fastReasoner.getPrefixes(); - + } /** @@ -155,9 +155,10 @@ public void setPosNegExamples(){ - posExamples = rs.getIndividuals(classToLearn); - negExamples = rs.getIndividuals(); + posExamples = owlReasoner.getIndividuals(classToLearn); + negExamples = owlReasoner.getIndividuals(); + for (Individual pos : posExamples){ negExamples.remove(pos); } @@ -182,11 +183,11 @@ return prefixes; } - public OWLAPIReasoner getOwlReasoner() { + public ReasonerComponent getOwlReasoner() { return owlReasoner; } - public FastInstanceChecker getFastReasoner() { + public ReasonerComponent getFastReasoner() { return fastReasoner; } @@ -470,8 +471,8 @@ */ public Set<NamedClass> getpossibleClassesMoveTo(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : rs.getNamedClasses()){ - if(!rs.hasType(nc, ind)){ + for(NamedClass nc : owlReasoner.getNamedClasses()){ + if(!owlReasoner.hasType(nc, ind)){ moveClasses.add(nc); } } @@ -487,8 +488,8 @@ */ public Set<NamedClass> getpossibleClassesMoveFrom(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : rs.getNamedClasses()){ - if(rs.hasType(nc, ind)){ + for(NamedClass nc : owlReasoner.getNamedClasses()){ + if(owlReasoner.hasType(nc, ind)){ moveClasses.add(nc); } } @@ -541,9 +542,34 @@ return complements; } + + + + public static void main(String[] args){ + final ORE test = new ORE(); + + File owlFile1 = new File("examples/ore/people+pets.owl"); + File owlFile2 = new File("examples/ore/inconsistent.owl"); + File owlFile3 = new File("examples/ore/incohaerent.owl"); + + test.setKnowledgeSource(owlFile1); + test.initReasoners(); + System.out.println(test.owlReasoner.isSatisfiable()); + + test.setKnowledgeSource(owlFile2); + test.initReasoners(); + System.out.println(test.owlReasoner.isSatisfiable()); + + test.setKnowledgeSource(owlFile3); + test.initReasoners(); + System.out.println(test.owlReasoner.isSatisfiable()); + + + + + } } - // public static void main(String[] args){ // // final ORE test = new ORE(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-12-01 07:40:08 UTC (rev 1539) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -75,17 +75,17 @@ public class OntologyModifier { private OWLOntology ontology; - private OWLAPIReasoner reasoner; + private ReasonerComponent reasoner; private OWLDataFactory factory; private OWLOntologyManager manager; private ReasonerComponent rs; - public OntologyModifier(OWLAPIReasoner reasoner, ReasonerComponent rs){ + public OntologyModifier(ReasonerComponent reasoner, ReasonerComponent rs){ this.reasoner = reasoner; this.manager = OWLManager.createOWLOntologyManager(); this.factory = manager.getOWLDataFactory(); - this.ontology = reasoner.getOWLAPIOntologies().get(0); + this.ontology = ((OWLAPIReasoner)reasoner).getOWLAPIOntologies().get(0); this.rs = rs; } @@ -595,7 +595,7 @@ } OWLDebugger debugger = new BlackBoxOWLDebugger(manager, ontology, checker); - for(OWLClass owlClass : reasoner.getInconsistentOWLClasses()){ + for(OWLClass owlClass : ((OWLAPIReasoner)reasoner).getInconsistentOWLClasses()){ /* Find the sets of support and print them */ Set<Set<OWLAxiom>> allsos = null; try { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-12-01 07:40:08 UTC (rev 1539) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -282,8 +282,8 @@ wizard.getModel().getOre().initReasoners(); - Set<NamedClass> ind = wizard.getModel().getOre() - .getReasonerComponent().getNamedClasses(); + Set<NamedClass> ind = wizard.getModel().getOre().getOwlReasoner().getNamedClasses(); + return ind; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |