From: <jen...@us...> - 2009-12-31 11:06:43
|
Revision: 1975 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1975&view=rev Author: jenslehmann Date: 2009-12-31 11:06:37 +0000 (Thu, 31 Dec 2009) Log Message: ----------- removed superfluous cast Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Info.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2009-12-31 10:55:24 UTC (rev 1974) +++ trunk/src/dl-learner/org/dllearner/Info.java 2009-12-31 11:06:37 UTC (rev 1975) @@ -1,8 +1,8 @@ - // File is updated automatically when a new version is created - package org.dllearner; +// File is updated automatically when a new version is created +package org.dllearner; - public class Info { - public static final String build = "2009-12-14"; - } - \ No newline at end of file +public class Info { + public static final String build = "2009-12-31"; +} + \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2009-12-31 10:55:24 UTC (rev 1974) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2009-12-31 11:06:37 UTC (rev 1975) @@ -1120,7 +1120,8 @@ Set<DatatypeProperty> mostGeneralBDPs = rs.getBooleanDatatypeProperties(); Set<DatatypeProperty> applicableBDPs = new TreeSet<DatatypeProperty>(); for(DatatypeProperty role : mostGeneralBDPs) { - Description d = (NamedClass) rs.getDomain(role); +// Description d = (NamedClass) rs.getDomain(role); + Description d = rs.getDomain(role); if(!isDisjoint(domain,d)) applicableBDPs.add(role); } @@ -1130,7 +1131,8 @@ Set<DatatypeProperty> mostGeneralDDPs = rs.getDoubleDatatypeProperties(); Set<DatatypeProperty> applicableDDPs = new TreeSet<DatatypeProperty>(); for(DatatypeProperty role : mostGeneralDDPs) { - Description d = (NamedClass) rs.getDomain(role); +// Description d = (NamedClass) rs.getDomain(role); + Description d = rs.getDomain(role); // System.out.println("domain: " + d); if(!isDisjoint(domain,d)) applicableDDPs.add(role); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-01 15:20:26
|
Revision: 1986 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1986&view=rev Author: kurzum Date: 2010-02-01 15:20:19 +0000 (Mon, 01 Feb 2010) Log Message: ----------- - option dissolveBlanknodes works now - couldn't fix blanknode issue, some weird result set is returned, caught the error and logged a warning Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/scripts/NewSample.java trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java 2010-01-25 21:21:08 UTC (rev 1985) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java 2010-02-01 15:20:19 UTC (rev 1986) @@ -11,6 +11,7 @@ import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSetRewindable; +import com.hp.hpl.jena.rdf.model.RDFNode; public class BlankNodeCollector { @@ -41,6 +42,11 @@ } + /** + * @param rsw + * @param depth + * @return true if there are more blanknodes + */ public static boolean testResultSet(ResultSetRewindable rsw, int depth){ List<String> vars = new ArrayList<String>(); vars.add("o0"); @@ -63,9 +69,25 @@ rsw.reset(); return true; } + + //true to stop expansion private static boolean testOneQuerySolution(List<String> vars, QuerySolution q){ + +// System.out.println(q); +// System.out.println(vars); +// for (String v : vars) { +// RDFNode n = q.get(v); +// if(n==null){ +// System.out.println("returning true"); +// return true; +// } +// +// } + for (String v : vars) { - if(!q.get(v).isAnon()){ + RDFNode n = q.get(v); + if(!n.isAnon()){ +// System.out.println(n); return true; } } Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2010-01-25 21:21:08 UTC (rev 1985) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2010-02-01 15:20:19 UTC (rev 1986) @@ -30,6 +30,7 @@ import org.dllearner.kb.sparql.SparqlQueryMaker; import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.RDFNodeTuple; +import org.dllearner.utilities.owl.OWLVocabulary; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSetRewindable; @@ -108,6 +109,9 @@ // main function for resolving blanknodes @Override protected void disambiguateBlankNodes(String uri, SortedSet<RDFNodeTuple> resultSet){ + if(!isDissolveBlankNodes()){ + return; + } Monitor bnodeMonitor = JamonMonitorLogger.getTimeMonitor(SparqlTupleAquisitor.class, "blanknode time").start(); try{ for (RDFNodeTuple tuple : resultSet) { @@ -133,19 +137,26 @@ // extends a sparql query as long as there are undissolved blanknodes private void dissolveBlankNodes(int currentId, String uri, RDFNodeTuple tuple){ - int currentDepth = 1; - int lastDepth = 1; - ResultSetRewindable rsw=null; - do{ - String q = BlankNodeCollector.makeQuery(uri, tuple.a.toString(), currentDepth); - //System.out.println(q); - - rsw = sparqlTasks.queryAsResultSet(q); - lastDepth = currentDepth; - }while (!BlankNodeCollector.testResultSet(rsw, currentDepth++)); - - assignIds( currentId, rsw, lastDepth); - + try{ + int currentDepth = 1; + int lastDepth = 1; + ResultSetRewindable rsw=null; + do{ + String p = tuple.a.toString(); + if(p.equals(OWLVocabulary.RDFS_COMMENT) || p.equals(OWLVocabulary.RDFS_LABEL) ){ + return ; + } + String q = BlankNodeCollector.makeQuery(uri, p, currentDepth); +// System.out.println(q); + rsw = sparqlTasks.queryAsResultSet(q); + rsw.reset(); + lastDepth = currentDepth; + }while (!BlankNodeCollector.testResultSet(rsw, currentDepth++)); + + assignIds( currentId, rsw, lastDepth); + }catch (Exception e) { + logger.info("An error occurred while dissolving blanknodes"); + } } //takes the resultset and assigns internal ids Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2010-01-25 21:21:08 UTC (rev 1985) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2010-02-01 15:20:19 UTC (rev 1986) @@ -45,7 +45,7 @@ protected int mode = 0; protected boolean uriDebugCheck = true; - protected boolean dissolveBlankNodes = true; + protected boolean dissolveBlankNodes = false; public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){ checkURIforValidity(uri); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2010-01-25 21:21:08 UTC (rev 1985) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2010-02-01 15:20:19 UTC (rev 1986) @@ -47,13 +47,15 @@ private boolean closeAfterRecursion = true; private boolean getPropertyInformation = false; + + private boolean dissolveBlankNodes = false; private int breakSuperClassesAfter = 200; public Configuration(TupleAquisitor tupelAquisitor, Manipulator manipulator, int recursiondepth, boolean getAllSuperClasses, boolean closeAfterRecursion, - boolean getPropertyInformation, int breakSuperClassesAfter) { + boolean getPropertyInformation, int breakSuperClassesAfter, boolean dissolveBlankNodes) { this.tupelAquisitor = tupelAquisitor; this.manipulator = manipulator; @@ -62,6 +64,7 @@ this.closeAfterRecursion = closeAfterRecursion; this.getPropertyInformation = getPropertyInformation; this.breakSuperClassesAfter = breakSuperClassesAfter; + this.dissolveBlankNodes = dissolveBlankNodes; this.owlAPIOntologyCollector = new OWLAPIOntologyCollector(); @@ -70,10 +73,10 @@ public Configuration(TupleAquisitor tupelAquisitor, Manipulator manipulator, int recursiondepth, boolean getAllSuperClasses, boolean closeAfterRecursion, - boolean getPropertyInformation, int breakSuperClassesAfter, + boolean getPropertyInformation, int breakSuperClassesAfter, boolean dissolveBlankNodes, OWLAPIOntologyCollector owlAPIOntologyCollector) { this(tupelAquisitor, manipulator, recursiondepth, getAllSuperClasses, - closeAfterRecursion, getAllSuperClasses, breakSuperClassesAfter); + closeAfterRecursion, getAllSuperClasses, breakSuperClassesAfter,dissolveBlankNodes); this.owlAPIOntologyCollector = owlAPIOntologyCollector; } @@ -113,4 +116,8 @@ return owlAPIOntologyCollector; } + public boolean isDissolveBlankNodes() { + return dissolveBlankNodes; + } + } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2010-01-25 21:21:08 UTC (rev 1985) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2010-02-01 15:20:19 UTC (rev 1986) @@ -70,6 +70,7 @@ * */ public Node expandNode(String uri, TupleAquisitor tupleAquisitor) { + tupleAquisitor.setDissolveBlankNodes(configuration.isDissolveBlankNodes()); SimpleClock sc = new SimpleClock(); if(tupleAquisitor instanceof SparqlTupleAquisitorImproved){ @@ -146,7 +147,9 @@ } Monitor m = JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeBlankNode").start(); - expandBlankNodes(getBlankNodes(collectNodes),tupleAquisitor); + if( configuration.isDissolveBlankNodes()){ + expandBlankNodes(getBlankNodes(collectNodes),tupleAquisitor); + } m.stop(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2010-01-25 21:21:08 UTC (rev 1985) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2010-02-01 15:20:19 UTC (rev 1986) @@ -61,7 +61,6 @@ import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.StringTuple; import org.dllearner.utilities.statistics.SimpleClock; -import org.mindswap.pellet.utils.progress.SilentProgressMonitor; import org.semanticweb.owl.model.OWLOntology; import com.jamonapi.Monitor; @@ -81,10 +80,7 @@ private static final boolean debug = false; //private static final boolean threaded = debug && true ; - - // tupleaquisitor - //private static final boolean debugUseImprovedTupleAquisitor = debug && false; // switches // sysex private static final boolean debugExitAfterExtraction = debug && false; // switches @@ -259,7 +255,8 @@ .getGetAllSuperClasses(), configurator .getCloseAfterRecursion(), configurator .getGetPropertyInformation(), configurator - .getBreakSuperClassRetrievalAfter()); + .getBreakSuperClassRetrievalAfter(), + configurator.getDissolveBlankNodes()); // give everything to the manager m.useConfiguration(configuration); Modified: trunk/src/dl-learner/org/dllearner/scripts/NewSample.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/NewSample.java 2010-01-25 21:21:08 UTC (rev 1985) +++ trunk/src/dl-learner/org/dllearner/scripts/NewSample.java 2010-02-01 15:20:19 UTC (rev 1986) @@ -149,7 +149,7 @@ // all components need to be initialised before they can be used ks.init(); - f.init(); + f.init(); lp.init(); la.init(); Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2010-01-25 21:21:08 UTC (rev 1985) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2010-02-01 15:20:19 UTC (rev 1986) @@ -78,6 +78,7 @@ boolean getAllSuperClasses = true; boolean closeAfterRecursion = true; boolean getPropertyInformation = false; + boolean dissolveBlankNodes = false; int breakSuperClassesAfter = 1000; String ontologyURI = "http://www.fragment.org/fragment"; @@ -93,6 +94,7 @@ closeAfterRecursion, getPropertyInformation, breakSuperClassesAfter, + dissolveBlankNodes, collector ); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2010-01-25 21:21:08 UTC (rev 1985) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2010-02-01 15:20:19 UTC (rev 1986) @@ -27,8 +27,11 @@ import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.utilities.datastructures.SetManipulation; +import com.hp.hpl.jena.query.ResultSetRewindable; + /** * Test class for SPARQL mode. * @@ -61,6 +64,7 @@ .knowledgeSource(SparqlKnowledgeSource.class); ks.getConfigurator().setUrl(endPoint.getURL()); ks.getConfigurator().setInstances(posExamples); + ks.getConfigurator().setDissolveBlankNodes(false); ks.init(); // ReasonerComponent reasoner = cm.reasoner(FastInstanceChecker.class, // ks); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2010-02-02 09:16:55
|
Revision: 1988 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1988&view=rev Author: jenslehmann Date: 2010-02-02 09:16:38 +0000 (Tue, 02 Feb 2010) Log Message: ----------- preliminary/untested support for hasValue with datatypes (currently strings only) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/BaseReasoner.java trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/core/owl/Datatype.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java Modified: trunk/src/dl-learner/org/dllearner/core/BaseReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/BaseReasoner.java 2010-02-01 16:58:22 UTC (rev 1987) +++ trunk/src/dl-learner/org/dllearner/core/BaseReasoner.java 2010-02-02 09:16:38 UTC (rev 1988) @@ -102,6 +102,15 @@ public SortedSet<DatatypeProperty> getIntDatatypeProperties(); /** + * Gets all data properties with range xsd:string. + * TODO We could extend this to all types, which can be parsed into + * strings and even include the properties without any specified datatype. + * @see org.dllearner.core.owl.Datatype#String + * @return String data properties in KB. + */ + public SortedSet<DatatypeProperty> getStringDatatypeProperties(); + + /** * Gets all individuals in the knowledge base, e.g. Eric, London, Car829. * @return All individuals in KB. */ Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2010-02-01 16:58:22 UTC (rev 1987) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2010-02-02 09:16:38 UTC (rev 1988) @@ -771,6 +771,21 @@ } @Override + public final SortedSet<DatatypeProperty> getStringDatatypeProperties() { + try { + return getStringDatatypePropertiesImpl(); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + } + + protected SortedSet<DatatypeProperty> getStringDatatypePropertiesImpl() + throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + @Override public final Description getDomain(ObjectProperty objectProperty) { try { return getDomainImpl(objectProperty); Modified: trunk/src/dl-learner/org/dllearner/core/owl/Datatype.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/Datatype.java 2010-02-01 16:58:22 UTC (rev 1987) +++ trunk/src/dl-learner/org/dllearner/core/owl/Datatype.java 2010-02-02 09:16:38 UTC (rev 1988) @@ -30,7 +30,8 @@ DOUBLE ("http://www.w3.org/2001/XMLSchema#double"), INT ("http://www.w3.org/2001/XMLSchema#int"), - BOOLEAN ("http://www.w3.org/2001/XMLSchema#boolean"); + BOOLEAN ("http://www.w3.org/2001/XMLSchema#boolean"), + STRING ("http://www.w3.org/2001/XMLSchema#string"); private URI uri; @@ -51,6 +52,10 @@ return 1; } + public void accept(KBElementVisitor visitor) { + visitor.visit(this); + } + public String toString(String baseURI, Map<String, String> prefixes) { return uri.toString(); } @@ -59,16 +64,11 @@ return uri.toString(); } - public void accept(KBElementVisitor visitor) { - visitor.visit(this); - } - /* (non-Javadoc) * @see org.dllearner.core.owl.KBElement#toManchesterSyntaxString(java.lang.String, java.util.Map) */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return uri.toString(); } } Added: trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java 2010-02-02 09:16:38 UTC (rev 1988) @@ -0,0 +1,42 @@ +/** + * Copyright (C) 2007-2010, 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.core.owl; + +/** + * + * String value restriction, e.g. \exists description hasValue "interesting item". + * + * @author Jens Lehmann + * + */ +public class StringValueRestriction extends DatatypeValueRestriction { + + public StringValueRestriction(DatatypeProperty restrictedPropertyExpression, String value) { + super(restrictedPropertyExpression, new TypedConstant(value.toString(), Datatype.STRING)); + } + + private static final long serialVersionUID = 5651982376457935975L; + + @Override + public int getLength() { + return 3; + } + +} Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2010-02-01 16:58:22 UTC (rev 1987) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2010-02-02 09:16:38 UTC (rev 1988) @@ -145,6 +145,7 @@ SortedSet<DatatypeProperty> booleanDatatypeProperties = new TreeSet<DatatypeProperty>(); SortedSet<DatatypeProperty> doubleDatatypeProperties = new TreeSet<DatatypeProperty>(); SortedSet<DatatypeProperty> intDatatypeProperties = new TreeSet<DatatypeProperty>(); + SortedSet<DatatypeProperty> stringDatatypeProperties = new TreeSet<DatatypeProperty>(); SortedSet<Individual> individuals = new TreeSet<Individual>(); // namespaces @@ -192,6 +193,7 @@ booleanDatatypeProperties = new TreeSet<DatatypeProperty>(); doubleDatatypeProperties = new TreeSet<DatatypeProperty>(); intDatatypeProperties = new TreeSet<DatatypeProperty>(); + stringDatatypeProperties = new TreeSet<DatatypeProperty>(); individuals = new TreeSet<Individual>(); // create OWL API ontology manager @@ -377,7 +379,9 @@ else if(uri.equals(Datatype.DOUBLE.getURI())) doubleDatatypeProperties.add(dtp); else if(uri.equals(Datatype.INT.getURI())) - intDatatypeProperties.add(dtp); + intDatatypeProperties.add(dtp); + else if(uri.equals(Datatype.STRING.getURI())) + intDatatypeProperties.add(dtp); } } datatypeProperties.add(dtp); @@ -976,6 +980,14 @@ public SortedSet<DatatypeProperty> getIntDatatypePropertiesImpl() { return intDatatypeProperties; } + + /** + * @return the intDatatypeProperties + */ + @Override + public SortedSet<DatatypeProperty> getStringDatatypePropertiesImpl() { + return stringDatatypeProperties; + } /* (non-Javadoc) * @see org.dllearner.core.Reasoner#getBaseURI() Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-01 16:58:22 UTC (rev 1987) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-02 09:16:38 UTC (rev 1988) @@ -40,6 +40,7 @@ import org.dllearner.core.options.CommonConfigOptions; import org.dllearner.core.owl.BooleanValueRestriction; import org.dllearner.core.owl.ClassHierarchy; +import org.dllearner.core.owl.Constant; import org.dllearner.core.owl.DataRange; import org.dllearner.core.owl.DatatypeProperty; import org.dllearner.core.owl.DatatypeSomeRestriction; @@ -60,6 +61,7 @@ import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.ObjectValueRestriction; +import org.dllearner.core.owl.StringValueRestriction; import org.dllearner.core.owl.Thing; import org.dllearner.core.owl.Union; import org.dllearner.utilities.Helper; @@ -158,6 +160,10 @@ private Map<ObjectProperty, Map<Individual, Integer>> valueFrequency = new HashMap<ObjectProperty, Map<Individual, Integer>>(); // data structure with identified frequent values private Map<ObjectProperty, Set<Individual>> frequentValues = new HashMap<ObjectProperty, Set<Individual>>(); + // frequent data values + private Map<DatatypeProperty, Set<Constant>> frequentDataValues = new HashMap<DatatypeProperty, Set<Constant>>(); + private Map<DatatypeProperty, Map<Constant, Integer>> dataValueFrequency = new HashMap<DatatypeProperty, Map<Constant, Integer>>(); + private boolean useDataHasValueConstructor = false; // staistics public long mComputationTimeNs = 0; @@ -263,13 +269,12 @@ } } - // keep only frequent patterns (TODO it would be slightly - // more efficient if we stop adding to valueFrequency - // after threshold is reached) + // keep only frequent patterns Set<Individual> frequentInds = new TreeSet<Individual>(); for(Individual i : opMap.keySet()) { if(opMap.get(i) >= frequencyThreshold) { frequentInds.add(i); + break; } } frequentValues.put(op, frequentInds); @@ -278,14 +283,45 @@ } + for(DatatypeProperty dp : rs.getDatatypeProperties()) { + dpDomains.put(dp, rs.getDomain(dp)); + + if(useDataHasValueConstructor) { + Map<Constant, Integer> dpMap = new TreeMap<Constant, Integer>(); + dataValueFrequency.put(dp, dpMap); + + // sets ordered by corresponding individual (which we ignore) + Collection<SortedSet<Constant>> fillerSets = rs.getDatatypeMembers(dp).values(); + for(SortedSet<Constant> fillerSet : fillerSets) { + for(Constant i : fillerSet) { +// System.out.println("op " + op + " i " + i); + Integer value = dpMap.get(i); + + if(value != null) { + dpMap.put(i, value+1); + } else { + dpMap.put(i, 1); + } + } + } + + // keep only frequent patterns + Set<Constant> frequentInds = new TreeSet<Constant>(); + for(Constant i : dpMap.keySet()) { + if(dpMap.get(i) >= frequencyThreshold) { + frequentInds.add(i); + break; + } + } + frequentDataValues.put(dp, frequentInds); + } + } + // we do not need the temporary set anymore and let the // garbage collector take care of it valueFrequency = null; + dataValueFrequency = null; - for(DatatypeProperty dp : rs.getDatatypeProperties()) { - dpDomains.put(dp, rs.getDomain(dp)); - } - // compute splits for double datatype properties for(DatatypeProperty dp : rs.getDoubleDatatypeProperties()) { computeSplits(dp); @@ -930,6 +966,17 @@ } } + if(useDataHasValueConstructor) { + Set<DatatypeProperty> stringDPs = rs.getStringDatatypeProperties(); + for(DatatypeProperty dp : stringDPs) { + // loop over frequent values + Set<Constant> freqValues = frequentDataValues.get(dp); + for(Constant c : freqValues) { + m3.add(new StringValueRestriction(dp, c.getLiteral())); + } + } + } + m.put(3,m3); SortedSet<Description> m4 = new TreeSet<Description>(conceptComparator); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2010-02-02 09:37:13
|
Revision: 1989 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1989&view=rev Author: jenslehmann Date: 2010-02-02 09:36:55 +0000 (Tue, 02 Feb 2010) Log Message: ----------- hasValue support for datatypes, which are amongst the most general data properties Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java Modified: trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java 2010-02-02 09:16:38 UTC (rev 1988) +++ trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java 2010-02-02 09:36:55 UTC (rev 1989) @@ -28,8 +28,12 @@ */ public class StringValueRestriction extends DatatypeValueRestriction { + private String stringValue; + public StringValueRestriction(DatatypeProperty restrictedPropertyExpression, String value) { + // TODO: we pass it as typed property, although it could be untyped super(restrictedPropertyExpression, new TypedConstant(value.toString(), Datatype.STRING)); + stringValue = value.toString(); } private static final long serialVersionUID = 5651982376457935975L; @@ -39,4 +43,8 @@ return 3; } + public String getStringValue() { + return stringValue; + } + } Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2010-02-02 09:16:38 UTC (rev 1988) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2010-02-02 09:36:55 UTC (rev 1989) @@ -381,8 +381,10 @@ else if(uri.equals(Datatype.INT.getURI())) intDatatypeProperties.add(dtp); else if(uri.equals(Datatype.STRING.getURI())) - intDatatypeProperties.add(dtp); + stringDatatypeProperties.add(dtp); } + } else { + stringDatatypeProperties.add(dtp); } datatypeProperties.add(dtp); } @@ -390,8 +392,6 @@ individuals.add(new Individual(owlIndividual.getURI().toString())); } - - } /* (non-Javadoc) Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-02 09:16:38 UTC (rev 1988) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-02 09:36:55 UTC (rev 1989) @@ -147,6 +147,7 @@ private Map<NamedClass,Set<ObjectProperty>> mgr = new TreeMap<NamedClass,Set<ObjectProperty>>(); private Map<NamedClass,Set<DatatypeProperty>> mgbd = new TreeMap<NamedClass,Set<DatatypeProperty>>(); private Map<NamedClass,Set<DatatypeProperty>> mgdd = new TreeMap<NamedClass,Set<DatatypeProperty>>(); + private Map<NamedClass,Set<DatatypeProperty>> mgsd = new TreeMap<NamedClass,Set<DatatypeProperty>>(); // concept comparator private ConceptComparator conceptComparator = new ConceptComparator(); @@ -643,6 +644,13 @@ refinements.add(newDSR); } } + } else if (description instanceof StringValueRestriction) { + StringValueRestriction svr = (StringValueRestriction) description; + DatatypeProperty dp = svr.getRestrictedPropertyExpresssion(); + Set<DatatypeProperty> subDPs = rs.getSubProperties(dp); + for(DatatypeProperty subDP : subDPs) { + refinements.add(new StringValueRestriction(subDP, svr.getStringValue())); + } } // if a refinement is not Bottom, Top, ALL r.Bottom a refinement of top can be appended @@ -1083,6 +1091,17 @@ } } + if(useDataHasValueConstructor) { + Set<DatatypeProperty> stringDPs = mgsd.get(nc); + for(DatatypeProperty dp : stringDPs) { + // loop over frequent values + Set<Constant> freqValues = frequentDataValues.get(dp); + for(Constant c : freqValues) { + m3.add(new StringValueRestriction(dp, c.getLiteral())); + } + } + } + mA.get(nc).put(3,m3); SortedSet<Description> m4 = new TreeSet<Description>(conceptComparator); @@ -1106,10 +1125,11 @@ if(appOP.get(domain) == null) computeApp(domain); - // initialise mgr, mgbd, mgdd + // initialise mgr, mgbd, mgdd, mgsd mgr.put(domain, new TreeSet<ObjectProperty>()); mgbd.put(domain, new TreeSet<DatatypeProperty>()); mgdd.put(domain, new TreeSet<DatatypeProperty>()); + mgsd.put(domain, new TreeSet<DatatypeProperty>()); SortedSet<ObjectProperty> mostGeneral = rs.getMostGeneralProperties(); computeMgrRecursive(domain, mostGeneral, mgr.get(domain)); @@ -1118,8 +1138,10 @@ // datatype properties have the same type (e.g. boolean, integer, double) Set<DatatypeProperty> mostGeneralBDP = Helper.intersection(mostGeneralDP, rs.getBooleanDatatypeProperties()); Set<DatatypeProperty> mostGeneralDDP = Helper.intersection(mostGeneralDP, rs.getDoubleDatatypeProperties()); + Set<DatatypeProperty> mostGeneralSDP = Helper.intersection(mostGeneralDP, rs.getStringDatatypeProperties()); computeMgbdRecursive(domain, mostGeneralBDP, mgbd.get(domain)); computeMgddRecursive(domain, mostGeneralDDP, mgdd.get(domain)); + computeMgsdRecursive(domain, mostGeneralSDP, mgsd.get(domain)); } private void computeMgrRecursive(NamedClass domain, Set<ObjectProperty> currProperties, Set<ObjectProperty> mgrTmp) { @@ -1149,6 +1171,15 @@ } } + private void computeMgsdRecursive(NamedClass domain, Set<DatatypeProperty> currProperties, Set<DatatypeProperty> mgsdTmp) { + for(DatatypeProperty prop : currProperties) { + if(appDD.get(domain).contains(prop)) + mgsdTmp.add(prop); + else + computeMgsdRecursive(domain, rs.getSubProperties(prop), mgsdTmp); + } + } + // computes the set of applicable properties for a given class private void computeApp(NamedClass domain) { // object properties This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2010-02-05 08:35:10
|
Revision: 1991 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1991&view=rev Author: lorenz_b Date: 2010-02-05 08:35:01 +0000 (Fri, 05 Feb 2010) Log Message: ----------- Fixed some bugs. Added some help messages. Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/evaluation/EvaluationComputingScript.java trunk/src/dl-learner/org/dllearner/scripts/evaluation/EvaluationGUI.java trunk/src/dl-learner/org/dllearner/scripts/evaluation/StatsGenerator.java trunk/src/dl-learner/org/dllearner/scripts/evaluation/ontologies.txt trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/Explanation.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ManualLearnPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java trunk/src/dl-learner/org/dllearner/utilities/statistics/FleissKappa.java Modified: trunk/src/dl-learner/org/dllearner/scripts/evaluation/EvaluationComputingScript.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/evaluation/EvaluationComputingScript.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/scripts/evaluation/EvaluationComputingScript.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -625,12 +625,8 @@ System.out.println("You need to give an OWL file as argument."); System.exit(0); } - URL fileURL = null; - if(args[0].startsWith("http")){ - fileURL = new URL(args[0]); - } else { - fileURL = new File(new URL(args[0]).toURI()).toURI().toURL(); - } + URL fileURL = new URL(args[0]); + long startTime = System.currentTimeMillis(); new EvaluationComputingScript(fileURL); System.out.println("Overall computing time: " + (System.currentTimeMillis() - startTime)/1000 +" s"); Modified: trunk/src/dl-learner/org/dllearner/scripts/evaluation/EvaluationGUI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/evaluation/EvaluationGUI.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/scripts/evaluation/EvaluationGUI.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -795,7 +795,7 @@ * @throws ClassNotFoundException * @throws URISyntaxException */ - public static void main(String[] args) throws ComponentInitException, MalformedURLException, + public static void main(String[] args) throws ComponentInitException, LearningProblemUnsupportedException, ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException, URISyntaxException { Modified: trunk/src/dl-learner/org/dllearner/scripts/evaluation/StatsGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/evaluation/StatsGenerator.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/scripts/evaluation/StatsGenerator.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -12,6 +12,7 @@ import java.net.URISyntaxException; import java.net.URL; import java.text.DecimalFormat; +import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -20,10 +21,14 @@ import java.util.Set; import java.util.Map.Entry; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.utilities.statistics.FleissKappa; import org.dllearner.utilities.statistics.Stat; +import org.mindswap.pellet.utils.SetUtils; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyCreationException; @@ -72,6 +77,11 @@ private int suggestionListsCount; private int logicalAxiomCount; private OWLOntology ont; + + //matrix for Fleiss Kappa input + private short[][] mat; + private List<NamedClass> equivalentLists; + private List<NamedClass> superLists; public StatsGenerator(File directory) { // begin latex table with headers @@ -79,9 +89,9 @@ beginStatsTable(); // for each ontology for (File suggestionFile : directory.listFiles(new ResultFileFilter())) { - clearStats(); loadSuggestions(suggestionFile); loadOntology(suggestionFile); + resetStats(); // for each user evaluation input file for (File inputFile : directory.listFiles(new NameFilter(suggestionFile))) { loadUserInput(inputFile); @@ -110,7 +120,7 @@ } } - private void clearStats() { + private void resetStats() { acceptedGlobalStat = new Stat(); rejectedGlobalStat = new Stat(); failedGlobalStat = new Stat(); @@ -126,6 +136,10 @@ accSelectedStatsSC.clear(); accAboveThresholdStatsSC.clear(); positionStatsSC.clear(); + + equivalentLists = new ArrayList<NamedClass>(equivalentSuggestions.keySet()); + superLists = new ArrayList<NamedClass>(superSuggestions.keySet()); + mat = new short[suggestionListsCount][3]; } private void makeSingleStat() { @@ -156,16 +170,21 @@ Stat accSelectedStatSC = new Stat(); Stat accAboveThresholdStatSC = new Stat(); Stat positionStatSC = new Stat(); - // analysing input for equivalent class expressions for (Entry<NamedClass, String> e : equivalentInput.entrySet()) { NamedClass currentClass = e.getKey(); String input = e.getValue(); + if(input.equals("-1")){ + input = "n"; + } if (input.equals("m")) { missesCount++; + mat[equivalentLists.indexOf(currentClass)][2]++; } else if (input.equals("n")) { noSensibleDescriptionCount++; + mat[equivalentLists.indexOf(currentClass)][1]++; } else { + mat[equivalentLists.indexOf(currentClass)][0]++; int selectedIndex = Integer.parseInt(input); EvaluatedDescriptionClass selectedExpression = equivalentSuggestions.get(currentClass).get( selectedIndex); @@ -204,9 +223,12 @@ NamedClass currentClass = e.getKey(); if (e.getValue().equals("m")) { missesCountSC++; + mat[superLists.indexOf(currentClass) + equivalentLists.size()][2]++; } else if (e.getValue().equals("n")) { noSensibleDescriptionCountSC++; + mat[superLists.indexOf(currentClass) + equivalentLists.size()][1]++; } else { + mat[superLists.indexOf(currentClass) + equivalentLists.size()][0]++; int selectedIndex = Integer.parseInt(e.getValue()); EvaluatedDescriptionClass selectedExpression = superSuggestions.get(currentClass).get(selectedIndex); double bestAcc = superSuggestions.get(currentClass).get(0).getAccuracy(); @@ -351,6 +373,13 @@ + df.format(additionalInstanceCountEq) + " & " + df.format(additionalInstanceCount) + "\\\\\n"); + for(int i = 0; i < mat.length; i++){ + for(int j = 0; j < mat[i].length; j++){ + System.out.print(mat[i][j]); + } + System.out.println(); + } + System.out.println(new FleissKappa().computeKappa(mat)); } private void addOntologyMetricsTableRow(){ @@ -403,7 +432,7 @@ } catch (Exception e) { } } - suggestionListsCount = equivalentSuggestions.size() + superSuggestions.size(); + suggestionListsCount = equivalentSuggestions.keySet().size() + superSuggestions.keySet().size(); } /** @@ -459,6 +488,7 @@ */ public static void main(String[] args) throws MalformedURLException, URISyntaxException { Locale.setDefault(Locale.ENGLISH); + Logger.getRootLogger().setLevel(Level.DEBUG); File directory = new File(new URL(args[0]).toURI()); new StatsGenerator(directory); } Modified: trunk/src/dl-learner/org/dllearner/scripts/evaluation/ontologies.txt =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/evaluation/ontologies.txt 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/scripts/evaluation/ontologies.txt 2010-02-05 08:35:01 UTC (rev 1991) @@ -1 +1 @@ -http://www.mindswap.org/ontologies/SC.owl \ No newline at end of file +http://www.inter2geo.eu/2008/ontology/ontology.owl \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -64,6 +64,9 @@ try { + UIManager.put("OptionPane.cancelButtonText","Cancel"); + UIManager.put("ProgressMonitor.progressText","Progress"); + UIManager.setLookAndFeel(new PlasticLookAndFeel()); UIDefaults def = UIManager.getLookAndFeelDefaults(); Vector<?> vec = new Vector<Object>(def.keySet()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/Explanation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/Explanation.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/Explanation.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -42,8 +42,14 @@ } @Override - public boolean equals(Object obj) { - Explanation exp = (Explanation)obj; + public boolean equals(Object o) { + if(o == this){ + return true; + } + if(!(o instanceof Explanation)){ + return false; + } + Explanation exp = (Explanation)o; return exp.getEntailment().equals(entailment) && exp.getAxioms().equals(axioms); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -69,7 +69,7 @@ // Set the necessary fields expGen.setReasonerFactory( new PelletReasonerFactory() ); expGen.setReasoner( reasoner ); - expGen.setOntologies( manager.getImportsClosure(ontologies.iterator().next()) ); + expGen.setOntologies( ontologies ); // Create the converter that will translate axioms into class expressions converter = new SatisfiabilityConverter( manager.getOWLDataFactory() ); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -15,7 +15,10 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.IOException; +import java.net.HttpURLConnection; import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -90,7 +93,7 @@ private ImageIcon toggledIcon = new ImageIcon(this.getClass().getResource("../toggled.gif")); private ImageIcon untoggledIcon = new ImageIcon(this.getClass().getResource("../untoggled.gif")); - private final String URLHelpText = "<html><table border=\"1\">" + + private static final String URL_HELP_TEXT = "<html><table border=\"1\">" + "<tr>" + "<th>SPARQL endpoint URL</th>" + "<th>The URL of the SPARQL endpoint</th>" + @@ -101,7 +104,7 @@ "</tr> " + "</table></html>"; - private final String classHelpText = "Enter a class uri or label for which a " + + private static final String CLASS_HELP_TEXT = "Enter a class uri or label for which a " + "relevant fragment should be extracted."; private SPARQLTasks task; @@ -110,7 +113,7 @@ private ProgressMonitor mon; private Timer t; - private Map<URL, List<String>> endpointToDefaultGraph; + private Map<URI, List<String>> endpointToDefaultGraph; public ExtractFromSparqlDialog(JFrame owner) { super(owner, "Extract fragment from SPARQL endpoint", true); @@ -178,7 +181,7 @@ endPointHolderPanel.add(new JLabel("Default graph URI (optional)")); endPointHolderPanel.add(defaultGraphField); HelpablePanel endPointHelpPanel = new HelpablePanel(endPointHolderPanel); - endPointHelpPanel.setHelpText(URLHelpText); + endPointHelpPanel.setHelpText(URL_HELP_TEXT); endPointHelpPanel.setBorder(new TitledBorder("SPARQL endpoint")); panel.add(endPointHelpPanel, c); @@ -207,7 +210,7 @@ gbc.weighty = 1.0; classHolderPanel.add(classField,gbc); HelpablePanel classHelpPanel = new HelpablePanel(classHolderPanel); - classHelpPanel.setHelpText(classHelpText); + classHelpPanel.setHelpText(CLASS_HELP_TEXT); classHelpPanel.setBorder(new TitledBorder("Class to investigate")); panel.add(classHelpPanel, c); @@ -274,11 +277,16 @@ } private void addPredefinedEndpoints(){ - endpointToDefaultGraph = new HashMap<URL, List<String>>(); + endpointToDefaultGraph = new HashMap<URI, List<String>>(); for(SparqlEndpoint endpoint : SparqlEndpoint.listEndpoints()){ - endpointToDefaultGraph.put(endpoint.getURL(), endpoint.getDefaultGraphURIs()); + try { + endpointToDefaultGraph.put(endpoint.getURL().toURI(), endpoint.getDefaultGraphURIs()); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } - for(URL url : endpointToDefaultGraph.keySet()){ + for(URI url : endpointToDefaultGraph.keySet()){ comboBox.addItem(url.toString()); } } @@ -355,13 +363,12 @@ private void extract() { message.setText("Checking SPARQL endpoint availability"); setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - - setLocale(Locale.ENGLISH); mon = new ProgressMonitor(this, "Extracting fragment", "", 0, 100); mon.setMillisToDecideToPopup(0); mon.setMillisToPopup(0); - mon.getAccessibleContext().getLocale().setDefault(Locale.ENGLISH); + mon.getAccessibleContext().getLocale(); + t = new Timer(1000,new ActionListener() { @@ -387,6 +394,21 @@ } + private boolean URLExists(){ + try { + HttpURLConnection.setFollowRedirects(false); + HttpURLConnection con = (HttpURLConnection)new URL(comboBox.getSelectedItem().toString()).openConnection(); + con.setRequestMethod("HEAD"); + return con.getResponseCode() == HttpURLConnection.HTTP_OK; + } catch (MalformedURLException e) { + e.printStackTrace(); + return false; + } catch (IOException e) { + e.printStackTrace(); + return false; + } + } + private boolean urlIsConnectable() { @@ -565,13 +587,7 @@ message.setText(""); JComboBox cb = (JComboBox)e.getSource(); if(cb.getSelectedIndex() >= 0){ - URL endpointURL = null; - try { - endpointURL = new URL((String)cb.getSelectedItem()); - } catch (MalformedURLException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } + URI endpointURL = URI.create((String)cb.getSelectedItem()); List<String> defaultGraphs = endpointToDefaultGraph.get(endpointURL); if(defaultGraphs != null && !defaultGraphs.isEmpty()){ defaultGraphField.setText(defaultGraphs.iterator().next()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -124,15 +124,15 @@ c.gridy = 7; add(getAllSuperClassesCheckBox, c); -// c.anchor = GridBagConstraints.LINE_START; -// c.gridx = 1; -// c.gridy = 8; -// add(new JLabel("Use literals"), c); -// useLitsCheckBox = new JCheckBox(); -// c.anchor = GridBagConstraints.LINE_END; -// c.gridx = 0; -// c.gridy = 8; -// add(useLitsCheckBox, c); + c.anchor = GridBagConstraints.LINE_START; + c.gridx = 1; + c.gridy = 8; + add(new JLabel("Use literals"), c); + useLitsCheckBox = new JCheckBox(); + c.anchor = GridBagConstraints.LINE_END; + c.gridx = 0; + c.gridy = 8; + add(useLitsCheckBox, c); } @@ -181,7 +181,7 @@ getPropertyInformationCheckBox.setSelected(false); closeAfterRecursionCheckBox.setSelected(true); getAllSuperClassesCheckBox.setSelected(true); -// useLitsCheckBox.setSelected(true); + useLitsCheckBox.setSelected(false); } public void setToolTips(){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -324,7 +324,7 @@ * @param newValue The new enabled status of the button. */ public void setBackButtonEnabled(boolean newValue) { - wizardModel.setBackButtonEnabled(new Boolean(newValue)); + wizardModel.setBackButtonEnabled(Boolean.valueOf(newValue)); } /** @@ -340,7 +340,7 @@ * @param newValue The new enabled status of the button. */ public void setNextFinishButtonEnabled(boolean newValue) { - wizardModel.setNextFinishButtonEnabled(new Boolean(newValue)); + wizardModel.setNextFinishButtonEnabled(Boolean.valueOf(newValue)); } /** @@ -356,7 +356,7 @@ * @param newValue The new enabled status of the button. */ public void setCancelButtonEnabled(boolean newValue) { - wizardModel.setCancelButtonEnabled(new Boolean(newValue)); + wizardModel.setCancelButtonEnabled(Boolean.valueOf(newValue)); } /** Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardModel.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardModel.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -194,7 +194,7 @@ void setBackButtonEnabled(Boolean newValue) { Boolean oldValue = getBackButtonEnabled(); - if (newValue != oldValue) { + if (!newValue.equals(oldValue)) { buttonEnabledHashmap.put(BACK_BUTTON_ENABLED_PROPERTY, newValue); firePropertyChange(BACK_BUTTON_ENABLED_PROPERTY, oldValue, newValue); } @@ -207,7 +207,7 @@ void setNextFinishButtonEnabled(Boolean newValue) { Boolean oldValue = getNextFinishButtonEnabled(); - if (newValue != oldValue) { + if (!newValue.equals(oldValue)) { buttonEnabledHashmap.put(NEXT_FINISH_BUTTON_ENABLED_PROPERTY, newValue); firePropertyChange(NEXT_FINISH_BUTTON_ENABLED_PROPERTY, oldValue, newValue); } @@ -220,7 +220,7 @@ void setCancelButtonEnabled(Boolean newValue) { Boolean oldValue = getCancelButtonEnabled(); - if (newValue != oldValue) { + if (!newValue.equals(oldValue)) { buttonEnabledHashmap.put(CANCEL_BUTTON_ENABLED_PROPERTY, newValue); firePropertyChange(CANCEL_BUTTON_ENABLED_PROPERTY, oldValue, newValue); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -20,7 +20,6 @@ import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.EvaluatedDescriptionClass; -import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; @@ -45,11 +44,6 @@ private EquivalentLearningTask equivalentLearningTask; private SuperClassLearningTask superLearningTask; - private Timer timer; - private LearningAlgorithm la; - - private SwingWorker<Void, List<? extends EvaluatedDescription>> currentLearningTask; - private int currentClassIndex = 0; @@ -97,7 +91,6 @@ TaskManager.getInstance().getStatusBar().setMessage("Learning equivalent class expressions..."); getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); equivalentLearningTask = new EquivalentLearningTask(); - currentLearningTask = equivalentLearningTask; equivalentLearningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); equivalentLearningTask.execute(); } @@ -107,7 +100,6 @@ TaskManager.getInstance().getStatusBar().setProgress(0); getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); superLearningTask = new SuperClassLearningTask(); - currentLearningTask = superLearningTask; superLearningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); superLearningTask.execute(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -191,11 +191,11 @@ while(iter.hasNext()){ NamedClass nc = iter.next(); int instanceCount = OREManager.getInstance().getReasoner().getIndividuals(nc).size(); - Set<NamedClass> temp = instanceCountToClasses.get(new Integer(instanceCount)); + Set<NamedClass> temp = instanceCountToClasses.get(Integer.valueOf(instanceCount)); if(temp == null) { temp = new HashSet<NamedClass>(); temp.add(nc); - instanceCountToClasses.put(new Integer(instanceCount), temp); + instanceCountToClasses.put(Integer.valueOf(instanceCount), temp); } temp.add(nc); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -62,6 +62,11 @@ private JPanel manualLearnPanel; private JPanel autoLearnPanel; + private static final String HELP_TEXT = "<html>You can choose whether you want to learn class " + + "descriptions for a single, manually selected class,<br>" + + "or you can learn class descriptions step by step for all classes with a minimum " + + "number of instances.</html>"; + private LearningOptionsPanel learningOptionsPanel; /** @@ -92,6 +97,7 @@ HelpablePanel optionsHelpPanel = new HelpablePanel(optionsPanel); optionsHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); + optionsHelpPanel.setHelpText(HELP_TEXT); c.gridwidth = GridBagConstraints.REMAINDER; add(optionsHelpPanel, c); @@ -192,7 +198,7 @@ public void reset(){ classesTable.clear(); - minInstanceCountSpinner.setValue(new Integer(1)); + minInstanceCountSpinner.setValue(Integer.valueOf(1)); autoLearnButton.setSelected(true); setAutoLearningPanel(true); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ManualLearnPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ManualLearnPanel.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ManualLearnPanel.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -74,11 +74,36 @@ private GridBagConstraints c; - private static String INCONSISTENCYWARNING = "<html><font color=red>" + + private static final String INCONSISTENCY_WARNING = "<html><font color=red>" + "Warning! Adding selected class expression leads to an inconsistent ontology." + "</font></html>"; + + private static final String LEARNTYPE_HELP_TEXT = "<html>You can choose between learning class " + + "expressions, which are equivalent to your selected class,<br>" + + "or learning class expressions, which subsumes the seleminimal number ofcted class.</html>"; + + private static final String LEARNOPTIONS_HELP_TEXT = "<html><table border=\"1\">" + + "<tr>" + + "<th>Noise</th>" + + "<th></th>" + + "</tr>" + + "<tr>" + + "<th>Max. execution time</th>" + + "<th>The maximal time in seconds after which the algorithm terminates.</th>" + + "</tr>" + + "<tr>" + + "<th>Max. number of results</th>" + + "<th>The maximal number of class expressions which will be returned.</th>" + + "</tr>" + + "<tr>" + + "<th>Threshold</th>" + + "<th>Specifies the minimal accuracy value, which the results must have to be shown.</th>" + + "</tr>"+ + "</table></html>"; + + private static final String COVERAGE_HELP_TEXT = "This panel shows an abstract coverage view " + + "of the instances in the ontology."; - public ManualLearnPanel() { createUI(); } @@ -158,6 +183,7 @@ learnTypePanel.add(superClassButton); HelpablePanel learnTypeHelpPanel = new HelpablePanel(learnTypePanel); learnTypeHelpPanel.setBorder(new TitledBorder("Learning type")); + learnTypeHelpPanel.setHelpText(LEARNTYPE_HELP_TEXT); buttonSliderPanel.add(learnTypeHelpPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); @@ -165,6 +191,7 @@ optionsPanel = new LearningOptionsPanel(); HelpablePanel optionsHelpPanel = new HelpablePanel(optionsPanel); optionsHelpPanel.setBorder(new TitledBorder("Options")); + optionsHelpPanel.setHelpText(LEARNOPTIONS_HELP_TEXT); buttonSliderPanel.add(optionsHelpPanel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0)); @@ -181,6 +208,7 @@ graphicPanel = new GraphicalCoveragePanel(""); HelpablePanel coverageHelpPanel = new HelpablePanel(graphicPanel); + coverageHelpPanel.setHelpText(COVERAGE_HELP_TEXT); JPanel graphicHolderPanel = new JPanel(new BorderLayout()); graphicHolderPanel.add(coverageHelpPanel); @@ -227,7 +255,7 @@ public void showInconsistencyWarning(boolean show){ if(show){ - inconsistencyLabel.setText(INCONSISTENCYWARNING); + inconsistencyLabel.setText(INCONSISTENCY_WARNING); } else { inconsistencyLabel.setText(" "); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -56,8 +56,12 @@ private JPanel buttonExplanationsPanel; - private final String EXPLANATION_TYPE_TEXT = ""; - private final String EXPLANATION_COUNT_TEXT = ""; + private static final String EXPLANATION_TYPE_TEXT = "<html>You can select whether the shown explanations shell " + + "only contain axioms, which are asserted in the ontology," + + "<br>or whether the explanations show only relevant parts of the original axioms.</html>" + + ""; + private static final String EXPLANATION_COUNT_TEXT = "<html>You can choose between showing/computing all " + + "explanations,<br> or only a limited number of them.</html>"; private ButtonGroup explanationType; Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/FleissKappa.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/FleissKappa.java 2010-02-02 16:28:41 UTC (rev 1990) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/FleissKappa.java 2010-02-05 08:35:01 UTC (rev 1991) @@ -49,6 +49,10 @@ final int N = mat.length; final int k = mat[0].length; + if(n < 2){ + System.err.println("Only " + n + " raters per subject detected. There have to be at least 2 raters per subject"); + return -999; + } logger.debug(n + " raters."); logger.debug(N + " subjects."); logger.debug(k + " categories."); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2010-02-08 19:02:13
|
Revision: 1994 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1994&view=rev Author: jenslehmann Date: 2010-02-08 19:02:07 +0000 (Mon, 08 Feb 2010) Log Message: ----------- some bug fixes for data hasValue support 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/core/configurators/CELOEConfigurator.java trunk/src/dl-learner/org/dllearner/core/configurators/ROLComponent2Configurator.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/core/owl/Constant.java trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java trunk/src/dl-learner/org/dllearner/core/owl/UntypedConstant.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -152,6 +152,7 @@ options.add(CommonConfigOptions.useAllConstructor()); options.add(CommonConfigOptions.useExistsConstructor()); options.add(CommonConfigOptions.useHasValueConstructor()); + options.add(CommonConfigOptions.useDataHasValueConstructor()); options.add(CommonConfigOptions.valueFreqencyThreshold()); options.add(CommonConfigOptions.useCardinalityRestrictions()); options.add(CommonConfigOptions.cardinalityLimit()); Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement2/ROLComponent2.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement2/ROLComponent2.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement2/ROLComponent2.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -193,6 +193,7 @@ options.add(CommonConfigOptions.useAllConstructor()); options.add(CommonConfigOptions.useExistsConstructor()); options.add(CommonConfigOptions.useHasValueConstructor()); + options.add(CommonConfigOptions.useDataHasValueConstructor()); options.add(CommonConfigOptions.valueFreqencyThreshold()); options.add(CommonConfigOptions.useCardinalityRestrictions()); options.add(CommonConfigOptions.cardinalityLimit()); Modified: trunk/src/dl-learner/org/dllearner/core/configurators/CELOEConfigurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/CELOEConfigurator.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/core/configurators/CELOEConfigurator.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -85,6 +85,15 @@ return (Boolean) ComponentManager.getInstance().getConfigOptionValue(cELOE, "useHasValueConstructor") ; } /** +* useDataHasValueConstructor specifies whether the hasValue constructor is used in the learning algorithm in combination with data properties. +* mandatory: false| reinit necessary: true +* default value: false +* @return boolean +**/ +public boolean getUseDataHasValueConstructor() { +return (Boolean) ComponentManager.getInstance().getConfigOptionValue(cELOE, "useDataHasValueConstructor") ; +} +/** * valueFrequencyThreshold specifies how often an object must occur as value in order to be considered for hasValue restrictions. * mandatory: false| reinit necessary: true * default value: 3 @@ -221,6 +230,15 @@ reinitNecessary = true; } /** +* @param useDataHasValueConstructor specifies whether the hasValue constructor is used in the learning algorithm in combination with data properties. +* mandatory: false| reinit necessary: true +* default value: false +**/ +public void setUseDataHasValueConstructor(boolean useDataHasValueConstructor) { +ComponentManager.getInstance().applyConfigEntry(cELOE, "useDataHasValueConstructor", useDataHasValueConstructor); +reinitNecessary = true; +} +/** * @param valueFrequencyThreshold specifies how often an object must occur as value in order to be considered for hasValue restrictions. * mandatory: false| reinit necessary: true * default value: 3 Modified: trunk/src/dl-learner/org/dllearner/core/configurators/ROLComponent2Configurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/ROLComponent2Configurator.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/core/configurators/ROLComponent2Configurator.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -225,6 +225,15 @@ return (Boolean) ComponentManager.getInstance().getConfigOptionValue(rOLComponent2, "useHasValueConstructor") ; } /** +* useDataHasValueConstructor specifies whether the hasValue constructor is used in the learning algorithm in combination with data properties. +* mandatory: false| reinit necessary: true +* default value: false +* @return boolean +**/ +public boolean getUseDataHasValueConstructor() { +return (Boolean) ComponentManager.getInstance().getConfigOptionValue(rOLComponent2, "useDataHasValueConstructor") ; +} +/** * valueFrequencyThreshold specifies how often an object must occur as value in order to be considered for hasValue restrictions. * mandatory: false| reinit necessary: true * default value: 3 @@ -586,6 +595,15 @@ reinitNecessary = true; } /** +* @param useDataHasValueConstructor specifies whether the hasValue constructor is used in the learning algorithm in combination with data properties. +* mandatory: false| reinit necessary: true +* default value: false +**/ +public void setUseDataHasValueConstructor(boolean useDataHasValueConstructor) { +ComponentManager.getInstance().applyConfigEntry(rOLComponent2, "useDataHasValueConstructor", useDataHasValueConstructor); +reinitNecessary = true; +} +/** * @param valueFrequencyThreshold specifies how often an object must occur as value in order to be considered for hasValue restrictions. * mandatory: false| reinit necessary: true * default value: 3 Modified: trunk/src/dl-learner/org/dllearner/core/configurators/RefinementOperatorConfigurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/RefinementOperatorConfigurator.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/core/configurators/RefinementOperatorConfigurator.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -45,6 +45,10 @@ return false; } + public boolean getUseDataHasValueConstructor() { + return false; + } + public int getValueFrequencyThreshold() { return 3; } Modified: trunk/src/dl-learner/org/dllearner/core/options/CommonConfigOptions.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/options/CommonConfigOptions.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/core/options/CommonConfigOptions.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -43,6 +43,7 @@ public static boolean useAllConstructorDefault = true; public static boolean useExistsConstructorDefault = true; public static boolean useHasValueConstructorDefault = false; + public static boolean useDataHasValueConstructorDefault = false; public static int valueFrequencyThresholdDefault = 3; public static boolean useCardinalityRestrictionsDefault = true; public static int cardinalityLimitDefault = 5; @@ -133,6 +134,10 @@ return new BooleanConfigOption("useHasValueConstructor", "specifies whether the hasValue constructor is used in the learning algorithm",useHasValueConstructorDefault); } + public static BooleanConfigOption useDataHasValueConstructor() { + return new BooleanConfigOption("useDataHasValueConstructor", "specifies whether the hasValue constructor is used in the learning algorithm in combination with data properties",useDataHasValueConstructorDefault); + } + public static IntegerConfigOption valueFreqencyThreshold() { return new IntegerConfigOption("valueFrequencyThreshold", "specifies how often an object must occur as value in order to be considered for hasValue restrictions",valueFrequencyThresholdDefault); } Modified: trunk/src/dl-learner/org/dllearner/core/owl/Constant.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/Constant.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/core/owl/Constant.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -25,7 +25,7 @@ * @author Jens Lehmann * */ -public abstract class Constant implements KBElement { +public abstract class Constant implements KBElement, Comparable<Constant> { /** * @@ -43,4 +43,5 @@ public String getLiteral() { return literal; } + } Modified: trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -27,7 +27,7 @@ * @author Jens Lehmann * */ -public class TypedConstant extends Constant implements Comparable<TypedConstant> { +public class TypedConstant extends Constant { /** * @@ -100,6 +100,14 @@ return literal + "^^" + datatype; } + @Override + public int compareTo(Constant o) { + if(o instanceof UntypedConstant) { + return 1; + } + String str = literal + datatype; + String str2 = o.literal + ((TypedConstant)o).datatype; + return str.compareTo(str2); + } - } Modified: trunk/src/dl-learner/org/dllearner/core/owl/UntypedConstant.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/UntypedConstant.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/core/owl/UntypedConstant.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -113,6 +113,15 @@ return literal; } } + + @Override + public int compareTo(Constant o) { + if(o instanceof TypedConstant) { + return -1; + } + String str = literal + lang; + String str2 = ((UntypedConstant)o).literal + ((UntypedConstant)o).lang; + return str.compareTo(str2); + } - } Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -998,6 +998,12 @@ } @Override + public Map<Individual, SortedSet<Constant>> getDatatypeMembersImpl( + DatatypeProperty datatypeProperty) { + return rc.getDatatypeMembersImpl(datatypeProperty); + } + + @Override public Set<Individual> getRelatedIndividualsImpl(Individual individual, ObjectProperty objectProperty) throws ReasoningMethodUnsupportedException { return rc.getRelatedIndividuals(individual, objectProperty); } Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -205,6 +205,7 @@ useAllConstructor = configurator.getUseAllConstructor(); useExistsConstructor = configurator.getUseExistsConstructor(); useHasValueConstructor = configurator.getUseHasValueConstructor(); + useDataHasValueConstructor = configurator.getUseDataHasValueConstructor(); frequencyThreshold = configurator.getValueFrequencyThreshold(); useCardinalityRestrictions = configurator.getUseCardinalityRestrictions(); cardinalityLimit = configurator.getCardinalityLimit(); @@ -231,6 +232,7 @@ this.frequencyThreshold = valueFrequencyThreshold; this.useCardinalityRestrictions = useCardinalityRestrictions; cardinalityLimit = configurator.getCardinalityLimit(); + this.useDataHasValueConstructor = configurator.getUseDataHasValueConstructor(); this.useNegation = useNegation; this.useBooleanDatatypes = useBooleanDatatypes; this.useDoubleDatatypes = useDoubleDatatypes; Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java 2010-02-08 10:08:43 UTC (rev 1993) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java 2010-02-08 19:02:07 UTC (rev 1994) @@ -23,8 +23,10 @@ import java.util.Set; import org.dllearner.core.owl.BooleanValueRestriction; +import org.dllearner.core.owl.Constant; import org.dllearner.core.owl.DatatypeProperty; import org.dllearner.core.owl.DatatypeSomeRestriction; +import org.dllearner.core.owl.DatatypeValueRestriction; import org.dllearner.core.owl.DoubleMaxValue; import org.dllearner.core.owl.DoubleMinValue; import org.dllearner.core.owl.Individual; @@ -204,8 +206,23 @@ } } else return -1; + } else if(concept1 instanceof DatatypeValueRestriction) { + if(concept2 instanceof Nothing || concept2 instanceof NamedClass || concept2 instanceof BooleanValueRestriction || concept2 instanceof DatatypeSomeRestriction || concept2 instanceof ObjectValueRestriction) { + return 1; + } else if(concept2 instanceof DatatypeValueRestriction) { + int roleCompare = rc.compare(((DatatypeValueRestriction)concept1).getRestrictedPropertyExpression(), ((DatatypeValueRestriction)concept2).getRestrictedPropertyExpression()); + + if(roleCompare == 0) { + Constant value1 = ((DatatypeValueRestriction)concept1).getValue(); + Constant value2 = ((DatatypeValueRestriction)concept2).getValue(); + return value1.compareTo(value2); + } else { + return roleCompare; + } + } else + return -1; } else if(concept1 instanceof Thing) { - if(concept2 instanceof Nothing || concept2 instanceof NamedClass || concept2 instanceof BooleanValueRestriction || concept2 instanceof DatatypeSomeRestriction || concept2 instanceof ObjectValueRestriction) + if(concept2 instanceof Nothing || concept2 instanceof NamedClass || concept2 instanceof BooleanValueRestriction || concept2 instanceof DatatypeSomeRestriction || concept2 instanceof ObjectValueRestriction || concept2 instanceof DatatypeValueRestriction) return 1; else if(concept2 instanceof Thing) return 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2010-02-10 09:27:36
|
Revision: 2000 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2000&view=rev Author: jenslehmann Date: 2010-02-10 09:27:28 +0000 (Wed, 10 Feb 2010) Log Message: ----------- - implemented refinement operator inverter (turns downward refinement operator into upward refinement operator and vice versa) - rho DR operator can be set to drop disjuncts - jUnit test case for the above features Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/Description.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java trunk/src/dl-learner/org/dllearner/test/junit/RefinementOperatorTests.java trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/refinementoperators/OperatorInverter.java Modified: trunk/src/dl-learner/org/dllearner/core/owl/Description.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/Description.java 2010-02-09 15:51:12 UTC (rev 1999) +++ trunk/src/dl-learner/org/dllearner/core/owl/Description.java 2010-02-10 09:27:28 UTC (rev 2000) @@ -164,6 +164,11 @@ children.remove(child); } + public void removeChild(int index) { + children.get(index).setParent(null); + children.remove(index); + } + public void replaceChild(int index, Description newChild) { children.remove(index); children.add(index, newChild); Added: trunk/src/dl-learner/org/dllearner/refinementoperators/OperatorInverter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/OperatorInverter.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/OperatorInverter.java 2010-02-10 09:27:28 UTC (rev 2000) @@ -0,0 +1,93 @@ +/** + * Copyright (C) 2007-2010, 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 java.util.TreeSet; + +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Negation; +import org.dllearner.utilities.owl.ConceptComparator; +import org.dllearner.utilities.owl.ConceptTransformation; + +/** + * The class uses an existing refinement operator and inverts it, i.e. a + * downward refinement operator is turned into an upward refinement operator + * and vice versa. + * + * @author Jens Lehmann + * + */ +public class OperatorInverter implements RefinementOperator { + + private RefinementOperator operator; + private ConceptComparator cc = new ConceptComparator(); + private boolean useNegationNormalForm = true; + private boolean guaranteeLength = true; + + public OperatorInverter(RefinementOperator operator) { + this.operator = operator; + } + + @Override + public Set<Description> refine(Description description) { + Set<Description> refinements = operator.refine(getNegation(description)); + TreeSet<Description> results = new TreeSet<Description>(cc); + for(Description d : refinements) { + results.add(getNegation(d)); + } + return results; + } + + @Override + public Set<Description> refine(Description description, int maxLength) { + Description negatedDescription = getNegation(description); + // concept length can change because of the conversion process; as a heuristic + // we increase maxLength by the length difference of negated and original concept + int lengthDiff = Math.max(0, negatedDescription.getLength() - description.getLength()); + Set<Description> refinements = operator.refine(negatedDescription, maxLength+lengthDiff); + TreeSet<Description> results = new TreeSet<Description>(cc); + for(Description d : refinements) { + Description dNeg = getNegation(d); + // to satisfy the guarantee that the method does not return longer + // concepts, we perform an additional check + if(!guaranteeLength || dNeg.getLength() <= maxLength) { + results.add(dNeg); + } + } + return results; + } + + @Override + public Set<Description> refine(Description description, int maxLength, + List<Description> knownRefinements) { + throw new Error("Method not implemented."); + } + + private Description getNegation(Description description) { + Description negatedDescription = new Negation(description); + if(useNegationNormalForm) { + negatedDescription = ConceptTransformation.transformToNegationNormalForm(negatedDescription); + } + return negatedDescription; + } + +} Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-09 15:51:12 UTC (rev 1999) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-10 09:27:28 UTC (rev 2000) @@ -184,6 +184,8 @@ private boolean disjointChecks = true; private boolean instanceBasedDisjoints = true; + private boolean dropDisjuncts = false; + // caches for reasoner queries private Map<Description,Map<Description,Boolean>> cachedDisjoints = new TreeMap<Description,Map<Description,Boolean>>(conceptComparator); @@ -513,6 +515,23 @@ } + // if enabled, we can remove elements of the disjunction + if(dropDisjuncts) { + // A1 OR A2 => {A1,A2} + if(description.getChildren().size() == 2) { + refinements.add(description.getChild(0)); + refinements.add(description.getChild(1)); + } else { + // copy children list and remove a different element in each turn + for(int i=0; i<description.getChildren().size(); i++) { + List<Description> newChildren = new LinkedList<Description>(description.getChildren()); + newChildren.remove(i); + Union md = new Union(newChildren); + refinements.add(md); + } + } + } + } else if (description instanceof ObjectSomeRestriction) { ObjectPropertyExpression role = ((ObjectQuantorRestriction)description).getRole(); Description range = opRanges.get(role); @@ -788,6 +807,17 @@ return true; } + /** + * By default, the operator does not specialize e.g. (A or B) to A, because + * it only guarantees weak completeness. Under certain circumstances, e.g. + * refinement of a fixed given concept, it can be useful to allow such + * refinements, which can be done by passing the parameter true to this method. + * @param dropDisjuncts Whether to remove disjuncts in refinement process. + */ + public void setDropDisjuncts(boolean dropDisjuncts) { + this.dropDisjuncts = dropDisjuncts; + } + private void computeTopRefinements(int maxLength) { computeTopRefinements(maxLength, null); } Modified: trunk/src/dl-learner/org/dllearner/test/junit/RefinementOperatorTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/RefinementOperatorTests.java 2010-02-09 15:51:12 UTC (rev 1999) +++ trunk/src/dl-learner/org/dllearner/test/junit/RefinementOperatorTests.java 2010-02-10 09:27:28 UTC (rev 2000) @@ -42,7 +42,7 @@ import org.dllearner.parser.KBParser; import org.dllearner.parser.ParseException; import org.dllearner.reasoning.OWLAPIReasoner; -import org.dllearner.refinementoperators.ELDown2; +import org.dllearner.refinementoperators.OperatorInverter; import org.dllearner.refinementoperators.RefinementOperator; import org.dllearner.refinementoperators.RhoDRDown; import org.dllearner.test.junit.TestOntologies.TestOntology; @@ -188,6 +188,21 @@ } } + @Test + public void invertedOperatorTest() throws ParseException { + ReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.RHO1); + RhoDRDown rho = new RhoDRDown(rs); + rho.setDropDisjuncts(true); + RefinementOperator operator = new OperatorInverter(rho); + Description concept = KBParser.parseConcept("(limo AND EXISTS hasOwner.man)"); + Set<Description> refinements = operator.refine(concept, 6); + for(Description refinement : refinements) { + System.out.println(refinement); + } + // we should get four upward refinements + // (replacing limo => car, man => person, or drop one of the intersects) + assertTrue(refinements.size()==4); + } private String uri(String name) { return "\""+baseURI+name+"\""; Modified: trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java 2010-02-09 15:51:12 UTC (rev 1999) +++ trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java 2010-02-10 09:27:28 UTC (rev 2000) @@ -31,7 +31,6 @@ import org.dllearner.kb.OWLFile; import org.dllearner.parser.KBParser; import org.dllearner.parser.ParseException; -import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.reasoning.OWLAPIReasoner; /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-10 10:48:25
|
Revision: 2002 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2002&view=rev Author: kurzum Date: 2010-02-10 10:48:19 +0000 (Wed, 10 Feb 2010) Log Message: ----------- added retrieval of labels to SPARQLDescriptionConverter Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java Modified: trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2010-02-10 10:36:24 UTC (rev 2001) +++ trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2010-02-10 10:48:19 UTC (rev 2002) @@ -111,7 +111,7 @@ * @return A SPARQL query of the underlying description. */ public String getSparqlQuery(int limit) { - return SparqlQueryDescriptionConvertVisitor.getSparqlQuery(description, limit); + return SparqlQueryDescriptionConvertVisitor.getSparqlQuery(description, limit, false); } /** Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2010-02-10 10:36:24 UTC (rev 2001) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2010-02-10 10:48:19 UTC (rev 2002) @@ -83,15 +83,8 @@ * = RDFSReasoning; } */ - private String getSparqlQuery(int resultLimit) { // for old function see - // below - // it was using the object attribute in a strange way - // QUALITY: what if this function is called several times?? should be - // private maybe? - String tmpQuery = "SELECT ?subject \nWHERE {" + query + " }\n " + limit(resultLimit); - - query = tmpQuery; - return query; + private String getSparqlQuery(int resultLimit, boolean labels) { + return "SELECT ?subject \nWHERE { "+((labels)?" ?subject rdfs:label ?label .":"")+" " + query + " }\n " + limit(resultLimit); } public static String getSparqlQuery(String descriptionKBSyntax) throws ParseException { @@ -100,18 +93,17 @@ public static String getSparqlQuery(String descriptionKBSyntax, int limit) throws ParseException { Description d = KBParser.parseConcept(descriptionKBSyntax); - return getSparqlQuery(d, limit); + return getSparqlQuery(d, limit, false); } public static String getSparqlQuery(Description description) { - return getSparqlQuery(description, defaultLimit); + return getSparqlQuery(description, defaultLimit, false); } - public static String getSparqlQuery(Description description, int resultLimit) { + public static String getSparqlQuery(Description description, int resultLimit, boolean labels) { SparqlQueryDescriptionConvertVisitor visitor = new SparqlQueryDescriptionConvertVisitor(); description.accept(visitor); - String ret = visitor.getSparqlQuery(resultLimit); - return ret; + return visitor.getSparqlQuery(resultLimit, labels); } /** @@ -244,7 +236,6 @@ * .Intersection) */ public void visit(Intersection description) { - // HACK see replace hacks in other functions logger.trace("Intersection"); description.getChild(0).accept(this); query += "."; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2010-02-10 10:50:49
|
Revision: 2003 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2003&view=rev Author: jenslehmann Date: 2010-02-10 10:50:42 +0000 (Wed, 10 Feb 2010) Log Message: ----------- included option in CELOE to filter out all suggestions, which already logically follow from the knowledge base Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java trunk/src/dl-learner/org/dllearner/core/configurators/CELOEConfigurator.java trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.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/PosNegLPStrict.java trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosNeg.java trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosOnly.java trunk/src/dl-learner/org/dllearner/learningproblems/ScoreThreeValued.java trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java trunk/src/dl-learner/org/dllearner/utilities/owl/EvaluatedDescriptionSet.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -21,7 +21,6 @@ import java.text.DecimalFormat; import java.util.Collection; -import java.util.Date; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -119,6 +118,7 @@ // important parameters private double noise; private double maxDepth; + private boolean filterFollowsFromKB; // utility variables private String baseURI; @@ -166,6 +166,8 @@ options.add(CommonConfigOptions.maxNrOfResults(10)); options.add(new BooleanConfigOption("singleSuggestionMode", "Use this if you are interested in only one suggestion and your learning problem has many (more than 1000) examples.", false)); options.add(CommonConfigOptions.getInstanceBasedDisjoints()); + options.add(new BooleanConfigOption("filterDescriptionsFollowingFromKB", "If true, then the results will not contain suggestions, which already follow logically from the knowledge base. Be careful, since this requires a potentially expensive consistency check for candidate solutions.", false)); + options.add(new BooleanConfigOption("reuseExistingDescription", "If true, the algorithm tries to find a good starting point close to an existing definition/super class of the given class in the knowledge base.", false)); return options; } @@ -193,11 +195,18 @@ bestEvaluatedDescriptions = new EvaluatedDescriptionSet(configurator.getMaxNrOfResults()); + isClassLearningProblem = (learningProblem instanceof ClassLearningProblem); + // we put important parameters in class variables noise = configurator.getNoisePercentage()/100d; - maxDepth = configurator.getMaxDepth(); + maxDepth = configurator.getMaxDepth(); + // (filterFollowsFromKB is automatically set to false if the problem + // is not a class learning problem + filterFollowsFromKB = configurator.getFilterDescriptionsFollowingFromKB() + && isClassLearningProblem; - isClassLearningProblem = (learningProblem instanceof ClassLearningProblem); + System.out.println("filter follows from KB: " + filterFollowsFromKB); + // actions specific to ontology engineering if(isClassLearningProblem) { ClassLearningProblem problem = (ClassLearningProblem) learningProblem; @@ -264,8 +273,8 @@ int loop = 0; while (!terminationCriteriaSatisfied()) { - if(!singleSuggestionMode && bestEvaluatedDescriptions.getBest().getAccuracy() > highestAccuracy) { - highestAccuracy = bestEvaluatedDescriptions.getBest().getAccuracy(); + if(!singleSuggestionMode && bestEvaluatedDescriptions.getBestAccuracy() > highestAccuracy) { + highestAccuracy = bestEvaluatedDescriptions.getBestAccuracy(); logger.info("more accurate (" + dfPercent.format(highestAccuracy) + ") class expression found: " + descriptionToString(bestEvaluatedDescriptions.getBest().getDescription())); } @@ -442,8 +451,9 @@ } if(!shorterDescriptionExists) { -// System.out.println(niceDescription + " acc " + accuracy); - bestEvaluatedDescriptions.add(niceDescription, accuracy, learningProblem); + if(!filterFollowsFromKB || !((ClassLearningProblem)learningProblem).followsFromKB(niceDescription)) { + bestEvaluatedDescriptions.add(niceDescription, accuracy, learningProblem); + } } } Modified: trunk/src/dl-learner/org/dllearner/core/configurators/CELOEConfigurator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/configurators/CELOEConfigurator.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/core/configurators/CELOEConfigurator.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -201,6 +201,24 @@ public boolean getInstanceBasedDisjoints() { return (Boolean) ComponentManager.getInstance().getConfigOptionValue(cELOE, "instanceBasedDisjoints") ; } +/** +* filterDescriptionsFollowingFromKB If true, then the results will not contain suggestions, which already follow logically from the knowledge base.. +* mandatory: false| reinit necessary: true +* default value: false +* @return boolean +**/ +public boolean getFilterDescriptionsFollowingFromKB() { +return (Boolean) ComponentManager.getInstance().getConfigOptionValue(cELOE, "filterDescriptionsFollowingFromKB") ; +} +/** +* reuseExistingDescription If true, the algorithm tries to find a good starting point close to an existing definition/super class of the given class in the knowledge base.. +* mandatory: false| reinit necessary: true +* default value: false +* @return boolean +**/ +public boolean getReuseExistingDescription() { +return (Boolean) ComponentManager.getInstance().getConfigOptionValue(cELOE, "reuseExistingDescription") ; +} /** * @param useAllConstructor specifies whether the universal concept constructor is used in the learning algorithm. @@ -346,6 +364,24 @@ ComponentManager.getInstance().applyConfigEntry(cELOE, "instanceBasedDisjoints", instanceBasedDisjoints); reinitNecessary = true; } +/** +* @param filterDescriptionsFollowingFromKB If true, then the results will not contain suggestions, which already follow logically from the knowledge base.. +* mandatory: false| reinit necessary: true +* default value: false +**/ +public void setFilterDescriptionsFollowingFromKB(boolean filterDescriptionsFollowingFromKB) { +ComponentManager.getInstance().applyConfigEntry(cELOE, "filterDescriptionsFollowingFromKB", filterDescriptionsFollowingFromKB); +reinitNecessary = true; +} +/** +* @param reuseExistingDescription If true, the algorithm tries to find a good starting point close to an existing definition/super class of the given class in the knowledge base.. +* mandatory: false| reinit necessary: true +* default value: false +**/ +public void setReuseExistingDescription(boolean reuseExistingDescription) { +ComponentManager.getInstance().applyConfigEntry(cELOE, "reuseExistingDescription", reuseExistingDescription); +reinitNecessary = true; +} /** * true, if this component needs reinitializsation. Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -28,7 +28,6 @@ import java.util.TreeSet; import org.apache.log4j.Logger; -import org.dllearner.algorithms.celoe.CELOE; import org.dllearner.core.ComponentInitException; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasonerComponent; @@ -250,7 +249,8 @@ // we check whether the axiom already follows from the knowledge base // boolean followsFromKB = reasoner.isSuperClassOf(description, classToDescribe); - boolean followsFromKB = equivalence ? reasoner.isEquivalentClass(description, classToDescribe) : reasoner.isSuperClassOf(description, classToDescribe); +// boolean followsFromKB = equivalence ? reasoner.isEquivalentClass(description, classToDescribe) : reasoner.isSuperClassOf(description, classToDescribe); + boolean followsFromKB = followsFromKB(description); // 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); @@ -772,4 +772,8 @@ } return reasoner.remainsSatisfiable(axiom); } + + public boolean followsFromKB(Description description) { + return equivalence ? reasoner.isEquivalentClass(description, classToDescribe) : reasoner.isSuperClassOf(description, classToDescribe); + } } Modified: trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosNeg.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosNeg.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosNeg.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -44,6 +44,7 @@ */ public class EvaluatedDescriptionPosNeg extends EvaluatedDescription { + private static final long serialVersionUID = -6962185910615506968L; private ScorePosNeg score2; /** Modified: trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosOnly.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosOnly.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/learningproblems/EvaluatedDescriptionPosOnly.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -31,6 +31,7 @@ */ public class EvaluatedDescriptionPosOnly extends EvaluatedDescription { + private static final long serialVersionUID = 4014754537024635033L; private ScorePosOnly score2; public EvaluatedDescriptionPosOnly(Description description, ScorePosOnly score) { Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosNegLPStrict.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosNegLPStrict.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosNegLPStrict.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -84,7 +84,6 @@ * @see org.dllearner.core.Component#applyConfigEntry(org.dllearner.core.ConfigEntry) */ @Override - @SuppressWarnings( { "unchecked" }) public <T> void applyConfigEntry(ConfigEntry<T> entry) throws InvalidConfigOptionValueException { super.applyConfigEntry(entry); String name = entry.getOptionName(); Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosNeg.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosNeg.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosNeg.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -34,6 +34,7 @@ */ public abstract class ScorePosNeg extends Score { + private static final long serialVersionUID = -4646131678864109469L; public abstract double getScoreValue(); Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosOnly.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosOnly.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ScorePosOnly.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -30,6 +30,8 @@ */ public class ScorePosOnly extends Score { + private static final long serialVersionUID = 2191608162129054464L; + private Set<Individual> coveredInstances; private Set<Individual> notCoveredPositives; private Set<Individual> additionalInstances; Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ScoreThreeValued.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ScoreThreeValued.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ScoreThreeValued.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -41,6 +41,8 @@ */ public class ScoreThreeValued extends ScorePosNeg { + private static final long serialVersionUID = -1780084688122949685L; + public enum ScoreMethod {POSITIVE, FULL}; // configuration options Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ScoreTwoValued.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -38,7 +38,9 @@ */ public class ScoreTwoValued extends ScorePosNeg { - private Set<Individual> posAsPos; + private static final long serialVersionUID = 6264873890324824550L; + + private Set<Individual> posAsPos; private Set<Individual> posAsNeg; private Set<Individual> negAsPos; private Set<Individual> negAsNeg; Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/EvaluatedDescriptionSet.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/EvaluatedDescriptionSet.java 2010-02-10 10:48:19 UTC (rev 2002) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/EvaluatedDescriptionSet.java 2010-02-10 10:50:42 UTC (rev 2003) @@ -89,6 +89,10 @@ return set.size()==0 ? null : set.last(); } + public double getBestAccuracy() { + return set.size()==0 ? Double.NEGATIVE_INFINITY : set.last().getAccuracy(); + } + public EvaluatedDescription getWorst() { return set.size()==0 ? null : set.first(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2010-02-10 13:08:35
|
Revision: 2005 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2005&view=rev Author: jenslehmann Date: 2010-02-10 12:19:56 +0000 (Wed, 10 Feb 2010) Log Message: ----------- - implemented CELOE option to reuse an existing definition for learning a new one (involves using upward refinement to detect an appropriate start class) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/core/SchemaReasoner.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2010-02-10 11:57:19 UTC (rev 2004) +++ trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2010-02-10 12:19:56 UTC (rev 2005) @@ -50,6 +50,7 @@ import org.dllearner.learningproblems.PosNegLP; import org.dllearner.learningproblems.PosNegLPStandard; import org.dllearner.learningproblems.PosOnlyLP; +import org.dllearner.refinementoperators.OperatorInverter; import org.dllearner.refinementoperators.RefinementOperator; import org.dllearner.refinementoperators.RhoDRDown; import org.dllearner.utilities.Helper; @@ -219,15 +220,51 @@ // capture all instances), but owl:Thing for learning subclasses (since it is // superfluous to add super classes in this case) if(isEquivalenceProblem) { - Set<Description> superClasses = reasoner.getClassHierarchy().getSuperClasses(classToDescribe); - if(superClasses.size() > 1) { - startClass = new Intersection(new LinkedList<Description>(superClasses)); - } else if(superClasses.size() == 1){ - startClass = (Description) superClasses.toArray()[0]; + Set<Description> existingDefinitions = reasoner.getAssertedDefinitions(classToDescribe); + if(configurator.getReuseExistingDescription() && (existingDefinitions.size() > 0)) { + // the existing definition is reused, which in the simplest case means to + // use it as a start class or, if it is already too specific, generalise it + + // pick the longest existing definition as candidate + Description existingDefinition = null; + int highestLength = 0; + for(Description exDef : existingDefinitions) { + if(exDef.getLength() > highestLength) { + existingDefinition = exDef; + highestLength = exDef.getLength(); + } + } + + LinkedList<Description> startClassCandidates = new LinkedList<Description>(); + startClassCandidates.add(existingDefinition); + ((RhoDRDown)operator).setDropDisjuncts(true); + RefinementOperator upwardOperator = new OperatorInverter(operator); + + // use upward refinement until we find an appropriate start class + boolean startClassFound = false; + do { + Description candidate = startClassCandidates.pollFirst(); + if(((ClassLearningProblem)learningProblem).getRecall(candidate)<1.0) { + // add upward refinements to list + startClassCandidates.addAll(upwardOperator.refine(candidate, candidate.getLength())); + } else { + startClassFound = true; + } + } while(!startClassFound); + + ((RhoDRDown)operator).setDropDisjuncts(false); + } else { - startClass = Thing.instance; - logger.warn(classToDescribe + " is equivalent to owl:Thing. Usually, it is not " + - "sensible to learn a description in this case."); + Set<Description> superClasses = reasoner.getClassHierarchy().getSuperClasses(classToDescribe); + if(superClasses.size() > 1) { + startClass = new Intersection(new LinkedList<Description>(superClasses)); + } else if(superClasses.size() == 1){ + startClass = (Description) superClasses.toArray()[0]; + } else { + startClass = Thing.instance; + logger.warn(classToDescribe + " is equivalent to owl:Thing. Usually, it is not " + + "sensible to learn a description in this case."); + } } } } else if(learningProblem instanceof PosOnlyLP) { Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2010-02-10 11:57:19 UTC (rev 2004) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2010-02-10 12:19:56 UTC (rev 2005) @@ -263,6 +263,21 @@ } @Override + public Set<Description> getAssertedDefinitions(NamedClass namedClass) { + try { + return getAssertedDefinitionsImpl(namedClass); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + } + + protected Set<Description> getAssertedDefinitionsImpl(NamedClass namedClass) + throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + @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 2010-02-10 11:57:19 UTC (rev 2004) +++ trunk/src/dl-learner/org/dllearner/core/SchemaReasoner.java 2010-02-10 12:19:56 UTC (rev 2005) @@ -94,6 +94,13 @@ public boolean isEquivalentClass(Description class1, Description class2); /** + * Returns all asserted owl:equivalence class axioms for the given class. + * @param namedClass A named class in the background knowledge. + * @return A set of descriptions asserted to be equal to the named class. + */ + public Set<Description> getAssertedDefinitions(NamedClass namedClass); + + /** * 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/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2010-02-10 11:57:19 UTC (rev 2004) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2010-02-10 12:19:56 UTC (rev 2005) @@ -1111,9 +1111,10 @@ * @param nc the class * @return the asserted class definitions */ - public Set<Description> getAssertedDefinitions(NamedClass nc){ + @Override + public Set<Description> getAssertedDefinitionsImpl(NamedClass nc){ OWLClass owlClass = OWLAPIDescriptionConvertVisitor.getOWLDescription(nc).asOWLClass(); - Set<OWLDescription> OWLAPIDefinitions = owlClass.getEquivalentClasses(new HashSet<OWLOntology>(owlAPIOntologies)); + Set<OWLDescription> owlAPIDefinitions = owlClass.getEquivalentClasses(new HashSet<OWLOntology>(owlAPIOntologies)); // TODO converting to DL-Learner format Set<Description> definitions = new HashSet<Description>(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2010-02-10 14:16:33
|
Revision: 2008 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2008&view=rev Author: jenslehmann Date: 2010-02-10 14:16:26 +0000 (Wed, 10 Feb 2010) Log Message: ----------- some bugfixes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java trunk/src/dl-learner/org/dllearner/refinementoperators/OperatorInverter.java trunk/src/dl-learner/org/dllearner/test/junit/RefinementOperatorTests.java trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2010-02-10 13:04:33 UTC (rev 2007) +++ trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2010-02-10 14:16:26 UTC (rev 2008) @@ -21,6 +21,7 @@ import java.text.DecimalFormat; import java.util.Collection; +import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -206,8 +207,6 @@ filterFollowsFromKB = configurator.getFilterDescriptionsFollowingFromKB() && isClassLearningProblem; - System.out.println("filter follows from KB: " + filterFollowsFromKB); - // actions specific to ontology engineering if(isClassLearningProblem) { ClassLearningProblem problem = (ClassLearningProblem) learningProblem; @@ -242,16 +241,34 @@ // use upward refinement until we find an appropriate start class boolean startClassFound = false; + Description candidate; do { - Description candidate = startClassCandidates.pollFirst(); + candidate = startClassCandidates.pollFirst(); if(((ClassLearningProblem)learningProblem).getRecall(candidate)<1.0) { // add upward refinements to list - startClassCandidates.addAll(upwardOperator.refine(candidate, candidate.getLength())); + Set<Description> refinements = upwardOperator.refine(candidate, candidate.getLength()); +// System.out.println("ref: " + refinements); + LinkedList<Description> refinementList = new LinkedList<Description>(refinements); +// Collections.reverse(refinementList); +// System.out.println("list: " + refinementList); + startClassCandidates.addAll(refinementList); +// System.out.println("candidates: " + startClassCandidates); } else { startClassFound = true; } } while(!startClassFound); + startClass = candidate; + if(startClass.equals(existingDefinition)) { + logger.info("Reusing existing description " + startClass.toManchesterSyntaxString(baseURI, prefixes) + " as start class for learning algorithm."); + } else { + logger.info("Generalised existing description " + existingDefinition.toManchesterSyntaxString(baseURI, prefixes) + " to " + startClass.toManchesterSyntaxString(baseURI, prefixes) + ", which is used as start class for the learning algorithm."); + } + +// System.out.println("start class: " + startClass); +// System.out.println("existing def: " + existingDefinition); +// System.out.println(reasoner.getIndividuals(existingDefinition)); + ((RhoDRDown)operator).setDropDisjuncts(false); } else { Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2010-02-10 13:04:33 UTC (rev 2007) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2010-02-10 14:16:26 UTC (rev 2008) @@ -1059,4 +1059,9 @@ return rc.remainsSatisfiableImpl(axiom); } + @Override + protected Set<Description> getAssertedDefinitionsImpl(NamedClass nc) { + return rc.getAssertedDefinitionsImpl(nc); + } + } Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2010-02-10 13:04:33 UTC (rev 2007) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2010-02-10 14:16:26 UTC (rev 2008) @@ -66,6 +66,7 @@ import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.utilities.owl.ConceptComparator; +import org.dllearner.utilities.owl.DLLearnerDescriptionConvertVisitor; import org.dllearner.utilities.owl.OWLAPIAxiomConvertVisitor; import org.dllearner.utilities.owl.OWLAPIConverter; import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; @@ -1112,16 +1113,14 @@ * @return the asserted class definitions */ @Override - public Set<Description> getAssertedDefinitionsImpl(NamedClass nc){ + protected Set<Description> getAssertedDefinitionsImpl(NamedClass nc){ OWLClass owlClass = OWLAPIDescriptionConvertVisitor.getOWLDescription(nc).asOWLClass(); - Set<OWLDescription> owlAPIDefinitions = owlClass.getEquivalentClasses(new HashSet<OWLOntology>(owlAPIOntologies)); - - // TODO converting to DL-Learner format + Set<OWLDescription> owlAPIDescriptions = owlClass.getEquivalentClasses(new HashSet<OWLOntology>(owlAPIOntologies)); Set<Description> definitions = new HashSet<Description>(); - + for(OWLDescription owlAPIDescription : owlAPIDescriptions) { + definitions.add(DLLearnerDescriptionConvertVisitor.getDLLearnerDescription(owlAPIDescription)); + } return definitions; - } - } Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/OperatorInverter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/OperatorInverter.java 2010-02-10 13:04:33 UTC (rev 2007) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/OperatorInverter.java 2010-02-10 14:16:26 UTC (rev 2008) @@ -60,13 +60,16 @@ @Override public Set<Description> refine(Description description, int maxLength) { Description negatedDescription = getNegation(description); +// System.out.println("negated description: " + negatedDescription); // concept length can change because of the conversion process; as a heuristic // we increase maxLength by the length difference of negated and original concept int lengthDiff = Math.max(0, negatedDescription.getLength() - description.getLength()); - Set<Description> refinements = operator.refine(negatedDescription, maxLength+lengthDiff); + Set<Description> refinements = operator.refine(negatedDescription, maxLength+lengthDiff+1); +// System.out.println("refinv: " + refinements); TreeSet<Description> results = new TreeSet<Description>(cc); for(Description d : refinements) { Description dNeg = getNegation(d); +// System.out.println("dNeg: " + dNeg); // to satisfy the guarantee that the method does not return longer // concepts, we perform an additional check if(!guaranteeLength || dNeg.getLength() <= maxLength) { Modified: trunk/src/dl-learner/org/dllearner/test/junit/RefinementOperatorTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/RefinementOperatorTests.java 2010-02-10 13:04:33 UTC (rev 2007) +++ trunk/src/dl-learner/org/dllearner/test/junit/RefinementOperatorTests.java 2010-02-10 14:16:26 UTC (rev 2008) @@ -189,6 +189,19 @@ } @Test + public void rhoDRDownTest5() throws ParseException, LearningProblemUnsupportedException { + ReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.SWORE); + RefinementOperator operator = new RhoDRDown(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); + Set<Description> refinements = operator.refine(concept, 7); + for(Description refinement : refinements) { + System.out.println(refinement); + } + } + + @Test public void invertedOperatorTest() throws ParseException { ReasonerComponent rs = TestOntologies.getTestOntology(TestOntology.RHO1); RhoDRDown rho = new RhoDRDown(rs); Modified: trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java 2010-02-10 13:04:33 UTC (rev 2007) +++ trunk/src/dl-learner/org/dllearner/test/junit/TestOntologies.java 2010-02-10 14:16:26 UTC (rev 2008) @@ -41,7 +41,7 @@ */ public final class TestOntologies { - public enum TestOntology { EMPTY, SIMPLE, SIMPLE_NO_DR, SIMPLE_NO_DISJOINT, SIMPLE_NO_DR_DISJOINT, SIMPLE2, SIMPLE3, R1SUBR2, DATA1, FIVE_ROLES, FATHER_OE, CARCINOGENESIS, EPC_OE, KRK_ZERO_ONE, DBPEDIA_OWL, TRAINS_OWL, RHO1 }; + public enum TestOntology { EMPTY, SIMPLE, SIMPLE_NO_DR, SIMPLE_NO_DISJOINT, SIMPLE_NO_DR_DISJOINT, SIMPLE2, SIMPLE3, R1SUBR2, DATA1, FIVE_ROLES, FATHER_OE, CARCINOGENESIS, EPC_OE, KRK_ZERO_ONE, DBPEDIA_OWL, TRAINS_OWL, RHO1, SWORE }; public static ReasonerComponent getTestOntology(TestOntology ont) { String kbString = ""; @@ -130,6 +130,8 @@ owlFile = "/home/jl/promotion/ontologien/dbpedia.owl"; } else if(ont.equals(TestOntology.TRAINS_OWL)) { owlFile = "examples/cross-benchmark/trains/trains.owl"; + } else if(ont.equals(TestOntology.SWORE)) { + owlFile = "examples/swore/swore.rdf"; } try { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-11 13:53:54
|
Revision: 2017 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2017&view=rev Author: kurzum Date: 2010-02-11 13:53:47 +0000 (Thu, 11 Feb 2010) Log Message: ----------- saw that option dissolveBlankNodes did not work in SPARQL component, fixed it Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -45,8 +45,19 @@ protected int mode = 0; protected boolean uriDebugCheck = true; - protected boolean dissolveBlankNodes = false; + + public boolean dissolveBlankNodes = false; + + /** + * this function is still used somewhere, but should be replaced + * @return + */ + @Deprecated + public boolean isDissolveBlankNodes(){ + return dissolveBlankNodes; + } + public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){ checkURIforValidity(uri); @@ -94,12 +105,6 @@ } return true; } - public boolean isDissolveBlankNodes() { - return dissolveBlankNodes; - } - public void setDissolveBlankNodes(boolean dissolveBlankNodes) { - this.dissolveBlankNodes = dissolveBlankNodes; - } } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/BlankNode.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -80,7 +80,7 @@ @Override public List<BlankNode> expandProperties(TupleAquisitor TupelAquisitor, - Manipulator manipulator) { + Manipulator manipulator, boolean dissolveBlankNodes) { return new ArrayList<BlankNode>(); } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -114,7 +114,7 @@ // gets the types for properties recursively @Override - public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator, boolean dissolveBlankNodes) { return new ArrayList<BlankNode>(); } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -66,6 +66,8 @@ this.breakSuperClassesAfter = breakSuperClassesAfter; this.dissolveBlankNodes = dissolveBlankNodes; + this.tupelAquisitor.dissolveBlankNodes = dissolveBlankNodes; + this.owlAPIOntologyCollector = new OWLAPIOntologyCollector(); } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -64,7 +64,7 @@ // gets the types for properties recursively @Override - public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator, boolean dissolveBlankNodes) { List<BlankNode> ret = new ArrayList<BlankNode>(); //ret.addAll(b.expandProperties(tupelAquisitor, manipulator)); SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri); @@ -77,7 +77,7 @@ } }else if(tuple.b.isAnon()){ - if(tupelAquisitor.isDissolveBlankNodes()){ + if(dissolveBlankNodes){ RDFBlankNode n = (RDFBlankNode) tuple.b; BlankNode tmp = new BlankNode( n, tuple.a.toString()); //add it to the graph Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -85,8 +85,6 @@ * */ public Node expandNode(String uri, TupleAquisitor tupleAquisitor) { - tupleAquisitor.setDissolveBlankNodes(configuration.isDissolveBlankNodes()); - SimpleClock sc = new SimpleClock(); if(tupleAquisitor instanceof SparqlTupleAquisitorImproved){ ((SparqlTupleAquisitorImproved)tupleAquisitor).removeFromCache(uri); @@ -155,7 +153,7 @@ if(stopCondition()){ break; } - collectNodes.addAll(node.expandProperties(tupleAquisitor, configuration.getManipulator())); + collectNodes.addAll(node.expandProperties(tupleAquisitor, configuration.getManipulator(), configuration.isDissolveBlankNodes())); } List<DatatypePropertyNode> datatypeProperties = getDatatypeProperties(collectNodes); logger.info("Get info for "+datatypeProperties.size() + " datatypeProperties"); @@ -163,13 +161,13 @@ if(stopCondition()){ break; } - collectNodes.addAll(node.expandProperties(tupleAquisitor, configuration.getManipulator())); + collectNodes.addAll(node.expandProperties(tupleAquisitor, configuration.getManipulator(), configuration.isDissolveBlankNodes())); } m.stop(); } Monitor m = JamonMonitorLogger.getTimeMonitor(ExtractionAlgorithm.class, "TimeBlankNode").start(); - if( configuration.isDissolveBlankNodes()&& !stopCondition()){ + if( configuration.isDissolveBlankNodes() && !stopCondition()){ expandBlankNodes(getBlankNodes(collectNodes),tupleAquisitor); } m.stop(); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -144,14 +144,14 @@ // gets the types for properties recursively @Override - public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator, boolean dissolveBlankNodes) { List<BlankNode> ret = new ArrayList<BlankNode>(); for (ObjectPropertyNode one : objectProperties) { - ret.addAll(one.expandProperties(tupelAquisitor, manipulator)); + ret.addAll(one.expandProperties(tupelAquisitor, manipulator, dissolveBlankNodes)); } for (DatatypePropertyNode one : datatypeProperties) { - ret.addAll(one.expandProperties(tupelAquisitor, manipulator)); + ret.addAll(one.expandProperties(tupelAquisitor, manipulator, dissolveBlankNodes)); } return ret; Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -70,7 +70,7 @@ // gets the types for properties recursively @Override - public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator, boolean dissolveBlankNodes) { return new ArrayList<BlankNode>(); } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -66,7 +66,7 @@ * @param manipulator */ public abstract List<BlankNode> expandProperties( - TupleAquisitor TupelAquisitor, Manipulator manipulator); + TupleAquisitor TupelAquisitor, Manipulator manipulator, boolean dissolveBlankNodes); /** * output Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -68,9 +68,9 @@ // gets the types for properties recursively @Override - public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { + public List<BlankNode> expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator, boolean dissolveBlankNodes) { List<BlankNode> ret = new ArrayList<BlankNode>(); - ret.addAll(b.expandProperties(tupelAquisitor, manipulator)); + ret.addAll(b.expandProperties(tupelAquisitor, manipulator, dissolveBlankNodes)); SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri); for (RDFNodeTuple tuple : newTypes) { try { @@ -81,7 +81,7 @@ } }else if(tuple.b.isAnon()){ - if(tupelAquisitor.isDissolveBlankNodes()){ + if(dissolveBlankNodes){ RDFBlankNode n = (RDFBlankNode) tuple.b; BlankNode tmp = new BlankNode( n, tuple.a.toString()); //add it to the graph Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -77,14 +77,9 @@ private ProgressMonitor mon; - private static final boolean debug = false; - - //private static final boolean threaded = debug && true ; + private static final boolean debugExitAfterExtraction = false; // switches - // sysex - private static final boolean debugExitAfterExtraction = debug && false; // switches - private SparqlKnowledgeSourceConfigurator configurator; /** @@ -478,7 +473,6 @@ ret = new SparqlTupleAquisitor(getSparqlQueryMaker(), getSPARQLTasks()); } - ret.setDissolveBlankNodes(configurator.getDissolveBlankNodes()); return ret; } @@ -518,27 +512,6 @@ this.mon = mon; } - /* - * public static void main(String[] args) throws MalformedURLException { - * String query = "SELECT ?pred ?obj\n" + "WHERE {<http://dbpedia.org/resource/Leipzig> - * ?pred ?obj}"; URL url = new - * URL("http://dbpedia.openlinksw.com:8890/sparql"); SparqlEndpoint sse = - * new SparqlEndpoint(url); SparqlQuery q = new SparqlQuery(query, sse); - * String[][] array = q.getAsStringArray(); for (int i = 0; i < - * array.length; i++) { for (int j = 0; j < array[0].length; j++) - * System.out.print(array[i][j] + " "); System.out.println(); } } - */ + - /* - * SparqlOntologyCollector oc= // new - * SparqlOntologyCollector(Datastructures.setToArray(instances), // - * numberOfRecursions, filterMode, // - * Datastructures.setToArray(predList),Datastructures.setToArray( - * objList),Datastructures.setToArray(classList),format,url,useLits); - * //HashMap<String, String> parameters = new HashMap<String, String>(); - * //parameters.put("default-graph-uri", "http://dbpedia.org"); - * //parameters.put("format", "application/sparql-results.xml"); - * - */ - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2010-02-11 13:53:20 UTC (rev 2016) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2010-02-11 13:53:47 UTC (rev 2017) @@ -27,11 +27,8 @@ import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.utilities.datastructures.SetManipulation; -import com.hp.hpl.jena.query.ResultSetRewindable; - /** * Test class for SPARQL mode. * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-12 07:23:40
|
Revision: 2018 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2018&view=rev Author: kurzum Date: 2010-02-12 07:23:34 +0000 (Fri, 12 Feb 2010) Log Message: ----------- added ValueKBParserTest hasValue can not be parsed... Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/utilities/examples/Examples.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/ValueKBParserTest.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2010-02-11 13:53:47 UTC (rev 2017) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2010-02-12 07:23:34 UTC (rev 2018) @@ -150,6 +150,10 @@ public void setLimit(int limit) { this.limit = limit; } + + public void noLimit() { + this.limit = -1; + } public void setLabels(boolean labels) { this.labels = labels; @@ -224,7 +228,8 @@ s.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); s.clear(); - s.add("(\"http://nlp2rdf.org/ontology/Sentence\" AND (EXISTS \"http://nlp2rdf.org/ontology/syntaxTreeHasPart\".\"http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Pronoun\" AND EXISTS \"http://nlp2rdf.org/ontology/syntaxTreeHasPart\".\"http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag\"))"); +// s.add("(\"http://nlp2rdf.org/ontology/Sentence\" AND (EXISTS \"http://nlp2rdf.org/ontology/syntaxTreeHasPart\".\"http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Pronoun\" AND EXISTS \"http://nlp2rdf.org/ontology/syntaxTreeHasPart\".\"http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag\"))"); + s.add("(\"http://nlp2rdf.org/ontology/Sentence\" AND (\"http://nlp2rdf.org/ontology/hasLemma\" VALUE \"test\" )"); // <http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag> String query = ""; Added: trunk/src/dl-learner/org/dllearner/test/ValueKBParserTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/ValueKBParserTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/ValueKBParserTest.java 2010-02-12 07:23:34 UTC (rev 2018) @@ -0,0 +1,22 @@ +package org.dllearner.test; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.parser.KBParser; +import org.dllearner.parser.ParseException; + +public class ValueKBParserTest { + public static void main(String[] args) { + SortedSet<String> s = new TreeSet<String>(); + s.add("(\"http://nlp2rdf.org/ontology/Sentence\" AND (\"http://nlp2rdf.org/ontology/hasLemma\" value test )"); + + for (String kbsyntax : s) { + try { + KBParser.parseConcept(kbsyntax); + } catch (ParseException e) { + e.printStackTrace(); + } + } + } +} Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/Examples.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/Examples.java 2010-02-11 13:53:47 UTC (rev 2017) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/Examples.java 2010-02-12 07:23:34 UTC (rev 2018) @@ -22,7 +22,6 @@ import java.io.FileWriter; import java.text.DecimalFormat; import java.util.Collection; -import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -37,8 +36,8 @@ public class Examples { private static final Logger logger = Logger.getLogger(Examples.class); - private final SortedSet<String> positiveExamples = new TreeSet<String>(); - private final SortedSet<String> negativeExamples = new TreeSet<String>(); +// private final SortedSet<String> positiveExamples = new TreeSet<String>(); +// private final SortedSet<String> negativeExamples = new TreeSet<String>(); private final SortedSet<String> posTrain = new TreeSet<String>(); private final SortedSet<String> negTrain = new TreeSet<String>(); private final SortedSet<String> posTest = new TreeSet<String>(); @@ -53,56 +52,64 @@ this.addNegTest(negTest); } - public void remove(Set<String> remove) { - for (String string : remove) { - positiveExamples.remove(string); - negativeExamples.remove(string); - } +// public void remove(Set<String> remove) { +// for (String string : remove) { +// positiveExamples.remove(string); +// negativeExamples.remove(string); +// } +// } + + private void _remove(String toBeRemoved ){ + posTrain.remove(toBeRemoved); + negTrain.remove(toBeRemoved); + posTest.remove(toBeRemoved); + negTest.remove(toBeRemoved); } - + private void _removeAll(Collection<String> toBeRemoved){ + posTrain.removeAll(toBeRemoved); + negTrain.removeAll(toBeRemoved); + posTest.removeAll(toBeRemoved); + negTest.removeAll(toBeRemoved); + } + public void addPosTrain(Collection<String> pos) { - positiveExamples.addAll(pos); + _removeAll(pos); posTrain.addAll(pos); } - + public void addPosTest(Collection<String> pos) { + _removeAll(pos); + posTest.addAll(pos); + } + public void addNegTrain(Collection<String> neg) { + _removeAll(neg); + negTrain.addAll(neg); + } + public void addNegTest(Collection<String> neg) { + _removeAll(neg); + negTest.addAll(neg); + } + + public void addPosTrain(String pos) { - positiveExamples.add(pos); + _remove(pos); posTrain.add(pos); } - - public void addPosTest(Collection<String> pos) { - positiveExamples.addAll(pos); - posTest.addAll(pos); - } - public void addPosTest(String pos) { - positiveExamples.add(pos); + _remove(pos); posTest.add(pos); } - - public void addNegTrain(Collection<String> neg) { - negativeExamples.addAll(neg); - negTrain.addAll(neg); - } - public void addNegTrain(String neg) { - negativeExamples.add(neg); + _remove(neg); negTrain.add(neg); } - - public void addNegTest(Collection<String> neg) { - negativeExamples.addAll(neg); - negTest.addAll(neg); - } - public void addNegTest(String neg) { - negativeExamples.add(neg); + _remove(neg); negTest.add(neg); } public boolean checkConsistency() { - for (String one : positiveExamples) { - if (negativeExamples.contains(one)) { + for (String one : posTrain) { + if (negTrain.contains(one)) { logger.error("positve and negative example overlap " + one); return false; } @@ -112,8 +119,18 @@ @Override public String toString() { + String ret = "Total: " + size(); + double posPercent = posTrain.size() / (double) posSize(); + double negPercent = negTrain.size() / (double) negSize(); + ret += "\nPositive: " + posTrain.size() + " | " + posTest.size() + " (" + + DecimalFormat.getPercentInstance().format(posPercent) + ")"; + ret += "\nNegative: " + negTrain.size() + " | " + negTest.size() + " (" + + DecimalFormat.getPercentInstance().format(negPercent) + ")"; - int total = (positiveExamples.size() + negativeExamples.size()); + return ret; + } + + public String toFullString() { String ret = "Training:\n"; for (String one : posTrain) { @@ -130,15 +147,8 @@ ret += "-" + one + "\n"; } - ret += "\nTotal: " + total; - double posPercent = posTrain.size() / (double) positiveExamples.size(); - double negPercent = negTrain.size() / (double) negativeExamples.size(); - ret += "\nPositive: " + posTrain.size() + " | " + posTest.size() + " (" - + DecimalFormat.getPercentInstance().format(posPercent) + ")"; - ret += "\nNegative: " + negTrain.size() + " | " + negTest.size() + " (" - + DecimalFormat.getPercentInstance().format(negPercent) + ")"; - - return ret; + return ret+this.toString(); + } public void writeExamples(String filename) { @@ -158,12 +168,28 @@ } } + public int size(){ + return posTrain.size()+negTrain.size()+posTest.size()+negTest.size(); + } + public int posSize(){ + return posTrain.size()+posTest.size(); + } + public int negSize(){ + return negTrain.size()+negTest.size(); + } + public SortedSet<String> getPositiveExamples() { - return positiveExamples; + SortedSet<String> total = new TreeSet<String>(); + total.addAll(posTrain); + total.addAll(posTest); + return total; } public SortedSet<String> getNegativeExamples() { - return negativeExamples; + SortedSet<String> total = new TreeSet<String>(); + total.addAll(negTrain); + total.addAll(negTest); + return total; } public SortedSet<String> getPosTrain() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2010-02-12 10:47:46
|
Revision: 2021 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2021&view=rev Author: jenslehmann Date: 2010-02-12 10:47:37 +0000 (Fri, 12 Feb 2010) Log Message: ----------- added documentation to ontology checker and allow to display relevant classes (optional) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java trunk/src/dl-learner/org/dllearner/scripts/evaluation/OntologyChecker.java Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-12 10:12:25 UTC (rev 2020) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-12 10:47:37 UTC (rev 2021) @@ -279,7 +279,7 @@ for(Individual i : opMap.keySet()) { if(opMap.get(i) >= frequencyThreshold) { frequentInds.add(i); - break; +// break; } } frequentValues.put(op, frequentInds); Modified: trunk/src/dl-learner/org/dllearner/scripts/evaluation/OntologyChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/evaluation/OntologyChecker.java 2010-02-12 10:12:25 UTC (rev 2020) +++ trunk/src/dl-learner/org/dllearner/scripts/evaluation/OntologyChecker.java 2010-02-12 10:47:37 UTC (rev 2021) @@ -1,3 +1,22 @@ +/** + * Copyright (C) 2007-2010, 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.scripts.evaluation; import java.io.BufferedReader; @@ -6,7 +25,6 @@ import java.io.IOException; import java.net.MalformedURLException; import java.net.URI; -import java.net.URL; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -14,11 +32,6 @@ import java.util.Map.Entry; import org.dllearner.core.ComponentInitException; -import org.dllearner.core.ComponentManager; -import org.dllearner.core.ReasonerComponent; -import org.dllearner.kb.OWLFile; -import org.dllearner.reasoning.FastInstanceChecker; -import org.dllearner.reasoning.OWLAPIReasoner; import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLClass; @@ -26,9 +39,18 @@ import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; +/** + * Takes a file with a list of ontologies as input (one URL per line), + * loads the ontology in a reasoner and displays basic data about it. + * + * @author Lorenz Bühmann + * @author Jens Lehmann + * + */ public class OntologyChecker { private static int minInstanceCount = 5; + private static boolean displayClasses = false; public static void main(String[] args) throws ComponentInitException, MalformedURLException { Map<String, Integer> ontologyRelClassCountMap = new HashMap<String, Integer>(); @@ -68,14 +90,19 @@ reasoner.classify(); sb.append("classification time in ms: " + (System.currentTimeMillis() - startTime) + "\n"); int classCount = 0; + StringBuffer tmp = new StringBuffer(); if (reasoner.getIndividuals().size() > 0) { for (OWLClass cl : reasoner.getClasses()) { if (reasoner.getIndividuals(cl, false).size() >= minInstanceCount) { classCount++; + tmp.append(" " + cl.getURI() + "\n"); } } } sb.append("#classes with min. " + minInstanceCount + " individuals: " + classCount + "\n"); + if(displayClasses) { + sb.append(tmp); + } ontologyRelClassCountMap.put(url, classCount); } else { sb.append("Ontology is inconsistent. \n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-13 13:32:00
|
Revision: 2027 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2027&view=rev Author: kurzum Date: 2010-02-13 13:02:53 +0000 (Sat, 13 Feb 2010) Log Message: ----------- added a script for iterative learning over tiger data Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/utilities/examples/ExMakerFixedSize.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/tiger/ trunk/src/dl-learner/org/dllearner/scripts/tiger/ExperimentConfig.java trunk/src/dl-learner/org/dllearner/scripts/tiger/LogHelper.java trunk/src/dl-learner/org/dllearner/scripts/tiger/PrefixMap.java trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2010-02-13 13:00:12 UTC (rev 2026) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2010-02-13 13:02:53 UTC (rev 2027) @@ -402,6 +402,14 @@ * .DatatypeValueRestriction) */ public void visit(DatatypeValueRestriction description) { + String current = stack.peek(); + String property = description.getRestrictedPropertyExpression().toString(); + String value = description.getValue().toString(); + System.out.println("here"); + System.out.println(stack.peek()); + System.out.println(current); + System.out.println(property); + System.out.println(value); logger.trace("DatatypeValueRestriction"); } Added: trunk/src/dl-learner/org/dllearner/scripts/tiger/ExperimentConfig.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/ExperimentConfig.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/ExperimentConfig.java 2010-02-13 13:02:53 UTC (rev 2027) @@ -0,0 +1,19 @@ +package org.dllearner.scripts.tiger; + +import org.dllearner.utilities.examples.Examples; + +public class ExperimentConfig { + + + public int resultLimit = -1; + public int splits = 5; + public int initialsplits = 30; + + public int iteration = 1; + public int maxExecutionTime = 3; + + public boolean stopCondition(int iteration, Examples learn){ + return (iteration<this.iteration); + } + +} Added: trunk/src/dl-learner/org/dllearner/scripts/tiger/LogHelper.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/LogHelper.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/LogHelper.java 2010-02-13 13:02:53 UTC (rev 2027) @@ -0,0 +1,56 @@ +package org.dllearner.scripts.tiger; + +import java.io.IOException; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.FileAppender; +import org.apache.log4j.Layout; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; +import org.apache.log4j.PropertyConfigurator; + +public class LogHelper { + + public static String log4jConfigFile = "log4j.properties"; + private static Logger rootLogger = Logger.getRootLogger(); + + public static Logger initLoggers() { + initHere(); + return Logger.getRootLogger(); + // initFile(log4jConfigFile); + } + + @SuppressWarnings("unused") + private static void initHere() { + Layout layout = new PatternLayout(); + layout = new PatternLayout("%-5p [%C{1}]: %m%n"); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); +// consoleAppender.setThreshold(Level.DEBUG); + + Layout layout2 = null; + FileAppender fileAppenderNormal = null; + String fileName; + layout2 = new PatternLayout("%-5p [%C{1}]: %m%n"); + fileName = "log/log.txt"; + try { + fileAppenderNormal = new FileAppender(layout2, fileName, false); + } catch (IOException e) { + e.printStackTrace(); + } + + // add both loggers + rootLogger.removeAllAppenders(); + rootLogger.addAppender(consoleAppender); + rootLogger.addAppender(fileAppenderNormal); + rootLogger.setLevel(Level.DEBUG); + } + + @SuppressWarnings("unused") + private static void initFile(String log4jConfigFile) { + + System.out.println("Loading log config from file: '" + log4jConfigFile + "'"); + PropertyConfigurator.configure(log4jConfigFile); + + } +} Added: trunk/src/dl-learner/org/dllearner/scripts/tiger/PrefixMap.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/PrefixMap.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/PrefixMap.java 2010-02-13 13:02:53 UTC (rev 2027) @@ -0,0 +1,39 @@ +package org.dllearner.scripts.tiger; + +import java.util.HashMap; +import java.util.Map; + +import org.dllearner.core.EvaluatedDescription; +import org.dllearner.core.owl.Description; + + +public class PrefixMap { + + static String prefix = "http://nlp2rdf.org/ontology/"; + static Map<String,String> m = getPrefixMap(); + + private static Map<String,String> getPrefixMap(){ + Map<String,String> m = new HashMap<String, String>(); + m.put("stts", "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#"); + m.put("tiger", "http://nachhalt.sfb632.uni-potsdam.de/owl/tiger-syntax.owl#"); + return m; + } + + public static String toKBSyntaxString(EvaluatedDescription d){ + return toKBSyntaxString(d.getDescription()); + } + + public static String toKBSyntaxString(Description d){ + return d.toKBSyntaxString(prefix, m); + } + + public static String toManchesterSyntaxString(Description d){ + return d.toManchesterSyntaxString(prefix, m); + } + + public static String toManchesterSyntaxString(EvaluatedDescription d){ + return toManchesterSyntaxString(d.getDescription()); + } + + +} Added: trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-13 13:02:53 UTC (rev 2027) @@ -0,0 +1,380 @@ +package org.dllearner.scripts.tiger; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.dllearner.algorithms.refinement2.ROLComponent2; +import org.dllearner.algorithms.refinement2.ROLearner2; +import org.dllearner.core.ComponentPool; +import org.dllearner.core.EvaluatedDescription; +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.configurators.ComponentFactory; +import org.dllearner.kb.OWLFile; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.learningproblems.PosNegLPStandard; +import org.dllearner.parser.ParseException; +import org.dllearner.reasoning.FastInstanceChecker; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.JamonMonitorLogger; +import org.dllearner.utilities.examples.ExMakerFixedSize; +import org.dllearner.utilities.examples.ExampleDataCollector; +import org.dllearner.utilities.examples.Examples; + +import com.jamonapi.Monitor; + +public class TestIterativeLearning { + private static final Logger logger = Logger.getLogger(TestIterativeLearning.class); + + static String backgroundXML = "files/tiger.noSchema.noImports.rdf"; + static String propertiesXML = "files/propertiesOnly.rdf"; + static String sentenceXMLFolder = "files/tiger/"; + static String sentenceprefix = "http://nlp2rdf.org/ontology/s"; + static String prefix = "http://nlp2rdf.org/ontology/"; + + static String active = "files/active_all_sentenceNumbers.txt"; + static String passiveNoZU = "files/passive_noZuInf_sentenceNumbers.txt"; + static String passiveWithZu = "files/passive_zuInf_sentenceNumbers.txt"; + static String test_has_pos = "files/test_has_pos.txt"; + static String test_has_neg = "files/test_has_neg.txt"; + + static SparqlEndpoint sparqlEndpoint; + static SPARQLTasks sparqlTasks; + + static String sparqlEndpointURL = "http://db0.aksw.org:8893/sparql"; + static String graph = "http://nlp2rdf.org/tiger"; + static String rulegraph = "http://nlp2rdf.org/schema/rules1"; + + + + final static boolean debug = true; + //no randomization in examples + final static boolean randomizedebug = !debug; + + public static void main(String[] args) { + LogHelper.initLoggers(); + Logger.getLogger(Cache.class).setLevel(Level.INFO); + Logger.getLogger(ComponentPool.class).setLevel(Level.INFO); + Logger.getLogger(ROLearner2.class).setLevel(Level.TRACE); + Logger.getLogger(SparqlQuery.class).setLevel(Level.INFO); + + + + try { + sparqlEndpoint = new SparqlEndpoint(new URL(sparqlEndpointURL), new ArrayList<String>(Arrays + .asList(new String[] { graph })), new ArrayList<String>()); + sparqlTasks = new SPARQLTasks(Cache.getDefaultCache(), sparqlEndpoint); + } catch (Exception e) { + e.printStackTrace(); + } + + Examples allExamples = new Examples(); + SortedSet<String> positives; + SortedSet<String> negatives; + + if(debug) { + positives = read(test_has_pos);; + negatives = read(test_has_neg);; + }else{ +// positives = read(passiveWithZu); + positives = read(passiveNoZU); + negatives = read(active); + } + positives = read(passiveNoZU); + negatives = read(active); + //removing overlap + positives.removeAll(negatives); + negatives.removeAll(positives); + +// System.out.println(Helper.intersection(passiveZuInfSentences, activeSentences)); +// System.out.println(Helper.intersection(passiveZuInfSentences, passiveNoZuSentences)); +// System.out.println(Helper.intersection(activeSentences, passiveNoZuSentences)); + allExamples.addPosTrain(positives); + allExamples.addNegTrain(negatives); + + logger.debug("All examples \n"+allExamples); + + ExperimentConfig config = new ExperimentConfig(); + firstContact( allExamples, config); + //retrieved wird neues Example, als schnittmenge mit all + //und den bisher gewaehlten + //dann splits auswählen und + //pos und neg wieder hinzufuegen + + } + + public static void firstContact(Examples allExamples, ExperimentConfig config){ + ExMakerFixedSize fs = new ExMakerFixedSize(allExamples, randomizedebug); + Examples learn = fs.select(config.initialsplits, config.initialsplits); + logger.debug("Intial training set \n"+learn); +// System.out.println(learn.getPosTrain()); +// System.out.println(learn.getNegTrain()); +// if (true) { +// System.exit(0); +// } +// int size = 0; + for(int i = 0 ; config.stopCondition(i, learn) ;i++ ) { + /*LEARNING*/ + EvaluatedDescription ed = learn(learn, config); + + /*RETRIEVING*/ + SortedSet<String> retrieved = getSentences(ed, config.resultLimit); + logger.debug("Retrieved "+retrieved.size()+" sentences"); + + + /*MASHING*/ + //Menge aller positiven geschn. mit den gefundenen + SortedSet<String> posAsPos = Helper.intersection(retrieved, allExamples.getPosTrain()); + logger.debug("Number of retrieved positives: "+posAsPos.size()); + logger.debug("Number of total positives: "+allExamples.getPosTrain().size()); + precision( posAsPos.size(), retrieved.size()); + + //Menge aller positiven geschn. mit den gefundenen + recall( posAsPos.size(),allExamples.getPosTrain().size()); + + SortedSet<String> negAsPos = Helper.intersection(retrieved, allExamples.getNegTrain()); + logger.debug("Number of retrieved negatives: "+negAsPos.size()); + logger.debug("Total: "+posAsPos.size()+" + "+negAsPos.size() +" = "+retrieved.size()); + +// if(retrieved.size()!=(posAsPos.size()+negAsPos.size())){ +// logger.warn("sets are wrong"); +// System.exit(0); +// } + + Examples newlyFound = new Examples(); + newlyFound.addPosTrain(Helper.intersection(retrieved, learn.getPosTest())); + newlyFound.addNegTrain(Helper.intersection(retrieved, learn.getNegTest())); + fs = new ExMakerFixedSize(newlyFound, randomizedebug); + newlyFound = fs.select(config.splits, config.splits); + + learn.addPosTrain(newlyFound.getPosTrain()); + learn.addNegTrain(newlyFound.getNegTrain()); + logger.debug("Next training set \n"+learn); +// size = learn.getPosTrain().size() + learn.getNegTrain().size(); + + } + + + + + + } + + public static void precision( int posAsPos, int retrieved){ + logger.info("Precision: "+DecimalFormat.getPercentInstance().format(((double)posAsPos)/(double)retrieved)+"%"); + } + public static void recall( int posAsPos, int allPositives){ + logger.info("Recall: "+DecimalFormat.getPercentInstance().format(((double)posAsPos)/(double)allPositives)+"%"); + + } + + private static Set<KnowledgeSource> _getOWL(Examples ex) throws Exception{ + Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); + List<URL> urls = new ArrayList<URL>(); + urls.addAll(ExampleDataCollector.convert(sentenceXMLFolder, ex.getPosTrain())); + urls.addAll(ExampleDataCollector.convert(sentenceXMLFolder, ex.getNegTrain())); + urls.add(new File(backgroundXML).toURI().toURL()); + + for (URL u : urls) { + OWLFile ks = ComponentFactory.getOWLFile(u); + tmp.add(ks); + } + return tmp; + } + @SuppressWarnings("unused") + private static Set<KnowledgeSource> _getSPARQL(Examples ex) throws Exception{ + Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); + + Set<String> examples = new TreeSet<String>(); + examples.addAll(ex.getPosTrain()); + examples.addAll(ex.getNegTrain()); + SparqlKnowledgeSource ks = ComponentFactory.getSparqlKnowledgeSource(new URL(sparqlEndpointURL), examples); + ks.getConfigurator().setUrl(new URL(sparqlEndpointURL)); + ks.getConfigurator().setDefaultGraphURIs(new HashSet<String>(Arrays.asList(new String[]{graph}))); + ks.getConfigurator().setInstances(examples); + ks.getConfigurator().setDissolveBlankNodes(false); + ks.getConfigurator().setRecursionDepth(2); + ks.getConfigurator().setDissolveBlankNodes(false); + ks.getConfigurator().setCloseAfterRecursion(true); + ks.getConfigurator().setGetAllSuperClasses(true); + ks.getConfigurator().setGetPropertyInformation(false); + ks.getConfigurator().setUseLits(true); +// ks.getConfigurator(). + OWLFile ks2 = ComponentFactory.getOWLFile(new File(propertiesXML).toURI().toURL()); + tmp.add(ks); + tmp.add(ks2); + + return tmp; + } + + public static EvaluatedDescription learn(Examples ex, ExperimentConfig config) { + Monitor init = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "init").start(); + + EvaluatedDescription result = null; + + try { + Set<KnowledgeSource> tmp = _getOWL(ex); +// Set<KnowledgeSource> tmp = _getSPARQL(ex); + + + FastInstanceChecker rc = ComponentFactory.getFastInstanceChecker(tmp); + PosNegLPStandard lp = ComponentFactory + .getPosNegLPStandard(rc, ex.getPosTrain(), ex.getNegTrain()); + LearningAlgorithm la = _getROLLearner(lp, rc, config ); + + for (KnowledgeSource ks : tmp) { + ks.init(); + } + rc.init(); + lp.init(); + la.init(); + init.stop(); + Monitor learning = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "learning") + .start(); + la.start(); + learning.stop(); + + result = la.getCurrentlyBestEvaluatedDescription(); + logger.debug(PrefixMap.toKBSyntaxString(result.getDescription())); + logger.debug(PrefixMap.toManchesterSyntaxString(result.getDescription())); + + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + return result; + } + + public static SortedSet<String> getSentences(EvaluatedDescription ed, int resultLimit) { + SortedSet<String> result = new TreeSet<String>(); + SparqlQueryDescriptionConvertVisitor visit = new SparqlQueryDescriptionConvertVisitor(); + visit.setDistinct(true); + visit.setLabels(false); + visit.setLimit(resultLimit); + String sparqlQuery = ""; + try { + logger.debug(PrefixMap.toKBSyntaxString(ed.getDescription())); +// sparqlQuery = visit.getSparqlQuery(ed.getDescription().toKBSyntaxString()); +// logger.debug(sparqlQuery); + sparqlQuery = visit.getSparqlQuery(ed.getDescription()); + logger.debug(sparqlQuery); + if (true) { + System.exit(0); + } + } catch (Exception e1) { + e1.printStackTrace(); + } + + logger.debug(PrefixMap.toKBSyntaxString(ed.getDescription())); + + sparqlQuery = " \n define input:inference \"" + rulegraph + "\" \n" + "" + sparqlQuery; + logger.debug(sparqlQuery); + + Monitor m = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "sparqlquery").start(); + result.addAll(sparqlTasks.queryAsSet(sparqlQuery, "subject")); + logger.debug("query avg: " + ((double)m.getAvg() / (double)1000)+ " seconds (last: "+((double)m.getLastValue() / (double)1000)+")"); + if(debug && result.isEmpty()){ + logger.error("sparql query returned no results "); + System.exit(0); + } + return result; + } + + private static LearningAlgorithm _getROLLearner(LearningProblem lp, ReasonerComponent rc, ExperimentConfig config) + throws Exception { + ROLComponent2 la = ComponentFactory.getROLComponent2(lp, rc); + la.getConfigurator().setUseExistsConstructor(true); + + // la.getConfigurator().setUseAllConstructor(true); + // la.getConfigurator().setUseCardinalityRestrictions(true); + // la.getConfigurator().setUseNegation(true); + // la.getConfigurator().setUseHasValueConstructor(true); + // la.getConfigurator().setValueFrequencyThreshold(10); + + la.getConfigurator().setUseAllConstructor(false); + la.getConfigurator().setUseCardinalityRestrictions(false); + la.getConfigurator().setUseNegation(false); + la.getConfigurator().setUseHasValueConstructor(false); + la.getConfigurator().setUseDataHasValueConstructor(true); +// la.getConfigurator().setValueFrequencyThreshold(1); + + la.getConfigurator().setIgnoredConcepts(new HashSet<String>(Arrays.asList(new String[]{ + "http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag", + "http://nlp2rdf.org/ontology/comma_tag", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SentenceFinalPunctuation" + }))); + + + la.getConfigurator().setNoisePercentage(0); + la.getConfigurator().setTerminateOnNoiseReached(true); +// la.getConfigurator().setStartClass(Config.getConfig().prefix + "Sentence"); + la.getConfigurator().setMaxExecutionTimeInSeconds(config.maxExecutionTime); +// la.getConfigurator().setMinExecutionTimeInSeconds(20); + + // la.getConfigurator().setMinExecutionTimeInSeconds(100); + la.getConfigurator().setWriteSearchTree(false); + la.getConfigurator().setSearchTreeFile("log/searchTree.txt"); + la.getConfigurator().setReplaceSearchTree(false); + return la; + } + + public static SortedSet<String> read(String f) { + SortedSet<String> result = new TreeSet<String>(); + BufferedReader in = null; + try { + in = new BufferedReader(new InputStreamReader(new FileInputStream(f))); + + String line; + while ((line = in.readLine()) != null) { + try { + line = line.trim(); + Integer.parseInt(line); + if (!result.add(sentenceprefix + line)) { + logger.error("reading failed"); + System.exit(0); + } + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + } + + } catch (Exception e) { + e.printStackTrace(); + logger.error("Could not read examples from: " + f); + System.exit(0); + + } finally { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + logger.info("read " + result.size() + " lines from " + f); + + return result; + } + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/ExMakerFixedSize.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/ExMakerFixedSize.java 2010-02-13 13:00:12 UTC (rev 2026) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/ExMakerFixedSize.java 2010-02-13 13:02:53 UTC (rev 2027) @@ -35,9 +35,15 @@ private static Logger logger = Logger.getLogger(ExMakerFixedSize.class); private final Examples examples; + private final boolean randomize; public ExMakerFixedSize(Examples examples ){ + this(examples, true) ; + } + + public ExMakerFixedSize(Examples examples, boolean randomize ){ this.examples = examples; + this.randomize = randomize; } public static void main(String[] args) { @@ -54,6 +60,24 @@ } + /** + * same as select(int,int) + * uses both times the same number + * @param both + * @return + */ + public Examples select(int both){ + return select( both, both); + } + + /** + * returns a new example object based on all Examples in the old set + * picks a fixed number of examples, puts them into + * training sets rest to test set + * @param nrOfPos + * @param nrOfNeg + * @return + */ public Examples select(int nrOfPos, int nrOfNeg){ SortedSet<String> posTrain = new TreeSet<String>(); @@ -68,14 +92,24 @@ negOld.addAll(examples.getNegativeExamples()); while (!posOld.isEmpty() && posTrain.size()< nrOfPos) { - String one = pickOneRandomly(posOld.toArray(new String[] {})); + String one; + if(randomize){ + one = pickOneRandomly(posOld.toArray(new String[] {})); + }else{ + one = posOld.first(); + } posOld.remove(one); posTrain.add(one); } posTest.addAll(posOld); while (!negOld.isEmpty() && negTrain.size()< nrOfNeg) { - String one = pickOneRandomly(negOld.toArray(new String[] {})); + String one; + if(randomize){ + one = pickOneRandomly(negOld.toArray(new String[] {})); + }else{ + one = negOld.first(); + } negOld.remove(one); negTrain.add(one); } @@ -84,6 +118,7 @@ return new Examples(posTrain, negTrain, posTest, negTest); } + public static String pickOneRandomly(String[] from){ Random r = new Random(); int index = Math.round((float)(from.length*r.nextFloat())); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-13 14:01:04
|
Revision: 2028 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2028&view=rev Author: kurzum Date: 2010-02-13 13:04:13 +0000 (Sat, 13 Feb 2010) Log Message: ----------- In DataTypeValueRestriction the method getRestrictedPropertyExpression was spelled with 3 sss and did not properly overwrite the super method Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/DatatypeValueRestriction.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java trunk/src/dl-learner/org/dllearner/utilities/owl/OWLAPIDescriptionConvertVisitor.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/examples/tiger/ Modified: trunk/src/dl-learner/org/dllearner/core/owl/DatatypeValueRestriction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DatatypeValueRestriction.java 2010-02-13 13:02:53 UTC (rev 2027) +++ trunk/src/dl-learner/org/dllearner/core/owl/DatatypeValueRestriction.java 2010-02-13 13:04:13 UTC (rev 2028) @@ -77,7 +77,8 @@ return restrictedPropertyExpression.toKBSyntaxString(baseURI, prefixes) + " = " + value.toKBSyntaxString(baseURI, prefixes); } - public DatatypeProperty getRestrictedPropertyExpresssion() { + @Override + public DatatypeProperty getRestrictedPropertyExpression() { return (DatatypeProperty) restrictedPropertyExpression; } Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2010-02-13 13:02:53 UTC (rev 2027) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2010-02-13 13:04:13 UTC (rev 2028) @@ -470,7 +470,7 @@ return inds == null ? false : inds.contains(i); } else if (description instanceof BooleanValueRestriction) { DatatypeProperty dp = ((BooleanValueRestriction) description) - .getRestrictedPropertyExpresssion(); + .getRestrictedPropertyExpression(); boolean value = ((BooleanValueRestriction) description).getBooleanValue(); if (value) { @@ -500,7 +500,7 @@ } } else if (description instanceof DatatypeValueRestriction) { String i = ((DatatypeValueRestriction)description).getValue().getLiteral(); - DatatypeProperty dp = ((DatatypeValueRestriction)description).getRestrictedPropertyExpresssion(); + DatatypeProperty dp = ((DatatypeValueRestriction)description).getRestrictedPropertyExpression(); Set<String> inds = sd.get(dp).get(individual); return inds == null ? false : inds.contains(i); @@ -735,7 +735,7 @@ return returnSet; } else if (description instanceof BooleanValueRestriction) { DatatypeProperty dp = ((BooleanValueRestriction) description) - .getRestrictedPropertyExpresssion(); + .getRestrictedPropertyExpression(); boolean value = ((BooleanValueRestriction) description).getBooleanValue(); if (value) { Modified: trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2010-02-13 13:02:53 UTC (rev 2027) +++ trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2010-02-13 13:04:13 UTC (rev 2028) @@ -801,7 +801,7 @@ return inds == null ? false : inds.contains(i); } else if (description instanceof BooleanValueRestriction) { DatatypeProperty dp = ((BooleanValueRestriction) description) - .getRestrictedPropertyExpresssion(); + .getRestrictedPropertyExpression(); boolean value = ((BooleanValueRestriction) description).getBooleanValue(); if (value) { @@ -1084,7 +1084,7 @@ return returnSet; } else if (description instanceof BooleanValueRestriction) { DatatypeProperty dp = ((BooleanValueRestriction) description) - .getRestrictedPropertyExpresssion(); + .getRestrictedPropertyExpression(); boolean value = ((BooleanValueRestriction) description).getBooleanValue(); if (value) { Modified: trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-13 13:02:53 UTC (rev 2027) +++ trunk/src/dl-learner/org/dllearner/refinementoperators/RhoDRDown.java 2010-02-13 13:04:13 UTC (rev 2028) @@ -666,7 +666,7 @@ } } else if (description instanceof StringValueRestriction) { StringValueRestriction svr = (StringValueRestriction) description; - DatatypeProperty dp = svr.getRestrictedPropertyExpresssion(); + DatatypeProperty dp = svr.getRestrictedPropertyExpression(); Set<DatatypeProperty> subDPs = rs.getSubProperties(dp); for(DatatypeProperty subDP : subDPs) { refinements.add(new StringValueRestriction(subDP, svr.getStringValue())); Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java 2010-02-13 13:02:53 UTC (rev 2027) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/ConceptComparator.java 2010-02-13 13:04:13 UTC (rev 2028) @@ -133,7 +133,7 @@ return 1; } else if(concept2 instanceof BooleanValueRestriction) { // first criterion: name of the properties - int cmp = rc.compare(((BooleanValueRestriction)concept1).getRestrictedPropertyExpresssion(), ((BooleanValueRestriction)concept2).getRestrictedPropertyExpresssion()); + int cmp = rc.compare(((BooleanValueRestriction)concept1).getRestrictedPropertyExpression(), ((BooleanValueRestriction)concept2).getRestrictedPropertyExpression()); // second criterion: value of the properties (it should rarely happen that // both boolean values are present since this is a contradiction or superfluous) Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLAPIDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLAPIDescriptionConvertVisitor.java 2010-02-13 13:02:53 UTC (rev 2027) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLAPIDescriptionConvertVisitor.java 2010-02-13 13:04:13 UTC (rev 2028) @@ -258,7 +258,7 @@ */ // get datatype property - DatatypeProperty dtp = description.getRestrictedPropertyExpresssion(); + DatatypeProperty dtp = description.getRestrictedPropertyExpression(); OWLDataProperty prop = factory.getOWLDataProperty(URI.create(dtp.getName())); stack.push(factory.getOWLDataValueRestriction(prop, constant)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2010-02-13 17:21:09
|
Revision: 2031 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2031&view=rev Author: jenslehmann Date: 2010-02-13 17:20:57 +0000 (Sat, 13 Feb 2010) Log Message: ----------- hasValue support for KBParser Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java trunk/src/dl-learner/org/dllearner/parser/ConfParser.java trunk/src/dl-learner/org/dllearner/parser/ConfParserConstants.java trunk/src/dl-learner/org/dllearner/parser/ConfParserTokenManager.java trunk/src/dl-learner/org/dllearner/parser/KBParser.java trunk/src/dl-learner/org/dllearner/parser/KBParserConstants.java trunk/src/dl-learner/org/dllearner/parser/KBParserTokenManager.java trunk/src/dl-learner/org/dllearner/parser/PrologParser.java trunk/src/dl-learner/org/dllearner/parser/PrologParserConstants.java trunk/src/dl-learner/org/dllearner/parser/PrologParserTokenManager.java trunk/src/dl-learner/org/dllearner/parser/kb.jj Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/junit/ParserTest.java Modified: trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -19,6 +19,8 @@ */ package org.dllearner.core.owl; +import java.util.Map; + /** * * String value restriction, e.g. \exists description hasValue "interesting item". @@ -47,4 +49,7 @@ return stringValue; } + public String toKBSyntaxString(String baseURI, Map<String, String> prefixes) { + return "(" + restrictedPropertyExpression.toKBSyntaxString(baseURI, prefixes) + " STRINGVALUE " + value.toKBSyntaxString(baseURI, prefixes) + ")"; + } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/core/owl/TypedConstant.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -56,7 +56,7 @@ } public String toKBSyntaxString(String baseURI, Map<String, String> prefixes) { - return literal; + return "\"" + literal + "\""; // return literal + "^^" + datatype; } Modified: trunk/src/dl-learner/org/dllearner/parser/ConfParser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/ConfParser.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/ConfParser.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -168,7 +168,7 @@ // n.dump(""); // System.out.println("Thank you."); } catch (Exception e) { - System.out.println("\nParse exception occurred. Please follow the advise given below."); + System.out.println("\u005cnParse exception occurred. Please follow the advise given below."); System.out.println(e.getMessage()); e.printStackTrace(); System.exit(0); @@ -944,7 +944,7 @@ for (int i = 0; i < jj_endpos; i++) { jj_expentry[i] = jj_lasttokens[i]; } - jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) { + jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { int[] oldentry = (int[])(it.next()); if (oldentry.length == jj_expentry.length) { for (int i = 0; i < jj_expentry.length; i++) { Modified: trunk/src/dl-learner/org/dllearner/parser/ConfParserConstants.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/ConfParserConstants.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/ConfParserConstants.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -2,10 +2,11 @@ package org.dllearner.parser; -/** +/** * Token literal values and constants. * Generated by org.javacc.parser.OtherFilesGen#start() */ +@SuppressWarnings("all") public interface ConfParserConstants { /** End of File. */ Modified: trunk/src/dl-learner/org/dllearner/parser/ConfParserTokenManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/ConfParserTokenManager.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/ConfParserTokenManager.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -16,8 +16,8 @@ import org.dllearner.cli.*; import org.dllearner.utilities.datastructures.*; +/** Token Manager. */ @SuppressWarnings("all") -/** Token Manager. */ public class ConfParserTokenManager implements ConfParserConstants { @@ -122,7 +122,7 @@ private int jjMoveStringLiteralDfa2_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(0, old0); + return jjStartNfa_0(0, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(1, active0); @@ -148,7 +148,7 @@ private int jjMoveStringLiteralDfa3_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(1, old0); + return jjStartNfa_0(1, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(2, active0); @@ -166,7 +166,7 @@ private int jjMoveStringLiteralDfa4_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(2, old0); + return jjStartNfa_0(2, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(3, active0); @@ -184,7 +184,7 @@ private int jjMoveStringLiteralDfa5_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(3, old0); + return jjStartNfa_0(3, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(4, active0); @@ -589,7 +589,7 @@ /** Lexer state names. */ public static final String[] lexStateNames = { - "DEFAULT", + "DEFAULT", }; static final long[] jjtoToken = { 0x1ffffff01L, @@ -685,13 +685,13 @@ EOFLoop : for (;;) - { - try - { + { + try + { curChar = input_stream.BeginToken(); - } + } catch(java.io.IOException e) - { + { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; Modified: trunk/src/dl-learner/org/dllearner/parser/KBParser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/KBParser.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/KBParser.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -494,15 +494,22 @@ jj_consume_token(48); jj_consume_token(23); {if (true) return new BooleanValueRestriction(dp, true);} + } else if (jj_2_9(4)) { + jj_consume_token(22); + dp = DatatypeProperty(); + jj_consume_token(47); + jj_consume_token(49); + jj_consume_token(23); + {if (true) return new BooleanValueRestriction(dp, false);} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 22: jj_consume_token(22); dp = DatatypeProperty(); - jj_consume_token(47); - jj_consume_token(49); + jj_consume_token(50); + s = String(); jj_consume_token(23); - {if (true) return new BooleanValueRestriction(dp, false);} + {if (true) return new StringValueRestriction(dp, s);} break; default: jj_la1[11] = jj_gen; @@ -716,6 +723,13 @@ finally { jj_save(7, xla); } } + private boolean jj_2_9(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_9(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(8, xla); } + } + private boolean jj_3_7() { if (jj_scan_token(22)) return true; if (jj_3R_2()) return true; @@ -793,7 +807,7 @@ } private boolean jj_3R_18() { - if (jj_3R_27()) return true; + if (jj_3R_26()) return true; return false; } @@ -837,6 +851,8 @@ jj_scanpos = xsp; if (jj_3_8()) { jj_scanpos = xsp; + if (jj_3_9()) { + jj_scanpos = xsp; if (jj_3R_16()) return true; } } @@ -849,21 +865,22 @@ } } } + } return false; } - private boolean jj_3R_26() { + private boolean jj_3R_27() { if (jj_scan_token(ID)) return true; return false; } private boolean jj_3R_20() { - if (jj_3R_27()) return true; + if (jj_3R_26()) return true; return false; } private boolean jj_3R_17() { - if (jj_3R_26()) return true; + if (jj_3R_27()) return true; return false; } @@ -898,12 +915,12 @@ } private boolean jj_3R_24() { - if (jj_3R_27()) return true; + if (jj_3R_26()) return true; return false; } private boolean jj_3R_19() { - if (jj_3R_26()) return true; + if (jj_3R_27()) return true; return false; } @@ -918,12 +935,12 @@ } private boolean jj_3R_22() { - if (jj_3R_27()) return true; + if (jj_3R_26()) return true; return false; } private boolean jj_3R_23() { - if (jj_3R_26()) return true; + if (jj_3R_27()) return true; return false; } @@ -938,7 +955,7 @@ } private boolean jj_3R_21() { - if (jj_3R_26()) return true; + if (jj_3R_27()) return true; return false; } @@ -952,7 +969,7 @@ return false; } - private boolean jj_3R_27() { + private boolean jj_3R_26() { if (jj_scan_token(STRING)) return true; return false; } @@ -960,6 +977,15 @@ private boolean jj_3R_16() { if (jj_scan_token(22)) return true; if (jj_3R_6()) return true; + if (jj_scan_token(50)) return true; + if (jj_3R_26()) return true; + if (jj_scan_token(23)) return true; + return false; + } + + private boolean jj_3_9() { + if (jj_scan_token(22)) return true; + if (jj_3R_6()) return true; if (jj_scan_token(47)) return true; if (jj_scan_token(49)) return true; if (jj_scan_token(23)) return true; @@ -1017,7 +1043,7 @@ private static void jj_la1_init_1() { jj_la1_1 = new int[] {0xffd,0xffd,0x0,0x2,0x1c,0x60,0x380,0xc00,0x7000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } - final private JJCalls[] jj_2_rtns = new JJCalls[8]; + final private JJCalls[] jj_2_rtns = new JJCalls[9]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -1182,7 +1208,7 @@ for (int i = 0; i < jj_endpos; i++) { jj_expentry[i] = jj_lasttokens[i]; } - jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) { + jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { int[] oldentry = (int[])(it.next()); if (oldentry.length == jj_expentry.length) { for (int i = 0; i < jj_expentry.length; i++) { @@ -1201,7 +1227,7 @@ /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); - boolean[] la1tokens = new boolean[50]; + boolean[] la1tokens = new boolean[51]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; @@ -1218,7 +1244,7 @@ } } } - for (int i = 0; i < 50; i++) { + for (int i = 0; i < 51; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; @@ -1245,7 +1271,7 @@ private void jj_rescan_token() { jj_rescan = true; - for (int i = 0; i < 8; i++) { + for (int i = 0; i < 9; i++) { try { JJCalls p = jj_2_rtns[i]; do { @@ -1260,6 +1286,7 @@ case 5: jj_3_6(); break; case 6: jj_3_7(); break; case 7: jj_3_8(); break; + case 8: jj_3_9(); break; } } p = p.next; Modified: trunk/src/dl-learner/org/dllearner/parser/KBParserConstants.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/KBParserConstants.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/KBParserConstants.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -2,10 +2,11 @@ package org.dllearner.parser; -/** +/** * Token literal values and constants. * Generated by org.javacc.parser.OtherFilesGen#start() */ +@SuppressWarnings("all") public interface KBParserConstants { /** End of File. */ @@ -100,6 +101,7 @@ "\"IS\"", "\"TRUE\"", "\"FALSE\"", + "\"STRINGVALUE\"", }; } Modified: trunk/src/dl-learner/org/dllearner/parser/KBParserTokenManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/KBParserTokenManager.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/KBParserTokenManager.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -4,8 +4,8 @@ import java.io.*; import java.net.URL; +/** Token Manager. */ @SuppressWarnings("all") -/** Token Manager. */ public class KBParserTokenManager implements KBParserConstants { @@ -18,7 +18,7 @@ switch (pos) { case 0: - if ((active0 & 0x34c000000L) != 0L) + if ((active0 & 0x400034c000000L) != 0L) return 10; if ((active0 & 0x2000020000000L) != 0L) return 18; @@ -72,7 +72,7 @@ case 82: return jjMoveStringLiteralDfa1_0(0x8000000000L); case 83: - return jjMoveStringLiteralDfa1_0(0x34c000000L); + return jjMoveStringLiteralDfa1_0(0x400034c000000L); case 84: return jjMoveStringLiteralDfa1_0(0x1000010001000L); default : @@ -112,6 +112,8 @@ if ((active0 & 0x800000000000L) != 0L) return jjStopAtPos(1, 47); break; + case 84: + return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L); case 85: return jjMoveStringLiteralDfa2_0(active0, 0x20c000000L); case 110: @@ -130,7 +132,7 @@ private int jjMoveStringLiteralDfa2_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(0, old0); + return jjStartNfa_0(0, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(1, active0); @@ -164,7 +166,7 @@ return jjStopAtPos(2, 12); break; case 82: - return jjMoveStringLiteralDfa3_0(active0, 0x50000000000L); + return jjMoveStringLiteralDfa3_0(active0, 0x4050000000000L); case 84: return jjMoveStringLiteralDfa3_0(active0, 0x484000002000L); case 85: @@ -187,7 +189,7 @@ private int jjMoveStringLiteralDfa3_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(1, old0); + return jjStartNfa_0(1, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(2, active0); @@ -207,6 +209,8 @@ return jjMoveStringLiteralDfa4_0(active0, 0x421000000000L); case 71: return jjMoveStringLiteralDfa4_0(active0, 0x8000000000L); + case 73: + return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L); case 76: return jjMoveStringLiteralDfa4_0(active0, 0x200000000000L); case 79: @@ -233,7 +237,7 @@ private int jjMoveStringLiteralDfa4_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(2, old0); + return jjStartNfa_0(2, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(3, active0); @@ -258,7 +262,7 @@ case 77: return jjMoveStringLiteralDfa5_0(active0, 0x2800000000L); case 78: - return jjMoveStringLiteralDfa5_0(active0, 0x50000000000L); + return jjMoveStringLiteralDfa5_0(active0, 0x4050000000000L); case 79: return jjMoveStringLiteralDfa5_0(active0, 0x200002000L); case 84: @@ -281,7 +285,7 @@ private int jjMoveStringLiteralDfa5_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(3, old0); + return jjStartNfa_0(3, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(4, active0); @@ -296,7 +300,7 @@ return jjStopAtPos(5, 44); return jjMoveStringLiteralDfa6_0(active0, 0x400000000000L); case 71: - return jjMoveStringLiteralDfa6_0(active0, 0x50000000000L); + return jjMoveStringLiteralDfa6_0(active0, 0x4050000000000L); case 77: if ((active0 & 0x2000L) != 0L) return jjStopAtPos(5, 13); @@ -325,7 +329,7 @@ private int jjMoveStringLiteralDfa6_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(4, old0); + return jjStartNfa_0(4, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(5, active0); @@ -355,6 +359,8 @@ break; case 83: return jjMoveStringLiteralDfa7_0(active0, 0x4000000L); + case 86: + return jjMoveStringLiteralDfa7_0(active0, 0x4000000000000L); case 101: if ((active0 & 0x80000000L) != 0L) return jjStopAtPos(6, 31); @@ -375,7 +381,7 @@ private int jjMoveStringLiteralDfa7_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(5, old0); + return jjStartNfa_0(5, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(6, active0); @@ -383,6 +389,8 @@ } switch(curChar) { + case 65: + return jjMoveStringLiteralDfa8_0(active0, 0x4000000000000L); case 69: return jjMoveStringLiteralDfa8_0(active0, 0x84200000000L); case 78: @@ -407,7 +415,7 @@ private int jjMoveStringLiteralDfa8_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(6, old0); + return jjStartNfa_0(6, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(7, active0); @@ -415,6 +423,8 @@ } switch(curChar) { + case 76: + return jjMoveStringLiteralDfa9_0(active0, 0x4000000000000L); case 79: return jjMoveStringLiteralDfa9_0(active0, 0x21004000000L); case 80: @@ -435,7 +445,7 @@ private int jjMoveStringLiteralDfa9_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(7, old0); + return jjStartNfa_0(7, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(8, active0); @@ -453,6 +463,8 @@ return jjMoveStringLiteralDfa10_0(active0, 0x84000000000L); case 84: return jjMoveStringLiteralDfa10_0(active0, 0x200000000L); + case 85: + return jjMoveStringLiteralDfa10_0(active0, 0x4000000000000L); case 101: if ((active0 & 0x10000000L) != 0L) return jjStopAtPos(9, 28); @@ -469,7 +481,7 @@ private int jjMoveStringLiteralDfa10_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(8, old0); + return jjStartNfa_0(8, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(9, active0); @@ -478,6 +490,8 @@ switch(curChar) { case 69: + if ((active0 & 0x4000000000000L) != 0L) + return jjStopAtPos(10, 50); return jjMoveStringLiteralDfa11_0(active0, 0x21000000000L); case 79: return jjMoveStringLiteralDfa11_0(active0, 0x84200000000L); @@ -489,7 +503,7 @@ private int jjMoveStringLiteralDfa11_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(9, old0); + return jjStartNfa_0(9, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(10, active0); @@ -513,7 +527,7 @@ private int jjMoveStringLiteralDfa12_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(10, old0); + return jjStartNfa_0(10, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(11, active0); @@ -533,7 +547,7 @@ private int jjMoveStringLiteralDfa13_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(11, old0); + return jjStartNfa_0(11, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(12, active0); @@ -553,7 +567,7 @@ private int jjMoveStringLiteralDfa14_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(12, old0); + return jjStartNfa_0(12, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(13, active0); @@ -575,7 +589,7 @@ private int jjMoveStringLiteralDfa15_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(13, old0); + return jjStartNfa_0(13, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(14, active0); @@ -597,7 +611,7 @@ private int jjMoveStringLiteralDfa16_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(14, old0); + return jjStartNfa_0(14, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(15, active0); @@ -621,7 +635,7 @@ private int jjMoveStringLiteralDfa17_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(15, old0); + return jjStartNfa_0(15, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(16, active0); @@ -643,7 +657,7 @@ private int jjMoveStringLiteralDfa18_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(16, old0); + return jjStartNfa_0(16, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(17, active0); @@ -669,7 +683,7 @@ private int jjMoveStringLiteralDfa19_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(17, old0); + return jjStartNfa_0(17, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(18, active0); @@ -693,7 +707,7 @@ private int jjMoveStringLiteralDfa20_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(18, old0); + return jjStartNfa_0(18, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(19, active0); @@ -715,7 +729,7 @@ private int jjMoveStringLiteralDfa21_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(19, old0); + return jjStartNfa_0(19, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(20, active0); @@ -1124,14 +1138,15 @@ "\104\101\124\101\124\131\120\105\120\122\117\120\105\122\124\131\104\117\115\101\111\116", "\122\101\116\107\105", "\117\120\122\101\116\107\105", "\117\102\112\105\103\124\120\122\117\120\105\122\124\131\122\101\116\107\105", "\104\120\122\101\116\107\105", "\104\101\124\101\124\131\120\105\120\122\117\120\105\122\124\131\122\101\116\107\105", "\104\117\125\102\114\105", "\102\117\117\114\105\101\116", -"\111\116\124\105\107\105\122", "\111\123", "\124\122\125\105", "\106\101\114\123\105", }; +"\111\116\124\105\107\105\122", "\111\123", "\124\122\125\105", "\106\101\114\123\105", +"\123\124\122\111\116\107\126\101\114\125\105", }; /** Lexer state names. */ public static final String[] lexStateNames = { - "DEFAULT", + "DEFAULT", }; static final long[] jjtoToken = { - 0x3ffffffffff01L, + 0x7ffffffffff01L, }; static final long[] jjtoSkip = { 0xfeL, @@ -1224,13 +1239,13 @@ EOFLoop : for (;;) - { - try - { + { + try + { curChar = input_stream.BeginToken(); - } + } catch(java.io.IOException e) - { + { jjmatchedKind = 0; matchedToken = jjFillToken(); return matchedToken; Modified: trunk/src/dl-learner/org/dllearner/parser/PrologParser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/PrologParser.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/PrologParser.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -736,7 +736,7 @@ for (int i = 0; i < jj_endpos; i++) { jj_expentry[i] = jj_lasttokens[i]; } - jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) { + jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { int[] oldentry = (int[])(it.next()); if (oldentry.length == jj_expentry.length) { for (int i = 0; i < jj_expentry.length; i++) { Modified: trunk/src/dl-learner/org/dllearner/parser/PrologParserConstants.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/PrologParserConstants.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/PrologParserConstants.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -2,10 +2,11 @@ package org.dllearner.parser; -/** +/** * Token literal values and constants. * Generated by org.javacc.parser.OtherFilesGen#start() */ +@SuppressWarnings("all") public interface PrologParserConstants { /** End of File. */ Modified: trunk/src/dl-learner/org/dllearner/parser/PrologParserTokenManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/PrologParserTokenManager.java 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/PrologParserTokenManager.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -2,6 +2,7 @@ package org.dllearner.parser; /** Token Manager. */ +@SuppressWarnings("all") public class PrologParserTokenManager implements PrologParserConstants { @@ -96,7 +97,7 @@ private int jjMoveStringLiteralDfa2_0(long old0, long active0) { if (((active0 &= old0)) == 0L) - return jjStartNfa_0(0, old0); + return jjStartNfa_0(0, old0); try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { jjStopStringLiteralDfa_0(1, active0); @@ -465,7 +466,7 @@ /** Lexer state names. */ public static final String[] lexStateNames = { - "DEFAULT", + "DEFAULT", }; static final long[] jjtoToken = { 0xff87b81L, @@ -565,13 +566,13 @@ EOFLoop : for (;;) - { - try - { + { + try + { curChar = input_stream.BeginToken(); - } + } catch(java.io.IOException e) - { + { jjmatchedKind = 0; matchedToken = jjFillToken(); matchedToken.specialToken = specialToken; Modified: trunk/src/dl-learner/org/dllearner/parser/kb.jj =================================================================== --- trunk/src/dl-learner/org/dllearner/parser/kb.jj 2010-02-13 17:13:49 UTC (rev 2030) +++ trunk/src/dl-learner/org/dllearner/parser/kb.jj 2010-02-13 17:20:57 UTC (rev 2031) @@ -262,12 +262,12 @@ | LOOKAHEAD(2) ac = AtomicConcept() {return ac;} // | s=Id() {return new AtomicConcept(s);} // | s=String() {return new AtomicConcept(s);} - // Parser geht bis zum n�chsten AND oder OR + // parse until next AND or OR | LOOKAHEAD( "(" Concept() And()) "(" c1=Concept() And() c2=Concept() ")" {return new Intersection(c1,c2);} | LOOKAHEAD( "(" Concept() Or()) "(" c1=Concept() Or() c2=Concept() ")" {return new Union(c1,c2);} - // EXISTS oder ALL reicht aus um richtigen Zweig zu w�hlen + // EXISTS or ALL is sufficient to chose the correct parser branch // | Exists() s=Id() "." c=Concept() // {return new Exists(new AtomicRole(s),c); } | Exists() ar=ObjectProperty() "." c=Concept() @@ -287,7 +287,8 @@ | LE() i=Integer() ar=ObjectProperty() "." c=Concept() {return new ObjectMaxCardinalityRestriction(i,ar,c);} | LOOKAHEAD(4) "(" dp=DatatypeProperty() "IS" "TRUE" ")" { return new BooleanValueRestriction(dp, true); } - | "(" dp=DatatypeProperty() "IS" "FALSE" ")" { return new BooleanValueRestriction(dp, false); } + | LOOKAHEAD(4) "(" dp=DatatypeProperty() "IS" "FALSE" ")" { return new BooleanValueRestriction(dp, false); } + | "(" dp=DatatypeProperty() "STRINGVALUE" s=String() ")" { return new StringValueRestriction(dp, s); } } void Or() : {} { <OR> } Added: trunk/src/dl-learner/org/dllearner/test/junit/ParserTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ParserTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/junit/ParserTest.java 2010-02-13 17:20:57 UTC (rev 2031) @@ -0,0 +1,45 @@ +/** + * Copyright (C) 2007-2009, 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.test.junit; + +import org.dllearner.core.owl.Description; +import org.dllearner.parser.KBParser; +import org.dllearner.parser.ParseException; +import org.junit.Test; + +/** + * Tests for various parsers in DL-Learner. + * + * + * @author Jens Lehmann. + * + */ +public class ParserTest { + + @Test + public void KBParserTest() throws ParseException { + String test = "(\"Sentence\" AND (EXISTS \"syntaxTreeHasPart\".\"VVPP\" AND EXISTS \"syntaxTreeHasPart\".(\"stts:AuxilliaryVerb\" AND (\"hasLemma\" STRINGVALUE \"werden\"))))"; + Description d = KBParser.parseConcept(test); + System.out.println(d.toKBSyntaxString("http://localhost/foo#", null)); + Description d2 = KBParser.parseConcept(d.toKBSyntaxString()); + System.out.println(d2.toKBSyntaxString("http://localhost/foo#", null)); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-13 19:33:57
|
Revision: 2034 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2034&view=rev Author: kurzum Date: 2010-02-13 19:33:50 +0000 (Sat, 13 Feb 2010) Log Message: ----------- finished script for iterative learning Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/KRKOntologyTBox.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/scripts/tiger/ExperimentConfig.java trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java trunk/src/dl-learner/org/dllearner/utilities/examples/Examples.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/tiger/GlobalTest.java Modified: trunk/src/dl-learner/org/dllearner/examples/KRKOntologyTBox.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRKOntologyTBox.java 2010-02-13 17:45:31 UTC (rev 2033) +++ trunk/src/dl-learner/org/dllearner/examples/KRKOntologyTBox.java 2010-02-13 19:33:50 UTC (rev 2034) @@ -70,11 +70,13 @@ public void addConcept(String concept){ try{ //make Description - Description d = KBParser.parseConcept(concept,ontologyURI.toString()+"#"); - //d.addChild(oecr); + KBParser.internalNamespace = ontologyURI.toString()+"#"; + Description d = KBParser.parseConcept(concept); kb.addTBoxAxiom(new EquivalentClassesAxiom(getAtomicConcept("test"),d)); - }catch (Exception e) {e.printStackTrace();} + }catch (Exception e) { + e.printStackTrace(); + } } public void initOntologyTBox(){ Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2010-02-13 17:45:31 UTC (rev 2033) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2010-02-13 19:33:50 UTC (rev 2034) @@ -30,9 +30,12 @@ import org.apache.log4j.Logger; import org.dllearner.algorithms.gp.ADC; import org.dllearner.core.ComponentManager; +import org.dllearner.core.owl.Constant; +import org.dllearner.core.owl.Datatype; import org.dllearner.core.owl.DatatypeExactCardinalityRestriction; import org.dllearner.core.owl.DatatypeMaxCardinalityRestriction; import org.dllearner.core.owl.DatatypeMinCardinalityRestriction; +import org.dllearner.core.owl.DatatypeProperty; import org.dllearner.core.owl.DatatypeSomeRestriction; import org.dllearner.core.owl.DatatypeValueRestriction; import org.dllearner.core.owl.Description; @@ -49,7 +52,9 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.ObjectValueRestriction; +import org.dllearner.core.owl.StringValueRestriction; import org.dllearner.core.owl.Thing; +import org.dllearner.core.owl.TypedConstant; import org.dllearner.core.owl.Union; import org.dllearner.parser.KBParser; import org.dllearner.parser.ParseException; @@ -229,15 +234,43 @@ s.clear(); // s.add("(\"http://nlp2rdf.org/ontology/Sentence\" AND (EXISTS \"http://nlp2rdf.org/ontology/syntaxTreeHasPart\".\"http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Pronoun\" AND EXISTS \"http://nlp2rdf.org/ontology/syntaxTreeHasPart\".\"http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag\"))"); - s.add("(\"http://nlp2rdf.org/ontology/Sentence\" AND (\"http://nlp2rdf.org/ontology/hasLemma\" VALUE \"test\" )"); +// s.add("(\"http://nlp2rdf.org/ontology/Sentence\" AND (\"http://nlp2rdf.org/ontology/hasLemma\" VALUE \"test\" )"); + String prefix = "http://nlp2rdf.org/ontology/"; + String test = "(\"Sentence\" AND (EXISTS \"syntaxTreeHasPart\".\"VVPP\" AND EXISTS \"syntaxTreeHasPart\".(\"stts:AuxilliaryVerb\" AND \"hasLemma\" = werden)))"; + + ObjectProperty stp = new ObjectProperty(prefix+"syntaxTreeHasPart"); + DatatypeProperty dtp = new DatatypeProperty(prefix+"hasLemma"); + StringValueRestriction svr = new StringValueRestriction(dtp,"werden" ); + Intersection inner = new Intersection(new NamedClass(prefix+"Auxillary"), svr); + Intersection middle = new Intersection( + new ObjectSomeRestriction(stp, new NamedClass(prefix+"VVPP")), + new ObjectSomeRestriction(stp, inner)); + Intersection outer = new Intersection( + new NamedClass(prefix+"Sentence"), + middle + ); + + System.out.println(outer.toKBSyntaxString(null,null)); + System.out.println(test); + +// s.add(outer.toKBSyntaxString(null,null)); + SparqlQueryDescriptionConvertVisitor testVisitor = new SparqlQueryDescriptionConvertVisitor(); + String q = testVisitor.getSparqlQuery(outer.toKBSyntaxString()); + System.out.println(q); + if (true) { + System.exit(0); + } + // <http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag> String query = ""; SparqlQueryDescriptionConvertVisitor visit = new SparqlQueryDescriptionConvertVisitor(); - visit.setLabels(true); - visit.setDistinct(true); - visit.setClassToSubclassesVirtuoso(subclassMap); + visit.setLabels(false); + visit.setDistinct(false); +// visit.setClassToSubclassesVirtuoso(subclassMap); + + for (String kbsyntax : s) { query = visit.getSparqlQuery(kbsyntax); result.put(kbsyntax, query); Modified: trunk/src/dl-learner/org/dllearner/scripts/tiger/ExperimentConfig.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/ExperimentConfig.java 2010-02-13 17:45:31 UTC (rev 2033) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/ExperimentConfig.java 2010-02-13 19:33:50 UTC (rev 2034) @@ -8,11 +8,12 @@ public int resultLimit = -1; public int splits = 5; - public int initialsplits = 10; - public int iteration = 5; + public int initialsplits = 30; + public int iteration = 1; public boolean useStartClass = true; - public int noise = 5; + public boolean searchTree = false; + public int noise = 0; //sets ValueFrequency treshold and maxExecution time public boolean adaptive = true; public int maxExecutionTime = 40; Added: trunk/src/dl-learner/org/dllearner/scripts/tiger/GlobalTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/GlobalTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/GlobalTest.java 2010-02-13 19:33:50 UTC (rev 2034) @@ -0,0 +1,407 @@ +package org.dllearner.scripts.tiger; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.dllearner.algorithms.refinement2.ROLComponent2; +import org.dllearner.algorithms.refinement2.ROLearner2; +import org.dllearner.core.ComponentPool; +import org.dllearner.core.EvaluatedDescription; +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.configurators.ComponentFactory; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.kb.OWLFile; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.learningproblems.PosNegLPStandard; +import org.dllearner.reasoning.FastInstanceChecker; +import org.dllearner.refinementoperators.RhoDRDown; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.JamonMonitorLogger; +import org.dllearner.utilities.examples.ExMakerFixedSize; +import org.dllearner.utilities.examples.ExampleDataCollector; +import org.dllearner.utilities.examples.Examples; + +import com.jamonapi.Monitor; + +public class GlobalTest { + private static final Logger logger = Logger.getLogger(GlobalTest.class); + + static DecimalFormat df = new DecimalFormat("00.###%"); + + static String backgroundXML = "files/tiger.noSchema.noImports.rdf"; + static String propertiesXML = "files/propertiesOnly.rdf"; + static String sentenceXMLFolder = "files/tiger/"; + static String sentenceprefix = "http://nlp2rdf.org/ontology/s"; + static String prefix = "http://nlp2rdf.org/ontology/"; + + static String active = "files/active_all_sentenceNumbers.txt"; + static String passiveNoZU = "files/passive_noZuInf_sentenceNumbers.txt"; + static String passiveWithZu = "files/passive_zuInf_sentenceNumbers.txt"; + static String test_has_pos = "files/test_has_pos.txt"; + static String test_has_neg = "files/test_has_neg.txt"; + + static SparqlEndpoint sparqlEndpoint; + static SPARQLTasks sparqlTasks; + + static String sparqlEndpointURL = "http://db0.aksw.org:8893/sparql"; + static String graph = "http://nlp2rdf.org/tiger"; + static String rulegraph = "http://nlp2rdf.org/schema/rules1"; + + + + + + final static boolean debug = false; + //no randomization in examples + final static boolean randomizedebug = !debug; + + public static void main(String[] args) { + LogHelper.initLoggers(); + Logger.getLogger(Cache.class).setLevel(Level.INFO); + Logger.getLogger(ComponentPool.class).setLevel(Level.INFO); + Logger.getLogger(ROLearner2.class).setLevel(Level.TRACE); + Logger.getLogger(RhoDRDown.class).setLevel(Level.TRACE); + Logger.getLogger(SparqlQuery.class).setLevel(Level.INFO); + + try { + sparqlEndpoint = new SparqlEndpoint(new URL(sparqlEndpointURL), new ArrayList<String>(Arrays + .asList(new String[] { graph })), new ArrayList<String>()); + sparqlTasks = new SPARQLTasks(Cache.getDefaultCache(), sparqlEndpoint); + } catch (Exception e) { + e.printStackTrace(); + } + + Examples allExamples = new Examples(); + SortedSet<String> positives; + SortedSet<String> negatives; + +// positives = read(passiveWithZu); + positives = read(passiveNoZU); + negatives = read(active); + + //removing overlap + positives.removeAll(negatives); + negatives.removeAll(positives); + +// System.out.println(Helper.intersection(passiveZuInfSentences, activeSentences)); +// System.out.println(Helper.intersection(passiveZuInfSentences, passiveNoZuSentences)); +// System.out.println(Helper.intersection(activeSentences, passiveNoZuSentences)); + allExamples.addPosTrain(positives); + allExamples.addNegTrain(negatives); + + logger.debug("All examples \n"+allExamples); + + ExperimentConfig config = new ExperimentConfig(); + firstContact( allExamples, config); + JamonMonitorLogger.writeHTMLReport("log/tiger.html"); + //retrieved wird neues Example, als schnittmenge mit all + //und den bisher gewaehlten + //dann splits auswählen und + //pos und neg wieder hinzufuegen + + } + + public static void firstContact(Examples allExamples, ExperimentConfig config){ + ExMakerFixedSize fs = new ExMakerFixedSize(allExamples, randomizedebug); + Examples learn = fs.select(config.initialsplits, config.initialsplits); + logger.debug("Intial training set \n"+learn); +// System.out.println(learn.getPosTrain()); +// System.out.println(learn.getNegTrain()); +// if (true) { +// System.exit(0); +// } +// int size = 0; + for(int i = 0 ; config.stopCondition(i, learn) ;i++ ) { + /*LEARNING*/ + EvaluatedDescription ed = learn(learn, config); + + /*RETRIEVING*/ + SortedSet<String> retrieved = getSentences(ed, config.resultLimit); + logger.debug("Retrieved "+retrieved.size()+" sentences"); + + + /*MASHING*/ + //Menge aller positiven geschn. mit den gefundenen + SortedSet<String> posAsPos = Helper.intersection(retrieved, allExamples.getPosTrain()); + logger.debug("Number of retrieved positives: "+posAsPos.size()); + logger.debug("Number of total positives: "+allExamples.getPosTrain().size()); + results(posAsPos, retrieved, allExamples); + + //Menge aller positiven geschn. mit den gefundenen + SortedSet<String> negAsPos = Helper.intersection(retrieved, allExamples.getNegTrain()); + logger.debug("Number of retrieved negatives: "+negAsPos.size()); + logger.debug("Total: "+posAsPos.size()+" + "+negAsPos.size() +" = "+retrieved.size()); + +// if(retrieved.size()!=(posAsPos.size()+negAsPos.size())){ +// logger.warn("sets are wrong"); +// System.exit(0); +// } + + Examples newlyFound = new Examples(); + newlyFound.addPosTrain(Helper.intersection(retrieved, learn.getPosTest())); + newlyFound.addNegTrain(Helper.intersection(retrieved, learn.getNegTest())); + //validate here + + fs = new ExMakerFixedSize(newlyFound, randomizedebug); + newlyFound = fs.select(config.splits, config.splits); + + learn.addPosTrain(newlyFound.getPosTrain()); + learn.addNegTrain(newlyFound.getNegTrain()); + logger.debug("Next training set \n"+learn); +// size = learn.getPosTrain().size() + learn.getNegTrain().size(); + + } + + + + + + } + + private static void results(SortedSet<String> posAsPos, SortedSet<String> retrieved, Examples allExamples) { + double precision = precision( posAsPos.size(), retrieved.size()); + double recall = recall( posAsPos.size(),allExamples.getPosTrain().size()); + logger.info("F-Measure: "+df.format( (2*precision*recall)/(precision+recall)) ); + + } + + public static double precision( int posAsPos, int retrieved){ + double precision = ((double)posAsPos)/((double)retrieved); + logger.info("Precision: "+df.format(precision)); + return precision; + } + public static double recall( int posAsPos, int allPositives){ + double recall = ((double)posAsPos)/((double)allPositives); + + logger.info("Recall: "+df.format(recall)); + return recall; + + } + + private static Set<KnowledgeSource> _getOWL(Examples ex) throws Exception{ + Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); + List<URL> urls = new ArrayList<URL>(); + urls.addAll(ExampleDataCollector.convert(sentenceXMLFolder, ex.getPosTrain())); + urls.addAll(ExampleDataCollector.convert(sentenceXMLFolder, ex.getNegTrain())); + urls.add(new File(backgroundXML).toURI().toURL()); + + for (URL u : urls) { + OWLFile ks = ComponentFactory.getOWLFile(u); + tmp.add(ks); + } + return tmp; + } + @SuppressWarnings("unused") + private static Set<KnowledgeSource> _getSPARQL(Examples ex) throws Exception{ + Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); + + Set<String> examples = new TreeSet<String>(); + examples.addAll(ex.getPosTrain()); + examples.addAll(ex.getNegTrain()); + SparqlKnowledgeSource ks = ComponentFactory.getSparqlKnowledgeSource(new URL(sparqlEndpointURL), examples); + ks.getConfigurator().setUrl(new URL(sparqlEndpointURL)); + ks.getConfigurator().setDefaultGraphURIs(new HashSet<String>(Arrays.asList(new String[]{graph}))); + ks.getConfigurator().setInstances(examples); + ks.getConfigurator().setDissolveBlankNodes(false); + ks.getConfigurator().setRecursionDepth(2); + ks.getConfigurator().setDissolveBlankNodes(false); + ks.getConfigurator().setCloseAfterRecursion(true); + ks.getConfigurator().setGetAllSuperClasses(true); + ks.getConfigurator().setGetPropertyInformation(false); + ks.getConfigurator().setUseLits(true); +// ks.getConfigurator(). + OWLFile ks2 = ComponentFactory.getOWLFile(new File(propertiesXML).toURI().toURL()); + tmp.add(ks); + tmp.add(ks2); + + return tmp; + } + + //test if virtuoso is correct + public static void validate(Description d, Examples newlyFound){ + try { + ExMakerFixedSize fs = new ExMakerFixedSize(newlyFound); + Examples tmp = fs.select(100, 100); + FastInstanceChecker fc = _getFastInstanceChecker(tmp); + SortedSet<Individual> inds = fc.getIndividuals(d); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static FastInstanceChecker _getFastInstanceChecker(Examples ex)throws Exception{ + Set<KnowledgeSource> tmp = _getOWL(ex); +// Set<KnowledgeSource> tmp = _getSPARQL(ex); + + + FastInstanceChecker rc = ComponentFactory.getFastInstanceChecker(tmp); + for (KnowledgeSource ks : tmp) { + ks.init(); + } + rc.init(); + return rc; + } + + public static EvaluatedDescription learn(Examples ex, ExperimentConfig config) { + Monitor init = JamonMonitorLogger.getTimeMonitor(GlobalTest.class, "init").start(); + + EvaluatedDescription result = null; + + try { + FastInstanceChecker rc = _getFastInstanceChecker(ex); + PosNegLPStandard lp = ComponentFactory + .getPosNegLPStandard(rc, ex.getPosTrain(), ex.getNegTrain()); + LearningAlgorithm la = _getROLLearner(lp, rc, config, ex); + lp.init(); + la.init(); + init.stop(); + Monitor learning = JamonMonitorLogger.getTimeMonitor(GlobalTest.class, "learning") + .start(); + la.start(); + learning.stop(); + + result = la.getCurrentlyBestEvaluatedDescription(); + logger.debug(PrefixMap.toKBSyntaxString(result.getDescription())); + logger.debug(PrefixMap.toManchesterSyntaxString(result.getDescription())); + + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + return result; + } + + public static SortedSet<String> getSentences(EvaluatedDescription ed, int resultLimit) { + SortedSet<String> result = new TreeSet<String>(); + SparqlQueryDescriptionConvertVisitor visit = new SparqlQueryDescriptionConvertVisitor(); + visit.setDistinct(true); + visit.setLabels(false); + visit.setLimit(resultLimit); + String sparqlQuery = ""; + try { + sparqlQuery = visit.getSparqlQuery(ed.getDescription()); + } catch (Exception e1) { + e1.printStackTrace(); + } + logger.debug(PrefixMap.toKBSyntaxString(ed.getDescription())); + sparqlQuery = " \n define input:inference \"" + rulegraph + "\" \n" + "" + sparqlQuery; + logger.debug(sparqlQuery); + + Monitor m = JamonMonitorLogger.getTimeMonitor(GlobalTest.class, "sparqlquery").start(); + result.addAll(sparqlTasks.queryAsSet(sparqlQuery, "subject")); + m.stop(); + logger.debug("query avg: " + ((double)m.getAvg() / (double)1000)+ " seconds (last: "+((double)m.getLastValue() / (double)1000)+")"); + if(result.isEmpty()){ + + logger.error("sparql query returned no results "); + logger.error(sparqlQuery); + System.exit(0); + } + return result; + } + + private static LearningAlgorithm _getROLLearner(LearningProblem lp, ReasonerComponent rc, ExperimentConfig config, Examples ex) + throws Exception { + + int maxExecutionTime = config.maxExecutionTime; + int valueFrequencyThreshold = config.valueFrequencyThreshold; + if(config.adaptive){ + maxExecutionTime = 2 * ex.sizeOfTrainingSets(); + valueFrequencyThreshold = ex.getPosTrain().size(); +// valueFrequencyThreshold = (int) Math.floor(0.8d*((double)ex.getPosTrain().size())); + + } + + ROLComponent2 la = ComponentFactory.getROLComponent2(lp, rc); + la.getConfigurator().setUseExistsConstructor(true); + + la.getConfigurator().setUseAllConstructor(false); + la.getConfigurator().setUseCardinalityRestrictions(false); + la.getConfigurator().setUseNegation(false); + la.getConfigurator().setUseHasValueConstructor(false); + la.getConfigurator().setUseDataHasValueConstructor(true); + la.getConfigurator().setValueFrequencyThreshold(valueFrequencyThreshold); + + la.getConfigurator().setIgnoredConcepts(new HashSet<String>(Arrays.asList(new String[]{ + "http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag", + "http://nlp2rdf.org/ontology/comma_tag", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SentenceFinalPunctuation" + }))); + + + la.getConfigurator().setNoisePercentage(config.noise); + la.getConfigurator().setTerminateOnNoiseReached(true); + la.getConfigurator().setMaxExecutionTimeInSeconds(maxExecutionTime); + + if(config.useStartClass){ + la.getConfigurator().setStartClass(prefix + "Sentence"); + } + + la.getConfigurator().setWriteSearchTree(config.searchTree); + la.getConfigurator().setSearchTreeFile("log/searchTreeTiger.txt"); + la.getConfigurator().setReplaceSearchTree(true); + return la; + } + + public static SortedSet<String> read(String f) { + SortedSet<String> result = new TreeSet<String>(); + BufferedReader in = null; + try { + in = new BufferedReader(new InputStreamReader(new FileInputStream(f))); + + String line; + while ((line = in.readLine()) != null) { + try { + line = line.trim(); + Integer.parseInt(line); + if (!result.add(sentenceprefix + line)) { + logger.error("reading failed"); + System.exit(0); + } + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + } + + } catch (Exception e) { + e.printStackTrace(); + logger.error("Could not read examples from: " + f); + System.exit(0); + + } finally { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + logger.info("read " + result.size() + " lines from " + f); + + return result; + } + +} Modified: trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-13 17:45:31 UTC (rev 2033) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-13 19:33:50 UTC (rev 2034) @@ -26,6 +26,8 @@ import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.configurators.ComponentFactory; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SPARQLTasks; @@ -36,6 +38,7 @@ import org.dllearner.learningproblems.PosNegLPStandard; import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.refinementoperators.RhoDRDown; +import org.dllearner.utilities.Files; import org.dllearner.utilities.Helper; import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.examples.ExMakerFixedSize; @@ -47,7 +50,10 @@ public class TestIterativeLearning { private static final Logger logger = Logger.getLogger(TestIterativeLearning.class); - static String backgroundXML = "files/tiger.noSchema.noImports.rdf"; + static DecimalFormat df = new DecimalFormat("00.###%"); + +// static String backgroundXML = "files/tiger.noSchema.noImports.rdf"; + static String backgroundXML = "files/tiger_trimmed_toPOS.rdf"; static String propertiesXML = "files/propertiesOnly.rdf"; static String sentenceXMLFolder = "files/tiger/"; static String sentenceprefix = "http://nlp2rdf.org/ontology/s"; @@ -68,6 +74,8 @@ + + final static boolean debug = false; //no randomization in examples final static boolean randomizedebug = !debug; @@ -133,7 +141,7 @@ EvaluatedDescription ed = learn(learn, config); /*RETRIEVING*/ - SortedSet<String> retrieved = getSentences(ed, config.resultLimit); + SortedSet<String> retrieved = getSentences(ed, config.resultLimit, learn); logger.debug("Retrieved "+retrieved.size()+" sentences"); @@ -142,23 +150,34 @@ SortedSet<String> posAsPos = Helper.intersection(retrieved, allExamples.getPosTrain()); logger.debug("Number of retrieved positives: "+posAsPos.size()); logger.debug("Number of total positives: "+allExamples.getPosTrain().size()); - precision( posAsPos.size(), retrieved.size()); + results(posAsPos, retrieved, allExamples); //Menge aller positiven geschn. mit den gefundenen - recall( posAsPos.size(),allExamples.getPosTrain().size()); - SortedSet<String> negAsPos = Helper.intersection(retrieved, allExamples.getNegTrain()); logger.debug("Number of retrieved negatives: "+negAsPos.size()); logger.debug("Total: "+posAsPos.size()+" + "+negAsPos.size() +" = "+retrieved.size()); + //not covered + + // if(retrieved.size()!=(posAsPos.size()+negAsPos.size())){ // logger.warn("sets are wrong"); // System.exit(0); // } Examples newlyFound = new Examples(); - newlyFound.addPosTrain(Helper.intersection(retrieved, learn.getPosTest())); - newlyFound.addNegTrain(Helper.intersection(retrieved, learn.getNegTest())); + SortedSet<String> discoveredPosInStore = Helper.intersection(retrieved, learn.getPosTest()); + SortedSet<String> misclassifiedNegInStore = Helper.intersection(retrieved, learn.getNegTest()); + newlyFound.addPosTrain(discoveredPosInStore); + newlyFound.addNegTrain(misclassifiedNegInStore); + int print = 5; + logger.info("Discovered "+discoveredPosInStore.size()+" positive sentences in store (printing "+print+"):"); + _getLabels(discoveredPosInStore, print); + logger.info("Misclassified "+misclassifiedNegInStore.size()+" negative sentences in store (printing "+print+"):"); + _getLabels(misclassifiedNegInStore, print); + + + fs = new ExMakerFixedSize(newlyFound, randomizedebug); newlyFound = fs.select(config.splits, config.splits); @@ -175,20 +194,33 @@ } - public static void precision( int posAsPos, int retrieved){ - logger.info("Precision: "+DecimalFormat.getPercentInstance().format(((double)posAsPos)/(double)retrieved)+"%"); + private static void results(SortedSet<String> posAsPos, SortedSet<String> retrieved, Examples allExamples) { + double precision = precision( posAsPos.size(), retrieved.size()); + double recall = recall( posAsPos.size(),allExamples.getPosTrain().size()); + logger.info("F-Measure: "+df.format( (2*precision*recall)/(precision+recall)) ); + } - public static void recall( int posAsPos, int allPositives){ - logger.info("Recall: "+DecimalFormat.getPercentInstance().format(((double)posAsPos)/(double)allPositives)+"%"); + + public static double precision( int posAsPos, int retrieved){ + double precision = ((double)posAsPos)/((double)retrieved); + logger.info("Precision: "+df.format(precision)); + return precision; + } + public static double recall( int posAsPos, int allPositives){ + double recall = ((double)posAsPos)/((double)allPositives); + logger.info("Recall: "+df.format(recall)); + return recall; + } private static Set<KnowledgeSource> _getOWL(Examples ex) throws Exception{ Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); List<URL> urls = new ArrayList<URL>(); + urls.add(new File(backgroundXML).toURI().toURL()); urls.addAll(ExampleDataCollector.convert(sentenceXMLFolder, ex.getPosTrain())); urls.addAll(ExampleDataCollector.convert(sentenceXMLFolder, ex.getNegTrain())); - urls.add(new File(backgroundXML).toURI().toURL()); + for (URL u : urls) { OWLFile ks = ComponentFactory.getOWLFile(u); @@ -222,25 +254,42 @@ return tmp; } - public static EvaluatedDescription learn(Examples ex, ExperimentConfig config) { - Monitor init = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "init").start(); - - EvaluatedDescription result = null; - + //test if virtuoso is correct + public static void validate(Description d, Examples newlyFound){ try { + ExMakerFixedSize fs = new ExMakerFixedSize(newlyFound); + Examples tmp = fs.select(100, 100); + FastInstanceChecker fc = _getFastInstanceChecker(tmp); + @SuppressWarnings("unused") + SortedSet<Individual> inds = fc.getIndividuals(d); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static FastInstanceChecker _getFastInstanceChecker(Examples ex)throws Exception{ Set<KnowledgeSource> tmp = _getOWL(ex); // Set<KnowledgeSource> tmp = _getSPARQL(ex); FastInstanceChecker rc = ComponentFactory.getFastInstanceChecker(tmp); - PosNegLPStandard lp = ComponentFactory - .getPosNegLPStandard(rc, ex.getPosTrain(), ex.getNegTrain()); - LearningAlgorithm la = _getROLLearner(lp, rc, config, ex); - for (KnowledgeSource ks : tmp) { ks.init(); } rc.init(); + return rc; + } + + public static EvaluatedDescription learn(Examples ex, ExperimentConfig config) { + Monitor init = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "init").start(); + + EvaluatedDescription result = null; + + try { + FastInstanceChecker rc = _getFastInstanceChecker(ex); + PosNegLPStandard lp = ComponentFactory + .getPosNegLPStandard(rc, ex.getPosTrain(), ex.getNegTrain()); + LearningAlgorithm la = _getROLLearner(lp, rc, config, ex); lp.init(); la.init(); init.stop(); @@ -260,33 +309,64 @@ return result; } - public static SortedSet<String> getSentences(EvaluatedDescription ed, int resultLimit) { + public static SortedSet<String> getSentences(EvaluatedDescription ed, int resultLimit, Examples justforFindingTheBug) { SortedSet<String> result = new TreeSet<String>(); SparqlQueryDescriptionConvertVisitor visit = new SparqlQueryDescriptionConvertVisitor(); visit.setDistinct(true); visit.setLabels(false); visit.setLimit(resultLimit); - String sparqlQuery = ""; + String sparqlQueryGood = ""; + String sparqlQueryBad = ""; try { - sparqlQuery = visit.getSparqlQuery(ed.getDescription()); + sparqlQueryGood = visit.getSparqlQuery(ed.getDescription().toKBSyntaxString()); + sparqlQueryBad = visit.getSparqlQuery(ed.getDescription()); + if(!sparqlQueryGood.equals(sparqlQueryBad)){ + String file = "errorDescription/"+System.currentTimeMillis(); + justforFindingTheBug.writeExamples(file); + Files.appendFile(new File(file), "\n\n/**\nGood:\n"+sparqlQueryGood+"\nBad:\n"+sparqlQueryBad+"**/"); + } + } catch (Exception e1) { e1.printStackTrace(); } - logger.debug(PrefixMap.toKBSyntaxString(ed.getDescription())); - sparqlQuery = " \n define input:inference \"" + rulegraph + "\" \n" + "" + sparqlQuery; - logger.debug(sparqlQuery); + logger.debug("USING CONCEPT: "+PrefixMap.toKBSyntaxString(ed.getDescription())); + sparqlQueryGood = " \n define input:inference \"" + rulegraph + "\" \n" + "" + sparqlQueryGood; + logger.debug(sparqlQueryGood); Monitor m = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "sparqlquery").start(); - result.addAll(sparqlTasks.queryAsSet(sparqlQuery, "subject")); + result.addAll(sparqlTasks.queryAsSet(sparqlQueryGood, "subject")); + m.stop(); logger.debug("query avg: " + ((double)m.getAvg() / (double)1000)+ " seconds (last: "+((double)m.getLastValue() / (double)1000)+")"); if(result.isEmpty()){ logger.error("sparql query returned no results "); - logger.error(sparqlQuery); + logger.error(sparqlQueryGood); System.exit(0); } return result; } + + private static void _getLabels(SortedSet<String> sentenceURIs, int limit){ + int i = 0; + for (String sentenceURI : sentenceURIs) { + if(i>=limit){ + break; + } + i++; + _getLabel(sentenceURI); + } + } + + private static void _getLabel(String sentenceURI){ + String query = "SELECT * FROM <"+graph+"> " + + "{ <"+sentenceURI+"> rdfs:label ?label . }"; + SortedSet<String> s = sparqlTasks.queryAsSet(query, "label"); + if(s.isEmpty()){ + logger.warn("no label for "+sentenceURI); + }else{ + logger.debug(sentenceURI.replace(prefix, "")+" "+s.first()); + } + } private static LearningAlgorithm _getROLLearner(LearningProblem lp, ReasonerComponent rc, ExperimentConfig config, Examples ex) throws Exception { @@ -295,7 +375,8 @@ int valueFrequencyThreshold = config.valueFrequencyThreshold; if(config.adaptive){ maxExecutionTime = 2 * ex.sizeOfTrainingSets(); - valueFrequencyThreshold = (int) Math.floor(0.8d*((double)ex.getPosTrain().size())); + valueFrequencyThreshold = ex.getPosTrain().size(); +// valueFrequencyThreshold = (int) Math.floor(0.8d*((double)ex.getPosTrain().size())); } @@ -324,9 +405,9 @@ la.getConfigurator().setStartClass(prefix + "Sentence"); } - la.getConfigurator().setWriteSearchTree(false); - la.getConfigurator().setSearchTreeFile("log/searchTree.txt"); - la.getConfigurator().setReplaceSearchTree(false); + la.getConfigurator().setWriteSearchTree(config.searchTree); + la.getConfigurator().setSearchTreeFile("log/searchTreeTiger.txt"); + la.getConfigurator().setReplaceSearchTree(true); return la; } Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/Examples.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/Examples.java 2010-02-13 17:45:31 UTC (rev 2033) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/Examples.java 2010-02-13 19:33:50 UTC (rev 2034) @@ -26,6 +26,7 @@ import java.util.TreeSet; import org.apache.log4j.Logger; +import org.dllearner.utilities.URLencodeUTF8; /** * a container for examples @@ -154,12 +155,19 @@ public void writeExamples(String filename) { try { FileWriter a = new FileWriter(filename, false); + + StringBuffer buffer = new StringBuffer(); + buffer.append("\n\n\n\n\n"); for (String s : posTrain) { - a.write("+\"" + s + "\"\n"); + a.write("import(\""+URLencodeUTF8.encode(s)+"\");\n"); + buffer.append("+\"" + s + "\"\n"); } for (String s : negTrain) { - a.write("-\"" + s + "\"\n"); + a.write("import(\""+URLencodeUTF8.encode(s)+"\");\n"); + buffer.append("-\"" + s + "\"\n"); } + + a.write(buffer.toString()); a.flush(); a.close(); logger.info("wrote examples to " + filename); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-16 01:08:48
|
Revision: 2042 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2042&view=rev Author: kurzum Date: 2010-02-16 00:17:05 +0000 (Tue, 16 Feb 2010) Log Message: ----------- almost finished DescriptionSubsumptionTree, still a NullPointer somewhere... Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java trunk/src/dl-learner/org/dllearner/utilities/experiments/ExperimentCollector.java trunk/src/dl-learner/org/dllearner/utilities/experiments/ExperimentConfig.java trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/datastructures/DescriptionSubsumptionTree.java Modified: trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-15 18:40:49 UTC (rev 2041) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-16 00:17:05 UTC (rev 2042) @@ -47,8 +47,8 @@ import org.dllearner.utilities.experiments.ExperimentCollector; import org.dllearner.utilities.experiments.IteratedConfig; import org.dllearner.utilities.experiments.Jamon; +import org.dllearner.utilities.experiments.Table; -import com.jamonapi.MonKey; import com.jamonapi.MonKeyImp; import com.jamonapi.Monitor; @@ -114,7 +114,7 @@ } folds = 2; - iterations = 1; + iterations = 2; long n = System.currentTimeMillis(); passiveNoZU(); // passiveWithZu(); @@ -144,25 +144,27 @@ // ExMakerCrossFolds.printFolds(folds); List<IteratedConfig> configs = getConfigs(); for (IteratedConfig experimentConfig : configs) { - logger.warn("next: passiveNoZU."+experimentConfig.label); + experimentConfig.init(mks); + logger.warn("next: passiveNoZU."+experimentConfig.experimentName); int i = 1; for (Examples examples : folds) { - - for(MonKeyImp m : mks){ - experimentConfig.init(m); - } - logger.warn("beginning fold: "+(i++)); conductExperiment( examples, experimentConfig); + } + Table t = new Table(); + t.addTableRowColumn(experimentConfig.getTableRows()); + t.sortByLabel(); + JamonMonitorLogger.writeHTMLReport("/tmp/tiger.html"); + System.out.println(t.getGnuPlotAsColumn()); if (true) { System.exit(0); } - eColl_passiveNoZU.addExperimentConfig(experimentConfig); +// eColl_passiveNoZU.addExperimentConfig(experimentConfig); logger.info(experimentConfig); - eColl_passiveNoZU.write(iterations); +// eColl_passiveNoZU.write(iterations); } @@ -192,7 +194,7 @@ List<IteratedConfig> configs = getConfigs(); for (IteratedConfig experimentConfig : configs) { - logger.warn("next: passiveWithZu."+experimentConfig.label); + logger.warn("next: passiveWithZu."+experimentConfig.experimentName); int i=1; for (Examples examples : runs) { logger.warn("beginning run: "+(i++)); @@ -259,6 +261,17 @@ for(int i = 0 ; config.stopCondition(i, precision, recall, fmeasure, lastConcept) ;i++ ) { Monitor iterationTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "iterationTime").start(); Monitor literationTime = config.start(logIterationTime, i); +// try { +// Thread.sleep(2000); +// } catch (InterruptedException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// literationTime.stop(); +// System.out.println(literationTime); +// if (true) { +// System.exit(0); +// } /*LEARNING*/ Monitor lLearningTime = config.start(logLearningTime, i); Added: trunk/src/dl-learner/org/dllearner/utilities/datastructures/DescriptionSubsumptionTree.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/DescriptionSubsumptionTree.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/DescriptionSubsumptionTree.java 2010-02-16 00:17:05 UTC (rev 2042) @@ -0,0 +1,127 @@ +package org.dllearner.utilities.datastructures; + +import java.util.Collection; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.core.EvaluatedDescription; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.owl.Description; +import org.dllearner.learningproblems.EvaluatedDescriptionPosNeg; + +public class DescriptionSubsumptionTree { + public class Node { + public Node parent; + public double accuracy; + + //by length? + public SortedSet<EvaluatedDescription> equivalents = new TreeSet<EvaluatedDescription>(); + + //by accuracy + public SortedSet<Node> subClasses = new TreeSet<Node>(); + + public Node(EvaluatedDescription ed){ + if(ed!=null) {equivalents.add(ed);}; + accuracy = ed.getAccuracy(); + } + + //happens only if n is sure to be a subclass + public void insert(Node n){ + if(subClasses.isEmpty()){ + subClasses.add(n); + }else{ + SortedSet<Node> toBeRemoved = new TreeSet<Node>(); + for (Node sub : subClasses) { + if(rc.isSuperClassOf(getDesc(), sub.getDesc())){ + //subClass of subclass + sub.insert(n); + n.parent = sub; + }else if(rc.isEquivalentClass(getDesc(), sub.getDesc())){ + //EquivalentClass of subclass + sub.equivalents.add(n.getEvalDesc()); + }else{ + //superclass of subclass + n.parent = this; + n.subClasses.add(sub); + toBeRemoved.add(sub); + } + } + //needs to be done outside, concurrent exception + for (Node node : toBeRemoved) { + subClasses.remove(node); + } + } + } + + + public boolean isRoot(){ + return (parent == null); + } + + public EvaluatedDescription getEvalDesc(){ + return equivalents.first(); + } + public Description getDesc(){ + return equivalents.first().getDescription(); + } + @Override + public String toString(){ + return getEvalDesc().toString(); + } + + public String _toString(String tab){ + String ret = (isRoot())?"Thing\n":""; + + if(subClasses.isEmpty()){ + ret+= this+"\n"; + } + tab+=" "; + for (Node sub : subClasses) { + ret += sub.toString()+"\n"; + } + return ret; + } + + + } + private Node root; + + private final ReasonerComponent rc; + + public DescriptionSubsumptionTree(ReasonerComponent rc){ + this.rc = rc; + this.root = new Node(null); + this.root.parent = null; + } + + public static void main(String[] args) { + + } + + public void insert(Collection<EvaluatedDescription> evaluatedDescriptions){ + for (EvaluatedDescription evaluatedDescription : evaluatedDescriptions) { + System.out.println("Adding: "+evaluatedDescription.toString()); + Node n = new Node(evaluatedDescription); + this.root.insert(n); + } + } + public void insertEdPosNeg(Collection<EvaluatedDescriptionPosNeg> evaluatedDescriptions, int limit){ + int i=0; + for (EvaluatedDescription evaluatedDescription : evaluatedDescriptions) { + + System.out.println("Adding: "+evaluatedDescription.toString()); + Node n = new Node(evaluatedDescription); + this.root.insert(n); + if(i>limit){break;} + i++; + } + } + + @Override + public String toString(){ + return root._toString(""); + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/ExperimentCollector.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/ExperimentCollector.java 2010-02-15 18:40:49 UTC (rev 2041) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/ExperimentCollector.java 2010-02-16 00:17:05 UTC (rev 2042) @@ -20,6 +20,8 @@ public static DecimalFormat dfhuman = new DecimalFormat("##.##%"); public static DecimalFormat dfRuntime = new DecimalFormat("####."); List<IteratedConfig> experimentConfigs = new ArrayList<IteratedConfig>(); + + public ExperimentCollector(String filePrefix) { details = dir + filePrefix + "_" + "details"; @@ -42,7 +44,7 @@ String headerGNU = "\t"; String headerLatex = "\t&\t"; for (IteratedConfig ec : experimentConfigs) { - headerGNU += ec.label + "\t"; + headerGNU += ec.experimentName + "\t"; Files.appendFile(new File(details), ec.toString()); } for (int i = 0; i < iterations; i++) { @@ -67,7 +69,7 @@ } for (IteratedConfig ec : experimentConfigs) { - String label = ec.label ; + String label = ec.experimentName ; String learningTimeLatex = label+" learn"+ "\t&\t"; String totalTimeLatex = label+" total"+ "\t&\t"; String fmeasureLatex = label+ "\t&\t"; @@ -83,7 +85,7 @@ } for (IteratedConfig ec : experimentConfigs) { - String label = ec.label; + String label = ec.experimentName; String learningTimeHuman = label+" learn" + "\t&\t"; String totalTimeHuman = label+" total" + "\t&\t"; String fmeasureHuman = label + "\t&\t"; Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/ExperimentConfig.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/ExperimentConfig.java 2010-02-15 18:40:49 UTC (rev 2041) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/ExperimentConfig.java 2010-02-16 00:17:05 UTC (rev 2042) @@ -15,8 +15,8 @@ public class ExperimentConfig { private static final Logger logger = Logger.getLogger(ExperimentConfig.class); - public final String label; - public final int iterations; + public final String experimentName; + public final int sizeOfResultVector; protected List<MonitorComposite> mcs = new ArrayList<MonitorComposite>(); protected Map<String,MonitorComposite> mcsMap = new HashMap<String, MonitorComposite>(); @@ -25,47 +25,89 @@ public ExperimentConfig(String label){ this(label,1); } - public ExperimentConfig(String label, int iterations){ - this.label = label; - this.iterations = iterations; + public ExperimentConfig(String experimentName, int sizeOfResultVector){ + this.experimentName = experimentName; + this.sizeOfResultVector = sizeOfResultVector; } @Override public String toString(){ - return this.label+" with "+iterations+" iterations"; + return this.experimentName+" with "+sizeOfResultVector+" iterations"; } public List<TableRowColumn> getTableRows(){ List<TableRowColumn> l = new ArrayList<TableRowColumn>(); + if(sizeOfResultVector == 1) { + Monitor[] monitors = new Monitor[mcs.size()]; +// TableRowColumn trc = + for (int i = 0; i < monitors.length; i++) { + monitors[i] = mcs.get(i).getMonitors()[0]; + } + l.add(new TableRowColumn(monitors, experimentName, "")); + + }else{ + for(MonitorComposite mc :mcs){ + l.add(new TableRowColumn(mc.getMonitors(), experimentName, getRev(mc))); + } + } + return l; } - public void init(MonKeyImp monkey){ - Monitor[] marr = new Monitor[iterations]; - for (int i = 0; i < iterations; i++) { - marr[i] = MonitorFactory.getMonitor(mon(monkey, i)); + private MonitorComposite get(MonKeyImp m){ + return mcsMap.get(mon(m).getLabel()); + } + private String getRev(MonitorComposite mc){ + return mcsMapRev.get(mc); + } + + private void put(MonKeyImp m ,MonitorComposite mc ){ + mcsMap.put(mon(m).getLabel(), mc); + } + private void putRev(MonitorComposite mc , MonKeyImp m ){ + mcsMapRev.put( mc, m.getLabel()); + } + + public void init(List<MonKeyImp> monkeys){ + for (MonKeyImp monKeyImp : monkeys) { + init(monKeyImp); } +// JamonMonitorLogger.writeHTMLReport("/tmp/tiger.html"); + } + + public void init(MonKeyImp oldMonkey){ + Monitor[] marr = new Monitor[sizeOfResultVector]; + for (int i = 0; i < sizeOfResultVector; i++) { + MonKeyImp newMonKey = mon(oldMonkey, i); + if(newMonKey.getUnits().equals(Jamon.MS)){ + marr[i] = MonitorFactory.getTimeMonitor(newMonKey); + }else{ + marr[i] = MonitorFactory.getMonitor(newMonKey); + } + } MonitorComposite m = new MonitorComposite(marr); mcs.add(m); - mcsMap.put( monkey.getLabel(),m); - mcsMapRev.put(m, monkey.getLabel()); + put( oldMonkey,m); + putRev(m, oldMonkey); + } protected MonKeyImp mon(MonKeyImp monkey){ - return (monkey.getLabel().startsWith(label))?monkey:new MonKeyImp(label+monkey.getLabel(), monkey.getUnits()); + MonKeyImp m = (monkey.getLabel().startsWith(experimentName))?monkey:new MonKeyImp(experimentName+"_"+monkey.getLabel(), monkey.getUnits()); + return m; } - protected MonKeyImp mon(MonKeyImp monkey, int index){ + protected MonKeyImp mon(MonKeyImp oldMonkey, int index){ //narrensicher - MonKeyImp l = mon(monkey); - return (iterations==1)?monkey:new MonKeyImp(l.getLabel()+"_"+index, l.getUnits()) ; + MonKeyImp newMonkey = mon(oldMonkey); + return new MonKeyImp(newMonkey.getLabel()+"_"+index, newMonkey.getUnits()) ; } public void add(MonKeyImp monkey, int index, double value){ try{ - mcsMap.get(monkey.getLabel()).getMonitors()[index].add(value); + get(monkey).getMonitors()[index].add(value); }catch (Exception e) { e.printStackTrace(); logger.error("index too big, max = "+index); @@ -73,7 +115,7 @@ } public Monitor start(MonKeyImp monkey, int index){ - return mcsMap.get(monkey.getLabel()).getMonitors()[index].start(); + return get(monkey).getMonitors()[index].start(); } // public static boolean higher(Monitor[] a, double current){ Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java 2010-02-15 18:40:49 UTC (rev 2041) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java 2010-02-16 00:17:05 UTC (rev 2042) @@ -43,7 +43,7 @@ // if(higher(iterationRecall, recall)){highestRecall=concept;} // if(higher(iterationFmeasure, fmeasure)){highestFMeasure=concept;} - boolean condIter = (iteration<this.iterations); + boolean condIter = (iteration<this.sizeOfResultVector); boolean condPrec = fmeasure <=1.0d; if(!condIter){ logger.info("iterations reached, stopping"); Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java 2010-02-15 18:40:49 UTC (rev 2041) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java 2010-02-16 00:17:05 UTC (rev 2042) @@ -3,6 +3,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import java.util.SortedSet; +import java.util.TreeSet; import org.apache.log4j.Logger; import org.dllearner.utilities.JamonMonitorLogger; @@ -19,6 +21,11 @@ LATEX, GNUPLOT }; + +// private Map<String, TableRowColumn> m = new HashMap<String, TableRowColumn>(); + private SortedSet<String> experimentNames = new TreeSet<String>(); + private SortedSet<String> labels = new TreeSet<String>(); + private List<TableRowColumn> tableRowColumns = new ArrayList<TableRowColumn>(); private int length; @@ -43,8 +50,8 @@ } // System.out.println("avg: " + m[a].getAvg()); } - TableRowColumn trc = new TableRowColumn(m, "entry_" + i); - trc.deleteAll(); + TableRowColumn trc = new TableRowColumn(m, "Test","entry_" + i); +// trc.deleteAll(); trc.useStdDev=false; t.addTableRowColumn(trc); } @@ -58,11 +65,19 @@ JamonMonitorLogger.writeHTMLReport("log/tiger.html"); } + public void addTableRowColumn(List<TableRowColumn> trcs) { + for (TableRowColumn tableRowColumn : trcs) { + labels.add(tableRowColumn.getLabel()); + experimentNames.add(tableRowColumn.getExperimentName()); + addTableRowColumn(tableRowColumn); + } + } + public void addTableRowColumn(TableRowColumn trc) { try{ trc.toLatexRow(); }catch (NullPointerException e) { - logger.error("TableRowColumn was not initialized, ignoring it, label: "+trc.label); + logger.error("TableRowColumn was not initialized, ignoring it: "+trc); e.printStackTrace(); } @@ -73,7 +88,7 @@ if (trc.size() != length) { logger.error("Added TableRowColumn does not match previous set length (" + length + ") but has size " - + trc.size() + "), \nignoring it, label: "+trc.label+", value: " + trc.toLatexRow()); + + trc.size() + "), \nignoring it: "+trc); } @@ -116,13 +131,13 @@ boolean first = (i==1); switch (f) { case LATEX: - rows[0] += (first?trc.label+TableRowColumn.latexSep:""); + rows[0] += (first?trc.getHeader()+TableRowColumn.latexSep:""); rows[i] += (firstColumn&&addNumbersInFront?i+TableRowColumn.latexSep:""); rows[i] += trc.getLatexEntry(i-1) + ((last) ? TableRowColumn.latexSep : TableRowColumn.latexSep); break; case GNUPLOT: - rows[0] += (first?"#"+trc.label+"\t":""); + rows[0] += (first?"#"+trc.getHeader()+"\t":""); rows[i] += (firstColumn&&addNumbersInFront?i+"\t":""); rows[i] += trc.getGnuPlotEntry(i-1) + ((last) ?"" : "\t"); break; @@ -152,5 +167,45 @@ } return (replaceCommaByPoints)?ret.replace(",","."):ret; } + + public void sortByExperimentName(){ + _sortByLabel(); + _sortByExperimentName(); + + } + public void sortByLabel(){ + _sortByExperimentName(); + _sortByLabel(); + } + + private void _sortByLabel(){ + List<String> l = new ArrayList<String>(labels); + List<TableRowColumn> newTrc = new ArrayList<TableRowColumn>(); + + for (String s : l) { + for (TableRowColumn trc : tableRowColumns) { + if(trc.getLabel().equals(s)){ + newTrc.add(trc); + } + } + } + tableRowColumns = newTrc; + } + private void _sortByExperimentName(){ + List<String> l = new ArrayList<String>(experimentNames); + List<TableRowColumn> newTrc = new ArrayList<TableRowColumn>(); + + for (String s : l) { + for (TableRowColumn trc : tableRowColumns) { + if(trc.getExperimentName().equals(s)){ + newTrc.add(trc); + } + } + } + tableRowColumns = newTrc; + } + + + } Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-15 18:40:49 UTC (rev 2041) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-16 00:17:05 UTC (rev 2042) @@ -5,7 +5,6 @@ import org.dllearner.utilities.JamonMonitorLogger; import com.jamonapi.Monitor; -import com.jamonapi.MonitorFactory; public class TableRowColumn { @@ -16,12 +15,13 @@ public static String latexSep = "\t&\t"; public static String latexEnd = "\\\\"; - String label = ""; + private final String label ; + private final String experimentName; Monitor[] monitors; boolean useStdDev = false; - DecimalFormat dfGnuPlotDefault = new DecimalFormat("#######.######"); + DecimalFormat dfGnuPlotDefault = new DecimalFormat("######0.00####"); // DecimalFormat dfStdDevLatex = new DecimalFormat("##.##%"); DecimalFormat dfLatexDefault = new DecimalFormat("####.####"); @@ -30,9 +30,10 @@ // public TableRowColumn(Monitor[] monitors){ // this.monitors = monitors; // } - public TableRowColumn(Monitor[] monitors, String label) { + public TableRowColumn(Monitor[] monitors, String experimentName, String label) { this.monitors = monitors; this.label = label; + this.experimentName = experimentName; } @@ -44,10 +45,19 @@ public void deleteAll(){ for (int i = 0; i < monitors.length; i++) { - MonitorFactory.remove(monitors[i].getMonKey()); +// MonitorFactory.remove(monitors[i].getMonKey()); } } + @Override + public String toString(){ + return experimentName+" "+label+" "+toGnuPlotRow(); + } + + public String getHeader(){ + return experimentName+" "+label; + } + public int size() { return monitors.length; } @@ -59,13 +69,17 @@ public String getLabel() { return label; } + + public String getExperimentName() { + return experimentName; + } public String toGnuPlotRow() { return toRow(Formats.GNUPLOT); } private String toRow(Formats f) { - String ret = label; + String ret = experimentName+ " "+ label; for (int i = 0; i < monitors.length; i++) { boolean last = (i + 1 == monitors.length); switch (f) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-16 14:06:01
|
Revision: 2046 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2046&view=rev Author: kurzum Date: 2010-02-16 14:05:54 +0000 (Tue, 16 Feb 2010) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java Modified: trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-16 13:23:18 UTC (rev 2045) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-16 14:05:54 UTC (rev 2046) @@ -58,10 +58,12 @@ static DecimalFormat df = new DecimalFormat("00.###%"); public static DecimalFormat dftime = new DecimalFormat("#####.#"); -// static String backgroundXML = "files/tiger.noSchema.noImports.rdf"; + // static String backgroundXML = "files/tiger.noSchema.noImports.rdf"; static String backgroundXML = "files/tiger_trimmed_toPOS.rdf"; static String propertiesXML = "files/propertiesOnly.rdf"; static String sentenceXMLFolder = "files/tiger/"; + static String resultFolder = "tigerResults/"; + static String sentenceprefix = "http://nlp2rdf.org/ontology/s"; static String prefix = "http://nlp2rdf.org/ontology/"; @@ -77,24 +79,24 @@ static String sparqlEndpointURL = "http://db0.aksw.org:8893/sparql"; static String graph = "http://nlp2rdf.org/tiger"; static String rulegraph = "http://nlp2rdf.org/schema/rules1"; - - - static MonKeyImp logFMeasure = new MonKeyImp("F-Measure",Jamon.PERCENTAGE); - static MonKeyImp logPrecision = new MonKeyImp("Precision",Jamon.PERCENTAGE); - static MonKeyImp logRecall = new MonKeyImp("Recall",Jamon.PERCENTAGE); - static MonKeyImp logAccuracy = new MonKeyImp("Accuracy",Jamon.PERCENTAGE); - - static MonKeyImp logLearningTime = new MonKeyImp("Learning Time",Jamon.MS); - static MonKeyImp logIterationTime = new MonKeyImp("Iteration Time",Jamon.MS); - - - static List<MonKeyImp> mks = new ArrayList<MonKeyImp>(Arrays.asList(new MonKeyImp[]{logPrecision, logRecall, logFMeasure, logLearningTime, logIterationTime})); - + + static MonKeyImp logFMeasure = new MonKeyImp("F-Measure", Jamon.PERCENTAGE); + static MonKeyImp logPrecision = new MonKeyImp("Precision", Jamon.PERCENTAGE); + static MonKeyImp logRecall = new MonKeyImp("Recall", Jamon.PERCENTAGE); + static MonKeyImp logAccuracy = new MonKeyImp("Accuracy", Jamon.PERCENTAGE); + + static MonKeyImp logLearningTime = new MonKeyImp("Learning Time", Jamon.MS); + static MonKeyImp logIterationTime = new MonKeyImp("Iteration Time", Jamon.MS); + + static List<MonKeyImp> mks = new ArrayList<MonKeyImp>(Arrays.asList(new MonKeyImp[] { logPrecision, + logRecall, logFMeasure, logLearningTime, logIterationTime })); + static int iterations = 4; - static int folds = 6; + static int folds = 10; static int printSentences = 3; - //no randomization in examples + // no randomization in examples + public static void main(String[] args) { LogHelper.initLoggers(); Logger.getLogger(Cache.class).setLevel(Level.INFO); @@ -102,9 +104,9 @@ Logger.getLogger(ROLearner2.class).setLevel(Level.INFO); Logger.getLogger(RhoDRDown.class).setLevel(Level.INFO); Logger.getLogger(SparqlQuery.class).setLevel(Level.INFO); - - Files.mkdir("results"); - + + Files.mkdir(resultFolder); + try { sparqlEndpoint = new SparqlEndpoint(new URL(sparqlEndpointURL), new ArrayList<String>(Arrays .asList(new String[] { graph })), new ArrayList<String>()); @@ -113,289 +115,291 @@ e.printStackTrace(); } - folds = 2; - iterations = 2; + // folds = 2; + // iterations = 2; long n = System.currentTimeMillis(); passiveNoZU(); -// passiveWithZu(); + // passiveWithZu(); - logger.warn("finished, needed: "+(System.currentTimeMillis()-n)); + logger.info("finished, needed: " + (System.currentTimeMillis() - n)); JamonMonitorLogger.writeHTMLReport("log/tiger.html"); } - - public static void passiveNoZU(){ - ExperimentCollector eColl_passiveNoZU = new ExperimentCollector("passiveNoZU"); - - SortedSet<String> positives = read(passiveNoZU); - SortedSet<String> negatives = read(active); - - //removing overlap - positives.removeAll(negatives); - negatives.removeAll(positives); - - Examples allExamples = new Examples(); - allExamples.addPosTrain(positives); - allExamples.addNegTrain(negatives); - - logger.debug("All examples \n"+allExamples); - - List<Examples> folds = new ExMakerCrossFolds(allExamples).splitLeaveOneOut(TestIterativeLearning.folds); -// ExMakerCrossFolds.printFolds(folds); - List<IteratedConfig> configs = getConfigs(); - for (IteratedConfig experimentConfig : configs) { - experimentConfig.init(mks); - logger.warn("next: passiveNoZU."+experimentConfig.experimentName); - int i = 1; - for (Examples examples : folds) { - logger.warn("beginning fold: "+(i++)); - - conductExperiment( examples, experimentConfig); - - } - Table t = new Table(); - t.addTableRowColumn(experimentConfig.getTableRows()); - t.sortByLabel(); - JamonMonitorLogger.writeHTMLReport("/tmp/tiger.html"); - System.out.println(t.getGnuPlotAsColumn()); - if (true) { - System.exit(0); - } - -// eColl_passiveNoZU.addExperimentConfig(experimentConfig); - logger.info(experimentConfig); -// eColl_passiveNoZU.write(iterations); + + public static void passiveNoZU() { + + SortedSet<String> positives = read(passiveNoZU); + SortedSet<String> negatives = read(active); + + // removing overlap + positives.removeAll(negatives); + negatives.removeAll(positives); + + Examples allExamples = new Examples(); + allExamples.addPosTrain(positives); + allExamples.addNegTrain(negatives); + + logger.debug("All examples \n" + allExamples); + + List<Examples> folds = new ExMakerCrossFolds(allExamples) + .splitLeaveOneOut(TestIterativeLearning.folds); + // ExMakerCrossFolds.printFolds(folds); + List<IteratedConfig> configs = getConfigs(); + Table masterTable = new Table(); + for (IteratedConfig experimentConfig : configs) { + experimentConfig.init(mks); + logger.info("next: passiveNoZU." + experimentConfig.experimentName); + int i = 1; + for (Examples examples : folds) { + logger.info("beginning fold: " + (i++)); + conductExperiment(examples, experimentConfig); } - - + Table expTable = new Table(); + expTable.addTableRowColumn(experimentConfig.getTableRows()); + expTable.write(resultFolder, experimentConfig.experimentName); + masterTable.addTable(expTable); + masterTable.sortByExperimentName(); + masterTable.write(resultFolder, "master_by_expname"); + masterTable.sortByLabel(); + masterTable.write(resultFolder, "master_by_label"); + + JamonMonitorLogger.writeHTMLReport("/tmp/tiger.html"); + logger.info(experimentConfig); + + } + } - - public static void passiveWithZu(){ + + public static void passiveWithZu() { ExperimentCollector eColl_passiveWithZu = new ExperimentCollector("passiveWithZu"); - SortedSet<String> positives = read(passiveWithZu); - SortedSet<String> negatives = read(active); - - //removing overlap - positives.removeAll(negatives); - negatives.removeAll(positives); - - Examples allExamples = new Examples(); - allExamples.addPosTrain(positives); - allExamples.addNegTrain(negatives); - - logger.debug("All examples \n"+allExamples); - - List<Examples> runs = new ArrayList<Examples>(); - runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); - runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); - runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); - runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); - runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + SortedSet<String> positives = read(passiveWithZu); + SortedSet<String> negatives = read(active); - List<IteratedConfig> configs = getConfigs(); - for (IteratedConfig experimentConfig : configs) { - logger.warn("next: passiveWithZu."+experimentConfig.experimentName); - int i=1; - for (Examples examples : runs) { - logger.warn("beginning run: "+(i++)); - conductExperiment( examples, experimentConfig); - - } - eColl_passiveWithZu.addExperimentConfig(experimentConfig); - - logger.info(experimentConfig); + // removing overlap + positives.removeAll(negatives); + negatives.removeAll(positives); + + Examples allExamples = new Examples(); + allExamples.addPosTrain(positives); + allExamples.addNegTrain(negatives); + + logger.debug("All examples \n" + allExamples); + + List<Examples> runs = new ArrayList<Examples>(); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + + List<IteratedConfig> configs = getConfigs(); + for (IteratedConfig experimentConfig : configs) { + logger.info("next: passiveWithZu." + experimentConfig.experimentName); + int i = 1; + for (Examples examples : runs) { + logger.info("beginning run: " + (i++)); + conductExperiment(examples, experimentConfig); + } - eColl_passiveWithZu.write(iterations); - + eColl_passiveWithZu.addExperimentConfig(experimentConfig); + + logger.info(experimentConfig); + } + eColl_passiveWithZu.write(iterations); + } - - public static List<IteratedConfig> getConfigs(){ - + + public static List<IteratedConfig> getConfigs() { + List<IteratedConfig> l = new ArrayList<IteratedConfig>(); IteratedConfig baseline = new IteratedConfig("baseline_5_5", iterations); - - + IteratedConfig reducedExamples = new IteratedConfig("reducedExamples_2_2", iterations); reducedExamples.initialsplits = 2; reducedExamples.splits = 2; - - + // reducedExamples.adaptMaxRuntime=false; + // reducedExamples.maxExecutionTime = 20; + reducedExamples.factor = 3.0d; + IteratedConfig fixRuntime = new IteratedConfig("fixRuntime_20s", iterations); - fixRuntime.adaptMaxRuntime=false; + fixRuntime.adaptMaxRuntime = false; fixRuntime.maxExecutionTime = 20; - - + IteratedConfig useLemma = new IteratedConfig("useLemma_false", iterations); - useLemma.useDataHasValue=false; - - + useLemma.useDataHasValue = false; + l.add(baseline); -// l.add(reducedExamples); -// l.add(fixRuntime); -// l.add(useLemma); - + l.add(reducedExamples); + l.add(fixRuntime); + l.add(useLemma); return l; } - - public static void conductExperiment(Examples allExamples, IteratedConfig config){ + + public static void conductExperiment(Examples allExamples, IteratedConfig config) { Examples tmp = new Examples(); tmp.addPosTrain(allExamples.getPosTrain()); tmp.addNegTrain(allExamples.getNegTrain()); - + ExMakerFixedSize fs = new ExMakerFixedSize(tmp); Examples learn = fs.select(config.initialsplits, config.initialsplits); - logger.debug("Total set \n"+allExamples); - logger.debug("Initial training set \n"+learn); - + logger.debug("Total set \n" + allExamples); + logger.debug("Initial training set \n" + learn); + SortedSet<String> posAsPos = new TreeSet<String>(); SortedSet<String> retrieved = new TreeSet<String>(); SortedSet<String> newTestRetrieved = new TreeSet<String>(); SortedSet<String> newTrainRetrieved = new TreeSet<String>(); - - String lastConcept=""; + + String lastConcept = ""; double precision = 0.0; double recall = 0.0; double fmeasure = 0.0; - - for(int i = 0 ; config.stopCondition(i, precision, recall, fmeasure, lastConcept) ;i++ ) { - Monitor iterationTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "iterationTime").start(); + + for (int i = 0; config.stopCondition(i, precision, recall, fmeasure, lastConcept); i++) { + Monitor iterationTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, + "iterationTime").start(); Monitor literationTime = config.start(logIterationTime, i); -// try { -// Thread.sleep(2000); -// } catch (InterruptedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// literationTime.stop(); -// System.out.println(literationTime); -// if (true) { -// System.exit(0); -// } + // try { + // Thread.sleep(2000); + // } catch (InterruptedException e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } + // literationTime.stop(); + // System.out.println(literationTime); + // if (true) { + // System.exit(0); + // } - /*LEARNING*/ + /* LEARNING */ Monitor lLearningTime = config.start(logLearningTime, i); EvaluatedDescription ed = learn(learn, config, i); lLearningTime.stop(); lastConcept = PrefixMap.toKBSyntaxString(ed.getDescription()); - logger.debug("USING CONCEPT: "+lastConcept); - - /*RETRIEVING*/ - Monitor queryTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "queryTime").start(); + logger.debug("USING CONCEPT: " + lastConcept); + + /* RETRIEVING */ + Monitor queryTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "queryTime") + .start(); retrieved = getSentences(ed, config.resultLimit); queryTime.stop(); - //remove all that are not to be tested - newTestRetrieved = Helper.intersection(allExamples.getTestExamples(), retrieved ); - newTrainRetrieved = Helper.intersection(allExamples.getTrainExamples(), retrieved ); - -// logger.debug("Retrieved "+retrieved.size()+" sentences"); - - - /*MASHING*/ - //Menge aller positiven geschn. mit den gefundenen + // remove all that are not to be tested + newTestRetrieved = Helper.intersection(allExamples.getTestExamples(), retrieved); + newTrainRetrieved = Helper.intersection(allExamples.getTrainExamples(), retrieved); + + // logger.debug("Retrieved "+retrieved.size()+" sentences"); + + /* MASHING */ + // Menge aller positiven geschn. mit den gefundenen posAsPos = Helper.intersection(newTestRetrieved, allExamples.getPosTest()); - logger.debug("Number of retrieved positives: "+posAsPos.size()); - logger.debug("Number of total positives: "+allExamples.getPosTest().size()); - - precision = precision( posAsPos.size(), retrieved.size()); - config.add(logPrecision, i, precision); - recall = recall( posAsPos.size(),allExamples.getPosTest().size()); - config.add(logRecall, i, recall); - fmeasure = fmeasure(precision, recall); - config.add(logFMeasure, i, fmeasure); - - //Menge aller positiven geschn. mit den gefundenen + logger.debug("Number of retrieved positives: " + posAsPos.size()); + logger.debug("Number of total positives: " + allExamples.getPosTest().size()); + + precision = precision(posAsPos.size(), retrieved.size()); + config.add(logPrecision, i, precision); + recall = recall(posAsPos.size(), allExamples.getPosTest().size()); + config.add(logRecall, i, recall); + fmeasure = fmeasure(precision, recall); + config.add(logFMeasure, i, fmeasure); + + // Menge aller positiven geschn. mit den gefundenen SortedSet<String> negAsPos = Helper.intersection(newTestRetrieved, allExamples.getNegTest()); - logger.debug("Number of retrieved negatives: "+negAsPos.size()); - logger.debug("Number of total negatives: "+allExamples.getNegTest().size()); - logger.debug("Total: "+posAsPos.size()+" + "+negAsPos.size() +" = "+newTestRetrieved.size()); - - + logger.debug("Number of retrieved negatives: " + negAsPos.size()); + logger.debug("Number of total negatives: " + allExamples.getNegTest().size()); + logger.debug("Total: " + posAsPos.size() + " + " + negAsPos.size() + " = " + + newTestRetrieved.size()); + Examples newlyFound = new Examples(); - SortedSet<String> discoveredPosInStore = Helper.intersection(newTrainRetrieved, allExamples.getPosTrain()); - SortedSet<String> misclassifiedNegInStore = Helper.intersection(newTrainRetrieved, allExamples.getNegTrain()); + SortedSet<String> discoveredPosInStore = Helper.intersection(newTrainRetrieved, allExamples + .getPosTrain()); + SortedSet<String> misclassifiedNegInStore = Helper.intersection(newTrainRetrieved, allExamples + .getNegTrain()); newlyFound.addPosTrain(discoveredPosInStore); newlyFound.addNegTrain(misclassifiedNegInStore); - SortedSet<String> posAsNegInformative = Helper.difference(allExamples.getPositiveExamples(), retrieved); - - logger.info("Discovered: "+discoveredPosInStore.size()+" positive sentences in store (printing "+printSentences+"):"); + SortedSet<String> posAsNegInformative = Helper.difference(allExamples.getPositiveExamples(), + retrieved); + + logger.debug("Discovered: " + discoveredPosInStore.size() + + " positive sentences in store (printing " + printSentences + "):"); _getLabels(discoveredPosInStore, printSentences); - logger.info("Misclassified: "+misclassifiedNegInStore.size()+" negative sentences in store (printing "+printSentences+"):"); + logger.debug("Misclassified: " + misclassifiedNegInStore.size() + + " negative sentences in store (printing " + printSentences + "):"); _getLabels(misclassifiedNegInStore, printSentences); - logger.info("Not found positives: "+posAsNegInformative.size()+" positive sentences in store (printing "+printSentences+"):"); + logger.debug("Not found positives: " + posAsNegInformative.size() + + " positive sentences in store (printing " + printSentences + "):"); _getLabels(posAsNegInformative, printSentences); - - - + fs = new ExMakerFixedSize(newlyFound); newlyFound = fs.select(config.splits, config.splits); - + learn.addPosTrain(newlyFound.getPosTrain()); learn.addNegTrain(newlyFound.getNegTrain()); - logger.debug("Next training set \n"+learn); + logger.debug("Next training set \n" + learn); iterationTime.stop(); literationTime.stop(); - logger.warn("finished iteration "+(i+1)+" needed on avg: "+dftime.format(iterationTime.getAvg())); - logger.warn("learning: "+dftime.format(lLearningTime.getLastValue())+" Acc: "+ed.getAccuracy()); - logger.warn("learning: "+PrefixMap.toManchesterSyntaxString(ed)); - logger.warn("query: "+dftime.format(queryTime.getLastValue())); - logger.warn("F-Measure on Store = "+df.format(fmeasure)); - logger.warn("******************"); - + logger.info("finished iteration " + (i + 1) + " needed on avg: " + + dftime.format(iterationTime.getAvg())); + logger.info("learning: " + dftime.format(lLearningTime.getLastValue()) + " Acc: " + + ed.getAccuracy()); + logger.info("learning: " + PrefixMap.toManchesterSyntaxString(ed)); + logger.info("query: " + dftime.format(queryTime.getLastValue())); + logger.info("F-Measure on Store = " + df.format(fmeasure)); + logger.info("******************"); + } - - - - - + } - - public static double accuracy (int posAsPos, int negAsNeg, int posAsNeg, int negAsPos){ + + public static double accuracy(int posAsPos, int negAsNeg, int posAsNeg, int negAsPos) { return 0.0d; } - - public static double fmeasure(double precision, double recall){ - double fmeasure = (precision+recall == 0)?0.0d: (2*precision*recall)/(precision+recall); - logger.info("F-Measure: "+df.format(fmeasure)); + + public static double fmeasure(double precision, double recall) { + double fmeasure = (precision + recall == 0) ? 0.0d : (2 * precision * recall) / (precision + recall); + logger.debug("F-Measure: " + df.format(fmeasure)); return fmeasure; } - - public static double precision( int posAsPos, int retrieved){ - double precision = (retrieved==0)?0.0d:((double)posAsPos)/((double)retrieved); - logger.info("Precision: "+df.format(precision)); + + public static double precision(int posAsPos, int retrieved) { + double precision = (retrieved == 0) ? 0.0d : ((double) posAsPos) / ((double) retrieved); + logger.debug("Precision: " + df.format(precision)); return precision; } - public static double recall( int posAsPos, int allPositives){ - double recall = ((double)posAsPos)/((double)allPositives); - logger.info("Recall: "+df.format(recall)); + + public static double recall(int posAsPos, int allPositives) { + double recall = ((double) posAsPos) / ((double) allPositives); + logger.debug("Recall: " + df.format(recall)); return recall; - + } - private static Set<KnowledgeSource> _getOWL(Examples ex) throws Exception{ + private static Set<KnowledgeSource> _getOWL(Examples ex) throws Exception { Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); List<URL> urls = new ArrayList<URL>(); urls.add(new File(backgroundXML).toURI().toURL()); urls.addAll(ExampleDataCollector.convert(sentenceXMLFolder, ex.getPosTrain())); urls.addAll(ExampleDataCollector.convert(sentenceXMLFolder, ex.getNegTrain())); - + for (URL u : urls) { OWLFile ks = ComponentFactory.getOWLFile(u); tmp.add(ks); } return tmp; } + @SuppressWarnings("unused") - private static Set<KnowledgeSource> _getSPARQL(Examples ex) throws Exception{ + private static Set<KnowledgeSource> _getSPARQL(Examples ex) throws Exception { Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); Set<String> examples = new TreeSet<String>(); examples.addAll(ex.getPosTrain()); examples.addAll(ex.getNegTrain()); - SparqlKnowledgeSource ks = ComponentFactory.getSparqlKnowledgeSource(new URL(sparqlEndpointURL), examples); + SparqlKnowledgeSource ks = ComponentFactory.getSparqlKnowledgeSource(new URL(sparqlEndpointURL), + examples); ks.getConfigurator().setUrl(new URL(sparqlEndpointURL)); - ks.getConfigurator().setDefaultGraphURIs(new HashSet<String>(Arrays.asList(new String[]{graph}))); + ks.getConfigurator().setDefaultGraphURIs(new HashSet<String>(Arrays.asList(new String[] { graph }))); ks.getConfigurator().setInstances(examples); ks.getConfigurator().setDissolveBlankNodes(false); ks.getConfigurator().setRecursionDepth(2); @@ -404,46 +408,45 @@ ks.getConfigurator().setGetAllSuperClasses(true); ks.getConfigurator().setGetPropertyInformation(false); ks.getConfigurator().setUseLits(true); -// ks.getConfigurator(). + // ks.getConfigurator(). OWLFile ks2 = ComponentFactory.getOWLFile(new File(propertiesXML).toURI().toURL()); tmp.add(ks); tmp.add(ks2); - + return tmp; } - - //test if virtuoso is correct -// public static void validate(Description d, Examples newlyFound){ -// try { -// ExMakerFixedSize fs = new ExMakerFixedSize(newlyFound); -// Examples tmp = fs.select(100, 100); -// FastInstanceChecker fc = _getFastInstanceChecker(tmp); -// @SuppressWarnings("unused") -// SortedSet<Individual> inds = fc.getIndividuals(d); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } - - public static FastInstanceChecker _getFastInstanceChecker(Examples ex)throws Exception{ - Set<KnowledgeSource> tmp = _getOWL(ex); -// Set<KnowledgeSource> tmp = _getSPARQL(ex); - - FastInstanceChecker rc = ComponentFactory.getFastInstanceChecker(tmp); - for (KnowledgeSource ks : tmp) { - ks.init(); - } - rc.init(); - return rc; + // test if virtuoso is correct + // public static void validate(Description d, Examples newlyFound){ + // try { + // ExMakerFixedSize fs = new ExMakerFixedSize(newlyFound); + // Examples tmp = fs.select(100, 100); + // FastInstanceChecker fc = _getFastInstanceChecker(tmp); + // @SuppressWarnings("unused") + // SortedSet<Individual> inds = fc.getIndividuals(d); + // } catch (Exception e) { + // e.printStackTrace(); + // } + // } + + public static FastInstanceChecker _getFastInstanceChecker(Examples ex) throws Exception { + Set<KnowledgeSource> tmp = _getOWL(ex); + // Set<KnowledgeSource> tmp = _getSPARQL(ex); + + FastInstanceChecker rc = ComponentFactory.getFastInstanceChecker(tmp); + for (KnowledgeSource ks : tmp) { + ks.init(); + } + rc.init(); + return rc; } - + public static EvaluatedDescription learn(Examples ex, IteratedConfig config, int iteration) { - Monitor initTimeKBandReasoner = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "initTimeKBandReasoner").start(); - + Monitor initTimeKBandReasoner = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, + "initTimeKBandReasoner").start(); EvaluatedDescription result = null; - + try { FastInstanceChecker rc = _getFastInstanceChecker(ex); PosNegLPStandard lp = ComponentFactory @@ -452,14 +455,15 @@ lp.init(); la.init(); initTimeKBandReasoner.stop(); - Monitor learningTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "learningTime").start(); + Monitor learningTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, + "learningTime").start(); la.start(); learningTime.stop(); - + result = la.getCurrentlyBestEvaluatedDescription(); logger.trace(PrefixMap.toKBSyntaxString(result.getDescription())); logger.trace(PrefixMap.toManchesterSyntaxString(result.getDescription())); - + } catch (Exception e) { e.printStackTrace(); System.exit(0); @@ -467,7 +471,8 @@ return result; } - public static SortedSet<String> getSentences(EvaluatedDescription ed, int resultLimit) {// Examples justforFindingTheBug + public static SortedSet<String> getSentences(EvaluatedDescription ed, int resultLimit) {// Examples + // justforFindingTheBug Monitor m = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "getSentences").start(); SortedSet<String> result = new TreeSet<String>(); SparqlQueryDescriptionConvertVisitor visit = new SparqlQueryDescriptionConvertVisitor(); @@ -475,41 +480,42 @@ visit.setLabels(false); visit.setLimit(resultLimit); String sparqlQueryGood = ""; -// String sparqlQueryBad = ""; + // String sparqlQueryBad = ""; try { sparqlQueryGood = visit.getSparqlQuery(ed.getDescription().toKBSyntaxString()); -// sparqlQueryBad = visit.getSparqlQuery(ed.getDescription()); -// if(!sparqlQueryGood.equals(sparqlQueryBad)){ -// String file = "errorDescription/"+System.currentTimeMillis(); -// justforFindingTheBug.writeExamples(file); -// Files.appendFile(new File(file), "\n\n/**\nGood:\n"+sparqlQueryGood+"\nBad:\n"+sparqlQueryBad+"**/"); -// } - + // sparqlQueryBad = visit.getSparqlQuery(ed.getDescription()); + // if(!sparqlQueryGood.equals(sparqlQueryBad)){ + // String file = "errorDescription/"+System.currentTimeMillis(); + // justforFindingTheBug.writeExamples(file); + // Files.appendFile(new File(file), + // "\n\n/**\nGood:\n"+sparqlQueryGood+"\nBad:\n"+sparqlQueryBad+"**/"); + // } + } catch (Exception e1) { e1.printStackTrace(); } - + sparqlQueryGood = " \n define input:inference \"" + rulegraph + "\" \n" + "" + sparqlQueryGood; logger.trace(sparqlQueryGood); - result.addAll(sparqlTasks.queryAsSet(sparqlQueryGood, "subject")); m.stop(); - logger.debug("query avg: " + ((double)m.getAvg() / (double)1000)+ " seconds (last: "+((double)m.getLastValue() / (double)1000)+")"); - if(result.isEmpty()){ - + logger.debug("query avg: " + ((double) m.getAvg() / (double) 1000) + " seconds (last: " + + ((double) m.getLastValue() / (double) 1000) + ")"); + if (result.isEmpty()) { + logger.error("sparql query returned no results "); logger.error(sparqlQueryGood); System.exit(0); } return result; } - - private static void _getLabels(SortedSet<String> sentenceURIs, int limit){ + + private static void _getLabels(SortedSet<String> sentenceURIs, int limit) { Monitor m = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "_getLabels").start(); int i = 0; for (String sentenceURI : sentenceURIs) { - if(i>=limit){ + if (i >= limit) { break; } i++; @@ -517,29 +523,29 @@ } m.stop(); } - - private static void _getLabel(String sentenceURI){ - String query = "SELECT * FROM <"+graph+"> " + - "{ <"+sentenceURI+"> rdfs:label ?label . }"; - SortedSet<String> s = sparqlTasks.queryAsSet(query, "label"); - if(s.isEmpty()){ - logger.warn("no label for "+sentenceURI); - }else{ - logger.debug(sentenceURI.replace(prefix, "")+" "+s.first()); + + private static void _getLabel(String sentenceURI) { + String query = "SELECT * FROM <" + graph + "> " + "{ <" + sentenceURI + "> rdfs:label ?label . }"; + SortedSet<String> s = sparqlTasks.queryAsSet(query, "label"); + if (s.isEmpty()) { + logger.warn("no label for " + sentenceURI); + } else { + logger.debug(sentenceURI.replace(prefix, "") + " " + s.first()); } } - private static LearningAlgorithm _getROLLearner(LearningProblem lp, ReasonerComponent rc, IteratedConfig config, Examples ex, int iteration) - throws Exception { - + private static LearningAlgorithm _getROLLearner(LearningProblem lp, ReasonerComponent rc, + IteratedConfig config, Examples ex, int iteration) throws Exception { + int maxExecutionTime = config.maxExecutionTime; int valueFrequencyThreshold = ex.getPosTrain().size(); int noise = config.noise + (iteration); - if(config.adaptMaxRuntime){ - maxExecutionTime = (int)Math.floor(config.factor * (double)ex.sizeOfTrainingSets()); -// valueFrequencyThreshold = (int) Math.floor(0.8d*((double)ex.getPosTrain().size())); + if (config.adaptMaxRuntime) { + maxExecutionTime = (int) Math.floor(config.factor * (double) ex.sizeOfTrainingSets()); + // valueFrequencyThreshold = (int) + // Math.floor(0.8d*((double)ex.getPosTrain().size())); } - + ROLComponent2 la = ComponentFactory.getROLComponent2(lp, rc); la.getConfigurator().setUseExistsConstructor(true); @@ -549,26 +555,25 @@ la.getConfigurator().setUseHasValueConstructor(false); la.getConfigurator().setUseDataHasValueConstructor(config.useDataHasValue); la.getConfigurator().setValueFrequencyThreshold(valueFrequencyThreshold); - - la.getConfigurator().setIgnoredConcepts(new HashSet<String>(Arrays.asList(new String[]{ - "http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag", - "http://nlp2rdf.org/ontology/comma_tag", - "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SentenceFinalPunctuation", - "http://nlp2rdf.org/ontology/generalsentenceinternalpunctuation_tag" - }))); - + la.getConfigurator().setIgnoredConcepts( + new HashSet<String>(Arrays.asList(new String[] { + "http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag", + "http://nlp2rdf.org/ontology/comma_tag", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SentenceFinalPunctuation", + "http://nlp2rdf.org/ontology/generalsentenceinternalpunctuation_tag" }))); + la.getConfigurator().setNoisePercentage(noise); la.getConfigurator().setTerminateOnNoiseReached(true); la.getConfigurator().setMaxExecutionTimeInSeconds(maxExecutionTime); - - if(config.useStartClass){ + + if (config.useStartClass) { la.getConfigurator().setStartClass(prefix + "Sentence"); } - - la.getConfigurator().setWriteSearchTree(config.searchTree); - la.getConfigurator().setSearchTreeFile("log/searchTreeTiger.txt"); - la.getConfigurator().setReplaceSearchTree(true); + + la.getConfigurator().setWriteSearchTree(config.searchTree); + la.getConfigurator().setSearchTreeFile("log/searchTreeTiger.txt"); + la.getConfigurator().setReplaceSearchTree(true); return la; } Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java 2010-02-16 13:23:18 UTC (rev 2045) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java 2010-02-16 14:05:54 UTC (rev 2046) @@ -1,5 +1,6 @@ package org.dllearner.utilities.experiments; +import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -7,6 +8,7 @@ import java.util.TreeSet; import org.apache.log4j.Logger; +import org.dllearner.utilities.Files; import org.dllearner.utilities.JamonMonitorLogger; import com.jamonapi.Monitor; @@ -73,6 +75,12 @@ } } + public void addTable(Table t){ + for (TableRowColumn trc : t.tableRowColumns) { + addTableRowColumn(trc); + } + } + public void addTableRowColumn(TableRowColumn trc) { try{ trc.toLatexRow(); @@ -205,7 +213,17 @@ tableRowColumns = newTrc; } + public void write(String folder, String fileprefix){ + Files.mkdir(folder); + Files.createFile(new File(folder+fileprefix+"_GNU_ROWS"), getGnuPlotAsRows()); + Files.createFile(new File(folder+fileprefix+"_GNU_COLUMNS_I"), getGnuPlotAsColumn(true)); + Files.createFile(new File(folder+fileprefix+"_GNU_COLUMNS"), getGnuPlotAsColumn()); + + + Files.createFile(new File(folder+fileprefix+"_LATEX_ROWS"), getLatexAsRows()); + Files.createFile(new File(folder+fileprefix+"_LATEX_COLUMNS"), getLatexAsColumn()); + Files.createFile(new File(folder+fileprefix+"_LATEX_COLUMNS_I"), getLatexAsColumn(true)); + } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-16 17:44:35
|
Revision: 2048 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2048&view=rev Author: kurzum Date: 2010-02-16 17:44:27 +0000 (Tue, 16 Feb 2010) Log Message: ----------- server commit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/experiments/FinalizedMonitor.java Modified: trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-16 14:15:17 UTC (rev 2047) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-16 17:44:27 UTC (rev 2048) @@ -19,6 +19,7 @@ import org.apache.log4j.Logger; import org.dllearner.algorithms.refinement2.ROLComponent2; import org.dllearner.algorithms.refinement2.ROLearner2; +import org.dllearner.core.ComponentManager; import org.dllearner.core.ComponentPool; import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.KnowledgeSource; @@ -91,7 +92,7 @@ static List<MonKeyImp> mks = new ArrayList<MonKeyImp>(Arrays.asList(new MonKeyImp[] { logPrecision, logRecall, logFMeasure, logLearningTime, logIterationTime })); - static int iterations = 4; + static int iterations = 5; static int folds = 10; static int printSentences = 3; @@ -106,7 +107,7 @@ Logger.getLogger(SparqlQuery.class).setLevel(Level.INFO); Files.mkdir(resultFolder); - + try { sparqlEndpoint = new SparqlEndpoint(new URL(sparqlEndpointURL), new ArrayList<String>(Arrays .asList(new String[] { graph })), new ArrayList<String>()); @@ -114,7 +115,8 @@ } catch (Exception e) { e.printStackTrace(); } - + + // folds = 2; // iterations = 2; long n = System.currentTimeMillis(); @@ -143,6 +145,12 @@ List<Examples> folds = new ExMakerCrossFolds(allExamples) .splitLeaveOneOut(TestIterativeLearning.folds); + + /*CLEANUP*/ + positives = null; + negatives = null; + allExamples = null; + // ExMakerCrossFolds.printFolds(folds); List<IteratedConfig> configs = getConfigs(); Table masterTable = new Table(); @@ -219,11 +227,11 @@ reducedExamples.splits = 2; // reducedExamples.adaptMaxRuntime=false; // reducedExamples.maxExecutionTime = 20; - reducedExamples.factor = 3.0d; + reducedExamples.factor = 6.0d; IteratedConfig fixRuntime = new IteratedConfig("fixRuntime_20s", iterations); fixRuntime.adaptMaxRuntime = false; - fixRuntime.maxExecutionTime = 20; + fixRuntime.maxExecutionTime = 40; IteratedConfig useLemma = new IteratedConfig("useLemma_false", iterations); useLemma.useDataHasValue = false; @@ -241,8 +249,8 @@ tmp.addPosTrain(allExamples.getPosTrain()); tmp.addNegTrain(allExamples.getNegTrain()); - ExMakerFixedSize fs = new ExMakerFixedSize(tmp); - Examples learn = fs.select(config.initialsplits, config.initialsplits); + Examples learn = new ExMakerFixedSize(tmp).select(config.initialsplits, config.initialsplits); + tmp = null; logger.debug("Total set \n" + allExamples); logger.debug("Initial training set \n" + learn); @@ -260,17 +268,6 @@ Monitor iterationTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "iterationTime").start(); Monitor literationTime = config.start(logIterationTime, i); - // try { - // Thread.sleep(2000); - // } catch (InterruptedException e) { - // // TODO Auto-generated catch block - // e.printStackTrace(); - // } - // literationTime.stop(); - // System.out.println(literationTime); - // if (true) { - // System.exit(0); - // } /* LEARNING */ Monitor lLearningTime = config.start(logLearningTime, i); @@ -288,6 +285,11 @@ newTestRetrieved = Helper.intersection(allExamples.getTestExamples(), retrieved); newTrainRetrieved = Helper.intersection(allExamples.getTrainExamples(), retrieved); + SortedSet<String> posAsNegInformative = Helper.difference(allExamples.getPositiveExamples(), + retrieved); + + retrieved = null; + // logger.debug("Retrieved "+retrieved.size()+" sentences"); /* MASHING */ @@ -318,8 +320,7 @@ newlyFound.addPosTrain(discoveredPosInStore); newlyFound.addNegTrain(misclassifiedNegInStore); - SortedSet<String> posAsNegInformative = Helper.difference(allExamples.getPositiveExamples(), - retrieved); + logger.debug("Discovered: " + discoveredPosInStore.size() + " positive sentences in store (printing " + printSentences + "):"); @@ -331,8 +332,7 @@ + " positive sentences in store (printing " + printSentences + "):"); _getLabels(posAsNegInformative, printSentences); - fs = new ExMakerFixedSize(newlyFound); - newlyFound = fs.select(config.splits, config.splits); + newlyFound = new ExMakerFixedSize(newlyFound).select(config.splits, config.splits); learn.addPosTrain(newlyFound.getPosTrain()); learn.addNegTrain(newlyFound.getNegTrain()); @@ -463,6 +463,8 @@ result = la.getCurrentlyBestEvaluatedDescription(); logger.trace(PrefixMap.toKBSyntaxString(result.getDescription())); logger.trace(PrefixMap.toManchesterSyntaxString(result.getDescription())); + + ComponentManager.getInstance().freeAllComponents(); } catch (Exception e) { e.printStackTrace(); Added: trunk/src/dl-learner/org/dllearner/utilities/experiments/FinalizedMonitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/FinalizedMonitor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/FinalizedMonitor.java 2010-02-16 17:44:27 UTC (rev 2048) @@ -0,0 +1,77 @@ +package org.dllearner.utilities.experiments; + +import java.io.Serializable; + +import com.jamonapi.MonKey; +import com.jamonapi.Monitor; + +public class FinalizedMonitor implements Serializable{ + private static final long serialVersionUID = 6617125369204663530L; + + final String header; + final String units; + + final double avg; + final double hits; + final double stdDev; + final double lastValue; + final double max; + final double min; + + + public FinalizedMonitor(Monitor m){ + header = (String)m.getMonKey().getValue(MonKey.LABEL_HEADER); + units = (String)m.getMonKey().getValue(MonKey.UNITS_HEADER); + avg = m.getAvg(); + hits = m.getHits(); + stdDev = m.getStdDev(); + lastValue = m.getLastValue(); + max = m.getMax(); + min = m.getMin(); + + + } + + + public String getHeader() { + return header; + } + + + public String getUnits() { + return units; + } + + + public double getAvg() { + return avg; + } + + + public double getHits() { + return hits; + } + + + public double getStdDev() { + return stdDev; + } + + + public double getLastValue() { + return lastValue; + } + + + public double getMax() { + return max; + } + + + public double getMin() { + return min; + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java 2010-02-16 14:15:17 UTC (rev 2047) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java 2010-02-16 17:44:27 UTC (rev 2048) @@ -1,6 +1,7 @@ package org.dllearner.utilities.experiments; import java.io.File; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -14,7 +15,9 @@ import com.jamonapi.Monitor; import com.jamonapi.MonitorFactory; -public class Table { +public class Table implements Serializable{ + private static final long serialVersionUID = -7191672899557577952L; + private static final Logger logger = Logger.getLogger(Table.class); boolean replaceCommaByPoints = true; @@ -58,13 +61,16 @@ t.addTableRowColumn(trc); } -// System.out.println(t.getLatexAsColumn(true)); + System.out.println(t.getLatexAsColumn(true)); + t.serialize("test.ser"); + Table n = deserialize("test.ser"); + System.out.println(n.getLatexAsColumn(true)); // System.out.println(t.getLatexAsRows()); // System.out.println(t.getGnuPlotAsColumn(true)); // System.out.println(t.getGnuPlotAsRows()); // System.out.println(MonProxyFactory.); - System.out.println( MonitorFactory.getReport()); - JamonMonitorLogger.writeHTMLReport("log/tiger.html"); +// System.out.println( MonitorFactory.getReport()); +// JamonMonitorLogger.writeHTMLReport("log/tiger.html"); } public void addTableRowColumn(List<TableRowColumn> trcs) { @@ -223,7 +229,16 @@ Files.createFile(new File(folder+fileprefix+"_LATEX_ROWS"), getLatexAsRows()); Files.createFile(new File(folder+fileprefix+"_LATEX_COLUMNS"), getLatexAsColumn()); Files.createFile(new File(folder+fileprefix+"_LATEX_COLUMNS_I"), getLatexAsColumn(true)); + + serialize(folder+fileprefix+".ser"); + } + public void serialize(String filename){ + Files.writeObjectToFile(this, new File(filename)); + } + public static Table deserialize(String filename){ + return (Table)Files.readObjectfromFile(new File(filename)); + } } Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-16 14:15:17 UTC (rev 2047) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-16 17:44:27 UTC (rev 2048) @@ -1,12 +1,14 @@ package org.dllearner.utilities.experiments; +import java.io.Serializable; import java.text.DecimalFormat; import org.dllearner.utilities.JamonMonitorLogger; import com.jamonapi.Monitor; -public class TableRowColumn { +public class TableRowColumn implements Serializable{ + private static final long serialVersionUID = 1252924374566004540L; enum Formats { LATEX, GNUPLOT @@ -18,7 +20,8 @@ private final String label ; private final String experimentName; - Monitor[] monitors; +// final Monitor[] monitors; + final FinalizedMonitor[] monitors; boolean useStdDev = false; DecimalFormat dfGnuPlotDefault = new DecimalFormat("######0.00####"); @@ -31,7 +34,10 @@ // this.monitors = monitors; // } public TableRowColumn(Monitor[] monitors, String experimentName, String label) { - this.monitors = monitors; + this.monitors = new FinalizedMonitor[monitors.length]; + for (int i = 0; i < monitors.length; i++) { + this.monitors[i] = new FinalizedMonitor(monitors[i]); + } this.label = label; this.experimentName = experimentName; } @@ -110,8 +116,8 @@ return dfGnuPlotDefault.format(monitors[i].getAvg()) + ""; } - private String latexFormat(Monitor m, double value){ - if(m.getUnits().equals(JamonMonitorLogger.PERCENTAGE)){ + private String latexFormat(FinalizedMonitor monitors, double value){ + if(monitors.getUnits().equals(JamonMonitorLogger.PERCENTAGE)){ return dfPercentage.format(value); }else{ return dfLatexDefault.format(value); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-17 00:06:26
|
Revision: 2052 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2052&view=rev Author: kurzum Date: 2010-02-17 00:06:10 +0000 (Wed, 17 Feb 2010) Log Message: ----------- server commit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java Modified: trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-16 20:04:11 UTC (rev 2051) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-17 00:06:10 UTC (rev 2052) @@ -88,9 +88,9 @@ static MonKeyImp logIterationTime = new MonKeyImp("Iteration Time", Jamon.MS); static List<MonKeyImp> mks = new ArrayList<MonKeyImp>(Arrays.asList(new MonKeyImp[] { logPrecision, - logRecall, logFMeasure, logLearningTime, logIterationTime })); + logRecall, logFMeasure, logAccuracy, logLearningTime, logIterationTime })); - static int iterations = 5; + static int iterations = 7; static int folds = 10; static int printSentences = 3; @@ -158,14 +158,11 @@ conductExperiment(examples, experimentConfig); } Table expTable = new Table(); - expTable.addTableRowColumn(experimentConfig.getTableRows()); - expTable.write(resultFolder, experimentConfig.experimentName); + expTable.addTableRowColumns(experimentConfig.getTableRows()); + expTable.write(resultFolder, "passiveNoZu_"+experimentConfig.experimentName); masterTable.addTable(expTable); - masterTable.sortByExperimentName(); - masterTable.write(resultFolder, "passiveNoZu_by_expname"); - masterTable.sortByLabel(); - masterTable.write(resultFolder, "passiveNoZu_by_label"); - + masterTable.write(resultFolder, "passiveNoZu_master"); + JamonMonitorLogger.writeHTMLReport("/tmp/tiger.html"); logger.info(experimentConfig); @@ -189,19 +186,25 @@ List<Examples> runs = new ArrayList<Examples>(); runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); -// runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); -// runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); -// runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); -// runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); + runs.add(new ExMakerRandomizer(allExamples).split(0.7d)); // /*CLEANUP*/ positives = null; negatives = null; allExamples = null; - List<IteratedConfig> configs = getConfigs(); + List<IteratedConfig> configs = getConfigsZU(); Table masterTable = new Table(); for (IteratedConfig experimentConfig : configs) { + experimentConfig.init(mks); logger.info("next: passiveWithZu." + experimentConfig.experimentName); int i = 1; for (Examples examples : runs) { @@ -210,13 +213,10 @@ } Table expTable = new Table(); - expTable.addTableRowColumn(experimentConfig.getTableRows()); - expTable.write(resultFolder, "passiveWithZu"+experimentConfig.experimentName); + expTable.addTableRowColumns(experimentConfig.getTableRows()); + expTable.write(resultFolder, "passiveWithZu_"+experimentConfig.experimentName); masterTable.addTable(expTable); - masterTable.sortByExperimentName(); - masterTable.write(resultFolder, "passiveWithZu_by_expname"); - masterTable.sortByLabel(); - masterTable.write(resultFolder, "passiveWithZu_by_label"); + masterTable.write(resultFolder, "passiveWithZu_master"); JamonMonitorLogger.writeHTMLReport("/tmp/tiger.html"); logger.info(experimentConfig); @@ -229,13 +229,12 @@ List<IteratedConfig> l = new ArrayList<IteratedConfig>(); IteratedConfig baseline = new IteratedConfig("baseline_5_5", iterations); - + IteratedConfig reducedExamples = new IteratedConfig("reducedExamples_2_2", iterations); reducedExamples.initialsplits = 2; reducedExamples.splits = 2; - // reducedExamples.adaptMaxRuntime=false; - // reducedExamples.maxExecutionTime = 20; reducedExamples.factor = 6.0d; + IteratedConfig fixRuntime = new IteratedConfig("fixRuntime_20s", iterations); fixRuntime.adaptMaxRuntime = false; @@ -245,24 +244,56 @@ useLemma.useDataHasValue = false; l.add(baseline); -// l.add(reducedExamples); -// l.add(fixRuntime); -// l.add(useLemma); + l.add(reducedExamples); + l.add(fixRuntime); + l.add(useLemma); return l; } + public static List<IteratedConfig> getConfigsZU() { + + List<IteratedConfig> l = new ArrayList<IteratedConfig>(); + IteratedConfig baseline = new IteratedConfig("baseline", iterations); + + + IteratedConfig increasedNegativeExamples = new IteratedConfig("increasedNegativeExamples", iterations); + increasedNegativeExamples.negativeSplitAdd = 10; + + + IteratedConfig noNoise = new IteratedConfig("noNoise", iterations); + noNoise.factor = 4.0d; + noNoise.noise = 0; + noNoise.noiseIterationFactor = 0; + + + + IteratedConfig useLemma = new IteratedConfig("useLemma_false", iterations); + useLemma.useDataHasValue = false; + + l.add(baseline); + l.add(increasedNegativeExamples); + l.add(noNoise); + l.add(useLemma); + + return l; + } public static void conductExperiment(Examples allExamples, IteratedConfig config) { Examples tmp = new Examples(); tmp.addPosTrain(allExamples.getPosTrain()); tmp.addNegTrain(allExamples.getNegTrain()); - Examples learn = new ExMakerFixedSize(tmp).select(config.initialsplits, config.initialsplits); + Examples learn = new ExMakerFixedSize(tmp).select(config.initialsplits, config.initialsplits+config.negativeSplitAdd); tmp = null; logger.debug("Total set \n" + allExamples); logger.debug("Initial training set \n" + learn); SortedSet<String> posAsPos = new TreeSet<String>(); + SortedSet<String> posAsNeg = new TreeSet<String>(); + SortedSet<String> negAsNeg = new TreeSet<String>(); + SortedSet<String> negAsPos = new TreeSet<String>(); + + SortedSet<String> retrieved = new TreeSet<String>(); SortedSet<String> newTestRetrieved = new TreeSet<String>(); SortedSet<String> newTrainRetrieved = new TreeSet<String>(); @@ -271,6 +302,7 @@ double precision = 0.0; double recall = 0.0; double fmeasure = 0.0; + double accuracy = 0.0; for (int i = 0; config.stopCondition(i, precision, recall, fmeasure, lastConcept); i++) { Monitor iterationTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, @@ -288,21 +320,27 @@ Monitor queryTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "queryTime") .start(); retrieved = getSentences(ed, config.resultLimit); + logger.debug("retrieved: "+retrieved.size()); queryTime.stop(); // remove all that are not to be tested newTestRetrieved = Helper.intersection(allExamples.getTestExamples(), retrieved); newTrainRetrieved = Helper.intersection(allExamples.getTrainExamples(), retrieved); - - SortedSet<String> posAsNegInformative = Helper.difference(allExamples.getPositiveExamples(), - retrieved); + logger.debug("intersection with testset: "+newTestRetrieved.size()); - retrieved = null; + // logger.debug("Retrieved "+retrieved.size()+" sentences"); /* MASHING */ // Menge aller positiven geschn. mit den gefundenen + + + posAsPos = Helper.intersection(newTestRetrieved, allExamples.getPosTest()); + negAsPos = Helper.intersection(newTestRetrieved, allExamples.getNegTest()); + posAsNeg = Helper.difference(allExamples.getPosTest(), newTestRetrieved); + negAsNeg = Helper.difference(allExamples.getNegTest(), newTestRetrieved ); +// logger.debug("" + posAsPos.size()+"|"+negAsPos.size()+"|"+posAsNeg.size()+"|"+negAsPos.size()); logger.debug("Number of retrieved positives: " + posAsPos.size()); logger.debug("Number of total positives: " + allExamples.getPosTest().size()); @@ -312,11 +350,13 @@ config.add(logRecall, i, recall); fmeasure = fmeasure(precision, recall); config.add(logFMeasure, i, fmeasure); + accuracy = accuracy(posAsPos.size(), negAsNeg.size(), posAsNeg.size(), negAsPos.size()); + config.add(logAccuracy, i, accuracy); // Menge aller positiven geschn. mit den gefundenen - SortedSet<String> negAsPos = Helper.intersection(newTestRetrieved, allExamples.getNegTest()); + logger.debug("Number of retrieved negatives: " + negAsPos.size()); - logger.debug("Number of total negatives: " + allExamples.getNegTest().size()); + logger.debug("Number of total negatives in test set: " + allExamples.getNegTest().size()); logger.debug("Total: " + posAsPos.size() + " + " + negAsPos.size() + " = " + newTestRetrieved.size()); @@ -336,11 +376,11 @@ logger.debug("Misclassified: " + misclassifiedNegInStore.size() + " negative sentences in store (printing " + printSentences + "):"); _getLabels(misclassifiedNegInStore, printSentences); - logger.debug("Not found positives: " + posAsNegInformative.size() + logger.debug("Not found positives: " + posAsNeg.size() + " positive sentences in store (printing " + printSentences + "):"); - _getLabels(posAsNegInformative, printSentences); + _getLabels(posAsNeg, printSentences); - newlyFound = new ExMakerFixedSize(newlyFound).select(config.splits, config.splits); + newlyFound = new ExMakerFixedSize(newlyFound).select(config.splits, config.splits+config.negativeSplitAdd); learn.addPosTrain(newlyFound.getPosTrain()); learn.addNegTrain(newlyFound.getNegTrain()); @@ -361,7 +401,11 @@ } public static double accuracy(int posAsPos, int negAsNeg, int posAsNeg, int negAsPos) { - return 0.0d; + int upper = posAsPos+negAsNeg; + int lower = posAsPos+negAsNeg + posAsNeg + negAsPos; + double accuracy = ((double)upper)/((double)lower); + logger.debug("Accuracy: " + df.format(accuracy)); + return accuracy; } public static double fmeasure(double precision, double recall) { @@ -549,7 +593,7 @@ int maxExecutionTime = config.maxExecutionTime; int valueFrequencyThreshold = ex.getPosTrain().size(); - int noise = config.noise + (iteration); + int noise = config.noise + (config.noiseIterationFactor * iteration); if (config.adaptMaxRuntime) { maxExecutionTime = (int) Math.floor(config.factor * (double) ex.sizeOfTrainingSets()); // valueFrequencyThreshold = (int) Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java 2010-02-16 20:04:11 UTC (rev 2051) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java 2010-02-17 00:06:10 UTC (rev 2052) @@ -11,14 +11,17 @@ public int splits = 5; public int initialsplits = 5; + public int negativeSplitAdd = 0; public boolean useStartClass = true; public boolean searchTree = false; public int noise = 5; + public int noiseIterationFactor = 1; //sets ValueFrequency treshold and maxExecution time public boolean adaptMaxRuntime = true; public int maxExecutionTime = 20; public double factor = 2.0d ;//1.5d; + public boolean useDataHasValue = true; // private String highestPrecision = ""; Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java 2010-02-16 20:04:11 UTC (rev 2051) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/Table.java 2010-02-17 00:06:10 UTC (rev 2052) @@ -13,7 +13,6 @@ import org.dllearner.utilities.JamonMonitorLogger; import com.jamonapi.Monitor; -import com.jamonapi.MonitorFactory; public class Table implements Serializable{ private static final long serialVersionUID = -7191672899557577952L; @@ -25,9 +24,7 @@ enum Formats { LATEX, GNUPLOT }; - -// private Map<String, TableRowColumn> m = new HashMap<String, TableRowColumn>(); private SortedSet<String> experimentNames = new TreeSet<String>(); private SortedSet<String> labels = new TreeSet<String>(); @@ -38,10 +35,6 @@ int tablesize = 10; int nrOfMonitors = 10; Table t = new Table(); -// ITable st = (ITable) MonProxyFactory.monitor(new Table()); -// Table t = (Table)t; - MonitorFactory.getMonitor(new MyMonKey("aa","aa")); - MonitorFactory.getTimeMonitor("ss"); Random r = new Random(); for (int i = 0; i < tablesize; i++) { @@ -53,18 +46,33 @@ m[a].add(r.nextDouble()); } -// System.out.println("avg: " + m[a].getAvg()); } TableRowColumn trc = new TableRowColumn(m, "Test","entry_" + i); -// trc.deleteAll(); trc.useStdDev=false; t.addTableRowColumn(trc); } + for (int i = 0; i < tablesize; i++) { + Monitor[] m = new Monitor[nrOfMonitors]; + for (int a = 0; a < nrOfMonitors; a++) { + m[a] = JamonMonitorLogger.getStatisticMonitor("test" + i + "" + a, + (a==0)?"":JamonMonitorLogger.PERCENTAGE); + for (int b = 0; b < 2; b++) { + m[a].add(r.nextDouble()); + + } + } + TableRowColumn trc = new TableRowColumn(m, "Whatever","bentry_" + i); + trc.useStdDev=false; + t.addTableRowColumn(trc); + } + + System.out.println(t.getLatexAsColumn(true)); - t.serialize("test.ser"); - Table n = deserialize("test.ser"); - System.out.println(n.getLatexAsColumn(true)); + t.sortByLabel(); + System.out.println(t.getLatexAsColumn(true)); + t.sortByExperimentName(); + System.out.println(t.getGnuPlotAsColumn(true)); // System.out.println(t.getLatexAsRows()); // System.out.println(t.getGnuPlotAsColumn(true)); // System.out.println(t.getGnuPlotAsRows()); @@ -73,21 +81,31 @@ // JamonMonitorLogger.writeHTMLReport("log/tiger.html"); } - public void addTableRowColumn(List<TableRowColumn> trcs) { - for (TableRowColumn tableRowColumn : trcs) { - labels.add(tableRowColumn.getLabel()); - experimentNames.add(tableRowColumn.getExperimentName()); - addTableRowColumn(tableRowColumn); - } - } + + /** + * passes each it TableRowColumn one by one to addTableRowColumn + * @param t + */ public void addTable(Table t){ for (TableRowColumn trc : t.tableRowColumns) { addTableRowColumn(trc); } } + /** + * passes it one by one to addTableRowColumn + * @param trcs + */ + public void addTableRowColumns(List<TableRowColumn> trcs) { + for (TableRowColumn tableRowColumn : trcs) { + addTableRowColumn(tableRowColumn); + } + } + public void addTableRowColumn(TableRowColumn trc) { + labels.add(trc.getLabel()); + experimentNames.add(trc.getExperimentName()); try{ trc.toLatexRow(); }catch (NullPointerException e) { @@ -139,21 +157,23 @@ for (int a = 0; a < tableRowColumns.size(); a++) { TableRowColumn trc = tableRowColumns.get(a); + String header = trc.getExperimentName()+" "+trc.getLabel(); boolean firstColumn = (a==0); + boolean lastColumn = (a + 1 == tableRowColumns.size()); for (int i = 1; i < length+1; i++) { - boolean last = (a + 1 == tableRowColumns.size()); - boolean first = (i==1); + + boolean firstRow = (i==1); switch (f) { case LATEX: - rows[0] += (first?trc.getHeader()+TableRowColumn.latexSep:""); - rows[i] += (firstColumn&&addNumbersInFront?i+TableRowColumn.latexSep:""); - rows[i] += trc.getLatexEntry(i-1) - + ((last) ? TableRowColumn.latexSep : TableRowColumn.latexSep); + rows[0] += ((firstColumn&&firstRow&&addNumbersInFront)?TableRowColumn.latexSep:""); + rows[0] += (firstRow?header+TableRowColumn.latexSep:""); + rows[i] += ((firstColumn&&addNumbersInFront)?i+TableRowColumn.latexSep:""); + rows[i] += trc.getLatexEntry(i-1)+ ((lastColumn) ? TableRowColumn.latexSep : TableRowColumn.latexSep); break; case GNUPLOT: - rows[0] += (first?"#"+trc.getHeader()+"\t":""); + rows[0] += (firstRow?"#"+header+"\t":""); rows[i] += (firstColumn&&addNumbersInFront?i+"\t":""); - rows[i] += trc.getGnuPlotEntry(i-1) + ((last) ?"" : "\t"); + rows[i] += trc.getGnuPlotEntry(i-1) + ((lastColumn) ?"" : "\t"); break; } } @@ -198,7 +218,7 @@ for (String s : l) { for (TableRowColumn trc : tableRowColumns) { - if(trc.getLabel().equals(s)){ + if(trc.getLabel().startsWith(s) && trc.getLabel().contains(s)){ newTrc.add(trc); } } @@ -220,6 +240,7 @@ } public void write(String folder, String fileprefix){ + logger.info("Writing results to "+folder+fileprefix); Files.mkdir(folder); Files.createFile(new File(folder+fileprefix+"_GNU_ROWS"), getGnuPlotAsRows()); Files.createFile(new File(folder+fileprefix+"_GNU_COLUMNS_I"), getGnuPlotAsColumn(true)); Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-16 20:04:11 UTC (rev 2051) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-17 00:06:10 UTC (rev 2052) @@ -60,10 +60,6 @@ return experimentName+" "+label+" "+toGnuPlotRow(); } - public String getHeader(){ - return experimentName+" "+label; - } - public int size() { return monitors.length; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-17 16:48:23
|
Revision: 2056 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2056&view=rev Author: kurzum Date: 2010-02-17 16:48:16 +0000 (Wed, 17 Feb 2010) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestQueries.java Added: trunk/src/dl-learner/org/dllearner/scripts/tiger/TestQueries.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestQueries.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TestQueries.java 2010-02-17 16:48:16 UTC (rev 2056) @@ -0,0 +1,166 @@ +package org.dllearner.scripts.tiger; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.URL; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.dllearner.algorithms.refinement2.ROLearner2; +import org.dllearner.core.ComponentPool; +import org.dllearner.core.owl.Description; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.parser.KBParser; +import org.dllearner.parser.ParseException; +import org.dllearner.refinementoperators.RhoDRDown; +import org.dllearner.utilities.Files; +import org.dllearner.utilities.experiments.Jamon; +import org.dllearner.utilities.experiments.Table; +import org.dllearner.utilities.experiments.TableRowColumn; + +import com.jamonapi.MonKeyImp; +import com.jamonapi.Monitor; +import com.jamonapi.MonitorFactory; + +public class TestQueries { + private static final Logger logger = Logger.getLogger(TestQueries.class); + + static DecimalFormat df = new DecimalFormat("00.###%"); + public static DecimalFormat dftime = new DecimalFormat("#####.#"); + + // static String backgroundXML = "files/tiger.noSchema.noImports.rdf"; + static String backgroundXML = "files/tiger_trimmed_toPOS.rdf"; + static String propertiesXML = "files/propertiesOnly.rdf"; + static String sentenceXMLFolder = "files/tiger/"; + static String resultFolder = "tigerResults/"; + + static String sentenceprefix = "http://nlp2rdf.org/ontology/s"; + static String prefix = "http://nlp2rdf.org/ontology/"; + + static String active = "files/active_all_sentenceNumbers.txt"; + static String passiveNoZU = "files/passive_noZuInf_sentenceNumbers.txt"; + static String passiveWithZu = "files/passive_zuInf_sentenceNumbers.txt"; + static String test_has_pos = "files/test_has_pos.txt"; + static String test_has_neg = "files/test_has_neg.txt"; + + static SparqlEndpoint sparqlEndpoint; + static SPARQLTasks sparqlTasks; + + static String sparqlEndpointURL = "http://db0.aksw.org:8893/sparql"; + static String graph = "http://nlp2rdf.org/tiger"; + static String rulegraph = "http://nlp2rdf.org/schema/rules1"; + + static MonKeyImp queryTime = new MonKeyImp("Query Time", Jamon.MS); + static MonKeyImp length = new MonKeyImp("length", Jamon.COUNT); + static MonKeyImp hits = new MonKeyImp("hits", Jamon.COUNT); + + static List<MonKeyImp> mks = new ArrayList<MonKeyImp>(Arrays.asList(new MonKeyImp[] { queryTime})); + + + static SortedSet<String> concepts = new TreeSet<String>(); + + + static String conceptFile = "files/WITH_ZU.log"; + + public static void main(String[] args) { + LogHelper.initLoggers(); + + + + Logger.getLogger(Cache.class).setLevel(Level.INFO); + Logger.getLogger(ComponentPool.class).setLevel(Level.INFO); + Logger.getLogger(ROLearner2.class).setLevel(Level.INFO); + Logger.getLogger(RhoDRDown.class).setLevel(Level.INFO); + Logger.getLogger(SparqlQuery.class).setLevel(Level.INFO); + + try { + sparqlEndpoint = new SparqlEndpoint(new URL(sparqlEndpointURL), new ArrayList<String>(Arrays + .asList(new String[] { graph })), new ArrayList<String>()); + sparqlTasks = new SPARQLTasks( sparqlEndpoint); + } catch (Exception e) { + e.printStackTrace(); + } + + + + String[] concepts; + try { + concepts = Files.readFileAsArray(new File(conceptFile)); + Map<String,Monitor> mm1 = new HashMap<String, Monitor>(); + Map<String,Monitor> mm2 = new HashMap<String, Monitor>(); + Map<String,Monitor> mm3 = new HashMap<String, Monitor>(); + for (int i = 0; i < concepts.length; i++) { + Description d = KBParser.parseConcept(concepts[i]); + SparqlQueryDescriptionConvertVisitor visit = new SparqlQueryDescriptionConvertVisitor(); + visit.setDistinct(true); + visit.setLabels(false); + visit.setLimit(-1); + String q = visit.getSparqlQuery(d); + q = " \n define input:inference \"" + rulegraph + "\" \n" + "" + q; + logger.warn(concepts[i]); + logger.warn(q); + + String label1 = "Time "+d.getLength(); + String label2 = "Length "+d.getLength(); + String label3 = "Hits "+d.getLength(); + Monitor m1 = MonitorFactory.getTimeMonitor(label1).start(); + Monitor m2 = MonitorFactory.getMonitor(label2, Jamon.COUNT); + Monitor m3 = MonitorFactory.getMonitor(label3, Jamon.COUNT).start(); + sparqlTasks.queryAsResultSet(q); + m1.stop(); + mm1.put(label1, m1); + mm2.put(label2, m2); + mm3.put(label3, m3); + + } + + Monitor[] mons1 = new Monitor[mm1.size()]; + Monitor[] mons2 = new Monitor[mm1.size()]; + Monitor[] mons3 = new Monitor[mm1.size()]; + SortedSet<String> keys1 = new TreeSet<String>(mm1.keySet()); + SortedSet<String> keys2 = new TreeSet<String>(mm2.keySet()); + SortedSet<String> keys3 = new TreeSet<String>(mm3.keySet()); + int i = 0; + for(String key:keys1){ + mons1[i] = mm1.get(key); + i++; + } + i = 0; + for(String key:keys2){ + mons2[i] = mm2.get(key); + i++; + } + i = 0; + for(String key:keys3){ + mons3[i] = mm3.get(key); + i++; + } + Table t = new Table(); + + t.addTableRowColumn(new TableRowColumn(mons2, "testqueries", "length")); + t.addTableRowColumn(new TableRowColumn(mons3, "testqueries", "hits")); + t.addTableRowColumn(new TableRowColumn(mons1, "testqueries", "time")); + t.write(resultFolder, "testqueries"); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + }catch (ParseException e) { + e.printStackTrace(); + } + } +} Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-17 10:51:18 UTC (rev 2055) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-17 16:48:16 UTC (rev 2056) @@ -24,6 +24,8 @@ final FinalizedMonitor[] monitors; boolean useStdDev = false; + boolean hits_instead_of_average = false; + DecimalFormat dfGnuPlotDefault = new DecimalFormat("######0.00####"); // DecimalFormat dfStdDevLatex = new DecimalFormat("##.##%"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-17 17:22:11
|
Revision: 2059 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2059&view=rev Author: kurzum Date: 2010-02-17 17:22:05 +0000 (Wed, 17 Feb 2010) Log Message: ----------- server commit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestQueries.java trunk/src/dl-learner/org/dllearner/utilities/experiments/FinalizedMonitor.java trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/tiger/TableSorter.java Added: trunk/src/dl-learner/org/dllearner/scripts/tiger/TableSorter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TableSorter.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TableSorter.java 2010-02-17 17:22:05 UTC (rev 2059) @@ -0,0 +1,19 @@ +package org.dllearner.scripts.tiger; + +import org.dllearner.utilities.experiments.Table; + +public class TableSorter { + + + public static void main(String[] args) { + Table t = new Table(); + t.addTable(Table.deserialize("/home/sebastian/work/papers/2010/ACL_Corpus_Navigation/results/NO_ZU/baseline_5_5.ser")); + t.addTable(Table.deserialize("/home/sebastian/work/papers/2010/ACL_Corpus_Navigation/results/NO_ZU/fixRuntime_20s.ser")); + t.addTable(Table.deserialize("/home/sebastian/work/papers/2010/ACL_Corpus_Navigation/results/NO_ZU/reducedExamples_2_2.ser")); + t.addTable(Table.deserialize("/home/sebastian/work/papers/2010/ACL_Corpus_Navigation/results/NO_ZU/useLemma_false.ser")); + t.sortByLabel(); + t.write("/tmp/noZU/", "nozumaster"); + + + } +} Modified: trunk/src/dl-learner/org/dllearner/scripts/tiger/TestQueries.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestQueries.java 2010-02-17 17:01:35 UTC (rev 2058) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TestQueries.java 2010-02-17 17:22:05 UTC (rev 2059) @@ -30,6 +30,7 @@ import org.dllearner.utilities.experiments.Jamon; import org.dllearner.utilities.experiments.Table; import org.dllearner.utilities.experiments.TableRowColumn; +import org.dllearner.utilities.experiments.TableRowColumn.Display; import com.jamonapi.MonKeyImp; import com.jamonapi.Monitor; @@ -101,7 +102,6 @@ concepts = Files.readFileAsArray(new File(conceptFile)); Map<String,Monitor> mm1 = new HashMap<String, Monitor>(); Map<String,Monitor> mm2 = new HashMap<String, Monitor>(); - Map<String,Monitor> mm3 = new HashMap<String, Monitor>(); for (int i = 0; i < concepts.length; i++) { Description d = KBParser.parseConcept(concepts[i]); SparqlQueryDescriptionConvertVisitor visit = new SparqlQueryDescriptionConvertVisitor(); @@ -115,27 +115,21 @@ String label1 = "Time "+d.getLength(); String label2 = "Length "+d.getLength(); - String label3 = "Hits "+d.getLength(); Monitor m1 = MonitorFactory.getTimeMonitor(label1).start(); Monitor m2 = MonitorFactory.getMonitor(label2, Jamon.COUNT); - - Monitor m3 = MonitorFactory.getMonitor(label3, Jamon.COUNT); + m2.add(d.getLength()); - m3.add(1.0d); sparqlTasks.queryAsResultSet(q); m1.stop(); mm1.put(label1, m1); mm2.put(label2, m2); - mm3.put(label3, m3); } Monitor[] mons1 = new Monitor[mm1.size()]; Monitor[] mons2 = new Monitor[mm1.size()]; - Monitor[] mons3 = new Monitor[mm1.size()]; SortedSet<String> keys1 = new TreeSet<String>(mm1.keySet()); SortedSet<String> keys2 = new TreeSet<String>(mm2.keySet()); - SortedSet<String> keys3 = new TreeSet<String>(mm3.keySet()); int i = 0; for(String key:keys1){ mons1[i] = mm1.get(key); @@ -146,15 +140,16 @@ mons2[i] = mm2.get(key); i++; } - i = 0; - for(String key:keys3){ - mons3[i] = mm3.get(key); - i++; - } Table t = new Table(); + + TableRowColumn tc = new TableRowColumn(mons2, "testqueries", "length"); + tc.setDisplay(Display.TOTAL); + t.addTableRowColumn(tc); - t.addTableRowColumn(new TableRowColumn(mons2, "testqueries", "length")); - t.addTableRowColumn(new TableRowColumn(mons3, "testqueries", "hits")); + tc = new TableRowColumn(mons2, "testqueries", "length"); + tc.setDisplay(Display.HITS); + t.addTableRowColumn(tc); + t.addTableRowColumn(new TableRowColumn(mons1, "testqueries", "time")); t.write(resultFolder, "testqueries"); Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/FinalizedMonitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/FinalizedMonitor.java 2010-02-17 17:01:35 UTC (rev 2058) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/FinalizedMonitor.java 2010-02-17 17:22:05 UTC (rev 2059) @@ -17,6 +17,7 @@ final double lastValue; final double max; final double min; + final double total; public FinalizedMonitor(Monitor m){ @@ -28,6 +29,7 @@ lastValue = m.getLastValue(); max = m.getMax(); min = m.getMin(); + total = m.getTotal(); } @@ -71,6 +73,9 @@ public double getMin() { return min; } + public double getTotal() { + return total; + } Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-17 17:01:35 UTC (rev 2058) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-17 17:22:05 UTC (rev 2059) @@ -13,6 +13,10 @@ enum Formats { LATEX, GNUPLOT } + + public enum Display { + AVG, HITS, TOTAL + } public static String latexSep = "\t&\t"; public static String latexEnd = "\\\\"; @@ -24,7 +28,7 @@ final FinalizedMonitor[] monitors; boolean useStdDev = false; - boolean hits_instead_of_average = false; + Display display = Display.AVG; DecimalFormat dfGnuPlotDefault = new DecimalFormat("######0.00####"); @@ -107,13 +111,26 @@ } public String getLatexEntry(int i) { - return latexFormat(monitors[i], monitors[i].getAvg()) + " "+ (useStdDev ? "(\\pm"+latexFormat(monitors[i], monitors[i].getStdDev()) + ") " : ""); + return latexFormat(monitors[i], getValue(i)) + " "+ (useStdDev ? "(\\pm"+latexFormat(monitors[i], monitors[i].getStdDev()) + ") " : ""); } public String getGnuPlotEntry(int i) { - return dfGnuPlotDefault.format(monitors[i].getAvg()) + ""; + return dfGnuPlotDefault.format(getValue(i)) + ""; } + public void setDisplay(Display d){ + display = d; + } + + private double getValue(int i){ + switch(display){ + case AVG: return monitors[i].getAvg(); + case HITS: return monitors[i].getHits(); + case TOTAL: return monitors[i].getTotal(); + } + return monitors[i].getAvg(); + } + private String latexFormat(FinalizedMonitor monitors, double value){ if(monitors.getUnits().equals(JamonMonitorLogger.PERCENTAGE)){ return dfPercentage.format(value); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2010-02-18 09:16:18
|
Revision: 2061 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2061&view=rev Author: kurzum Date: 2010-02-18 09:16:11 +0000 (Thu, 18 Feb 2010) Log Message: ----------- - correct displaying of manchester value - added some brackets and VocabFilter Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/options/CommonConfigMappings.java trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/tiger/IteratedConfig.java trunk/src/dl-learner/org/dllearner/scripts/tiger/VocabFilter.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java Modified: trunk/src/dl-learner/org/dllearner/core/options/CommonConfigMappings.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/options/CommonConfigMappings.java 2010-02-17 17:55:54 UTC (rev 2060) +++ trunk/src/dl-learner/org/dllearner/core/options/CommonConfigMappings.java 2010-02-18 09:16:11 UTC (rev 2061) @@ -39,22 +39,25 @@ public static SortedSet<Individual> getIndividualSet(Set<String> individuals) { SortedSet<Individual> set = new TreeSet<Individual>(); - for(String individual : individuals) + for(String individual : individuals){ set.add(new Individual(individual)); + } return set; } public static SortedSet<NamedClass> getAtomicConceptSet(Set<String> atomicConcepts) { SortedSet<NamedClass> set = new TreeSet<NamedClass>(cm); - for(String atomicConcept : atomicConcepts) + for(String atomicConcept : atomicConcepts) { set.add(new NamedClass(atomicConcept)); + } return set; } public static SortedSet<ObjectProperty> getAtomicRoleSet(Set<String> atomicRoles) { SortedSet<ObjectProperty> set = new TreeSet<ObjectProperty>(); - for(String atomicRole : atomicRoles) + for(String atomicRole : atomicRoles){ set.add(new ObjectProperty(atomicRole)); + } return set; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java 2010-02-17 17:55:54 UTC (rev 2060) +++ trunk/src/dl-learner/org/dllearner/core/owl/StringValueRestriction.java 2010-02-18 09:16:11 UTC (rev 2061) @@ -39,6 +39,11 @@ } private static final long serialVersionUID = 5651982376457935975L; + + @Override + public String toManchesterSyntaxString(String baseURI, Map<String,String> prefixes) { + return restrictedPropertyExpression.toString(baseURI, prefixes) + " value " +"\"" +value.toManchesterSyntaxString(baseURI, prefixes)+"\""; + } @Override public int getLength() { @@ -49,6 +54,7 @@ return stringValue; } + @Override public String toKBSyntaxString(String baseURI, Map<String, String> prefixes) { return "(" + restrictedPropertyExpression.toKBSyntaxString(baseURI, prefixes) + " STRINGVALUE " + value.toKBSyntaxString(baseURI, prefixes) + ")"; } Copied: trunk/src/dl-learner/org/dllearner/scripts/tiger/IteratedConfig.java (from rev 2052, trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/IteratedConfig.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/IteratedConfig.java 2010-02-18 09:16:11 UTC (rev 2061) @@ -0,0 +1,111 @@ +package org.dllearner.scripts.tiger; + +import org.apache.log4j.Logger; +import org.dllearner.utilities.experiments.ExperimentConfiguration; + +public class IteratedConfig extends ExperimentConfiguration{ + + + private static final Logger logger = Logger.getLogger(IteratedConfig.class); + + public int resultLimit = -1; + + public int splits = 5; + public int initialsplits = 5; + public int negativeSplitAdd = 0; + + public boolean useStartClass = true; + public boolean searchTree = false; + public int noise = 5; + public int noiseIterationFactor = 1; + //sets ValueFrequency treshold and maxExecution time + public boolean adaptMaxRuntime = true; + public int maxExecutionTime = 20; + public double factor = 2.0d ;//1.5d; + + public boolean useDataHasValue = true; + + public boolean ignorePOSFeatures = false; + public boolean ignoreSyntaxFeatures = false; + +// private String highestPrecision = ""; +// private String highestRecall = ""; +// private String highestFMeasure = ""; + + public IteratedConfig(String label, int iterations) { + super(label, iterations); + } + + //reached iterations + //reached 100% + + public boolean stopCondition(int iteration, double precision, double recall, double fmeasure, String concept){ + if(iteration == 0){ + //skip first; + return true; + } + logger.info("Testing stop condition (iter: "+iteration+" ) " ); + +// if(higher(iterationPrecision, precision)){highestPrecision=concept;} +// if(higher(iterationRecall, recall)){highestRecall=concept;} +// if(higher(iterationFmeasure, fmeasure)){highestFMeasure=concept;} + + boolean condIter = (iteration<this.sizeOfResultVector); + boolean condPrec = fmeasure <=1.0d; + if(!condIter){ + logger.info("iterations reached, stopping"); + return false; + }else if(!condPrec){ + logger.info("fmeasure reached, stopping"); + return false; + }else{ + return true; + } + } + + + + + +// String pre = "\n*********\n"+label+"\n"; +// pre +="highestPrecision: "+highestPrecision+"\n"; +// pre +="highestRecall: "+highestRecall+"\n"; +// pre +="highestFMeasure: "+highestFMeasure+"\n"; +// +// +// +// String precision = "Precision:\n"; +// String hits = "hits:\n"; +// String recall = "Recall:\n"; +// String fmeasure = "F-Measure:\n"; +// String learningtime = "learningtime:\n"; +// String totaltime = "Totaltime:\n"; + +// for (int i = 0; i < iterationPrecision.length; i++) { +// precision+=iterationPrecision[i].getAvg()+"\n"; +// hits+=iterationPrecision[i].getHits()+" | "; +// recall+=iterationRecall[i].getAvg()+"\n"; +// fmeasure+=iterationFmeasure[i].getAvg()+"\n"; +// learningtime+=iterationLearningTime[i].getAvg()+"\n"; +// totaltime+=iterationTotalTime[i].getAvg()+"\n"; +// } + +// return pre+precision+recall+fmeasure+hits+"\n"+learningtime+totaltime; +// } +// public static double precision( int posAsPos, int retrieved){ +// double precision = ((double)posAsPos)/((double)retrieved); +// logger.info("Precision: "+df.format(precision)); +// return precision; +// } +// public static double recall( int posAsPos, int allPositives){ +// double recall = ((double)posAsPos)/((double)allPositives); +// +// logger.info("Recall: "+df.format(recall)); +// return recall; +// +// } + + + + +} Modified: trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-17 17:55:54 UTC (rev 2060) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/TestIterativeLearning.java 2010-02-18 09:16:11 UTC (rev 2061) @@ -17,6 +17,7 @@ import org.apache.log4j.Level; import org.apache.log4j.Logger; +import org.dllearner.algorithms.celoe.CELOE; import org.dllearner.algorithms.refinement2.ROLComponent2; import org.dllearner.algorithms.refinement2.ROLearner2; import org.dllearner.core.ComponentManager; @@ -31,7 +32,6 @@ import org.dllearner.kb.sparql.Cache; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.learningproblems.PosNegLPStandard; @@ -44,7 +44,6 @@ import org.dllearner.utilities.experiments.ExMakerFixedSize; import org.dllearner.utilities.experiments.ExMakerRandomizer; import org.dllearner.utilities.experiments.Examples; -import org.dllearner.utilities.experiments.IteratedConfig; import org.dllearner.utilities.experiments.Jamon; import org.dllearner.utilities.experiments.Table; @@ -57,9 +56,14 @@ static DecimalFormat df = new DecimalFormat("00.###%"); public static DecimalFormat dftime = new DecimalFormat("#####.#"); + public static boolean newTiger = true; + // static String backgroundXML = "files/tiger.noSchema.noImports.rdf"; - static String backgroundXML = "files/tiger_trimmed_toPOS.rdf"; - static String propertiesXML = "files/propertiesOnly.rdf"; + static String backgroundXML = (newTiger)?"files/VirtuosoSyntaxSchema.rdf":"files/tiger_trimmed_toPOS.rdf"; + static String sparqlEndpointURL ="http://db0.aksw.org:8893/sparql"; + static String graph = (newTiger)?"http://nlp2rdf.org/tigerFull":"http://nlp2rdf.org/tiger"; + static String rulegraph = (newTiger)?"http://nlp2rdf.org/schemaFull/rules1":"http://nlp2rdf.org/schema/rules1"; +// static String propertiesXML = "files/propertiesOnly.rdf"; static String sentenceXMLFolder = "files/tiger/"; static String resultFolder = "tigerResults/"; @@ -75,9 +79,7 @@ static SparqlEndpoint sparqlEndpoint; static SPARQLTasks sparqlTasks; - static String sparqlEndpointURL = "http://db0.aksw.org:8893/sparql"; - static String graph = "http://nlp2rdf.org/tiger"; - static String rulegraph = "http://nlp2rdf.org/schema/rules1"; + static MonKeyImp logFMeasure = new MonKeyImp("F-Measure", Jamon.PERCENTAGE); static MonKeyImp logPrecision = new MonKeyImp("Precision", Jamon.PERCENTAGE); @@ -156,7 +158,7 @@ negatives = null; allExamples = null; - List<IteratedConfig> configs = getConfigs(); + List<IteratedConfig> configs = getConfigsNo(); Table masterTable = new Table(); for (IteratedConfig experimentConfig : configs) { experimentConfig.init(mks); @@ -234,22 +236,26 @@ } - public static List<IteratedConfig> getConfigs() { + public static List<IteratedConfig> getConfigsNo() { List<IteratedConfig> l = new ArrayList<IteratedConfig>(); - IteratedConfig baseline = new IteratedConfig("baseline_5_5", iterations); + IteratedConfig baseline = new IteratedConfig("baseline", iterations); + baseline.initialsplits = 10; + baseline.noise = 0; + baseline.searchTree = true; + baseline.factor = 10.0d; - IteratedConfig reducedExamples = new IteratedConfig("reducedExamples_2_2", iterations); + IteratedConfig reducedExamples = new IteratedConfig("reducedExamples", iterations); reducedExamples.initialsplits = 2; reducedExamples.splits = 2; reducedExamples.factor = 6.0d; - IteratedConfig fixRuntime = new IteratedConfig("fixRuntime_20s", iterations); + IteratedConfig fixRuntime = new IteratedConfig("fixRuntime", iterations); fixRuntime.adaptMaxRuntime = false; - fixRuntime.maxExecutionTime = 40; + fixRuntime.maxExecutionTime = 20; - IteratedConfig useLemma = new IteratedConfig("useLemma_false", iterations); + IteratedConfig useLemma = new IteratedConfig("noLemma", iterations); useLemma.useDataHasValue = false; l.add(baseline); @@ -264,7 +270,8 @@ List<IteratedConfig> l = new ArrayList<IteratedConfig>(); IteratedConfig baseline = new IteratedConfig("baseline", iterations); baseline.noiseIterationFactor = 0; - + baseline.noise = 0; + baseline.searchTree = true; IteratedConfig increasedNegativeExamples = new IteratedConfig("increasedNegativeExamples", iterations); increasedNegativeExamples.negativeSplitAdd = 10; @@ -276,7 +283,7 @@ - IteratedConfig useLemma = new IteratedConfig("useLemma_false", iterations); + IteratedConfig useLemma = new IteratedConfig("noLemma", iterations); useLemma.useDataHasValue = false; l.add(baseline); @@ -326,6 +333,10 @@ concepts.add(ed.getDescription().toKBSyntaxString(null,null)); logger.debug("USING CONCEPT: " + lastConcept); + if (true) { + System.exit(0); + } + /* RETRIEVING */ Monitor queryTime = JamonMonitorLogger.getTimeMonitor(TestIterativeLearning.class, "queryTime") .start(); @@ -453,33 +464,33 @@ return tmp; } - @SuppressWarnings("unused") - private static Set<KnowledgeSource> _getSPARQL(Examples ex) throws Exception { - Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); +// @SuppressWarnings("unused") +// private static Set<KnowledgeSource> _getSPARQL(Examples ex) throws Exception { +// Set<KnowledgeSource> tmp = new HashSet<KnowledgeSource>(); +// +// Set<String> examples = new TreeSet<String>(); +// examples.addAll(ex.getPosTrain()); +// examples.addAll(ex.getNegTrain()); +// SparqlKnowledgeSource ks = ComponentFactory.getSparqlKnowledgeSource(new URL(sparqlEndpointURL), +// examples); +// ks.getConfigurator().setUrl(new URL(sparqlEndpointURL)); +// ks.getConfigurator().setDefaultGraphURIs(new HashSet<String>(Arrays.asList(new String[] { graph }))); +// ks.getConfigurator().setInstances(examples); +// ks.getConfigurator().setDissolveBlankNodes(false); +// ks.getConfigurator().setRecursionDepth(2); +// ks.getConfigurator().setDissolveBlankNodes(false); +// ks.getConfigurator().setCloseAfterRecursion(true); +// ks.getConfigurator().setGetAllSuperClasses(true); +// ks.getConfigurator().setGetPropertyInformation(false); +// ks.getConfigurator().setUseLits(true); +// // ks.getConfigurator(). +// OWLFile ks2 = ComponentFactory.getOWLFile(new File(propertiesXML).toURI().toURL()); +// tmp.add(ks); +// tmp.add(ks2); +// +// return tmp; +// } - Set<String> examples = new TreeSet<String>(); - examples.addAll(ex.getPosTrain()); - examples.addAll(ex.getNegTrain()); - SparqlKnowledgeSource ks = ComponentFactory.getSparqlKnowledgeSource(new URL(sparqlEndpointURL), - examples); - ks.getConfigurator().setUrl(new URL(sparqlEndpointURL)); - ks.getConfigurator().setDefaultGraphURIs(new HashSet<String>(Arrays.asList(new String[] { graph }))); - ks.getConfigurator().setInstances(examples); - ks.getConfigurator().setDissolveBlankNodes(false); - ks.getConfigurator().setRecursionDepth(2); - ks.getConfigurator().setDissolveBlankNodes(false); - ks.getConfigurator().setCloseAfterRecursion(true); - ks.getConfigurator().setGetAllSuperClasses(true); - ks.getConfigurator().setGetPropertyInformation(false); - ks.getConfigurator().setUseLits(true); - // ks.getConfigurator(). - OWLFile ks2 = ComponentFactory.getOWLFile(new File(propertiesXML).toURI().toURL()); - tmp.add(ks); - tmp.add(ks2); - - return tmp; - } - // test if virtuoso is correct // public static void validate(Description d, Examples newlyFound){ // try { @@ -613,6 +624,7 @@ } ROLComponent2 la = ComponentFactory.getROLComponent2(lp, rc); +// CELOE la = ComponentFactory.getCELOE(lp, rc); la.getConfigurator().setUseExistsConstructor(true); la.getConfigurator().setUseAllConstructor(false); @@ -621,7 +633,43 @@ la.getConfigurator().setUseHasValueConstructor(false); la.getConfigurator().setUseDataHasValueConstructor(config.useDataHasValue); la.getConfigurator().setValueFrequencyThreshold(valueFrequencyThreshold); + +// if(config.ignorePOSFeatures){ +// la.getConfigurator().setIgnoredConcepts(VocabFilter.posClasses); +// la.getConfigurator().setIgnoredRoles(VocabFilter.posProperties); +// } + SortedSet<String> inv = new TreeSet<String>(); + for(String s : VocabFilter.syntaxProperies){ + if(s.toLowerCase().endsWith("inv")){ + inv.add(s); + } + } + inv.add("http://nlp2rdf.org/ontology/hasToken"); + inv.add("http://nlp2rdf.org/ontology/firstToken"); +// System.out.println(inv); +// if (true) { +// System.exit(0); +// } + SortedSet<String> all = new TreeSet<String>(Helper.difference(VocabFilter.syntaxProperies, inv)); + all.addAll(VocabFilter.posProperties); + la.getConfigurator().setAllowedRoles(all); +// if(config.ignoreSyntaxFeatures){ +// la.getConfigurator().setIgnoredConcepts(VocabFilter.syntaxClasses); +// la.getConfigurator().setIgnoredRoles(VocabFilter.syntaxProperies); +// }else{ +// la.getConfigurator().setAllowedRoles(all); +// } + + + + + +// la.getConfigurator().setInstanceBasedDisjoints(false); + + + + la.getConfigurator().setIgnoredConcepts( new HashSet<String>(Arrays.asList(new String[] { "http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag", Added: trunk/src/dl-learner/org/dllearner/scripts/tiger/VocabFilter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/tiger/VocabFilter.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/tiger/VocabFilter.java 2010-02-18 09:16:11 UTC (rev 2061) @@ -0,0 +1,265 @@ +package org.dllearner.scripts.tiger; + +import java.util.Arrays; +import java.util.SortedSet; +import java.util.TreeSet; + +public class VocabFilter { + public static SortedSet<String> syntaxProperies = new TreeSet<String>(Arrays.asList(new String[]{ + "http://nlp2rdf.org/ontology/AC", + "http://nlp2rdf.org/ontology/ACInv", + "http://nlp2rdf.org/ontology/ADC", + "http://nlp2rdf.org/ontology/ADCInv", + "http://nlp2rdf.org/ontology/AMS", + "http://nlp2rdf.org/ontology/AMSInv", + "http://nlp2rdf.org/ontology/APEdge", + "http://nlp2rdf.org/ontology/APEdgeInv", + "http://nlp2rdf.org/ontology/APP", + "http://nlp2rdf.org/ontology/APPInv", + "http://nlp2rdf.org/ontology/AVC", + "http://nlp2rdf.org/ontology/AVCInv", + "http://nlp2rdf.org/ontology/CD", + "http://nlp2rdf.org/ontology/CDInv", + "http://nlp2rdf.org/ontology/CM", + "http://nlp2rdf.org/ontology/CMInv", + "http://nlp2rdf.org/ontology/CVC", + "http://nlp2rdf.org/ontology/CVCInv", + "http://nlp2rdf.org/ontology/DA", + "http://nlp2rdf.org/ontology/DAInv", + "http://nlp2rdf.org/ontology/DH", + "http://nlp2rdf.org/ontology/DHInv", + "http://nlp2rdf.org/ontology/DM", + "http://nlp2rdf.org/ontology/DMInv", + "http://nlp2rdf.org/ontology/EP", + "http://nlp2rdf.org/ontology/EPInv", + "http://nlp2rdf.org/ontology/HD", + "http://nlp2rdf.org/ontology/HDInv", + "http://nlp2rdf.org/ontology/JU", + "http://nlp2rdf.org/ontology/JUInv", + "http://nlp2rdf.org/ontology/MNR", + "http://nlp2rdf.org/ontology/MNRInv", + "http://nlp2rdf.org/ontology/NG", + "http://nlp2rdf.org/ontology/NGInv", + "http://nlp2rdf.org/ontology/NK", + "http://nlp2rdf.org/ontology/NKInv", + "http://nlp2rdf.org/ontology/NPEdge", + "http://nlp2rdf.org/ontology/NPEdgeInv", + "http://nlp2rdf.org/ontology/OC", + "http://nlp2rdf.org/ontology/OCInv", + "http://nlp2rdf.org/ontology/OG", + "http://nlp2rdf.org/ontology/OGInv", + "http://nlp2rdf.org/ontology/OP", + "http://nlp2rdf.org/ontology/OPInv", + "http://nlp2rdf.org/ontology/PAR", + "http://nlp2rdf.org/ontology/PARInv", + "http://nlp2rdf.org/ontology/PD", + "http://nlp2rdf.org/ontology/PDInv", + "http://nlp2rdf.org/ontology/PG", + "http://nlp2rdf.org/ontology/PGInv", + "http://nlp2rdf.org/ontology/PM", + "http://nlp2rdf.org/ontology/PMInv", + "http://nlp2rdf.org/ontology/PPEdge", + "http://nlp2rdf.org/ontology/PPEdgeInv", + "http://nlp2rdf.org/ontology/RE", + "http://nlp2rdf.org/ontology/REInv", + "http://nlp2rdf.org/ontology/RS", + "http://nlp2rdf.org/ontology/RSInv", + "http://nlp2rdf.org/ontology/SBP", + "http://nlp2rdf.org/ontology/SBPInv", + "http://nlp2rdf.org/ontology/SP", + "http://nlp2rdf.org/ontology/SPInv", + "http://nlp2rdf.org/ontology/SyntacticEdge", + "http://nlp2rdf.org/ontology/SyntacticEdgeInv", + "http://nlp2rdf.org/ontology/VO", + "http://nlp2rdf.org/ontology/VOInv", + "http://nlp2rdf.org/ontology/VPEdge", + "http://nlp2rdf.org/ontology/VPEdgeInv", + "http://nlp2rdf.org/ontology/accusativeObject", + "http://nlp2rdf.org/ontology/accusativeObjectInv", + "http://nlp2rdf.org/ontology/apposition", + "http://nlp2rdf.org/ontology/appositionInv", + "http://nlp2rdf.org/ontology/comparativeComplement", + "http://nlp2rdf.org/ontology/comparativeComplementInv", + "http://nlp2rdf.org/ontology/complementizer", + "http://nlp2rdf.org/ontology/complementizerInv", + "http://nlp2rdf.org/ontology/conjunct", + "http://nlp2rdf.org/ontology/conjunctInv", + "http://nlp2rdf.org/ontology/modifier", + "http://nlp2rdf.org/ontology/modifierInv", + "http://nlp2rdf.org/ontology/numberComponent", + "http://nlp2rdf.org/ontology/numberComponentInv", + "http://nlp2rdf.org/ontology/placeholder", + "http://nlp2rdf.org/ontology/placeholderInv", + "http://nlp2rdf.org/ontology/properNounComponent", + "http://nlp2rdf.org/ontology/properNounComponentInv", + "http://nlp2rdf.org/ontology/relativeClause", + "http://nlp2rdf.org/ontology/relativeClauseInv", + "http://nlp2rdf.org/ontology/secondAccusativeObject", + "http://nlp2rdf.org/ontology/secondAccusativeObjectInv", + "http://nlp2rdf.org/ontology/separableVerbPrefix", + "http://nlp2rdf.org/ontology/separableVerbPrefixInv", + "http://nlp2rdf.org/ontology/subject", + "http://nlp2rdf.org/ontology/subjectInv", + "http://nlp2rdf.org/ontology/syntacticEdge", + "http://nlp2rdf.org/ontology/syntacticEdgeInv", + "http://nlp2rdf.org/ontology/unitComponent", + "http://nlp2rdf.org/ontology/unitComponentInv"})); + + + public static SortedSet<String> syntaxClasses = new TreeSet<String>(Arrays.asList(new String[]{ + "http://nachhalt.sfb632.uni-potsdam.de/owl/tiger-syntax.owl#AdjectivePhrase", + "http://nachhalt.sfb632.uni-potsdam.de/owl/tiger-syntax.owl#Coordination", + "http://nachhalt.sfb632.uni-potsdam.de/owl/tiger-syntax.owl#NounPhrase", + "http://nachhalt.sfb632.uni-potsdam.de/owl/tiger-syntax.owl#PrepositionalPhrase", + "http://nachhalt.sfb632.uni-potsdam.de/owl/tiger-syntax.owl#SyntacticNode", + "http://nachhalt.sfb632.uni-potsdam.de/owl/tiger-syntax.owl#VerbalPhrase", + "http://nlp2rdf.org/ontology/adjectivePhrase", + "http://nlp2rdf.org/ontology/chunk", + "http://nlp2rdf.org/ontology/complexNumeral", + "http://nlp2rdf.org/ontology/coordinatedAdjectivePhrase", + "http://nlp2rdf.org/ontology/coordinatedComplementizer", + "http://nlp2rdf.org/ontology/coordinatedNounPhrase", + "http://nlp2rdf.org/ontology/coordinatedVerbPhrase", + "http://nlp2rdf.org/ontology/discourseLevelConstituent", + "http://nlp2rdf.org/ontology/nounPhrase", + "http://nlp2rdf.org/ontology/prepositionalPhrase", + "http://nlp2rdf.org/ontology/properNoun", + "http://nlp2rdf.org/ontology/verbPhrase"})); + + + public static SortedSet<String> posProperties = new TreeSet<String>(Arrays.asList(new String[]{})); + + + public static SortedSet<String> posClasses = new TreeSet<String>(Arrays.asList(new String[]{ + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Additional", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Adjective", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Adposition", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Adverb", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AdverbialInterrogativeRelativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AnsweringParticle", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Article", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AttributiveAdjective", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AttributiveDemonstrativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AttributiveIndefinitePronounWithoutDeterminer", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AttributiveInterrogativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AttributivePossessivePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AttributiveRelativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AuxiliaryImperative", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AuxiliaryInfinitive", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AuxiliaryPastParticiple", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#AuxilliaryVerb", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#CardinalNumber", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#CircumpositionRightPart", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Comma", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#CommonNoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#ComparisonParticle", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Conjunction", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#CoordinatingConjunction", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#DemonstrativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#FiniteAuxiliaryVerb", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#FiniteModalVerb", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#FiniteVerb", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#ForeignMaterial", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Imperative", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#IndefinitePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Infinitive", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#InfinitiveWithZu", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Interjection", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#InterrogativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#LexicalVerb", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#ModalInfinitive", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#ModalPastParticiple", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#ModalVerb", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#NegationParticle", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#NonWords", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Noun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#POS", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Particle", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#ParticleWithAdjective", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#PastParticiple", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#PersonalPronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#PossessivePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Postposition", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#PredicativeAdjective", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Preposition", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#PrepositionWithArticle", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#PronominalAdverb", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Pronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#ProperNoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Punctuation", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#ReflexivePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#RelativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SentenceFinalPunctuation", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SentenceInternalPunctuation", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SeparatedVerbalParticle", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SubordinatingConjunction", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SubordinatingConjunctionWithSentence", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SubordinatingConjunctionWithZu", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SubstitutiveDemonstrativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SubstitutiveIndefinitePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SubstitutiveInterrogativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SubstitutivePossessivePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#SubstitutiveRelativePronoun", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Tag", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Truncated", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#Verb", + "http://nachhalt.sfb632.uni-potsdam.de/owl/stts.owl#ZuWithInfinitive", + "http://nlp2rdf.org/ontology/ADJA", + "http://nlp2rdf.org/ontology/ADJD", + "http://nlp2rdf.org/ontology/ADV", + "http://nlp2rdf.org/ontology/APPO", + "http://nlp2rdf.org/ontology/APPR", + "http://nlp2rdf.org/ontology/APPRART", + "http://nlp2rdf.org/ontology/APZR", + "http://nlp2rdf.org/ontology/ART", + "http://nlp2rdf.org/ontology/CARD", + "http://nlp2rdf.org/ontology/FM", + "http://nlp2rdf.org/ontology/ITJ", + "http://nlp2rdf.org/ontology/KOKOM", + "http://nlp2rdf.org/ontology/KON", + "http://nlp2rdf.org/ontology/KOUI", + "http://nlp2rdf.org/ontology/KOUS", + "http://nlp2rdf.org/ontology/NE", + "http://nlp2rdf.org/ontology/NN", + "http://nlp2rdf.org/ontology/NNE", + "http://nlp2rdf.org/ontology/PDAT", + "http://nlp2rdf.org/ontology/PDS", + "http://nlp2rdf.org/ontology/PIAT", + "http://nlp2rdf.org/ontology/PIS", + "http://nlp2rdf.org/ontology/PPER", + "http://nlp2rdf.org/ontology/PPOSAT", + "http://nlp2rdf.org/ontology/PPOSS", + "http://nlp2rdf.org/ontology/PRELAT", + "http://nlp2rdf.org/ontology/PRELS", + "http://nlp2rdf.org/ontology/PRF", + "http://nlp2rdf.org/ontology/PROAV", + "http://nlp2rdf.org/ontology/PTKA", + "http://nlp2rdf.org/ontology/PTKANT", + "http://nlp2rdf.org/ontology/PTKNEG", + "http://nlp2rdf.org/ontology/PTKVZ", + "http://nlp2rdf.org/ontology/PTKZU", + "http://nlp2rdf.org/ontology/PWAT", + "http://nlp2rdf.org/ontology/PWAV", + "http://nlp2rdf.org/ontology/PWS", + "http://nlp2rdf.org/ontology/TRUNC", + "http://nlp2rdf.org/ontology/VAFIN", + "http://nlp2rdf.org/ontology/VAIMP", + "http://nlp2rdf.org/ontology/VAINF", + "http://nlp2rdf.org/ontology/VAPP", + "http://nlp2rdf.org/ontology/VMFIN", + "http://nlp2rdf.org/ontology/VMINF", + "http://nlp2rdf.org/ontology/VMPP", + "http://nlp2rdf.org/ontology/VVFIN", + "http://nlp2rdf.org/ontology/VVIMP", + "http://nlp2rdf.org/ontology/VVINF", + "http://nlp2rdf.org/ontology/VVIZU", + "http://nlp2rdf.org/ontology/VVPP", + "http://nlp2rdf.org/ontology/XY", + "http://nlp2rdf.org/ontology/comma_tag", + "http://nlp2rdf.org/ontology/generalsentenceinternalpunctuation_tag", + "http://nlp2rdf.org/ontology/sentencefinalpunctuation_tag"})); + + + + +} Deleted: trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java 2010-02-17 17:55:54 UTC (rev 2060) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/IteratedConfig.java 2010-02-18 09:16:11 UTC (rev 2061) @@ -1,107 +0,0 @@ -package org.dllearner.utilities.experiments; - -import org.apache.log4j.Logger; - -public class IteratedConfig extends ExperimentConfiguration{ - - - private static final Logger logger = Logger.getLogger(IteratedConfig.class); - - public int resultLimit = -1; - - public int splits = 5; - public int initialsplits = 5; - public int negativeSplitAdd = 0; - - public boolean useStartClass = true; - public boolean searchTree = false; - public int noise = 5; - public int noiseIterationFactor = 1; - //sets ValueFrequency treshold and maxExecution time - public boolean adaptMaxRuntime = true; - public int maxExecutionTime = 20; - public double factor = 2.0d ;//1.5d; - - public boolean useDataHasValue = true; - -// private String highestPrecision = ""; -// private String highestRecall = ""; -// private String highestFMeasure = ""; - - public IteratedConfig(String label, int iterations) { - super(label, iterations); - } - - //reached iterations - //reached 100% - - public boolean stopCondition(int iteration, double precision, double recall, double fmeasure, String concept){ - if(iteration == 0){ - //skip first; - return true; - } - logger.info("Testing stop condition (iter: "+iteration+" ) " ); - -// if(higher(iterationPrecision, precision)){highestPrecision=concept;} -// if(higher(iterationRecall, recall)){highestRecall=concept;} -// if(higher(iterationFmeasure, fmeasure)){highestFMeasure=concept;} - - boolean condIter = (iteration<this.sizeOfResultVector); - boolean condPrec = fmeasure <=1.0d; - if(!condIter){ - logger.info("iterations reached, stopping"); - return false; - }else if(!condPrec){ - logger.info("fmeasure reached, stopping"); - return false; - }else{ - return true; - } - } - - - - - -// String pre = "\n*********\n"+label+"\n"; -// pre +="highestPrecision: "+highestPrecision+"\n"; -// pre +="highestRecall: "+highestRecall+"\n"; -// pre +="highestFMeasure: "+highestFMeasure+"\n"; -// -// -// -// String precision = "Precision:\n"; -// String hits = "hits:\n"; -// String recall = "Recall:\n"; -// String fmeasure = "F-Measure:\n"; -// String learningtime = "learningtime:\n"; -// String totaltime = "Totaltime:\n"; - -// for (int i = 0; i < iterationPrecision.length; i++) { -// precision+=iterationPrecision[i].getAvg()+"\n"; -// hits+=iterationPrecision[i].getHits()+" | "; -// recall+=iterationRecall[i].getAvg()+"\n"; -// fmeasure+=iterationFmeasure[i].getAvg()+"\n"; -// learningtime+=iterationLearningTime[i].getAvg()+"\n"; -// totaltime+=iterationTotalTime[i].getAvg()+"\n"; -// } - -// return pre+precision+recall+fmeasure+hits+"\n"+learningtime+totaltime; -// } -// public static double precision( int posAsPos, int retrieved){ -// double precision = ((double)posAsPos)/((double)retrieved); -// logger.info("Precision: "+df.format(precision)); -// return precision; -// } -// public static double recall( int posAsPos, int allPositives){ -// double recall = ((double)posAsPos)/((double)allPositives); -// -// logger.info("Recall: "+df.format(recall)); -// return recall; -// -// } - - - - -} Modified: trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-17 17:55:54 UTC (rev 2060) +++ trunk/src/dl-learner/org/dllearner/utilities/experiments/TableRowColumn.java 2010-02-18 09:16:11 UTC (rev 2061) @@ -123,6 +123,7 @@ } private double getValue(int i){ +// return monitors[i].getAvg(); switch(display){ case AVG: return monitors[i].getAvg(); case HITS: return monitors[i].getHits(); @@ -133,7 +134,7 @@ private String latexFormat(FinalizedMonitor monitors, double value){ if(monitors.getUnits().equals(JamonMonitorLogger.PERCENTAGE)){ - return dfPercentage.format(value); + return dfPercentage.format(value).replace("%", "\\%").replace("_", "\\_"); }else{ return dfLatexDefault.format(value); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |