From: <jen...@us...> - 2011-11-30 16:09:30
|
Revision: 3452 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3452&view=rev Author: jenslehmann Date: 2011-11-30 16:09:23 +0000 (Wed, 30 Nov 2011) Log Message: ----------- fixed another bug Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/ocel/OCEL.java trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java trunk/components-core/src/main/java/org/dllearner/refinementoperators/RhoDRDown.java trunk/components-core/src/test/java/org/dllearner/test/junit/RefinementOperatorTests.java Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/ocel/OCEL.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/ocel/OCEL.java 2011-11-30 14:14:54 UTC (rev 3451) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/ocel/OCEL.java 2011-11-30 16:09:23 UTC (rev 3452) @@ -354,38 +354,17 @@ // create a refinement operator and pass all configuration // variables to it -// RhoDRDown if(operator == null) { // we use a default operator and inject the class hierarchy for now operator = new RhoDRDown(); ((RhoDRDown)operator).setReasoner(reasoner); - -// operator = new RhoDRDown( -// reasoner, -// classHierarchy, -//// configurator, -// applyAllFilter, -// applyExistsFilter, -//// useAllConstructor, -// true, -//// useExistsConstructor, -// true, -// useHasValueConstructor, -// valueFrequencyThreshold, -// useCardinalityRestrictions, -// useNegation, -// useBooleanDatatypes, -// useDoubleDatatypes, -// startClass, -// cardinalityLimit, -// useStringDatatypes, -// instanceBasedDisjoints -// ); + ((RhoDRDown)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()); - ((RhoDRDown)operator).init(); + // create an algorithm object and pass all configuration // options to it Modified: trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java 2011-11-30 14:14:54 UTC (rev 3451) +++ trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java 2011-11-30 16:09:23 UTC (rev 3452) @@ -344,5 +344,9 @@ */ public static double getVersion(Component component){ return getVersion(component.getClass()); + } + + public static boolean addComponentClassName(String e) { + return componentClassNames.add(e); } } Modified: trunk/components-core/src/main/java/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/refinementoperators/RhoDRDown.java 2011-11-30 14:14:54 UTC (rev 3451) +++ trunk/components-core/src/main/java/org/dllearner/refinementoperators/RhoDRDown.java 2011-11-30 16:09:23 UTC (rev 3452) @@ -37,6 +37,7 @@ import org.dllearner.core.AbstractReasonerComponent; import org.dllearner.core.Component; import org.dllearner.core.ComponentAnn; +import org.dllearner.core.ComponentInitException; import org.dllearner.core.config.BooleanEditor; import org.dllearner.core.config.ConfigOption; import org.dllearner.core.options.CommonConfigOptions; @@ -224,47 +225,52 @@ // private Map<NamedClass,Map<NamedClass,Boolean>> notABDisjoint = new TreeMap<NamedClass,Map<NamedClass,Boolean>>(); // private Map<NamedClass,Map<NamedClass,Boolean>> notABMeaningful = new TreeMap<NamedClass,Map<NamedClass,Boolean>>(); + private boolean isInitialised = false; + public RhoDRDown() { } - public RhoDRDown(AbstractReasonerComponent reasoningService) { -// this(reasoningService, reasoningService.getClassHierarchy(), null, true, true, true, true, true, 3, true, true, true, true, null); - this.reasoner = reasoningService; - this.subHierarchy = reasoner.getClassHierarchy(); - init(); - } +// public RhoDRDown(AbstractReasonerComponent reasoningService) { +//// this(reasoningService, reasoningService.getClassHierarchy(), null, true, true, true, true, true, 3, true, true, true, true, null); +// this.reasoner = reasoningService; +// this.subHierarchy = reasoner.getClassHierarchy(); +// init(); +// } // TODO constructor which takes a RhoDRDownConfigurator object; // this should be an interface implemented e.g. by ExampleBasedROLComponentConfigurator; // the goal is to use the configurator system while still being flexible enough to // use one refinement operator in several learning algorithms - public RhoDRDown(AbstractReasonerComponent reasoningService, ClassHierarchy subHierarchy, boolean applyAllFilter, boolean applyExistsFilter, boolean useAllConstructor, - boolean useExistsConstructor, boolean useHasValueConstructor, int valueFrequencyThreshold, boolean useCardinalityRestrictions,boolean useNegation, boolean useBooleanDatatypes, boolean useDoubleDatatypes, NamedClass startClass, - int cardinalityLimit, boolean useStringDatatypes, boolean instanceBasedDisjoints) { - this.reasoner = reasoningService; - this.subHierarchy = subHierarchy; - this.applyAllFilter = applyAllFilter; - this.applyExistsFilter = applyExistsFilter; - this.useAllConstructor = useAllConstructor; - this.useExistsConstructor = useExistsConstructor; - this.useHasValueConstructor = useHasValueConstructor; - this.frequencyThreshold = valueFrequencyThreshold; - this.useCardinalityRestrictions = useCardinalityRestrictions; - this.cardinalityLimit = cardinalityLimit; - this.useNegation = useNegation; - this.useBooleanDatatypes = useBooleanDatatypes; - this.useDoubleDatatypes = useDoubleDatatypes; - this.useStringDatatypes = useStringDatatypes; - this.instanceBasedDisjoints = instanceBasedDisjoints; - if(startClass != null) { - this.startClass = startClass; - } - init(); - } +// public RhoDRDown(AbstractReasonerComponent reasoningService, ClassHierarchy subHierarchy, boolean applyAllFilter, boolean applyExistsFilter, boolean useAllConstructor, +// boolean useExistsConstructor, boolean useHasValueConstructor, int valueFrequencyThreshold, boolean useCardinalityRestrictions,boolean useNegation, boolean useBooleanDatatypes, boolean useDoubleDatatypes, NamedClass startClass, +// int cardinalityLimit, boolean useStringDatatypes, boolean instanceBasedDisjoints) { +// this.reasoner = reasoningService; +// this.subHierarchy = subHierarchy; +// this.applyAllFilter = applyAllFilter; +// this.applyExistsFilter = applyExistsFilter; +// this.useAllConstructor = useAllConstructor; +// this.useExistsConstructor = useExistsConstructor; +// this.useHasValueConstructor = useHasValueConstructor; +// this.frequencyThreshold = valueFrequencyThreshold; +// this.useCardinalityRestrictions = useCardinalityRestrictions; +// this.cardinalityLimit = cardinalityLimit; +// this.useNegation = useNegation; +// this.useBooleanDatatypes = useBooleanDatatypes; +// this.useDoubleDatatypes = useDoubleDatatypes; +// this.useStringDatatypes = useStringDatatypes; +// this.instanceBasedDisjoints = instanceBasedDisjoints; +// if(startClass != null) { +// this.startClass = startClass; +// } +// init(); +// } // subHierarchy = rs.getClassHierarchy(); - public void init() { + public void init() throws ComponentInitException { + if(isInitialised) { + throw new ComponentInitException("Refinement operator cannot be nitialised twice."); + } // System.out.println("subHierarchy: " + subHierarchy); // System.out.println("object properties: " + ); @@ -347,6 +353,8 @@ valueFrequency = null; dataValueFrequency = null; + System.out.println("freqDataValues: " + frequentDataValues); + // compute splits for double datatype properties for(DatatypeProperty dp : reasoner.getDoubleDatatypeProperties()) { computeSplits(dp); @@ -368,6 +376,9 @@ } maxNrOfFillers.put(op, maxFillers); } + + isInitialised = true; + } /* 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 2011-11-30 14:14:54 UTC (rev 3451) +++ trunk/components-core/src/test/java/org/dllearner/test/junit/RefinementOperatorTests.java 2011-11-30 16:09:23 UTC (rev 3452) @@ -88,7 +88,8 @@ // rs.prepareSubsumptionHierarchy(); // rs.prepareRoleHierarchy(); - RhoDRDown op = new RhoDRDown(rc); + RhoDRDown op = new RhoDRDown(); + op.setReasoner(rc); Description concept = KBParser.parseConcept(uri("Compound")); Set<Description> results = op.refine(concept, 4, null); @@ -113,7 +114,8 @@ AbstractReasonerComponent reasoner = TestOntologies.getTestOntology(TestOntology.EPC_OE); baseURI = reasoner.getBaseURI(); - RhoDRDown op = new RhoDRDown(reasoner); + RhoDRDown op = new RhoDRDown(); + op.setReasoner(reasoner); Description concept = KBParser.parseConcept("(\"http://localhost/aris/sap_model.owl#EPC\" AND EXISTS \"http://localhost/aris/sap_model.owl#hasModelElements\".\"http://localhost/aris/sap_model.owl#Object\")"); Set<Description> results = op.refine(concept,10); @@ -148,9 +150,8 @@ classHierarchy.thinOutSubsumptionHierarchy(); System.out.println(" UNIT TEST INCOMPLETE AFTER FRAMEWORK CHANGE, BECAUSE CLASS HIERARCHY IS NOT PASSED TO REFINEMENT OPERATOR "); - RhoDRDown op = new RhoDRDown( - reasoner // TODO: pass class hierarchy here - ); + RhoDRDown op = new RhoDRDown(); + op.setReasoner(reasoner); Description concept = KBParser.parseConcept("EXISTS \"http://www.test.de/test#hasPiece\".EXISTS \"http://www.test.de/test#hasLowerRankThan\".(\"http://www.test.de/test#WRook\" AND TOP)"); Set<Description> results = op.refine(concept,8); @@ -192,7 +193,8 @@ @Test public void rhoDRDownTest4() throws ParseException, LearningProblemUnsupportedException { AbstractReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.RHO1); - RefinementOperator operator = new RhoDRDown(rs); + RefinementOperator operator = new RhoDRDown(); + ((RhoDRDown)operator).setReasoner(rs); Description concept = KBParser.parseConcept("(car AND EXISTS hasOwner.person)"); // Description concept = Thing.instance; Set<Description> refinements = operator.refine(concept, 6); @@ -204,7 +206,8 @@ @Test public void rhoDRDownTest5() throws ParseException, LearningProblemUnsupportedException { AbstractReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.SWORE); - RefinementOperator operator = new RhoDRDown(rs); + RefinementOperator operator = new RhoDRDown(); + ((RhoDRDown)operator).setReasoner(rs); // Description concept = KBParser.parseConcept("((NOT \"http://ns.softwiki.de/req/Requirement\") OR (ALL \"http://ns.softwiki.de/req/isCreatedBy\".(NOT \"http://ns.softwiki.de/req/Creditor\")))"); Description concept = KBParser.parseConcept("(NOT \"http://ns.softwiki.de/req/Requirement\" OR ALL \"http://ns.softwiki.de/req/isCreatedBy\".NOT \"http://ns.softwiki.de/req/Creditor\")"); System.out.println(concept); @@ -217,7 +220,8 @@ @Test public void invertedOperatorTest() throws ParseException { AbstractReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.RHO1); - RhoDRDown rho = new RhoDRDown(rs); + RhoDRDown rho = new RhoDRDown(); + rho.setReasoner(rs); rho.setDropDisjuncts(true); RefinementOperator operator = new OperatorInverter(rho); Description concept = KBParser.parseConcept("(limo AND EXISTS hasOwner.man)"); @@ -234,7 +238,8 @@ public void rhoDownTestPellet() { Logger.getRootLogger().setLevel(Level.TRACE); AbstractReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.FATHER); - RhoDRDown rho = new RhoDRDown(rs); + RhoDRDown rho = new RhoDRDown(); + rho.setReasoner(rs); NamedClass nc = new NamedClass("http://example.com/father#male"); Set<Description> refinements = rho.refine(nc, 5); for(Description refinement : refinements) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |