From: <Jen...@us...> - 2008-05-13 14:17:49
|
Revision: 835 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=835&view=rev Author: JensLehmann Date: 2008-05-13 07:17:32 -0700 (Tue, 13 May 2008) Log Message: ----------- fixed cardinality restriction bugs in fast instance checker Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-13 13:45:10 UTC (rev 834) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-05-13 14:17:32 UTC (rev 835) @@ -1069,8 +1069,11 @@ public void printBestSolutions(int nrOfSolutions){ - if(!logger.getLevel().toString().equalsIgnoreCase("TRACE"))return; - if(nrOfSolutions==0)nrOfSolutions=candidatesStable.size(); + if(!logger.isTraceEnabled()) + return; +// if(!logger.getLevel().toString().equalsIgnoreCase("TRACE"))return; + if(nrOfSolutions==0) + nrOfSolutions=candidatesStable.size(); int i=0; for(ExampleBasedNode n : candidatesStable.descendingSet()) { logger.trace(n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-05-13 13:45:10 UTC (rev 834) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-05-13 14:17:32 UTC (rev 835) @@ -337,6 +337,9 @@ int nrOfFillers = 0; SortedSet<Individual> roleFillers = opPos.get(op).get(individual); + // special case: there are always at least zero fillers + if(number == 0) + return true; // return false if there are none or not enough role fillers if (roleFillers == null || roleFillers.size() < number) return false; @@ -372,19 +375,21 @@ } int number = ((ObjectCardinalityRestriction) description).getNumber(); - int nrOfFillers = 0; + int nrOfFillers = 0; SortedSet<Individual> roleFillers = opPos.get(op).get(individual); - // return false if there are none or not enough role fillers - if (roleFillers == null || roleFillers.size() > number) + // return true if there are none or not enough role fillers + if (roleFillers == null || roleFillers.size() < number) return true; +// System.out.println(description + " " + individual); + int index = 0; for (Individual roleFiller : roleFillers) { index++; if (instanceCheck(child, roleFiller)) { nrOfFillers++; - if(nrOfFillers == number) + if(nrOfFillers > number) return false; // earyl abort: e.g. <= 5 hasStructure.Methyl; // if there are 6 fillers and 2 are not Methyl, the result is true This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |