From: <jen...@us...> - 2009-12-29 10:05:24
|
Revision: 1959 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1959&view=rev Author: jenslehmann Date: 2009-12-29 10:05:16 +0000 (Tue, 29 Dec 2009) Log Message: ----------- included check for equivalence of classes in reasoner interface Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/core/SchemaReasoner.java trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2009-12-28 13:15:27 UTC (rev 1958) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2009-12-29 10:05:16 UTC (rev 1959) @@ -243,6 +243,26 @@ } @Override + public final boolean isEquivalentClass(Description class1, Description class2) { + reasoningStartTimeTmp = System.nanoTime(); + boolean result = false; + try { + result = isEquivalentClassImpl(class1, class2); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + } + nrOfSubsumptionChecks+=2; + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + subsumptionReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + protected boolean isEquivalentClassImpl(Description class1, Description class2) throws ReasoningMethodUnsupportedException { + return isSuperClassOfImpl(class1,class2) && isSuperClassOfImpl(class2,class1); + } + + @Override public final Set<Description> isSuperClassOf(Set<Description> superConcepts, Description subConcept) { reasoningStartTimeTmp = System.nanoTime(); Modified: trunk/src/dl-learner/org/dllearner/core/SchemaReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/SchemaReasoner.java 2009-12-28 13:15:27 UTC (rev 1958) +++ trunk/src/dl-learner/org/dllearner/core/SchemaReasoner.java 2009-12-29 10:05:16 UTC (rev 1959) @@ -86,6 +86,14 @@ public boolean isSuperClassOf(Description superClass, Description subClass); /** + * Checks whether <code>class1</code> is equivalent to <code>class2</code>. + * @param class1 The first class. + * @param class2 The second class2. + * @return Whether <code>class1</code> is equivalent to <code>class2</code>. + */ + public boolean isEquivalentClass(Description class1, Description class2); + + /** * Checks which of <code>superClasses</code> are super classes of <code>subClass</code> * @param superClasses A set of (supposed) super classes. * @param subClasses The (supposed) sub class. Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2009-12-28 13:15:27 UTC (rev 1958) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2009-12-29 10:05:16 UTC (rev 1959) @@ -245,8 +245,10 @@ if(configurator.getCheckConsistency()) { // we check whether the axiom already follows from the knowledge base - boolean followsFromKB = reasoner.isSuperClassOf(description, classToDescribe); +// boolean followsFromKB = reasoner.isSuperClassOf(description, classToDescribe); + boolean followsFromKB = equivalence ? reasoner.isEquivalentClass(description, classToDescribe) : reasoner.isSuperClassOf(description, classToDescribe); + // workaround due to a bug (see http://sourceforge.net/tracker/?func=detail&aid=2866610&group_id=203619&atid=986319) // boolean isConsistent = coverage >= 0.999999 || isConsistent(description); // (if the axiom follows, then the knowledge base remains consistent) Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2009-12-28 13:15:27 UTC (rev 1958) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2009-12-29 10:05:16 UTC (rev 1959) @@ -508,6 +508,16 @@ } @Override + public boolean isEquivalentClassImpl(Description class1, Description class2) { + try { + return reasoner.isEquivalentClass(OWLAPIDescriptionConvertVisitor.getOWLDescription(class1), OWLAPIDescriptionConvertVisitor.getOWLDescription(class2)); + } catch (OWLReasonerException e) { + e.printStackTrace(); + throw new Error("Equivalent Classes Reasoning Error in OWL API."); + } + } + + @Override protected TreeSet<Description> getSuperClassesImpl(Description concept) { Set<Set<OWLClass>> classes = null; try { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |