You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(120) |
Sep
(36) |
Oct
(116) |
Nov
(17) |
Dec
(44) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(143) |
Feb
(192) |
Mar
(74) |
Apr
(84) |
May
(105) |
Jun
(64) |
Jul
(49) |
Aug
(120) |
Sep
(159) |
Oct
(156) |
Nov
(51) |
Dec
(28) |
2009 |
Jan
(17) |
Feb
(55) |
Mar
(33) |
Apr
(57) |
May
(54) |
Jun
(28) |
Jul
(6) |
Aug
(16) |
Sep
(38) |
Oct
(30) |
Nov
(26) |
Dec
(52) |
2010 |
Jan
(7) |
Feb
(91) |
Mar
(65) |
Apr
(2) |
May
(14) |
Jun
(25) |
Jul
(38) |
Aug
(48) |
Sep
(80) |
Oct
(70) |
Nov
(75) |
Dec
(77) |
2011 |
Jan
(68) |
Feb
(53) |
Mar
(51) |
Apr
(35) |
May
(65) |
Jun
(101) |
Jul
(29) |
Aug
(230) |
Sep
(95) |
Oct
(49) |
Nov
(110) |
Dec
(63) |
2012 |
Jan
(41) |
Feb
(42) |
Mar
(25) |
Apr
(46) |
May
(51) |
Jun
(44) |
Jul
(45) |
Aug
(29) |
Sep
(12) |
Oct
(9) |
Nov
(17) |
Dec
(2) |
2013 |
Jan
(12) |
Feb
(14) |
Mar
(7) |
Apr
(16) |
May
(54) |
Jun
(27) |
Jul
(11) |
Aug
(5) |
Sep
(85) |
Oct
(27) |
Nov
(37) |
Dec
(32) |
2014 |
Jan
(8) |
Feb
(29) |
Mar
(5) |
Apr
(3) |
May
(22) |
Jun
(3) |
Jul
(4) |
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <ku...@us...> - 2008-04-25 14:34:12
|
Revision: 827 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=827&view=rev Author: kurzum Date: 2008-04-25 07:33:54 -0700 (Fri, 25 Apr 2008) Log Message: ----------- intermediate commit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.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-25 10:48:36 UTC (rev 826) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-25 14:33:54 UTC (rev 827) @@ -413,17 +413,17 @@ logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); logger.info("\nsolutions ( top 5 ):"); int show=1; + String manchester="MANCHESTER:\n"; + String KBSyntax="KBSyntax:\n"; for(Description c : solutions) { logger.info(show+": " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); - //TODO remove this line maybe // watch for String.replace Quick hack - logger.info(" MANCHESTER: " + - c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()). - replace("\"", "")); - logger.info(" KBSyntax: " + c.toKBSyntaxString()); - if(show>=5){break;} - show++; + manchester+=show+": "+c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()).replace("\"", "")+"\n"; + KBSyntax+=show+": " + c.toKBSyntaxString()+"\n"; + if(show>=5){break;} show++; } + logger.debug(manchester); + logger.debug(KBSyntax); } logger.debug("size of candidate set: " + candidates.size()); Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-25 10:48:36 UTC (rev 826) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-25 14:33:54 UTC (rev 827) @@ -31,15 +31,15 @@ boolean useRelated = false; boolean useSuperClasses = false; boolean useParallelClasses = true; - int poslimit = 15; - int neglimit = 200; + int poslimit = 10; + int neglimit = 20; try { //logger.setLevel(Level.TRACE); - Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.TRACE); - System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); + Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.INFO); + //System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); /*System.out.println(Level.DEBUG.getClass()); System.out.println(Level.toLevel("INFO")); @@ -49,11 +49,12 @@ //concepts.add("(EXISTS \"monarch\".TOP AND EXISTS \"predecessor\".(\"Knight\" OR \"Secretary\"))"); SortedSet<String> concepts = new TreeSet<String>(); - //concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); + concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); //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"); //concepts.add("http://dbpedia.org/resource/Category:Grammy_Award_winners"); + //concepts.add("EXISTS \"http://dbpedia.org/property/grammyawards\".TOP"); SortedSet<String> posExamples = new TreeSet<String>(); SortedSet<String> negExamples = new TreeSet<String>(); @@ -78,6 +79,7 @@ //System.exit(0); String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); tmp = tmp.replace("http://dbpedia.org/class/yago/", ""); + tmp = tmp.replace("http://dbpedia.org/property/", ""); String confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; // ConfWriter cf=new ConfWriter(); Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-25 10:48:36 UTC (rev 826) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-25 14:33:54 UTC (rev 827) @@ -189,7 +189,7 @@ SparqlQuery sq = new SparqlQuery(query, se); String JSON = c.executeSparqlQuery(sq); - //System.out.println(JSON); + //System.out.println("JSON:\n"+JSON); rs = SparqlQuery.JSONtoResultSet(JSON); } catch (Exception e) { Modified: trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-25 10:48:36 UTC (rev 826) +++ trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-25 14:33:54 UTC (rev 827) @@ -54,6 +54,7 @@ "sparql.predefinedEndpoint = \"DBPEDIA\";\n" + "refexamples.minExecutionTimeInSeconds = 30;\n" + "refexamples.maxExecutionTimeInSeconds = 30;\n" + + "//refexamples.guaranteeXgoodDescriptions = 10;\n" + "refexamples.logLevel=\"TRACE\";\n" + "refexamples.noisePercentage = 0.10;\n" + "refexamples.writeSearchTree = true;\n" + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-25 10:48:48
|
Revision: 826 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=826&view=rev Author: kurzum Date: 2008-04-25 03:48:36 -0700 (Fri, 25 Apr 2008) Log Message: ----------- added string for testing Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-25 10:47:06 UTC (rev 825) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-25 10:48:36 UTC (rev 826) @@ -160,6 +160,7 @@ s.add(conj); s.add("(\"http://dbpedia.org/class/yago/Person100007846\" OR \"http://dbpedia.org/class/yago/Head110162991\")"); s.add("NOT \"http://dbpedia.org/class/yago/Person100007846\""); + s.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); for (String kbsyntax : s) { result.put(kbsyntax,SparqlQueryDescriptionConvertVisitor.getSparqlQuery(kbsyntax)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-25 10:47:21
|
Revision: 825 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=825&view=rev Author: kurzum Date: 2008-04-25 03:47:06 -0700 (Fri, 25 Apr 2008) Log Message: ----------- hacked double point .. bug see http://sourceforge.net/tracker/index.php?func=detail&aid=1951521&group_id=203619&atid=986319 Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-25 09:28:21 UTC (rev 824) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-25 10:47:06 UTC (rev 825) @@ -94,7 +94,13 @@ Description d = KBParser.parseConcept(description); SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); d.accept(visitor); - return visitor.getSparqlQuery(); + + //TODO ERROR see replace HACK + String ret = visitor.getSparqlQuery(); + while (ret.contains("..")) { + ret = ret.replace("..", "."); + } + return ret; } public static String getSparqlQuery(String description, int limit) throws ParseException @@ -102,7 +108,12 @@ Description d = KBParser.parseConcept(description); SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); d.accept(visitor); - return visitor.getSparqlQuery(limit); + //TODO ERROR see replace HACK + String ret = visitor.getSparqlQuery(limit); + while (ret.contains("..")) { + ret = ret.replace("..", "."); + } + return ret; } /** @@ -213,6 +224,8 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Intersection) */ public void visit(Intersection description) { + //TODO ERROR see replace HACK + 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: <ku...@us...> - 2008-04-25 09:28:26
|
Revision: 824 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=824&view=rev Author: kurzum Date: 2008-04-25 02:28:21 -0700 (Fri, 25 Apr 2008) Log Message: ----------- applied new options Modified Paths: -------------- trunk/examples/sparql/Aristotle.conf trunk/examples/sparql/DBPediaYAGOWomanInPolitics.conf trunk/examples/sparql/SilentBobWorking1.conf trunk/examples/sparql/SilentBobWorking2.conf trunk/examples/sparql/difference/DBPediaSKOS_kohl_vs_angela.conf trunk/examples/sparql/difference/DifferenceDBPediaYAGO_angela_vs_hillary.conf trunk/examples/sparql/difference/DifferenceDBPediaYAGO_angela_vs_hillary_ignoredConcepts.conf trunk/examples/sparql/difference/DifferenceDBPediaYAGO_hillary_vs_angela.conf trunk/examples/sparql/difference/DifferenceDBPediaYAGO_hillary_vs_angela_ignoredConcepts.conf trunk/examples/sparql/hierarchy/Hierarchy0DBPediaYAGOChanBrit_monarch.conf trunk/examples/sparql/hierarchy/Hierarchy1DBPediaYAGOChanBrit_pred_Knight.conf trunk/examples/sparql/navigation/Navigation0DBPediaYAGOAristotle.conf trunk/examples/sparql/navigation/Navigation1DBPediaYAGOAristotle.conf trunk/examples/sparql/navigation/Navigation2DBPediaYAGOAristotle.conf Modified: trunk/examples/sparql/Aristotle.conf =================================================================== --- trunk/examples/sparql/Aristotle.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/Aristotle.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -11,10 +11,9 @@ sparql.recursionDepth = 1; //predefined filter (1 = YAGO based learning) -sparql.predefinedFilter = 5; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); sparql.instances = { Modified: trunk/examples/sparql/DBPediaYAGOWomanInPolitics.conf =================================================================== --- trunk/examples/sparql/DBPediaYAGOWomanInPolitics.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/DBPediaYAGOWomanInPolitics.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -20,11 +20,10 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 5; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); sparql.instances = { Modified: trunk/examples/sparql/SilentBobWorking1.conf =================================================================== --- trunk/examples/sparql/SilentBobWorking1.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/SilentBobWorking1.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -12,11 +12,10 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 5; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - // use DBpedia endpoint import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); Modified: trunk/examples/sparql/SilentBobWorking2.conf =================================================================== --- trunk/examples/sparql/SilentBobWorking2.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/SilentBobWorking2.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -12,11 +12,10 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 5; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - // use DBpedia endpoint import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); Modified: trunk/examples/sparql/difference/DBPediaSKOS_kohl_vs_angela.conf =================================================================== --- trunk/examples/sparql/difference/DBPediaSKOS_kohl_vs_angela.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/difference/DBPediaSKOS_kohl_vs_angela.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -70,8 +70,9 @@ //manually after retrieving the specified amount of classes sparql.breakSuperClassRetrievalAfter=200; -sparql.predefinedEndpoint = 1; +sparql.predefinedEndpoint = "DBPEDIA"; + // use DBpedia endpoint import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); Modified: trunk/examples/sparql/difference/DifferenceDBPediaYAGO_angela_vs_hillary.conf =================================================================== --- trunk/examples/sparql/difference/DifferenceDBPediaYAGO_angela_vs_hillary.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/difference/DifferenceDBPediaYAGO_angela_vs_hillary.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -25,10 +25,9 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 1; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - // use DBpedia endpoint import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); Modified: trunk/examples/sparql/difference/DifferenceDBPediaYAGO_angela_vs_hillary_ignoredConcepts.conf =================================================================== --- trunk/examples/sparql/difference/DifferenceDBPediaYAGO_angela_vs_hillary_ignoredConcepts.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/difference/DifferenceDBPediaYAGO_angela_vs_hillary_ignoredConcepts.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -41,10 +41,9 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 1; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - // use DBpedia endpoint import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); Modified: trunk/examples/sparql/difference/DifferenceDBPediaYAGO_hillary_vs_angela.conf =================================================================== --- trunk/examples/sparql/difference/DifferenceDBPediaYAGO_hillary_vs_angela.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/difference/DifferenceDBPediaYAGO_hillary_vs_angela.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -14,10 +14,9 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 1; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - // use DBpedia endpoint import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); Modified: trunk/examples/sparql/difference/DifferenceDBPediaYAGO_hillary_vs_angela_ignoredConcepts.conf =================================================================== --- trunk/examples/sparql/difference/DifferenceDBPediaYAGO_hillary_vs_angela_ignoredConcepts.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/difference/DifferenceDBPediaYAGO_hillary_vs_angela_ignoredConcepts.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -53,11 +53,10 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 1; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - // use DBpedia endpoint import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); Modified: trunk/examples/sparql/hierarchy/Hierarchy0DBPediaYAGOChanBrit_monarch.conf =================================================================== --- trunk/examples/sparql/hierarchy/Hierarchy0DBPediaYAGOChanBrit_monarch.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/hierarchy/Hierarchy0DBPediaYAGOChanBrit_monarch.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -31,10 +31,9 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 1; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); sparql.instances={"http://dbpedia.org/resource/Tony_Blair" Modified: trunk/examples/sparql/hierarchy/Hierarchy1DBPediaYAGOChanBrit_pred_Knight.conf =================================================================== --- trunk/examples/sparql/hierarchy/Hierarchy1DBPediaYAGOChanBrit_pred_Knight.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/hierarchy/Hierarchy1DBPediaYAGOChanBrit_pred_Knight.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -22,9 +22,9 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 1; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); sparql.instances = { Modified: trunk/examples/sparql/navigation/Navigation0DBPediaYAGOAristotle.conf =================================================================== --- trunk/examples/sparql/navigation/Navigation0DBPediaYAGOAristotle.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/navigation/Navigation0DBPediaYAGOAristotle.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -26,11 +26,10 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 1; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); sparql.instances = { Modified: trunk/examples/sparql/navigation/Navigation1DBPediaYAGOAristotle.conf =================================================================== --- trunk/examples/sparql/navigation/Navigation1DBPediaYAGOAristotle.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/navigation/Navigation1DBPediaYAGOAristotle.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -25,10 +25,9 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 1; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); sparql.instances = { Modified: trunk/examples/sparql/navigation/Navigation2DBPediaYAGOAristotle.conf =================================================================== --- trunk/examples/sparql/navigation/Navigation2DBPediaYAGOAristotle.conf 2008-04-25 09:28:05 UTC (rev 823) +++ trunk/examples/sparql/navigation/Navigation2DBPediaYAGOAristotle.conf 2008-04-25 09:28:21 UTC (rev 824) @@ -14,11 +14,10 @@ //predefined filter (1 = YAGO based learning) // 2 = SKOS, more Options are needed then though. replacePredicate, breakSuperClassRetrievalAfter -sparql.predefinedFilter = 1; +sparql.predefinedFilter = "YAGO"; +sparql.predefinedEndpoint = "DBPEDIA"; -sparql.predefinedEndpoint = 1; - import("http://dbpedia.openlinksw.com:8890/sparql","SPARQL"); sparql.instances = { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-25 09:28:13
|
Revision: 823 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=823&view=rev Author: kurzum Date: 2008-04-25 02:28:05 -0700 (Fri, 25 Apr 2008) Log Message: ----------- some changes mostly options and output 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/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-25 09:28:05 UTC (rev 823) @@ -777,7 +777,7 @@ // searchTree += bestNodeString + "\n"; logger.debug(bestNodeString); - logger.trace(startNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); + logger.trace(bestNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); logger.debug(bestNodeStringKBSyntax); if(bestNode.getCoveredNegatives().size()<=5)logger.trace("covered negs: "+bestNode.getCoveredNegatives()); String expandedNodeString = "next expanded node: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); @@ -1035,10 +1035,10 @@ return ; i++; } - for (int j = 0; j < solutions.size(); j++) { + /*for (int j = 0; j < solutions.size(); j++) { Description d = solutions.get(j); logger.trace(d.toString()); - } + }*/ } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-25 09:28:05 UTC (rev 823) @@ -220,6 +220,7 @@ public String executeSparqlQuery(SparqlQuery query) { String result = getCacheEntry(query.getQueryString()); if (result != null) { + logger.trace("got from cache"); return result; } else { query.send(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-25 09:28:05 UTC (rev 823) @@ -106,10 +106,11 @@ } HashSet<String> hadAlready = new HashSet<String>(); - logger.info("Get all superclasses"); + //p(configuration.toString()); // gets All Class Nodes and expands them further if (this.configuration.isGetAllSuperClasses()) { + logger.info("Get all superclasses"); // Set<Node> classes = new TreeSet<Node>(); Vector<Node> classes = new Vector<Node>(); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-04-25 09:28:05 UTC (rev 823) @@ -60,14 +60,17 @@ */ public class SparqlKnowledgeSource extends KnowledgeSource { + //DEFAULTS + static int recursionDepthDefault = 1; + // ConfigOptions public URL url; // String host; private Set<String> instances = new HashSet<String>();; private URL dumpFile; - private int recursionDepth = 1; - private int predefinedFilter = 0; - private int predefinedEndpoint = 0; + private int recursionDepth = recursionDepthDefault; + private String predefinedFilter = null; + private String predefinedEndpoint = null; private Set<String> predList = new HashSet<String>(); private Set<String> objList = new HashSet<String>(); // private Set<String> classList; @@ -123,11 +126,11 @@ .add(new StringSetConfigOption("instances", "relevant instances e.g. positive and negative examples in a learning problem")); options.add(new IntegerConfigOption("recursionDepth", - "recursion depth of KB fragment selection", 2)); - options.add(new IntegerConfigOption("predefinedFilter", - "the mode of the SPARQL Filter")); - options.add(new IntegerConfigOption("predefinedEndpoint", - "the mode of the SPARQL Filter")); + "recursion depth of KB fragment selection", recursionDepthDefault)); + options.add(new StringConfigOption("predefinedFilter", + "the mode of the SPARQL Filter, use one of YAGO,SKOS,YAGOSKOS , YAGOSPECIALHIERARCHY, TEST")); + options.add(new StringConfigOption("predefinedEndpoint", + "the mode of the SPARQL Filter, use one of DBPEDIA, LOCAL, GOVTRACK, REVYU, MYOPENLINK, FACTBOOK")); options.add(new StringSetConfigOption("predList", "list of all ignored roles")); @@ -207,9 +210,9 @@ // } else if (option.equals("classList")) { // classList = (Set<String>) entry.getValue(); } else if (option.equals("predefinedEndpoint")) { - predefinedEndpoint = (Integer) entry.getValue(); + predefinedEndpoint = ((String) entry.getValue()).toUpperCase(); } else if (option.equals("predefinedFilter")) { - predefinedFilter = (Integer) entry.getValue(); + predefinedFilter = ((String) entry.getValue()).toUpperCase(); } else if (option.equals("format")) { format = (String) entry.getValue(); } else if (option.equals("dumpToFile")) { @@ -285,8 +288,9 @@ breakSuperClassRetrievalAfter, replacePredicate, replaceObject); // get Options for endpoints - if (predefinedEndpoint >= 1) { - endpoint = SparqlEndpoint.getEndpointByNumber(predefinedEndpoint); + if (predefinedEndpoint != null) { + //endpoint = SparqlEndpoint.getEndpointByNumber(predefinedEndpoint); + endpoint = SparqlEndpoint.getEndpointByName(predefinedEndpoint); } else { // TODO this is not optimal, because not all options are used // like default-graph uri @@ -295,9 +299,9 @@ // get Options for Filters - if (predefinedFilter >= 1) { + if (predefinedFilter != null) { sparqlQueryType = SparqlQueryType - .getFilterByNumber(predefinedFilter); + .getFilterByName(predefinedFilter); } else { sparqlQueryType = new SparqlQueryType("forbid", objList, predList, Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-25 09:28:05 UTC (rev 823) @@ -43,6 +43,7 @@ private static Logger logger = Logger.getLogger(SparqlKnowledgeSource.class); + public String extraDebugInfo = ""; private boolean isRunning = false; private String queryString; private QueryEngineHTTP queryExecution; @@ -65,6 +66,7 @@ * Sends a SPARQL query using the Jena library. */ public ResultSet send() { + isRunning = true; ResultSet rs=null; logger.trace(queryString); @@ -84,7 +86,8 @@ //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; rs = queryExecution.execSelect(); - logger.debug("query SPARQL server, retrieved: "+rs.getResultVars()); + + logger.debug("query SPARQL server ["+extraDebugInfo+"], retrieved: "+rs.getResultVars()); json=SparqlQuery.getAsJSON(rs); logger.trace(rs.getResultVars().toString()); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-25 09:28:05 UTC (rev 823) @@ -38,6 +38,10 @@ * */ public class SparqlQueryDescriptionConvertVisitor implements DescriptionVisitor{ + + //private SparqlEndpoint se = null; + //private boolean RDFSReasoning = false; + private static Logger logger = Logger.getLogger(ComponentManager.class); @@ -53,6 +57,13 @@ stack.push("subject"); } + /*public SparqlQueryDescriptionConvertVisitor(SparqlEndpoint se, boolean RDFSReasoning) + { + stack.push("subject"); + this.se = se; + this.RDFSReasoning = RDFSReasoning; + }*/ + public String getSparqlQuery() { query="SELECT ?subject\nWHERE {"+query; @@ -69,6 +80,15 @@ return query; } + public static String getSparqlSubclassQuery(String description) + { String ret = "SELECT ?subject \n"; + ret+= "WHERE {\n"; + ret+=" ?subject <http://www.w3.org/2000/01/rdf-schema#subClassOf> <"+description+"> \n"; + ret+="}\n"; + + return ret; + } + public static String getSparqlQuery(String description) throws ParseException { Description d = KBParser.parseConcept(description); @@ -85,6 +105,22 @@ return visitor.getSparqlQuery(limit); } + /** + * includes subclasses, costly function, because subclasses habe to be recieved first. + * @param description + * @param limit + * @param se + * @return + * @throws ParseException + */ + /*public static String getSparqlQueryIncludingSubclasses(String description, int limit, SparqlEndpoint se) throws ParseException + { if(limit==0)limit=99999; + Description d = KBParser.parseConcept(description); + SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(se, true); + d.accept(visitor); + return visitor.getSparqlQuery(limit); + }*/ + public static String getSparqlQuery(Description description) { SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); @@ -235,9 +271,12 @@ * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.NamedClass) */ public void visit(NamedClass description) { + logger.trace("NamedClass"); query+="?"+stack.peek()+" a <"+description.getName()+">"; } + + /* (non-Javadoc) * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.algorithms.gp.ADC) Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQuery.java 2008-04-25 09:28:05 UTC (rev 823) @@ -87,6 +87,7 @@ // .getSparqlEndpoint(), cache, uri.toString(), sparqlQueryString); SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint()); + query.extraDebugInfo=uri.toString(); ResultSet rs = SparqlQuery.JSONtoResultSet(cache.executeSparqlQuery(query)); List<ResultBinding> l = ResultSetFormatter.toList(rs); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/TypedSparqlQueryClasses.java 2008-04-25 09:28:05 UTC (rev 823) @@ -64,6 +64,7 @@ + "}"; SparqlQuery query = new SparqlQuery(sparqlQueryString, configuration.getSparqlEndpoint()); + query.extraDebugInfo=uri.toString(); ResultSet rs = SparqlQuery.JSONtoResultSet(cache.executeSparqlQuery(query)); List<ResultBinding> l = ResultSetFormatter.toList(rs); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlEndpoint.java 2008-04-25 09:28:05 UTC (rev 823) @@ -61,7 +61,7 @@ return namedGraphURIs; } - public static SparqlEndpoint getEndpointByNumber(int i) { + /*public static SparqlEndpoint getEndpointByNumber(int i) { switch (i) { case 0:break; @@ -80,6 +80,25 @@ return worldFactBook(); } return null; + }*/ + + public static SparqlEndpoint getEndpointByName(String name) { + + + + if (name.equals("DBPEDIA")) + return dbpediaEndpoint(); + if (name.equals("LOCALJOSECKI")) + return localJoseki(); + if (name.equals("GOVTRACK")) + return govTrack(); + if (name.equals("REVYU")) + return revyu(); + if (name.equals("MYOPENLINK")) + return myopenlink(); + if (name.equals("FACTBOOK")) + return worldFactBook(); + return null; } public static SparqlEndpoint dbpediaEndpoint() { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java 2008-04-25 09:28:05 UTC (rev 823) @@ -65,22 +65,20 @@ //System.out.println("added filter: "+filter); } - public static SparqlQueryType getFilterByNumber(int i) { - - switch (i) { - case 0:break; - //should not be filled - case 1: + public static SparqlQueryType getFilterByName(String name) { + + + if (name.equals("YAGO")) return YagoFilter(); - case 2: + if (name.equals("SKOS")) return SKOS(); - case 3: + if (name.equals("YAGOSKOS")) return YAGOSKOS(); - case 4: + if (name.equals("YAGOSPECIALHIERARCHY")) return YagoSpecialHierarchy(); - case 5: + if (name.equals("TEST")) return test(); - } + return null; } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-25 09:28:05 UTC (rev 823) @@ -9,6 +9,8 @@ import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; import org.dllearner.utilities.AutomaticExampleFinderSPARQL; import org.dllearner.utilities.ConfWriter; @@ -26,32 +28,47 @@ init(); //vars - boolean useRelated = true; - boolean useSuperClasses = true; - int poslimit = 10; - int neglimit = 10; + boolean useRelated = false; + boolean useSuperClasses = false; + boolean useParallelClasses = true; + int poslimit = 15; + int neglimit = 200; + try { - - //System.out.println(logger.setLevel(TRACE)); + //logger.setLevel(Level.TRACE); + Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.TRACE); + System.out.println(Logger.getLogger(SparqlQuery.class).getLevel()); + /*System.out.println(Level.DEBUG.getClass()); System.out.println(Level.toLevel("INFO")); - System.out.println(Level.INFO); - System.exit(0);*/ + System.out.println(Level.INFO);*/ + //System.exit(0); SimpleClock sc=new SimpleClock(); + //concepts.add("(EXISTS \"monarch\".TOP AND EXISTS \"predecessor\".(\"Knight\" OR \"Secretary\"))"); + SortedSet<String> concepts = new TreeSet<String>(); + //concepts.add("(\"http://dbpedia.org/class/yago/HeadOfState110164747\" AND (\"http://dbpedia.org/class/yago/Negotiator110351874\" AND \"http://dbpedia.org/class/yago/Representative110522035\"))"); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); - //concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); - concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); + concepts.add("\"http://dbpedia.org/class/yago/FieldMarshal110086821\""); + //concepts.add("http://dbpedia.org/resource/Category:Prime_Ministers_of_the_United_Kingdom"); + //concepts.add("http://dbpedia.org/resource/Category:Grammy_Award_winners"); + 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()); + //logger.setLevel(Level.TRACE); + AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); + //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject") );; + //System.out.println(new JenaResultSetConvenience(ae.queryConcept(concepts.first(), 0)).getStringListForVariable("?subject").size() );; + //ae.getSubClasses(concepts.first()); + //System.exit(0); - AutomaticExampleFinderSPARQL ae= new AutomaticExampleFinderSPARQL( se); - ae.init(concepts.first(), useRelated, useSuperClasses, poslimit, neglimit); + ae.init(concepts.first(), useRelated, useSuperClasses,useParallelClasses, poslimit, neglimit); posExamples = ae.getPosExamples(); negExamples = ae.getNegExamples(); @@ -59,13 +76,14 @@ 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"; + String tmp = concepts.first().replace("http://dbpedia.org/resource/Category:", "").replace("\"",""); + tmp = tmp.replace("http://dbpedia.org/class/yago/", ""); + String confname = URLEncoder.encode(tmp, "UTF-8")+".conf"; // ConfWriter cf=new ConfWriter(); cf.addToStats("relearned concept: "+concepts.first()); + //System.exit(0); //"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>()); Added: trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/SparqlEndpointTest.java 2008-04-25 09:28:05 UTC (rev 823) @@ -0,0 +1,85 @@ +package org.dllearner.test; + +import java.util.HashSet; +import java.util.Set; + +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.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.kb.sparql.configuration.SparqlEndpoint; +import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.SimpleClock; + +import com.hp.hpl.jena.query.ResultSet; + +public class SparqlEndpointTest { + private static Logger logger = Logger.getRootLogger(); + static Set<String> working = new HashSet<String>(); + static Set<String> notworking = new HashSet<String>(); + + public static void main(String[] args) { + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + Logger.getLogger(SparqlKnowledgeSource.class).setLevel(Level.INFO); + + + + Set<SparqlEndpoint> set = new HashSet<SparqlEndpoint>(); + set.add(SparqlEndpoint.dbpediaEndpoint()); + set.add(SparqlEndpoint.govTrack()); + set.add(SparqlEndpoint.localJoseki()); + set.add(SparqlEndpoint.myopenlink()); + set.add(SparqlEndpoint.worldFactBook()); + set.add(SparqlEndpoint.revyu()); + + + int i=1; + for (SparqlEndpoint sparqlEndpoint : set) { + testEndPoint(sparqlEndpoint); + logger.info("finished "+i+" of "+set.size()); + i++; + } + logger.info("**************"); + for (String str : working) { + logger.info(str); + } + for (String str : notworking) { + logger.info(str); + + } + //set.add(SparqlEndpoint.); + + } + + + public static void testEndPoint(SparqlEndpoint se) { + SimpleClock sc = new SimpleClock(); + try{ + + String query ="" + + "SELECT DISTINCT ?c " + + "WHERE {[] a ?c }" + + "LIMIT 100"; + + query ="SELECT DISTINCT ?c WHERE {[] a ?c }LIMIT 100"; + + SparqlQuery s = new SparqlQuery(query,se); + + s.send(); + String result = s.getResult(); + ResultSet rs = SparqlQuery.JSONtoResultSet(result); + + JenaResultSetConvenience jsr = new JenaResultSetConvenience(rs); + int i = jsr.getStringListForVariable("c").size(); + + working.add(sc.getAndSet("endpoint working: "+se.getURL()+" ("+((i==100)?"more than 100 concepts":"about "+i+" concepts")+" )")); + }catch (Exception e) {notworking.add(sc.getAndSet("endpoint NOT working: "+se.getURL()));} + } + +} Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-04-25 09:28:05 UTC (rev 823) @@ -49,7 +49,7 @@ URI u2 = new URI("http://dbpedia.org/resource/Angela_Merkel"); m.useConfiguration( - SparqlQueryType.getFilterByNumber(1),SparqlEndpoint.getEndpointByNumber(1), + SparqlQueryType.getFilterByName("DBPEDIA"),SparqlEndpoint.getEndpointByName("YAGO"), new Manipulator("",200,new LinkedList<StringTuple>(),new LinkedList<StringTuple>()), 1,true,true); //, , Modified: trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/utilities/AutomaticExampleFinderSPARQL.java 2008-04-25 09:28:05 UTC (rev 823) @@ -30,11 +30,12 @@ negExamples = new TreeSet<String>(); } - public void init(String concept, boolean useRelated, boolean useSuperclasses, int poslimit, int neglimit) { + public void init(String concept, boolean useRelated, boolean useSuperclasses,boolean useParallelClasses, int poslimit, int neglimit) { makePositiveExamplesFromConcept( concept); SortedSet<String> keepForClean = new TreeSet<String>(); keepForClean.addAll(this.posExamples); this.posExamples = SetManipulation.fuzzyShrink(this.posExamples, poslimit); + logger.trace("shrinking: pos Example size: "+posExamples.size()); if(useRelated) { dbpediaMakeNegativeExamplesFromRelatedInstances(this.posExamples); @@ -42,10 +43,16 @@ if(useSuperclasses) { dbpediaMakeNegativeExamplesFromSuperClasses(concept); } + if(useParallelClasses) { + dbpediaMakeNegativeExamplesFromClassesOfInstances(); + } //clean negExamples.removeAll(keepForClean); + logger.trace("neg Example size after cleaning: "+negExamples.size()); this.negExamples = SetManipulation.fuzzyShrink(negExamples, neglimit); - logger.debug("Finished examples for concept :"+concept); + logger.debug("pos Example size after shrinking: "+posExamples.size()); + logger.debug("neg Example size after shrinking: "+negExamples.size()); + logger.debug("Finished examples for concept: "+concept); } public SortedSet<String> getPosOnly(String concept, int limit){ @@ -54,6 +61,7 @@ } private void makePositiveExamplesFromConcept(String concept){ + logger.debug("making Positive Examples from Concept: "+concept); if(concept.contains("http://dbpedia.org/resource/Category:")) { this.posExamples = new JenaResultSetConvenience(querySKOSConcept(concept,0)) .getStringListForVariable("subject"); @@ -61,6 +69,7 @@ this.posExamples = new JenaResultSetConvenience(queryConcept(concept,0)) .getStringListForVariable("subject"); } + logger.debug(" pos Example size: "+posExamples.size()); } @@ -68,9 +77,11 @@ private void dbpediaMakeNegativeExamplesFromRelatedInstances(SortedSet<String> subject) { + logger.debug("making examples from related instances"); for (String string : subject) { dbpediaMakeNegativeExamplesFromRelatedInstances(string); } + logger.debug(" negExample size: "+negExamples.size()); } @@ -92,6 +103,7 @@ JenaResultSetConvenience rsc = new JenaResultSetConvenience(rs); this.negExamples.addAll(rsc.getStringListForVariable("o")); + } @@ -101,14 +113,42 @@ superClasses.add(concept.replace("\"", "")); //logger.debug("before"+superClasses); superClasses = dbpediaGetSuperClasses( superClasses, 4); - logger.debug("getting negExamples from "+superClasses.size()+" superclasses"); + logger.debug("making neg Examples from "+superClasses.size()+" superclasses"); JenaResultSetConvenience rsc; for (String oneSuperClass : superClasses) { rsc = new JenaResultSetConvenience(queryConcept("\""+oneSuperClass+"\"", 0)); this.negExamples.addAll(rsc.getStringListForVariable("subject")); } + logger.debug(" neg Example size: "+negExamples.size()); } + + private void dbpediaMakeNegativeExamplesFromClassesOfInstances() { + logger.debug("making neg Examples from parallel classes"); + SortedSet<String> classes = 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; + ResultSet rs=null; + for (String instance : posExamples) { + //System.out.println(instance); + rs = getClassesForInstance(instance); + //System.out.println(ResultSetFormatter.asXMLString(rs)); + rsc = new JenaResultSetConvenience(rs); + classes.addAll(rsc.getStringListForVariable("subject")); + //System.out.println(classes); + } + logger.debug("getting negExamples from "+classes.size()+" parallel classes"); + for (String oneClass : classes) { + + rsc = new JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",0)); + this.negExamples.addAll(rsc.getStringListForVariable("subject")); + } + logger.debug("neg Example size: "+negExamples.size()); + + } private SortedSet<String> dbpediaGetSuperClasses(SortedSet<String> superClasses, int depth) { SortedSet<String> ret = new TreeSet<String>(); @@ -181,7 +221,30 @@ return rs; } + + public ResultSet getClassesForInstance(String instance) { + ResultSet rs = null; + try { + + String query = "SELECT ?subject WHERE { \n " + + "<" + instance + ">"+ + " a " + + "?subject " + + "\n" + + "}"; + SparqlQuery sq = new SparqlQuery(query, se); + //System.out.println(query); + 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; } @@ -191,5 +254,41 @@ } + /** + * NOT WORKING + * @param description + */ + public void getSubClasses(String description) { + ResultSet rs = null; + try { + String query = SparqlQueryDescriptionConvertVisitor + .getSparqlSubclassQuery(description.replace("\"", "")); + + rs = new SparqlQuery(query, se).send(); + System.out.println(query); + //System.out.println(SparqlQuery.getAsXMLString(rs)); + System.out.println(rs.getResultVars()); + SortedSet<String> remainingClasses = new JenaResultSetConvenience(rs).getStringListForVariable("subject"); + SortedSet<String> alreadyQueried = new TreeSet<String>(); + alreadyQueried.add(description); + while (remainingClasses.size()!=0){ + String tmp = remainingClasses.first(); + remainingClasses.remove(tmp); + query = SparqlQueryDescriptionConvertVisitor + .getSparqlSubclassQuery(tmp); + alreadyQueried.add(tmp); + rs = new SparqlQuery(query, se).send(); + remainingClasses.addAll(new JenaResultSetConvenience(rs).getStringListForVariable("subject")); + } + //System.out.println(JSON); + System.out.println(alreadyQueried); + + } catch (Exception e) { + e.printStackTrace(); + } + + } + + } Modified: trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-25 09:28:05 UTC (rev 823) @@ -50,11 +50,15 @@ 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.predefinedFilter = \"YAGO\";\n" + + "sparql.predefinedEndpoint = \"DBPEDIA\";\n" + + "refexamples.minExecutionTimeInSeconds = 30;\n" + + "refexamples.maxExecutionTimeInSeconds = 30;\n" + + "refexamples.logLevel=\"TRACE\";\n" + + "refexamples.noisePercentage = 0.10;\n" + + "refexamples.writeSearchTree = true;\n" + + "refexamples.searchTreeFile = \"searchTree.txt\";\n"+ + "refexamples.replaceSearchTree = true;\n\n" ; // "sparql.format = \"KB\";\n\n"; Modified: trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java 2008-04-25 09:28:05 UTC (rev 823) @@ -20,6 +20,7 @@ public SortedSet<String> getStringListForVariable(String var){ SortedSet<String> result = new TreeSet<String>(); + //String s=ResultSetFormatter.asXMLString(this.rs); List<ResultBinding> l = ResultSetFormatter.toList(this.rs); for (ResultBinding resultBinding : l) { Modified: trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java 2008-04-24 17:39:36 UTC (rev 822) +++ trunk/src/dl-learner/org/dllearner/utilities/SimpleClock.java 2008-04-25 09:28:05 UTC (rev 823) @@ -37,7 +37,15 @@ time=now; } + public String getAndSet(String s) { + long now=System.currentTimeMillis(); + String ret = s+" needed "+(now-time)+" ms"; + time=now; + return ret; + + } + /** * prints time needed * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ton...@us...> - 2008-04-24 17:39:48
|
Revision: 822 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=822&view=rev Author: tonytacker Date: 2008-04-24 10:39:36 -0700 (Thu, 24 Apr 2008) Log Message: ----------- removed a warning Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/RunPanel.java Modified: trunk/src/dl-learner/org/dllearner/gui/RunPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-04-24 08:43:22 UTC (rev 821) +++ trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-04-24 17:39:36 UTC (rev 822) @@ -39,7 +39,7 @@ private JButton runButton, stopButton, treeButton; private JTextArea infoArea; private Config config; - private StartGUI startGUI; + //private StartGUI startGUI; private ThreadRun thread; @@ -65,7 +65,7 @@ super(new BorderLayout()); this.config = config; - this.startGUI = startGUI; + //this.startGUI = startGUI; runButton = new JButton("Run"); runButton.addActionListener(this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <ku...@us...> - 2008-04-23 12:42:58
|
Revision: 820 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=820&view=rev Author: kurzum Date: 2008-04-23 05:42:53 -0700 (Wed, 23 Apr 2008) Log Message: ----------- output changes, logfile is now created by default in "the_log.txt" 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/cli/Start.java trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.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 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-23 12:42:53 UTC (rev 820) @@ -255,8 +255,8 @@ this.useOverlyGeneralList = useOverlyGeneralList; this.useShortConceptConstruction = useShortConceptConstruction; this.baseURI = rs.getBaseURI(); - this.maxExecutionTimeInSeconds=maxExecutionTimeInSeconds; - this.minExecutionTimeInSeconds=minExecutionTimeInSeconds; + this.maxExecutionTimeInSeconds = maxExecutionTimeInSeconds; + this.minExecutionTimeInSeconds = minExecutionTimeInSeconds; this.guaranteeXgoodDescriptions = guaranteeXgoodDescriptions; @@ -1037,6 +1037,10 @@ return ; i++; } + for (int j = 0; j < solutions.size(); j++) { + Description d = solutions.get(j); + logger.trace(d.toString()); + } } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 12:42:53 UTC (rev 820) @@ -69,11 +69,16 @@ private boolean useShortConceptConstruction = true; private double horizontalExpansionFactor = 0.6; private boolean improveSubsumptionHierarchy = true; - private boolean useAllConstructor = true; - private boolean useExistsConstructor = true; - private boolean useNegation = true; + private boolean useAllConstructor = CommonConfigOptions.useAllConstructorDefault; + private boolean useExistsConstructor = CommonConfigOptions.useExistsConstructorDefault; + //this was added so you can switch algorithm without removing everything not applicable + private boolean useCardinalityRestrictions = CommonConfigOptions.useCardinalityRestrictionsDefault; + private boolean useNegation = CommonConfigOptions.useNegationDefault; + //TODO different standard options to CommonConfigOptions private boolean useBooleanDatatypes = false; + + //extended Options private int maxExecutionTimeInSeconds = CommonConfigOptions.maxExecutionTimeInSecondsDefault; private boolean maxExecutionTimeShown=false; @@ -228,7 +233,8 @@ options.add(CommonConfigOptions.ignoredRoles()); options.add(CommonConfigOptions.useAllConstructor()); options.add(CommonConfigOptions.useExistsConstructor()); - options.add(CommonConfigOptions.useNegation()); + options.add(CommonConfigOptions.useNegation()); + options.add(CommonConfigOptions.useCardinalityRestrictions()); options.add(CommonConfigOptions.useBooleanDatatypes()); options.add(CommonConfigOptions.maxExecutionTimeInSeconds()); options.add(CommonConfigOptions.minExecutionTimeInSeconds()); @@ -282,6 +288,8 @@ useAllConstructor = (Boolean) entry.getValue(); } else if(name.equals("useExistsConstructor")) { useExistsConstructor = (Boolean) entry.getValue(); + }else if(name.equals("useCardinalityRestrictions")) { + useCardinalityRestrictions = (Boolean) entry.getValue(); } else if(name.equals("useNegation")) { useNegation = (Boolean) entry.getValue(); } else if(name.equals("useBooleanDatatypes")) { @@ -304,6 +312,7 @@ @Override public void init() { logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault))); + if(searchTreeFile == null) searchTreeFile = new File(defaultSearchTreeFile); @@ -405,6 +414,11 @@ 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); + // TODO: effizienter Traversal der Subsumption-Hierarchie // TODO: Äquivalenzen nutzen // TODO: Gibt es auch eine andere Abbruchbedingung? Es könnte sein, dass irgendwann keine @@ -506,7 +520,7 @@ Files.createFile(searchTreeFile, treeString); else Files.appendFile(searchTreeFile, treeString); - } + }//write search tree // Anzahl Schleifendurchläufe loop++; @@ -514,13 +528,15 @@ if(!quiet) logger.debug("--- loop " + loop + " finished ---"); - } + + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + if(maxExecutionTimeReached()) {solutionFound=true; stop=true;} + }//end while - if(maxExecutionTimeReached()) { stop=true;} - solutionFound = (guaranteeXgoodDescriptions() ); - solutionFound = (minExecutionTimeReached()&& solutionFound); + // Suchbaum in Datei schreiben // if(writeSearchTree) // Files.createFile(searchTreeFile, searchTree); @@ -542,18 +558,23 @@ if(solutionFound) { logger.info("\nsolutions:"); + int show=1; for(Description c : solutions) { - logger.info(" " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); + logger.info(show+": " +c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); //TODO remove this line maybe // watch for String.replace Quick hack - logger.info(" MANCHESTER: " + + logger.info(" MANCHESTER: " + c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()). replace("\"", "")); - logger.info(" KBSyntax: " + c.toKBSyntaxString()); + logger.info(" KBSyntax: " + c.toKBSyntaxString()); + if(show>=5){break;} + show++; } } logger.info(" horizontal expansion: " + minimumHorizontalExpansion + " to " + maximumHorizontalExpansion); logger.info(" size of candidate set: " + candidates.size()); + //logger.trace("test"); + //logger.trace(solutions.size()); printBestSolutions(0); printStatistics(true); @@ -1018,13 +1039,13 @@ } public void printBestSolutions(int nrOfSolutions){ - if(!logLevel.equalsIgnoreCase("TRACE"))return; + if(!logLevel.equalsIgnoreCase("TRACE")){return;} if(nrOfSolutions==0)nrOfSolutions=solutions.size(); int i=0; - for(;i==nrOfSolutions; i++) { + for(;i<nrOfSolutions; i++) { Description d = solutions.get(i); logger.trace(" " + d.toString(baseURI,null) + " (length " + d.getLength() + " " + - ""+getSolutionScore(d) ); + "" ); } } Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-04-23 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-04-23 12:42:53 UTC (rev 820) @@ -35,6 +35,7 @@ import java.util.TreeSet; import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.FileAppender; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; @@ -117,8 +118,13 @@ // its messages to the console) SimpleLayout layout = new SimpleLayout(); ConsoleAppender consoleAppender = new ConsoleAppender(layout); - logger.removeAllAppenders(); + FileAppender fileAppender =null; ; + try{ + fileAppender = new FileAppender(layout,"the_log.txt",false); + }catch (Exception e) {e.printStackTrace();} + logger.removeAllAppenders(); logger.addAppender(consoleAppender); + logger.addAppender(fileAppender); logger.setLevel(Level.DEBUG); Start start = null; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-23 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-23 12:42:53 UTC (rev 820) @@ -128,10 +128,10 @@ configuration); if (this.configuration.isCloseAfterRecursion()) { while (instances.size() > 0) { - logger.info("Getting classes for remaining instances: " + logger.trace("Getting classes for remaining instances: " + instances.size()); Node next = instances.remove(0); - logger.info("Getting classes for: " + next); + logger.trace("Getting classes for: " + next); classes.addAll(next.expand(tsqc, manipulator)); if (classes.size() >= manipulator.breakSuperClassRetrievalAfter) { break; @@ -141,14 +141,14 @@ Vector<Node> tmp = new Vector<Node>(); int i = 0; while (classes.size() > 0) { - logger.info("Remaining classes: " + classes.size()); + logger.trace("Remaining classes: " + classes.size()); // Iterator<Node> it=classes.iterator(); // Node next =(Node) it.next(); // classes.remove(next); Node next = classes.remove(0); if (!hadAlready.contains(next.getURI().toString())) { - logger.info("Expanding: " + next); + logger.trace("Getting SuperClass for: " + next); // System.out.println(hadAlready.size()); hadAlready.add(next.getURI().toString()); tmp = next.expand(typedSparqlQuery, manipulator); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java 2008-04-23 09:28:15 UTC (rev 819) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/datastructure/Node.java 2008-04-23 12:42:53 UTC (rev 820) @@ -78,7 +78,7 @@ @Override public String toString() { - return "Node: " + uri + ":" + this.getClass(); + return "Node: " + uri + ":" + this.getClass().getSimpleName(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-23 09:28:22
|
Revision: 819 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=819&view=rev Author: kurzum Date: 2008-04-23 02:28:15 -0700 (Wed, 23 Apr 2008) Log Message: ----------- changed tasks: build is now without javadoc generation full_release is everything also added "-Xmx1024m" by default to scripts (only bat now) Modified Paths: -------------- trunk/build.xml Modified: trunk/build.xml =================================================================== --- trunk/build.xml 2008-04-23 09:20:23 UTC (rev 818) +++ trunk/build.xml 2008-04-23 09:28:15 UTC (rev 819) @@ -24,7 +24,11 @@ </path> <!-- build target --> - <target name="build" depends="createScripts,javadoc"> + <target name="full_release" depends="javadoc,build" description="full release, javadoc, scripts"> + </target> + + <!-- build target --> + <target name="build" depends="createScripts" description="fast build including scripts, no javadoc"> <!-- write current build date into Info.java --> <echo file="${source_dir}/org/dllearner/Info.java" append="false"> @@ -179,8 +183,8 @@ <map from="${removeprefix}" to="."/> </pathconvert> - <echo file="bin/quickstart.bat" message="java -cp ${pathStringWin} org.dllearner.cli.QuickStart"/> - <echo file="bin/dllearner.bat" message="java -cp ${pathStringWin} org.dllearner.cli.Start %*"/> + <echo file="bin/quickstart.bat" message="java -Xmx1024m -cp ${pathStringWin} org.dllearner.cli.QuickStart"/> + <echo file="bin/dllearner.bat" message="java -Xmx1024m -cp ${pathStringWin} org.dllearner.cli.Start %*"/> <echo file="bin/ws.bat" message="java -cp ${pathStringWin} org.dllearner.server.DLLearnerWSStart %*"/> <echo file="bin/quickstart" message="java -cp ${pathStringUnix} org.dllearner.cli.QuickStart"/> <echo file="bin/dllearner" message="java -cp ${pathStringUnix} org.dllearner.cli.Start $@"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-23 09:20:26
|
Revision: 818 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=818&view=rev Author: kurzum Date: 2008-04-23 02:20:23 -0700 (Wed, 23 Apr 2008) Log Message: ----------- small output changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.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 08:04:01 UTC (rev 817) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-23 09:20:23 UTC (rev 818) @@ -1028,6 +1028,7 @@ public void printBestSolutions(int nrOfSolutions){ + if(!logger.getLevel().toString().equalsIgnoreCase("TRACE"))return; if(nrOfSolutions==0)nrOfSolutions=candidatesStable.size(); int i=0; for(ExampleBasedNode n : candidatesStable.descendingSet()) { Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 08:04:01 UTC (rev 817) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 09:20:23 UTC (rev 818) @@ -554,6 +554,7 @@ } logger.info(" horizontal expansion: " + minimumHorizontalExpansion + " to " + maximumHorizontalExpansion); logger.info(" size of candidate set: " + candidates.size()); + printBestSolutions(0); printStatistics(true); if(stop) @@ -1015,6 +1016,18 @@ public Description getBestSolution() { return candidatesStable.last().getConcept(); } + + public void printBestSolutions(int nrOfSolutions){ + if(!logLevel.equalsIgnoreCase("TRACE"))return; + if(nrOfSolutions==0)nrOfSolutions=solutions.size(); + int i=0; + for(;i==nrOfSolutions; i++) { + Description d = solutions.get(i); + logger.trace(" " + d.toString(baseURI,null) + " (length " + d.getLength() + " " + + ""+getSolutionScore(d) ); + } + + } @Override public synchronized List<Description> getBestSolutions(int nrOfSolutions) { @@ -1036,6 +1049,14 @@ else return learningProblem.computeScore(getBestSolution()); } + + + public Score getSolutionScore(Description d) { + if(posOnly) + return posOnlyLearningProblem.computeScore(d); + else + return learningProblem.computeScore(d); + } @Override public void stop() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-23 08:04:22
|
Revision: 817 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=817&view=rev Author: kurzum Date: 2008-04-23 01:04:01 -0700 (Wed, 23 Apr 2008) Log Message: ----------- ne config doc Modified Paths: -------------- trunk/doc/configOptions.txt Property Changed: ---------------- trunk/doc/ Property changes on: trunk/doc ___________________________________________________________________ Name: svn:ignore - javadoc + javadoc configOptions_old.txt Modified: trunk/doc/configOptions.txt =================================================================== --- trunk/doc/configOptions.txt 2008-04-23 08:03:44 UTC (rev 816) +++ trunk/doc/configOptions.txt 2008-04-23 08:04:01 UTC (rev 817) @@ -621,6 +621,12 @@ default value: 1 CLI usage: refexamples.guaranteeXgoodDescriptions = 1; +option name: logLevel +description: determines the logLevel for this component, can be {TRACE, DEBUG, INFO} +values: class org.dllearner.core.config.StringConfigOption +default value: DEBUG +CLI usage: refexamples.logLevel = DEBUG; + option name: noisePercentage description: the (approximated) percentage of noise within the examples values: class org.dllearner.core.config.DoubleConfigOption min 0.0 max 100.0 @@ -759,4 +765,28 @@ default value: true CLI usage: refinement.useBooleanDatatypes = true; +option name: maxExecutionTimeInSeconds +description: algorithm will stop after specified seconds +values: class org.dllearner.core.config.IntegerConfigOption +default value: 0 +CLI usage: refinement.maxExecutionTimeInSeconds = 0; +option name: minExecutionTimeInSeconds +description: algorithm will run at least specified seconds +values: class org.dllearner.core.config.IntegerConfigOption +default value: 0 +CLI usage: refinement.minExecutionTimeInSeconds = 0; + +option name: guaranteeXgoodDescriptions +description: algorithm will run until X good (100%) concept descritpions are found +values: class org.dllearner.core.config.IntegerConfigOption +default value: 1 +CLI usage: refinement.guaranteeXgoodDescriptions = 1; + +option name: logLevel +description: determines the logLevel for this component, can be {TRACE, DEBUG, INFO} +values: class org.dllearner.core.config.StringConfigOption +default value: DEBUG +CLI usage: refinement.logLevel = DEBUG; + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-23 08:04:01
|
Revision: 816 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=816&view=rev Author: kurzum Date: 2008-04-23 01:03:44 -0700 (Wed, 23 Apr 2008) Log Message: ----------- new options loglevel and stopping for ROLLearner and refexamples Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Info.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 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/core/config/CommonConfigOptions.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/Info.java 2008-04-23 08:03:44 UTC (rev 816) @@ -3,6 +3,6 @@ package org.dllearner; public class Info { - public static final String build = "2008-03-31"; + public static final String build = "2008-04-23"; } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-04-23 08:03:44 UTC (rev 816) @@ -26,6 +26,8 @@ import java.util.List; import java.util.Set; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasoningService; @@ -75,6 +77,9 @@ // actual algorithm private ExampleBasedROLearner algorithm; + private static Logger logger = Logger + .getLogger(ExampleBasedROLearner.class); + private String logLevel = CommonConfigOptions.logLevelDefault; // learning problem to solve and background knowledge private ReasoningService rs; @@ -172,6 +177,7 @@ options.add(CommonConfigOptions.maxExecutionTimeInSeconds()); options.add(CommonConfigOptions.minExecutionTimeInSeconds()); options.add(CommonConfigOptions.guaranteeXgoodDescriptions()); + options.add(CommonConfigOptions.getLogLevel()); DoubleConfigOption noisePercentage = new DoubleConfigOption("noisePercentage", "the (approximated) percentage of noise within the examples"); noisePercentage.setLowerLimit(0); noisePercentage.setUpperLimit(100); @@ -239,6 +245,8 @@ minExecutionTimeInSeconds = (Integer) entry.getValue(); }else if(name.equals("guaranteeXgoodDescriptions")) { guaranteeXgoodDescriptions = (Integer) entry.getValue(); + } else if(name.equals("logLevel")) { + logLevel = ((String)entry.getValue()).toUpperCase(); } } @@ -247,7 +255,8 @@ */ @Override public void init() { - + + logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault))); if(searchTreeFile == null) searchTreeFile = new File(defaultSearchTreeFile); @@ -308,7 +317,7 @@ rs, applyAllFilter, applyExistsFilter, - useAllConstructor, + useAllConstructor, useExistsConstructor, useCardinalityRestrictions, useNegation, @@ -380,10 +389,10 @@ } - public void printBestSolutions(int nrOfSolutions){ + /*public void printBestSolutions(int nrOfSolutions){ algorithm.printBestSolutions(nrOfSolutions); - } + }*/ Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-23 08:03:44 UTC (rev 816) @@ -75,8 +75,9 @@ public class ExampleBasedROLearner { private static Logger logger = Logger - .getLogger(ExampleBasedROLearner.class); + .getLogger(ExampleBasedROLearner.class); + // basic setup: learning problem and reasoning service private ReasoningService rs; private PosNegLP learningProblem; @@ -221,6 +222,7 @@ int minExecutionTimeInSeconds, int guaranteeXgoodDescriptions ) { + if(learningProblem instanceof PosNegLP) { PosNegLP lp = (PosNegLP) learningProblem; this.learningProblem = lp; @@ -257,6 +259,7 @@ this.minExecutionTimeInSeconds=minExecutionTimeInSeconds; this.guaranteeXgoodDescriptions = guaranteeXgoodDescriptions; + // logger.setLevel(Level.DEBUG); } @@ -424,7 +427,9 @@ show++; } } + logger.debug("size of candidate set: " + candidates.size()); + printBestSolutions(0); printStatistics(true); if(stop) @@ -774,9 +779,9 @@ // searchTree += bestNodeString + "\n"; logger.debug(bestNodeString); - logger.debug(startNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); + logger.trace(startNode.getStats(nrOfPositiveExamples, nrOfNegativeExamples)); logger.debug(bestNodeStringKBSyntax); - if(bestNode.getCoveredNegatives().size()<=3)logger.debug("covered negs: "+bestNode.getCoveredNegatives()); + if(bestNode.getCoveredNegatives().size()<=5)logger.trace("covered negs: "+bestNode.getCoveredNegatives()); String expandedNodeString = "next expanded node: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); // searchTree += expandedNodeString + "\n"; logger.debug(expandedNodeString); @@ -1023,10 +1028,10 @@ public void printBestSolutions(int nrOfSolutions){ - + if(nrOfSolutions==0)nrOfSolutions=candidatesStable.size(); int i=0; for(ExampleBasedNode n : candidatesStable.descendingSet()) { - System.out.println(n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + logger.trace(n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); if(i==nrOfSolutions) return ; i++; @@ -1060,12 +1065,7 @@ if(maxExecutionTimeInSeconds==0)return false; if(maxExecutionTimeShown)return true; long needed = System.currentTimeMillis()- this.runtime; - //millisec /100 - //seconds /1000 long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; - //System.out.println("max"+maxMilliSeconds); - //System.out.println(needed); - if(maxMilliSeconds<needed){ logger.info("Maximum time reached, stopping now..."); maxExecutionTimeShown=true; @@ -1080,14 +1080,8 @@ */ private boolean minExecutionTimeReached(){ if(minExecutionTimeShown)return true; - //if(minExecutionTimeInSeconds==0)return true; long needed = System.currentTimeMillis()- this.runtime; - //millisec /100 - //seconds /1000 long minMilliSeconds = minExecutionTimeInSeconds *1000 ; - //System.out.println("min"+minMilliSeconds); - //System.out.println(needed); - if(minMilliSeconds<needed){ logger.info("Minimum time reached, stopping when next solution is found"); minExecutionTimeShown=true; Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2008-04-23 08:03:44 UTC (rev 816) @@ -12,6 +12,7 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; @@ -25,12 +26,12 @@ import org.dllearner.core.config.DoubleConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; import org.dllearner.core.config.StringConfigOption; -import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Intersection; -import org.dllearner.core.owl.Union; +import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.Thing; +import org.dllearner.core.owl.Union; import org.dllearner.learningproblems.PosNegLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; import org.dllearner.refinementoperators.RhoDown; @@ -44,6 +45,8 @@ private static Logger logger = Logger .getLogger(LearningAlgorithm.class); + private String logLevel = CommonConfigOptions.logLevelDefault; + public enum Heuristic { LEXICOGRAPHIC, FLEXIBLE } // configuration options @@ -71,6 +74,15 @@ private boolean useNegation = true; private boolean useBooleanDatatypes = false; + //extended Options + private int maxExecutionTimeInSeconds = CommonConfigOptions.maxExecutionTimeInSecondsDefault; + private boolean maxExecutionTimeShown=false; + private int minExecutionTimeInSeconds = CommonConfigOptions.minExecutionTimeInSecondsDefault; + private boolean minExecutionTimeShown=false; + private int guaranteeXgoodDescriptions = CommonConfigOptions.guaranteeXgoodDescriptionsDefault; + private boolean guaranteeXgoodShown=false; + + private boolean quiet = false; private boolean stop = false; @@ -151,6 +163,7 @@ private int conceptTestsReasoner = 0; // Zeitvariablen + private long runtime; private long algorithmStartTime; private long propernessCalcTimeNs = 0; private long propernessCalcReasoningTimeNs = 0; @@ -217,6 +230,10 @@ options.add(CommonConfigOptions.useExistsConstructor()); options.add(CommonConfigOptions.useNegation()); options.add(CommonConfigOptions.useBooleanDatatypes()); + options.add(CommonConfigOptions.maxExecutionTimeInSeconds()); + options.add(CommonConfigOptions.minExecutionTimeInSeconds()); + options.add(CommonConfigOptions.guaranteeXgoodDescriptions()); + options.add(CommonConfigOptions.getLogLevel()); return options; } @@ -269,6 +286,14 @@ useNegation = (Boolean) entry.getValue(); } else if(name.equals("useBooleanDatatypes")) { useBooleanDatatypes = (Boolean) entry.getValue(); + }else if(name.equals("maxExecutionTimeInSeconds")) { + maxExecutionTimeInSeconds = (Integer) entry.getValue(); + }else if(name.equals("minExecutionTimeInSeconds")) { + minExecutionTimeInSeconds = (Integer) entry.getValue(); + }else if(name.equals("guaranteeXgoodDescriptions")) { + guaranteeXgoodDescriptions = (Integer) entry.getValue(); + } else if(name.equals("logLevel")) { + logLevel = ((String)entry.getValue()).toUpperCase(); } } @@ -278,6 +303,7 @@ */ @Override public void init() { + logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault))); if(searchTreeFile == null) searchTreeFile = new File(defaultSearchTreeFile); @@ -351,7 +377,7 @@ @Override @SuppressWarnings("unchecked") public void start() { - + runtime=System.currentTimeMillis(); // Suche wird mit Top-Konzept gestartet Thing top = new Thing(); Node topNode = new Node(top); @@ -490,6 +516,11 @@ } + if(maxExecutionTimeReached()) { stop=true;} + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + + // Suchbaum in Datei schreiben // if(writeSearchTree) // Files.createFile(searchTreeFile, searchTree); @@ -1017,5 +1048,46 @@ public Node getStartNode() { return startNode; } + + private boolean guaranteeXgoodDescriptions(){ + if(guaranteeXgoodShown)return true; + if(solutions.size()>guaranteeXgoodDescriptions){ + logger.info("Minimum number of good descriptions reached, stopping now..."); + guaranteeXgoodShown=true; + return true;} + else return false; + + } + + + private boolean maxExecutionTimeReached(){ + if(maxExecutionTimeInSeconds==0)return false; + if(maxExecutionTimeShown)return true; + long needed = System.currentTimeMillis()- this.runtime; + long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; + if(maxMilliSeconds<needed){ + logger.info("Maximum time reached, stopping now..."); + maxExecutionTimeShown=true; + return true;} + else return false; + + } + + /** + * true if minExecutionTime reached + * @return true + */ + private boolean minExecutionTimeReached(){ + if(minExecutionTimeShown)return true; + long needed = System.currentTimeMillis()- this.runtime; + long minMilliSeconds = minExecutionTimeInSeconds *1000 ; + if(minMilliSeconds<needed){ + logger.info("Minimum time reached, stopping when next solution is found"); + minExecutionTimeShown=true; + return true;} + else return false; + + } + } Modified: trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-04-23 08:03:44 UTC (rev 816) @@ -43,6 +43,7 @@ public static int maxExecutionTimeInSecondsDefault = 0; public static int minExecutionTimeInSecondsDefault = 0; public static int guaranteeXgoodDescriptionsDefault = 1; + public static String logLevelDefault = "DEBUG"; //public static double noisePercentageDefault = 0.0; @@ -119,5 +120,9 @@ public static IntegerConfigOption guaranteeXgoodDescriptions() { return new IntegerConfigOption("guaranteeXgoodDescriptions", "algorithm will run until X good (100%) concept descritpions are found",guaranteeXgoodDescriptionsDefault); - } + } + + public static StringConfigOption getLogLevel() { + return new StringConfigOption("logLevel", "determines the logLevel for this component, can be {TRACE, DEBUG, INFO}",logLevelDefault); + } } Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-23 08:03:44 UTC (rev 816) @@ -11,7 +11,6 @@ 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 { @@ -34,6 +33,11 @@ try { + //System.out.println(logger.setLevel(TRACE)); + System.out.println(Level.DEBUG.getClass()); + System.out.println(Level.toLevel("INFO")); + System.out.println(Level.INFO); + System.exit(0); SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); @@ -57,7 +61,7 @@ // 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>()); + //new LearnSparql().learn(posExamples, negExamples, "http://dbpedia.openlinksw.com:8890/sparql", new TreeSet<String>()); sc.printAndSet("Finished"); } catch (Exception e) { Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 18:11:28 UTC (rev 815) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-23 08:03:44 UTC (rev 816) @@ -72,6 +72,7 @@ cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",900); cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",999999); + cm.applyConfigEntry(la,"logLevel","TRACE"); //cm.applyConfigEntry(la,"quiet",false); if(ignoredConcepts.size()>0) @@ -82,7 +83,7 @@ la.start(); //System.out.println("best"+la(20)); - ((ExampleBasedROLComponent)la).printBestSolutions(10000); + //((ExampleBasedROLComponent)la).printBestSolutions(10000); }catch (Exception e) {e.printStackTrace();} //System.out.println( la.getBestSolution());; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hee...@us...> - 2008-04-22 18:11:38
|
Revision: 815 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=815&view=rev Author: heeroyuy Date: 2008-04-22 11:11:28 -0700 (Tue, 22 Apr 2008) Log Message: ----------- small changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java trunk/src/dl-learner/org/dllearner/tools/protege/ButtonList.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java trunk/src/dl-learner/org/dllearner/tools/protege/META-INF/MANIFEST.MF trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java 2008-04-22 17:43:49 UTC (rev 814) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java 2008-04-22 18:11:28 UTC (rev 815) @@ -4,7 +4,8 @@ import java.awt.event.*; import java.util.Observable; -public class ActionHandler extends Observable implements ActionListener, ItemListener { + +public class ActionHandler extends Observable implements ActionListener, ItemListener, MouseListener { private DLLearnerModel model; private SuggestEquivalentClassView view; private Thread dlLearner; @@ -17,8 +18,8 @@ if(z.getActionCommand().equals("RUN")) { + model.setDLLearnerModel(view.getPositiveVector(), view.getNegativeVector(),view.getUri()); dlLearner = new Thread(model); - System.out.println("test"); view.getStartButton().setEnabled(false); view.getStopButton().setEnabled(true); dlLearner.start(); @@ -26,21 +27,27 @@ if(z.getActionCommand().equals("Cancel")) { - System.out.println(dlLearner.isInterrupted()); model.getLearningAlgorithm().stop(); - view.destroyListener(); view.getStartButton().setEnabled(true); view.getStopButton().setEnabled(false); - System.out.println(dlLearner.isInterrupted()); String error = "Learning aborted"; dlLearner.interrupt(); - System.out.println(dlLearner.isInterrupted()); view.renderErrorMessage(error); } if(z.getActionCommand().equals("ADD")) { - String message ="Ausgezeichnet *Mr.Burns*"; + String suggest=view.getSuggestionList().getSelectedValue().toString(); + for(int i = 0;i<model.getSolutions().length;i++) + { + if(model.getSolutions()[i].toString().equals(suggest)) + { + model.changeDLLearnerDescriptionsToOWLDescriptions(model.getSolutions()[i]); + System.out.println(model.getSolutions()[i].toString()); + } + } + + String message ="Concept added"; view.renderErrorMessage(message); } } @@ -51,15 +58,34 @@ } - public void textValueChanged(TextEvent t) + public void mouseReleased(MouseEvent m) { + } + + public void mouseEntered(MouseEvent m) + { } - public void destroyThread() + public void mouseClicked(MouseEvent m) { - view.getStartButton().setEnabled(true); - view.getStopButton().setEnabled(false); + System.out.println("mouseClicked: "); } + + public void mouseExited(MouseEvent m) + { + + } + + public void mousePressed(MouseEvent m) + { + + } + public void textValueChanged(TextEvent t) + { + + } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ButtonList.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ButtonList.java 2008-04-22 17:43:49 UTC (rev 814) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ButtonList.java 2008-04-22 18:11:28 UTC (rev 815) @@ -14,7 +14,7 @@ public ButtonList(OWLEditorKit editorKit) { super(editorKit.getOWLModelManager().getOWLOntologyManager()); - addSection(new OWLEquivalentClassesAxiomFrameSection(editorKit, this)); + //addSection(new SuggestButton(editorKit, this)); addSection(new SuggestEquivalentClassButton(editorKit, this)); addSection(new OWLSubClassAxiomFrameSection(editorKit, this)); addSection(new InheritedAnonymousClassesFrameSection(editorKit, this)); Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-04-22 17:43:49 UTC (rev 814) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-04-22 18:11:28 UTC (rev 815) @@ -3,16 +3,31 @@ import org.dllearner.core.ComponentManager; import org.dllearner.kb.OWLFile; +import java.util.HashSet; import java.util.Observable; import java.util.Set; import java.util.TreeSet; import java.util.Vector; import java.io.*; +import org.dllearner.core.owl.Description; import javax.swing.JCheckBox; import org.dllearner.algorithms.refinement.*; +//import org.coode.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser; import org.dllearner.core.*; import org.dllearner.reasoning.*; import org.dllearner.learningproblems.*; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.AddAxiom; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLOntology; +import org.dllearner.reasoning.OWLAPIReasoner; +import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLOntologyStorageException; +import org.semanticweb.owl.model.UnknownOWLOntologyException; public class DLLearnerModel extends Observable implements Runnable{ private String[] componenten={"org.dllearner.kb.OWLFile","org.dllearner.reasoning.OWLAPIReasoner", @@ -22,12 +37,15 @@ private Vector<JCheckBox> positiv; private Vector<JCheckBox> negativ; private ComponentManager cm; - private ReasonerComponent reasoner; + //private ReasonerComponent reasoner; private ReasoningService rs; private static final int anzahl = 10; - private String[] description = new String[anzahl]; + private Description[] description = new Description[anzahl]; private LearningProblem lp; private LearningAlgorithm la = null; + OWLAPIReasoner reasoner; + + public DLLearnerModel() { @@ -52,6 +70,7 @@ } public void run() { + resetSuggestionList(); ComponentManager.setComponentClasses(componenten); // get singleton instance of component manager cm = ComponentManager.getInstance(); @@ -120,13 +139,17 @@ // start the algorithm and print the best concept found la.start(); - System.out.println(la.getSolutionScore()); - description[0]=la.getBestSolution().toString(); + description = new Description[la.getBestSolutions(anzahl).size()]; + for(int j = 0;j<la.getBestSolutions(anzahl).size();j++) + { + description[j]=la.getBestSolutions(anzahl).get(j); + } setChanged(); notifyObservers(description); + } - public String[] getSolutions() + public Description[] getSolutions() { return description; } @@ -171,20 +194,67 @@ return uri; } - public void setDescriptionList(String[] list) + public void setDescriptionList(Description[] list) { description=list; } - public String[] getSollutions() - { - return description; - } public LearningAlgorithm getLearningAlgorithm() { return la; } + + public void resetSuggestionList() + { + /*for(int i=0;i<description.length;i++) + { + description[i]=""; + }*/ + } + + public void changeDLLearnerDescriptionsToOWLDescriptions(Description desc) + { + OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); + System.out.println(newConceptOWLAPI); + //OWLDescription oldConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(concept); + } + + public void addAxiomToOWL(Description desc,Description concept){ + OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); + OWLDescription oldConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(concept); + + OWLOntology ontology = reasoner.getOWLAPIOntologies().get(0); + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + + OWLDataFactory factory = manager.getOWLDataFactory(); + + Set<OWLDescription> ds = new HashSet<OWLDescription>(); + ds.add(newConceptOWLAPI); + ds.add(oldConceptOWLAPI); + + OWLAxiom axiomOWLAPI = factory.getOWLEquivalentClassesAxiom(ds); + + + AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); + try { + manager.applyChange(axiom); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + manager.saveOntology(ontology); + } catch (UnknownOWLOntologyException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyStorageException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/META-INF/MANIFEST.MF =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/META-INF/MANIFEST.MF 2008-04-22 17:43:49 UTC (rev 814) +++ trunk/src/dl-learner/org/dllearner/tools/protege/META-INF/MANIFEST.MF 2008-04-22 18:11:28 UTC (rev 815) @@ -6,7 +6,7 @@ Bundle-Description: blablabla Bundle-Vendor: blablabla Bundle-DocURL: blablabla -Bundle-ClassPath: .,lib/junit-4.4.jar,log4j.jar,lib/pellet/pellet.jar,lib/pellet/aterm-java-1.6.jar,lib/pellet/relaxngDatatype.jar,lib/pellet/xsdlib.jar,lib/jena/commons-logging-1.1.jar +Bundle-ClassPath: .,lib/junit-4.4.jar,lib/pellet/pellet.jar,lib/pellet/aterm-java-1.6.jar,lib/pellet/relaxngDatatype.jar,lib/pellet/xsdlib.jar,lib/jena/commons-logging-1.1.jar Import-Package: org.osgi.framework,org.apache.log4j Export-Package: lib Bundle-Version: 1.0.0 Modified: trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java 2008-04-22 17:43:49 UTC (rev 814) +++ trunk/src/dl-learner/org/dllearner/tools/protege/SuggestEquivalentClassView.java 2008-04-22 18:11:28 UTC (rev 815) @@ -5,6 +5,7 @@ import java.awt.GridLayout; import java.util.*; +import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.protege.editor.owl.ui.frame.OWLFrame; import javax.swing.JButton; @@ -13,6 +14,8 @@ import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JScrollPane; +import org.dllearner.core.owl.Description; import javax.swing.JList; import org.protege.editor.owl.OWLEditorKit; @@ -34,13 +37,15 @@ private JList suggest; private Object[] instances; private JLabel neg; + private JScrollPane scrollPane; + private JScrollPane suggestScroll; private final static Color Color_RED = Color.red; private JButton cancel; private JLabel errorMessage; private ActionHandler action; private DLLearnerModel model; - private String[] descriptions = new String[10]; - //private OWLFrame<OWLClass> aktuell; + private Description[] descriptions = new Description[10]; + private OWLFrame<OWLClass> aktuell; private SuggestEquivalentClassView view; public void update(Observable m,Object c) @@ -54,11 +59,15 @@ public SuggestEquivalentClassView(OWLEditorKit editorKit, OWLDescription description, OWLFrame<OWLClass> h) { editor = editorKit; - //aktuell = h; + scrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + suggestScroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + aktuell = h; model = new DLLearnerModel(); errorMessage = new JLabel(); + System.out.println("test: "+aktuell.getRootObject()); errorMessage.setForeground(Color_RED); - suggest = new JList(descriptions); + suggest = new JList(); + suggest.setEnabled(true); learner = new JPanel(); learner.setLayout(null); learner.setPreferredSize(new Dimension(600, 480)); @@ -70,7 +79,6 @@ accept.setPreferredSize(new Dimension(290,50)); option = new JPanel(new GridLayout(0,2)); cancel.setEnabled(false); - option.setPreferredSize(new Dimension(290,0)); model.addObserver(this); } @@ -91,9 +99,10 @@ } - public void makeView() + public JComponent makeView() { - suggest = new JList(descriptions); + suggest = new JList(); + option.add(pos); option.add(neg); instances=editor.getOWLModelManager().getActiveOntology().getReferencedIndividuals().toArray(); @@ -111,26 +120,48 @@ option.add(positive.get(j)); option.add(negative.get(j)); } - //test.add(option); - option.setBounds(0, 0, 490, 250); - run.setBounds(0,260,200,30); + for(int j = 0; j<positive.size();j++) + { + Object[] test=editor.getOWLModelManager().getActiveOntology().getClassAssertionAxioms(aktuell.getRootObject()).toArray(); + for(int i = 0;i<test.length;i++) + { + String k = test[i].toString(); + String l = instances[j].toString(); + if(k.contains(l)&&positive.get(j).getText().contains(l)) + { + JCheckBox n=positive.get(j); + n.setSelected(true); + positive.set(j, n); + } + } + + + + } + scrollPane.setViewportView(option); + scrollPane.setBounds(0, 0, 490, 250); + run.setBounds(0,260,200,30); cancel.setBounds(210,260,200,30); - suggest.setBounds(0,300,490,110); + suggestScroll.setBounds(0,300,490,110); + suggestScroll.setViewportView(suggest); + suggestScroll.setVisible(true); + //suggest.setBounds(0,300,490,110); accept.setBounds(0,420,200,30); errorMessage.setBounds(210,420,300,30); System.out.println("blub2"); - learner.add(option); + learner.add(scrollPane); learner.add(run); learner.add(cancel); learner.add(suggest); learner.add(accept); learner.add(errorMessage); addListener(); - model.setDLLearnerModel(positive,negative,getUri()); + return learner; } public JComponent getEditorComponent() { + System.out.println("das ist ein test"); makeView(); return learner; } @@ -145,13 +176,11 @@ option.removeAll(); } suggest.removeAll(); + model.resetSuggestionList(); + learner.removeAll(); positive.removeAllElements(); negative.removeAllElements(); errorMessage.setText(""); - for(int i=0; i<descriptions.length;i++) - { - descriptions[i]=""; - } } /** * Methode die alle Buttons und CheckBoxes an dem ActionListener anmeldet @@ -161,6 +190,7 @@ run.addActionListener(this.action); accept.addActionListener(this.action); cancel.addActionListener(this.action); + for(int i=0;i<positive.size();i++) { positive.get(i).addItemListener(action); @@ -171,22 +201,7 @@ negative.get(i).addItemListener(action); } } - public void destroyListener() - { - run.removeActionListener(this.action); - accept.removeActionListener(this.action); - System.out.println("hihihihi"); - cancel.removeActionListener(this.action); - for(int i=0;i<positive.size();i++) - { - positive.get(i).removeItemListener(action); - } - - for(int i=0;i<negative.size();i++) - { - negative.get(i).removeItemListener(action); - } - } + public void setSuggestedClass() { //TODO: Description umwandeln und in ontologie einfuegen @@ -212,14 +227,7 @@ { return super.getEditedObjects(); } - private void resetPanel() - { - option.removeAll(); - System.out.println("blub1"); - positive.removeAllElements(); - negative.removeAllElements(); - learner.removeAll(); - } + public void release() { @@ -232,25 +240,50 @@ run.setEnabled(true); cancel.setEnabled(false); System.out.println("blub"); + System.out.println(((DLLearnerModel)model).getSolutions().length); descriptions = ((DLLearnerModel)model).getSolutions(); - resetPanel(); - makeView(); + suggest=new JList(descriptions); + //learner.remove(3); + suggest.setBounds(0,300,490,110); + learner.add(suggest); + unsetJCheckBoxen(); + suggest.addMouseListener(action); + + returnLearner(); + } } - public void disableRunButtons() + public JComponent returnLearner() { - run.setEnabled(false); - cancel.setEnabled(true); - resetPanel(); - makeView(); + return learner; } public void renderErrorMessage(String s) { errorMessage.setText(s); } - + private void unsetJCheckBoxen() + { + for(int j=0;j<positive.size();j++) + { + if(positive.get(j).isSelected()) + { + JCheckBox i = positive.get(j); + i.setSelected(false); + positive.set(j, i); + } + } + for(int j=0;j<negative.size();j++) + { + if(negative.get(j).isSelected()) + { + JCheckBox i = negative.get(j); + i.setSelected(false); + negative.set(j, i); + } + } + } public JButton getStartButton() { return run; @@ -260,4 +293,24 @@ { return cancel; } + + public Vector<JCheckBox> getPositiveVector() + { + return positive; + } + + public Vector<JCheckBox> getNegativeVector() + { + + return negative; + } + + public JList getSuggestionList() + { + return suggest; + } + + + + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 17:43:54
|
Revision: 814 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=814&view=rev Author: kurzum Date: 2008-04-22 10:43:49 -0700 (Tue, 22 Apr 2008) Log Message: ----------- new configoption.txt configgenerator moved to scripts Modified Paths: -------------- trunk/doc/configOptions.txt trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/ConfigDocumentationGenerator.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/core/config/ConfigDocumentationGenerator.java Modified: trunk/doc/configOptions.txt =================================================================== --- trunk/doc/configOptions.txt 2008-04-22 17:34:43 UTC (rev 813) +++ trunk/doc/configOptions.txt 2008-04-22 17:43:49 UTC (rev 814) @@ -603,6 +603,24 @@ default value: true CLI usage: refexamples.useBooleanDatatypes = true; +option name: maxExecutionTimeInSeconds +description: algorithm will stop after specified seconds +values: class org.dllearner.core.config.IntegerConfigOption +default value: 0 +CLI usage: refexamples.maxExecutionTimeInSeconds = 0; + +option name: minExecutionTimeInSeconds +description: algorithm will run at least specified seconds +values: class org.dllearner.core.config.IntegerConfigOption +default value: 0 +CLI usage: refexamples.minExecutionTimeInSeconds = 0; + +option name: guaranteeXgoodDescriptions +description: algorithm will run until X good (100%) concept descritpions are found +values: class org.dllearner.core.config.IntegerConfigOption +default value: 1 +CLI usage: refexamples.guaranteeXgoodDescriptions = 1; + option name: noisePercentage description: the (approximated) percentage of noise within the examples values: class org.dllearner.core.config.DoubleConfigOption min 0.0 max 100.0 Deleted: trunk/src/dl-learner/org/dllearner/core/config/ConfigDocumentationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/config/ConfigDocumentationGenerator.java 2008-04-22 17:34:43 UTC (rev 813) +++ trunk/src/dl-learner/org/dllearner/core/config/ConfigDocumentationGenerator.java 2008-04-22 17:43:49 UTC (rev 814) @@ -1,45 +0,0 @@ -/** - * Copyright (C) 2007, 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.config; - -import java.io.File; - -import org.dllearner.core.ComponentManager; - -/** - * Collects information about all used configuration options and - * writes them into a file. This way the documentation is always - * in sync with the source code. - * - * @author Jens Lehmann - * - */ -public class ConfigDocumentationGenerator { - - /** - * @param args - */ - public static void main(String[] args) { - File file = new File("doc/configOptions.txt"); - ComponentManager cm = ComponentManager.getInstance(); - cm.writeConfigDocumentation(file); - } - -} Copied: trunk/src/dl-learner/org/dllearner/scripts/ConfigDocumentationGenerator.java (from rev 808, trunk/src/dl-learner/org/dllearner/core/config/ConfigDocumentationGenerator.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/ConfigDocumentationGenerator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/ConfigDocumentationGenerator.java 2008-04-22 17:43:49 UTC (rev 814) @@ -0,0 +1,46 @@ +/** + * Copyright (C) 2007, 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; + +import java.io.File; + +import org.dllearner.core.ComponentManager; + +/** + * Collects information about all used configuration options and + * writes them into a file. This way the documentation is always + * in sync with the source code. + * + * @author Jens Lehmann + * + */ +public class ConfigDocumentationGenerator { + + /** + * @param args + */ + public static void main(String[] args) { + File file = new File("doc/configOptions.txt"); + ComponentManager cm = ComponentManager.getInstance(); + cm.writeConfigDocumentation(file); + System.out.println("Done"); + } + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:34:43 UTC (rev 813) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:43:49 UTC (rev 814) @@ -70,7 +70,7 @@ cm.applyConfigEntry(la,"useCardinalityRestrictions",false); cm.applyConfigEntry(la,"useNegation",false); cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); - cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",1800); + cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",900); cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",999999); //cm.applyConfigEntry(la,"quiet",false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 17:35:02
|
Revision: 813 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=813&view=rev Author: kurzum Date: 2008-04-22 10:34:43 -0700 (Tue, 22 Apr 2008) Log Message: ----------- small changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java Modified: trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-22 17:29:06 UTC (rev 812) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLMassLearning.java 2008-04-22 17:34:43 UTC (rev 813) @@ -28,8 +28,8 @@ //vars boolean useRelated = true; boolean useSuperClasses = true; - int poslimit = 50; - int neglimit = 100; + int poslimit = 300; + int neglimit = 600; try { Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:29:06 UTC (rev 812) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 17:34:43 UTC (rev 813) @@ -69,9 +69,9 @@ cm.applyConfigEntry(la,"useExistsConstructor",true); cm.applyConfigEntry(la,"useCardinalityRestrictions",false); cm.applyConfigEntry(la,"useNegation",false); - cm.applyConfigEntry(la,"minExecutionTimeInSeconds",100); - cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",100); - cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",1); + cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); + cm.applyConfigEntry(la,"maxExecutionTimeInSeconds",1800); + cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",999999); //cm.applyConfigEntry(la,"quiet",false); if(ignoredConcepts.size()>0) @@ -82,7 +82,7 @@ la.start(); //System.out.println("best"+la(20)); - ((ExampleBasedROLComponent)la).printBestSolutions(200); + ((ExampleBasedROLComponent)la).printBestSolutions(10000); }catch (Exception e) {e.printStackTrace();} //System.out.println( la.getBestSolution());; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <ton...@us...> - 2008-04-22 17:15:37
|
Revision: 811 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=811&view=rev Author: tonytacker Date: 2008-04-22 10:15:27 -0700 (Tue, 22 Apr 2008) Log Message: ----------- - reinit on run-button Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/RunPanel.java Modified: trunk/src/dl-learner/org/dllearner/gui/RunPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-04-22 15:23:38 UTC (rev 810) +++ trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-04-22 17:15:27 UTC (rev 811) @@ -143,7 +143,6 @@ // start if (e.getSource() == runButton && config.getLearningAlgorithm() != null && !config.getThreadIsRunning()) { - startGUI.init(); thread = new ThreadRun(config); config.getReasoningService().resetStatistics(); thread.start(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 15:23:48
|
Revision: 810 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=810&view=rev Author: kurzum Date: 2008-04-22 08:23:38 -0700 (Tue, 22 Apr 2008) Log Message: ----------- moved some classes to new package scripts, because, they are neither utitlity classes nor test classes, but scripts. Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/ trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java Copied: trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java (from rev 808, trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/CloseOntology.java 2008-04-22 15:23:38 UTC (rev 810) @@ -0,0 +1,66 @@ +package org.dllearner.scripts; + +import java.io.File; +import java.net.URI; +import java.util.HashSet; +import java.util.Set; + +import org.dllearner.core.KnowledgeSource; +import org.dllearner.kb.OWLFile; +import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.utilities.OntologyCloserOWLAPI; + +/** + * Script for closing an ontology OWLAPI produces extensive filesizes, when + * exporting output file ist named like input file, but recieves a + * "_closedConcise" at the end. + * + * Counts all roles of individuals and adds an Intersection (Concise) of + * ExactCardinalityRestriction to the ABox + * + */ +public class CloseOntology { + + /** + * @param argument0 + * simply the path to the owl ontology "examples/test.owl" + */ + public static void main(String[] args) { + String ontopath=""; + //ontopath="examples/carcinogenesis/carcinogenesis.owl"; + // inputURI + //ontopath = args[0]; + File file = new File(ontopath); + URI inputURI = file.toURI(); + + // outputURI + String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); + ontopath = ontopath.replace("." + ending, "_closedConcise." + ending); + file = new File(ontopath); + URI outputURI = file.toURI(); + + try { + // initializing reasoner + OWLFile owlFile = new OWLFile(); + owlFile.setURL(inputURI.toURL()); + Set<KnowledgeSource> ks = new HashSet<KnowledgeSource>(); + ks.add(owlFile); + OWLAPIReasoner owlapireasoner = new OWLAPIReasoner(ks); + owlapireasoner.init(); + + // close + OntologyCloserOWLAPI oc = new OntologyCloserOWLAPI(owlapireasoner); + oc.testForTransitiveProperties(true); + System.out.println("Attempting to close"); + oc.applyNumberRestrictionsConcise(); + System.out.println("Finished, preparing output"); + + // save + oc.writeOWLFile(outputURI); + + } catch (Exception e) { + e.printStackTrace(); + } + } + +} Copied: trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java (from rev 808, trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java 2008-04-22 15:23:38 UTC (rev 810) @@ -0,0 +1,318 @@ +/** + * Copyright (C) 2007-2008, 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; + +import java.io.File; +import java.text.DecimalFormat; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Random; +import java.util.Set; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.cli.Start; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.learningproblems.PosNegLP; +import org.dllearner.learningproblems.PosOnlyLP; +import org.dllearner.utilities.Datastructures; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.Stat; + +/** + * Performs cross validation for the given problem. Supports + * k-fold cross-validation and leave-one-out cross-validation. + * + * @author Jens Lehmann + * + */ +public class CrossValidation { + + private static Logger logger = Logger.getRootLogger(); + + public static void main(String[] args) { + File file = new File(args[0]); + + boolean leaveOneOut = false; + int folds = 10; + + // use second argument as number of folds; if not specified + // leave one out cross validation is used + if(args.length > 1) + folds = Integer.parseInt(args[1]); + else + leaveOneOut = true; + + if(folds < 2) { + System.out.println("At least 2 fold needed."); + System.exit(0); + } + + // 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.WARN); + // disable OWL API info output + java.util.logging.Logger.getLogger("").setLevel(java.util.logging.Level.WARNING); + + new CrossValidation(file, folds, leaveOneOut); + + } + + public CrossValidation(File file, int folds, boolean leaveOneOut) { + + DecimalFormat df = new DecimalFormat(); + ComponentManager cm = ComponentManager.getInstance(); + + // the first read of the file is used to detect the examples + // and set up the splits correctly according to our validation + // method + Start start = null; + try { + start = new Start(file); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + LearningProblem lp = start.getLearningProblem(); + ReasoningService rs = start.getReasoningService(); + + // the training and test sets used later on + List<Set<Individual>> trainingSetsPos = new LinkedList<Set<Individual>>(); + List<Set<Individual>> trainingSetsNeg = new LinkedList<Set<Individual>>(); + List<Set<Individual>> testSetsPos = new LinkedList<Set<Individual>>(); + List<Set<Individual>> testSetsNeg = new LinkedList<Set<Individual>>(); + + if(lp instanceof PosNegLP) { + + // get examples and shuffle them to + Set<Individual> posExamples = ((PosNegLP)lp).getPositiveExamples(); + List<Individual> posExamplesList = new LinkedList<Individual>(posExamples); + Collections.shuffle(posExamplesList, new Random(1)); + Set<Individual> negExamples = ((PosNegLP)lp).getNegativeExamples(); + List<Individual> negExamplesList = new LinkedList<Individual>(negExamples); + Collections.shuffle(negExamplesList, new Random(2)); + + // sanity check whether nr. of folds makes sense for this benchmark + if(!leaveOneOut && (posExamples.size()<folds && negExamples.size()<folds)) { + System.out.println("The number of folds is higher than the number of " + + "positive/negative examples. This can result in empty test sets. Exiting."); + System.exit(0); + } + + if(leaveOneOut) { + // note that leave-one-out is not identical to k-fold with + // k = nr. of examples in the current implementation, because + // with n folds and n examples there is no guarantee that a fold + // is never empty (this is an implementation issue) + int nrOfExamples = posExamples.size() + negExamples.size(); + for(int i = 0; i < nrOfExamples; i++) { + // ... + } + System.out.println("Leave-one-out not supported yet."); + System.exit(1); + } else { + // calculating where to split the sets, ; note that we split + // positive and negative examples separately such that the + // distribution of positive and negative examples remains similar + // (note that there better but more complex ways to implement this, + // which guarantee that the sum of the elements of a fold for pos + // and neg differs by at most 1 - it can differ by 2 in our implementation, + // e.g. with 3 folds, 4 pos. examples, 4 neg. examples) + int[] splitsPos = calculateSplits(posExamples.size(),folds); + int[] splitsNeg = calculateSplits(negExamples.size(),folds); + +// System.out.println(splitsPos[0]); +// System.out.println(splitsNeg[0]); + + // calculating training and test sets + for(int i=0; i<folds; i++) { + Set<Individual> testPos = getTestingSet(posExamplesList, splitsPos, i); + Set<Individual> testNeg = getTestingSet(negExamplesList, splitsNeg, i); + testSetsPos.add(i, testPos); + testSetsNeg.add(i, testNeg); + trainingSetsPos.add(i, getTrainingSet(posExamples, testPos)); + trainingSetsNeg.add(i, getTrainingSet(negExamples, testNeg)); + } + + } + + } else if(lp instanceof PosOnlyLP) { + System.out.println("Cross validation for positive only learning not supported yet."); + System.exit(0); + // Set<Individual> posExamples = ((PosOnlyLP)lp).getPositiveExamples(); + // int[] splits = calculateSplits(posExamples.size(),folds); + } else { + System.out.println("Cross validation for learning problem " + lp + " not supported."); + System.exit(0); + } + + // statistical values + Stat runtime = new Stat(); + Stat accuracy = new Stat(); + Stat length = new Stat(); + + // run the algorithm + for(int currFold=0; currFold<folds; currFold++) { + // we always perform a full initialisation to make sure that + // no objects are reused + try { + start = new Start(file); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + lp = start.getLearningProblem(); + Set<String> pos = Datastructures.individualSetToStringSet(trainingSetsPos.get(currFold)); + Set<String> neg = Datastructures.individualSetToStringSet(trainingSetsNeg.get(currFold)); + cm.applyConfigEntry(lp, "positiveExamples", pos); + cm.applyConfigEntry(lp, "negativeExamples", neg); +// System.out.println("pos: " + pos.size()); +// System.out.println("neg: " + neg.size()); +// System.exit(0); + + // es fehlt init zwischendurch + + LearningAlgorithm la = start.getLearningAlgorithm(); + // init again, because examples have changed + try { + la.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + long algorithmStartTime = System.nanoTime(); + la.start(); + long algorithmDuration = System.nanoTime() - algorithmStartTime; + runtime.addNumber(algorithmDuration/(double)1000000000); + + Description concept = la.getBestSolution(); + + Set<Individual> tmp = rs.instanceCheck(concept, testSetsPos.get(currFold)); + Set<Individual> tmp2 = Helper.difference(testSetsPos.get(currFold), tmp); + Set<Individual> tmp3 = rs.instanceCheck(concept, testSetsNeg.get(currFold)); + + System.out.println("test set errors pos: " + tmp2); + System.out.println("test set errors neg: " + tmp3); + + // calculate training accuracies + int trainingCorrectPosClassified = getCorrectPosClassified(rs, concept, trainingSetsPos.get(currFold)); + int trainingCorrectNegClassified = getCorrectNegClassified(rs, concept, trainingSetsNeg.get(currFold)); + int trainingCorrectExamples = trainingCorrectPosClassified + trainingCorrectNegClassified; + double trainingAccuracy = 100*((double)trainingCorrectExamples/(trainingSetsPos.get(currFold).size()+ + trainingSetsNeg.get(currFold).size())); + + // calculate test accuracies + int correctPosClassified = getCorrectPosClassified(rs, concept, testSetsPos.get(currFold)); + int correctNegClassified = getCorrectNegClassified(rs, concept, testSetsNeg.get(currFold)); + int correctExamples = correctPosClassified + correctNegClassified; + double currAccuracy = 100*((double)correctExamples/(testSetsPos.get(currFold).size()+ + testSetsNeg.get(currFold).size())); + accuracy.addNumber(currAccuracy); + + length.addNumber(concept.getLength()); + + System.out.println("fold " + currFold + " (" + file + "):"); + System.out.println(" training: " + pos.size() + " positive and " + neg.size() + " negative examples"); + System.out.println(" testing: " + correctPosClassified + "/" + testSetsPos.get(currFold).size() + " correct positives, " + + correctNegClassified + "/" + testSetsNeg.get(currFold).size() + " correct negatives"); + System.out.println(" concept: " + concept); + System.out.println(" accuracy: " + df.format(currAccuracy) + "% (" + df.format(trainingAccuracy) + "% on training set)"); + System.out.println(" length: " + df.format(concept.getLength())); + System.out.println(" runtime: " + df.format(algorithmDuration/(double)1000000000) + "s"); + + // free all resources + start.getReasoningService().releaseKB(); + cm.freeAllComponents(); + } + + System.out.println(); + System.out.println("Finished " + folds + "-folds cross-validation on " + file + "."); + System.out.println("runtime: " + statOutput(df, runtime, "s")); + System.out.println("length: " + statOutput(df, length, "")); + System.out.println("accuracy: " + statOutput(df, accuracy, "%")); + + } + + private int getCorrectPosClassified(ReasoningService rs, Description concept, Set<Individual> testSetPos) { + return rs.instanceCheck(concept, testSetPos).size(); + } + + private int getCorrectNegClassified(ReasoningService rs, Description concept, Set<Individual> testSetNeg) { + return testSetNeg.size() - rs.instanceCheck(concept, testSetNeg).size(); + } + + private Set<Individual> getTestingSet(List<Individual> examples, int[] splits, int fold) { + int fromIndex; + // we either start from 0 or after the last fold ended + if(fold == 0) + fromIndex = 0; + else + fromIndex = splits[fold-1]; + // the split corresponds to the ends of the folds + int toIndex = splits[fold]; + +// System.out.println("from " + fromIndex + " to " + toIndex); + + Set<Individual> testingSet = new HashSet<Individual>(); + // +1 because 2nd element is exclusive in subList method + testingSet.addAll(examples.subList(fromIndex, toIndex)); + return testingSet; + } + + private Set<Individual> getTrainingSet(Set<Individual> examples, Set<Individual> testingSet) { + return Helper.difference(examples, testingSet); + } + + // takes nr. of examples and the nr. of folds for this examples; + // returns an array which says where each fold ends, i.e. + // splits[i] is the index of the last element of fold i in the examples + private int[] calculateSplits(int nrOfExamples, int folds) { + int[] splits = new int[folds]; + for(int i=1; i<=folds; i++) { + // we always round up to the next integer + splits[i-1] = (int)Math.ceil(i*nrOfExamples/(double)folds); + } + return splits; + } + + private String statOutput(DecimalFormat df, Stat stat, String unit) { + String str = "av. " + df.format(stat.getMean()) + unit; + str += " (deviation " + df.format(stat.getStandardDeviation()) + unit + "; "; + str += "min " + df.format(stat.getMin()) + unit + "; "; + str += "max " + df.format(stat.getMax()) + unit + ")"; + return str; + } + +} Copied: trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java (from rev 808, trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java 2008-04-22 15:23:38 UTC (rev 810) @@ -0,0 +1,35 @@ +package org.dllearner.scripts; +import java.io.File; +import java.net.URI; + +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.io.RDFXMLOntologyFormat; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyManager; +public class NT2RDF { + + + public static void main(String[] args) { + try { + String ontopath=args[0]; + URI inputURI = new File(ontopath).toURI(); + + // outputURI + String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); + ontopath = ontopath.replace("." + ending, ".rdf" ); + URI outputURI = new File(ontopath).toURI(); + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(inputURI); + manager.saveOntology(ontology, new RDFXMLOntologyFormat(), outputURI); + // Remove the ontology from the manager + manager.removeOntology(ontology.getURI()); + } + catch (Exception e) { + System.out.println("The ontology could not be created: " + e.getMessage()); + } + + } + } + + Copied: trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java (from rev 809, trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/SPARQLPreparation.java 2008-04-22 15:23:38 UTC (rev 810) @@ -0,0 +1,176 @@ +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; + } + +} Deleted: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 15:19:07 UTC (rev 809) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 15:23:38 UTC (rev 810) @@ -1,176 +0,0 @@ -package org.dllearner.test; - -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; - } - -} Deleted: trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java 2008-04-22 15:19:07 UTC (rev 809) +++ trunk/src/dl-learner/org/dllearner/utilities/CloseOntology.java 2008-04-22 15:23:38 UTC (rev 810) @@ -1,65 +0,0 @@ -package org.dllearner.utilities; - -import java.io.File; -import java.net.URI; -import java.util.HashSet; -import java.util.Set; - -import org.dllearner.core.KnowledgeSource; -import org.dllearner.kb.OWLFile; -import org.dllearner.reasoning.OWLAPIReasoner; - -/** - * Script for closing an ontology OWLAPI produces extensive filesizes, when - * exporting output file ist named like input file, but recieves a - * "_closedConcise" at the end. - * - * Counts all roles of individuals and adds an Intersection (Concise) of - * ExactCardinalityRestriction to the ABox - * - */ -public class CloseOntology { - - /** - * @param argument0 - * simply the path to the owl ontology "examples/test.owl" - */ - public static void main(String[] args) { - String ontopath=""; - //ontopath="examples/carcinogenesis/carcinogenesis.owl"; - // inputURI - //ontopath = args[0]; - File file = new File(ontopath); - URI inputURI = file.toURI(); - - // outputURI - String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); - ontopath = ontopath.replace("." + ending, "_closedConcise." + ending); - file = new File(ontopath); - URI outputURI = file.toURI(); - - try { - // initializing reasoner - OWLFile owlFile = new OWLFile(); - owlFile.setURL(inputURI.toURL()); - Set<KnowledgeSource> ks = new HashSet<KnowledgeSource>(); - ks.add(owlFile); - OWLAPIReasoner owlapireasoner = new OWLAPIReasoner(ks); - owlapireasoner.init(); - - // close - OntologyCloserOWLAPI oc = new OntologyCloserOWLAPI(owlapireasoner); - oc.testForTransitiveProperties(true); - System.out.println("Attempting to close"); - oc.applyNumberRestrictionsConcise(); - System.out.println("Finished, preparing output"); - - // save - oc.writeOWLFile(outputURI); - - } catch (Exception e) { - e.printStackTrace(); - } - } - -} Deleted: trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java 2008-04-22 15:19:07 UTC (rev 809) +++ trunk/src/dl-learner/org/dllearner/utilities/CrossValidation.java 2008-04-22 15:23:38 UTC (rev 810) @@ -1,315 +0,0 @@ -/** - * Copyright (C) 2007-2008, 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.utilities; - -import java.io.File; -import java.text.DecimalFormat; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Random; -import java.util.Set; - -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.apache.log4j.SimpleLayout; -import org.dllearner.cli.Start; -import org.dllearner.core.ComponentInitException; -import org.dllearner.core.ComponentManager; -import org.dllearner.core.LearningAlgorithm; -import org.dllearner.core.LearningProblem; -import org.dllearner.core.ReasoningService; -import org.dllearner.core.owl.Description; -import org.dllearner.core.owl.Individual; -import org.dllearner.learningproblems.PosNegLP; -import org.dllearner.learningproblems.PosOnlyLP; - -/** - * Performs cross validation for the given problem. Supports - * k-fold cross-validation and leave-one-out cross-validation. - * - * @author Jens Lehmann - * - */ -public class CrossValidation { - - private static Logger logger = Logger.getRootLogger(); - - public static void main(String[] args) { - File file = new File(args[0]); - - boolean leaveOneOut = false; - int folds = 10; - - // use second argument as number of folds; if not specified - // leave one out cross validation is used - if(args.length > 1) - folds = Integer.parseInt(args[1]); - else - leaveOneOut = true; - - if(folds < 2) { - System.out.println("At least 2 fold needed."); - System.exit(0); - } - - // 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.WARN); - // disable OWL API info output - java.util.logging.Logger.getLogger("").setLevel(java.util.logging.Level.WARNING); - - new CrossValidation(file, folds, leaveOneOut); - - } - - public CrossValidation(File file, int folds, boolean leaveOneOut) { - - DecimalFormat df = new DecimalFormat(); - ComponentManager cm = ComponentManager.getInstance(); - - // the first read of the file is used to detect the examples - // and set up the splits correctly according to our validation - // method - Start start = null; - try { - start = new Start(file); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - LearningProblem lp = start.getLearningProblem(); - ReasoningService rs = start.getReasoningService(); - - // the training and test sets used later on - List<Set<Individual>> trainingSetsPos = new LinkedList<Set<Individual>>(); - List<Set<Individual>> trainingSetsNeg = new LinkedList<Set<Individual>>(); - List<Set<Individual>> testSetsPos = new LinkedList<Set<Individual>>(); - List<Set<Individual>> testSetsNeg = new LinkedList<Set<Individual>>(); - - if(lp instanceof PosNegLP) { - - // get examples and shuffle them to - Set<Individual> posExamples = ((PosNegLP)lp).getPositiveExamples(); - List<Individual> posExamplesList = new LinkedList<Individual>(posExamples); - Collections.shuffle(posExamplesList, new Random(1)); - Set<Individual> negExamples = ((PosNegLP)lp).getNegativeExamples(); - List<Individual> negExamplesList = new LinkedList<Individual>(negExamples); - Collections.shuffle(negExamplesList, new Random(2)); - - // sanity check whether nr. of folds makes sense for this benchmark - if(!leaveOneOut && (posExamples.size()<folds && negExamples.size()<folds)) { - System.out.println("The number of folds is higher than the number of " - + "positive/negative examples. This can result in empty test sets. Exiting."); - System.exit(0); - } - - if(leaveOneOut) { - // note that leave-one-out is not identical to k-fold with - // k = nr. of examples in the current implementation, because - // with n folds and n examples there is no guarantee that a fold - // is never empty (this is an implementation issue) - int nrOfExamples = posExamples.size() + negExamples.size(); - for(int i = 0; i < nrOfExamples; i++) { - // ... - } - System.out.println("Leave-one-out not supported yet."); - System.exit(1); - } else { - // calculating where to split the sets, ; note that we split - // positive and negative examples separately such that the - // distribution of positive and negative examples remains similar - // (note that there better but more complex ways to implement this, - // which guarantee that the sum of the elements of a fold for pos - // and neg differs by at most 1 - it can differ by 2 in our implementation, - // e.g. with 3 folds, 4 pos. examples, 4 neg. examples) - int[] splitsPos = calculateSplits(posExamples.size(),folds); - int[] splitsNeg = calculateSplits(negExamples.size(),folds); - -// System.out.println(splitsPos[0]); -// System.out.println(splitsNeg[0]); - - // calculating training and test sets - for(int i=0; i<folds; i++) { - Set<Individual> testPos = getTestingSet(posExamplesList, splitsPos, i); - Set<Individual> testNeg = getTestingSet(negExamplesList, splitsNeg, i); - testSetsPos.add(i, testPos); - testSetsNeg.add(i, testNeg); - trainingSetsPos.add(i, getTrainingSet(posExamples, testPos)); - trainingSetsNeg.add(i, getTrainingSet(negExamples, testNeg)); - } - - } - - } else if(lp instanceof PosOnlyLP) { - System.out.println("Cross validation for positive only learning not supported yet."); - System.exit(0); - // Set<Individual> posExamples = ((PosOnlyLP)lp).getPositiveExamples(); - // int[] splits = calculateSplits(posExamples.size(),folds); - } else { - System.out.println("Cross validation for learning problem " + lp + " not supported."); - System.exit(0); - } - - // statistical values - Stat runtime = new Stat(); - Stat accuracy = new Stat(); - Stat length = new Stat(); - - // run the algorithm - for(int currFold=0; currFold<folds; currFold++) { - // we always perform a full initialisation to make sure that - // no objects are reused - try { - start = new Start(file); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - lp = start.getLearningProblem(); - Set<String> pos = Datastructures.individualSetToStringSet(trainingSetsPos.get(currFold)); - Set<String> neg = Datastructures.individualSetToStringSet(trainingSetsNeg.get(currFold)); - cm.applyConfigEntry(lp, "positiveExamples", pos); - cm.applyConfigEntry(lp, "negativeExamples", neg); -// System.out.println("pos: " + pos.size()); -// System.out.println("neg: " + neg.size()); -// System.exit(0); - - // es fehlt init zwischendurch - - LearningAlgorithm la = start.getLearningAlgorithm(); - // init again, because examples have changed - try { - la.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - long algorithmStartTime = System.nanoTime(); - la.start(); - long algorithmDuration = System.nanoTime() - algorithmStartTime; - runtime.addNumber(algorithmDuration/(double)1000000000); - - Description concept = la.getBestSolution(); - - Set<Individual> tmp = rs.instanceCheck(concept, testSetsPos.get(currFold)); - Set<Individual> tmp2 = Helper.difference(testSetsPos.get(currFold), tmp); - Set<Individual> tmp3 = rs.instanceCheck(concept, testSetsNeg.get(currFold)); - - System.out.println("test set errors pos: " + tmp2); - System.out.println("test set errors neg: " + tmp3); - - // calculate training accuracies - int trainingCorrectPosClassified = getCorrectPosClassified(rs, concept, trainingSetsPos.get(currFold)); - int trainingCorrectNegClassified = getCorrectNegClassified(rs, concept, trainingSetsNeg.get(currFold)); - int trainingCorrectExamples = trainingCorrectPosClassified + trainingCorrectNegClassified; - double trainingAccuracy = 100*((double)trainingCorrectExamples/(trainingSetsPos.get(currFold).size()+ - trainingSetsNeg.get(currFold).size())); - - // calculate test accuracies - int correctPosClassified = getCorrectPosClassified(rs, concept, testSetsPos.get(currFold)); - int correctNegClassified = getCorrectNegClassified(rs, concept, testSetsNeg.get(currFold)); - int correctExamples = correctPosClassified + correctNegClassified; - double currAccuracy = 100*((double)correctExamples/(testSetsPos.get(currFold).size()+ - testSetsNeg.get(currFold).size())); - accuracy.addNumber(currAccuracy); - - length.addNumber(concept.getLength()); - - System.out.println("fold " + currFold + " (" + file + "):"); - System.out.println(" training: " + pos.size() + " positive and " + neg.size() + " negative examples"); - System.out.println(" testing: " + correctPosClassified + "/" + testSetsPos.get(currFold).size() + " correct positives, " - + correctNegClassified + "/" + testSetsNeg.get(currFold).size() + " correct negatives"); - System.out.println(" concept: " + concept); - System.out.println(" accuracy: " + df.format(currAccuracy) + "% (" + df.format(trainingAccuracy) + "% on training set)"); - System.out.println(" length: " + df.format(concept.getLength())); - System.out.println(" runtime: " + df.format(algorithmDuration/(double)1000000000) + "s"); - - // free all resources - start.getReasoningService().releaseKB(); - cm.freeAllComponents(); - } - - System.out.println(); - System.out.println("Finished " + folds + "-folds cross-validation on " + file + "."); - System.out.println("runtime: " + statOutput(df, runtime, "s")); - System.out.println("length: " + statOutput(df, length, "")); - System.out.println("accuracy: " + statOutput(df, accuracy, "%")); - - } - - private int getCorrectPosClassified(ReasoningService rs, Description concept, Set<Individual> testSetPos) { - return rs.instanceCheck(concept, testSetPos).size(); - } - - private int getCorrectNegClassified(ReasoningService rs, Description concept, Set<Individual> testSetNeg) { - return testSetNeg.size() - rs.instanceCheck(concept, testSetNeg).size(); - } - - private Set<Individual> getTestingSet(List<Individual> examples, int[] splits, int fold) { - int fromIndex; - // we either start from 0 or after the last fold ended - if(fold == 0) - fromIndex = 0; - else - fromIndex = splits[fold-1]; - // the split corresponds to the ends of the folds - int toIndex = splits[fold]; - -// System.out.println("from " + fromIndex + " to " + toIndex); - - Set<Individual> testingSet = new HashSet<Individual>(); - // +1 because 2nd element is exclusive in subList method - testingSet.addAll(examples.subList(fromIndex, toIndex)); - return testingSet; - } - - private Set<Individual> getTrainingSet(Set<Individual> examples, Set<Individual> testingSet) { - return Helper.difference(examples, testingSet); - } - - // takes nr. of examples and the nr. of folds for this examples; - // returns an array which says where each fold ends, i.e. - // splits[i] is the index of the last element of fold i in the examples - private int[] calculateSplits(int nrOfExamples, int folds) { - int[] splits = new int[folds]; - for(int i=1; i<=folds; i++) { - // we always round up to the next integer - splits[i-1] = (int)Math.ceil(i*nrOfExamples/(double)folds); - } - return splits; - } - - private String statOutput(DecimalFormat df, Stat stat, String unit) { - String str = "av. " + df.format(stat.getMean()) + unit; - str += " (deviation " + df.format(stat.getStandardDeviation()) + unit + "; "; - str += "min " + df.format(stat.getMin()) + unit + "; "; - str += "max " + df.format(stat.getMax()) + unit + ")"; - return str; - } - -} Deleted: trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java 2008-04-22 15:19:07 UTC (rev 809) +++ trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java 2008-04-22 15:23:38 UTC (rev 810) @@ -1,35 +0,0 @@ -package org.dllearner.utilities; -import java.io.File; -import java.net.URI; - -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.io.RDFXMLOntologyFormat; -import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyManager; -public class NT2RDF { - - - public static void main(String[] args) { - try { - String ontopath=args[0]; - URI inputURI = new File(ontopath).toURI(); - - // outputURI - String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); - ontopath = ontopath.replace("." + ending, ".rdf" ); - URI outputURI = new File(ontopath).toURI(); - - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLOntology ontology = manager.loadOntologyFromPhysicalURI(inputURI); - manager.saveOntology(ontology, new RDFXMLOntologyFormat(), outputURI); - // Remove the ontology from the manager - manager.removeOntology(ontology.getURI()); - } - catch (Exception e) { - System.out.println("The ontology could not be created: " + e.getMessage()); - } - - } - } - - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 15:19:20
|
Revision: 809 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=809&view=rev Author: kurzum Date: 2008-04-22 08:19:07 -0700 (Tue, 22 Apr 2008) Log Message: ----------- finished sparql script, some fine tuning needed Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.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 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 15:19:07 UTC (rev 809) @@ -103,8 +103,11 @@ //extended Options private long maxExecutionTimeInSeconds; + private boolean maxExecutionTimeShown=false; private long minExecutionTimeInSeconds; + private boolean minExecutionTimeShown=false; private int guaranteeXgoodDescriptions; + private boolean guaranteeXgoodShown=false; // if set to false we do not test properness; this may seem wrong // but the disadvantage of properness testing are additional reasoner @@ -185,6 +188,7 @@ private int conceptTestsReasoner = 0; // time variables + private long runtime; private long algorithmStartTime; private long propernessCalcTimeNs = 0; private long propernessCalcReasoningTimeNs = 0; @@ -257,7 +261,7 @@ } public void start() { - + runtime=System.currentTimeMillis(); // TODO: write a JUnit test for this problem (long-lasting or infinite loops because // redundant children of a node are called recursively after when the node is extended // twice) @@ -387,26 +391,37 @@ Files.appendFile(searchTreeFile, treeString); } + + if(maxExecutionTimeReached()) { stop=true;} + solutionFound = (guaranteeXgoodDescriptions() ); + solutionFound = (minExecutionTimeReached()&& solutionFound); + //logger.info(minExecutionTimeReached()+"aaaaaaa "+solutions.size()+"::"+guaranteeXgoodDescriptions); + //logger.info(solutionFound+"aaaaaaa "+stop); + + // Anzahl Schleifendurchläufe loop++; - } - if(maxExecutionTimeReached()) { stop=true;} - boolean minSolutionrequirement = (solutions.size()>guaranteeXgoodDescriptions); + }//end while + - if(solutionFound && minExecutionTimeReached() && minSolutionrequirement) { + + if(solutionFound ) { logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); - logger.info("\nsolutions:"); + logger.info("\nsolutions ( top 5 ):"); + int show=1; for(Description c : solutions) { - logger.info(" " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); + logger.info(show+": " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); //TODO remove this line maybe // watch for String.replace Quick hack - logger.info(" MANCHESTER: " + + logger.info(" MANCHESTER: " + c.toManchesterSyntaxString(baseURI, new HashMap<String,String>()). replace("\"", "")); - logger.info(" KBSyntax: " + c.toKBSyntaxString()); + logger.info(" KBSyntax: " + c.toKBSyntaxString()); + if(show>=5){break;} + show++; } } logger.debug("size of candidate set: " + candidates.size()); @@ -1029,13 +1044,31 @@ return startNode; } + private boolean guaranteeXgoodDescriptions(){ + if(guaranteeXgoodShown)return true; + if(solutions.size()>guaranteeXgoodDescriptions){ + logger.info("Minimum number of good descriptions reached, stopping now..."); + guaranteeXgoodShown=true; + return true;} + else return false; + + } + + private boolean maxExecutionTimeReached(){ if(maxExecutionTimeInSeconds==0)return false; - long needed = System.nanoTime()- this.algorithmStartTime; + if(maxExecutionTimeShown)return true; + long needed = System.currentTimeMillis()- this.runtime; //millisec /100 //seconds /1000 - long maxNanoSeconds = maxExecutionTimeInSeconds *100*1000 ; - if(maxNanoSeconds<needed)return true; + long maxMilliSeconds = maxExecutionTimeInSeconds *1000 ; + //System.out.println("max"+maxMilliSeconds); + //System.out.println(needed); + + if(maxMilliSeconds<needed){ + logger.info("Maximum time reached, stopping now..."); + maxExecutionTimeShown=true; + return true;} else return false; } @@ -1045,12 +1078,19 @@ * @return true */ private boolean minExecutionTimeReached(){ + if(minExecutionTimeShown)return true; //if(minExecutionTimeInSeconds==0)return true; - long needed = System.nanoTime()- this.algorithmStartTime; + long needed = System.currentTimeMillis()- this.runtime; //millisec /100 //seconds /1000 - long minNanoSeconds = minExecutionTimeInSeconds *100*1000 ; - if(minNanoSeconds<needed)return true; + long minMilliSeconds = minExecutionTimeInSeconds *1000 ; + //System.out.println("min"+minMilliSeconds); + //System.out.println(needed); + + if(minMilliSeconds<needed){ + logger.info("Minimum time reached, stopping when next solution is found"); + minExecutionTimeShown=true; + return true;} else return false; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-22 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/ExtractionAlgorithm.java 2008-04-22 15:19:07 UTC (rev 809) @@ -23,6 +23,7 @@ import java.util.HashSet; import java.util.Vector; +import org.apache.log4j.Logger; import org.dllearner.kb.sparql.configuration.Configuration; import org.dllearner.kb.sparql.datastructure.ClassNode; import org.dllearner.kb.sparql.datastructure.InstanceNode; @@ -40,7 +41,8 @@ private int recursionDepth = 1; // private boolean getAllSuperClasses = true; // private boolean closeAfterRecursion = true; - private boolean print_flag = false; + private static Logger logger = Logger + .getLogger(ExtractionAlgorithm.class); public ExtractionAlgorithm(Configuration Configuration) { this.configuration = Configuration; @@ -79,7 +81,7 @@ System.out.println(n); Vector<Node> v = new Vector<Node>(); v.add(n); - p("StartVector: " + v); + logger.info("StartVector: " + v); // n.expand(tsp, this.Manipulator); // Vector<Node> second= for (int x = 1; x <= recursionDepth; x++) { @@ -87,7 +89,7 @@ Vector<Node> tmp = new Vector<Node>(); while (v.size() > 0) { Node tmpNode = v.remove(0); - p("Expanding " + tmpNode); + logger.info("Expanding " + tmpNode); // System.out.println(this.Manipulator); // these are the new not expanded nodes // the others are saved in connection with the original node @@ -97,14 +99,14 @@ tmp.addAll(tmpVec); } v = tmp; - System.out.println("Recursion counter: " + x + " with " + v.size() + logger.info("Recursion counter: " + x + " with " + v.size() + " Nodes remaining, needed: " + (System.currentTimeMillis() - time) + "ms"); time = System.currentTimeMillis(); } HashSet<String> hadAlready = new HashSet<String>(); - p("Get all superclasses"); + logger.info("Get all superclasses"); //p(configuration.toString()); // gets All Class Nodes and expands them further if (this.configuration.isGetAllSuperClasses()) { @@ -126,10 +128,10 @@ configuration); if (this.configuration.isCloseAfterRecursion()) { while (instances.size() > 0) { - p("Getting classes for remaining instances: " + logger.info("Getting classes for remaining instances: " + instances.size()); Node next = instances.remove(0); - p("Getting classes for: " + next); + logger.info("Getting classes for: " + next); classes.addAll(next.expand(tsqc, manipulator)); if (classes.size() >= manipulator.breakSuperClassRetrievalAfter) { break; @@ -139,14 +141,14 @@ Vector<Node> tmp = new Vector<Node>(); int i = 0; while (classes.size() > 0) { - p("Remaining classes: " + classes.size()); + logger.info("Remaining classes: " + classes.size()); // Iterator<Node> it=classes.iterator(); // Node next =(Node) it.next(); // classes.remove(next); Node next = classes.remove(0); if (!hadAlready.contains(next.getURI().toString())) { - p("Expanding: " + next); + logger.info("Expanding: " + next); // System.out.println(hadAlready.size()); hadAlready.add(next.getURI().toString()); tmp = next.expand(typedSparqlQuery, manipulator); @@ -172,9 +174,6 @@ } - void p(String s) { - if (print_flag) - System.out.println(s); - } + } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-22 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-04-22 15:19:07 UTC (rev 809) @@ -67,10 +67,10 @@ public ResultSet send() { isRunning = true; ResultSet rs=null; - logger.info(queryString); + logger.trace(queryString); String service = endpoint.getURL().toString(); - logger.info(endpoint.getURL().toString()); + logger.trace(endpoint.getURL().toString()); // Jena access to SPARQL endpoint queryExecution = new QueryEngineHTTP(service, queryString); for (String dgu : endpoint.getDefaultGraphURIs()) { @@ -81,14 +81,14 @@ } logger.info("query SPARQL server"); try{ - //TODO after overnext Jena release + //TODO remove after overnext Jena release HttpQuery.urlLimit = 3*1024 ; rs = queryExecution.execSelect(); json=SparqlQuery.getAsJSON(rs); - logger.info(rs.getResultVars().toString()); + logger.trace(rs.getResultVars().toString()); } catch (Exception e){ sendException=new SparqlQueryException(e.getMessage()); - logger.info("Exception when querying Sparql Endpoint"); + logger.error("Exception when querying Sparql Endpoint"); } isRunning = false; return rs; Modified: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 15:19:07 UTC (rev 809) @@ -4,6 +4,12 @@ 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; @@ -19,7 +25,7 @@ static Cache c; static SparqlEndpoint se; - + private static Logger logger = Logger.getRootLogger(); /** * @param args */ @@ -27,6 +33,8 @@ init(); try { + + SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); //concepts.add("\"http://dbpedia.org/class/yago/Person100007846\""); @@ -52,13 +60,13 @@ negExamples.remove(string2); }; }*/ - System.out.println(negExamples.size()); + //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()); + //System.out.println(posExamples.size()); + //System.out.println(negExamples.size()); // new ConfWriter().writeSPARQL("aaa.conf", posExamples, negExamples, url, new TreeSet<String>()); @@ -137,6 +145,14 @@ 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); + } Modified: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 13:31:50 UTC (rev 808) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 15:19:07 UTC (rev 809) @@ -24,6 +24,7 @@ public void learn(SortedSet<String> posExamples,SortedSet<String> negExamples, String uri, SortedSet<String> ignoredConcepts){ + ComponentManager cm = ComponentManager.getInstance(); LearningAlgorithm la = null; ReasoningService rs = null; @@ -68,8 +69,8 @@ cm.applyConfigEntry(la,"useExistsConstructor",true); cm.applyConfigEntry(la,"useCardinalityRestrictions",false); cm.applyConfigEntry(la,"useNegation",false); - cm.applyConfigEntry(la,"minExecutionTimeInSeconds",10); - cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",10); + cm.applyConfigEntry(la,"minExecutionTimeInSeconds",0); + cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",20); //cm.applyConfigEntry(la,"quiet",false); if(ignoredConcepts.size()>0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-04-22 13:31:55
|
Revision: 808 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=808&view=rev Author: lorenz_b Date: 2008-04-22 06:31:50 -0700 (Tue, 22 Apr 2008) Log Message: ----------- added method moveIndividual() to class ORE Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-04-22 13:26:06 UTC (rev 807) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-04-22 13:31:50 UTC (rev 808) @@ -180,6 +180,7 @@ OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); OWLDescription oldConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(concept); + OWLOntology ontology = reasoner.getOWLAPIOntologies().get(0); OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); @@ -192,7 +193,6 @@ OWLAxiom axiomOWLAPI = factory.getOWLEquivalentClassesAxiom(ds); - AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); try { @@ -214,9 +214,6 @@ public void deleteIndividual(Individual ind){ - - - OWLOntology ontology = reasoner.getOWLAPIOntologies().get(0); OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); @@ -244,10 +241,52 @@ } remover.reset(); - + try { + manager.saveOntology(ontology); + } catch (UnknownOWLOntologyException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyStorageException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + public void moveIndividual(Individual ind, Description oldDescription, Description newDescription){ + + OWLOntology ontology = reasoner.getOWLAPIOntologies().get(0); + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLIndividual individualOWLAPI = null; + + + try { + individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + //Loeschen + OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); + individualOWLAPI.accept(remover); + + try { + manager.applyChanges(remover.getChanges()); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + remover.reset(); + + //Hinzufuegen + + } + + public static void main(String[] args){ @@ -262,7 +301,6 @@ System.err.println("Concepts :" + rs.getAtomicConcepts()); - test.setConcept(new NamedClass("http://example.com/father#father")); test.setPosNegExamples(); System.out.println(test.posExamples); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 13:26:09
|
Revision: 807 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=807&view=rev Author: kurzum Date: 2008-04-22 06:26:06 -0700 (Tue, 22 Apr 2008) Log Message: ----------- fixed log level Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/ComponentManager.java Modified: trunk/src/dl-learner/org/dllearner/core/ComponentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-04-22 13:07:07 UTC (rev 806) +++ trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-04-22 13:26:06 UTC (rev 807) @@ -40,6 +40,7 @@ import java.util.TreeMap; import java.util.TreeSet; +import org.apache.log4j.Logger; import org.dllearner.cli.Start; import org.dllearner.core.config.ConfigEntry; import org.dllearner.core.config.ConfigOption; @@ -61,6 +62,9 @@ */ public class ComponentManager { + private static Logger logger = Logger + .getLogger(ComponentManager.class); + private ComponentPool pool = new ComponentPool(); // these variables are valid for the complete lifetime of a DL-Learner session @@ -213,10 +217,10 @@ */ @SuppressWarnings( { "unchecked" }) public <T> void applyConfigEntry(Component component, String optionName, T value) { - System.out.println(component); - System.out.println(optionName); - System.out.println(value); - System.out.println(value.getClass()); + logger.trace(component); + logger.trace(optionName); + logger.trace(value); + logger.trace(value.getClass()); // first we look whether the component is registered if (components.contains(component.getClass())) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-22 13:07:12
|
Revision: 806 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=806&view=rev Author: kurzum Date: 2008-04-22 06:07:07 -0700 (Tue, 22 Apr 2008) Log Message: ----------- loads of little changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/core/ComponentManager.java trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java trunk/src/dl-learner/org/dllearner/examples/KRKModular.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.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/test/SPARQLPreparation.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-04-22 13:07:07 UTC (rev 806) @@ -38,8 +38,8 @@ import org.dllearner.core.config.DoubleConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; import org.dllearner.core.config.StringConfigOption; +import org.dllearner.core.owl.Description; import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.Description; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.learningproblems.PosNegLP; import org.dllearner.learningproblems.PosOnlyDefinitionLP; @@ -99,13 +99,18 @@ private boolean useOverlyGeneralList = true; private boolean useShortConceptConstruction = true; private boolean improveSubsumptionHierarchy = true; - private boolean useAllConstructor = true; - private boolean useExistsConstructor = true; - private boolean useCardinalityRestrictions = true; - private boolean useNegation = true; - private boolean useBooleanDatatypes = true; + private boolean useAllConstructor = CommonConfigOptions.useAllConstructorDefault; + private boolean useExistsConstructor = CommonConfigOptions.useExistsConstructorDefault; + private boolean useCardinalityRestrictions = CommonConfigOptions.useCardinalityRestrictionsDefault; + private boolean useNegation = CommonConfigOptions.useNegationDefault; + private boolean useBooleanDatatypes = CommonConfigOptions.useBooleanDatatypesDefault; private double noisePercentage = 0.0; private NamedClass startClass = null; + //extended Options + //in seconds + private int maxExecutionTimeInSeconds = CommonConfigOptions.maxExecutionTimeInSecondsDefault; + private int minExecutionTimeInSeconds = CommonConfigOptions.minExecutionTimeInSecondsDefault; + private int guaranteeXgoodDescriptions = CommonConfigOptions.guaranteeXgoodDescriptionsDefault; // Variablen zur Einstellung der Protokollierung // boolean quiet = false; @@ -164,7 +169,9 @@ options.add(CommonConfigOptions.useCardinalityRestrictions()); options.add(CommonConfigOptions.useNegation()); options.add(CommonConfigOptions.useBooleanDatatypes()); - + options.add(CommonConfigOptions.maxExecutionTimeInSeconds()); + options.add(CommonConfigOptions.minExecutionTimeInSeconds()); + options.add(CommonConfigOptions.guaranteeXgoodDescriptions()); DoubleConfigOption noisePercentage = new DoubleConfigOption("noisePercentage", "the (approximated) percentage of noise within the examples"); noisePercentage.setLowerLimit(0); noisePercentage.setUpperLimit(100); @@ -226,6 +233,12 @@ useBooleanDatatypes = (Boolean) entry.getValue(); } else if(name.equals("startClass")) { startClass = new NamedClass((String)entry.getValue()); + }else if(name.equals("maxExecutionTimeInSeconds")) { + maxExecutionTimeInSeconds = (Integer) entry.getValue(); + }else if(name.equals("minExecutionTimeInSeconds")) { + minExecutionTimeInSeconds = (Integer) entry.getValue(); + }else if(name.equals("guaranteeXgoodDescriptions")) { + guaranteeXgoodDescriptions = (Integer) entry.getValue(); } } @@ -319,7 +332,10 @@ searchTreeFile, useTooWeakList, useOverlyGeneralList, - useShortConceptConstruction + useShortConceptConstruction, + maxExecutionTimeInSeconds, + minExecutionTimeInSeconds, + guaranteeXgoodDescriptions ); // note: used concepts and roles do not need to be passed // as argument, because it is sufficient to prepare the @@ -363,4 +379,13 @@ return algorithm.getStartNode(); } + + public void printBestSolutions(int nrOfSolutions){ + + algorithm.printBestSolutions(nrOfSolutions); + } + + + + } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-04-22 13:07:07 UTC (rev 806) @@ -101,6 +101,11 @@ private boolean useOverlyGeneralList = true; private boolean useShortConceptConstruction = true; + //extended Options + private long maxExecutionTimeInSeconds; + private long minExecutionTimeInSeconds; + private int guaranteeXgoodDescriptions; + // if set to false we do not test properness; this may seem wrong // but the disadvantage of properness testing are additional reasoner // queries and a search bias towards ALL r.something because @@ -188,6 +193,7 @@ private long redundancyCheckTimeNs = 0; private long evaluateSetCreationTimeNs = 0; private long improperConceptsRemovalTimeNs = 0; + // prefixes private String baseURI; @@ -206,7 +212,10 @@ File searchTreeFile, boolean useTooWeakList, boolean useOverlyGeneralList, - boolean useShortConceptConstruction + boolean useShortConceptConstruction, + int maxExecutionTimeInSeconds, + int minExecutionTimeInSeconds, + int guaranteeXgoodDescriptions ) { if(learningProblem instanceof PosNegLP) { PosNegLP lp = (PosNegLP) learningProblem; @@ -239,7 +248,10 @@ this.useTooWeakList = useTooWeakList; this.useOverlyGeneralList = useOverlyGeneralList; this.useShortConceptConstruction = useShortConceptConstruction; - baseURI = rs.getBaseURI(); + this.baseURI = rs.getBaseURI(); + this.maxExecutionTimeInSeconds=maxExecutionTimeInSeconds; + this.minExecutionTimeInSeconds=minExecutionTimeInSeconds; + this.guaranteeXgoodDescriptions = guaranteeXgoodDescriptions; // logger.setLevel(Level.DEBUG); } @@ -317,7 +329,7 @@ long reductionInterval = 500l * 1000000000l; long currentTime; - while(!solutionFound && !stop) { + while(!solutionFound && !stop ) { // print statistics at most once a second currentTime = System.nanoTime(); @@ -352,7 +364,8 @@ candidates.add(bestNode); // newCandidates has been filled during node expansion candidates.addAll(newCandidates); - candidatesStable.addAll(newCandidates); + candidatesStable.addAll(newCandidates); + // System.out.println("done"); if(writeSearchTree) { @@ -380,8 +393,10 @@ } - - if(solutionFound) { + if(maxExecutionTimeReached()) { stop=true;} + boolean minSolutionrequirement = (solutions.size()>guaranteeXgoodDescriptions); + + if(solutionFound && minExecutionTimeReached() && minSolutionrequirement) { logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); logger.info("\nsolutions:"); for(Description c : solutions) { @@ -732,6 +747,7 @@ long algorithmRuntime = System.nanoTime() - algorithmStartTime; if(!finalStats) { + ExampleBasedNode bestNode = candidatesStable.last(); // double accuracy = 100 * ((bestNode.getCoveredPositives().size() // + nrOfNegativeExamples - bestNode.getCoveredNegatives().size())/(double)nrOfExamples); @@ -989,6 +1005,19 @@ return best; } + + public void printBestSolutions(int nrOfSolutions){ + + int i=0; + for(ExampleBasedNode n : candidatesStable.descendingSet()) { + System.out.println(n.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + if(i==nrOfSolutions) + return ; + i++; + } + + } + public Score getSolutionScore() { if(posOnly) return posOnlyLearningProblem.computeScore(getBestSolution()); @@ -1000,4 +1029,30 @@ return startNode; } + private boolean maxExecutionTimeReached(){ + if(maxExecutionTimeInSeconds==0)return false; + long needed = System.nanoTime()- this.algorithmStartTime; + //millisec /100 + //seconds /1000 + long maxNanoSeconds = maxExecutionTimeInSeconds *100*1000 ; + if(maxNanoSeconds<needed)return true; + else return false; + + } + + /** + * true if minExecutionTime reached + * @return true + */ + private boolean minExecutionTimeReached(){ + //if(minExecutionTimeInSeconds==0)return true; + long needed = System.nanoTime()- this.algorithmStartTime; + //millisec /100 + //seconds /1000 + long minNanoSeconds = minExecutionTimeInSeconds *100*1000 ; + if(minNanoSeconds<needed)return true; + else return false; + + } + } Modified: trunk/src/dl-learner/org/dllearner/core/ComponentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2008-04-22 13:07:07 UTC (rev 806) @@ -213,6 +213,10 @@ */ @SuppressWarnings( { "unchecked" }) public <T> void applyConfigEntry(Component component, String optionName, T value) { + System.out.println(component); + System.out.println(optionName); + System.out.println(value); + System.out.println(value.getClass()); // first we look whether the component is registered if (components.contains(component.getClass())) { Modified: trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/core/config/CommonConfigOptions.java 2008-04-22 13:07:07 UTC (rev 806) @@ -40,6 +40,9 @@ public static boolean useCardinalityRestrictionsDefault = true; public static boolean useNegationDefault = true; public static boolean useBooleanDatatypesDefault = true; + public static int maxExecutionTimeInSecondsDefault = 0; + public static int minExecutionTimeInSecondsDefault = 0; + public static int guaranteeXgoodDescriptionsDefault = 1; //public static double noisePercentageDefault = 0.0; @@ -105,4 +108,16 @@ public static BooleanConfigOption useBooleanDatatypes() { return new BooleanConfigOption("useBooleanDatatypes", "specifies whether boolean datatypes are used in the learning algorothm",useBooleanDatatypesDefault); } + + public static IntegerConfigOption maxExecutionTimeInSeconds() { + return new IntegerConfigOption("maxExecutionTimeInSeconds", "algorithm will stop after specified seconds",maxExecutionTimeInSecondsDefault); + } + + public static IntegerConfigOption minExecutionTimeInSeconds() { + return new IntegerConfigOption("minExecutionTimeInSeconds", "algorithm will run at least specified seconds",minExecutionTimeInSecondsDefault); + } + + public static IntegerConfigOption guaranteeXgoodDescriptions() { + return new IntegerConfigOption("guaranteeXgoodDescriptions", "algorithm will run until X good (100%) concept descritpions are found",guaranteeXgoodDescriptionsDefault); + } } Modified: trunk/src/dl-learner/org/dllearner/examples/KRKModular.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/KRKModular.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/examples/KRKModular.java 2008-04-22 13:07:07 UTC (rev 806) @@ -32,7 +32,6 @@ import org.dllearner.core.owl.ObjectPropertyAssertion; import org.dllearner.kb.KBFile; import org.dllearner.learningproblems.PosNegDefinitionLP; -import org.dllearner.learningproblems.PosNegLP; import org.dllearner.parser.KBParser; import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.reasoning.OWLAPIReasoner; @@ -258,9 +257,12 @@ r.init(); ReasoningService rs = new ReasoningService(r); + //cm.learningProblem(lpClass, reasoner) LearningProblem lp = new PosNegDefinitionLP(rs); - ((PosNegLP)lp).setPositiveExamples(pos); - ((PosNegLP)lp).setNegativeExamples(neg); + //cm.getConfigOptionValue(lp, ""); + cm.applyConfigEntry(lp, "positiveExamples",pos); + cm.applyConfigEntry(lp, "negativeExamples",neg); + lp.init(); la = cm.learningAlgorithm(ExampleBasedROLComponent.class, lp, rs); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-04-22 13:07:07 UTC (rev 806) @@ -405,6 +405,10 @@ // TODO Does this work? return kb; } + + public URL getNTripleURL(){ + return dumpFile; + } /*public static void main(String[] args) throws MalformedURLException { String query = "SELECT ?pred ?obj\n" Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/configuration/SparqlQueryType.java 2008-04-22 13:07:07 UTC (rev 806) @@ -95,6 +95,8 @@ pred.add("http://dbpedia.org/property/wikipage"); pred.add("http://dbpedia.org/property/wikiPageUsesTemplate"); pred.add("http://dbpedia.org/property/relatedInstance"); + pred.add("http://dbpedia.org/property/owner"); + pred.add("http://dbpedia.org/property/standard"); Set<String> obj = new HashSet<String>(); //obj.add("http://dbpedia.org/resource/Category:Wikipedia_"); @@ -108,7 +110,7 @@ obj.add("http://www.w3.org/2006/03/wn/wn20/instances/synset"); obj.add("http://www4.wiwiss.fu-berlin.de/flickrwrappr"); obj.add("http://www.w3.org/2004/02/skos/core"); - + return new SparqlQueryType("forbid", obj, pred, false); } public static SparqlQueryType YagoSpecialHierarchy(){ Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-04-22 13:07:07 UTC (rev 806) @@ -162,8 +162,11 @@ public void init() throws ComponentInitException { rc = new OWLAPIReasoner(sources); //TODO make it nice + + rc.setReasonerType(reasonerType); rc.init(); + try { atomicConcepts = rc.getAtomicConcepts(); Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-04-22 13:07:07 UTC (rev 806) @@ -58,6 +58,7 @@ import org.dllearner.core.owl.TypedConstant; import org.dllearner.core.owl.UntypedConstant; import org.dllearner.kb.OWLFile; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.utilities.ConceptComparator; import org.dllearner.utilities.RoleComparator; import org.semanticweb.owl.apibinding.OWLManager; @@ -180,9 +181,15 @@ Set<OWLOntology> allImports = new HashSet<OWLOntology>(); for(KnowledgeSource source : sources) { - // OWL files are read directly - if(source instanceof OWLFile) { - URL url = ((OWLFile)source).getURL(); + + if(source instanceof OWLFile || source instanceof SparqlKnowledgeSource ) { + URL url=null; + if(source instanceof OWLFile){ + url = ((OWLFile)source).getURL(); + } + else if(source instanceof SparqlKnowledgeSource) { + url=((SparqlKnowledgeSource)source).getNTripleURL(); + } try { OWLOntology ontology = manager.loadOntologyFromPhysicalURI(url.toURI()); Modified: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 20:21:36 UTC (rev 805) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-22 13:07:07 UTC (rev 806) @@ -8,7 +8,9 @@ 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; @@ -24,12 +26,14 @@ 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>(); @@ -50,11 +54,16 @@ }*/ System.out.println(negExamples.size()); negExamples.removeAll(posExamples); - - negExamples=shrink(negExamples,posExamples.size()*2); + 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(); Added: trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/ConfWriter.java 2008-04-22 13:07:07 UTC (rev 806) @@ -0,0 +1,155 @@ +package org.dllearner.utilities; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.core.owl.Individual; + +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); + } + + 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(getStandard(prefix)); + + buf.append( getPosAndNeg( pos, neg)); + + + writeToFile(filename, 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){ + 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 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; + for (String string : set) { + if(x>0)ret+=","; + ret+="\""+string+"\"\n"; + x++; + } + 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"; + + return ret; + + } + + + protected void writeToFile(String filename, String content) { + // create the file we want to use + File file = new File(workingDir+filename); + + try { + file.createNewFile(); + FileOutputStream fos = new FileOutputStream(workingDir+filename, false); + // ObjectOutputStream o = new ObjectOutputStream(fos); + fos.write(content.getBytes()); + fos.flush(); + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + protected SortedSet<String> toString(SortedSet<Individual> set ){ + SortedSet<String> ret = new TreeSet<String>(); + for (Individual ind : set) { + ret.add(ind.toString()); + } + return ret; + } + + +} Added: trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/LearnSparql.java 2008-04-22 13:07:07 UTC (rev 806) @@ -0,0 +1,97 @@ +package org.dllearner.utilities; + +import java.util.HashSet; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningAlgorithm; +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; +import org.dllearner.reasoning.FastInstanceChecker; + +public class LearnSparql { + + + public void learn(SortedSet<String> posExamples,SortedSet<String> negExamples, + String uri, SortedSet<String> ignoredConcepts){ + + ComponentManager cm = ComponentManager.getInstance(); + LearningAlgorithm la = null; + ReasoningService rs = null; + LearningProblem lp = null; + SparqlKnowledgeSource ks =null; + try { + Set<KnowledgeSource> sources = new HashSet<KnowledgeSource>(); + + ks = cm.knowledgeSource(SparqlKnowledgeSource.class); + + SortedSet<String> instances = new TreeSet<String>(); + instances.addAll(posExamples); + instances.addAll(negExamples); + cm.applyConfigEntry(ks, "instances",instances); + cm.applyConfigEntry(ks, "url",uri); + cm.applyConfigEntry(ks, "recursionDepth",1); + cm.applyConfigEntry(ks, "predefinedFilter",1); + cm.applyConfigEntry(ks, "predefinedEndpoint",1); + //cm.applyConfigEntry(ks, "format","KB"); + + ks.init(); + sources.add(ks); + //System.out.println(ks.getNTripleURL()); + // + + ReasonerComponent r = new FastInstanceChecker(sources); + //cm.applyConfigEntry(r,"useAllConstructor",false); + //cm.applyConfigEntry(r,"useExistsConstructor",true); + r.init(); + rs = new ReasoningService(r); + + lp = new PosNegDefinitionLP(rs); + //cm.applyConfigEntry(lp, "positiveExamples",toInd(posExamples)); + ((PosNegLP) lp).setPositiveExamples(toInd(posExamples)); + ((PosNegLP) lp).setNegativeExamples(toInd(negExamples)); + //cm.applyConfigEntry(lp, "negativeExamples",toInd(negExamples)); + lp.init(); + + la = cm.learningAlgorithm(ExampleBasedROLComponent.class, lp, rs); + + cm.applyConfigEntry(la,"useAllConstructor",false); + cm.applyConfigEntry(la,"useExistsConstructor",true); + cm.applyConfigEntry(la,"useCardinalityRestrictions",false); + cm.applyConfigEntry(la,"useNegation",false); + cm.applyConfigEntry(la,"minExecutionTimeInSeconds",10); + cm.applyConfigEntry(la,"guaranteeXgoodDescriptions",10); + + //cm.applyConfigEntry(la,"quiet",false); + if(ignoredConcepts.size()>0) + cm.applyConfigEntry(la,"ignoredConcepts",ignoredConcepts); + la.init(); + + System.out.println("start learning"); + la.start(); + + //System.out.println("best"+la(20)); + ((ExampleBasedROLComponent)la).printBestSolutions(20); + + }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/NT2RDF.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/NT2RDF.java 2008-04-22 13:07:07 UTC (rev 806) @@ -0,0 +1,35 @@ +package org.dllearner.utilities; +import java.io.File; +import java.net.URI; + +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.io.RDFXMLOntologyFormat; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyManager; +public class NT2RDF { + + + public static void main(String[] args) { + try { + String ontopath=args[0]; + URI inputURI = new File(ontopath).toURI(); + + // outputURI + String ending = ontopath.substring(ontopath.lastIndexOf(".") + 1); + ontopath = ontopath.replace("." + ending, ".rdf" ); + URI outputURI = new File(ontopath).toURI(); + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(inputURI); + manager.saveOntology(ontology, new RDFXMLOntologyFormat(), outputURI); + // Remove the ontology from the manager + manager.removeOntology(ontology.getURI()); + } + catch (Exception e) { + System.out.println("The ontology could not be created: " + e.getMessage()); + } + + } + } + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-21 20:21:41
|
Revision: 805 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=805&view=rev Author: kurzum Date: 2008-04-21 13:21:36 -0700 (Mon, 21 Apr 2008) Log Message: ----------- finished script for automatic example choice Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 19:55:38 UTC (rev 804) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 20:21:36 UTC (rev 805) @@ -58,6 +58,14 @@ return query; } + public String getSparqlQuery(int limit) + { if(limit==0)limit=99999; + query="SELECT ?subject\nWHERE {"+query; + query+="}\n"; + query+="LIMIT "+limit; + return query; + } + public static String getSparqlQuery(String description) throws ParseException { Description d = KBParser.parseConcept(description); @@ -66,6 +74,14 @@ return visitor.getSparqlQuery(); } + public static String getSparqlQuery(String description, int limit) throws ParseException + { if(limit==0)limit=99999; + Description d = KBParser.parseConcept(description); + SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); + d.accept(visitor); + return visitor.getSparqlQuery(limit); + } + public static String getSparqlQuery(Description description) { SparqlQueryDescriptionConvertVisitor visitor=new SparqlQueryDescriptionConvertVisitor(); Modified: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 19:55:38 UTC (rev 804) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 20:21:36 UTC (rev 805) @@ -1,6 +1,6 @@ package org.dllearner.test; -import java.util.HashMap; +import java.util.Random; import java.util.SortedSet; import java.util.TreeSet; @@ -8,68 +8,144 @@ import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.kb.sparql.configuration.SparqlEndpoint; -import org.dllearner.parser.ParseException; +import org.dllearner.utilities.JenaResultSetConvenience; +import org.dllearner.utilities.SimpleClock; import com.hp.hpl.jena.query.ResultSet; public class SPARQLPreparation { static Cache c; + static SparqlEndpoint se; + /** * @param args */ public static void main(String[] args) { + init(); try { + SimpleClock sc=new SimpleClock(); SortedSet<String> concepts = new TreeSet<String>(); - HashMap<String,ResultSet> result = new HashMap<String,ResultSet>(); - HashMap<String,String> result2 = new HashMap<String,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>(); + //HashMap<String, ResultSet> result = new HashMap<String, ResultSet>(); + //HashMap<String, String> result2 = new HashMap<String, String>(); - SparqlQueryDescriptionConvertVisitor.debug_flag=false; - c=new Cache("cache"); - String conj="(\"http://dbpedia.org/class/yago/Person100007846\" AND \"http://dbpedia.org/class/yago/Head110162991\")"; + //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); - 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\")"); + negExamples=shrink(negExamples,posExamples.size()*2); + //System.out.println(posExamples.first())); + System.out.println(posExamples.size()); + System.out.println(negExamples.size()); + 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); - //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("************************"); - } - System.out.println("Finished"); + SparqlQuery sq = new SparqlQuery(query, se); + String JSON = c.executeSparqlQuery(sq); + //System.out.println(JSON); + rs = SparqlQuery.JSONtoResultSet(JSON); + } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); + } + return rs; } + public static void init() { + SparqlQueryDescriptionConvertVisitor.debug_flag = false; + c = new Cache("cache"); + se = SparqlEndpoint.dbpediaEndpoint(); + } - public static ResultSet queryConcept(String concept){ - ResultSet rs =null; - try{ - String query = SparqlQueryDescriptionConvertVisitor.getSparqlQuery(concept); - SparqlQuery sq= new SparqlQuery(query,SparqlEndpoint.dbpediaEndpoint()); - String JSON = c.executeSparqlQuery(sq); + 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); - rs= SparqlQuery.JSONtoResultSet(JSON); - - }catch (Exception e) {e.printStackTrace();} - - return rs; + for (String oneInd : s) { + if(r.nextDouble()<treshold) { + ret.add(oneInd); + + } + } + return ret; } - + } Added: trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/JenaResultSetConvenience.java 2008-04-21 20:21:36 UTC (rev 805) @@ -0,0 +1,36 @@ +package org.dllearner.utilities; + +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; + +import com.hp.hpl.jena.query.ResultSet; +import com.hp.hpl.jena.query.ResultSetFormatter; +import com.hp.hpl.jena.sparql.core.ResultBinding; + +public class JenaResultSetConvenience { + ResultSet rs; + + public JenaResultSetConvenience(ResultSet rs) { + super(); + this.rs = rs; + } + + @SuppressWarnings("unchecked") + public SortedSet<String> getStringListForVariable(String var){ + SortedSet<String> result = new TreeSet<String>(); + + List<ResultBinding> l = ResultSetFormatter.toList(this.rs); + + for (ResultBinding resultBinding : l) { + + result.add(resultBinding.get(var).toString()); + + } + + return result; + + } + + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-04-21 19:56:09
|
Revision: 804 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=804&view=rev Author: lorenz_b Date: 2008-04-21 12:55:38 -0700 (Mon, 21 Apr 2008) Log Message: ----------- added method deleteIndividual() to class ORE Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-04-21 14:58:01 UTC (rev 803) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-04-21 19:55:38 UTC (rev 804) @@ -2,6 +2,9 @@ import java.io.File; import java.math.BigDecimal; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -27,11 +30,13 @@ import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLIndividual; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChangeException; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLOntologyStorageException; import org.semanticweb.owl.model.UnknownOWLOntologyException; +import org.semanticweb.owl.util.OWLEntityRemover; public class ORE { @@ -206,7 +211,44 @@ e.printStackTrace(); } } + + public void deleteIndividual(Individual ind){ + + + + OWLOntology ontology = reasoner.getOWLAPIOntologies().get(0); + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLIndividual individualOWLAPI = null; + + try { + individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); + + + individualOWLAPI.accept(remover); + + try { + manager.applyChanges(remover.getChanges()); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + remover.reset(); + + + + + } + public static void main(String[] args){ ORE test = new ORE(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-04-21 14:58:05
|
Revision: 803 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=803&view=rev Author: kurzum Date: 2008-04-21 07:58:01 -0700 (Mon, 21 Apr 2008) Log Message: ----------- test script, changed comment in Cache.java Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-21 14:33:06 UTC (rev 802) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-04-21 14:58:01 UTC (rev 803) @@ -202,7 +202,7 @@ /** * Takes a SPARQL query (which has not been evaluated yet) as argument and - * returns a result set. The result set is taken from this cache if the + * returns a JSON result set. The result set is taken from this cache if the * query is stored here. Otherwise the query is send and its result added to * the cache and returned. Convenience method. * Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 14:33:06 UTC (rev 802) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryDescriptionConvertVisitor.java 2008-04-21 14:58:01 UTC (rev 803) @@ -37,7 +37,7 @@ */ public class SparqlQueryDescriptionConvertVisitor implements DescriptionVisitor{ - public boolean debug_flag=false; + public static boolean debug_flag=false; private Stack<String> stack = new Stack<String>(); Added: trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/SPARQLPreparation.java 2008-04-21 14:58:01 UTC (rev 803) @@ -0,0 +1,75 @@ +package org.dllearner.test; + +import java.util.HashMap; +import java.util.SortedSet; +import java.util.TreeSet; + +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.parser.ParseException; + +import com.hp.hpl.jena.query.ResultSet; + +public class SPARQLPreparation { + + static Cache c; + /** + * @param args + */ + public static void main(String[] args) { + try { + SortedSet<String> concepts = new TreeSet<String>(); + HashMap<String,ResultSet> result = new HashMap<String,ResultSet>(); + HashMap<String,String> result2 = new HashMap<String,String>(); + + SparqlQueryDescriptionConvertVisitor.debug_flag=false; + c=new Cache("cache"); + 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("************************"); + } + System.out.println("Finished"); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + + } + + } + + public static ResultSet queryConcept(String concept){ + ResultSet rs =null; + try{ + String query = SparqlQueryDescriptionConvertVisitor.getSparqlQuery(concept); + SparqlQuery sq= new SparqlQuery(query,SparqlEndpoint.dbpediaEndpoint()); + String JSON = c.executeSparqlQuery(sq); + + rs= SparqlQuery.JSONtoResultSet(JSON); + + }catch (Exception e) {e.printStackTrace();} + + return rs; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |