From: <ku...@us...> - 2008-04-22 17:29:31
|
Revision: 812 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=812&view=rev Author: kurzum Date: 2008-04-22 10:29:06 -0700 (Tue, 22 Apr 2008) Log Message: ----------- Script done, validation still needed, incorporated superclasses with negative examples made an extra class AutomaticExampleFinderSPARQL for reuse in ORE tool Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java Added Paths: ----------- 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/SetManipulation.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 17:29:06 UTC (rev 812) @@ -776,6 +776,7 @@ logger.debug(bestNodeString); logger.debug(startNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); logger.debug(bestNodeStringKBSyntax); + if(bestNode.getCoveredNegatives().size()<=3)logger.debug("covered negs: "+bestNode.getCoveredNegatives()); String expandedNodeString = "next expanded node: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); // searchTree += expandedNodeString + "\n"; logger.debug(expandedNodeString); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-22 17:29:06 UTC (rev 812) @@ -73,6 +73,13 @@ private long freshnessSeconds = 15 * 24 * 60 * 60; /** + * same ad Cache(String) default is "cache" + */ + public Cache() { + this("cache"); + } + + /** * Constructor for the cache itself. * * @param cacheDir Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-22 17:29:06 UTC (rev 812) @@ -6,7 +6,9 @@ import java.util.Stack; import java.util.TreeSet; +import org.apache.log4j.Logger; import org.dllearner.algorithms.gp.ADC; +import org.dllearner.core.ComponentManager; import org.dllearner.core.owl.DatatypeExactCardinalityRestriction; import org.dllearner.core.owl.DatatypeMaxCardinalityRestriction; import org.dllearner.core.owl.DatatypeMinCardinalityRestriction; @@ -37,7 +39,8 @@ */ public class SparqlQueryDescriptionConvertVisitor implements DescriptionVisitor{ - public static boolean debug_flag=false; + private static Logger logger = Logger.getLogger(ComponentManager.class); + private Stack<String> stack = new Stack<String>(); @@ -131,42 +134,42 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Negation) */ public void visit(Negation description) { - print("Negation"); + logger.trace("Negation"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectAllRestriction) */ public void visit(ObjectAllRestriction description) { - print("ObjectAllRestriction"); + logger.trace("ObjectAllRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectSomeRestriction) */ public void visit(ObjectSomeRestriction description) { - print("ObjectSomeRestriction"); + logger.trace("ObjectSomeRestriction"); query+="?"+stack.peek()+" <"+description.getRole()+"> ?object"+currentObject+"."; stack.push("object"+currentObject); currentObject++; description.getChild(0).accept(this); stack.pop(); - print(description.getRole().toString()); - print(description.getChild(0).toString()); + logger.trace(description.getRole().toString()); + logger.trace(description.getChild(0).toString()); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Nothing) */ public void visit(Nothing description) { - print("Nothing"); + logger.trace("Nothing"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Thing) */ public void visit(Thing description) { - print("Thing"); + logger.trace("Thing"); } @@ -174,7 +177,7 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Intersection) */ public void visit(Intersection description) { - print("Intersection"); + logger.trace("Intersection"); description.getChild(0).accept(this); query+="."; description.getChild(1).accept(this); @@ -185,7 +188,7 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Union) */ public void visit(Union description) { - print("Union"); + logger.trace("Union"); query+="{"; description.getChild(0).accept(this); query+="} UNION {"; @@ -197,42 +200,42 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMinCardinalityRestriction) */ public void visit(ObjectMinCardinalityRestriction description) { - print("ObjectMinCardinalityRestriction"); + logger.trace("ObjectMinCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectExactCardinalityRestriction) */ public void visit(ObjectExactCardinalityRestriction description) { - print("ObjectExactCardinalityRestriction"); + logger.trace("ObjectExactCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMaxCardinalityRestriction) */ public void visit(ObjectMaxCardinalityRestriction description) { - print("ObjectMaxCardinalityRestriction"); + logger.trace("ObjectMaxCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectValueRestriction) */ public void visit(ObjectValueRestriction description) { - print("ObjectValueRestriction"); + logger.trace("ObjectValueRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeValueRestriction) */ public void visit(DatatypeValueRestriction description) { - print("DatatypeValueRestriction"); + logger.trace("DatatypeValueRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.NamedClass) */ public void visit(NamedClass description) { - print("NamedClass"); + logger.trace("NamedClass"); query+="?"+stack.peek()+" a <"+description.getName()+">"; } @@ -240,44 +243,37 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.algorithms.gp.ADC) */ public void visit(ADC description) { - print("ADC"); + logger.trace("ADC"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMinCardinalityRestriction) */ public void visit(DatatypeMinCardinalityRestriction description) { - print("DatatypeMinCardinalityRestriction"); + logger.trace("DatatypeMinCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeExactCardinalityRestriction) */ public void visit(DatatypeExactCardinalityRestriction description) { - print("DatatypeExactCardinalityRestriction"); + logger.trace("DatatypeExactCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMaxCardinalityRestriction) */ public void visit(DatatypeMaxCardinalityRestriction description) { - print("DatatypeMaxCardinalityRestriction"); + logger.trace("DatatypeMaxCardinalityRestriction"); } /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeSomeRestriction) */ public void visit(DatatypeSomeRestriction description) { - print("DatatypeSomeRestriction"); + logger.trace("DatatypeSomeRestriction"); } - /** - * TODO should be replaced by logger.debug or sth like that - * @param str - */ - public void print(String str){ - if(debug_flag)System.out.println(str); - } } Copied: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java (from rev 810, trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-22 17:29:06 UTC (rev 812) @@ -0,0 +1,118 @@ +package org.dllearner.scripts; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.utilities.AutomaticExampleFinderSPARQL; +import org.dllearner.utilities.ConfWriter; +import org.dllearner.utilities.LearnSparql; +import org.dllearner.utilities.SimpleClock; + +public class SPARQLMassLearning { + + static Cache c; + static SparqlEndpoint se; + private static Logger logger = Logger.getRootLogger(); + /** + * @param args + */ + public static void main(String[] args) { + init(); + + //vars + boolean useRelated = true; + boolean useSuperClasses = true; + int poslimit = 50; + int neglimit = 100; + + + try { + + 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\""); + SortedSet<String> posExamples = new TreeSet<String>(); + SortedSet<String> negExamples = new TreeSet<String>(); + String url = "http://dbpedia.openlinksw.com:8890/sparql"; + //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); + //HashMap<String, String> result2 = new HashMap<String, String>(); + + AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + ae.init(concepts.first(), useRelated, useSuperClasses, poslimit, neglimit); + + posExamples = ae.getPosExamples(); + negExamples = ae.getNegExamples(); + + System.out.println(posExamples); + System.out.println(negExamples); + //System.exit(0); + + + // + new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); + new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); + + sc.printAndSet("Finished"); + } catch (Exception e) { + e.printStackTrace(); + + } + + } + + /*************************************************************************** + * *********************OLDCODE String + * conj="(\"http://dbpedia.org/class/yago/Person100007846\" AND + * \"http://dbpedia.org/class/yago/Head110162991\")"; + * + * + * concepts.add("EXISTS \"http://dbpedia.org/property/disambiguates\".TOP"); + * concepts.add("EXISTS + * \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); + * concepts.add("EXISTS \"http://dbpedia.org/property/successor\"."+conj); + * //concepts.add("ALL \"http://dbpedia.org/property/disambiguates\".TOP"); + * //concepts.add("ALL + * \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); + * concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); + * concepts.add(conj); + * concepts.add("(\"http://dbpedia.org/class/yago/Person100007846\" OR + * \"http://dbpedia.org/class/yago/Head110162991\")"); + * + * //concepts.add("NOT \"http://dbpedia.org/class/yago/Person100007846\""); + * + * for (String kbsyntax : concepts) { + * result.put(kbsyntax,queryConcept(kbsyntax)); } + * System.out.println("************************"); for (String string : + * result.keySet()) { System.out.println("KBSyntayString: "+string); + * System.out.println("Query:\n"+result.get(string).hasNext()); + * System.out.println("************************"); } + **************************************************************************/ + + + + + + public static void init() { + + se = SparqlEndpoint.dbpediaEndpoint(); + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + + + } + + + +} Deleted: trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java 2008-04-22 17:29:06 UTC (rev 812) @@ -1,176 +0,0 @@ -package org.dllearner.scripts; - -import java.util.Random; -import java.util.SortedSet; -import java.util.TreeSet; - -import javax.sound.midi.SysexMessage; - -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.apache.log4j.SimpleLayout; -import org.dllearner.kb.sparql.Cache; -import org.dllearner.kb.sparql.SparqlQuery; -import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; -import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.utilities.ConfWriter; -import org.dllearner.utilities.JenaResultSetConvenience; -import org.dllearner.utilities.LearnSparql; -import org.dllearner.utilities.SimpleClock; - -import com.hp.hpl.jena.query.ResultSet; - -public class SPARQLPreparation { - - static Cache c; - static SparqlEndpoint se; - private static Logger logger = Logger.getRootLogger(); - /** - * @param args - */ - public static void main(String[] args) { - init(); - try { - - - - 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\""); - SortedSet<String> posExamples = new TreeSet<String>(); - SortedSet<String> negExamples = new TreeSet<String>(); - String url = "http://dbpedia.openlinksw.com:8890/sparql"; - //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); - //HashMap<String, String> result2 = new HashMap<String, String>(); - - //System.out.println(concepts.first()); - posExamples = new JenaResultSetConvenience(queryConcept(concepts.first(),0)) - .getStringListForVariable("subject"); - - for (String string : posExamples) { - negExamples.addAll( getObjects(string)); - //if(neg.size()>=1)System.out.println(neg); - } - - /*for (String string2 : negExamples) { - if(posExamples.contains(string2)){ - System.out.println(string2); - negExamples.remove(string2); - }; - }*/ - //System.out.println(negExamples.size()); - negExamples.removeAll(posExamples); - posExamples=shrink(posExamples,5); - negExamples=shrink(negExamples,posExamples.size()); - //System.out.println(posExamples.first())); - //System.out.println(posExamples.size()); - //System.out.println(negExamples.size()); - - // - new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); - new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); - - sc.printAndSet("Finished"); - } catch (Exception e) { - e.printStackTrace(); - - } - - } - - /*************************************************************************** - * *********************OLDCODE String - * conj="(\"http://dbpedia.org/class/yago/Person100007846\" AND - * \"http://dbpedia.org/class/yago/Head110162991\")"; - * - * - * concepts.add("EXISTS \"http://dbpedia.org/property/disambiguates\".TOP"); - * concepts.add("EXISTS - * \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); - * concepts.add("EXISTS \"http://dbpedia.org/property/successor\"."+conj); - * //concepts.add("ALL \"http://dbpedia.org/property/disambiguates\".TOP"); - * //concepts.add("ALL - * \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); - * concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - * concepts.add(conj); - * concepts.add("(\"http://dbpedia.org/class/yago/Person100007846\" OR - * \"http://dbpedia.org/class/yago/Head110162991\")"); - * - * //concepts.add("NOT \"http://dbpedia.org/class/yago/Person100007846\""); - * - * for (String kbsyntax : concepts) { - * result.put(kbsyntax,queryConcept(kbsyntax)); } - * System.out.println("************************"); for (String string : - * result.keySet()) { System.out.println("KBSyntayString: "+string); - * System.out.println("Query:\n"+result.get(string).hasNext()); - * System.out.println("************************"); } - **************************************************************************/ - - static SortedSet<String> getObjects(String subject) { - // SortedSet<String> result = new TreeSet<String>(); - - String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" - + "FILTER (REGEX(str(?o), 'http://dbpedia.org/resource/')).\n" - + "FILTER (!REGEX(str(?p), 'http://www.w3.org/2004/02/skos'))\n" - + "}"; - //System.out.println(query); - String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); - //System.out.println(JSON); - ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); - JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); - return rsc.getStringListForVariable("o"); - } - - public static ResultSet queryConcept(String concept,int limit) { - ResultSet rs = null; - try { - String query = SparqlQueryDescriptionConvertVisitor - .getSparqlQuery(concept,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 static void init() { - SparqlQueryDescriptionConvertVisitor.debug_flag = false; - c = new Cache("cache"); - se = SparqlEndpoint.dbpediaEndpoint(); - // create logger (a simple logger which outputs - // its messages to the console) - SimpleLayout layout = new SimpleLayout(); - ConsoleAppender consoleAppender = new ConsoleAppender(layout); - logger.removeAllAppenders(); - logger.addAppender(consoleAppender); - logger.setLevel(Level.DEBUG); - - - } - - public static SortedSet<String> shrink(SortedSet<String> s, int limit) { - SortedSet<String> ret = new TreeSet<String>(); - Random r = new Random(); - double treshold = ((double)limit)/s.size(); - //System.out.println("treshold"+howmany); - //System.out.println("treshold"+allRetrieved.size()); - System.out.println("treshold"+treshold); - - for (String oneInd : s) { - if(r.nextDouble()<treshold) { - ret.add(oneInd); - - } - } - return ret; - } - -} Added: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-22 17:29:06 UTC (rev 812) @@ -0,0 +1,168 @@ +package org.dllearner.utilities; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.dllearner.core.ComponentManager; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; + +import com.hp.hpl.jena.query.ResultSet; + +public class AutomaticExampleFinderSPARQL { + + private static Logger logger = Logger + .getLogger(ComponentManager.class); + + private Cache c; + private SparqlEndpoint se; + private SortedSet<String> posExamples; + private SortedSet<String> negExamples; + + + public AutomaticExampleFinderSPARQL(SparqlEndpoint se){ + this.c=new Cache(); + this.se=se; + posExamples = new TreeSet<String>(); + negExamples = new TreeSet<String>(); + } + + public void init(String concept, boolean useRelated, boolean useSuperclasses, int poslimit, int neglimit) { + makePositiveExamplesFromConcept( concept); + SortedSet<String> keepForClean = new TreeSet<String>(); + keepForClean.addAll(this.posExamples); + this.posExamples = SetManipulation.fuzzyShrink(this.posExamples, poslimit); + + if(useRelated) { + dbpediaMakeNegativeExamplesFromRelatedInstances(this.posExamples); + } + if(useSuperclasses) { + dbpediaMakeNegativeExamplesFromSuperClasses(concept); + } + //clean + negExamples.removeAll(keepForClean); + this.negExamples = SetManipulation.fuzzyShrink(negExamples, neglimit); + logger.debug("Finished examples for concept :"+concept); + } + + public SortedSet<String> getPosOnly(String concept, int limit){ + makePositiveExamplesFromConcept( concept); + return SetManipulation.fuzzyShrink(this.posExamples, limit); + } + + private void makePositiveExamplesFromConcept(String concept){ + this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) + .getStringListForVariable("subject"); + + } + + + + + + private void dbpediaMakeNegativeExamplesFromRelatedInstances(SortedSet<String> subject) { + for (String string : subject) { + dbpediaMakeNegativeExamplesFromRelatedInstances(string); + } + } + + + /** + * + * @param subject + * @return + */ + private void dbpediaMakeNegativeExamplesFromRelatedInstances(String subject) { + // SortedSet<String> result = new TreeSet<String>(); + + String query = "SELECT * WHERE { \n" + "<" + subject + "> " + "?p ?o. \n" + + "FILTER (REGEX(str(?o), 'http://dbpedia.org/resource/')).\n" + + "FILTER (!REGEX(str(?p), 'http://www.w3.org/2004/02/skos'))\n" + + "}"; + + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); + this.negExamples.addAll(rsc.getStringListForVariable("o")); + + } + + + private void dbpediaMakeNegativeExamplesFromSuperClasses(String concept) { + + SortedSet<String> superClasses = new TreeSet<String>(); + superClasses.add(concept.replace("\"", "")); + //logger.debug("before"+superClasses); + superClasses = dbpediaGetSuperClasses( superClasses, 4); + logger.debug("getting negExamples from "+superClasses.size()+" superclasses"); + JenaResultSetConvenience rsc; + for (String oneSuperClass : superClasses) { + + rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", 0)); + this.negExamples.addAll(rsc.getStringListForVariable("subject")); + } + } + + private SortedSet<String> dbpediaGetSuperClasses(SortedSet<String> superClasses, int depth) { + SortedSet<String> ret = new TreeSet<String>(); + SortedSet<String> tmpset = new TreeSet<String>(); + ret.addAll(superClasses); + //logger.debug(superClasses); + JenaResultSetConvenience rsc; + + String query = ""; + for (; depth != 0 ; depth--) { + for (String oneSuperClass : superClasses) { + //logger.debug("one"+oneSuperClass); + //tmp = oneSuperClass.replace("\"", ""); + query = "SELECT * WHERE { \n" + "<" + oneSuperClass + "> " + + "<http://www.w3.org/2000/01/rdf-schema#subClassOf> ?superclass. \n" + + "}"; + String JSON = (c.executeSparqlQuery(new SparqlQuery(query, se))); + ResultSet rs =SparqlQuery.JSONtoResultSet(JSON); + rsc = new JenaResultSetConvenience(rs); + tmpset.addAll(rsc.getStringListForVariable("superclass")); + } + ret.addAll(tmpset); + //logger.debug(ret); + superClasses.clear(); + superClasses.addAll(tmpset); + tmpset.clear(); + } + //logger.debug(concept); + //logger.debug(query); + return ret; + } + + public ResultSet queryConcept(String concept,int limit) { + ResultSet rs = null; + try { + String query = SparqlQueryDescriptionConvertVisitor + .getSparqlQuery(concept,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; + } + + public SortedSet<String> getNegExamples() { + return negExamples; + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:15:27 UTC (rev 811) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:29:06 UTC (rev 812) @@ -12,7 +12,6 @@ import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.ReasoningService; -import org.dllearner.core.owl.Individual; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.learningproblems.PosNegLP; @@ -21,6 +20,7 @@ public class LearnSparql { + public void learn(SortedSet<String> posExamples,SortedSet<String> negExamples, String uri, SortedSet<String> ignoredConcepts){ @@ -58,8 +58,8 @@ lp = new PosNegDefinitionLP(rs); //cm.applyConfigEntry(lp, "positiveExamples",toInd(posExamples)); - ((PosNegLP) lp).setPositiveExamples(toInd(posExamples)); - ((PosNegLP) lp).setNegativeExamples(toInd(negExamples)); + ((PosNegLP) lp).setPositiveExamples(SetManipulation.stringToInd(posExamples)); + ((PosNegLP) lp).setNegativeExamples(SetManipulation.stringToInd(negExamples)); //cm.applyConfigEntry(lp, "negativeExamples",toInd(negExamples)); lp.init(); @@ -69,8 +69,9 @@ cm.applyConfigEntry(la,"useExistsConstructor",true); cm.applyConfigEntry(la,"useCardinalityRestrictions",false); cm.applyConfigEntry(la,"useNegation",false); - cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); - cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",20); + cm.applyConfigEntry(la,"minExecutionTimeInSeconds",100); + cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",100); + cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",1); //cm.applyConfigEntry(la,"quiet",false); if(ignoredConcepts.size()>0) @@ -81,18 +82,12 @@ la.start(); //System.out.println("best"+la(20)); - ((ExampleBasedROLComponent)la).printBestSolutions(20); + ((ExampleBasedROLComponent)la).printBestSolutions(200); }catch (Exception e) {e.printStackTrace();} //System.out.println( la.getBestSolution());; } - protected SortedSet<Individual> toInd(SortedSet<String> set ){ - SortedSet<Individual> ret = new TreeSet<Individual>(); - for (String ind : set) { - ret.add(new Individual(ind)); - } - return ret; - } + } Added: trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/SetManipulation.java 2008-04-22 17:29:06 UTC (rev 812) @@ -0,0 +1,43 @@ +package org.dllearner.utilities; + +import java.util.Random; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.core.owl.Individual; + +public class SetManipulation { + + + /** + * shrinks a set to the limit + * size will be roughly the same as limit, but can be more or less a bit + * @param set + * @param limit + * @return + */ + public static SortedSet<String> fuzzyShrink(SortedSet<String> set, int limit) { + SortedSet<String> ret = new TreeSet<String>(); + Random r = new Random(); + double treshold = ((double)limit)/set.size(); + //System.out.println("treshold"+howmany); + //System.out.println("treshold"+allRetrieved.size()); + //System.out.println("treshold"+treshold); + + for (String oneInd : set) { + if(r.nextDouble()<treshold) { + ret.add(oneInd); + + } + } + return ret; + } + + public static SortedSet<Individual> stringToInd(SortedSet<String> set ){ + SortedSet<Individual> ret = new TreeSet<Individual>(); + for (String ind : set) { + ret.add(new Individual(ind)); + } + return ret; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |