From: <jen...@us...> - 2009-05-21 08:46:45
|
Revision: 1765 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1765&view=rev Author: jenslehmann Date: 2009-05-21 08:46:28 +0000 (Thu, 21 May 2009) Log Message: ----------- several smaller changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java trunk/src/dl-learner/org/dllearner/algorithms/refinement2/ROLComponent2.java trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/core/IndividualReasoner.java trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/core/configurators/ROLComponent2Configurator.java trunk/src/dl-learner/org/dllearner/core/configurators/RandomGuesserConfigurator.java trunk/src/dl-learner/org/dllearner/core/configurators/RefinementOperatorConfigurator.java trunk/src/dl-learner/org/dllearner/core/options/CommonConfigOptions.java trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosNeg.java trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosOnly.java trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosOnly.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -569,6 +569,8 @@ // inc. minimum since we found no other node which also has min. horiz. exp. minHorizExp++; + +// System.out.println("minimum horizontal expansion is now " + minHorizExp); } } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement2/ROLComponent2.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement2/ROLComponent2.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement2/ROLComponent2.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -199,6 +199,7 @@ options.add(CommonConfigOptions.useNegation()); options.add(CommonConfigOptions.useBooleanDatatypes()); options.add(CommonConfigOptions.useDoubleDatatypes()); + options.add(CommonConfigOptions.useStringDatatypes()); options.add(CommonConfigOptions.maxExecutionTimeInSeconds()); options.add(CommonConfigOptions.minExecutionTimeInSeconds()); options.add(CommonConfigOptions.guaranteeXgoodDescriptions()); Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -133,7 +133,7 @@ if (args.length > 1 && args[0].equals("-q")) { inQueryMode = true; } - + // create loggers (a simple logger which outputs // its messages to the console and a log file) @@ -205,7 +205,9 @@ e.printStackTrace(); System.exit(0); } + start.start(inQueryMode); + // write JaMON report in HTML file File jamonlog = new File("log/jamon.html"); Files.createFile(jamonlog, MonitorFactory.getReport()); @@ -843,7 +845,8 @@ } while (!(queryStr.equalsIgnoreCase("q") || queryStr.equalsIgnoreCase("quit"))); } - + + /** * error handling over the logger * Modified: trunk/src/dl-learner/org/dllearner/core/IndividualReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/IndividualReasoner.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/core/IndividualReasoner.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -183,4 +183,13 @@ */ public SortedSet<Individual> getFalseDatatypeMembers(DatatypeProperty datatypeProperty); + /** + * Convenience method, which can be used which returns the property values as + * strings (note that any literal can be represented as string, even numbers). + * @see #getDatatypeMembers(DatatypeProperty) + * @param datatypeProperty A data property. + * @return The mapping between individuals and string values through the given property. + */ + public Map<Individual, SortedSet<String>> getStringDatatypeMembers(DatatypeProperty datatypeProperty); + } Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -661,6 +661,32 @@ } @Override + public final Map<Individual, SortedSet<String>> getStringDatatypeMembers( + DatatypeProperty datatypeProperty) { + try { + return getStringDatatypeMembersImpl(datatypeProperty); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + } + + protected Map<Individual, SortedSet<String>> getStringDatatypeMembersImpl( + DatatypeProperty datatypeProperty) throws ReasoningMethodUnsupportedException { + Map<Individual, SortedSet<Constant>> mapping = getDatatypeMembersImpl(datatypeProperty); + Map<Individual, SortedSet<String>> ret = new TreeMap<Individual, SortedSet<String>>(); + for (Entry<Individual, SortedSet<Constant>> e : mapping.entrySet()) { + SortedSet<Constant> values = e.getValue(); + SortedSet<String> valuesString = new TreeSet<String>(); + for (Constant c : values) { + valuesString.add(c.getLiteral()); + } + ret.put(e.getKey(), valuesString); + } + return ret; + } + + @Override public final SortedSet<DatatypeProperty> getDatatypeProperties() { try { return getDatatypePropertiesImpl(); Modified: trunk/src/dl-learner/org/dllearner/core/configurators/ROLComponent2Configurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/ROLComponent2Configurator.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/core/configurators/ROLComponent2Configurator.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -279,6 +279,15 @@ return (Boolean) ComponentManager.getInstance().getConfigOptionValue(rOLComponent2, "useDoubleDatatypes") ; } /** +* useStringDatatypes specifies whether string datatypes are used in the learning algorothm. +* mandatory: false| reinit necessary: true +* default value: false +* @return boolean +**/ +public boolean getUseStringDatatypes() { +return (Boolean) ComponentManager.getInstance().getConfigOptionValue(rOLComponent2, "useStringDatatypes") ; +} +/** * maxExecutionTimeInSeconds algorithm will stop after specified seconds. * mandatory: false| reinit necessary: true * default value: 0 @@ -622,6 +631,15 @@ reinitNecessary = true; } /** +* @param useStringDatatypes specifies whether string datatypes are used in the learning algorothm. +* mandatory: false| reinit necessary: true +* default value: false +**/ +public void setUseStringDatatypes(boolean useStringDatatypes) { +ComponentManager.getInstance().applyConfigEntry(rOLComponent2, "useStringDatatypes", useStringDatatypes); +reinitNecessary = true; +} +/** * @param maxExecutionTimeInSeconds algorithm will stop after specified seconds. * mandatory: false| reinit necessary: true * default value: 0 Modified: trunk/src/dl-learner/org/dllearner/core/configurators/RandomGuesserConfigurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/RandomGuesserConfigurator.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/core/configurators/RandomGuesserConfigurator.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -56,13 +56,13 @@ } /** -* numberOfTrees number of randomly generated concepts/trees. +* numberOfGuesses number of randomly generated concepts/trees. * mandatory: false| reinit necessary: true -* default value: 5 +* default value: 100 * @return int **/ -public int getNumberOfTrees() { -return (Integer) ComponentManager.getInstance().getConfigOptionValue(randomGuesser, "numberOfTrees") ; +public int getNumberOfGuesses() { +return (Integer) ComponentManager.getInstance().getConfigOptionValue(randomGuesser, "numberOfGuesses") ; } /** * maxDepth maximum depth of generated concepts/trees. @@ -75,12 +75,12 @@ } /** -* @param numberOfTrees number of randomly generated concepts/trees. +* @param numberOfGuesses number of randomly generated concepts/trees. * mandatory: false| reinit necessary: true -* default value: 5 +* default value: 100 **/ -public void setNumberOfTrees(int numberOfTrees) { -ComponentManager.getInstance().applyConfigEntry(randomGuesser, "numberOfTrees", numberOfTrees); +public void setNumberOfGuesses(int numberOfGuesses) { +ComponentManager.getInstance().applyConfigEntry(randomGuesser, "numberOfGuesses", numberOfGuesses); reinitNecessary = true; } /** Modified: trunk/src/dl-learner/org/dllearner/core/configurators/RefinementOperatorConfigurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/RefinementOperatorConfigurator.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/core/configurators/RefinementOperatorConfigurator.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -54,4 +54,8 @@ public boolean getUseDoubleDatatypes() { return false; } + + public boolean getUseStringDatatypes() { + return false; + } } Modified: trunk/src/dl-learner/org/dllearner/core/options/CommonConfigOptions.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/options/CommonConfigOptions.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/core/options/CommonConfigOptions.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -49,6 +49,7 @@ public static boolean useNegationDefault = true; public static boolean useBooleanDatatypesDefault = true; public static boolean useDoubleDatatypesDefault = true; + public static boolean useStringDatatypesDefault = false; public static int maxExecutionTimeInSecondsDefault = 0; public static int minExecutionTimeInSecondsDefault = 0; public static int guaranteeXgoodDescriptionsDefault = 1; @@ -159,6 +160,10 @@ return new BooleanConfigOption("useDoubleDatatypes", "specifies whether boolean datatypes are used in the learning algorothm",useDoubleDatatypesDefault); } + public static BooleanConfigOption useStringDatatypes() { + return new BooleanConfigOption("useStringDatatypes", "specifies whether string datatypes are used in the learning algorothm",useStringDatatypesDefault); + } + public static IntegerConfigOption maxExecutionTimeInSeconds() { return new IntegerConfigOption("maxExecutionTimeInSeconds", "algorithm will stop after specified seconds",maxExecutionTimeInSecondsDefault); } Modified: trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosNeg.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosNeg.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosNeg.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -53,7 +53,7 @@ */ public EvaluatedDescriptionPosNeg(Description description, ScorePosNeg score) { super(description, score); - score2 = (ScorePosNeg) score; + score2 = score; } /** Modified: trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosOnly.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosOnly.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosOnly.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -19,9 +19,11 @@ */ package org.dllearner.learningproblems; +import java.util.Set; + import org.dllearner.core.EvaluatedDescription; -import org.dllearner.core.Score; import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; /** * @author Jens Lehmann @@ -29,8 +31,31 @@ */ public class EvaluatedDescriptionPosOnly extends EvaluatedDescription { - public EvaluatedDescriptionPosOnly(Description description, Score score) { + private ScorePosOnly score2; + + public EvaluatedDescriptionPosOnly(Description description, ScorePosOnly score) { super(description, score); + score2 = score; } + @Override + public String toString() { + return description.toString() + "(accuracy: " + getAccuracy() + ")"; + } + + /** + * @see org.dllearner.learningproblems.ScorePosNeg#getCoveredPositives() + * @return Positive examples covered by the description. + */ + public Set<Individual> getCoveredPositives() { + return score2.getCoveredInstances(); + } + + public Set<Individual> getNotCoveredPositives() { + return score2.getNotCoveredPositives(); + } + + public Set<Individual> getAdditionalInstances() { + return score2.getAdditionalInstances(); + } } Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -145,9 +145,12 @@ Set<Individual> retrieval = reasoner.getIndividuals(description); Set<Individual> instancesCovered = new TreeSet<Individual>(); + Set<Individual> instancesNotCovered = new TreeSet<Individual>(); for(Individual ind : positiveExamples) { if(retrieval.contains(ind)) { instancesCovered.add(ind); + } else { + instancesNotCovered.add(ind); } } @@ -156,14 +159,14 @@ // pass only additional instances to score object retrieval.removeAll(instancesCovered); - return new ScorePosOnly(instancesCovered, coverage, retrieval, protusion, getAccuracy(coverage, protusion)); + return new ScorePosOnly(instancesCovered, instancesNotCovered, coverage, retrieval, protusion, getAccuracy(coverage, protusion)); } /* (non-Javadoc) * @see org.dllearner.core.LearningProblem#evaluate(org.dllearner.core.owl.Description) */ @Override - public EvaluatedDescription evaluate(Description description) { + public EvaluatedDescriptionPosOnly evaluate(Description description) { ScorePosOnly score = computeScore(description); return new EvaluatedDescriptionPosOnly(description, score); } Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosOnly.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosOnly.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosOnly.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -31,14 +31,16 @@ public class ScorePosOnly extends Score { private Set<Individual> coveredInstances; + private Set<Individual> notCoveredPositives; private Set<Individual> additionalInstances; private double coverage; private double addition; private double accuracy; - public ScorePosOnly(Set<Individual> coveredInstances, double coverage, Set<Individual> additionalInstances, double protusion, double accuracy) { + public ScorePosOnly(Set<Individual> coveredInstances, Set<Individual> notCoveredPositives, double coverage, Set<Individual> additionalInstances, double protusion, double accuracy) { this.coveredInstances = coveredInstances; + this.notCoveredPositives = notCoveredPositives; this.additionalInstances = additionalInstances; this.coverage = coverage; this.addition = protusion; @@ -79,6 +81,13 @@ } /** + * @return the coveredInstances + */ + public Set<Individual> getNotCoveredPositives() { + return notCoveredPositives; + } + + /** * @return the additionalInstances */ public Set<Individual> getAdditionalInstances() { Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -172,6 +172,7 @@ private boolean useNegation = true; private boolean useBooleanDatatypes = true; private boolean useDoubleDatatypes = true; + private boolean useStringDatatypes = false; private boolean disjointChecks = true; private boolean instanceBasedDisjoints = true; @@ -202,6 +203,7 @@ useNegation = configurator.getUseNegation(); useBooleanDatatypes = configurator.getUseBooleanDatatypes(); useDoubleDatatypes = configurator.getUseDoubleDatatypes(); + useStringDatatypes = configurator.getUseStringDatatypes(); init(); } @@ -224,6 +226,7 @@ this.useNegation = useNegation; this.useBooleanDatatypes = useBooleanDatatypes; this.useDoubleDatatypes = useDoubleDatatypes; + useStringDatatypes = configurator.getUseStringDatatypes(); if(startClass != null) { this.startClass = startClass; } Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java 2009-05-20 09:22:49 UTC (rev 1764) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java 2009-05-21 08:46:28 UTC (rev 1765) @@ -29,10 +29,17 @@ import java.util.zip.DataFormatException; import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.algorithms.refinement2.ROLComponent2; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.ObjectProperty; +import org.dllearner.core.owl.ObjectValueRestriction; +import org.dllearner.core.owl.Union; import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.kb.manipulator.StringToResource; import org.dllearner.kb.manipulator.Rule.Months; @@ -40,6 +47,7 @@ import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.learningproblems.EvaluatedDescriptionPosOnly; import org.dllearner.learningproblems.PosOnlyLP; import org.dllearner.reasoning.FastInstanceChecker; @@ -74,8 +82,10 @@ // System.out.println(isCity + " " + lgdURI); if(isCity) { positives.add(lgdURI.toString()); + System.out.println("+\""+lgdURI+"\""); } else { negatives.add(lgdURI.toString()); + System.out.println("-\""+lgdURI+"\""); } } @@ -93,7 +103,7 @@ ks.getConfigurator().setPredefinedEndpoint("LOCALGEODATA"); ks.getConfigurator().setSaveExtractedFragment(true); Manipulator m = Manipulator.getDefaultManipulator(); - m.addRule(new StringToResource(Months.DECEMBER,"http://linkedgeodata.org/vocabulary", 40)); + m.addRule(new StringToResource(Months.DECEMBER,"http://linkedgeodata.org/vocabulary", 0)); ks.setManipulator(m); ks.init(); @@ -105,10 +115,36 @@ lp.init(); CELOE celoe = cm.learningAlgorithm(CELOE.class, lp, reasoner); +// ROLComponent2 celoe = cm.learningAlgorithm(ROLComponent2.class, lp, reasoner); + celoe.getConfigurator().setUseAllConstructor(false); +// celoe.getConfigurator().setUseExistsConstructor(false); + celoe.getConfigurator().setUseCardinalityRestrictions(false); + celoe.getConfigurator().setUseBooleanDatatypes(false); + celoe.getConfigurator().setUseDoubleDatatypes(false); + celoe.getConfigurator().setUseNegation(false); celoe.getConfigurator().setUseHasValueConstructor(true); - celoe.getConfigurator().setValueFrequencyThreshold(3); + celoe.getConfigurator().setValueFrequencyThreshold(10); + celoe.getConfigurator().setMaxExecutionTimeInSeconds(1000); + celoe.getConfigurator().setNoisePercentage(0.1); celoe.init(); + // debugging +// ObjectProperty place = new ObjectProperty("http://linkedgeodata.org/vocabulary#place"); +// Individual city = new Individual("http://linkedgeodata.org/vocabulary/city"); +// Individual village = new Individual("http://linkedgeodata.org/vocabulary/village"); +// Individual town = new Individual("http://linkedgeodata.org/vocabulary/town"); +// Individual suburb = new Individual("http://linkedgeodata.org/vocabulary/suburb"); +// Description vd = new ObjectValueRestriction(place, village); +// Description vc = new ObjectValueRestriction(place, city); +// Description vt = new ObjectValueRestriction(place, town); +// Description vs = new ObjectValueRestriction(place, suburb); +// Description d = new Union(vd, vt, vs); +// EvaluatedDescriptionPosOnly ed = lp.evaluate(d); +// System.out.println(ed); +// System.out.println(ed.getCoveredPositives().size() + ": " + ed.getCoveredPositives()); +// System.out.println(ed.getNotCoveredPositives().size() + ": " + ed.getNotCoveredPositives()); +// System.out.println(ed.getAdditionalInstances().size() + ": " + ed.getAdditionalInstances()); + // execute algorithm celoe.start(); // Set<EvaluatedDescriptionPosOnly> solutions = (Set<EvaluatedDescriptionPosOnly>) algorithm.getCurrentlyBestEvaluatedDescriptions(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |