From: <jen...@us...> - 2012-07-12 11:14:59
|
Revision: 3782 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3782&view=rev Author: jenslehmann Date: 2012-07-12 11:14:47 +0000 (Thu, 12 Jul 2012) Log Message: ----------- - abstracted hard dependency of CELOE on rho refinement operator - split up refinement operators into multiple interfaces describing their capabilities Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELRefinementOperatorFactory.java trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELRefinementOperatorPool.java trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELWorker.java trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELWorkerMat.java trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/CELOE.java trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/PCELOE.java trunk/components-core/src/main/java/org/dllearner/algorithms/fuzzydll/FuzzyCELOE.java trunk/components-core/src/main/java/org/dllearner/algorithms/isle/ISLE.java trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/OperatorInverter.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/RefinementOperator.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/RefinementOperatorAdapter.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/RhoDRDown.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/SynchronizedRhoDRDown.java trunk/components-core/src/test/java/org/dllearner/test/junit/RefinementOperatorTests.java trunk/interfaces/src/main/java/org/dllearner/cli/CLI.java Added Paths: ----------- trunk/components-core/src/main/java/org/dllearner/refinementoperators/CustomHierarchyRefinementOperator.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/CustomStartRefinementOperator.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/ExampleOperator.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/LengthLimitedRefinementOperator.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/ReasoningBasedRefinementOperator.java Removed Paths: ------------- trunk/components-core/src/main/java/nz/ac/ Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELRefinementOperatorFactory.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELRefinementOperatorFactory.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELRefinementOperatorFactory.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -15,10 +15,11 @@ import org.dllearner.core.owl.ClassHierarchy; import org.dllearner.core.owl.DatatypeProperty; import org.dllearner.core.owl.Description; +import org.dllearner.refinementoperators.LengthLimitedRefinementOperator; import org.dllearner.refinementoperators.RefinementOperator; import org.dllearner.refinementoperators.RhoDRDown2008; -public class ParCELRefinementOperatorFactory extends BasePoolableObjectFactory<RefinementOperator> { +public class ParCELRefinementOperatorFactory extends BasePoolableObjectFactory<LengthLimitedRefinementOperator> { private AbstractReasonerComponent reasoner; private ClassHierarchy classHierarchy; @@ -63,7 +64,7 @@ } @Override - public RefinementOperator makeObject() throws Exception { + public LengthLimitedRefinementOperator makeObject() throws Exception { //clone a new class heirarchy to avoid the competition between refinement operators ClassHierarchy clonedClassHierarchy = this.classHierarchy.clone(); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELRefinementOperatorPool.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELRefinementOperatorPool.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELRefinementOperatorPool.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -9,6 +9,7 @@ import org.dllearner.core.owl.ClassHierarchy; import org.dllearner.core.owl.DatatypeProperty; import org.dllearner.core.owl.Description; +import org.dllearner.refinementoperators.LengthLimitedRefinementOperator; import org.dllearner.refinementoperators.RefinementOperator; /** @@ -17,7 +18,7 @@ * @author An C. Tran * */ -public class ParCELRefinementOperatorPool extends StackObjectPool<RefinementOperator> { +public class ParCELRefinementOperatorPool extends StackObjectPool<LengthLimitedRefinementOperator> { /** * Create refinement operator pool given max number of idle object without splitter Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELWorker.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELWorker.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELWorker.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -7,6 +7,7 @@ import org.apache.log4j.Logger; import org.dllearner.core.owl.Description; +import org.dllearner.refinementoperators.LengthLimitedRefinementOperator; import org.dllearner.refinementoperators.RefinementOperator; /** @@ -23,7 +24,7 @@ // refinement operator used in refinement private ParCELRefinementOperatorPool refinementOperatorPool; - private RefinementOperator refinementOperator; + private LengthLimitedRefinementOperator refinementOperator; // reducer, used to make the callback to pass the result and get the next description for // processing @@ -93,7 +94,7 @@ * @param name * Name of the worker, assigned by reduce (for tracing purpose only) */ - public ParCELWorker(ParCELearner learner, RefinementOperator refinementOperator, + public ParCELWorker(ParCELearner learner, LengthLimitedRefinementOperator refinementOperator, ParCELPosNegLP learningProblem, ParCELNode nodeToProcess, String name) { super(); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELWorkerMat.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELWorkerMat.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/ParCEL/ParCELWorkerMat.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -8,6 +8,7 @@ import org.apache.log4j.Logger; import org.dllearner.core.owl.Description; +import org.dllearner.refinementoperators.LengthLimitedRefinementOperator; import org.dllearner.refinementoperators.RefinementOperator; /** @@ -24,7 +25,7 @@ // refinement operator used in refinement private ParCELRefinementOperatorPool refinementOperatorPool; - private RefinementOperator refinementOperator; + private LengthLimitedRefinementOperator refinementOperator; // reducer, used to make the callback to pass the result and get the next description for // processing @@ -96,7 +97,7 @@ * @param name * Name of the worker, assigned by reduce (for tracing purpose only) */ - public ParCELWorkerMat(ParCELearnerMat learner, RefinementOperator refinementOperator, + public ParCELWorkerMat(ParCELearnerMat learner, LengthLimitedRefinementOperator refinementOperator, ParCELPosNegLP learningProblem, ParCELNode nodeToProcess, String name) { super(); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/CELOE.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/CELOE.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/CELOE.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -51,7 +51,11 @@ import org.dllearner.learningproblems.PosNegLPStandard; import org.dllearner.learningproblems.PosOnlyLP; import org.dllearner.reasoning.FastInstanceChecker; +import org.dllearner.refinementoperators.CustomHierarchyRefinementOperator; +import org.dllearner.refinementoperators.CustomStartRefinementOperator; +import org.dllearner.refinementoperators.LengthLimitedRefinementOperator; import org.dllearner.refinementoperators.OperatorInverter; +import org.dllearner.refinementoperators.ReasoningBasedRefinementOperator; import org.dllearner.refinementoperators.RefinementOperator; import org.dllearner.refinementoperators.RhoDRDown; import org.dllearner.utilities.Files; @@ -86,7 +90,7 @@ // private OEHeuristicStable heuristicStable = new OEHeuristicStable(); // private OEHeuristicRuntime heuristicRuntime = new OEHeuristicRuntime(); - private RefinementOperator operator; + private LengthLimitedRefinementOperator operator; private DescriptionMinimizer minimizer; @ConfigOption(name="useMinimizer", defaultValue="true", description="Specifies whether returned expressions should be minimised by removing those parts, which are not needed. (Basically the minimiser tries to find the shortest expression which is equivalent to the learned expression). Turning this feature off may improve performance.") private boolean useMinimizer = true; @@ -282,16 +286,20 @@ if(operator == null) { // we use a default operator and inject the class hierarchy for now operator = new RhoDRDown(); - ((RhoDRDown)operator).setStartClass(startClass); - ((RhoDRDown)operator).setReasoner(reasoner); - ((RhoDRDown)operator).init(); + if(operator instanceof CustomStartRefinementOperator) { + ((CustomStartRefinementOperator)operator).setStartClass(startClass); + } + if(operator instanceof ReasoningBasedRefinementOperator) { + ((ReasoningBasedRefinementOperator)operator).setReasoner(reasoner); + } + operator.init(); } - // TODO: find a better solution as this is quite difficult to debug - ((RhoDRDown)operator).setSubHierarchy(classHierarchy); - ((RhoDRDown)operator).setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); - ((RhoDRDown)operator).setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); + if(operator instanceof CustomHierarchyRefinementOperator) { + ((CustomHierarchyRefinementOperator)operator).setClassHierarchy(classHierarchy); + ((CustomHierarchyRefinementOperator)operator).setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); + ((CustomHierarchyRefinementOperator)operator).setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); + } - // operator = new RhoDRDown(reasoner, classHierarchy, startClass, configurator); baseURI = reasoner.getBaseURI(); prefixes = reasoner.getPrefixes(); @@ -347,8 +355,11 @@ LinkedList<Description> startClassCandidates = new LinkedList<Description>(); startClassCandidates.add(existingDefinition); - ((RhoDRDown)operator).setDropDisjuncts(true); - RefinementOperator upwardOperator = new OperatorInverter(operator); + // hack for RhoDRDown + if(operator instanceof RhoDRDown) { + ((RhoDRDown)operator).setDropDisjuncts(true); + } + LengthLimitedRefinementOperator upwardOperator = (LengthLimitedRefinementOperator) new OperatorInverter(operator); // use upward refinement until we find an appropriate start class boolean startClassFound = false; @@ -380,7 +391,9 @@ // System.out.println("existing def: " + existingDefinition); // System.out.println(reasoner.getIndividuals(existingDefinition)); - ((RhoDRDown)operator).setDropDisjuncts(false); + if(operator instanceof RhoDRDown) { + ((RhoDRDown)operator).setDropDisjuncts(false); + } } else { Set<Description> superClasses = reasoner.getClassHierarchy().getSuperClasses(classToDescribe); @@ -898,12 +911,12 @@ return expressionTests; } - public RefinementOperator getOperator() { + public LengthLimitedRefinementOperator getOperator() { return operator; } @Autowired(required=false) - public void setOperator(RefinementOperator operator) { + public void setOperator(LengthLimitedRefinementOperator operator) { this.operator = operator; } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/PCELOE.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/PCELOE.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/celoe/PCELOE.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -63,7 +63,11 @@ import org.dllearner.learningproblems.PosNegLPStandard; import org.dllearner.learningproblems.PosOnlyLP; import org.dllearner.reasoning.FastInstanceChecker; +import org.dllearner.refinementoperators.CustomHierarchyRefinementOperator; +import org.dllearner.refinementoperators.CustomStartRefinementOperator; +import org.dllearner.refinementoperators.LengthLimitedRefinementOperator; import org.dllearner.refinementoperators.OperatorInverter; +import org.dllearner.refinementoperators.ReasoningBasedRefinementOperator; import org.dllearner.refinementoperators.RefinementOperator; import org.dllearner.refinementoperators.RhoDRDown; import org.dllearner.refinementoperators.SynchronizedRhoDRDown; @@ -99,7 +103,7 @@ // private OEHeuristicStable heuristicStable = new OEHeuristicStable(); // private OEHeuristicRuntime heuristicRuntime = new OEHeuristicRuntime(); - private RefinementOperator operator; + private LengthLimitedRefinementOperator operator; private DescriptionMinimizer minimizer; @ConfigOption(name="useMinimizer", defaultValue="true", description="Specifies whether returned expressions should be minimised by removing those parts, which are not needed. (Basically the minimiser tries to find the shortest expression which is equivalent to the learned expression). Turning this feature off may improve performance.") private boolean useMinimizer = true; @@ -297,16 +301,20 @@ if(operator == null) { // we use a default operator and inject the class hierarchy for now operator = new SynchronizedRhoDRDown(); - ((SynchronizedRhoDRDown)operator).setStartClass(startClass); - ((SynchronizedRhoDRDown)operator).setReasoner(reasoner); - ((SynchronizedRhoDRDown)operator).init(); + if(operator instanceof CustomStartRefinementOperator) { + ((CustomStartRefinementOperator)operator).setStartClass(startClass); + } + if(operator instanceof ReasoningBasedRefinementOperator) { + ((ReasoningBasedRefinementOperator)operator).setReasoner(reasoner); + } + operator.init(); } - // TODO: find a better solution as this is quite difficult to debug - ((SynchronizedRhoDRDown)operator).setSubHierarchy(classHierarchy); - ((SynchronizedRhoDRDown)operator).setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); - ((SynchronizedRhoDRDown)operator).setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); + if(operator instanceof CustomHierarchyRefinementOperator) { + ((CustomHierarchyRefinementOperator)operator).setClassHierarchy(classHierarchy); + ((CustomHierarchyRefinementOperator)operator).setObjectPropertyHierarchy(reasoner.getObjectPropertyHierarchy()); + ((CustomHierarchyRefinementOperator)operator).setDataPropertyHierarchy(reasoner.getDatatypePropertyHierarchy()); + } - // operator = new RhoDRDown(reasoner, classHierarchy, startClass, configurator); baseURI = reasoner.getBaseURI(); prefixes = reasoner.getPrefixes(); @@ -362,8 +370,10 @@ LinkedList<Description> startClassCandidates = new LinkedList<Description>(); startClassCandidates.add(existingDefinition); - ((RhoDRDown)operator).setDropDisjuncts(true); - RefinementOperator upwardOperator = new OperatorInverter(operator); + if(operator instanceof RhoDRDown) { + ((RhoDRDown)operator).setDropDisjuncts(true); + } + LengthLimitedRefinementOperator upwardOperator = (LengthLimitedRefinementOperator) new OperatorInverter(operator); // use upward refinement until we find an appropriate start class boolean startClassFound = false; @@ -395,7 +405,9 @@ // System.out.println("existing def: " + existingDefinition); // System.out.println(reasoner.getIndividuals(existingDefinition)); - ((RhoDRDown)operator).setDropDisjuncts(false); + if(operator instanceof RhoDRDown) { + ((RhoDRDown)operator).setDropDisjuncts(false); + } } else { Set<Description> superClasses = reasoner.getClassHierarchy().getSuperClasses(classToDescribe); @@ -877,7 +889,7 @@ } @Autowired(required=false) - public void setOperator(RefinementOperator operator) { + public void setOperator(LengthLimitedRefinementOperator operator) { this.operator = operator; } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/fuzzydll/FuzzyCELOE.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/fuzzydll/FuzzyCELOE.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/fuzzydll/FuzzyCELOE.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -56,6 +56,7 @@ import org.dllearner.learningproblems.PosNegLP; import org.dllearner.learningproblems.PosNegLPStandard; import org.dllearner.learningproblems.PosOnlyLP; +import org.dllearner.refinementoperators.LengthLimitedRefinementOperator; import org.dllearner.refinementoperators.OperatorInverter; import org.dllearner.refinementoperators.RefinementOperator; import org.dllearner.refinementoperators.RhoDRDown; @@ -91,7 +92,7 @@ // private OEHeuristicStable heuristicStable = new OEHeuristicStable(); // private OEHeuristicRuntime heuristicRuntime = new OEHeuristicRuntime(); - private RefinementOperator operator; + private LengthLimitedRefinementOperator operator; private DescriptionMinimizer minimizer; // all nodes in the search tree (used for selecting most promising node) @@ -332,7 +333,7 @@ LinkedList<Description> startClassCandidates = new LinkedList<Description>(); startClassCandidates.add(existingDefinition); ((RhoDRDown)operator).setDropDisjuncts(true); - RefinementOperator upwardOperator = new OperatorInverter(operator); + LengthLimitedRefinementOperator upwardOperator = (LengthLimitedRefinementOperator) new OperatorInverter(operator); // use upward refinement until we find an appropriate start class boolean startClassFound = false; @@ -926,7 +927,7 @@ } @Autowired(required=false) - public void setOperator(RefinementOperator operator) { + public void setOperator(LengthLimitedRefinementOperator operator) { this.operator = operator; } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/isle/ISLE.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/ISLE.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/isle/ISLE.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -51,6 +51,7 @@ import org.dllearner.learningproblems.PosNegLP; import org.dllearner.learningproblems.PosNegLPStandard; import org.dllearner.learningproblems.PosOnlyLP; +import org.dllearner.refinementoperators.LengthLimitedRefinementOperator; import org.dllearner.refinementoperators.OperatorInverter; import org.dllearner.refinementoperators.RefinementOperator; import org.dllearner.refinementoperators.RhoDRDown; @@ -80,7 +81,7 @@ // private OEHeuristicStable heuristicStable = new OEHeuristicStable(); // private OEHeuristicRuntime heuristicRuntime = new OEHeuristicRuntime(); - private RefinementOperator operator; + private LengthLimitedRefinementOperator operator; private DescriptionMinimizer minimizer; // all nodes in the search tree (used for selecting most promising node) @@ -246,7 +247,7 @@ LinkedList<Description> startClassCandidates = new LinkedList<Description>(); startClassCandidates.add(existingDefinition); ((RhoDRDown)operator).setDropDisjuncts(true); - RefinementOperator upwardOperator = new OperatorInverter(operator); + LengthLimitedRefinementOperator upwardOperator = (LengthLimitedRefinementOperator) new OperatorInverter(operator); // use upward refinement until we find an appropriate start class boolean startClassFound = false; Modified: trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -92,6 +92,8 @@ "org.dllearner.algorithms.celoe.OEHeuristicRuntime", "org.dllearner.refinementoperators.RhoDRDown", "org.dllearner.refinementoperators.SynchronizedRhoDRDown", + // just for testing + "org.dllearner.refinementoperators.ExampleOperator", } )); private static Collection<Class<? extends Component>> components; private static BidiMap<Class<? extends Component>, String> componentNames; Added: trunk/components-core/src/main/java/org/dllearner/refinementoperators/CustomHierarchyRefinementOperator.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/CustomHierarchyRefinementOperator.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/CustomHierarchyRefinementOperator.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -0,0 +1,43 @@ +/** + * Copyright (C) 2007-2012, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package org.dllearner.refinementoperators; + +import org.dllearner.core.owl.ClassHierarchy; +import org.dllearner.core.owl.DatatypePropertyHierarchy; +import org.dllearner.core.owl.ObjectPropertyHierarchy; + + +/** + * + * A refinement operator for which hierarchies other those of the + * reasoner can be injected. Using those hierarchies means that only classes + * from the hierarchies should occur in refinements. + * + * @author Jens Lehmann + * + */ +public interface CustomHierarchyRefinementOperator extends RefinementOperator { + + public void setClassHierarchy(ClassHierarchy classHierarchy); + + public void setObjectPropertyHierarchy(ObjectPropertyHierarchy objectPropertyHierarchy); + + public void setDataPropertyHierarchy(DatatypePropertyHierarchy dataPropertyHierarchy); + +} Added: trunk/components-core/src/main/java/org/dllearner/refinementoperators/CustomStartRefinementOperator.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/CustomStartRefinementOperator.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/CustomStartRefinementOperator.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -0,0 +1,33 @@ +/** + * Copyright (C) 2007-2012, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package org.dllearner.refinementoperators; + +import org.dllearner.core.owl.Description; + +/** + * A refinement operator, which allows to set a start class. + * + * @author Jens Lehmann + * + */ +public interface CustomStartRefinementOperator extends RefinementOperator { + + public void setStartClass(Description description); + +} Added: trunk/components-core/src/main/java/org/dllearner/refinementoperators/ExampleOperator.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/ExampleOperator.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/ExampleOperator.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -0,0 +1,40 @@ +package org.dllearner.refinementoperators; + +import java.util.List; +import java.util.Set; +import java.util.TreeSet; + +import org.dllearner.core.ComponentAnn; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.owl.Description; + +/** + * Example refinement operator. + * + * @author Jens Lehmann + * + */ +@ComponentAnn(name = "example refinement operator", shortName = "exop", version = 0.8) +public class ExampleOperator implements LengthLimitedRefinementOperator { + + @Override + public void init() throws ComponentInitException { + } + + @Override + public Set<Description> refine(Description description) { + return new TreeSet<Description>(); + } + + @Override + public Set<Description> refine(Description description, int maxLength) { + return refine(description); + } + + @Override + public Set<Description> refine(Description description, int maxLength, + List<Description> knownRefinements) { + return refine(description); + } + +} Added: trunk/components-core/src/main/java/org/dllearner/refinementoperators/LengthLimitedRefinementOperator.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/LengthLimitedRefinementOperator.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/LengthLimitedRefinementOperator.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -0,0 +1,57 @@ +/** + * Copyright (C) 2007-2012, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package org.dllearner.refinementoperators; + +import java.util.List; +import java.util.Set; + +import org.dllearner.core.owl.Description; + +/** + * A refinement operator for which the syntactic length of the generated + * refinements can be limited. + * + * @author Jens Lehmann + * + */ +public interface LengthLimitedRefinementOperator extends RefinementOperator { + + /** + * Optional refinement operation, where the learning algorithm can + * specify an additional bound on the length of descriptions. + * + * @param description The description, which will be refined. + * @param maxLength The maximum length of returned description, where length is defined by {@link Description#getLength()}. + * @return A set of refinements obeying the above restrictions. + */ + public Set<Description> refine(Description description, int maxLength); + + /** + * Optional refinement operation, where the learning algorithm can + * specify an additional bound on the length of descriptions and + * a list of known refinements, which do not need to be returned. + * + * @param description The description, which will be refined. + * @param maxLength The maximum length of returned description, where length is defined by {@link Description#getLength()}. + * @param knownRefinements A collection of known refinements, which do not need to be returned. + * @return A set of refinements obeying the above restrictions. + */ + public Set<Description> refine(Description description, int maxLength, List<Description> knownRefinements); + +} Modified: trunk/components-core/src/main/java/org/dllearner/refinementoperators/OperatorInverter.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/OperatorInverter.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/OperatorInverter.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -37,14 +37,14 @@ * @author Jens Lehmann * */ -public class OperatorInverter implements RefinementOperator { +public class OperatorInverter implements LengthLimitedRefinementOperator { - private RefinementOperator operator; + private LengthLimitedRefinementOperator operator; private ConceptComparator cc = new ConceptComparator(); private boolean useNegationNormalForm = true; private boolean guaranteeLength = true; - public OperatorInverter(RefinementOperator operator) { + public OperatorInverter(LengthLimitedRefinementOperator operator) { this.operator = operator; } Added: trunk/components-core/src/main/java/org/dllearner/refinementoperators/ReasoningBasedRefinementOperator.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/ReasoningBasedRefinementOperator.java (rev 0) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/ReasoningBasedRefinementOperator.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -0,0 +1,34 @@ +/** + * Copyright (C) 2007-2012, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package org.dllearner.refinementoperators; + +import org.dllearner.core.Reasoner; + +/** + * A refinement operator, which uses an underlying reasoner, which is a typical + * scenario. + * + * @author Jens Lehmann + * + */ +public interface ReasoningBasedRefinementOperator extends RefinementOperator { + + public void setReasoner(Reasoner reasoner); + +} Modified: trunk/components-core/src/main/java/org/dllearner/refinementoperators/RefinementOperator.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/RefinementOperator.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/RefinementOperator.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -44,26 +44,4 @@ */ public Set<Description> refine(Description description); - /** - * Optional refinement operation, where the learning algorithm can - * specify an additional bound on the length of descriptions. - * - * @param description The description, which will be refined. - * @param maxLength The maximum length of returned description, where length is defined by {@link Description#getLength()}. - * @return A set of refinements obeying the above restrictions. - */ - public Set<Description> refine(Description description, int maxLength); - - /** - * Optional refinement operation, where the learning algorithm can - * specify an additional bound on the length of descriptions and - * a list of known refinements, which do not need to be returned. - * - * @param description The description, which will be refined. - * @param maxLength The maximum length of returned description, where length is defined by {@link Description#getLength()}. - * @param knownRefinements A collection of known refinements, which do not need to be returned. - * @return A set of refinements obeying the above restrictions. - */ - public Set<Description> refine(Description description, int maxLength, List<Description> knownRefinements); - } Modified: trunk/components-core/src/main/java/org/dllearner/refinementoperators/RefinementOperatorAdapter.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/RefinementOperatorAdapter.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/RefinementOperatorAdapter.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -30,7 +30,7 @@ * @author Jens Lehmann * */ -public abstract class RefinementOperatorAdapter implements RefinementOperator { +public abstract class RefinementOperatorAdapter implements LengthLimitedRefinementOperator { /* (non-Javadoc) * @see org.dllearner.refinementoperators.RefinementOperator#refine(org.dllearner.core.owl.Description) Modified: trunk/components-core/src/main/java/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/RhoDRDown.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/RhoDRDown.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -38,6 +38,7 @@ import org.dllearner.core.Component; import org.dllearner.core.ComponentAnn; import org.dllearner.core.ComponentInitException; +import org.dllearner.core.Reasoner; import org.dllearner.core.config.BooleanEditor; import org.dllearner.core.config.ConfigOption; import org.dllearner.core.options.CommonConfigOptions; @@ -92,7 +93,7 @@ * */ @ComponentAnn(name = "rho refinement operator", shortName = "rho", version = 0.8) -public class RhoDRDown extends RefinementOperatorAdapter implements Component { +public class RhoDRDown extends RefinementOperatorAdapter implements Component, CustomHierarchyRefinementOperator, CustomStartRefinementOperator, ReasoningBasedRefinementOperator { private static Logger logger = Logger .getLogger(RhoDRDown.class); @@ -1710,4 +1711,14 @@ public void setDataPropertyHierarchy(DatatypePropertyHierarchy dataPropertyHierarchy) { this.dataPropertyHierarchy = dataPropertyHierarchy; } + + @Override + public void setReasoner(Reasoner reasoner) { + this.reasoner = (AbstractReasonerComponent) reasoner; + } + + @Override + public void setClassHierarchy(ClassHierarchy classHierarchy) { + subHierarchy = classHierarchy; + } } \ No newline at end of file Modified: trunk/components-core/src/main/java/org/dllearner/refinementoperators/SynchronizedRhoDRDown.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/SynchronizedRhoDRDown.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/SynchronizedRhoDRDown.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -38,6 +38,7 @@ import org.dllearner.core.Component; import org.dllearner.core.ComponentAnn; import org.dllearner.core.ComponentInitException; +import org.dllearner.core.Reasoner; import org.dllearner.core.config.BooleanEditor; import org.dllearner.core.config.ConfigOption; import org.dllearner.core.options.CommonConfigOptions; @@ -92,7 +93,7 @@ * */ @ComponentAnn(name = "synchronized rho refinement operator", shortName = "syncrho", version = 0.8) -public class SynchronizedRhoDRDown extends RefinementOperatorAdapter implements Component { +public class SynchronizedRhoDRDown extends RefinementOperatorAdapter implements Component, CustomHierarchyRefinementOperator, CustomStartRefinementOperator, ReasoningBasedRefinementOperator { private static Logger logger = Logger .getLogger(SynchronizedRhoDRDown.class); @@ -1710,4 +1711,15 @@ public void setDataPropertyHierarchy(DatatypePropertyHierarchy dataPropertyHierarchy) { this.dataPropertyHierarchy = dataPropertyHierarchy; } + + @Override + public void setReasoner(Reasoner reasoner) { + this.reasoner = (AbstractReasonerComponent) reasoner; + } + + @Override + public void setClassHierarchy(ClassHierarchy classHierarchy) { + subHierarchy = classHierarchy; + } + } \ No newline at end of file Modified: trunk/components-core/src/test/java/org/dllearner/test/junit/RefinementOperatorTests.java =================================================================== --- trunk/components-core/src/test/java/org/dllearner/test/junit/RefinementOperatorTests.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/components-core/src/test/java/org/dllearner/test/junit/RefinementOperatorTests.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -42,6 +42,7 @@ import org.dllearner.parser.KBParser; import org.dllearner.parser.ParseException; import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.refinementoperators.LengthLimitedRefinementOperator; import org.dllearner.refinementoperators.OperatorInverter; import org.dllearner.refinementoperators.RefinementOperator; import org.dllearner.refinementoperators.RhoDRDown; @@ -247,7 +248,7 @@ op.setDropDisjuncts(true); op.init(); - RefinementOperator operator = new OperatorInverter(op); + LengthLimitedRefinementOperator operator = new OperatorInverter(op); Description concept = KBParser.parseConcept("(limo AND EXISTS hasOwner.man)"); Set<Description> refinements = operator.refine(concept, 6); for(Description refinement : refinements) { Modified: trunk/interfaces/src/main/java/org/dllearner/cli/CLI.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/cli/CLI.java 2012-07-12 10:19:48 UTC (rev 3781) +++ trunk/interfaces/src/main/java/org/dllearner/cli/CLI.java 2012-07-12 11:14:47 UTC (rev 3782) @@ -198,6 +198,8 @@ } catch (Exception e) { String stacktraceFileName = "log/error.log"; +// e.printStackTrace(); + //Find the primary cause of the exception. Throwable primaryCause = findPrimaryCause(e); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |