From: <ku...@us...> - 2008-04-24 08:43:39
|
Revision: 821 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=821&view=rev Author: kurzum Date: 2008-04-24 01:43:22 -0700 (Thu, 24 Apr 2008) Log Message: ----------- small changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-24 08:43:22 UTC (rev 821) @@ -394,10 +394,8 @@ Files.appendFile(searchTreeFile, treeString); } + handleStoppingConditions(); - if(maxExecutionTimeReached()) { stop=true;} - solutionFound = (guaranteeXgoodDescriptions() ); - solutionFound = (minExecutionTimeReached()&& solutionFound); //logger.info(minExecutionTimeReached()+"aaaaaaa "+solutions.size()+"::"+guaranteeXgoodDescriptions); //logger.info(solutionFound+"aaaaaaa "+stop); @@ -1055,10 +1053,19 @@ return startNode; } + private void handleStoppingConditions(){ + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + if(maxExecutionTimeReached()) { + stop(); + if(solutions.size()>0)solutionFound = true; + } + } + private boolean guaranteeXgoodDescriptions(){ if(guaranteeXgoodShown)return true; if(solutions.size()>guaranteeXgoodDescriptions){ - logger.info("Minimum number of good descriptions reached, stopping now..."); + logger.info("Minimum number ("+guaranteeXgoodDescriptions+") of good descriptions reached, stopping now..."); guaranteeXgoodShown=true; return true;} else return false; @@ -1072,7 +1079,7 @@ long needed = System.currentTimeMillis()- this.runtime; long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; if(maxMilliSeconds<needed){ - logger.info("Maximum time reached, stopping now..."); + logger.info("Maximum time ("+maxExecutionTimeInSeconds+" seconds) reached, stopping now..."); maxExecutionTimeShown=true; return true;} else return false; @@ -1088,7 +1095,7 @@ long needed = System.currentTimeMillis()- this.runtime; long minMilliSeconds = minExecutionTimeInSeconds *1000 ; if(minMilliSeconds<needed){ - logger.info("Minimum time reached, stopping when next solution is found"); + logger.info("Minimum time ("+minExecutionTimeInSeconds+" seconds) reached, stopping when next solution is found"); minExecutionTimeShown=true; return true;} else return false; Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-24 08:43:22 UTC (rev 821) @@ -72,6 +72,7 @@ private boolean useAllConstructor = CommonConfigOptions.useAllConstructorDefault; private boolean useExistsConstructor = CommonConfigOptions.useExistsConstructorDefault; //this was added so you can switch algorithm without removing everything not applicable + @SuppressWarnings("unused") private boolean useCardinalityRestrictions = CommonConfigOptions.useCardinalityRestrictionsDefault; private boolean useNegation = CommonConfigOptions.useNegationDefault; //TODO different standard options to CommonConfigOptions @@ -81,11 +82,11 @@ //extended Options private int maxExecutionTimeInSeconds = CommonConfigOptions.maxExecutionTimeInSecondsDefault; - private boolean maxExecutionTimeShown=false; + private boolean maxExecutionTimeShown = false; private int minExecutionTimeInSeconds = CommonConfigOptions.minExecutionTimeInSecondsDefault; - private boolean minExecutionTimeShown=false; + private boolean minExecutionTimeShown = false; private int guaranteeXgoodDescriptions = CommonConfigOptions.guaranteeXgoodDescriptionsDefault; - private boolean guaranteeXgoodShown=false; + private boolean guaranteeXgoodShown = false; private boolean quiet = false; @@ -415,9 +416,7 @@ algorithmStartTime = System.nanoTime(); //second set of lines below, sometimes doesn't go into while, see above - if(maxExecutionTimeReached()) { stop=true;} - solutionFound = (guaranteeXgoodDescriptions() ); - solutionFound = (minExecutionTimeReached()&& solutionFound); + handleStoppingConditions(); // TODO: effizienter Traversal der Subsumption-Hierarchie // TODO: Äquivalenzen nutzen @@ -528,10 +527,8 @@ if(!quiet) logger.debug("--- loop " + loop + " finished ---"); + handleStoppingConditions(); - solutionFound = (guaranteeXgoodDescriptions() ); - solutionFound = (minExecutionTimeReached()&& solutionFound); - if(maxExecutionTimeReached()) {solutionFound=true; stop=true;} }//end while @@ -1091,11 +1088,19 @@ return startNode; } + private void handleStoppingConditions(){ + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + if(maxExecutionTimeReached()) { stop(); + if(solutions.size()>0)solutionFound = true; + } + } + private boolean guaranteeXgoodDescriptions(){ if(guaranteeXgoodShown)return true; if(solutions.size()>guaranteeXgoodDescriptions){ - logger.info("Minimum number of good descriptions reached, stopping now..."); + logger.info("Minimum number ("+guaranteeXgoodDescriptions+") of good descriptions reached, stopping now..."); guaranteeXgoodShown=true; return true;} else return false; @@ -1109,13 +1114,15 @@ long needed = System.currentTimeMillis()- this.runtime; long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; if(maxMilliSeconds<needed){ - logger.info("Maximum time reached, stopping now..."); + logger.info("Maximum time ("+maxExecutionTimeInSeconds+" seconds) reached, stopping now..."); maxExecutionTimeShown=true; return true;} else return false; } + + /** * true if minExecutionTime reached * @return true @@ -1125,7 +1132,7 @@ long needed = System.currentTimeMillis()- this.runtime; long minMilliSeconds = minExecutionTimeInSeconds *1000 ; if(minMilliSeconds<needed){ - logger.info("Minimum time reached, stopping when next solution is found"); + logger.info("Minimum time ("+minExecutionTimeInSeconds+" seconds) reached, stopping when next solution is found"); minExecutionTimeShown=true; return true;} else return false; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-24 08:43:22 UTC (rev 821) @@ -79,12 +79,14 @@ for (String ngu : endpoint.getNamedGraphURIs()) { queryExecution.addNamedGraph(ngu); } - logger.info("query SPARQL server"); + try{ //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; rs = queryExecution.execSelect(); + logger.debug("query SPARQL server, retrieved: "+rs.getResultVars()); json=SparqlQuery.getAsJSON(rs); + logger.trace(rs.getResultVars().toString()); } catch (Exception e){ sendException=new SparqlQueryException(e.getMessage()); Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-24 08:43:22 UTC (rev 821) @@ -1,5 +1,6 @@ package org.dllearner.scripts; +import java.net.URLEncoder; import java.util.SortedSet; import java.util.TreeSet; @@ -27,21 +28,22 @@ //vars boolean useRelated = true; boolean useSuperClasses = true; - int poslimit = 300; - int neglimit = 600; + int poslimit = 10; + int neglimit = 10; try { //System.out.println(logger.setLevel(TRACE)); - System.out.println(Level.DEBUG.getClass()); + /*System.out.println(Level.DEBUG.getClass()); System.out.println(Level.toLevel("INFO")); System.out.println(Level.INFO); - System.exit(0); + System.exit(0);*/ SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> negExamples = new TreeSet<String>(); String url = "http://dbpedia.openlinksw.com:8890/sparql"; @@ -57,10 +59,15 @@ System.out.println(posExamples); System.out.println(negExamples); //System.exit(0); + String concept = concepts.first().replace("http://dbpedia.org/resource/Category:", ""); + concept = concept.replace("http://dbpedia.org/class/yago/", ""); + String confname = URLEncoder.encode(concept, "UTF-8")+".conf"; + // + ConfWriter cf=new ConfWriter(); + cf.addToStats("relearned concept: "+concepts.first()); - - // - new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); + //"relearned concept: "; + cf.writeSPARQL(confname, posExamples, negExamples, url, new TreeSet<String>()); //new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); sc.printAndSet("Finished"); Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-24 08:43:22 UTC (rev 821) @@ -54,9 +54,13 @@ } private void makePositiveExamplesFromConcept(String concept){ + if(concept.contains("http://dbpedia.org/resource/Category:")) { + this.posExamples = new JenaResultSetConvenience(querySKOSConcept(concept,0)) + .getStringListForVariable("subject"); + }else { this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) .getStringListForVariable("subject"); - + } } @@ -154,7 +158,30 @@ return rs; } + + public ResultSet querySKOSConcept(String SKOSconcept,int limit) { + if(limit==0)limit=99999; + // + ResultSet rs = null; + try { + + String query = "SELECT * WHERE { \n " + + "?subject " + + "<http://www.w3.org/2004/02/skos/core#subject> " + + "<" + SKOSconcept + "> \n" + + "} LIMIT "+limit; + SparqlQuery sq = new SparqlQuery(query, se); + String JSON = c.executeSparqlQuery(sq); + //System.out.println(JSON); + rs = SparqlQuery.JSONtoResultSet(JSON); + } catch (Exception e) { + e.printStackTrace(); + } + + return rs; + } + public SortedSet<String> getPosExamples() { return posExamples; } Modified: trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-23 12:42:53 UTC (rev 820) +++ trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-24 08:43:22 UTC (rev 821) @@ -10,130 +10,136 @@ public class ConfWriter { - - public String workingDir="examples/stest/"; - - - public void writeROLLearnerOWLFileInd(String filename,SortedSet<Individual> pos,SortedSet<Individual> neg, - String owlFile, SortedSet<String> ignoredConcepts){ - - writeROLLearnerOWLFile( filename,toString( pos),toString( neg), - owlFile, ignoredConcepts); + StringBuffer stats = new StringBuffer("/**STATS:\n"); + + public String workingDir = "examples/stest/"; + + public void writeROLLearnerOWLFileInd(String filename, SortedSet<Individual> pos, + SortedSet<Individual> neg, String owlFile, SortedSet<String> ignoredConcepts) { + + writeROLLearnerOWLFile(filename, toString(pos), toString(neg), owlFile, ignoredConcepts); } - - public void writeROLLearnerOWLFile(String filename,SortedSet<String> pos,SortedSet<String> neg, - String owlFile, SortedSet<String> ignoredConcepts){ - + + public void writeROLLearnerOWLFile(String filename, SortedSet<String> pos, + SortedSet<String> neg, String owlFile, SortedSet<String> ignoredConcepts) { + String prefix = "refexamples"; StringBuffer buf = new StringBuffer(); buf.append("import(\"" + owlFile + "\");\n\n"); - - buf.append(getIgnoredConcepts(ignoredConcepts,prefix)); - + + buf.append(getIgnoredConcepts(ignoredConcepts, prefix)); + buf.append(getStandard(prefix)); - - buf.append( getPosAndNeg( pos, neg)); - - - writeToFile(filename, buf.toString()); - + + buf.append(getPosAndNeg(pos, neg)); + + stats.append(ignoredConcepts + "\n"); + stats.append("No of positive Examples: " + pos.size() + "\n"); + stats.append("No of negative Examples: " + neg.size() + "\n"); + stats.append("\n**/\n\n"); + + writeToFile(filename, stats.toString() + buf.toString()); + } - - public void writeSPARQL(String filename,SortedSet<String> pos,SortedSet<String> neg, - String uri, SortedSet<String> ignoredConcepts){ - - String prefixAlgortihm = "refexamples"; - String prefixSparql = "sparql"; - - String standardSettings="sparql.recursionDepth = 1;\n" + - "sparql.predefinedFilter = 1;\n" + - "sparql.predefinedEndpoint = 1;\n"; - //"sparql.format = \"KB\";\n\n"; - - StringBuffer buf = new StringBuffer(); - buf.append("import(\"" + uri + "\",\"SPARQL\");\n\n"); - - buf.append(standardSettings); - - buf.append(getIgnoredConcepts(ignoredConcepts,prefixAlgortihm)); - - buf.append(getStandard(prefixAlgortihm)); - - buf.append(sparqlInstances(pos, neg, prefixSparql)); - - buf.append( getPosAndNeg( pos, neg)); - - - writeToFile(filename, buf.toString()); - -} - - public String sparqlInstances(SortedSet<String> pos,SortedSet<String> neg,String prefix){ + + public void writeSPARQL(String filename, SortedSet<String> pos, SortedSet<String> neg, + String uri, SortedSet<String> ignoredConcepts) { + + String prefixAlgortihm = "refexamples"; + String prefixSparql = "sparql"; + + String standardSettings = + "sparql.recursionDepth = 1;\n" + + "sparql.predefinedFilter = 1;\n" + + "sparql.predefinedEndpoint = 1;\n" + + "refexamples.minExecutionTimeInSeconds = 10;\n" + + "refexamples.maxExecutionTimeInSeconds = 10;\n" + + "refexamples.logLevel=\"TRACE\";\n" ; + + + // "sparql.format = \"KB\";\n\n"; + + StringBuffer buf = new StringBuffer(); + buf.append("import(\"" + uri + "\",\"SPARQL\");\n\n"); + + buf.append(standardSettings); + buf.append(getIgnoredConcepts(ignoredConcepts, prefixAlgortihm)); + buf.append(getStandard(prefixAlgortihm)); + buf.append(sparqlInstances(pos, neg, prefixSparql)); + buf.append(getPosAndNeg(pos, neg)); + + stats.append(ignoredConcepts + "\n"); + stats.append("No of positive Examples: " + pos.size() + "\n"); + stats.append("No of negative Examples: " + neg.size() + "\n"); + stats.append("\n**/\n\n"); + + writeToFile(filename, stats.toString() + buf.toString()); + + } + + public String sparqlInstances(SortedSet<String> pos, SortedSet<String> neg, String prefix) { SortedSet<String> ret = new TreeSet<String>(); ret.addAll(pos); ret.addAll(neg); - + return getStringSet(ret, prefix, "instances"); - + } - - public String getPosAndNeg(SortedSet<String> pos,SortedSet<String> neg){ - StringBuffer buf = new StringBuffer(); - buf.append("\n\n"); - for (String individuals : pos) { - buf.append("+\"" + individuals + "\"\n"); - - } - buf.append("\n\n"); - for (String individuals : neg) { - - buf.append("-\"" + individuals + "\"\n"); - } - - return buf.toString(); + public String getPosAndNeg(SortedSet<String> pos, SortedSet<String> neg) { + StringBuffer buf = new StringBuffer(); + buf.append("\n\n"); + for (String individuals : pos) { + buf.append("+\"" + individuals + "\"\n"); + + } + buf.append("\n\n"); + for (String individuals : neg) { + + buf.append("-\"" + individuals + "\"\n"); + } + + return buf.toString(); } - - public String getIgnoredConcepts(SortedSet<String> ignoredConcepts,String prefix){ - return getStringSet(ignoredConcepts,prefix, "ignoredConcepts"); + public String getIgnoredConcepts(SortedSet<String> ignoredConcepts, String prefix) { + + return getStringSet(ignoredConcepts, prefix, "ignoredConcepts"); } - - public String getStringSet(SortedSet<String> set,String prefix, String type){ - if(set.size()==0)return "\n"; - String ret = prefix+"."+type+"={\n"; - int x=0; + + public String getStringSet(SortedSet<String> set, String prefix, String type) { + if (set.size() == 0) + return "\n"; + String ret = prefix + "." + type + "={\n"; + int x = 0; for (String string : set) { - if(x>0)ret+=","; - ret+="\""+string+"\"\n"; + if (x > 0) + ret += ","; + ret += "\"" + string + "\"\n"; x++; } - ret+="};\n"; + ret += "};\n"; return ret; } - - public String getStandard(String prefix){ - String ret = - "algorithm = "+prefix+";\n"+ - "reasoner=fastInstanceChecker;\n\n"+ - - prefix+".useAllConstructor = false;\n"+ - prefix+".useExistsConstructor = true;\n"+ - prefix+".useCardinalityRestrictions = false;\n"+ - prefix+".useNegation = false;\n"; - + + public String getStandard(String prefix) { + String ret = "algorithm = " + prefix + ";\n" + "reasoner=fastInstanceChecker;\n\n" + + + prefix + ".useAllConstructor = false;\n" + prefix + ".useExistsConstructor = true;\n" + + prefix + ".useCardinalityRestrictions = false;\n" + prefix + + ".useNegation = false;\n"; + return ret; - + } - - - protected void writeToFile(String filename, String content) { + + protected void writeToFile(String filename, String content) { // create the file we want to use - File file = new File(workingDir+filename); + File file = new File(workingDir + filename); try { file.createNewFile(); - FileOutputStream fos = new FileOutputStream(workingDir+filename, false); + FileOutputStream fos = new FileOutputStream(workingDir + filename, false); // ObjectOutputStream o = new ObjectOutputStream(fos); fos.write(content.getBytes()); fos.flush(); @@ -142,14 +148,17 @@ e.printStackTrace(); } } - - protected SortedSet<String> toString(SortedSet<Individual> set ){ + + protected SortedSet<String> toString(SortedSet<Individual> set) { SortedSet<String> ret = new TreeSet<String>(); for (Individual ind : set) { ret.add(ind.toString()); } return ret; } - - + + public void addToStats(String add) { + stats.append(add); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |