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: <sk...@us...> - 2008-08-21 16:58:06
|
Revision: 1125 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1125&view=rev Author: sknappe Date: 2008-08-21 16:58:03 +0000 (Thu, 21 Aug 2008) Log Message: ----------- changed some little stuff Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/sparql/NaturalLanguageDescriptionConvertVisitor.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-21 16:53:11 UTC (rev 1124) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-21 16:58:03 UTC (rev 1125) @@ -259,7 +259,7 @@ if (result != null) { query.setJson(result); - query.setRunning(false); + query.setRunning(false); SparqlQuery.writeToSparqlLog("***********\nJSON retrieved from cache"); SparqlQuery.writeToSparqlLog("wget -S -O - '\n"+query.getSparqlEndpoint().getHTTPRequest()); SparqlQuery.writeToSparqlLog(query.getSparqlQueryString()); Added: trunk/src/dl-learner/org/dllearner/kb/sparql/NaturalLanguageDescriptionConvertVisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/NaturalLanguageDescriptionConvertVisitor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/NaturalLanguageDescriptionConvertVisitor.java 2008-08-21 16:58:03 UTC (rev 1125) @@ -0,0 +1,270 @@ +package org.dllearner.kb.sparql; +import java.util.HashMap; +import java.util.SortedSet; +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; +import org.dllearner.core.owl.DatatypeSomeRestriction; +import org.dllearner.core.owl.DatatypeValueRestriction; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.DescriptionVisitor; +import org.dllearner.core.owl.Intersection; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.Nothing; +import org.dllearner.core.owl.ObjectAllRestriction; +import org.dllearner.core.owl.ObjectExactCardinalityRestriction; +import org.dllearner.core.owl.ObjectMaxCardinalityRestriction; +import org.dllearner.core.owl.ObjectMinCardinalityRestriction; +import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.core.owl.ObjectValueRestriction; +import org.dllearner.core.owl.Thing; +import org.dllearner.core.owl.Union; +import org.dllearner.parser.KBParser; +import org.dllearner.parser.ParseException; + +/** + * Converter from DL-Learner descriptions to a corresponding natural + * language description. + * + * @author Sebastian Knappe + * + * + */ +public class NaturalLanguageDescriptionConvertVisitor implements DescriptionVisitor{ + + private static Logger logger = Logger.getLogger(ComponentManager.class); + + private String query=""; + + private SPARQLTasks tasks; + + public NaturalLanguageDescriptionConvertVisitor() + { + //stack.push("subject"); + tasks=new SPARQLTasks(new Cache("cache"),SparqlEndpoint.getEndpointDBpedia()); + } + + private String getDescription() + { // for old function see below + // it was using the object attribute in a strange way + // QUALITY: what if this function is called several times?? should be private maybe? + String tmpQuery=""+query; + + query = tmpQuery; + return query; + } + + public static String getNaturalLanguageDescription(Description description) + { + NaturalLanguageDescriptionConvertVisitor visitor=new NaturalLanguageDescriptionConvertVisitor(); + description.accept(visitor); + String ret = visitor.getDescription(); + return ret; + } + + public static String getSparqlQuery(String descriptionKBSyntax) throws ParseException + { + Description d = KBParser.parseConcept(descriptionKBSyntax); + NaturalLanguageDescriptionConvertVisitor visitor=new NaturalLanguageDescriptionConvertVisitor(); + d.accept(visitor); + String ret = visitor.getDescription(); + return ret; + } + + /** + * Used for testing the Sparql Query converter. + * + * @param args + */ + public static void main(String[] args) { + try { + SortedSet<String> s = new TreeSet<String>(); + HashMap<String,String> result = new HashMap<String,String>(); + String conj="(\"http://dbpedia.org/class/yago/Person100007846\" AND \"http://dbpedia.org/class/yago/Head110162991\")"; + s.add("EXISTS \"http://dbpedia.org/property/disambiguates\".TOP"); + s.add("EXISTS \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); + s.add("EXISTS \"http://dbpedia.org/property/successor\"."+conj); + s.add("ALL \"http://dbpedia.org/property/disambiguates\".TOP"); + s.add("ALL \"http://dbpedia.org/property/successor\".\"http://dbpedia.org/class/yago/Person100007846\""); + s.add("\"http://dbpedia.org/class/yago/Person100007846\""); + 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,NaturalLanguageDescriptionConvertVisitor.getSparqlQuery(kbsyntax)); + } + System.out.println("************************"); + for (String string : result.keySet()) { + System.out.println("KBSyntayString: "+string); + System.out.println("Query:\n"+result.get(string)); + System.out.println("************************"); + } + System.out.println("Finished"); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Negation) + */ + public void visit(Negation description) { + logger.trace("Negation"); + query+="not "; + description.getChild(0).accept(this); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectAllRestriction) + */ + public void visit(ObjectAllRestriction description) { + logger.trace("ObjectAllRestriction"); + SortedSet<String> label=tasks.queryAsSet("SELECT ?label WHERE {<"+description.getRole().toString()+"> <http://www.w3.org/2000/01/rdf-schema#label> ?label}", "label"); + if (label.size()>0) query+="all "+label.first()+" are "; + else query+="all "+description.getRole().toString().substring(description.getRole().toString().lastIndexOf("/")+1)+" are "; + description.getChild(0).accept(this); + logger.trace(description.getRole().toString()); + logger.trace(description.getChild(0).toString()); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectSomeRestriction) + */ + public void visit(ObjectSomeRestriction description) { + logger.trace("ObjectSomeRestriction"); + SortedSet<String> label=tasks.queryAsSet("SELECT ?label WHERE {<"+description.getRole().toString()+"> <http://www.w3.org/2000/01/rdf-schema#label> ?label}", "label"); + if (label.size()>0) query+="has "+label.first()+" which is "; + else query+="has "+description.getRole().toString().substring(description.getRole().toString().lastIndexOf("/")+1)+" which is "; + description.getChild(0).accept(this); + 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) { + logger.trace("Nothing"); + query+="nothing"; + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Thing) + */ + public void visit(Thing description) { + logger.trace("Thing"); + query+="anything"; + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Intersection) + */ + public void visit(Intersection description) { + // HACK see replace hacks in other functions + logger.trace("Intersection"); + description.getChild(0).accept(this); + query+=" and "; + description.getChild(1).accept(this); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.Union) + */ + public void visit(Union description) { + // HACK see replace hacks in other functions + logger.trace("Union"); + description.getChild(0).accept(this); + query+=" or "; + description.getChild(1).accept(this); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMinCardinalityRestriction) + */ + public void visit(ObjectMinCardinalityRestriction description) { + logger.trace("ObjectMinCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectExactCardinalityRestriction) + */ + public void visit(ObjectExactCardinalityRestriction description) { + logger.trace("ObjectExactCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectMaxCardinalityRestriction) + */ + public void visit(ObjectMaxCardinalityRestriction description) { + logger.trace("ObjectMaxCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.ObjectValueRestriction) + */ + public void visit(ObjectValueRestriction description) { + logger.trace("ObjectValueRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeValueRestriction) + */ + public void visit(DatatypeValueRestriction description) { + logger.trace("DatatypeValueRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.NamedClass) + */ + public void visit(NamedClass description) { + + logger.trace("NamedClass"); + SortedSet<String> label=tasks.queryAsSet("SELECT ?label WHERE {<"+description.getName()+"> <http://www.w3.org/2000/01/rdf-schema#label> ?label}", "label"); + query+="a "+label.first(); + } + + + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.algorithms.gp.ADC) + */ + public void visit(ADC description) { + logger.trace("ADC"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMinCardinalityRestriction) + */ + public void visit(DatatypeMinCardinalityRestriction description) { + logger.trace("DatatypeMinCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeExactCardinalityRestriction) + */ + public void visit(DatatypeExactCardinalityRestriction description) { + logger.trace("DatatypeExactCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeMaxCardinalityRestriction) + */ + public void visit(DatatypeMaxCardinalityRestriction description) { + logger.trace("DatatypeMaxCardinalityRestriction"); + } + + /* (non-Javadoc) + * @see org.dllearner.core.owl.DescriptionVisitor#visit(org.dllearner.core.owl.DatatypeSomeRestriction) + */ + public void visit(DatatypeSomeRestriction description) { + logger.trace("DatatypeSomeRestriction"); + } +} Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-21 16:53:11 UTC (rev 1124) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-21 16:58:03 UTC (rev 1125) @@ -23,6 +23,7 @@ import java.io.ByteArrayOutputStream; import java.io.FileWriter; import java.io.UnsupportedEncodingException; +import java.net.UnknownHostException; import java.nio.charset.Charset; import javax.xml.ws.http.HTTPException; @@ -129,6 +130,7 @@ logger.warn("Exception in SparqlQuery\n"+ e.toString()); logger.warn("query was "+ sparqlQueryString); writeToSparqlLog("ERROR: HTTPException occured"+ e.toString()); + isRunning = false; throw e; }catch (RuntimeException e) { @@ -136,14 +138,14 @@ logger.warn("RuntimeException in SparqlQuery"+ e.toString()); writeToSparqlLog("ERROR: HTTPException occured"+ e.toString()); //} + isRunning = false; throw e; } // there is a minor issue here: Jamon now also measures ResultsetConversion // the code would need a second try catch block to handle it correctly JamonMonitorLogger.getTimeMonitor(SparqlQuery.class, "httpTime").stop(); - isRunning = false; - + isRunning = false; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java 2008-08-21 16:53:11 UTC (rev 1124) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryException.java 2008-08-21 16:58:03 UTC (rev 1125) @@ -24,6 +24,6 @@ static final long serialVersionUID=101; public SparqlQueryException (String message) { - super ("Sparql Query failed.\n"+message); + super (message); } } Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-08-21 16:53:11 UTC (rev 1124) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-08-21 16:58:03 UTC (rev 1125) @@ -387,6 +387,7 @@ json += "\"solution" + count + "\" : " + description.asJSON(); count++; } + json+="}"; return json; } @@ -561,7 +562,7 @@ throw new SparqlQueryException("SparqlQuery failed"+e.toString()); } - if(json == null) { throw new SparqlQueryException("SparqlQuery failed JSON was null");} + if(json == null) { throw new SparqlQueryException("Sparql Query failed. Please try again later.");} return json; //if ((json=state.getQuery(queryID).getJson())!=null) return json; //else if ((resultSet=state.getQuery(queryID).getResultSet())!=null) return SparqlQuery.getAsJSON(resultSet); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-08-21 16:53:16
|
Revision: 1124 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1124&view=rev Author: sknappe Date: 2008-08-21 16:53:11 +0000 (Thu, 21 Aug 2008) Log Message: ----------- added natural language description Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java Modified: trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2008-08-21 16:50:44 UTC (rev 1123) +++ trunk/src/dl-learner/org/dllearner/core/EvaluatedDescription.java 2008-08-21 16:53:11 UTC (rev 1124) @@ -23,6 +23,7 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.kb.sparql.NaturalLanguageDescriptionConvertVisitor; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.learningproblems.ScoreTwoValued; import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; @@ -162,6 +163,10 @@ return SparqlQueryDescriptionConvertVisitor.getSparqlQuery(description, limit); } + public String getNaturalDescription(){ + return NaturalLanguageDescriptionConvertVisitor.getNaturalLanguageDescription(description); + } + /** * This convenience method can be used to store and exchange evaluated * descriptions by transforming them to a JSON string. @@ -174,6 +179,7 @@ OWLDescription d = OWLAPIDescriptionConvertVisitor.getOWLDescription(description); object.put("descriptionOWLXML", OWLAPIRenderers.toOWLXMLSyntax(d)); object.put("accuracy", score.getAccuracy()); + object.put("NaturalLanguage", getNaturalDescription()); object.put("coveredPositives", getJSONArray(score.getCoveredPositives())); object.put("coveredNegatives", getJSONArray(score.getCoveredNegatives())); object.put("notCoveredPositives", getJSONArray(score.getNotCoveredPositives())); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-08-21 16:50:48
|
Revision: 1123 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1123&view=rev Author: sknappe Date: 2008-08-21 16:50:44 +0000 (Thu, 21 Aug 2008) Log Message: ----------- Changed some things, when displaying learned concepts, accuracy is shown and natural language concepts are shown, some bugfixing Modified Paths: -------------- trunk/src/dbpedia-navigator/DLLearnerConnection.php trunk/src/dbpedia-navigator/Settings.php trunk/src/dbpedia-navigator/ajax_learn_concepts.php trunk/src/dbpedia-navigator/index.php trunk/src/dbpedia-navigator/js/ajax.js Modified: trunk/src/dbpedia-navigator/DLLearnerConnection.php =================================================================== --- trunk/src/dbpedia-navigator/DLLearnerConnection.php 2008-08-21 16:34:10 UTC (rev 1122) +++ trunk/src/dbpedia-navigator/DLLearnerConnection.php 2008-08-21 16:50:44 UTC (rev 1123) @@ -10,6 +10,7 @@ { private $DBPediaUrl; private $ttl; + private $learnttl; private $lang; // private $client; @@ -26,6 +27,7 @@ require_once("Settings.php"); $settings=new Settings(); $this->ttl=$settings->sparqlttl; + $this->learnttl=$settings->learnttl; $this->lang=$settings->language; $this->DBPediaUrl=$settings->dbpediauri; $this->client=new SoapClient("main.wsdl",array('features' => SOAP_SINGLE_ELEMENT_ARRAYS)); @@ -89,7 +91,6 @@ // see what we have learned so far //$concepts=$this->client->getCurrentlyBestConcepts($this->id,3,"kb"); - $concepts=$this->client->getCurrentlyBestEvaluatedDescriptions($this->id,3); $running=$this->client->isAlgorithmRunning($this->id); $seconds = $i * $sleeptime; @@ -104,12 +105,12 @@ $this->client->stop($this->id); throw new Exception("Learning stopped"); } - } while($seconds<$this->ttl&&$running); + } while($seconds<$this->learnttl&&$running); $this->client->stop($this->id); } //return $concepts->item; - return json_decode($concepts,true); + return json_decode($this->client->getCurrentlyBestEvaluatedDescriptions($this->id,3),true); } function getConceptDepth() Modified: trunk/src/dbpedia-navigator/Settings.php =================================================================== --- trunk/src/dbpedia-navigator/Settings.php 2008-08-21 16:34:10 UTC (rev 1122) +++ trunk/src/dbpedia-navigator/Settings.php 2008-08-21 16:50:44 UTC (rev 1123) @@ -37,6 +37,7 @@ // public $dbpediauri='http://dbpedia2.openlinksw.com:8890/isparql'; // in mikrosekunden public $sparqlttl=60000000; + public $learnttl=30000000; public $language="en"; Modified: trunk/src/dbpedia-navigator/ajax_learn_concepts.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_learn_concepts.php 2008-08-21 16:34:10 UTC (rev 1122) +++ trunk/src/dbpedia-navigator/ajax_learn_concepts.php 2008-08-21 16:50:44 UTC (rev 1123) @@ -25,16 +25,20 @@ $sc=new DLLearnerConnection($id, $ksID); try{ $concepts=$sc->getConceptFromExamples($posArray,$negArray); - $concept.="<table border=0>\n"; - foreach ($concepts as $con){ - $concept.="<tr><td><a href=\"\" onclick=\"getSubjectsFromConcept('concept=".$con['descriptionManchesterSyntax']."');return false;\" />".$con['descriptionManchesterSyntax']."</a> (Accuracy: ".(floatVal($con['accuracy'])*100)."%)</td></tr>"; + if (count($concepts)>0){ + $concept.="<table border=0>\n"; + $concept.="<tr><td>You could also be interested in articles matching these descriptions:</td></tr>"; + foreach ($concepts as $con){ + $concept.="<tr><td><a href=\"\" onclick=\"getSubjectsFromConcept('concept=".$con['descriptionManchesterSyntax']."');return false;\" />".$con['NaturalLanguage']."</a> (Accuracy: ".(floatVal($con['accuracy'])*100)."%)</td></tr>"; + } + $concept.="</table>"; } - $concept.="</table>"; + else $concept="-"; } catch(Exception $e){ $concept.=$e->getMessage(); } } - else $concept="You must choose at least one positive example."; + else $concept="-"; print $concept; ?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/index.php =================================================================== --- trunk/src/dbpedia-navigator/index.php 2008-08-21 16:34:10 UTC (rev 1122) +++ trunk/src/dbpedia-navigator/index.php 2008-08-21 16:50:44 UTC (rev 1123) @@ -117,7 +117,7 @@ <div id="conceptlink" style="display:block"></div> </div> <!-- boxcontent --> </div> <!-- box --> -</td><td width="19%"><span id="Loading" style="display:none">Server Call... <a href=""><img src="images/remove.png" onclick="stopServerCall();return false;" /></a></span></td></tr></table></div> +</td><td width="19%" style="text-align:center"><span id="Loading" style="display:none">Server Call... <a href=""><img src="images/remove.png" onclick="stopServerCall();return false;" /></a></span></td></tr></table></div> <div id="layer" style="display:none"> <div id="layerContent" style="display:none"></div> </div> Modified: trunk/src/dbpedia-navigator/js/ajax.js =================================================================== --- trunk/src/dbpedia-navigator/js/ajax.js 2008-08-21 16:34:10 UTC (rev 1122) +++ trunk/src/dbpedia-navigator/js/ajax.js 2008-08-21 16:50:44 UTC (rev 1123) @@ -9,7 +9,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_search.php'); + XhrObj.open("POST",'ajax_search.php',true); XhrObj.onreadystatechange = function() { @@ -40,7 +40,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_get_article.php'); + XhrObj.open("POST",'ajax_get_article.php',true); XhrObj.onreadystatechange = function() { @@ -59,7 +59,7 @@ } else document.getElementById('LastArticlesBox').style.display='block'; - setTimeout('setRunning(true);learnConcept();',1000); + learnConcept(); } } @@ -78,7 +78,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_get_class.php'); + XhrObj.open("POST",'ajax_get_class.php',true); XhrObj.onreadystatechange = function() { @@ -106,7 +106,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_to_positive.php'); + XhrObj.open("POST",'ajax_to_positive.php',true); XhrObj.onreadystatechange = function() { @@ -132,7 +132,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_to_negative.php'); + XhrObj.open("POST",'ajax_to_negative.php',true); XhrObj.onreadystatechange = function() { @@ -158,7 +158,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_clear_positives.php'); + XhrObj.open("POST",'ajax_clear_positives.php',true); XhrObj.onreadystatechange = function() { @@ -182,7 +182,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_clear_negatives.php'); + XhrObj.open("POST",'ajax_clear_negatives.php',true); XhrObj.onreadystatechange = function() { @@ -206,7 +206,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_remove_pos_interest.php'); + XhrObj.open("POST",'ajax_remove_pos_interest.php',true); XhrObj.onreadystatechange = function() { @@ -232,7 +232,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_remove_neg_interest.php'); + XhrObj.open("POST",'ajax_remove_neg_interest.php',true); XhrObj.onreadystatechange = function() { @@ -249,6 +249,7 @@ function learnConcept() { + setRunning(true); if (document.all){ //IE var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); @@ -258,14 +259,15 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_learn_concepts.php'); + XhrObj.open("POST",'ajax_learn_concepts.php',true); XhrObj.onreadystatechange = function() { if (XhrObj.readyState == 4 && XhrObj.status == 200){ - var response = XhrObj.responseText.split('$$'); - document.getElementById('conceptlink').innerHTML=response[0]; - document.getElementById('ConceptBox').style.display='block'; + if (XhrObj.responseText!='-'){ + document.getElementById('conceptlink').innerHTML=XhrObj.responseText; + document.getElementById('ConceptBox').style.display='block'; + } setRunning(false); } } @@ -285,7 +287,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_stop_server_call.php'); + XhrObj.open("POST",'ajax_stop_server_call.php',true); XhrObj.onreadystatechange = function() { @@ -308,7 +310,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_get_subjects_from_concept.php'); + XhrObj.open("POST",'ajax_get_subjects_from_concept.php',true); XhrObj.onreadystatechange = function() { @@ -334,7 +336,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_get_subjects_from_category.php'); + XhrObj.open("POST",'ajax_get_subjects_from_category.php',true); XhrObj.onreadystatechange = function() { @@ -364,7 +366,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_set_positives_and_negatives.php'); + XhrObj.open("POST",'ajax_set_positives_and_negatives.php',true); XhrObj.onreadystatechange = function() { @@ -390,7 +392,7 @@ var XhrObj = new XMLHttpRequest(); } - XhrObj.open("POST",'ajax_generate_URL.php'); + XhrObj.open("POST",'ajax_generate_URL.php',true); XhrObj.onreadystatechange = function() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Jen...@us...> - 2008-08-21 16:34:12
|
Revision: 1122 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1122&view=rev Author: JensLehmann Date: 2008-08-21 16:34:10 +0000 (Thu, 21 Aug 2008) Log Message: ----------- more GUI fixes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/gui/StartGUI.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringTupleList.java Modified: trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java 2008-08-21 14:54:31 UTC (rev 1121) +++ trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java 2008-08-21 16:34:10 UTC (rev 1122) @@ -53,7 +53,7 @@ private JPanel choosePanel = new JPanel(); private JPanel initPanel = new JPanel(); private int choosenClassIndex; - private List<Class<? extends KnowledgeSource>> sources; + private List<Class<? extends KnowledgeSource>> selectableSources; private OptionPanel optionPanel; KnowledgeSourcePanel(final Config config, StartGUI startGUI) { @@ -61,7 +61,7 @@ this.config = config; this.startGUI = startGUI; - sources = config.getComponentManager().getKnowledgeSources(); + selectableSources = config.getComponentManager().getKnowledgeSources(); setButton = new JButton("Set"); setButton.addActionListener(this); @@ -72,8 +72,8 @@ initButton.setEnabled(true); // add to comboBox - for (int i = 0; i < sources.size(); i++) { - cb.addItem(config.getComponentManager().getComponentName(sources.get(i))); + for (int i = 0; i < selectableSources.size(); i++) { + cb.addItem(config.getComponentManager().getComponentName(selectableSources.get(i))); } cb.addActionListener(this); @@ -82,7 +82,7 @@ choosenClassIndex = cb.getSelectedIndex(); // whenever a component is selected, we immediately create an instance (non-initialised) - KnowledgeSource ks = config.newKnowledgeSource(sources.get(cb.getSelectedIndex())); + KnowledgeSource ks = config.newKnowledgeSource(selectableSources.get(cb.getSelectedIndex())); optionPanel = new OptionPanel(config, ks); // optionPanel = new OptionPanel(config, config.getKnowledgeSource(), sources.get(choosenClassIndex)); @@ -97,12 +97,13 @@ } public void actionPerformed(ActionEvent e) { - // read selected KnowledgeSourceClass - // choosenClassIndex = cb.getSelectedIndex(); if (choosenClassIndex != cb.getSelectedIndex()) { choosenClassIndex = cb.getSelectedIndex(); - config.setInitKnowledgeSource(false); - init(); + // create a new knowledge source component + config.newKnowledgeSource(selectableSources.get(choosenClassIndex)); + updateAll(); +// config.setInitKnowledgeSource(false); +// init(); } if (e.getSource() == setButton) { @@ -123,7 +124,7 @@ */ public void setSource() { config.setKnowledgeSource(config.getComponentManager().knowledgeSource( - sources.get(choosenClassIndex))); + selectableSources.get(choosenClassIndex))); config.setInitKnowledgeSource(false); updateAll(); } @@ -159,7 +160,7 @@ */ public void updateComboBox() { if (config.getKnowledgeSource() != null) - for (int i = 0; i < sources.size(); i++) + for (int i = 0; i < selectableSources.size(); i++) if (config.getKnowledgeSource().getClass().equals( config.getComponentManager().getKnowledgeSources().get(i))) { cb.setSelectedIndex(i); @@ -171,8 +172,7 @@ * update OptionPanel with new selection */ public void updateOptionPanel() { - // TODO implement properly !! -// optionPanel.update(config.getKnowledgeSource(), sources.get(choosenClassIndex)); + optionPanel.update(config.getKnowledgeSource()); } /** Modified: trunk/src/dl-learner/org/dllearner/gui/StartGUI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/StartGUI.java 2008-08-21 14:54:31 UTC (rev 1121) +++ trunk/src/dl-learner/org/dllearner/gui/StartGUI.java 2008-08-21 16:34:10 UTC (rev 1122) @@ -116,7 +116,13 @@ tabPane.addChangeListener(new ChangeListener() { // This method is called whenever the selected tab changes public void stateChanged(ChangeEvent evt) { - init(); + System.out.println(evt.getSource()); + if(evt.getSource().equals(tabPane)) { +// tabPane.get +// System.out.println("Tab 2 clicked"); +// System.exit(0); + } +// init(); } }); @@ -240,10 +246,13 @@ tabPane.setForegroundAt(3, Color.RED); tabPane.setForegroundAt(4, Color.RED); } - tab0.updateAll(); - tab1.updateAll(); - tab2.updateAll(); - tab3.updateAll(); + + // commented out as I do not see any reason why the method should update everything + // (it costs performance to update everything when the user only sees one panel) +// tab0.updateAll(); +// tab1.updateAll(); +// tab2.updateAll(); +// tab3.updateAll(); } } Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java 2008-08-21 14:54:31 UTC (rev 1121) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java 2008-08-21 16:34:10 UTC (rev 1122) @@ -169,13 +169,15 @@ @Override public void buildWidgetPanel() { + gridbag = new GridBagLayout(); widgetPanel = new JPanel(); widgetPanel.setLayout(gridbag); add(widgetPanel, BorderLayout.CENTER); add(getLabel()); value = config.getConfigOptionValue(component, configOption); - + + listModel = new DefaultListModel(); // fill list if (value != null) { setEntry(); @@ -185,11 +187,13 @@ } } - gridbag = new GridBagLayout(); constraints = new GridBagConstraints(); cBL = new CheckBoxList(this); stringList = new JList(); - listModel = new DefaultListModel(); + stringField = new JTextField(30); + addButton = new JButton("add"); + removeButton = new JButton("remove"); + clearButton = new JButton("clear"); if (!isSpecial()) { // NORMAL LAYOUT @@ -233,8 +237,9 @@ .getIndividuals(); LinkedList<Individual> individuals = new LinkedList<Individual>( individualsSet); - for (Individual ind : individuals) + for (Individual ind : individuals) { cBL.add(ind.getName()); + } } // allowedConcepts or ignoredConcepts if (configOption.getName().equalsIgnoreCase("allowedConcepts") @@ -264,10 +269,7 @@ } stringList.setModel(listModel); - - addButton = new JButton("add"); - removeButton = new JButton("remove"); - clearButton = new JButton("clear"); + // ActionListeners addButton.addActionListener(this); removeButton.addActionListener(this); Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringTupleList.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringTupleList.java 2008-08-21 14:54:31 UTC (rev 1121) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringTupleList.java 2008-08-21 16:34:10 UTC (rev 1122) @@ -137,6 +137,23 @@ @Override public void buildWidgetPanel() { + + gridbag = new GridBagLayout(); + constraints = new GridBagConstraints(); + + widgetPanel = new JPanel(); + addButton = new JButton("add"); + removeButton = new JButton("remove"); + clearButton = new JButton("clear"); + stringFieldA = new JTextField(10); + stringFieldB = new JTextField(10); + exampleList = new LinkedList<StringTuple>(); + + stringList = new JList(); + listModel = new DefaultListModel(); + + setButton = new JButton("set"); + widgetPanel.setLayout(gridbag); add(widgetPanel, BorderLayout.CENTER); add(getLabel()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-08-21 14:54:38
|
Revision: 1121 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1121&view=rev Author: kurzum Date: 2008-08-21 14:54:31 +0000 (Thu, 21 Aug 2008) Log Message: ----------- empty log message Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.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/SparqlQueryMaker.java trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -86,6 +86,7 @@ import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.Files; import org.dllearner.utilities.Helper; +import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.Datastructures; import org.dllearner.utilities.datastructures.StringTuple; import org.dllearner.utilities.owl.ConceptComparator; @@ -155,7 +156,9 @@ Start start = new Start(file); start.start(inQueryMode); // write JaMON report in HTML file - Files.createFile(new File("log/jamon.html"), MonitorFactory.getReport()); + File jamonlog = new File("log/jamon.html"); + Files.createFile(jamonlog, MonitorFactory.getReport()); + Files.appendFile(jamonlog, "<xmp>\n"+JamonMonitorLogger.getStringForAllSortedByLabel()); } /** Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -85,23 +85,23 @@ RDFNode nextOBJ = binding.get(OBJECT+i); RDFNode nextPRED = binding.get(PREDICATE+i); RDFNodeTuple tmptuple = new RDFNodeTuple(nextPRED, nextOBJ ); - add(uri,tmptuple); + addToLocalCache(uri,tmptuple); boolean cont = !nextOBJ.isLiteral(); - for (i=0; (i < recursionDepth) && cont; i++) { + for (i=1; (i < recursionDepth) && cont; i++) { RDFNode tmpPREDURI = binding.get(PREDICATE+i); RDFNode tmpOBJURI = binding.get(OBJECT+i); if(tmpOBJURI==null) { cont=false; }else if (tmpOBJURI.isLiteral()) { tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); - add(nextOBJ.toString(), tmptuple); + addToLocalCache(nextOBJ.toString(), tmptuple); //logger.trace(tmptuple); //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); cont=false; }else { tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); - add(nextOBJ.toString(), tmptuple); + addToLocalCache(nextOBJ.toString(), tmptuple); //logger.trace(tmptuple); //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); nextOBJ = tmpOBJURI; @@ -124,6 +124,7 @@ public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ int tmp = recursionDepth; recursionDepth=4; + SortedSet<RDFNodeTuple> tmpSet = retrieveTupel(uri); recursionDepth = tmp; return tmpSet; @@ -133,12 +134,15 @@ } - private void add(String uri, RDFNodeTuple tuple){ + private void addToLocalCache(String uri, RDFNodeTuple tuple){ SortedSet<RDFNodeTuple> set = resources.get(uri); + + if(set==null){ set = new TreeSet<RDFNodeTuple>(); set.add(tuple); resources.put(uri, set ); + }else { set.add(tuple); } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -24,6 +24,7 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.utilities.statistics.SimpleClock; @@ -108,14 +109,15 @@ if(configuration.isCloseAfterRecursion()){ List<InstanceNode> l = getInstanceNodes(newNodes); + logger.info("Getting classes for remaining instances: "+l.size() + " instances"); tupelAquisitor.setNextTaskToClassesForInstances(); collectNodes.addAll(expandCloseAfterRecursion(l, tupelAquisitor)); - } // gets All Class Nodes and expands them further if (configuration.isGetAllSuperClasses()) { List<ClassNode> allClassNodes = getClassNodes(collectNodes); tupelAquisitor.setNextTaskToClassInformation(); + logger.info("Get all superclasses for "+allClassNodes.size() + " classes"); expandAllSuperClassesOfANode(allClassNodes, tupelAquisitor); } @@ -124,6 +126,7 @@ } private List<Node> expandCloseAfterRecursion(List<InstanceNode> instanceNodes, TupleAquisitor tupelAquisitor) { + List<Node> newNodes = new ArrayList<Node>(); tupelAquisitor.setNextTaskToClassesForInstances(); if (configuration.isCloseAfterRecursion()) { @@ -142,19 +145,23 @@ } private void expandAllSuperClassesOfANode(List<ClassNode> allClassNodes, TupleAquisitor tupelAquisitor) { - logger.info("Get all superclasses"); + List<Node> newClasses = new ArrayList<Node>(); newClasses.addAll(allClassNodes); //TODO LinkedData incompatibility - tupelAquisitor.setNextTaskToClassInformation(); + int i = 0; - while (!newClasses.isEmpty() && false) { + + while (!newClasses.isEmpty() ) { logger.trace("Remaining classes: " + newClasses.size()); Node next = newClasses.remove(0); + logger.trace("Getting Superclasses for: " + next); + if (!alreadyQueriedSuperClasses.contains(next.getURI().toString())) { - logger.trace("Getting Superclasses for: " + next); + logger.trace("" + next+" not in cache retrieving"); alreadyQueriedSuperClasses.add(next.getURI().toString()); + tupelAquisitor.setNextTaskToClassInformation(); newClasses.addAll(next.expand(tupelAquisitor, configuration.getManipulator())); if (i > configuration.getBreakSuperClassesAfter()) { @@ -162,6 +169,9 @@ }//endinnerif i++; }//endouterif + else { + logger.trace("" + next+" in cache skipping"); + } }//endwhile if(!configuration.isOptimizeForDLLearner()){ Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBPediaNavigatorCityLocatorRule.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -63,8 +63,13 @@ } + @Override + public void logJamon(){ + + } + } Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -99,5 +99,10 @@ } else return "http://dbpedia.org/class/custom/City_in_World"; } + + @Override + public void logJamon(){ + + } } Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -54,6 +54,10 @@ return keep; } + @Override + public void logJamon(){ + JamonMonitorLogger.increaseCount(ObjectReplacementRule.class, "replacedObjects"); + } Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -47,14 +47,18 @@ for (RDFNodeTuple tuple : tuples) { if(tuple.aPartContains(oldPredicate)){ tuple.a = new ResourceImpl(newPredicate); - JamonMonitorLogger.increaseCount(PredicateReplacementRule.class, "replacedPredicates"); + logJamon(); } keep.add(tuple); } return keep; } + @Override + public void logJamon(){ + JamonMonitorLogger.increaseCount(PredicateReplacementRule.class, "replacedPredicates"); + } + - } Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Rule.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -59,4 +59,6 @@ } System.out.println(Months.values()); } + + public abstract void logJamon(); } Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -43,11 +43,16 @@ if(!tuple.bPartContains(objectFilter)){ keep.add(tuple); }else{ - JamonMonitorLogger.increaseCount(SimpleObjectFilterRule.class, "filteredTriples"); + logJamon(); } } return keep; } + + @Override + public void logJamon(){ + JamonMonitorLogger.increaseCount(SimpleObjectFilterRule.class, "filteredTriples"); + } /* private boolean keepTuple(Node subject, RDFNodeTuple tuple) { Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -44,11 +44,16 @@ if(!tuple.aPartContains(predicateFilter)){ keep.add(tuple); }else{ - JamonMonitorLogger.increaseCount(SimplePredicateFilterRule.class, "filteredTriples"); + logJamon(); } } return keep; } + + @Override + public void logJamon(){ + JamonMonitorLogger.increaseCount(SimplePredicateFilterRule.class, "filteredTriples"); + } Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -60,14 +60,21 @@ if(!remove){ keep.add(tuple); }else{ - JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples"); + logJamon(); } } return keep; } + @Override + public void logJamon(){ + JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples"); + } + + + /* if (t.a.equals(type) && t.b.equals(classns) && node instanceof ClassNode) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -54,8 +54,8 @@ } public String getHTTPRequest() { - String ret = this.url.toString()+"/sparql?"; - ret += (defaultGraphURIs.isEmpty())?"":"default-graph-uri="+defaultGraphURIs.remove(0)+"&"; + String ret = this.url.toString()+"?"; + ret += (defaultGraphURIs.isEmpty())?"":"default-graph-uri="+defaultGraphURIs.get(0)+"&"; ret += "query="; return ret; } @@ -68,6 +68,10 @@ return namedGraphURIs; } + @Override + public String toString(){ + return getHTTPRequest(); + } /*public static SparqlEndpoint getEndpointByNumber(int i) { switch (i) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -58,6 +58,7 @@ import org.dllearner.parser.KBParser; import org.dllearner.reasoning.DIGConverter; import org.dllearner.reasoning.JenaOWLDIGConverter; +import org.dllearner.scripts.NT2RDF; import org.dllearner.utilities.datastructures.StringTuple; import org.dllearner.utilities.statistics.SimpleClock; @@ -290,7 +291,7 @@ Configuration configuration = new Configuration( - getTupleAquisitor(), + tupleAquisitor, manipulator, recursionDepth, getAllSuperClasses, @@ -325,6 +326,10 @@ fw.close(); dumpFile = (new File(basedir + filename)).toURI().toURL(); + if(debug){ + NT2RDF.convertNT2RDF(basedir + filename); + //System.exit(0); + } } catch (Exception e) { e.printStackTrace(); } @@ -388,11 +393,14 @@ public SPARQLTasks getSPARQLTasks() { + // get Options for endpoints if (predefinedEndpoint == null) { endpoint = new SparqlEndpoint(url, defaultGraphURIs, namedGraphURIs); } else { endpoint = SparqlEndpoint.getEndpointByName(predefinedEndpoint); + //System.out.println(endpoint); + } if (this.useCache) Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -98,6 +98,7 @@ queryExecution = new QueryEngineHTTP(service, sparqlQueryString); //System.out.println(sparqlEndpoint.getDefaultGraphURIs()); + for (String dgu : sparqlEndpoint.getDefaultGraphURIs()) { queryExecution.addDefaultGraph(dgu); } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -107,14 +107,14 @@ tmpFilter = (tmpFilter.length() > 0) ? "FILTER( " + lineend + tmpFilter + "). " : " "; - /*String returnString = "SELECT * WHERE {" +lineend + + String returnString = "SELECT * WHERE {" +lineend + "<" + subject + "> ?predicate ?object;" + "a ?object . "+lineend+ tmpFilter + "}"; - */ - String returnString = "SELECT * WHERE {" +lineend + - "<" + subject + "> <"+OWLVocabulary.RDF_TYPE+"> ?object. " +lineend+ - tmpFilter + "}"; + + //String returnString = "SELECT * WHERE {" +lineend + + // "<" + subject + "> <"+OWLVocabulary.RDF_TYPE+"> ?object. " +lineend+ + // tmpFilter + "}"; return returnString; } Modified: trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/scripts/NT2RDF.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -35,6 +35,10 @@ } + /** + * converts .nt file to rdf, same file name, different ending + * @param ontopath path to nt file + */ public static void convertNT2RDF(String ontopath){ try { Modified: trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/utilities/JamonMonitorLogger.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -65,16 +65,23 @@ public static void printAllSortedByLabel() { + + System.out.println(getStringForAllSortedByLabel()); + + } + + public static String getStringForAllSortedByLabel() { List<Monitor> l= getMonitors(); SortedSet<String> sset = new TreeSet<String>(); - + StringBuffer sbuf = new StringBuffer(); for (int i = 0; i < l.size(); i++) { Monitor monitor = l.get(i); sset.add(monitor.toString()); } for (String onemon : sset) { - System.out.println(onemon); + sbuf.append(onemon+"\n"); } + return sbuf.toString(); } Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-21 14:23:00 UTC (rev 1120) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-21 14:54:31 UTC (rev 1121) @@ -24,6 +24,7 @@ public static final String RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; public static final String RDFS_SUBCLASS_OF = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; + public static final String RDFS_CLASS = "http://www.w3.org/2000/01/rdf-schema#Class"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Jen...@us...> - 2008-08-21 14:23:05
|
Revision: 1120 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1120&view=rev Author: JensLehmann Date: 2008-08-21 14:23:00 +0000 (Thu, 21 Aug 2008) Log Message: ----------- intermediate commit (fixing GUI code for several hours) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java trunk/src/dl-learner/org/dllearner/core/ComponentPool.java trunk/src/dl-learner/org/dllearner/gui/Config.java trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/gui/LearningAlgorithmPanel.java trunk/src/dl-learner/org/dllearner/gui/LearningProblemPanel.java trunk/src/dl-learner/org/dllearner/gui/OptionPanel.java trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java trunk/src/dl-learner/org/dllearner/gui/StartGUI.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDouble.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelString.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringTupleList.java trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/gui/AboutWindow.java trunk/src/dl-learner/org/dllearner/gui/AbstractWidgetPanel.java trunk/src/dl-learner/org/dllearner/gui/ComponentPanel.java trunk/src/dl-learner/org/dllearner/gui/TutorialWindow.java trunk/src/dl-learner/org/dllearner/gui/dl-learner.gif Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/algorithms/DBpediaNavigationSuggestor.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -74,6 +74,10 @@ return problems; } + public static String getName() { + return "DBpedia Navigation Suggestor"; + } + public DBpediaNavigationSuggestor(PosOnlyDefinitionLP learningProblem, ReasoningService rs) { System.out.println("test1"); } Modified: trunk/src/dl-learner/org/dllearner/core/ComponentPool.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentPool.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/core/ComponentPool.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -39,8 +39,7 @@ */ public final class ComponentPool { - private static Logger logger = Logger - .getLogger(ComponentPool.class); + private static Logger logger = Logger.getLogger(ComponentPool.class); // stores all components, which are live (components which are // no longer used have to be deregistered) Added: trunk/src/dl-learner/org/dllearner/gui/AboutWindow.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/AboutWindow.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/gui/AboutWindow.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -0,0 +1,32 @@ +package org.dllearner.gui; + +import javax.swing.JFrame; + +/** + * Window displaying some information about DL-Learner and DL-Learner GUI. + * + * @author Jens Lehmann + * + */ +public class AboutWindow extends JFrame { + + private static final long serialVersionUID = -5448814141333659068L; + + public AboutWindow() { + setTitle("About"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationByPlatform(true); + setSize(300, 300); + + // display icon + + // display build version + + // display authors of GUI + + // display DL-Learner contributors + + setVisible(true); + } + +} Copied: trunk/src/dl-learner/org/dllearner/gui/AbstractWidgetPanel.java (from rev 1115, trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/AbstractWidgetPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/gui/AbstractWidgetPanel.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -0,0 +1,76 @@ +/** + * 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.gui; + +import javax.swing.JLabel; +import javax.swing.JPanel; + +import org.dllearner.core.Component; +import org.dllearner.core.config.ConfigOption; + +/** + * Abstract superclass of all widgets. Each widget has an associated component and configuration option, + * for which it allows modification by the user. + * + * @author Jens Lehmann + */ +public abstract class AbstractWidgetPanel<T> extends JPanel { + + protected ConfigOption<T> configOption; + protected Config config; + protected Component component; + + /** + * Constructs a widget. + * @param config The status of all components and options (which may be updated by this widget). + * @param component The component potentially changed by this widget. + * @param optionOption The config option of the specified component, which is potentially changed by this widget. + */ + public AbstractWidgetPanel(Config config, Component component, ConfigOption<T> optionOption) { + this.config = config; + this.component = component; + this.configOption = optionOption; + + if(configOption == null || component == null || config == null) { + System.out.println("| " + component + ", " + configOption + ", " + config + " |"); + throw new Error("Parameters must not be null."); + } + + buildWidgetPanel(); + } + + // convenience method + protected JLabel getLabel() { + JLabel nameLabel = new JLabel(configOption.getName()); + nameLabel.setToolTipText(configOption.getDescription()); + return nameLabel; + } + + // subclasses should call this method if a configuration option has changed + public void fireValueChanged(T value) { + // TODO notify config that an option has changed + // (component manager should be accessed in config only, such that we can intelligently decide which + // panels to initialise) + } + + // subclasses should use this method to build the graphical representation of the widgets + public abstract void buildWidgetPanel(); + +} Added: trunk/src/dl-learner/org/dllearner/gui/ComponentPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ComponentPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/gui/ComponentPanel.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -0,0 +1,24 @@ +package org.dllearner.gui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JPanel; + +import org.dllearner.core.Component; + +/** + * Class displaying a component (and its options). + * + * @author Jens Lehmann + * + */ +public class ComponentPanel<T extends Component> extends JPanel implements ActionListener { + + private static final long serialVersionUID = -7678275020058043937L; + + public void actionPerformed(ActionEvent arg0) { + // TODO Auto-generated method stub + } + +} Modified: trunk/src/dl-learner/org/dllearner/gui/Config.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/Config.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/Config.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -20,12 +20,16 @@ package org.dllearner.gui; +import org.dllearner.core.Component; import org.dllearner.core.ComponentManager; import org.dllearner.core.KnowledgeSource; import org.dllearner.core.LearningProblem; +import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.ReasoningService; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.config.ConfigEntry; +import org.dllearner.core.config.ConfigOption; // import org.dllearner.core.Component; @@ -37,28 +41,32 @@ * @author Tilo Hielscher */ public class Config { + private ComponentManager cm = ComponentManager.getInstance(); + + // the components currently active private KnowledgeSource source; - private KnowledgeSource oldSource; private ReasonerComponent reasoner; - private ReasonerComponent oldReasoner; private ReasoningService rs; private LearningProblem lp; - private LearningProblem oldLearningProblem; private LearningAlgorithm la; - private LearningAlgorithm oldLearningAlgorithm; + private boolean[] isInit = new boolean[4]; + // stores whether a component needs to be initialised ("previous" components have changed configuration values) +// private boolean[] needsInit = new boolean[4]; + + // learning algorithm status private Boolean threadIsRunning = false; private Long algorithmRunStartTime = null; private Long algorithmRunStopTime = null; - + /** * Get ComponentManager. * * @return ComponentManager */ public ComponentManager getComponentManager() { - return this.cm; + return cm; } /** @@ -80,8 +88,7 @@ * @param knowledgeSource */ public void setKnowledgeSource(KnowledgeSource knowledgeSource) { - this.oldSource = this.source; - this.source = knowledgeSource; + source = knowledgeSource; } /** @@ -94,21 +101,21 @@ } /** - * Get old KnowledgeSource. - * - * @return old KnowledgeSource + * Creates a knowledge source and makes it the active source. + * @param clazz + * @return */ - public KnowledgeSource getOldKnowledgeSource() { - return this.oldSource; + public KnowledgeSource newKnowledgeSource(Class<? extends KnowledgeSource> clazz) { + source = cm.knowledgeSource(clazz); + return source; } - + /** * Set Reasoner. * * @param reasoner */ public void setReasoner(ReasonerComponent reasoner) { - this.oldReasoner = this.reasoner; this.reasoner = reasoner; } @@ -121,16 +128,14 @@ return this.reasoner; } + // creates reasoner + reasoning service and makes it active + public ReasonerComponent newReasoner(Class<? extends ReasonerComponent> clazz) { + reasoner = cm.reasoner(clazz, source); + rs = cm.reasoningService(reasoner); + return reasoner; + } + /** - * Get old Reasoner as a set. - * - * @return oldReasonerSet. - */ - public ReasonerComponent getOldReasonerSet() { - return this.oldReasoner; - } - - /** * Set ReasoningService. * * @param reasoningService @@ -154,7 +159,6 @@ * @param learningProblem */ public void setLearningProblem(LearningProblem learningProblem) { - this.oldLearningProblem = this.lp; this.lp = learningProblem; } @@ -167,22 +171,17 @@ return this.lp; } - /** - * Get old LearningProblem as a set. - * - * @return old learningProblemSet. - */ - public LearningProblem getOldLearningProblem() { - return this.oldLearningProblem; + public LearningProblem newLearningProblem(Class<? extends LearningProblem> clazz) { + lp = cm.learningProblem(clazz, rs); + return lp; } - + /** * Set LearningAlgorithm. * * @param learningAlgorithm */ public void setLearningAlgorithm(LearningAlgorithm learningAlgorithm) { - this.oldLearningAlgorithm = this.la; this.la = learningAlgorithm; } @@ -195,16 +194,12 @@ return this.la; } + public LearningAlgorithm newLearningAlgorithm(Class<? extends LearningAlgorithm> clazz) throws LearningProblemUnsupportedException { + la = cm.learningAlgorithm(clazz, lp, rs); + return la; + } + /** - * Get old LearningAlgorithmSet. - * - * @return old LearningAlgorithmSet - */ - public LearningAlgorithm getOldLearningAlgorithm() { - return this.oldLearningAlgorithm; - } - - /** * KnowledgeSource.init has run? * * @return true, if init was made, false if not @@ -331,23 +326,28 @@ return false; } - /** - * reInit ComponentManager. - */ public void reInit() { cm = ComponentManager.getInstance(); source = null; - oldSource = null; reasoner = null; - oldReasoner = null; rs = null; lp = null; - oldLearningProblem = null; la = null; - oldLearningAlgorithm = null; isInit = new boolean[4]; threadIsRunning = false; algorithmRunStartTime = null; algorithmRunStopTime = null; } + + // applies a configuration option - used as delegate method, which invalidates components + public <T> void applyConfigEntry(Component component, ConfigEntry<T> entry) { + cm.applyConfigEntry(component, entry); + // invalidate components + } + + // delegate method for getting + public <T> T getConfigOptionValue(Component component, ConfigOption<T> option) { + return cm.getConfigOptionValue(component, option); + } + } Modified: trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/KnowledgeSourcePanel.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -1,5 +1,3 @@ -package org.dllearner.gui; - /** * Copyright (C) 2007-2008, Jens Lehmann * @@ -19,18 +17,21 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ +package org.dllearner.gui; -import java.util.List; -import javax.swing.*; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.List; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JPanel; + import org.dllearner.core.ComponentInitException; import org.dllearner.core.KnowledgeSource; -// import org.dllearner.kb.*; /** * KnowledgeSourcePanel, tab 0. Choose Source, change Options and final initiate @@ -80,9 +81,12 @@ choosePanel.add(setButton); choosenClassIndex = cb.getSelectedIndex(); - optionPanel = new OptionPanel(config, config.getKnowledgeSource(), config - .getOldKnowledgeSource(), sources.get(choosenClassIndex)); - initPanel.add(initButton); + // whenever a component is selected, we immediately create an instance (non-initialised) + KnowledgeSource ks = config.newKnowledgeSource(sources.get(cb.getSelectedIndex())); + optionPanel = new OptionPanel(config, ks); + +// optionPanel = new OptionPanel(config, config.getKnowledgeSource(), sources.get(choosenClassIndex)); + // initPanel.add(initButton); add(choosePanel, BorderLayout.PAGE_START); add(optionPanel, BorderLayout.CENTER); @@ -167,8 +171,8 @@ * update OptionPanel with new selection */ public void updateOptionPanel() { - optionPanel.update(config.getKnowledgeSource(), config.getOldKnowledgeSource(), sources - .get(choosenClassIndex)); + // TODO implement properly !! +// optionPanel.update(config.getKnowledgeSource(), sources.get(choosenClassIndex)); } /** Modified: trunk/src/dl-learner/org/dllearner/gui/LearningAlgorithmPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/LearningAlgorithmPanel.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/LearningAlgorithmPanel.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -19,14 +19,18 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -import javax.swing.*; - import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JPanel; + +import org.dllearner.algorithms.DBpediaNavigationSuggestor; +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; import org.dllearner.core.ComponentInitException; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblemUnsupportedException; @@ -52,16 +56,22 @@ private JComboBox cb = new JComboBox(cbItems); private int choosenClassIndex; - LearningAlgorithmPanel(Config config, StartGUI startGUI) { + public LearningAlgorithmPanel(Config config, StartGUI startGUI) { super(new BorderLayout()); this.config = config; this.startGUI = startGUI; learner = config.getComponentManager().getLearningAlgorithms(); + // to set a default learning algorithm, we move it to the beginning of the list + learner.remove(ExampleBasedROLComponent.class); + learner.add(0, ExampleBasedROLComponent.class); + // we also remove the DBpedia Navigation Suggestor (maybe shouldn't be declared as a learning algorithm at all; + // at least it is not doing anything useful at the moment) + learner.remove(DBpediaNavigationSuggestor.class); initButton = new JButton("Init LearingAlgorithm"); initButton.addActionListener(this); - initPanel.add(initButton); + // initPanel.add(initButton); initButton.setEnabled(true); autoInitButton = new JButton("Set"); autoInitButton.addActionListener(this); @@ -75,8 +85,14 @@ choosePanel.add(autoInitButton); cb.addActionListener(this); - optionPanel = new OptionPanel(config, config.getLearningAlgorithm(), config - .getOldLearningAlgorithm(), learner.get(choosenClassIndex)); + LearningAlgorithm la = null; + try { + la = config.newLearningAlgorithm(learner.get(cb.getSelectedIndex())); + } catch (LearningProblemUnsupportedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + optionPanel = new OptionPanel(config, la); add(choosePanel, BorderLayout.PAGE_START); add(optionPanel, BorderLayout.CENTER); @@ -161,8 +177,8 @@ */ public void updateOptionPanel() { // update OptionPanel - optionPanel.update(config.getLearningAlgorithm(), config.getOldLearningAlgorithm(), learner - .get(choosenClassIndex)); + // TODO implement properly !! +// optionPanel.update(config.getLearningAlgorithm(), learner.get(choosenClassIndex)); } /** Modified: trunk/src/dl-learner/org/dllearner/gui/LearningProblemPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/LearningProblemPanel.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/LearningProblemPanel.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -60,7 +60,7 @@ initButton = new JButton("Init LearningProblem"); initButton.addActionListener(this); - initPanel.add(initButton); + // initPanel.add(initButton); initButton.setEnabled(true); setButton = new JButton("Set"); setButton.addActionListener(this); @@ -76,8 +76,8 @@ // read choosen LearningProblem choosenClassIndex = cb.getSelectedIndex(); - optionPanel = new OptionPanel(config, config.getLearningProblem(), config - .getOldLearningProblem(), problem.get(choosenClassIndex)); + LearningProblem lp = config.newLearningProblem(problem.get(choosenClassIndex)); + optionPanel = new OptionPanel(config, lp); add(choosePanel, BorderLayout.PAGE_START); add(optionPanel, BorderLayout.CENTER); @@ -160,8 +160,8 @@ */ private void updateOptionPanel() { // update OptionPanel - optionPanel.update(config.getLearningProblem(), config.getOldLearningProblem(), problem - .get(choosenClassIndex)); +// TODO: implement properly !! +// optionPanel.update(config.getLearningProblem(), problem.get(choosenClassIndex)); } /** Modified: trunk/src/dl-learner/org/dllearner/gui/OptionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/OptionPanel.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/OptionPanel.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -1,5 +1,3 @@ -package org.dllearner.gui; - /** * Copyright (C) 2007-2008, Jens Lehmann * @@ -19,6 +17,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ +package org.dllearner.gui; import java.awt.BorderLayout; import java.awt.Dimension; @@ -39,31 +38,26 @@ * here. * * @author Tilo Hielscher + * @author Jens Lehmann * */ public class OptionPanel extends JPanel { private static final long serialVersionUID = -3053205578443575240L; + private Config config; - private Class<? extends Component> componentOption; - private List<ConfigOption<?>> optionList; +// private Class<? extends Component> componentClass; private JPanel centerPanel = new JPanel(); private Component component; - private Component oldComponent; private GridBagLayout gridBagLayout = new GridBagLayout(); private GridBagConstraints constraints = new GridBagConstraints(); - public OptionPanel(Config config, Component component, Component oldComponent, - Class<? extends Component> componentOption) { + public OptionPanel(Config config, Component component) { super(new BorderLayout()); - + this.config = config; this.component = component; - this.oldComponent = oldComponent; - this.componentOption = componentOption; - optionList = ComponentManager.getConfigOptions(componentOption); - // define GridBagLayout centerPanel.setLayout(gridBagLayout); constraints.anchor = GridBagConstraints.NORTHWEST; @@ -78,47 +72,40 @@ } /** update this OptionPanel */ - public void update(Component component, Component oldComponent, - Class<? extends Component> componentOption) { + public void update(Component component) { this.component = component; - this.oldComponent = oldComponent; - this.componentOption = componentOption; showWidgets(); - } /** * Define here what core.config.class is what type of widget. * WidgetPanelDefault is for none defined classes. */ + @SuppressWarnings("unchecked") private void showWidgets() { + // clear panel + centerPanel.removeAll(); + JPanel widgetPanel; - optionList = ComponentManager.getConfigOptions(componentOption); - centerPanel.removeAll(); // clear panel + List<ConfigOption<?>> optionList = ComponentManager.getConfigOptions(component.getClass()); + for (int i = 0; i < optionList.size(); i++) { buildConstraints(constraints, 0, i, 1, 1, 0, 0); - if (optionList.get(i).getClass().toString().contains("IntegerConfigOption")) { - widgetPanel = new WidgetPanelInteger(config, component, oldComponent, - componentOption, optionList.get(i)); - } else if (optionList.get(i).getClass().toString().contains("BooleanConfigOption")) { - widgetPanel = new WidgetPanelBoolean(config, component, oldComponent, - componentOption, optionList.get(i)); - } else if (optionList.get(i).getClass().toString().contains("DoubleConfigOption")) { - widgetPanel = new WidgetPanelDouble(config, component, oldComponent, - componentOption, optionList.get(i)); - } else if (optionList.get(i).getClass().toString().contains("StringConfigOption")) { - widgetPanel = new WidgetPanelString(config, component, oldComponent, - componentOption, optionList.get(i)); - } else if (optionList.get(i).getClass().toString().contains("StringSetConfigOption")) { - widgetPanel = new WidgetPanelStringSet(config, component, oldComponent, - componentOption, optionList.get(i)); - } else if (optionList.get(i).getClass().toString().contains( - "StringTupleListConfigOption")) { - widgetPanel = new WidgetPanelStringTupleList(config, component, oldComponent, - componentOption, optionList.get(i)); + ConfigOption option = optionList.get(i); + if (option instanceof IntegerConfigOption) { + widgetPanel = new WidgetPanelInteger(config, component, (IntegerConfigOption) option); + } else if (option instanceof BooleanConfigOption) { + widgetPanel = new WidgetPanelBoolean(config, component, (BooleanConfigOption) option); + } else if (option instanceof DoubleConfigOption) { + widgetPanel = new WidgetPanelDouble(config, component, (DoubleConfigOption) option); + } else if (option instanceof StringConfigOption) { + widgetPanel = new WidgetPanelString(config, component, (StringConfigOption) option); + } else if (option instanceof StringSetConfigOption) { + widgetPanel = new WidgetPanelStringSet(config, component, (StringSetConfigOption) option); + } else if (option instanceof StringTupleListConfigOption) { + widgetPanel = new WidgetPanelStringTupleList(config, component, (StringTupleListConfigOption) option); } else { - widgetPanel = new WidgetPanelDefault(config, component, - /* oldComponent, */componentOption, optionList.get(i)); + widgetPanel = new WidgetPanelDefault(config, component, option); } gridBagLayout.setConstraints(widgetPanel, constraints); centerPanel.add(widgetPanel); Modified: trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/ReasonerPanel.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -26,10 +26,13 @@ import java.awt.event.ActionListener; import java.util.List; -import javax.swing.*; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JPanel; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ReasonerComponent; +import org.dllearner.reasoning.OWLAPIReasoner; /** * ReasonerPanel, tab 1. Choose Resoner, change Options and final initiate @@ -58,10 +61,13 @@ this.config = config; this.startGUI = startGUI; reasoner = config.getComponentManager().getReasonerComponents(); + // to set a default reasoner, we move it to the beginning of the list + reasoner.remove(OWLAPIReasoner.class); + reasoner.add(0, OWLAPIReasoner.class); initButton = new JButton("Init Reasoner"); initButton.addActionListener(this); - initPanel.add(initButton); + // initPanel.add(initButton); initButton.setEnabled(true); setButton = new JButton("Set"); setButton.addActionListener(this); @@ -73,8 +79,8 @@ cb.addItem(config.getComponentManager().getComponentName(reasoner.get(i))); } - optionPanel = new OptionPanel(config, config.getReasoner(), config.getOldReasonerSet(), - reasoner.get(choosenClassIndex)); + ReasonerComponent rc = config.newReasoner(reasoner.get(cb.getSelectedIndex())); + optionPanel = new OptionPanel(config, rc); choosePanel.add(setButton); cb.addActionListener(this); @@ -168,8 +174,8 @@ * update OptionPanel with new selection */ public void updateOptionPanel() { - optionPanel.update(config.getReasoner(), config.getOldReasonerSet(), reasoner - .get(choosenClassIndex)); +// TODO: implement properly !! +// optionPanel.update(config.getReasoner(), reasoner.get(choosenClassIndex)); } /** Modified: trunk/src/dl-learner/org/dllearner/gui/StartGUI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/StartGUI.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/StartGUI.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -1,5 +1,3 @@ -package org.dllearner.gui; - /** * Copyright (C) 2007-2008, Jens Lehmann * @@ -19,6 +17,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ +package org.dllearner.gui; import javax.swing.*; import javax.swing.event.*; @@ -38,9 +37,10 @@ import javax.swing.filechooser.FileFilter; /** - * StartGUI + * This class builds the basic GUI elements and is used to start the DL-Learner GUI. * * @author Tilo Hielscher + * @author Jens Lehmann */ public class StartGUI extends JFrame implements ActionListener { @@ -49,9 +49,10 @@ private JTabbedPane tabPane = new JTabbedPane(); private Config config = new Config(); - private ConfigLoad configLoad = new ConfigLoad(config, this);; - private ConfigSave configSave = new ConfigSave(config, this);; + private ConfigLoad configLoad = new ConfigLoad(config, this); + private ConfigSave configSave = new ConfigSave(config, this); + private KnowledgeSourcePanel tab0; private ReasonerPanel tab1; private LearningProblemPanel tab2; @@ -60,19 +61,23 @@ private JMenuBar menuBar = new JMenuBar(); private JMenu menuFile = new JMenu("File"); - private JMenuItem openItem = new JMenuItem("Open Config"); - private JMenuItem saveItem = new JMenuItem("Save As Config"); + private JMenuItem openItem = new JMenuItem("Open Conf File ..."); + private JMenuItem saveItem = new JMenuItem("Save As Conf File ..."); + private JMenuItem exitItem = new JMenuItem("Exit"); + private JMenu menuHelp = new JMenu("Help"); + private JMenuItem aboutItem = new JMenuItem("About"); + private JMenuItem tutorialItem = new JMenuItem("Tutorial"); public StartGUI() { this(null); } - + public StartGUI(File file) { - this.setTitle("DL-Learner"); + this.setTitle("DL-Learner GUI"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationByPlatform(true); this.setSize(800, 600); - + // set icon if (this.getClass().getResource("icon.gif") != null) setIconImage(java.awt.Toolkit.getDefaultToolkit().getImage( @@ -89,15 +94,22 @@ tabPane.addTab("Learning Algorithm", tab3); tabPane.addTab("Run", tab4); - this.setJMenuBar(menuBar); + setJMenuBar(menuBar); menuBar.add(menuFile); menuFile.add(openItem); openItem.addActionListener(this); menuFile.add(saveItem); saveItem.addActionListener(this); + menuFile.add(exitItem); + exitItem.addActionListener(this); + menuBar.add(menuHelp); + menuHelp.add(tutorialItem); + tutorialItem.addActionListener(this); + menuHelp.add(aboutItem); + aboutItem.addActionListener(this); - this.add(tabPane); - this.setVisible(true); + add(tabPane); + setVisible(true); updateTabColors(); // Register a change listener @@ -107,8 +119,8 @@ init(); } }); - - if(file != null) { + + if (file != null) { configLoad.openFile(file); configLoad.startParser(); } @@ -132,10 +144,10 @@ logger.setLevel(Level.INFO); File file = null; - if(args.length > 0) + if (args.length > 0) file = new File(args[args.length - 1]); - new StartGUI(file); + new StartGUI(file); } public void actionPerformed(ActionEvent e) { @@ -162,9 +174,8 @@ configLoad.openFile(fc.getSelectedFile()); configLoad.startParser(); } - } // save as config file - if (e.getSource() == saveItem) { + } else if (e.getSource() == saveItem) { JFileChooser fc = new JFileChooser(new File("examples/")); // FileFilter only *.conf fc.addChoosableFileFilter(new FileFilter() { @@ -194,6 +205,15 @@ } } System.out.println("config file saved"); + // exit + } else if (e.getSource() == exitItem) { + dispose(); + // tutorial + } else if (e.getSource() == tutorialItem) { + new TutorialWindow(); + // about + } else if (e.getSource() == aboutItem) { + new AboutWindow(); } } Added: trunk/src/dl-learner/org/dllearner/gui/TutorialWindow.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/TutorialWindow.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/gui/TutorialWindow.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -0,0 +1,26 @@ +package org.dllearner.gui; + +import javax.swing.JFrame; + +/** + * Window displaying a tutorial for the DL-Learner GUI. + * + * @author Jens Lehmann + * + */ +public class TutorialWindow extends JFrame { + + private static final long serialVersionUID = 9152567539729126842L; + + public TutorialWindow() { + setTitle("Quick Tutorial"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationByPlatform(true); + setSize(300, 500); + + // display tutorial text + + setVisible(true); + } + +} Deleted: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelAbstract.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -1,47 +0,0 @@ -package org.dllearner.gui; - -/** - * 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/>. - * - */ - -import javax.swing.JPanel; - -/** - * WidgetPanelAbstract defines all Widgets in an abstract way. - * - * @author Tilo Hielscher - */ -public abstract class WidgetPanelAbstract extends JPanel { - - /** - * Show label and tooltip. - */ - public abstract void showLabel(); - - /** - * Show textfield, setbutton and so on, make layout. - */ - public abstract void showThingToChange(); - - /** - * Set entry you got from showThingToChange(). - */ - public abstract void setEntry(); - -} Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelBoolean.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -1,5 +1,3 @@ -package org.dllearner.gui; - /** * Copyright (C) 2007-2008, Jens Lehmann * @@ -19,53 +17,35 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ +package org.dllearner.gui; -import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.Color; import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JPanel; import org.dllearner.core.Component; -import org.dllearner.core.config.ConfigEntry; -import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.BooleanConfigOption; +import org.dllearner.core.config.ConfigEntry; import org.dllearner.core.config.InvalidConfigOptionValueException; /** * Panel for option Boolean, defined in * org.dllearner.core.config.BooleanConfigOption. * + * @author Jens Lehmann * @author Tilo Hielscher */ -public class WidgetPanelBoolean extends WidgetPanelAbstract implements ActionListener { +public class WidgetPanelBoolean extends AbstractWidgetPanel<Boolean> implements ActionListener { private static final long serialVersionUID = -4800583253223939928L; - private Config config; - private ConfigOption<?> configOption; - private JLabel nameLabel; - private JPanel widgetPanel = new JPanel(); - private Component component; - private Component oldComponent; - private Class<? extends Component> componentOption; + private Boolean value; - private String[] kbBoxItems = { "false", "true" }; - private JComboBox cb = new JComboBox(kbBoxItems); +// private String[] kbBoxItems; // = { "false", "true" }; + private JComboBox cb; // = new JComboBox(kbBoxItems); - public WidgetPanelBoolean(Config config, Component component, Component oldComponent, - Class<? extends Component> componentOption, ConfigOption<?> configOption) { - this.config = config; - this.configOption = configOption; - this.component = component; - this.oldComponent = oldComponent; - this.componentOption = componentOption; - - showLabel(); // name of option and tooltip - showThingToChange(); // textfield, setbutton - add(widgetPanel, BorderLayout.CENTER); + public WidgetPanelBoolean(Config config, Component component, BooleanConfigOption configOption) { + super(config, component, configOption); } public void actionPerformed(ActionEvent e) { @@ -73,76 +53,27 @@ value = false; else value = true; - setEntry(); - } - - @Override - public void showLabel() { - nameLabel = new JLabel(configOption.getName()); - nameLabel.setToolTipText(configOption.getDescription()); - widgetPanel.add(nameLabel); - } - - @Override - public void showThingToChange() { - if (component != null) { - // BooleanConfigOption - if (configOption.getClass().toString().contains("BooleanConfigOption")) { - // previous set value - if (configOption != null) { - value = (Boolean) config.getComponentManager().getConfigOptionValue(component, - configOption.getName()); - } - // previous set value from old - if (component != null && oldComponent != null) { - if (oldComponent.getClass().equals(component.getClass())) { - value = (Boolean) config.getComponentManager().getConfigOptionValue( - oldComponent, configOption.getName()); - if (value == null) - value = false; - else - setEntry(); - // set cb-index - if (!value) - cb.setSelectedIndex(0); - else - cb.setSelectedIndex(1); - } - } - // default value - else if (value != null && configOption.getDefaultValue() != null) { - value = (Boolean) configOption.getDefaultValue(); - } - // value == null? - if (value == null) { - value = false; - } - // set cb-index - if (!value) - cb.setSelectedIndex(0); - else - cb.setSelectedIndex(1); - cb.addActionListener(this); - widgetPanel.add(cb); + + BooleanConfigOption specialOption; + specialOption = (BooleanConfigOption) config.getComponentManager().getConfigOption( + component.getClass(), configOption.getName()); + if (specialOption.isValidValue(value)) { + try { + ConfigEntry<Boolean> specialEntry = new ConfigEntry<Boolean>(specialOption, value); + config.getComponentManager().applyConfigEntry(component, specialEntry); + // System.out.println("set Boolean: " + configOption.getName() + + // " = " + value); + } catch (InvalidConfigOptionValueException s) { + s.printStackTrace(); } - // UNKNOWN - else { - JLabel notImplementedLabel = new JLabel("not a boolean"); - notImplementedLabel.setForeground(Color.RED); - widgetPanel.add(notImplementedLabel); - } - } else { // configOption == NULL - JLabel noConfigOptionLabel = new JLabel("no init (Boolean)"); - noConfigOptionLabel.setForeground(Color.MAGENTA); - widgetPanel.add(noConfigOptionLabel); - } + } else + System.out.println("Boolean: not valid value"); } - @Override public void setEntry() { BooleanConfigOption specialOption; specialOption = (BooleanConfigOption) config.getComponentManager().getConfigOption( - componentOption, configOption.getName()); + component.getClass(), configOption.getName()); if (specialOption.isValidValue(value)) { try { ConfigEntry<Boolean> specialEntry = new ConfigEntry<Boolean>(specialOption, value); @@ -156,4 +87,28 @@ System.out.println("Boolean: not valid value"); } + @Override + public void buildWidgetPanel() { + add(getLabel()); + + value = config.getConfigOptionValue(component, configOption); + + if (value == null) + value = false; + else + setEntry(); + + // set cb-index + String[] kbBoxItems = { "false", "true" }; + cb = new JComboBox(kbBoxItems); + if (!value) + cb.setSelectedIndex(0); + else + cb.setSelectedIndex(1); + + cb.addActionListener(this); + add(cb); + + } + } Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDefault.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -1,5 +1,3 @@ -package org.dllearner.gui; - /** * Copyright (C) 2007-2008, Jens Lehmann * @@ -19,12 +17,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ +package org.dllearner.gui; -import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JLabel; -import javax.swing.JPanel; import org.dllearner.core.Component; import org.dllearner.core.config.ConfigOption; @@ -35,42 +32,20 @@ * @author Tilo Hielscher * */ -public class WidgetPanelDefault extends WidgetPanelAbstract { +public class WidgetPanelDefault extends AbstractWidgetPanel<Object> { private static final long serialVersionUID = 4059515858894036769L; - private ConfigOption<?> configOption; - private JLabel nameLabel; - private JPanel widgetPanel = new JPanel(); - - public WidgetPanelDefault(Config config, Component component, - Class<? extends Component> componentOption, ConfigOption<?> configOption) { - - this.configOption = configOption; - - showLabel(); - showThingToChange(); - add(widgetPanel, BorderLayout.CENTER); + public WidgetPanelDefault(Config config, Component component, ConfigOption<Object> configOption) { + super(config, component, configOption); } @Override - public void showLabel() { - nameLabel = new JLabel(configOption.getName()); - nameLabel.setToolTipText(configOption.getDescription()); - widgetPanel.add(nameLabel); - } - - @Override - public void showThingToChange() { + public void buildWidgetPanel() { JLabel notImplementedLabel = new JLabel(configOption.getClass().getSimpleName() + " not implemented"); notImplementedLabel.setForeground(Color.RED); - - widgetPanel.add(notImplementedLabel); + add(notImplementedLabel); } - @Override - public void setEntry() { - } - } Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDouble.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDouble.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelDouble.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -20,55 +20,37 @@ * */ -import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.Color; -import javax.swing.JTextField; -import javax.swing.JLabel; -import javax.swing.JPanel; import javax.swing.JButton; +import javax.swing.JTextField; import org.dllearner.core.Component; import org.dllearner.core.config.ConfigEntry; -import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.DoubleConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; /** * Panel for option Double, defined in - * org.dllearner.core.config.DoubleConfigOption. + * {@link org.dllearner.core.config.DoubleConfigOption}. * * @author Tilo Hielscher * */ -public class WidgetPanelDouble extends WidgetPanelAbstract implements ActionListener { +public class WidgetPanelDouble extends AbstractWidgetPanel<Double> implements ActionListener { private static final long serialVersionUID = 5238903690721116289L; - private Config config; - private ConfigOption<?> configOption; - private JLabel nameLabel; - private JPanel widgetPanel = new JPanel(); + private JButton setButton = new JButton("Set"); - private Component component; - private Component oldComponent; - private Class<? extends Component> componentOption; +// private Class<? extends Component> componentOption; + private Double value; private JTextField doubleField = new JTextField(5); - public WidgetPanelDouble(Config config, Component component, Component oldComponent, - Class<? extends Component> componentOption, ConfigOption<?> configOption) { - this.config = config; - this.configOption = configOption; - this.component = component; - this.oldComponent = oldComponent; - this.componentOption = componentOption; - - showLabel(); // name of option and tooltip - showThingToChange(); // textfield, setbutton - add(widgetPanel, BorderLayout.CENTER); + public WidgetPanelDouble(Config config, Component component, DoubleConfigOption configOption) { + super(config, component, configOption); } public void actionPerformed(ActionEvent e) { @@ -77,69 +59,11 @@ } } - @Override - public void showLabel() { - nameLabel = new JLabel(configOption.getName()); - nameLabel.setToolTipText(configOption.getDescription()); - widgetPanel.add(nameLabel); - } - - @Override - public void showThingToChange() { - if (component != null) { - // DoubleConfigOption - if (configOption.getClass().toString().contains("DoubleConfigOption")) { - // previous set value - if (configOption != null) { - value = (Double) config.getComponentManager().getConfigOptionValue(component, - configOption.getName()); - } - // previous set value from old - if (component != null && oldComponent != null) { - if (oldComponent.getClass().equals(component.getClass())) { - value = (Double) config.getComponentManager().getConfigOptionValue( - oldComponent, configOption.getName()); - if (value == null) - value = 0.0; - else { - doubleField.setText(value.toString()); - setEntry(); - } - } - } - // default value - else if (configOption.getDefaultValue() != null) { - value = (Double) configOption.getDefaultValue(); - } - // value == null - if (value == null) { - value = 0.0; - } - doubleField.setText(value.toString()); - doubleField.setToolTipText(configOption.getAllowedValuesDescription()); - setButton.addActionListener(this); - widgetPanel.add(doubleField); - widgetPanel.add(setButton); - } - // UNKNOWN - else { - JLabel notImplementedLabel = new JLabel("not a double"); - notImplementedLabel.setForeground(Color.RED); - widgetPanel.add(notImplementedLabel); - } - } else { // configOption == NULL - JLabel noConfigOptionLabel = new JLabel("no instance (Double)"); - noConfigOptionLabel.setForeground(Color.MAGENTA); - widgetPanel.add(noConfigOptionLabel); - } - } - - @Override public void setEntry() { DoubleConfigOption specialOption; value = Double.parseDouble(doubleField.getText()); // get from input specialOption = (DoubleConfigOption) config.getComponentManager().getConfigOption( - componentOption, configOption.getName()); + component.getClass(), configOption.getName()); if (specialOption.isValidValue(value)) { try { ConfigEntry<Double> specialEntry = new ConfigEntry<Double>(specialOption, value); @@ -152,4 +76,27 @@ } else System.out.println("Double: not valid value"); } + + @Override + public void buildWidgetPanel() { + add(getLabel()); + + value = config.getConfigOptionValue(component, configOption); + + setButton = new JButton("Set"); + doubleField = new JTextField(5); + if (value == null) + value = 0.0; + else { + doubleField.setText(value.toString()); + setEntry(); + } + + doubleField.setText(value.toString()); + doubleField.setToolTipText(configOption.getAllowedValuesDescription()); + setButton.addActionListener(this); + add(doubleField); + add(setButton); + + } } Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelInteger.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -20,19 +20,14 @@ * */ -import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.Color; -import javax.swing.JTextField; -import javax.swing.JLabel; -import javax.swing.JPanel; import javax.swing.JButton; +import javax.swing.JTextField; import org.dllearner.core.Component; import org.dllearner.core.config.ConfigEntry; -import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.IntegerConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; @@ -43,33 +38,17 @@ * @author Tilo Hielscher * */ -public class WidgetPanelInteger extends WidgetPanelAbstract implements ActionListener { +public class WidgetPanelInteger extends AbstractWidgetPanel<Integer> implements ActionListener { private static final long serialVersionUID = -1802111225835164644L; - private Config config; - private ConfigOption<?> configOption; - private JLabel nameLabel; - private JPanel widgetPanel = new JPanel(); private JButton setButton = new JButton("Set"); - private Component component; - private Component oldComponent; - private Class<? extends Component> componentOption; private Integer value; private JTextField integerField = new JTextField(3); - public WidgetPanelInteger(Config config, Component component, Component oldComponent, - Class<? extends Component> componentOption, ConfigOption<?> configOption) { - this.config = config; - this.configOption = configOption; - this.component = component; - this.oldComponent = oldComponent; - this.componentOption = componentOption; - - showLabel(); // name of option and tooltip - showThingToChange(); // textfield, setbutton - add(widgetPanel, BorderLayout.CENTER); + public WidgetPanelInteger(Config config, Component component, IntegerConfigOption configOption) { + super(config, component, configOption); } public void actionPerformed(ActionEvent e) { @@ -78,69 +57,11 @@ } } - @Override - public void showLabel() { - nameLabel = new JLabel(configOption.getName()); - nameLabel.setToolTipText(configOption.getDescription()); - widgetPanel.add(nameLabel); - } - - @Override - public void showThingToChange() { - if (component != null) { - // IntegerConfigOption - if (configOption.getClass().toString().contains("IntegerConfigOption")) { - // previous set value - if (configOption != null) { - value = (Integer) config.getComponentManager().getConfigOptionValue(component, - configOption.getName()); - } - // previous set value from old - if (component != null && oldComponent != null) { - if (oldComponent.getClass().equals(component.getClass())) { - value = (Integer) config.getComponentManager().getConfigOptionValue( - oldComponent, configOption.getName()); - if (value == null) - value = 0; - else { - integerField.setText(value.toString()); - setEntry(); - } - } - } - // default value - else if (configOption.getDefaultValue() != null) { - value = (Integer) configOption.getDefaultValue(); - } - // value == null - if (value == null) { - value = 0; - } - integerField.setText(value.toString()); - integerField.setToolTipText(configOption.getAllowedValuesDescription()); - setButton.addActionListener(this); - widgetPanel.add(integerField); - widgetPanel.add(setButton); - } - // UNKNOWN - else { - JLabel notImplementedLabel = new JLabel("not an integer"); - notImplementedLabel.setForeground(Color.RED); - widgetPanel.add(notImplementedLabel); - } - } else { // configOption == NULL - JLabel noConfigOptionLabel = new JLabel("no instance (Integer)"); - noConfigOptionLabel.setForeground(Color.MAGENTA); - widgetPanel.add(noConfigOptionLabel); - } - } - - @Override public void setEntry() { IntegerConfigOption specialOption; value = Integer.parseInt(integerField.getText()); // get from input specialOption = (IntegerConfigOption) config.getComponentManager().getConfigOption( - componentOption, configOption.getName()); + component.getClass(), configOption.getName()); if (specialOption.isValidValue(value)) { try { ConfigEntry<Integer> specialEntry = new ConfigEntry<Integer>(specialOption, value); @@ -153,4 +74,26 @@ } else System.out.println("Integer: not valid value"); } + + @Override + public void buildWidgetPanel() { + add(getLabel()); + + value = config.getConfigOptionValue(component, configOption); + + setButton = new JButton("Set"); + integerField = new JTextField(3); + if (value == null) + value = 0; + else { + integerField.setText(value.toString()); + setEntry(); + } + + integerField.setText(value.toString()); + integerField.setToolTipText(configOption.getAllowedValuesDescription()); + setButton.addActionListener(this); + add(integerField); + add(setButton); + } } Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelString.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelString.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelString.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -1,5 +1,3 @@ -package org.dllearner.gui; - /** * Copyright (C) 2007-2008, Jens Lehmann * @@ -19,58 +17,43 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ +package org.dllearner.gui; -import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.Color; import java.io.File; +import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JTextField; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JButton; import org.dllearner.core.Component; import org.dllearner.core.config.ConfigEntry; -import org.dllearner.core.config.ConfigOption; -import org.dllearner.core.config.StringConfigOption; import org.dllearner.core.config.InvalidConfigOptionValueException; +import org.dllearner.core.config.StringConfigOption; /** * Panel for option String, defined in - * org.dllearner.core.config.StringConfigOption. + * {@link org.dllearner.core.config.StringConfigOption}. * + * @author Jens Lehmann * @author Tilo Hielscher * */ -public class WidgetPanelString extends WidgetPanelAbstract implements ActionListener { +public class WidgetPanelString extends AbstractWidgetPanel<String> implements ActionListener { private static final long serialVersionUID = -2169739820989891226L; - private Config config; - private ConfigOption<?> configOption; - private JLabel nameLabel; - private JPanel widgetPanel = new JPanel(); - private JButton setButton = new JButton("Set"); - private Component component; - private Component oldComponent; + +// private JPanel widgetPanel = new JPanel(); + private JButton setButton; // = new JButton("Set"); + private Class<? extends Component> componentOption; private String value; - private JTextField stringField = new JTextField(35); + private JTextField stringField; // = new JTextField(35); - public WidgetPanelString(Config config, Component component, Component oldComponent, - Class<? extends Component> componentOption, ConfigOption<?> configOption) { - this.config = config; - this.configOption = configOption; - this.component = component; - this.oldComponent = oldComponent; - this.componentOption = componentOption; - - showLabel(); // name of option and tooltip - showThingToChange(); // textfield, setbutton - add(widgetPanel, BorderLayout.CENTER); + public WidgetPanelString(Config config, Component component, StringConfigOption configOption) { + super(config, component, configOption); } public void actionPerformed(ActionEvent e) { @@ -92,64 +75,6 @@ } } - @Override - public void showLabel() { - nameLabel = new JLabel(configOption.getName()); - nameLabel.setToolTipText(configOption.getDescription()); - widgetPanel.add(nameLabel); - } - - @Override - public void showThingToChange() { - if (component != null) { - // StringConfigOption - if (configOption.getClass().toString().contains("StringConfigOption")) { - // previous set value - if (configOption != null) { - value = (String) config.getComponentManager().getConfigOptionValue(component, - configOption.getName()); - } - // previous set value from old - if (component != null && oldComponent != null) { - if (oldComponent.getClass().equals(component.getClass())) { - value = (String) config.getComponentManager().getConfigOptionValue( - oldComponent, configOption.getName()); - if (value != null) { - stringField.setText(value.toString()); - setEntry(); - } - } - } - // default value - else if (configOption.getDefaultValue() != null) { - value = (String) configOption.getDefaultValue(); - } - // value == null - if (value == null) { - value = ""; - } - stringField.setText(value.toString()); - stringField.setToolTipText(configOption.getAllowedValuesDescription()); - setButton.addActionListener(this); - widgetPanel.add(stringField); - widgetPanel.add(setButton); - if (checkForFilename()) - setButton.setText("choose local file"); - } - // UNKNOWN - else { - JLabel notImplementedLabel = new JLabel("not a string"); - notImplementedLabel.setForeground(Color.RED); - widgetPanel.add(notImplementedLabel); - } - } else { // configOption == NULL - JLabel noConfigOptionLabel = new JLabel("no instance (String)"); - noConfigOptionLabel.setForeground(Color.MAGENTA); - widgetPanel.add(noConfigOptionLabel); - } - } - - @Override public void setEntry() { StringConfigOption specialOption; value = stringField.getText(); // get from input @@ -176,4 +101,32 @@ return configOption.getName().equalsIgnoreCase("filename"); } + @Override + public void buildWidgetPanel() { + add(getLabel()); + + // get current value of this option for the given component + value = config.getConfigOptionValue(component, configOption); + // default values can be null, so we interpret this as empty string + if (value == null) { + value = ""; + } + + // text field for strings + stringField = new JTextField(35); + stringField.setText(value); + stringField.setToolTipText(configOption.getAllowedValuesDescription()); + + // set button (value is only updated when this button is pressed => would better without set) + setButton = new JButton("Set"); + setButton.addActionListener(this); + + add(stringField); + add(setButton); + + if (checkForFilename()) + setButton.setText("choose local file"); + + } + } Modified: trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java 2008-08-21 11:59:44 UTC (rev 1119) +++ trunk/src/dl-learner/org/dllearner/gui/WidgetPanelStringSet.java 2008-08-21 14:23:00 UTC (rev 1120) @@ -1,5 +1,3 @@ -package org.dllearner.gui; - /** * Copyright (C) 2007-2008, Jens Lehmann * @@ -19,6 +17,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ +package org.dllearner.gui; import java.awt.BorderLayout; import java.awt.Dimension; @@ -26,24 +25,24 @@ import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.Color; -import java.util.*; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.Set; import javax.swing.DefaultListModel; -import javax.swing.JLabel; +import javax.swing.JButton; import javax.swing.JList; import javax.swing.JPanel; -import javax.swing.JButton; import javax.swing.JScrollPane; import javax.swing.JTextField; import org.dllearner.core.Component; import org.dllearner.core.config.ConfigEntry; -import org.dllearner.core.config.ConfigOption; -import org.dllearner.core.config.StringSetConfigOption; import org.dllearner.core.config.InvalidConfigOpti... [truncated message content] |
From: <ku...@us...> - 2008-08-21 11:59:55
|
Revision: 1119 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1119&view=rev Author: kurzum Date: 2008-08-21 11:59:44 +0000 (Thu, 21 Aug 2008) Log Message: ----------- some changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -1,64 +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.kb.aquisitors; - -import java.util.SortedSet; - -import org.apache.log4j.Logger; -import org.dllearner.kb.extraction.Configuration; -import org.dllearner.utilities.datastructures.RDFNodeTuple; - -/** - * Can execute different queries. - * - * @author Sebastian Hellmann - * - */ -public class LinkedDataTupelAquisitor extends TupelAquisitor { - - @SuppressWarnings("unused") - private static Logger logger = Logger.getLogger(LinkedDataTupelAquisitor.class); - @SuppressWarnings("unused") - private Configuration configuration; - - - public LinkedDataTupelAquisitor(Configuration configuration) { - this.configuration = configuration; - } - - // standard query get a tupels (p,o) for subject s - @Override - public SortedSet<RDFNodeTuple> retrieveTupel(String uri){ - throw new RuntimeException("Not Implemented yet"); - } - @Override - public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){ - throw new RuntimeException("Not Implemented yet"); - } - @Override - public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ - throw new RuntimeException("Not Implemented yet"); - } - - - - - -} Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java (from rev 1118, trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -0,0 +1,64 @@ +/** + * 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.kb.aquisitors; + +import java.util.SortedSet; + +import org.apache.log4j.Logger; +import org.dllearner.kb.extraction.Configuration; +import org.dllearner.utilities.datastructures.RDFNodeTuple; + +/** + * Can execute different queries. + * + * @author Sebastian Hellmann + * + */ +public class LinkedDataTupleAquisitor extends TupleAquisitor { + + @SuppressWarnings("unused") + private static Logger logger = Logger.getLogger(LinkedDataTupleAquisitor.class); + @SuppressWarnings("unused") + private Configuration configuration; + + + public LinkedDataTupleAquisitor(Configuration configuration) { + this.configuration = configuration; + } + + // standard query get a tupels (p,o) for subject s + @Override + public SortedSet<RDFNodeTuple> retrieveTupel(String uri){ + throw new RuntimeException("Not Implemented yet"); + } + @Override + public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){ + throw new RuntimeException("Not Implemented yet"); + } + @Override + public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ + throw new RuntimeException("Not Implemented yet"); + } + + + + + +} Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupleAquisitor.java ___________________________________________________________________ Added: svn:mergeinfo + Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -1,81 +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.kb.aquisitors; - -import java.util.SortedSet; - -import org.apache.log4j.Logger; -import org.dllearner.kb.sparql.SPARQLTasks; -import org.dllearner.kb.sparql.SparqlQueryMaker; -import org.dllearner.utilities.datastructures.RDFNodeTuple; - -/** - * Can execute different queries. - * - * @author Sebastian Hellmann - * - */ -public class SparqlTupelAquisitor extends TupelAquisitor { - - - @SuppressWarnings("unused") - private static Logger logger = Logger.getLogger(SparqlTupelAquisitor.class); - protected static final String PREDICATE = "predicate"; - protected static final String OBJECT = "object"; - - protected SparqlQueryMaker sparqlQueryMaker; - protected SPARQLTasks sparqlTasks; - - - - public SparqlTupelAquisitor(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks) { - - this.sparqlQueryMaker = sparqlQueryMaker; - this.sparqlTasks = sparqlTasks; - } - - @Override - public SortedSet<RDFNodeTuple> retrieveTupel(String uri){ - // getQuery - String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); - return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); - - } - @Override - public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){ - // getQuery - String sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri); - return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); - - } - @Override - public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ - return retrieveTupel(uri); - } - - - - - - - - - -} Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -1,149 +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.kb.aquisitors; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.log4j.Logger; -import org.dllearner.kb.sparql.SPARQLTasks; -import org.dllearner.kb.sparql.SparqlQueryMaker; -import org.dllearner.utilities.datastructures.RDFNodeTuple; - -import com.hp.hpl.jena.query.ResultSetFormatter; -import com.hp.hpl.jena.rdf.model.RDFNode; -import com.hp.hpl.jena.sparql.core.ResultBinding; -import com.hp.hpl.jena.sparql.resultset.ResultSetRewindable; - -/** - * Can execute different queries. - * - * @author Sebastian Hellmann - * - */ -public class SparqlTupelAquisitorImproved extends SparqlTupelAquisitor { - - @SuppressWarnings("unused") - private static Logger logger = Logger.getLogger(SparqlTupelAquisitorImproved.class); - private Map<String,SortedSet<RDFNodeTuple>> resources = new HashMap<String, SortedSet<RDFNodeTuple>>(); - int recursionDepth; - - - public SparqlTupelAquisitorImproved(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks, int recursionDepth) { - super(sparqlQueryMaker, sparqlTasks); - this.recursionDepth = recursionDepth; - - } - - @Override - public SortedSet<RDFNodeTuple> retrieveTupel(String uri){ - - SortedSet<RDFNodeTuple> cachedSet = resources.get(uri); - if(cachedSet!=null) { - return cachedSet; - } - - //SortedSet<RDFNodeTuple> tmp = new TreeSet<RDFNodeTuple>(); - String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth); - //System.out.println(sparqlQueryString); - ResultSetRewindable rsw=null; - try{ - rsw = sparqlTasks.queryAsResultSet(sparqlQueryString); - }catch (Exception e) { - return super.retrieveTupel(uri); - } - @SuppressWarnings("unchecked") - List<ResultBinding> l = ResultSetFormatter.toList(rsw); - rsw.reset(); - - - - int resultsetcount = 0; - int i = 0; - for (ResultBinding binding : l) { - i = 0; - RDFNode nextOBJ = binding.get(OBJECT+i); - RDFNode nextPRED = binding.get(PREDICATE+i); - RDFNodeTuple tmptuple = new RDFNodeTuple(nextPRED, nextOBJ ); - add(uri,tmptuple); - - boolean cont = !nextOBJ.isLiteral(); - for (i=0; (i < recursionDepth) && cont; i++) { - RDFNode tmpPREDURI = binding.get(PREDICATE+i); - RDFNode tmpOBJURI = binding.get(OBJECT+i); - if(tmpOBJURI==null) { - cont=false; - }else if (tmpOBJURI.isLiteral()) { - tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); - add(nextOBJ.toString(), tmptuple); - //logger.trace(tmptuple); - //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); - cont=false; - }else { - tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); - add(nextOBJ.toString(), tmptuple); - //logger.trace(tmptuple); - //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); - nextOBJ = tmpOBJURI; - cont = true; - } - }//end for - - resultsetcount++; - } - - //System.out.println("original count "+count); - //logger.warn("SparqlTupelAquisitor retrieved : "+resultsetcount); - if(resultsetcount>999) { - logger.warn("SparqlTupelAquisitor retrieved more than 1000 results, there might some be missing"); - } - return ((cachedSet=resources.get(uri))==null)?new TreeSet<RDFNodeTuple>():cachedSet; - } - - @Override - public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ - int tmp = recursionDepth; - recursionDepth=4; - SortedSet<RDFNodeTuple> tmpSet = retrieveTupel(uri); - recursionDepth = tmp; - return tmpSet; - //getQuery - //String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); - //return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); - } - - - private void add(String uri, RDFNodeTuple tuple){ - SortedSet<RDFNodeTuple> set = resources.get(uri); - if(set==null){ - set = new TreeSet<RDFNodeTuple>(); - set.add(tuple); - resources.put(uri, set ); - }else { - set.add(tuple); - } - } - - - -} Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java (from rev 1118, trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -0,0 +1,81 @@ +/** + * 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.kb.aquisitors; + +import java.util.SortedSet; + +import org.apache.log4j.Logger; +import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlQueryMaker; +import org.dllearner.utilities.datastructures.RDFNodeTuple; + +/** + * Can execute different queries. + * + * @author Sebastian Hellmann + * + */ +public class SparqlTupleAquisitor extends TupleAquisitor { + + + @SuppressWarnings("unused") + private static Logger logger = Logger.getLogger(SparqlTupleAquisitor.class); + protected static final String PREDICATE = "predicate"; + protected static final String OBJECT = "object"; + + protected SparqlQueryMaker sparqlQueryMaker; + protected SPARQLTasks sparqlTasks; + + + + public SparqlTupleAquisitor(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks) { + + this.sparqlQueryMaker = sparqlQueryMaker; + this.sparqlTasks = sparqlTasks; + } + + @Override + public SortedSet<RDFNodeTuple> retrieveTupel(String uri){ + // getQuery + String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); + return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); + + } + @Override + public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){ + // getQuery + String sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri); + return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); + + } + @Override + public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ + return retrieveTupel(uri); + } + + + + + + + + + +} Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java (from rev 1118, trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -0,0 +1,156 @@ +/** + * 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.kb.aquisitors; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlQueryMaker; +import org.dllearner.utilities.datastructures.RDFNodeTuple; + +import com.hp.hpl.jena.query.ResultSetFormatter; +import com.hp.hpl.jena.rdf.model.RDFNode; +import com.hp.hpl.jena.sparql.core.ResultBinding; +import com.hp.hpl.jena.sparql.resultset.ResultSetRewindable; + +/** + * Can execute different queries. + * + * @author Sebastian Hellmann + * + */ +public class SparqlTupleAquisitorImproved extends SparqlTupleAquisitor { + + @SuppressWarnings("unused") + private static Logger logger = Logger.getLogger(SparqlTupleAquisitorImproved.class); + private Map<String,SortedSet<RDFNodeTuple>> resources = new HashMap<String, SortedSet<RDFNodeTuple>>(); + int recursionDepth; + + + public SparqlTupleAquisitorImproved(SparqlQueryMaker sparqlQueryMaker, SPARQLTasks sparqlTasks, int recursionDepth) { + super(sparqlQueryMaker, sparqlTasks); + this.recursionDepth = recursionDepth; + + } + + @Override + public SortedSet<RDFNodeTuple> retrieveTupel(String uri){ + + SortedSet<RDFNodeTuple> cachedSet = resources.get(uri); + if(cachedSet!=null) { + return cachedSet; + } + + //SortedSet<RDFNodeTuple> tmp = new TreeSet<RDFNodeTuple>(); + String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth); + //System.out.println(sparqlQueryString); + ResultSetRewindable rsw=null; + try{ + rsw = sparqlTasks.queryAsResultSet(sparqlQueryString); + }catch (Exception e) { + return super.retrieveTupel(uri); + } + @SuppressWarnings("unchecked") + List<ResultBinding> l = ResultSetFormatter.toList(rsw); + rsw.reset(); + + + + int resultsetcount = 0; + int i = 0; + for (ResultBinding binding : l) { + i = 0; + RDFNode nextOBJ = binding.get(OBJECT+i); + RDFNode nextPRED = binding.get(PREDICATE+i); + RDFNodeTuple tmptuple = new RDFNodeTuple(nextPRED, nextOBJ ); + add(uri,tmptuple); + + boolean cont = !nextOBJ.isLiteral(); + for (i=0; (i < recursionDepth) && cont; i++) { + RDFNode tmpPREDURI = binding.get(PREDICATE+i); + RDFNode tmpOBJURI = binding.get(OBJECT+i); + if(tmpOBJURI==null) { + cont=false; + }else if (tmpOBJURI.isLiteral()) { + tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); + add(nextOBJ.toString(), tmptuple); + //logger.trace(tmptuple); + //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); + cont=false; + }else { + tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); + add(nextOBJ.toString(), tmptuple); + //logger.trace(tmptuple); + //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); + nextOBJ = tmpOBJURI; + cont = true; + } + }//end for + + resultsetcount++; + } + + //System.out.println("original count "+count); + //logger.warn("SparqlTupelAquisitor retrieved : "+resultsetcount); + if(resultsetcount>999) { + logger.warn("SparqlTupelAquisitor retrieved more than 1000 results, there might some be missing"); + } + return ((cachedSet=resources.get(uri))==null)?new TreeSet<RDFNodeTuple>():cachedSet; + } + + @Override + public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ + int tmp = recursionDepth; + recursionDepth=4; + SortedSet<RDFNodeTuple> tmpSet = retrieveTupel(uri); + recursionDepth = tmp; + return tmpSet; + //getQuery + //String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); + //return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); + } + + + private void add(String uri, RDFNodeTuple tuple){ + SortedSet<RDFNodeTuple> set = resources.get(uri); + if(set==null){ + set = new TreeSet<RDFNodeTuple>(); + set.add(tuple); + resources.put(uri, set ); + }else { + set.add(tuple); + } + } + + @Override + public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){ + // getQuery + return super.retrieveClassesForInstances(uri); + + } + + + +} Property changes on: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupleAquisitorImproved.java ___________________________________________________________________ Added: svn:mergeinfo + Deleted: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -1,95 +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.kb.aquisitors; - -import java.net.URI; -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.log4j.Logger; -import org.dllearner.utilities.datastructures.RDFNodeTuple; - -/** - * - * Typed SPARQL query interface. The typing means that they all have the same - * input and the same output: They are fn: resource -> ( a | b ) where a - * normally is a predicate and b an object - * - * @author Sebastian Hellmann - * - */ -public abstract class TupelAquisitor { - - - private static Logger logger = Logger.getLogger(TupelAquisitor.class); - protected final int NORMAL = 0; - protected final int CLASSES_FOR_INSTANCES = 1; - protected final int CLASS_INFORMATION = 2; - - protected int mode = 0; - private boolean uriDebugCheck = true; - - public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){ - checkURIforValidity(uri); - try{ - if (mode == NORMAL) { - return retrieveTupel(uri); - } else if(mode == CLASSES_FOR_INSTANCES){ - return retrieveClassesForInstances(uri); - }else if(mode == CLASS_INFORMATION){ - return retrieveTuplesForClassesOnly(uri); - }else{ - throw new RuntimeException("undefined mode in aquisitor"); - } - }catch(Exception e){ - logger.warn("caught exception in tupleaquisitor, ignoring it"+e.toString()); - return new TreeSet<RDFNodeTuple>(); - - } - } - public abstract SortedSet<RDFNodeTuple> retrieveTupel(String uri); - public abstract SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri); - public abstract SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri); - - /*private void setMode(int mode) { - this.mode = mode; - }*/ - - public int getMode() { - return mode; - } - - public void setNextTaskToNormal(){mode = NORMAL;} - public void setNextTaskToClassesForInstances(){mode = CLASSES_FOR_INSTANCES;} - public void setNextTaskToClassInformation(){mode = CLASS_INFORMATION;} - - protected boolean checkURIforValidity(String uri){ - if(uriDebugCheck) return true; - try{ - new URI(uri); - }catch (Exception e) { - logger.warn("Exception while validating uri: "+uri); - return false; - } - return true; - } -} - - Copied: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java (from rev 1118, trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupleAquisitor.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -0,0 +1,95 @@ +/** + * 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.kb.aquisitors; + +import java.net.URI; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.dllearner.utilities.datastructures.RDFNodeTuple; + +/** + * + * Typed SPARQL query interface. The typing means that they all have the same + * input and the same output: They are fn: resource -> ( a | b ) where a + * normally is a predicate and b an object + * + * @author Sebastian Hellmann + * + */ +public abstract class TupleAquisitor { + + + private static Logger logger = Logger.getLogger(TupleAquisitor.class); + protected final int NORMAL = 0; + protected final int CLASSES_FOR_INSTANCES = 1; + protected final int CLASS_INFORMATION = 2; + + protected int mode = 0; + private boolean uriDebugCheck = true; + + public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){ + checkURIforValidity(uri); + try{ + if (mode == NORMAL) { + return retrieveTupel(uri); + } else if(mode == CLASSES_FOR_INSTANCES){ + return retrieveClassesForInstances(uri); + }else if(mode == CLASS_INFORMATION){ + return retrieveTuplesForClassesOnly(uri); + }else{ + throw new RuntimeException("undefined mode in aquisitor"); + } + }catch(Exception e){ + logger.warn("caught exception in tupleaquisitor, ignoring it"+e.toString()); + return new TreeSet<RDFNodeTuple>(); + + } + } + public abstract SortedSet<RDFNodeTuple> retrieveTupel(String uri); + public abstract SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri); + public abstract SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri); + + /*private void setMode(int mode) { + this.mode = mode; + }*/ + + public int getMode() { + return mode; + } + + public void setNextTaskToNormal(){mode = NORMAL;} + public void setNextTaskToClassesForInstances(){mode = CLASSES_FOR_INSTANCES;} + public void setNextTaskToClassInformation(){mode = CLASS_INFORMATION;} + + protected boolean checkURIforValidity(String uri){ + if(uriDebugCheck) return true; + try{ + new URI(uri); + }catch (Exception e) { + logger.warn("Exception while validating uri: "+uri); + return false; + } + return true; + } +} + + Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ClassNode.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -25,7 +25,7 @@ import java.util.TreeSet; import org.apache.log4j.Logger; -import org.dllearner.kb.aquisitors.TupelAquisitor; +import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.utilities.datastructures.RDFNodeTuple; import org.dllearner.utilities.owl.OWLVocabulary; @@ -50,7 +50,7 @@ // expands all directly connected nodes @Override - public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) { SortedSet<RDFNodeTuple> newTuples = tupelAquisitor.getTupelForResource(this.uri); // see manipulator @@ -96,7 +96,7 @@ // gets the types for properties recursively @Override - public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Configuration.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -19,7 +19,7 @@ */ package org.dllearner.kb.extraction; -import org.dllearner.kb.aquisitors.TupelAquisitor; +import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; /** @@ -32,7 +32,7 @@ private Manipulator manipulator; - private TupelAquisitor tupelAquisitor; + private TupleAquisitor tupelAquisitor; // the following needs to be moved to // class extraction algorithm or manipulator @@ -44,7 +44,7 @@ public Configuration( - TupelAquisitor tupelAquisitor, + TupleAquisitor tupelAquisitor, Manipulator manipulator, int recursiondepth, boolean getAllSuperClasses, @@ -87,7 +87,7 @@ } - public TupelAquisitor getTupelAquisitor() { + public TupleAquisitor getTupelAquisitor() { return tupelAquisitor; } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/DatatypePropertyNode.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -23,7 +23,7 @@ import java.util.SortedSet; import java.util.TreeSet; -import org.dllearner.kb.aquisitors.TupelAquisitor; +import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.utilities.owl.OWLVocabulary; @@ -51,13 +51,13 @@ // Property Nodes are normally not expanded, // this function is never called @Override - public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) { return null; } // gets the types for properties recursively @Override - public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -25,7 +25,7 @@ import java.util.TreeSet; import org.apache.log4j.Logger; -import org.dllearner.kb.aquisitors.TupelAquisitor; +import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.utilities.statistics.SimpleClock; /** @@ -42,15 +42,15 @@ private static Logger logger = Logger .getLogger(ExtractionAlgorithm.class); - public ExtractionAlgorithm(Configuration Configuration) { - this.configuration = Configuration; + public ExtractionAlgorithm(Configuration configuration) { + this.configuration = configuration; } public Node getFirstNode(String uri) { return new InstanceNode(uri); } - public List<Node> expandAll(String[] uris, TupelAquisitor tupelAquisitor) { + public List<Node> expandAll(String[] uris, TupleAquisitor tupelAquisitor) { List<Node> nodeList = new ArrayList<Node>(); for (String oneURI : uris) { nodeList.add(expandNode(oneURI, tupelAquisitor)); @@ -67,11 +67,11 @@ * @param typedSparqlQuery * @return */ - public Node expandNode(String uri, TupelAquisitor tupelAquisitor) { + public Node expandNode(String uri, TupleAquisitor tupelAquisitor) { SimpleClock sc = new SimpleClock(); - tupelAquisitor.setNextTaskToNormal(); + Node seedNode = getFirstNode(uri); List<Node> newNodes = new ArrayList<Node>(); List<Node> collectNodes = new ArrayList<Node>(); @@ -91,6 +91,7 @@ logger.info("Expanding " + nextNode); // these are the new not expanded nodes // the others are saved in connection with the original node + tupelAquisitor.setNextTaskToNormal(); tmp.addAll(nextNode.expand(tupelAquisitor, configuration.getManipulator())); //System.out.println(tmpVec); @@ -104,58 +105,57 @@ + " Nodes remaining, " + sc.getAndSet("")); } + + if(configuration.isCloseAfterRecursion()){ + List<InstanceNode> l = getInstanceNodes(newNodes); + tupelAquisitor.setNextTaskToClassesForInstances(); + collectNodes.addAll(expandCloseAfterRecursion(l, tupelAquisitor)); + + } // gets All Class Nodes and expands them further if (configuration.isGetAllSuperClasses()) { - expandAllSuperClassesOfANode(collectNodes, tupelAquisitor); + List<ClassNode> allClassNodes = getClassNodes(collectNodes); + tupelAquisitor.setNextTaskToClassInformation(); + expandAllSuperClassesOfANode(allClassNodes, tupelAquisitor); } return seedNode; } - private void expandAllSuperClassesOfANode(List<Node> allNodes, TupelAquisitor tupelAquisitor) { - logger.info("Get all superclasses"); - - - List<Node> classes = new ArrayList<Node>(); - List<Node> instances = new ArrayList<Node>(); - - for (Node one : allNodes) { - if (one instanceof ClassNode) { - classes.add(one); - } - if (one instanceof InstanceNode) { - instances.add(one); - } - - } - - //TODO LinkedData incompatibility - + private List<Node> expandCloseAfterRecursion(List<InstanceNode> instanceNodes, TupleAquisitor tupelAquisitor) { + List<Node> newNodes = new ArrayList<Node>(); tupelAquisitor.setNextTaskToClassesForInstances(); if (configuration.isCloseAfterRecursion()) { - while (!instances.isEmpty()) { + while (!instanceNodes.isEmpty()) { logger.trace("Getting classes for remaining instances: " - + instances.size()); - Node next = instances.remove(0); + + instanceNodes.size()); + Node next = instanceNodes.remove(0); logger.trace("Getting classes for: " + next); - classes.addAll(next.expand(tupelAquisitor, configuration.getManipulator())); - if (classes.size() >= configuration.getBreakSuperClassesAfter()) { + newNodes.addAll(next.expand(tupelAquisitor, configuration.getManipulator())); + if (newNodes.size() >= configuration.getBreakSuperClassesAfter()) { break; }//endif }//endwhile }//endif + return newNodes; + } + + private void expandAllSuperClassesOfANode(List<ClassNode> allClassNodes, TupleAquisitor tupelAquisitor) { + logger.info("Get all superclasses"); - + List<Node> newClasses = new ArrayList<Node>(); + newClasses.addAll(allClassNodes); + //TODO LinkedData incompatibility tupelAquisitor.setNextTaskToClassInformation(); int i = 0; - while (!classes.isEmpty() && false) { - logger.trace("Remaining classes: " + classes.size()); - Node next = classes.remove(0); + while (!newClasses.isEmpty() && false) { + logger.trace("Remaining classes: " + newClasses.size()); + Node next = newClasses.remove(0); if (!alreadyQueriedSuperClasses.contains(next.getURI().toString())) { logger.trace("Getting Superclasses for: " + next); alreadyQueriedSuperClasses.add(next.getURI().toString()); - classes.addAll(next.expand(tupelAquisitor, configuration.getManipulator())); + newClasses.addAll(next.expand(tupelAquisitor, configuration.getManipulator())); if (i > configuration.getBreakSuperClassesAfter()) { break; @@ -169,5 +169,30 @@ } } + + public static List<ClassNode> getClassNodes(List<Node> l ){ + List<ClassNode> retList = new ArrayList<ClassNode>(); + for (Node node : l) { + if (node instanceof ClassNode) { + retList.add( (ClassNode) node); + + } + + } + return retList; + } + + public static List<InstanceNode> getInstanceNodes(List<Node> l ){ + List<InstanceNode> retList = new ArrayList<InstanceNode>(); + for (Node node : l) { + if (node instanceof InstanceNode) { + retList.add( (InstanceNode) node); + + } + + } + return retList; + } + } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -25,7 +25,7 @@ import java.util.TreeSet; import org.apache.log4j.Logger; -import org.dllearner.kb.aquisitors.TupelAquisitor; +import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.utilities.datastructures.RDFNodeTuple; import org.dllearner.utilities.owl.OWLVocabulary; @@ -55,7 +55,7 @@ // expands all directly connected nodes @Override - public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) { SortedSet<RDFNodeTuple> newTuples = tupelAquisitor.getTupelForResource(uri); // see Manipulator @@ -103,7 +103,7 @@ // gets the types for properties recursively @Override - public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { for (ObjectPropertyNode one : objectProperties) { one.expandProperties(tupelAquisitor, manipulator); } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/LiteralNode.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -25,7 +25,7 @@ import java.util.TreeSet; import org.apache.log4j.Logger; -import org.dllearner.kb.aquisitors.TupelAquisitor; +import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; import com.hp.hpl.jena.rdf.model.Literal; @@ -59,7 +59,7 @@ // expands all directly connected nodes @Override - public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) { return new ArrayList<Node>(); } @@ -67,7 +67,7 @@ // gets the types for properties recursively @Override - public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { } @Override Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -22,7 +22,7 @@ import java.util.List; import java.util.SortedSet; -import org.dllearner.kb.aquisitors.TupelAquisitor; +import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; @@ -54,7 +54,7 @@ * @return Vector<Node> all Nodes that are new because of expansion */ public abstract List<Node> expand( - TupelAquisitor TupelAquisitor, Manipulator manipulator); + TupleAquisitor TupelAquisitor, Manipulator manipulator); /** * gets type defs for properties like rdf:type SymmetricProperties @@ -64,7 +64,7 @@ * @return Vector<Node> */ public abstract void expandProperties( - TupelAquisitor TupelAquisitor, Manipulator manipulator); + TupleAquisitor TupelAquisitor, Manipulator manipulator); /** * output Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ObjectPropertyNode.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -23,7 +23,7 @@ import java.util.SortedSet; import java.util.TreeSet; -import org.dllearner.kb.aquisitors.TupelAquisitor; +import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.utilities.datastructures.RDFNodeTuple; import org.dllearner.utilities.owl.OWLVocabulary; @@ -54,13 +54,13 @@ // Property Nodes are normally not expanded, // this function is never called @Override - public List<Node> expand(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public List<Node> expand(TupleAquisitor tupelAquisitor, Manipulator manipulator) { return null; } // gets the types for properties recursively @Override - public void expandProperties(TupelAquisitor tupelAquisitor, Manipulator manipulator) { + public void expandProperties(TupleAquisitor tupelAquisitor, Manipulator manipulator) { b.expandProperties(tupelAquisitor, manipulator); SortedSet<RDFNodeTuple> newTypes = tupelAquisitor.getTupelForResource(uri); for (RDFNodeTuple tuple : newTypes) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -46,8 +46,9 @@ import org.dllearner.core.config.StringSetConfigOption; import org.dllearner.core.config.StringTupleListConfigOption; import org.dllearner.core.owl.KB; -import org.dllearner.kb.aquisitors.SparqlTupelAquisitor; -import org.dllearner.kb.aquisitors.TupelAquisitor; +import org.dllearner.kb.aquisitors.SparqlTupleAquisitor; +import org.dllearner.kb.aquisitors.SparqlTupleAquisitorImproved; +import org.dllearner.kb.aquisitors.TupleAquisitor; import org.dllearner.kb.extraction.Configuration; import org.dllearner.kb.extraction.Manager; import org.dllearner.kb.manipulator.Manipulator; @@ -72,6 +73,7 @@ //DEFAULTS static int recursionDepthDefault = 1; + static final boolean debug = false; private boolean useCache=true; // ConfigOptions public URL url; @@ -90,7 +92,7 @@ private boolean useLits = false; private boolean getAllSuperClasses = true; private boolean closeAfterRecursion = true; - private int breakSuperClassRetrievalAfter = 200; + private int breakSuperClassRetrievalAfter = 1000; private String cacheDir = "cache"; // private boolean learnDomain = false; // private boolean learnRange = false; @@ -283,9 +285,12 @@ // get Options for Manipulator Manipulator manipulator = getManipulator(); - //manipulator.addRule(newRule); + + TupleAquisitor tupleAquisitor = getTupleAquisitor(); + + Configuration configuration = new Configuration( - getTupelAquisitor(), + getTupleAquisitor(), manipulator, recursionDepth, getAllSuperClasses, @@ -430,10 +435,13 @@ } - public TupelAquisitor getTupelAquisitor() + public TupleAquisitor getTupleAquisitor() { - return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks()); - //return new SparqlTupelAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth); + return (debug)? + new SparqlTupleAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth) + : + new SparqlTupleAquisitor(getSparqlQueryMaker(), getSPARQLTasks()); + } /* (non-Javadoc) Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQueryMaker.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -24,6 +24,8 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.dllearner.utilities.owl.OWLVocabulary; + /** * Can assemble sparql queries. can make queries for subject, predicate, object * according to the filter settings object SparqlQueryType, which gives the @@ -105,12 +107,15 @@ tmpFilter = (tmpFilter.length() > 0) ? "FILTER( " + lineend + tmpFilter + "). " : " "; - String returnString = "SELECT * WHERE {" +lineend + + /*String returnString = "SELECT * WHERE {" +lineend + "<" + subject + "> ?predicate ?object;" + "a ?object . "+lineend+ tmpFilter + "}"; + */ + String returnString = "SELECT * WHERE {" +lineend + + "<" + subject + "> <"+OWLVocabulary.RDF_TYPE+"> ?object. " +lineend+ + tmpFilter + "}"; - return returnString; } Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-21 11:06:07 UTC (rev 1118) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-21 11:59:44 UTC (rev 1119) @@ -26,7 +26,7 @@ import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; -import org.dllearner.kb.aquisitors.SparqlTupelAquisitorImproved; +import org.dllearner.kb.aquisitors.SparqlTupleAquisitorImproved; import org.dllearner.kb.extraction.Configuration; import org.dllearner.kb.extraction.Manager; import org.dllearner.kb.manipulator.Manipulator; @@ -66,7 +66,7 @@ int recursionDepth=2; Manager m = new Manager(); Configuration conf = new Configuration ( - new SparqlTupelAquisitorImproved(SparqlQueryMaker.getAllowYAGOFilter(), + new SparqlTupleAquisitorImproved(SparqlQueryMaker.getAllowYAGOFilter(), SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA"),recursionDepth), Manipulator.getDefaultManipulator(), recursionDepth, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-08-21 11:06:12
|
Revision: 1118 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1118&view=rev Author: sknappe Date: 2008-08-21 11:06:07 +0000 (Thu, 21 Aug 2008) Log Message: ----------- added mysql connector, needed for CalculatePageRank Added Paths: ----------- trunk/lib/mysql/ trunk/lib/mysql/mysql-connector-java-5.1.6-bin.jar Property changes on: trunk/lib/mysql/mysql-connector-java-5.1.6-bin.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-08-21 10:48:30
|
Revision: 1117 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1117&view=rev Author: sknappe Date: 2008-08-21 10:48:27 +0000 (Thu, 21 Aug 2008) Log Message: ----------- changed learning and concept display a bit, not final yet Modified Paths: -------------- trunk/src/dbpedia-navigator/DLLearnerConnection.php trunk/src/dbpedia-navigator/ajax_get_article.php trunk/src/dbpedia-navigator/ajax_learn_concepts.php trunk/src/dbpedia-navigator/css/default.css trunk/src/dbpedia-navigator/index.php trunk/src/dbpedia-navigator/js/ajax.js Modified: trunk/src/dbpedia-navigator/DLLearnerConnection.php =================================================================== --- trunk/src/dbpedia-navigator/DLLearnerConnection.php 2008-08-21 08:19:58 UTC (rev 1116) +++ trunk/src/dbpedia-navigator/DLLearnerConnection.php 2008-08-21 10:48:27 UTC (rev 1117) @@ -109,7 +109,7 @@ $this->client->stop($this->id); } //return $concepts->item; - return $concepts; + return json_decode($concepts,true); } function getConceptDepth() Modified: trunk/src/dbpedia-navigator/ajax_get_article.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_get_article.php 2008-08-21 08:19:58 UTC (rev 1116) +++ trunk/src/dbpedia-navigator/ajax_get_article.php 2008-08-21 10:48:27 UTC (rev 1117) @@ -168,6 +168,7 @@ unset($triples['http://dbpedia.org/property/lonMin']); unset($triples['http://dbpedia.org/property/latDeg']); unset($triples['http://dbpedia.org/property/lonMin']); + unset($triples['http://www.georss.org/georss/point']); if (count($triples)>0){ @@ -243,6 +244,4 @@ print $lat; print '$$'; print $long; - - //$objResponse->call('xajax_learnConcept'); ?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/ajax_learn_concepts.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_learn_concepts.php 2008-08-21 08:19:58 UTC (rev 1116) +++ trunk/src/dbpedia-navigator/ajax_learn_concepts.php 2008-08-21 10:48:27 UTC (rev 1117) @@ -25,16 +25,9 @@ $sc=new DLLearnerConnection($id, $ksID); try{ $concepts=$sc->getConceptFromExamples($posArray,$negArray); - $conceptDepth=$sc->getConceptDepth(); - $conceptArity=$sc->getConceptArity(); - $concept.="<table border=0>\n"; - $i=1; foreach ($concepts as $con){ - $concept.="<tr><td><a href=\"\" onclick=\"getSubjectsFromConcept('concept=".$con."');return false;\" onMouseOver=\"showdiv('div".$i."');showdiv('ConceptBox');\" onMouseOut=\"hidediv('div".$i."');hidediv('ConceptBox');\" />".$con."</a></td></tr>"; - //put information about concepts in divs - $conceptinformation.="<div id=\"div".$i."\" style=\"display:none\">Concept Depth: ".$conceptDepth[$i-1]."<br/>Concept Arity: ".$conceptArity[$i-1]."<br/>Concept Length: ".$sc->getConceptLength($con)."</div>"; - $i++; + $concept.="<tr><td><a href=\"\" onclick=\"getSubjectsFromConcept('concept=".$con['descriptionManchesterSyntax']."');return false;\" />".$con['descriptionManchesterSyntax']."</a> (Accuracy: ".(floatVal($con['accuracy'])*100)."%)</td></tr>"; } $concept.="</table>"; } catch(Exception $e){ @@ -44,6 +37,4 @@ else $concept="You must choose at least one positive example."; print $concept; - print '$$'; - print $conceptinformation; ?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/css/default.css =================================================================== --- trunk/src/dbpedia-navigator/css/default.css 2008-08-21 08:19:58 UTC (rev 1116) +++ trunk/src/dbpedia-navigator/css/default.css 2008-08-21 10:48:27 UTC (rev 1117) @@ -48,7 +48,7 @@ /*margin: 0 19em;*/ overflow: hidden; /*width: 10%;*/ - width: 60%; + width: 63%; float: left; margin-left: 3px; margin-right: 3px; Modified: trunk/src/dbpedia-navigator/index.php =================================================================== --- trunk/src/dbpedia-navigator/index.php 2008-08-21 08:19:58 UTC (rev 1116) +++ trunk/src/dbpedia-navigator/index.php 2008-08-21 10:48:27 UTC (rev 1117) @@ -109,7 +109,15 @@ <body <?php print $onLoad;?>> <!-- <h1>DBpedia Navigator</h1> --> -<div><table border="0" width="100%"><tr><td width="35%"><img src="images/dbpedia_navigator.png" alt="DBpedia Navigator" style="padding:5px" /></td><td width="50%"><span id="conceptlink"></span></td><td width="15%"><span id="Loading" style="display:none">Server Call... <a href=""><img src="images/remove.png" onclick="stopServerCall();return false;" /></a></span></td></tr></table></div> +<div><table border="0" width="100%"><tr><td width="30%"><img src="images/dbpedia_navigator.png" alt="DBpedia Navigator" style="padding:5px" /></td> +<td width="49%"> + <div class="box" id="ConceptBox" style="display:none"> + <div class="boxtitle" style="cursor:help;" title="Browsing suggestions considering search relevant and not relevant articles.">Navigation Suggestions</div> + <div class="boxcontent"> + <div id="conceptlink" style="display:block"></div> + </div> <!-- boxcontent --> + </div> <!-- box --> +</td><td width="19%"><span id="Loading" style="display:none">Server Call... <a href=""><img src="images/remove.png" onclick="stopServerCall();return false;" /></a></span></td></tr></table></div> <div id="layer" style="display:none"> <div id="layerContent" style="display:none"></div> </div> @@ -244,11 +252,6 @@ </ul> </div> - <div class="box" id="ConceptBox" style="position:absolute;top:15px;right:15px;width:18%;opacity:0.90;display:none;z-index:5;"> - <div class="boxtitle">Detailed Concept Information</div> - <div class="boxcontent" id="ConceptInformation"></div> - </div> - </body> </html> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/js/ajax.js =================================================================== --- trunk/src/dbpedia-navigator/js/ajax.js 2008-08-21 08:19:58 UTC (rev 1116) +++ trunk/src/dbpedia-navigator/js/ajax.js 2008-08-21 10:48:27 UTC (rev 1117) @@ -52,14 +52,15 @@ document.getElementById('Positives').innerHTML=response[3]; document.getElementById('Negatives').innerHTML=response[4]; setRunning(false); + if (response[5].length>0&&response[6].length>0) + loadGoogleMap(response[5],response[6],''+response[1]); if (response[1]=='Article not found'){ setTimeout("search_it('label='+document.getElementById('label').value+'&number=10')",2000); } else document.getElementById('LastArticlesBox').style.display='block'; + setTimeout('setRunning(true);learnConcept();',1000); } - if (response[5].length>0&&response[6].length>0) - loadGoogleMap(response[5],response[6],''+response[1]); } XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); @@ -264,7 +265,8 @@ if (XhrObj.readyState == 4 && XhrObj.status == 200){ var response = XhrObj.responseText.split('$$'); document.getElementById('conceptlink').innerHTML=response[0]; - document.getElementById('ConceptInformation').innerHTML=response[1]; + document.getElementById('ConceptBox').style.display='block'; + setRunning(false); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-08-21 08:20:06
|
Revision: 1116 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1116&view=rev Author: sknappe Date: 2008-08-21 08:19:58 +0000 (Thu, 21 Aug 2008) Log Message: ----------- REST now also works with URLs like: http://localhost/dbpedia-navigator/searchInstances/CitiesInSaxony?positives=[http://dbpedia.org/resource/Leipzig] You can generate an URL via a button at the bottom Modified Paths: -------------- trunk/src/dbpedia-navigator/ajax_get_article.php trunk/src/dbpedia-navigator/ajax_get_class.php trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php trunk/src/dbpedia-navigator/ajax_search.php trunk/src/dbpedia-navigator/index.php trunk/src/dbpedia-navigator/js/ajax.js Added Paths: ----------- trunk/src/dbpedia-navigator/ajax_generate_URL.php trunk/src/dbpedia-navigator/ajax_set_positives_and_negatives.php trunk/src/dbpedia-navigator/css/ trunk/src/dbpedia-navigator/css/default.css Removed Paths: ------------- trunk/src/dbpedia-navigator/default.css Added: trunk/src/dbpedia-navigator/ajax_generate_URL.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_generate_URL.php (rev 0) +++ trunk/src/dbpedia-navigator/ajax_generate_URL.php 2008-08-21 08:19:58 UTC (rev 1116) @@ -0,0 +1,29 @@ +<?php + session_start(); + $positives=$_SESSION['positive']; + $negatives=$_SESSION['negative']; + + $pos=""; + $i=1; + if (isset($_SESSION['positive'])) foreach ($positives as $key=>$value){ + if ($i<count($positives)) $pos.=$key.']['; + else $pos.=$key; + $i++; + } + if (strlen($pos)>0) $pos='positives=['.$pos.']'; + $neg=""; + $i=1; + if (isset($_SESSION['negative'])) foreach ($negatives as $key=>$value){ + if ($i<count($negatives)) $neg.=$key.']['; + else $neg.=$key; + $i++; + } + if (strlen($neg)>0) $neg='negatives=['.$neg.']'; + + if (strlen($pos)>0||strlen($neg)>0) $interests='?'.$pos.$neg; + else $interests=""; + + $url='http://'.$_SERVER['HTTP_HOST'].'/dbpedia-navigator/'.$_SESSION['lastAction'].$interests; + + print $url.'<br/><br/>'; +?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/ajax_get_article.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_get_article.php 2008-08-20 20:05:10 UTC (rev 1115) +++ trunk/src/dbpedia-navigator/ajax_get_article.php 2008-08-21 08:19:58 UTC (rev 1116) @@ -9,6 +9,11 @@ if (isset($_SESSION['articles'])) $articles=$_SESSION['articles']; $id=$_SESSION['id']; $ksID=$_SESSION['ksID']; + + //write last action into session + if (strpos($subject,"http://dbpedia.org/resource/")===0) $actionuri=substr (strrchr ($subject, "/"), 1); + else $actionuri=urlencode($subject); + $_SESSION['lastAction']='showArticle/'.$actionuri; session_write_close(); setRunning($id,"true"); Modified: trunk/src/dbpedia-navigator/ajax_get_class.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_get_class.php 2008-08-20 20:05:10 UTC (rev 1115) +++ trunk/src/dbpedia-navigator/ajax_get_class.php 2008-08-21 08:19:58 UTC (rev 1116) @@ -6,6 +6,9 @@ session_start(); if (isset($_SESSION['classes'])) $classes=$_SESSION['classes']; + //write last action into session + $actionuri=substr (strrchr ($class, "/"), 1); + $_SESSION['lastAction']='showClass/'.$actionuri; session_write_close(); Modified: trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php 2008-08-20 20:05:10 UTC (rev 1115) +++ trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php 2008-08-21 08:19:58 UTC (rev 1116) @@ -3,7 +3,13 @@ $category=$_POST['category']; $number=$_POST['number']; - + + session_start(); + //write last action into session + $actionuri=substr (strrchr ($category, "/"), 1); + $_SESSION['lastAction']='searchInstances/'.$actionuri; + session_write_close(); + //initialise content $content=""; $bestsearches=""; Modified: trunk/src/dbpedia-navigator/ajax_search.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_search.php 2008-08-20 20:05:10 UTC (rev 1115) +++ trunk/src/dbpedia-navigator/ajax_search.php 2008-08-21 08:19:58 UTC (rev 1116) @@ -1,9 +1,14 @@ <?php include('helper_functions.php'); - $label=$_POST['label']; + $label=urldecode($_POST['label']); $number=$_POST['number']; - + + session_start(); + //write last action into session + $_SESSION['lastAction']='search/'.urlencode($label); + session_write_close(); + //initialise content $content=""; Added: trunk/src/dbpedia-navigator/ajax_set_positives_and_negatives.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_set_positives_and_negatives.php (rev 0) +++ trunk/src/dbpedia-navigator/ajax_set_positives_and_negatives.php 2008-08-21 08:19:58 UTC (rev 1116) @@ -0,0 +1,42 @@ +<?php + include('helper_functions.php'); + + $positives=$_POST['positives']; + $negatives=$_POST['negatives']; + + if (strlen($positives)>0) $positives=explode('][',substr($positives,1,strlen($positives)-2)); + else $positives=array(); + if (strlen($negatives)>0) $negatives=explode('][',substr($negatives,1,strlen($negatives)-2)); + else $negatives=array(); + + mysql_connect('localhost','navigator','dbpedia'); + mysql_select_db("navigator_db"); + + $ptemp=array(); + foreach ($positives as $pos){ + $query="SELECT label FROM rank WHERE name='$pos' LIMIT 1"; + $res=mysql_query($query); + $result=mysql_fetch_array($res); + $ptemp[$pos]=$result['label']; + } + + $ntemp=array(); + foreach ($negatives as $neg){ + $query="SELECT label FROM rank WHERE name='$neg' LIMIT 1"; + $res=mysql_query($query); + $result=mysql_fetch_array($res); + $ntemp[$neg]=$result['label']; + } + + session_start(); + + $_SESSION['positive']=$ptemp; + $_SESSION['negative']=$ntemp; + + //add Positives and Negatives to Interests + $interests=show_Interests($_SESSION); + + print $interests[0]; + print '$$'; + print $interests[1]; +?> \ No newline at end of file Copied: trunk/src/dbpedia-navigator/css/default.css (from rev 1115, trunk/src/dbpedia-navigator/default.css) =================================================================== --- trunk/src/dbpedia-navigator/css/default.css (rev 0) +++ trunk/src/dbpedia-navigator/css/default.css 2008-08-21 08:19:58 UTC (rev 1116) @@ -0,0 +1,384 @@ +/** + * Main DBpedia Navigator Style Sheet. + * + * @author: Norman Heino + * @author: Jens Lehmann + */ + +/* remove browser specific margins */ +* { + margin: 0; + padding: 0; +} + +html { + font: 85%/1.2 "Lucida Grande", Helvetica, Arial, sans-serif; +} + +p { + margin: 8px 0; +} + +h1 { + margin: 0.2em; +} + +h2 { + margin: 0.1em; +} + +/* + * Main site structure + */ + +#Loading { + color: #666; + font-size: 85%; +} + +#wrapper { + /*position: relative;*/ + max-width: 100%; + padding: 1%; +/* padding: 15px; */ +/* margin: 15px;*/ +} + +#content { + /*margin: 0 19em;*/ + overflow: hidden; + /*width: 10%;*/ + width: 60%; + float: left; + margin-left: 3px; + margin-right: 3px; +/* border-left: 1px solid #bbb; + border-right: 1px solid #bbb; + padding: 0 5px;*/ +} + +/* + * Side bars are positioned absolutely due to several reasons: + * (1)Internet Explorer has problems displaying float elements, + * (2) the content's position in html is irrelevant, + * (3) positioning the content div is more straightforward. + */ +#leftSidebar { + /* position: absolute; */ + width: 18%; + min-width: 150px; + float: left; +} + +#rightSidebar { + /* position: absolute; */ + /*float: right;*/ + width: 18%; + min-width: 150px; + float: left; + /*top: 15px; + right: 15px;*/ +} + +/* + * sidebar content (boxes) + */ + +.box { + color: #666; + margin-bottom: 20px; + border: 1px solid #bbb; + font-size: 85%; +} + +/*.box td { + font-size: 100%; +}*/ + +.box .boxtitle { + color: #666; + background-color: #eee; + padding: 3px 0.4em; + font-weight: bold; + white-space: nowrap; +} + +.box .boxtitle .boxtitle_string { + width: 80%; + overflow: hidden; +/* display: none;*/ +} + +.box .boxcontent { + padding: 0.6em; + border-top: 1px solid #bbb; +} + +/* restrict content of certain boxes */ +.box#predicates .boxcontent, +.box#classes .boxcontent { + overflow: hidden; +} + +.box p { + margin: 0 2px 4px 0; +} + +.box ul, .box ol { + margin: 0px; +/* padding-left: 15px;*/ + list-style-position: inside; +} + +.box ul.no_bullet, .box ul.no_bullet { + list-style-type: none; +} + +.box ul li.horizontal, .box ol li.horizontal, +.box ul.horizontal, .box ol.horizontal { + display: inline; +} + +.box a.title_switch { + position: absolute; + right: 0.5em; + margin: auto 0; + color: #666; + border: 1px solid #bbb; + width: 1em; + height: 1em; + background-color: #fff; + text-align: center; +} + +.box a.title_switch:hover { + color: #02a; + text-decoration: none; + background-color: #eee; +} + +.box hr { + margin: 0.5em 0; + border: none; + border-top: 1px dotted #bbb; + height: 0; +} + +.box#classes .boxcontent a { + display: block; +} + +.box input { + width: auto; +} + +.box td input { + width: 100%; +} + +.box img.rating { + position: relative; + top: 1px; +} + +.hidden { + display: none; +} + + +/* + * Links + */ + +a, a:link, a:visited { + color: #02a; + text-decoration: none; + /* cursor: pointer; */ +} + +a:hover { + text-decoration: underline; +} + + +/* + * Tabs + */ + +/* all the tabs */ +.tabs { + float: left; + width: 100%; + background: #fff url("../images/tabs_back.png") repeat-x bottom; +} + +.tabs ul { + list-style: none; +} + +.tabs li { + float: left; + margin-right: 1px; +} + +.tabs a { + display: block; + margin-top: 1px; + padding: 0.35em 1.35em; + background-image: url("../images/tab_back.png"); + background-repeat: repeat-x; + background-color: #cbcbcb; + border: 1px solid #bbb; +} + +.tabs a:hover { + background: #fff; + text-decoration: none; +} + +.tabs a.current { + background: #fff; + border-bottom: 1px solid #fff; +} + +/* horizontal line underneath the tabs */ +#tab-line { + height: 1em; + clear: both; +} + +#instances { + float: right; +} + +.selected { + background-color: #bde; /*#b4d5fe;*/ +} + +.button { + border: solid black 1px; + padding: 0px 1px; + background-color: #eee; +} + +img { + border: none; +} + +/* + * Layer + */ +#layer { + width: 100%; + height: 100%; + position: absolute; + background-image: url("../images/black_50.png"); + background-repeat: repeat; + z-index: 98; +} + +#layerContent { + margin-top: 100px; + margin: auto; + width: 500px; + height: 300px; + background-color: #ffb; + border: 2px solid #bbb; + z-index: 99; +} + +/* + * Buttons + */ +input.button { + border: 1px solid #bbb; + color: #666; + background-color: #eee; + padding: 3px 0.4em; + font-weight: bold; + white-space: nowrap; + font-size: 85%; +} + +input.button:hover { + border-left:1px solid #ffffff; + border-top:1px solid #ffffff; + border-right:1px solid #848484; + border-bottom:1px solid #848484; +} + +.titletable{ + width:100%; + color: #666; + background-color: #eee; + padding: 0.1em 0.4em; + font-weight: bold; + font-size: 100%; + white-space: nowrap; +} + +.titletable input.button{ + width:auto; +} + +.titletable td.left{ + text-align:left; +} + +.titletable td.right{ + text-align:right; +} + +.box .boxtitlewithbutton { + color: #666; + background-color: #eee; + padding: 0em 0.4em; + font-weight: bold; + white-space: nowrap; +} + +#search { + text-align:center; +} + +#label { + margin-bottom: 0.1em; +} + +#article { + min-height: 500px; +} + +#credits { + border: none; +} + +#positivesboxtitle { + /*color: black;*/ + background-color: lightgreen; +} + +#negativesboxtitle { + /*color: black;*/ + background-color: #ee6666; +} + +#ArticleTitle { + font-size: 150%; + color:black; +} + +#footer { + clear: both; + text-align: center; +} + +#todo { + padding: 15px; + margin: 10px; +} + +#redirectedFrom { + color: #666; + font-size: 85%; +} \ No newline at end of file Deleted: trunk/src/dbpedia-navigator/default.css =================================================================== --- trunk/src/dbpedia-navigator/default.css 2008-08-20 20:05:10 UTC (rev 1115) +++ trunk/src/dbpedia-navigator/default.css 2008-08-21 08:19:58 UTC (rev 1116) @@ -1,384 +0,0 @@ -/** - * Main DBpedia Navigator Style Sheet. - * - * @author: Norman Heino - * @author: Jens Lehmann - */ - -/* remove browser specific margins */ -* { - margin: 0; - padding: 0; -} - -html { - font: 85%/1.2 "Lucida Grande", Helvetica, Arial, sans-serif; -} - -p { - margin: 8px 0; -} - -h1 { - margin: 0.2em; -} - -h2 { - margin: 0.1em; -} - -/* - * Main site structure - */ - -#Loading { - color: #666; - font-size: 85%; -} - -#wrapper { - /*position: relative;*/ - max-width: 100%; - padding: 1%; -/* padding: 15px; */ -/* margin: 15px;*/ -} - -#content { - /*margin: 0 19em;*/ - overflow: hidden; - /*width: 10%;*/ - width: 60%; - float: left; - margin-left: 3px; - margin-right: 3px; -/* border-left: 1px solid #bbb; - border-right: 1px solid #bbb; - padding: 0 5px;*/ -} - -/* - * Side bars are positioned absolutely due to several reasons: - * (1)Internet Explorer has problems displaying float elements, - * (2) the content's position in html is irrelevant, - * (3) positioning the content div is more straightforward. - */ -#leftSidebar { - /* position: absolute; */ - width: 18%; - min-width: 150px; - float: left; -} - -#rightSidebar { - /* position: absolute; */ - /*float: right;*/ - width: 18%; - min-width: 150px; - float: left; - /*top: 15px; - right: 15px;*/ -} - -/* - * sidebar content (boxes) - */ - -.box { - color: #666; - margin-bottom: 20px; - border: 1px solid #bbb; - font-size: 85%; -} - -/*.box td { - font-size: 100%; -}*/ - -.box .boxtitle { - color: #666; - background-color: #eee; - padding: 3px 0.4em; - font-weight: bold; - white-space: nowrap; -} - -.box .boxtitle .boxtitle_string { - width: 80%; - overflow: hidden; -/* display: none;*/ -} - -.box .boxcontent { - padding: 0.6em; - border-top: 1px solid #bbb; -} - -/* restrict content of certain boxes */ -.box#predicates .boxcontent, -.box#classes .boxcontent { - overflow: hidden; -} - -.box p { - margin: 0 2px 4px 0; -} - -.box ul, .box ol { - margin: 0px; -/* padding-left: 15px;*/ - list-style-position: inside; -} - -.box ul.no_bullet, .box ul.no_bullet { - list-style-type: none; -} - -.box ul li.horizontal, .box ol li.horizontal, -.box ul.horizontal, .box ol.horizontal { - display: inline; -} - -.box a.title_switch { - position: absolute; - right: 0.5em; - margin: auto 0; - color: #666; - border: 1px solid #bbb; - width: 1em; - height: 1em; - background-color: #fff; - text-align: center; -} - -.box a.title_switch:hover { - color: #02a; - text-decoration: none; - background-color: #eee; -} - -.box hr { - margin: 0.5em 0; - border: none; - border-top: 1px dotted #bbb; - height: 0; -} - -.box#classes .boxcontent a { - display: block; -} - -.box input { - width: auto; -} - -.box td input { - width: 100%; -} - -.box img.rating { - position: relative; - top: 1px; -} - -.hidden { - display: none; -} - - -/* - * Links - */ - -a, a:link, a:visited { - color: #02a; - text-decoration: none; - /* cursor: pointer; */ -} - -a:hover { - text-decoration: underline; -} - - -/* - * Tabs - */ - -/* all the tabs */ -.tabs { - float: left; - width: 100%; - background: #fff url("../images/tabs_back.png") repeat-x bottom; -} - -.tabs ul { - list-style: none; -} - -.tabs li { - float: left; - margin-right: 1px; -} - -.tabs a { - display: block; - margin-top: 1px; - padding: 0.35em 1.35em; - background-image: url("../images/tab_back.png"); - background-repeat: repeat-x; - background-color: #cbcbcb; - border: 1px solid #bbb; -} - -.tabs a:hover { - background: #fff; - text-decoration: none; -} - -.tabs a.current { - background: #fff; - border-bottom: 1px solid #fff; -} - -/* horizontal line underneath the tabs */ -#tab-line { - height: 1em; - clear: both; -} - -#instances { - float: right; -} - -.selected { - background-color: #bde; /*#b4d5fe;*/ -} - -.button { - border: solid black 1px; - padding: 0px 1px; - background-color: #eee; -} - -img { - border: none; -} - -/* - * Layer - */ -#layer { - width: 100%; - height: 100%; - position: absolute; - background-image: url("../images/black_50.png"); - background-repeat: repeat; - z-index: 98; -} - -#layerContent { - margin-top: 100px; - margin: auto; - width: 500px; - height: 300px; - background-color: #ffb; - border: 2px solid #bbb; - z-index: 99; -} - -/* - * Buttons - */ -input.button { - border: 1px solid #bbb; - color: #666; - background-color: #eee; - padding: 3px 0.4em; - font-weight: bold; - white-space: nowrap; - font-size: 85%; -} - -input.button:hover { - border-left:1px solid #ffffff; - border-top:1px solid #ffffff; - border-right:1px solid #848484; - border-bottom:1px solid #848484; -} - -.titletable{ - width:100%; - color: #666; - background-color: #eee; - padding: 0.1em 0.4em; - font-weight: bold; - font-size: 100%; - white-space: nowrap; -} - -.titletable input.button{ - width:auto; -} - -.titletable td.left{ - text-align:left; -} - -.titletable td.right{ - text-align:right; -} - -.box .boxtitlewithbutton { - color: #666; - background-color: #eee; - padding: 0em 0.4em; - font-weight: bold; - white-space: nowrap; -} - -#search { - text-align:center; -} - -#label { - margin-bottom: 0.1em; -} - -#article { - min-height: 500px; -} - -#credits { - border: none; -} - -#positivesboxtitle { - /*color: black;*/ - background-color: lightgreen; -} - -#negativesboxtitle { - /*color: black;*/ - background-color: #ee6666; -} - -#ArticleTitle { - font-size: 150%; - color:black; -} - -#footer { - clear: both; - text-align: center; -} - -#todo { - padding: 15px; - margin: 10px; -} - -#redirectedFrom { - color: #666; - font-size: 85%; -} \ No newline at end of file Modified: trunk/src/dbpedia-navigator/index.php =================================================================== --- trunk/src/dbpedia-navigator/index.php 2008-08-20 20:05:10 UTC (rev 1115) +++ trunk/src/dbpedia-navigator/index.php 2008-08-21 08:19:58 UTC (rev 1116) @@ -16,6 +16,7 @@ //what happens onLoad $onLoad="onLoad=\"document.getElementById('label').focus();"; +if (isset($_GET['positives'])||isset($_GET['negatives'])) $onLoad.="setPositivesAndNegatives('positives=".$_GET['positives']."&negatives=".$_GET['negatives']."');"; if (isset($_GET['showArticle'])) $onLoad.="get_article('label=".$_GET['showArticle']."&cache=-1');"; else if (isset($_GET['search'])) $onLoad.="search_it('label=".$_GET['search']."&number=10');"; else if (isset($_GET['showClass'])) $onLoad.="get_class('class=http://dbpedia.org/class/yago/".$_GET['showClass']."&cache=-1');"; @@ -23,6 +24,7 @@ else if (isset($_SESSION['currentArticle'])){ $onLoad.="get_article('label=&cache=".$_SESSION['currentArticle']."');"; } + $onLoad.="\""; @@ -194,7 +196,9 @@ </div><!-- wrapper --> <div id="footer"> - <p>Licensed under the GNU General Public License (GPL) 3 as part of the DL-Learner open source + <div id="generatedURL"></div> + <input type="button" class="button" value="generate URL" onclick="generateURL();"/> + <p>Licensed under the GNU General Public License (GPL) 3 as part of the DL-Learner open source project.<br />Copyright © Jens Lehmann 2007-2008 </p> <div id="validation"> <?php Modified: trunk/src/dbpedia-navigator/js/ajax.js =================================================================== --- trunk/src/dbpedia-navigator/js/ajax.js 2008-08-20 20:05:10 UTC (rev 1115) +++ trunk/src/dbpedia-navigator/js/ajax.js 2008-08-21 08:19:58 UTC (rev 1116) @@ -220,57 +220,57 @@ XhrObj.send(param); } - function removeNegInterest(param) - { - if (document.all){ - //IE - var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); - } - else{ - //Mozilla - var XhrObj = new XMLHttpRequest(); - } +function removeNegInterest(param) +{ + if (document.all){ + //IE + var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + else{ + //Mozilla + var XhrObj = new XMLHttpRequest(); + } - XhrObj.open("POST",'ajax_remove_neg_interest.php'); + XhrObj.open("POST",'ajax_remove_neg_interest.php'); - XhrObj.onreadystatechange = function() - { - if (XhrObj.readyState == 4 && XhrObj.status == 200){ - var response = XhrObj.responseText.split('$$'); - document.getElementById('Positives').innerHTML=response[0]; - document.getElementById('Negatives').innerHTML=response[1]; - } - } + XhrObj.onreadystatechange = function() + { + if (XhrObj.readyState == 4 && XhrObj.status == 200){ + var response = XhrObj.responseText.split('$$'); + document.getElementById('Positives').innerHTML=response[0]; + document.getElementById('Negatives').innerHTML=response[1]; + } + } - XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); - XhrObj.send(param); + XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); + XhrObj.send(param); +} + +function learnConcept() +{ + if (document.all){ + //IE + var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + else{ + //Mozilla + var XhrObj = new XMLHttpRequest(); + } + + XhrObj.open("POST",'ajax_learn_concepts.php'); + + XhrObj.onreadystatechange = function() + { + if (XhrObj.readyState == 4 && XhrObj.status == 200){ + var response = XhrObj.responseText.split('$$'); + document.getElementById('conceptlink').innerHTML=response[0]; + document.getElementById('ConceptInformation').innerHTML=response[1]; } - - function learnConcept() - { - if (document.all){ - //IE - var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); - } - else{ - //Mozilla - var XhrObj = new XMLHttpRequest(); - } + } - XhrObj.open("POST",'ajax_learn_concepts.php'); - - XhrObj.onreadystatechange = function() - { - if (XhrObj.readyState == 4 && XhrObj.status == 200){ - var response = XhrObj.responseText.split('$$'); - document.getElementById('conceptlink').innerHTML=response[0]; - document.getElementById('ConceptInformation').innerHTML=response[1]; - } - } - - XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); - XhrObj.send(); - } + XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); + XhrObj.send(); +} function stopServerCall() { @@ -349,4 +349,54 @@ XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); XhrObj.send(param); +} + +function setPositivesAndNegatives(param) +{ + if (document.all){ + //IE + var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + else{ + //Mozilla + var XhrObj = new XMLHttpRequest(); + } + + XhrObj.open("POST",'ajax_set_positives_and_negatives.php'); + + XhrObj.onreadystatechange = function() + { + if (XhrObj.readyState == 4 && XhrObj.status == 200){ + var response = XhrObj.responseText.split('$$'); + document.getElementById('Positives').innerHTML=response[0]; + document.getElementById('Negatives').innerHTML=response[1]; + } + } + + XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); + XhrObj.send(param); +} + +function generateURL() +{ + if (document.all){ + //IE + var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + else{ + //Mozilla + var XhrObj = new XMLHttpRequest(); + } + + XhrObj.open("POST",'ajax_generate_URL.php'); + + XhrObj.onreadystatechange = function() + { + if (XhrObj.readyState == 4 && XhrObj.status == 200){ + document.getElementById('generatedURL').innerHTML=XhrObj.responseText; + } + } + + XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); + XhrObj.send(); } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-08-20 20:05:16
|
Revision: 1115 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1115&view=rev Author: jenslehmann Date: 2008-08-20 20:05:10 +0000 (Wed, 20 Aug 2008) Log Message: ----------- some fixes as result of example unit tests Modified Paths: -------------- trunk/examples/carcinogenesis/train.conf trunk/examples/lymphography/lymphography_Class1.conf trunk/examples/lymphography/lymphography_Class2.conf trunk/examples/lymphography/lymphography_Class3.conf trunk/examples/lymphography/lymphography_Class4.conf trunk/examples/sparql/AristotlePos.conf trunk/examples/sparql/govtrack.conf trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java trunk/src/dl-learner/org/dllearner/utilities/Helper.java trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java Removed Paths: ------------- trunk/examples/test.conf Modified: trunk/examples/carcinogenesis/train.conf =================================================================== --- trunk/examples/carcinogenesis/train.conf 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/examples/carcinogenesis/train.conf 2008-08-20 20:05:10 UTC (rev 1115) @@ -2,7 +2,8 @@ reasoner = fastInstanceChecker; algorithm = refexamples; -refexamples.noisePercentage = 28; +// refexamples.noisePercentage = 28; +refexamples.noisePercentage = 32; refexamples.startClass = "http://dl-learner.org/carcinogenesis#Compound"; refexamples.writeSearchTree = false; refexamples.searchTreeFile = "log/carcinogenesis/searchTree.log"; Modified: trunk/examples/lymphography/lymphography_Class1.conf =================================================================== --- trunk/examples/lymphography/lymphography_Class1.conf 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/examples/lymphography/lymphography_Class1.conf 2008-08-20 20:05:10 UTC (rev 1115) @@ -17,15 +17,6 @@ */ - -reasoner = dig; -//reasoner = fastRetrieval; - -algorithm = refinement; -//refinement.heuristic = flexible; -//algorithm = refexamples; - - refinement.ignoredConcepts = { "http://www.example.org/lymphography#Target1_NormalFind", "http://www.example.org/lymphography#Target2_Metastases", Modified: trunk/examples/lymphography/lymphography_Class2.conf =================================================================== --- trunk/examples/lymphography/lymphography_Class2.conf 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/examples/lymphography/lymphography_Class2.conf 2008-08-20 20:05:10 UTC (rev 1115) @@ -13,16 +13,8 @@ it will need a lot of time to find a solution, in case it exists at all. Mainly used as a test case for improving the algorithms (example 4 uses a new experimental version of the refinement algorithm) - - */ -reasoner = dig; -//reasoner = fastRetrieval; -algorithm = refinement; -//refinement.heuristic = flexible; -//algorithm = refexamples; - refinement.ignoredConcepts = { "http://www.example.org/lymphography#Target1_NormalFind", "http://www.example.org/lymphography#Target2_Metastases", @@ -30,12 +22,10 @@ "http://www.example.org/lymphography#Target4_Fibrosis" }; - - - refinement.useAllConstructor = false; refinement.useExistsConstructor = true; refinement.useNegation = false; + import("lymphography.owl"); /*Class2*/ Modified: trunk/examples/lymphography/lymphography_Class3.conf =================================================================== --- trunk/examples/lymphography/lymphography_Class3.conf 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/examples/lymphography/lymphography_Class3.conf 2008-08-20 20:05:10 UTC (rev 1115) @@ -17,15 +17,6 @@ */ - - -reasoner = dig; -//reasoner = fastRetrieval; - -algorithm = refinement; -//refinement.heuristic = flexible; -//algorithm = refexamples; - refinement.ignoredConcepts = { "http://www.example.org/lymphography#Target1_NormalFind", "http://www.example.org/lymphography#Target2_Metastases", Modified: trunk/examples/lymphography/lymphography_Class4.conf =================================================================== --- trunk/examples/lymphography/lymphography_Class4.conf 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/examples/lymphography/lymphography_Class4.conf 2008-08-20 20:05:10 UTC (rev 1115) @@ -13,18 +13,8 @@ it will need a lot of time to find a solution, in case it exists at all. Mainly used as a test case for improving the algorithms (example 4 uses a new experimental version of the refinement algorithm) - - */ - -//reasoner = dig; -reasoner = fastRetrieval; - -//algorithm = refinement; -//refinement.heuristic = flexible; -algorithm = refexamples; - refexamples.ignoredConcepts = { "http://www.example.org/lymphography#Target1_NormalFind", "http://www.example.org/lymphography#Target2_Metastases", Modified: trunk/examples/sparql/AristotlePos.conf =================================================================== --- trunk/examples/sparql/AristotlePos.conf 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/examples/sparql/AristotlePos.conf 2008-08-20 20:05:10 UTC (rev 1115) @@ -18,7 +18,8 @@ algorithm = refexamples; reasoner = fastInstanceChecker; -problem = posOnlyDefinitionLP; +// comment this out to enable positive only learning +// problem = posOnlyDefinitionLP; sparql.instances = { "http://dbpedia.org/resource/Democritus", @@ -33,9 +34,10 @@ +"http://dbpedia.org/resource/Pythagoras" +"http://dbpedia.org/resource/Philolaus" +"http://dbpedia.org/resource/Archytas" -/* + +// comment this out to enable positive only learning -"http://dbpedia.org/resource/Socrates" -"http://dbpedia.org/resource/Plato" -"http://dbpedia.org/resource/Zeno_of_Elea" -"http://dbpedia.org/resource/Democritus" -*/ + Modified: trunk/examples/sparql/govtrack.conf =================================================================== --- trunk/examples/sparql/govtrack.conf 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/examples/sparql/govtrack.conf 2008-08-20 20:05:10 UTC (rev 1115) @@ -7,7 +7,7 @@ reasoner = owlAPI; // reasoner = fastInstanceChecker; -import("http://rdfabout.com/sparql/","SPARQL"); +import("http://www.govtrack.us/sparql","SPARQL"); sparql.instances = { "http://www.rdfabout.com/rdf/usgov/congress/people/A000069", Deleted: trunk/examples/test.conf =================================================================== --- trunk/examples/test.conf 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/examples/test.conf 2008-08-20 20:05:10 UTC (rev 1115) @@ -1,13 +0,0 @@ -import("father.kb"); -reasoner = "fastInstanceChecker"; -problem = "posNegDefinition"; - -+"http://localhost/foo#markus" -+"http://localhost/foo#michelle" -+"http://localhost/foo#stefan" - --"http://localhost/foo#anna" --"http://localhost/foo#bernd" --"http://localhost/foo#gabi" - -algorithm = "refexamples"; Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 20:05:10 UTC (rev 1115) @@ -451,7 +451,9 @@ System.out.println("solution: " + bestNode.getConcept()); System.out.println("maxPosOnlyExpansion: " + maxPosOnlyExpansion); System.out.println("best child of this node: " + bestChild); - System.out.println(bestNode.getChildConcepts()); + if(bestNode.getChildConcepts().size()<100) { + System.out.println(bestNode.getChildConcepts()); + } System.out.println("TODO: needs to be integrated with other stopping criteria"); System.out .println("You tried to use this algorithm for positive only learning, which is not recommended (yet)."); Modified: trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2008-08-20 20:05:10 UTC (rev 1115) @@ -25,6 +25,8 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.Set; +import java.util.TreeSet; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.FileAppender; @@ -34,6 +36,7 @@ import org.dllearner.cli.QuickStart; import org.dllearner.cli.Start; import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; import org.dllearner.utilities.Helper; import org.junit.Test; @@ -48,7 +51,7 @@ /** * This test runs all conf files in the examples directory. Each conf file * corresponds to one unit test, which is succesful if a concept was - * learned. + * learned. This unit test takes several hours. * * @throws ComponentInitException * If any component initialisation exception occurs in the @@ -72,18 +75,34 @@ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); + // ignore list (examples which are temporarily not working due + // to server downtime, lack of features etc., but should still + // remain in the example directory + Set<String> ignore = new TreeSet<String>(); + ignore.add("./examples/sparql/govtrack.conf"); // HTTP 500 Server error + ignore.add("./examples/sparql/musicbrainz.conf"); // HTTP 502 error - NullPointer in extraction + ignore.add("./examples/sparql/SKOSTEST_local.conf"); // Out of Memory Error + ignore.add("./examples/sparql/scrobble.conf"); // HTTP 502 Proxy Error + ignore.add("./examples/family-benchmark/Cousin.conf"); // Out of Memory Error + for (String path : confFiles.keySet()) { for (String file : confFiles.get(path)) { String conf = path + file + ".conf"; - System.out.println("Testing " + conf + " (time: " + sdf.format(new Date()) + ")."); - long startTime = System.nanoTime(); - // start example - Start start = new Start(new File(conf)); - start.start(false); - // test is successful if a concept was learned - assert (start.getLearningAlgorithm().getCurrentlyBestDescription() != null); - long timeNeeded = System.nanoTime() - startTime; - System.out.println("Test of " + conf + " completed in " + Helper.prettyPrintNanoSeconds(timeNeeded) + "."); + if(ignore.contains(conf)) { + System.out.println("Skipping " + conf + " (is on ignore list)."); + } else { + System.out.println("Testing " + conf + " (time: " + sdf.format(new Date()) + ")."); + long startTime = System.nanoTime(); + // start example + Start start = new Start(new File(conf)); + start.start(false); + // test is successful if a concept was learned + assert (start.getLearningAlgorithm().getCurrentlyBestDescription() != null); + long timeNeeded = System.nanoTime() - startTime; + start.getReasoningService().releaseKB(); + ComponentManager.getInstance().freeAllComponents(); + System.out.println("Test of " + conf + " completed in " + Helper.prettyPrintNanoSeconds(timeNeeded) + "."); + } } } Modified: trunk/src/dl-learner/org/dllearner/utilities/Helper.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/Helper.java 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/src/dl-learner/org/dllearner/utilities/Helper.java 2008-08-20 20:05:10 UTC (rev 1115) @@ -445,21 +445,20 @@ // ignore some concepts (possibly produced by Jena) if (conceptName.startsWith("anon")) { - System.out - .println(" Ignoring concept " + logger.debug(" Ignoring concept " + conceptName + " (probably an anonymous concept produced by Jena when reading in OWL file)."); it.remove(); } else if (conceptName.startsWith("http://www.w3.org/1999/02/22-rdf-syntax-ns#")) { - System.out.println(" Ignoring concept " + conceptName + logger.debug(" Ignoring concept " + conceptName + " (RDF construct produced by Jena when reading in OWL file)."); it.remove(); } else if (conceptName.startsWith("http://www.w3.org/2000/01/rdf-schema#")) { - System.out.println(" Ignoring concept " + conceptName + logger.debug(" Ignoring concept " + conceptName + " (RDF Schema construct produced by Jena when reading in OWL file)."); it.remove(); } else if (conceptName.startsWith("http://www.w3.org/2002/07/owl#")) { - System.out.println(" Ignoring concept " + conceptName + logger.debug(" Ignoring concept " + conceptName + " (OWL construct produced by Jena when reading in OWL file)."); it.remove(); } Modified: trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java 2008-08-20 19:25:05 UTC (rev 1114) +++ trunk/src/dl-learner/org/dllearner/utilities/statistics/SimpleClock.java 2008-08-20 20:05:10 UTC (rev 1115) @@ -1,78 +1,93 @@ package org.dllearner.utilities.statistics; /** - * class for counting time and output it + * 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/>. + * */ +import org.apache.log4j.Logger; + +/** + * Class for counting time and outputting it. + * + * @author Unknown + */ public class SimpleClock { + + private static Logger logger = Logger.getLogger(SimpleClock.class); + private long time; - + public SimpleClock() { - time=System.currentTimeMillis(); + time = System.currentTimeMillis(); } - - - - - + /** - * prints time needed - * and resets the clock + * prints time needed and resets the clock */ public void printAndSet() { - - System.out.println("needed "+getTime()+" ms"); + logger.info("needed " + getTime() + " ms"); setTime(); } - - + /** - * prints time needed - * and resets the clock - * @param s String for printing + * prints time needed and resets the clock + * + * @param s + * String for printing */ public void printAndSet(String s) { - - System.out.println(s+" needed "+getTime()+" ms"); + logger.info(s + " needed " + getTime() + " ms"); setTime(); } - + public String getAndSet(String s) { - - String ret = s+" needed "+getTime()+" ms"; + String ret = s + " needed " + getTime() + " ms"; setTime(); return ret; - } - - + /** * prints time needed - * - * @param s String for printing + * + * @param s + * String for printing */ public void print(String s) { - - System.out.println(s+" needed "+getTime()+" ms"); - + logger.info(s + " needed " + getTime() + " ms"); } - + /** * resets the clock */ public void setTime() { - time=System.currentTimeMillis(); + time = System.currentTimeMillis(); } + /** * resets the clock */ public void reset() { setTime(); } - + public long getTime() { - long now=System.currentTimeMillis(); - return now-time; + long now = System.currentTimeMillis(); + return now - time; } - + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-08-20 19:25:08
|
Revision: 1114 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1114&view=rev Author: sknappe Date: 2008-08-20 19:25:05 +0000 (Wed, 20 Aug 2008) Log Message: ----------- changed htaccess for REST Modified Paths: -------------- trunk/src/dbpedia-navigator/htaccess.dist Modified: trunk/src/dbpedia-navigator/htaccess.dist =================================================================== --- trunk/src/dbpedia-navigator/htaccess.dist 2008-08-20 19:21:18 UTC (rev 1113) +++ trunk/src/dbpedia-navigator/htaccess.dist 2008-08-20 19:25:05 UTC (rev 1114) @@ -6,4 +6,10 @@ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/([^/]+)$ index.php?$1=$2&path=../ +RewriteRule ^[^/]+/images/([^/]+)$ images/$1 +RewriteRule ^[^/]+/css/([^/]+)$ css/$1 +RewriteRule ^[^/]+/js/([^/]+)$ js/$1 +RewriteRule ^[^/]+/pear/([^/]+)$ pear/$1 +RewriteRule ^[^/]+/temp/([^/]+)$ temp/$1 +RewriteRule ^[^/]+/([^/]+\.php)$ $1 RewriteRule !\.(js|ico|gif|jpg|png|css|php)$ index.php \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-08-20 19:21:25
|
Revision: 1113 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1113&view=rev Author: sknappe Date: 2008-08-20 19:21:18 +0000 (Wed, 20 Aug 2008) Log Message: ----------- REST is now working so far with URLs like dbpedia-navigator/showArticle/Leipzig dbpedia-navigator/search/Leipzig dbpedia-navigator/showClass/CapitalsInAsia dbpedia-navigator/searchInstances/CapitalsInAsia Modified Paths: -------------- trunk/src/dbpedia-navigator/ajax_get_article.php trunk/src/dbpedia-navigator/ajax_get_class.php trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php trunk/src/dbpedia-navigator/helper_functions.php trunk/src/dbpedia-navigator/index.php Added Paths: ----------- trunk/src/dbpedia-navigator/CalculatePageRank.java Added: trunk/src/dbpedia-navigator/CalculatePageRank.java =================================================================== --- trunk/src/dbpedia-navigator/CalculatePageRank.java (rev 0) +++ trunk/src/dbpedia-navigator/CalculatePageRank.java 2008-08-20 19:21:18 UTC (rev 1113) @@ -0,0 +1,231 @@ +package org.dllearner.test; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; + +public class CalculatePageRank { + + private final String wikilinks="../pagelinks_en.nt"; + private final String labels="../articles_label_en.nt"; + private final String categories="../yago_en.nt"; + + private void calculateLinks() + { + try{ + Statement stmt; + ResultSet rs; + int number; + + Class.forName("com.mysql.jdbc.Driver"); + + String url = + "jdbc:mysql://localhost:3306/navigator_db"; + + Connection con = DriverManager.getConnection( + url,"navigator", "dbpedia"); + + stmt = con.createStatement(); + BufferedReader in = new BufferedReader(new FileReader(wikilinks)); + + String line; + String[] split; + String name; + int i=0; + while ((line=in.readLine())!=null) + { + split=line.split(" "); + name=split[2].substring(1, split[2].length()-1); + rs=stmt.executeQuery("SELECT number FROM rank WHERE name='"+name+"'"); + if (rs.next()){ + number=rs.getInt(1); + number++; + stmt.executeUpdate("UPDATE rank SET number="+number+" WHERE name='"+name+"'"); + } + else{ + try{ + stmt.executeUpdate("INSERT INTO rank (name,number) VALUES ('"+name+"',1)"); + }catch(Exception e) + {} + } + if (i%100000==0) System.out.println(i); + i++; + } + + in.close(); + con.close(); + } catch (FileNotFoundException e) + { + System.out.println("File not found"); + } catch (IOException e) + { + System.out.println("IOException"); + } catch (Exception e) + { + e.printStackTrace(); + } + } + + private void addLabels() + { + try{ + Statement stmt; + ResultSet rs; + + Class.forName("com.mysql.jdbc.Driver"); + + String url = + "jdbc:mysql://localhost:3306/navigator_db"; + + Connection con = DriverManager.getConnection( + url,"navigator", "dbpedia"); + + stmt = con.createStatement(); + BufferedReader in = new BufferedReader(new FileReader(labels)); + + String line; + String[] split; + String name; + String label; + int i=0; + while ((line=in.readLine())!=null) + { + split=line.split(">"); + name=split[0].substring(1); + label=split[2].substring(split[2].indexOf("\"")+1, split[2].lastIndexOf("\"")); + rs=stmt.executeQuery("SELECT number FROM rank WHERE name='"+name+"'"); + if (rs.next()){ + stmt.executeUpdate("UPDATE rank SET label=\""+label+"\" WHERE name='"+name+"'"); + } + else{ + try{ + stmt.executeUpdate("INSERT INTO rank (name,label) VALUES ('"+name+"',\""+label+"\")"); + }catch(Exception e) + {} + } + if (i%100000==0) System.out.println(i); + i++; + } + + in.close(); + con.close(); + } catch (FileNotFoundException e) + { + System.out.println("File not found"); + } catch (IOException e) + { + System.out.println("IOException"); + } catch (Exception e) + { + e.printStackTrace(); + } + } + + private void calculateCategories() + { + try{ + Statement stmt; + + Class.forName("com.mysql.jdbc.Driver"); + + String url = + "jdbc:mysql://localhost:3306/navigator_db"; + + Connection con = DriverManager.getConnection( + url,"navigator", "dbpedia"); + + stmt = con.createStatement(); + + stmt.executeUpdate("ALTER TABLE rank DROP COLUMN category"); + + BufferedReader in = new BufferedReader(new FileReader(categories)); + + String line; + String[] split; + String name; + String label; + String pred; + int i=0; + while ((line=in.readLine())!=null) + { + split=line.split(">"); + name=split[0].substring(1); + pred=split[1].substring(2); + if (pred.equals("http://www.w3.org/2000/01/rdf-schema#label")) + label=split[2].substring(split[2].indexOf("\"")+1, split[2].lastIndexOf("\"")); + else + label=split[2].substring(2); + if (pred.equals("http://www.w3.org/2000/01/rdf-schema#label")){ + try{ + stmt.executeUpdate("INSERT INTO categories (category,label) VALUES (\""+name+"\",\""+label+"\")"); + }catch(Exception e) + {} + } + else{ + if (name.startsWith("http://dbpedia.org/resource")){ + try{ + stmt.executeUpdate("INSERT INTO articlecategories (name,category) VALUES ('"+name+"','"+label+"')"); + }catch(Exception e) + {} + }else{ + try{ + stmt.executeUpdate("INSERT INTO classhierarchy (father,child) VALUES ('"+label+"','"+name+"')"); + }catch(Exception e) + {} + } + } + if (i%100000==0) System.out.println(i); + i++; + } + + in.close(); + con.close(); + } catch (FileNotFoundException e) + { + System.out.println("File not found"); + } catch (IOException e) + { + System.out.println("IOException"); + } catch (Exception e) + { + e.printStackTrace(); + } + } + + private void copyNumbers() + { + try{ + Statement stmt; + + Class.forName("com.mysql.jdbc.Driver"); + + String url = + "jdbc:mysql://localhost:3306/navigator_db"; + + Connection con = DriverManager.getConnection( + url,"navigator", "dbpedia"); + + stmt = con.createStatement(); + + stmt.executeUpdate("UPDATE articlecategories SET number=(SELECT number FROM rank WHERE articlecategories.name=rank.name)"); + + con.close(); + } catch (Exception e) + { + e.printStackTrace(); + } + } + + public static void main(String[] args){ + CalculatePageRank cal=new CalculatePageRank(); + cal.calculateLinks(); + cal.addLabels(); + cal.calculateCategories(); + cal.copyNumbers(); + } +} \ No newline at end of file Modified: trunk/src/dbpedia-navigator/ajax_get_article.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_get_article.php 2008-08-20 17:01:28 UTC (rev 1112) +++ trunk/src/dbpedia-navigator/ajax_get_article.php 2008-08-20 19:21:18 UTC (rev 1113) @@ -5,9 +5,7 @@ $subject=$_POST['label']; $fromCache=$_POST['cache']; - if (isset($_POST['path'])) $path=$_POST['path']; - else $path=""; - + if (isset($_SESSION['articles'])) $articles=$_SESSION['articles']; $id=$_SESSION['id']; $ksID=$_SESSION['ksID']; @@ -32,6 +30,8 @@ $content=""; $lastArticles=""; $artTitle=""; + $lat=""; + $long=""; //get the article //if $fromCache is -1, everything is normal @@ -69,11 +69,11 @@ // give the link to the corresponding Wikipedia article if(isset($triples['http://xmlns.com/foaf/0.1/page'])) - $content .= '<p><img src="'.$path.'images/wikipedia_favicon.png" alt="Wikipedia" style="max-width:20px;" /> <a href="#" onclick="window.open(\''.getPrintableURL($triples['http://xmlns.com/foaf/0.1/page'][0]['value']).'\',\'Wikiwindow\',\'width=800,height=500,top=50,left=50,scrollbars=yes\');">view Wikipedia article</a>, '; - $content .= '<img src="'.$path.'images/dbpedia-favicon.ico" alt="DBpedia" style="max-width:20px;"/> <a href="#" onclick="window.open(\''.$uri.'\',\'Wikiwindow\',\'width=800,height=500,top=50,left=50,scrollbars=yes\');">view DBpedia resource description</a>'; + $content .= '<p><img src="images/wikipedia_favicon.png" alt="Wikipedia" style="max-width:20px;" /> <a href="#" onclick="window.open(\''.getPrintableURL($triples['http://xmlns.com/foaf/0.1/page'][0]['value']).'\',\'Wikiwindow\',\'width=800,height=500,top=50,left=50,scrollbars=yes\');">view Wikipedia article</a>, '; + $content .= '<img src="images/dbpedia-favicon.ico" alt="DBpedia" style="max-width:20px;"/> <a href="#" onclick="window.open(\''.$uri.'\',\'Wikiwindow\',\'width=800,height=500,top=50,left=50,scrollbars=yes\');">view DBpedia resource description</a>'; //display photo collection, if there is one if (isset($triples['http://dbpedia.org/property/hasPhotoCollection'])){ - $content.=', <img src="'.$path.'images/flickr.png" alt="Flickr" style="max-width:20px;" /> <a href="#" onclick="window.open(\''.$triples['http://dbpedia.org/property/hasPhotoCollection'][0]['value'].'\',\'Wikiwindow\',\'width=800,height=500,top=50,left=50,scrollbars=yes\');">view photo collection</a></p>'; + $content.=', <img src="images/flickr.png" alt="Flickr" style="max-width:20px;" /> <a href="#" onclick="window.open(\''.$triples['http://dbpedia.org/property/hasPhotoCollection'][0]['value'].'\',\'Wikiwindow\',\'width=800,height=500,top=50,left=50,scrollbars=yes\');">view photo collection</a></p>'; } $content.='<br/><hr><h4>Classes and Categories</h4><br/>'; Modified: trunk/src/dbpedia-navigator/ajax_get_class.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_get_class.php 2008-08-20 17:01:28 UTC (rev 1112) +++ trunk/src/dbpedia-navigator/ajax_get_class.php 2008-08-20 19:21:18 UTC (rev 1113) @@ -3,9 +3,7 @@ $class=$_POST['class']; $fromCache=$_POST['cache']; - if (isset($_POST['path'])) $path=$_POST['path']; - else $path=""; - + session_start(); if (isset($_SESSION['classes'])) $classes=$_SESSION['classes']; session_write_close(); @@ -15,7 +13,7 @@ if (isset($classes)){ foreach ($classes as $key => $value) { - if ($value['uri']==$uri){ + if ($value['uri']==$class){ $fromCache=$key; break; } Modified: trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php 2008-08-20 17:01:28 UTC (rev 1112) +++ trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php 2008-08-20 19:21:18 UTC (rev 1113) @@ -2,7 +2,6 @@ include('helper_functions.php'); $category=$_POST['category']; - $label=$_POST['label']; $number=$_POST['number']; //initialise content @@ -11,6 +10,13 @@ mysql_connect('localhost','navigator','dbpedia'); mysql_select_db("navigator_db"); + + //get label of the category + $query="SELECT label FROM categories WHERE category='$category' LIMIT 1"; + $res=mysql_query($query); + $result=mysql_fetch_array($res); + $label=$result['label']; + $query="SELECT name FROM articlecategories WHERE category='$category' ORDER BY number DESC LIMIT ".$number; $res=mysql_query($query); $bestsearches=""; @@ -24,7 +30,7 @@ $result2=mysql_fetch_array($res2); $labels[]=$result2['label']; } - $content.=getCategoryResultsTable($names,$labels,$category,$label,$number); + $content.=getCategoryResultsTable($names,$labels,$category,$number); $bestsearches=getBestSearches($names,$labels); } else Modified: trunk/src/dbpedia-navigator/helper_functions.php =================================================================== --- trunk/src/dbpedia-navigator/helper_functions.php 2008-08-20 17:01:28 UTC (rev 1112) +++ trunk/src/dbpedia-navigator/helper_functions.php 2008-08-20 19:21:18 UTC (rev 1113) @@ -108,11 +108,11 @@ return $string; } -function getCategoryResultsTable($names,$labels,$category,$catlabel,$number) +function getCategoryResultsTable($names,$labels,$category,$number) { $ret="<p>These are your Searchresults. Show best "; for ($k=10;$k<125;){ - $ret.="<a href=\"#\" onclick=\"getSubjectsFromCategory('category=".$category."&label=".$catlabel."&number=".$k."');return false;\""; + $ret.="<a href=\"#\" onclick=\"getSubjectsFromCategory('category=".$category."&number=".$k."');return false;\""; if ($k==$number) $ret.=" style=\"text-decoration:none;\""; else $ret.=" style=\"text-decoration:underline;\""; $ret.=">".($k)."</a>"; @@ -252,7 +252,7 @@ function formatClass($className,$label) { $yagoPrefix = 'http://dbpedia.org/class/yago/'; if(substr($className,0,30)==$yagoPrefix) { - return $label.' <a href="#" onclick="getSubjectsFromCategory(\'category='.$className.'&label='.$label.'&number=10\');">→ search Instances</a> <a href="#" onclick="get_class(\'class='.$className.'&cache=-1\');">→ show Class in Hierarchy</a>'; + return $label.' <a href="#" onclick="getSubjectsFromCategory(\'category='.$className.'&number=10\');">→ search Instances</a> <a href="#" onclick="get_class(\'class='.$className.'&cache=-1\');">→ show Class in Hierarchy</a>'; // DBpedia is Linked Data, so it makes always sense to link it // ToDo: instead of linking to other pages, the resource should better // be openened within DBpedia Navigator @@ -277,10 +277,10 @@ $ret[0]=""; $ret[1]=""; if (isset($sess['positive'])) foreach($sess['positive'] as $name=>$lab){ - $ret[0].=$lab." <a href=\"\" onclick=\"toNegative('subject=".$name."&label=".$lab."');return false;\"><img src=\"".$_GET['path']."images/minus.jpg\" alt=\"Minus\"/></a> <a href=\"\" onclick=\"removePosInterest('subject=".$name."');return false;\"><img src=\"".$_GET['path']."images/remove.png\" alt=\"Delete\"/></a><br/>"; + $ret[0].=$lab." <a href=\"\" onclick=\"toNegative('subject=".$name."&label=".$lab."');return false;\"><img src=\"images/minus.jpg\" alt=\"Minus\"/></a> <a href=\"\" onclick=\"removePosInterest('subject=".$name."');return false;\"><img src=\"images/remove.png\" alt=\"Delete\"/></a><br/>"; } if (isset($sess['negative'])) foreach($sess['negative'] as $name=>$lab){ - $ret[1].=$lab." <a href=\"\" onclick=\"toPositive('subject=".$name."&label=".$lab."');return false;\"><img src=\"".$_GET['path']."images/plus.jpg\" alt=\"Plus\"/></a> <a href=\"\" onclick=\"removeNegInterest('subject=".$name."');return false;\"><img src=\"".$_GET['path']."images/remove.png\" alt=\"Delete\"/></a><br/>"; + $ret[1].=$lab." <a href=\"\" onclick=\"toPositive('subject=".$name."&label=".$lab."');return false;\"><img src=\"images/plus.jpg\" alt=\"Plus\"/></a> <a href=\"\" onclick=\"removeNegInterest('subject=".$name."');return false;\"><img src=\"images/remove.png\" alt=\"Delete\"/></a><br/>"; } return $ret; @@ -306,7 +306,7 @@ $ret.='<tr><td>'.$fathers.'</td></tr>'; $ret.='<tr style="height:10px"><td></td></tr>'; $ret.='<tr><td>'; - if ($fatherButtons) $ret.='<input style="width:70px" type="button" value="Instances" class="button" onclick="getSubjectsFromCategory(\'category=\'+document.getElementById(\'fatherSelect\').options[document.getElementById(\'fatherSelect\').selectedIndex].value+\'&label=\'+document.getElementById(\'fatherSelect\').options[document.getElementById(\'fatherSelect\').selectedIndex].innerHTML+\'&number=10\');" title="Search Instances of Father class."/> <input style="width:70px" type="button" value="Class" class="button" onclick="get_class(\'class=\'+document.getElementById(\'fatherSelect\').options[document.getElementById(\'fatherSelect\').selectedIndex].value+\'&cache=-1\');" title="Show Father class in class view."/>'; + if ($fatherButtons) $ret.='<input style="width:70px" type="button" value="Instances" class="button" onclick="getSubjectsFromCategory(\'category=\'+document.getElementById(\'fatherSelect\').options[document.getElementById(\'fatherSelect\').selectedIndex].value+\'&number=10\');" title="Search Instances of Father class."/> <input style="width:70px" type="button" value="Class" class="button" onclick="get_class(\'class=\'+document.getElementById(\'fatherSelect\').options[document.getElementById(\'fatherSelect\').selectedIndex].value+\'&cache=-1\');" title="Show Father class in class view."/>'; $ret.='</td></tr>'; $ret.='<tr style="height:20px"><td><hr/></td></tr>'; $ret.='<tr><td><b>Current class</b></td></tr>'; @@ -314,7 +314,7 @@ $ret.='<tr><td><b>'.$title.'</b></td></tr>'; $ret.='<tr style="height:10px"><td></td></tr>'; $ret.='<tr><td>'; - $ret.='<input style="width:70px" type="button" value="Instances" class="button" onclick="getSubjectsFromCategory(\'category='.$class.'&label='.$title.'&number=10\');" title="Search Instances of Shown class."/>'; + $ret.='<input style="width:70px" type="button" value="Instances" class="button" onclick="getSubjectsFromCategory(\'category='.$class.'&number=10\');" title="Search Instances of Shown class."/>'; $ret.='</td></tr>'; $ret.='<tr style="height:20px"><td><hr/></td></tr>'; $ret.='<tr><td style="width:30%"><b>Child classes</b></td></tr>'; @@ -322,7 +322,7 @@ $ret.='<tr><td>'.$childs.'</td></tr>'; $ret.='<tr style="height:10px"><td></td></tr>'; $ret.='<tr><td>'; - if ($childButtons) $ret.='<input style="width:70px" type="button" value="Instances" class="button" onclick="getSubjectsFromCategory(\'category=\'+document.getElementById(\'childSelect\').options[document.getElementById(\'childSelect\').selectedIndex].value+\'&label=\'+document.getElementById(\'childSelect\').options[document.getElementById(\'childSelect\').selectedIndex].innerHTML+\'&number=10\');" title="Search Instances of Child class."/> <input style="width:70px" type="button" value="Class" class="button" onclick="get_class(\'class=\'+document.getElementById(\'childSelect\').options[document.getElementById(\'childSelect\').selectedIndex].value+\'&cache=-1\');" title="Show Child class in class view."/>'; + if ($childButtons) $ret.='<input style="width:70px" type="button" value="Instances" class="button" onclick="getSubjectsFromCategory(\'category=\'+document.getElementById(\'childSelect\').options[document.getElementById(\'childSelect\').selectedIndex].value+\'&number=10\');" title="Search Instances of Child class."/> <input style="width:70px" type="button" value="Class" class="button" onclick="get_class(\'class=\'+document.getElementById(\'childSelect\').options[document.getElementById(\'childSelect\').selectedIndex].value+\'&cache=-1\');" title="Show Child class in class view."/>'; $ret.='</td></tr>'; $ret.='</table>'; Modified: trunk/src/dbpedia-navigator/index.php =================================================================== --- trunk/src/dbpedia-navigator/index.php 2008-08-20 17:01:28 UTC (rev 1112) +++ trunk/src/dbpedia-navigator/index.php 2008-08-20 19:21:18 UTC (rev 1113) @@ -11,19 +11,15 @@ $_SESSION['id']=$ids[0]; $_SESSION['ksID']=$ids[1]; -if (isset($_GET['path'])) $path=$_GET['path']; -else $path=""; - require_once('Settings.php'); $settings=new Settings(); - //what happens onLoad $onLoad="onLoad=\"document.getElementById('label').focus();"; -if (isset($_GET['resource'])){ - $onLoad.="get_article('label=".$_GET['resource']."&cache=-1');"; - unset($_GET['resource']); -} +if (isset($_GET['showArticle'])) $onLoad.="get_article('label=".$_GET['showArticle']."&cache=-1');"; +else if (isset($_GET['search'])) $onLoad.="search_it('label=".$_GET['search']."&number=10');"; +else if (isset($_GET['showClass'])) $onLoad.="get_class('class=http://dbpedia.org/class/yago/".$_GET['showClass']."&cache=-1');"; +else if (isset($_GET['searchInstances'])) $onLoad.="getSubjectsFromCategory('category=http://dbpedia.org/class/yago/".$_GET['searchInstances']."&number=10');"; else if (isset($_SESSION['currentArticle'])){ $onLoad.="get_article('label=&cache=".$_SESSION['currentArticle']."');"; } @@ -39,11 +35,10 @@ <head> <title>DBpedia Navigator</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> - <link rel="stylesheet" href="<?php print $path;?>default.css"/> - <link rel="stylesheet" type="text/css" href="<?php print $path;?>treemenu/dhtmlxtree.css"> + <link rel="stylesheet" href="css/default.css"/> <script src="http://maps.google.com/maps?file=api&v=2&key=<?php print $settings->googleMapsKey;?>" type="text/javascript"></script> - <script src="<?php print $path;?>js/ajax.js"></script> + <script src="js/ajax.js"></script> <script type="text/javascript"> function setRunning(running) { @@ -112,7 +107,7 @@ <body <?php print $onLoad;?>> <!-- <h1>DBpedia Navigator</h1> --> -<div><table border="0" width="100%"><tr><td width="35%"><img src="<?php print $path;?>images/dbpedia_navigator.png" alt="DBpedia Navigator" style="padding:5px" /></td><td width="50%"><span id="conceptlink"></span></td><td width="15%"><span id="Loading" style="display:none">Server Call... <a href=""><img src="<?php print $path;?>images/remove.png" onclick="stopServerCall();return false;" /></a></span></td></tr></table></div> +<div><table border="0" width="100%"><tr><td width="35%"><img src="images/dbpedia_navigator.png" alt="DBpedia Navigator" style="padding:5px" /></td><td width="50%"><span id="conceptlink"></span></td><td width="15%"><span id="Loading" style="display:none">Server Call... <a href=""><img src="images/remove.png" onclick="stopServerCall();return false;" /></a></span></td></tr></table></div> <div id="layer" style="display:none"> <div id="layerContent" style="display:none"></div> </div> @@ -147,8 +142,8 @@ ... and implemented by <a href="http://jens-lehmann.org">Jens Lehmann</a> and Sebastian Knappe at the <a href="http:/aksw.org">AKSW</a> research group (University of Leipzig).</p> - <a href="http://www.w3.org/2004/OWL/"><img src="<?php print $path;?>images/sw-owl-green.png" alt="OWL logo" /></a> - <a href="http://www.w3.org/2001/sw/DataAccess/"><img src="<?php print $path;?>images/sw-sparql-green.png" alt="SPARQL logo"/></a> + <a href="http://www.w3.org/2004/OWL/"><img src="images/sw-owl-green.png" alt="OWL logo" /></a> + <a href="http://www.w3.org/2001/sw/DataAccess/"><img src="images/sw-sparql-green.png" alt="SPARQL logo"/></a> </div> </div><!-- END leftSidebar --> @@ -170,13 +165,13 @@ <div id="rightSidebar"> <div class="box"> - <div class="boxtitlewithbutton" id="positivesboxtitle" style="cursor:help;" title="The shown articles are considered when generating navigation tips.">search relevant <a href="#"><img src="<?php print $path;?>images/remove.png" onclick="clearPositives()" title="Delete all articles of interest."/></a> </div> + <div class="boxtitlewithbutton" id="positivesboxtitle" style="cursor:help;" title="The shown articles are considered when generating navigation tips.">search relevant <a href="#"><img src="images/remove.png" onclick="clearPositives()" title="Delete all articles of interest."/></a> </div> <div class="boxcontent" id="Positives"> </div> <!-- boxcontent --> </div> <!-- box --> <div class="box"> - <div class="boxtitlewithbutton" id="negativesboxtitle" style="cursor:help;" title="The shown articles are avoided when generating navigation tips.">not relevant <a href="#"><img src="<?php print $path;?>images/remove.png" onclick="clearNegatives()" title="Delete all avoided articles."/></a> </div> + <div class="boxtitlewithbutton" id="negativesboxtitle" style="cursor:help;" title="The shown articles are avoided when generating navigation tips.">not relevant <a href="#"><img src="images/remove.png" onclick="clearNegatives()" title="Delete all avoided articles."/></a> </div> <div class="boxcontent" id="Negatives"> </div> <!-- boxcontent --> </div> <!-- box --> @@ -206,12 +201,12 @@ $uri = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; echo '<div><a href="http://validator.w3.org/check?uri='.$uri.'"'; - echo '><img src="'.$path.'images/valid-xhtml10.png" alt="valid XHTML 1.0" /></a>'."\n"; + echo '><img src="images/valid-xhtml10.png" alt="valid XHTML 1.0" /></a>'."\n"; echo '<a href="http://jigsaw.w3.org/css-validator/validator?uri='.$uri.'"'; - echo '><img src="'.$path.'images/valid-css.png" alt="valid CSS" /></a></div>'."\n"; + echo '><img src="images/valid-css.png" alt="valid CSS" /></a></div>'."\n"; ?> </div> - <p><a href='<?php print $path;?>rebuild.php'>rebuild [restart session and redownload WSDL file (for debugging)]</a></p> + <p><a href='rebuild.php'>rebuild [restart session and redownload WSDL file (for debugging)]</a></p> </div> <div id="todo"> @@ -227,7 +222,6 @@ examples it classifies (in-)correctly.</li> <li>Create a small number of test cases (e.g. 3), which can be used to verify that DBpedia Navigator is working in typical scenarios (in particular cases where concepts with length greater one are learned).</li> - <li>Allow to disable caching functionality (in Settings.php).</li> <li>Make DBpedia Navigator RESTful, e.g. URLs $base/showArticle/$URL for displaying an article; $base/search/$phrase for searching; $base/listInstances/$complexClass for listing the instances of a learned. Maybe session variables (in particuar the selected positive and negative examples) can @@ -236,20 +230,13 @@ easier external access (just give someone a link instead of saying exactly which actions have to be done to get to a state), simplifies debugging the application, and may be of use for creating further features.</li> - <li>Improve search functionality [we will probably get feedback from Georgi in February].</li> - <li>[maybe] Display a tag cloud similar to <a href="http://dbpedia.org/search/">DBpedia search</a>.</li> - <li>[maybe] Instead of only allowing a search as entry point to the application, also display - a navigatable class tree.</li> <li>[if possible] When expensive SPARQL queries or learning problems have been posed, there should be some way to abandon these if the user has already switched to doing something else. Example: The user has added 3 positive and 1 negative examples. This is executed as a learning problem, but has no solution (so DL-Learner would run forever unless we pose some internal time limit). The user adds another negative example a second later, so instead of letting the previous learning problem run for a long time (and needing much resources), it should be stopped by DBpedia Navigator.</li> - <li>[if possible] Find an easy way to validate HTML/JS in AJAX applications.</li> - <li>[maybe] Would be interesting to somehow view the Wikipedia article (without the left navigation part, - tabs etc.) as an overlay, because the Wikipedia article will almost always be a human-friendlier - description of an object compared to the extracted one.</li> + <li>[if possible] Find an easy way to validate HTML/JS in AJAX applications.</li> </ul> </div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-08-20 17:01:33
|
Revision: 1112 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1112&view=rev Author: kurzum Date: 2008-08-20 17:01:28 +0000 (Wed, 20 Aug 2008) Log Message: ----------- some improvements still buggy Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.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/test/SparqlExtractionTest.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-20 16:29:59 UTC (rev 1111) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-20 17:01:28 UTC (rev 1112) @@ -40,6 +40,7 @@ */ public class Manipulator { + @SuppressWarnings("unused") private static Logger logger = Logger.getLogger(Manipulator.class); private List<Rule> rules = new ArrayList<Rule>(); @@ -70,11 +71,13 @@ public static Manipulator getManipulatorByName(String predefinedManipulator) - { - if (predefinedManipulator.equalsIgnoreCase("DBPEDIA-NAVIGATOR")) { + { if (predefinedManipulator == null) { + return getDefaultManipulator(); + }else if (predefinedManipulator.equalsIgnoreCase("DBPEDIA-NAVIGATOR")) { return getDBpediaNavigatorManipulator(); - } else if(predefinedManipulator.equalsIgnoreCase("DEFAULT")){ + } else if(predefinedManipulator.equalsIgnoreCase("DEFAULT") + ||predefinedManipulator.equalsIgnoreCase("STANDARD")){ return getDefaultManipulator(); } else { @@ -121,6 +124,7 @@ addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class )) ; addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class )) ; addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class) ) ; + addRule(new TypeFilterRule(month, "", OWLVocabulary.RDFS_CLASS, ClassNode.class) ) ; } Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/ObjectReplacementRule.java 2008-08-20 17:01:28 UTC (rev 1112) @@ -0,0 +1,60 @@ +/** + * 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.kb.manipulator; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.kb.extraction.Node; +import org.dllearner.utilities.JamonMonitorLogger; +import org.dllearner.utilities.datastructures.RDFNodeTuple; + +import com.hp.hpl.jena.rdf.model.impl.ResourceImpl; + +public class ObjectReplacementRule extends Rule{ + + String oldObject; + String newObject; + + + public ObjectReplacementRule(Months month, String oldObject, String newObject) { + super(month); + this.oldObject = oldObject; + this.newObject = newObject; + } + + + @Override + public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){ + SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>(); + for (RDFNodeTuple tuple : tuples) { + if(tuple.aPartContains(oldObject)){ + tuple.a = new ResourceImpl(newObject); + JamonMonitorLogger.increaseCount(ObjectReplacementRule.class, "replacedObjects"); + } + keep.add(tuple); + } + return keep; + } + + + + +} Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/PredicateReplacementRule.java 2008-08-20 17:01:28 UTC (rev 1112) @@ -0,0 +1,60 @@ +/** + * 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.kb.manipulator; + +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.kb.extraction.Node; +import org.dllearner.utilities.JamonMonitorLogger; +import org.dllearner.utilities.datastructures.RDFNodeTuple; + +import com.hp.hpl.jena.rdf.model.impl.ResourceImpl; + +public class PredicateReplacementRule extends Rule{ + + String oldPredicate; + String newPredicate; + + + public PredicateReplacementRule(Months month, String oldPredicate, String newPredicate) { + super(month); + this.oldPredicate = oldPredicate; + this.newPredicate = newPredicate; + } + + + @Override + public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){ + SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>(); + for (RDFNodeTuple tuple : tuples) { + if(tuple.aPartContains(oldPredicate)){ + tuple.a = new ResourceImpl(newPredicate); + JamonMonitorLogger.increaseCount(PredicateReplacementRule.class, "replacedPredicates"); + } + keep.add(tuple); + } + return keep; + } + + + + +} Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-20 16:29:59 UTC (rev 1111) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-20 17:01:28 UTC (rev 1112) @@ -60,7 +60,7 @@ if(!remove){ keep.add(tuple); }else{ - JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples"); + JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples"); } } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-20 16:29:59 UTC (rev 1111) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2008-08-20 17:01:28 UTC (rev 1112) @@ -261,8 +261,9 @@ query.setRunning(false); SparqlQuery.writeToSparqlLog("***********\nJSON retrieved from cache"); + SparqlQuery.writeToSparqlLog("wget -S -O - '\n"+query.getSparqlEndpoint().getHTTPRequest()); SparqlQuery.writeToSparqlLog(query.getSparqlQueryString()); - SparqlQuery.writeToSparqlLog(query.getSparqlEndpoint().getURL().toString()); + //SparqlQuery.writeToSparqlLog("JSON: "+result); JamonMonitorLogger.increaseCount(Cache.class, "SuccessfulHits"); @@ -280,7 +281,7 @@ json=""; result=""; logger.warn(Cache.class.getSimpleName()+"empty result: "+query.getSparqlQueryString()); - SparqlQuery.writeToSparqlLog("empty result for : "+query.getSparqlQueryString()); + } //return json; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-20 16:29:59 UTC (rev 1111) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2008-08-20 17:01:28 UTC (rev 1112) @@ -52,6 +52,13 @@ public URL getURL() { return this.url; } + + public String getHTTPRequest() { + String ret = this.url.toString()+"/sparql?"; + ret += (defaultGraphURIs.isEmpty())?"":"default-graph-uri="+defaultGraphURIs.remove(0)+"&"; + ret += "query="; + return ret; + } public List<String> getDefaultGraphURIs() { return defaultGraphURIs; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-20 16:29:59 UTC (rev 1111) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-20 17:01:28 UTC (rev 1112) @@ -51,6 +51,9 @@ import org.dllearner.kb.extraction.Configuration; import org.dllearner.kb.extraction.Manager; import org.dllearner.kb.manipulator.Manipulator; +import org.dllearner.kb.manipulator.ObjectReplacementRule; +import org.dllearner.kb.manipulator.PredicateReplacementRule; +import org.dllearner.kb.manipulator.Rule.Months; import org.dllearner.parser.KBParser; import org.dllearner.reasoning.DIGConverter; import org.dllearner.reasoning.JenaOWLDIGConverter; @@ -78,7 +81,7 @@ private int recursionDepth = recursionDepthDefault; private String predefinedFilter = null; private String predefinedEndpoint = null; - private String predefinedManipulator = "STANDARD"; + private String predefinedManipulator = null; private SortedSet<String> predList = new TreeSet<String>(); private SortedSet<String> objList = new TreeSet<String>(); // private Set<String> classList; @@ -279,7 +282,7 @@ Manager m = new Manager(); // get Options for Manipulator - Manipulator manipulator = Manipulator.getManipulatorByName(predefinedManipulator); + Manipulator manipulator = getManipulator(); //manipulator.addRule(newRule); Configuration configuration = new Configuration( getTupelAquisitor(), @@ -407,7 +410,26 @@ } + public Manipulator getManipulator() + { + // get Options for Filters + if (predefinedManipulator == null) { + return Manipulator.getManipulatorByName(predefinedManipulator); + + } else { + Manipulator m = Manipulator.getDefaultManipulator(); + for (StringTuple st : replacePredicate) { + m.addRule(new PredicateReplacementRule(Months.MAY, st.a,st.b)); + } + for (StringTuple st : replaceObject) { + m.addRule(new ObjectReplacementRule(Months.MAY, st.a,st.b)); + } + return m; + } + + } + public TupelAquisitor getTupelAquisitor() { return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks()); Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-20 16:29:59 UTC (rev 1111) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2008-08-20 17:01:28 UTC (rev 1112) @@ -88,8 +88,9 @@ String service = sparqlEndpoint.getURL().toString(); writeToSparqlLog("***********\nNew Query:"); + SparqlQuery.writeToSparqlLog("wget -S -O - '\n"+sparqlEndpoint.getHTTPRequest()); writeToSparqlLog(sparqlQueryString); - writeToSparqlLog(service); + logger.trace("making queryExecution Object"); @@ -127,15 +128,12 @@ logger.warn("Exception in SparqlQuery\n"+ e.toString()); logger.warn("query was "+ sparqlQueryString); writeToSparqlLog("ERROR: HTTPException occured"+ e.toString()); - writeToSparqlLog("ERROR: query was: "+sparqlQueryString); throw e; }catch (RuntimeException e) { //if (!(e instanceof HTTPException)) { logger.warn("RuntimeException in SparqlQuery"+ e.toString()); writeToSparqlLog("ERROR: HTTPException occured"+ e.toString()); - writeToSparqlLog("ERROR: query was: "+sparqlQueryString); - writeToSparqlLog("wget -S -O test.txt '"+service+"?query="+sparqlQueryString+"'"); //} throw e; } Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-20 16:29:59 UTC (rev 1111) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-20 17:01:28 UTC (rev 1112) @@ -35,7 +35,6 @@ import org.dllearner.kb.sparql.SparqlQueryMaker; import org.dllearner.scripts.NT2RDF; import org.dllearner.utilities.JamonMonitorLogger; -import org.dllearner.utilities.statistics.SimpleClock; /** * Test class, uses the whole thing This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-08-20 16:30:03
|
Revision: 1111 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1111&view=rev Author: kurzum Date: 2008-08-20 16:29:59 +0000 (Wed, 20 Aug 2008) Log Message: ----------- changed back to old tupelaquisitor Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-20 15:32:29 UTC (rev 1110) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-20 16:29:59 UTC (rev 1111) @@ -47,7 +47,6 @@ import org.dllearner.core.config.StringTupleListConfigOption; import org.dllearner.core.owl.KB; import org.dllearner.kb.aquisitors.SparqlTupelAquisitor; -import org.dllearner.kb.aquisitors.SparqlTupelAquisitorImproved; import org.dllearner.kb.aquisitors.TupelAquisitor; import org.dllearner.kb.extraction.Configuration; import org.dllearner.kb.extraction.Manager; @@ -411,8 +410,8 @@ public TupelAquisitor getTupelAquisitor() { - //return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks()); - return new SparqlTupelAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth); + return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks()); + //return new SparqlTupelAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth); } /* (non-Javadoc) Modified: trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-20 15:32:29 UTC (rev 1110) +++ trunk/src/dl-learner/org/dllearner/utilities/owl/OWLVocabulary.java 2008-08-20 16:29:59 UTC (rev 1111) @@ -24,6 +24,7 @@ public static final String RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"; public static final String RDFS_SUBCLASS_OF = "http://www.w3.org/2000/01/rdf-schema#subClassOf"; + public static final String RDFS_CLASS = "http://www.w3.org/2000/01/rdf-schema#Class"; public static final String OWL_SAME_AS = "http://www.w3.org/2002/07/owl#sameAs"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sk...@us...> - 2008-08-20 15:47:06
|
Revision: 1110 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1110&view=rev Author: sknappe Date: 2008-08-20 15:32:29 +0000 (Wed, 20 Aug 2008) Log Message: ----------- Changed the CalculatePageRank script, now properly working with n:m relation of articles and classes Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/CalculatePageRank.java Copied: trunk/src/dl-learner/org/dllearner/test/CalculatePageRank.java (from rev 1083, trunk/src/dbpedia-navigator/CalculatePageRank.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/test/CalculatePageRank.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/CalculatePageRank.java 2008-08-20 15:32:29 UTC (rev 1110) @@ -0,0 +1,231 @@ +package org.dllearner.test; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; + +public class CalculatePageRank { + + private final String wikilinks="../pagelinks_en.nt"; + private final String labels="../articles_label_en.nt"; + private final String categories="../yago_en.nt"; + + private void calculateLinks() + { + try{ + Statement stmt; + ResultSet rs; + int number; + + Class.forName("com.mysql.jdbc.Driver"); + + String url = + "jdbc:mysql://localhost:3306/navigator_db"; + + Connection con = DriverManager.getConnection( + url,"navigator", "dbpedia"); + + stmt = con.createStatement(); + BufferedReader in = new BufferedReader(new FileReader(wikilinks)); + + String line; + String[] split; + String name; + int i=0; + while ((line=in.readLine())!=null) + { + split=line.split(" "); + name=split[2].substring(1, split[2].length()-1); + rs=stmt.executeQuery("SELECT number FROM rank WHERE name='"+name+"'"); + if (rs.next()){ + number=rs.getInt(1); + number++; + stmt.executeUpdate("UPDATE rank SET number="+number+" WHERE name='"+name+"'"); + } + else{ + try{ + stmt.executeUpdate("INSERT INTO rank (name,number) VALUES ('"+name+"',1)"); + }catch(Exception e) + {} + } + if (i%100000==0) System.out.println(i); + i++; + } + + in.close(); + con.close(); + } catch (FileNotFoundException e) + { + System.out.println("File not found"); + } catch (IOException e) + { + System.out.println("IOException"); + } catch (Exception e) + { + e.printStackTrace(); + } + } + + private void addLabels() + { + try{ + Statement stmt; + ResultSet rs; + + Class.forName("com.mysql.jdbc.Driver"); + + String url = + "jdbc:mysql://localhost:3306/navigator_db"; + + Connection con = DriverManager.getConnection( + url,"navigator", "dbpedia"); + + stmt = con.createStatement(); + BufferedReader in = new BufferedReader(new FileReader(labels)); + + String line; + String[] split; + String name; + String label; + int i=0; + while ((line=in.readLine())!=null) + { + split=line.split(">"); + name=split[0].substring(1); + label=split[2].substring(split[2].indexOf("\"")+1, split[2].lastIndexOf("\"")); + rs=stmt.executeQuery("SELECT number FROM rank WHERE name='"+name+"'"); + if (rs.next()){ + stmt.executeUpdate("UPDATE rank SET label=\""+label+"\" WHERE name='"+name+"'"); + } + else{ + try{ + stmt.executeUpdate("INSERT INTO rank (name,label) VALUES ('"+name+"',\""+label+"\")"); + }catch(Exception e) + {} + } + if (i%100000==0) System.out.println(i); + i++; + } + + in.close(); + con.close(); + } catch (FileNotFoundException e) + { + System.out.println("File not found"); + } catch (IOException e) + { + System.out.println("IOException"); + } catch (Exception e) + { + e.printStackTrace(); + } + } + + private void calculateCategories() + { + try{ + Statement stmt; + + Class.forName("com.mysql.jdbc.Driver"); + + String url = + "jdbc:mysql://localhost:3306/navigator_db"; + + Connection con = DriverManager.getConnection( + url,"navigator", "dbpedia"); + + stmt = con.createStatement(); + + stmt.executeUpdate("ALTER TABLE rank DROP COLUMN category"); + + BufferedReader in = new BufferedReader(new FileReader(categories)); + + String line; + String[] split; + String name; + String label; + String pred; + int i=0; + while ((line=in.readLine())!=null) + { + split=line.split(">"); + name=split[0].substring(1); + pred=split[1].substring(2); + if (pred.equals("http://www.w3.org/2000/01/rdf-schema#label")) + label=split[2].substring(split[2].indexOf("\"")+1, split[2].lastIndexOf("\"")); + else + label=split[2].substring(2); + if (pred.equals("http://www.w3.org/2000/01/rdf-schema#label")){ + try{ + stmt.executeUpdate("INSERT INTO categories (category,label) VALUES (\""+name+"\",\""+label+"\")"); + }catch(Exception e) + {} + } + else{ + if (name.startsWith("http://dbpedia.org/resource")){ + try{ + stmt.executeUpdate("INSERT INTO articlecategories (name,category) VALUES ('"+name+"','"+label+"')"); + }catch(Exception e) + {} + }else{ + try{ + stmt.executeUpdate("INSERT INTO classhierarchy (father,child) VALUES ('"+label+"','"+name+"')"); + }catch(Exception e) + {} + } + } + if (i%100000==0) System.out.println(i); + i++; + } + + in.close(); + con.close(); + } catch (FileNotFoundException e) + { + System.out.println("File not found"); + } catch (IOException e) + { + System.out.println("IOException"); + } catch (Exception e) + { + e.printStackTrace(); + } + } + + private void copyNumbers() + { + try{ + Statement stmt; + + Class.forName("com.mysql.jdbc.Driver"); + + String url = + "jdbc:mysql://localhost:3306/navigator_db"; + + Connection con = DriverManager.getConnection( + url,"navigator", "dbpedia"); + + stmt = con.createStatement(); + + stmt.executeUpdate("UPDATE articlecategories SET number=(SELECT number FROM rank WHERE articlecategories.name=rank.name)"); + + con.close(); + } catch (Exception e) + { + e.printStackTrace(); + } + } + + public static void main(String[] args){ + CalculatePageRank cal=new CalculatePageRank(); + cal.calculateLinks(); + cal.addLabels(); + cal.calculateCategories(); + cal.copyNumbers(); + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-08-20 14:37:21
|
Revision: 1109 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1109&view=rev Author: kurzum Date: 2008-08-20 14:37:13 +0000 (Wed, 20 Aug 2008) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-20 14:22:56 UTC (rev 1108) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-20 14:37:13 UTC (rev 1109) @@ -122,9 +122,14 @@ @Override public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ + int tmp = recursionDepth; + recursionDepth=4; + SortedSet<RDFNodeTuple> tmpSet = retrieveTupel(uri); + recursionDepth = tmp; + return tmpSet; //getQuery - String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); - return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); + //String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); + //return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); } Modified: trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-20 14:22:56 UTC (rev 1108) +++ trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-20 14:37:13 UTC (rev 1109) @@ -223,8 +223,8 @@ lsc.sparqlEndpoint = sparqlTasks.getSparqlEndpoint(); lsc.recursiondepth = 1; - lsc.noisePercentage = 15; - lsc.guaranteeXgoodDescriptions = 200; + lsc.noisePercentage = 20; + lsc.guaranteeXgoodDescriptions = 100; lsc.maxExecutionTimeInSeconds = 50; lsc.logLevel = "TRACE"; // lsc.searchTreeFile = "log/WikipediaCleaner.txt"; Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-08-20 14:22:56 UTC (rev 1108) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2008-08-20 14:37:13 UTC (rev 1109) @@ -681,15 +681,28 @@ @WebMethod public String[] getNegativeExamples(int sessionID, int componentID,String[] positives, int results, String namespace) throws ClientNotKnownException { - SortedSet<String> set = new TreeSet<String>(Arrays.asList(positives)); + int sparqlResultSetLimit = 500; + SortedSet<String> positiveSet = new TreeSet<String>(Arrays.asList(positives)); ClientState state = getState(sessionID); Component component = state.getComponent(componentID); SparqlKnowledgeSource ks=(SparqlKnowledgeSource)component; SPARQLTasks task=ks.getSPARQLTasks(); - AutomaticNegativeExampleFinderSPARQL finder=new AutomaticNegativeExampleFinderSPARQL(set,task); - //finder.makeNegativeExamplesFromRelatedInstances(set, namespace); - finder.makeNegativeExamplesFromParallelClasses(set, 25); + AutomaticNegativeExampleFinderSPARQL finder=new AutomaticNegativeExampleFinderSPARQL(positiveSet,task); + + finder.makeNegativeExamplesFromParallelClasses(positiveSet, sparqlResultSetLimit); SortedSet<String> negExamples=finder.getNegativeExamples(results); + if(negExamples.isEmpty()){ + finder.makeNegativeExamplesFromRelatedInstances(positiveSet, namespace); + negExamples = finder.getNegativeExamples(results); + if(negExamples.isEmpty()){ + finder.makeNegativeExamplesFromSuperClassesOfInstances(positiveSet, sparqlResultSetLimit); + negExamples = finder.getNegativeExamples(results); + if(negExamples.isEmpty()) { + finder.makeNegativeExamplesFromRandomInstances(); + negExamples = finder.getNegativeExamples(results); + } + } + } return negExamples.toArray(new String[negExamples.size()]); } Added: trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/TestGetExampleBug.java 2008-08-20 14:37:13 UTC (rev 1109) @@ -0,0 +1,86 @@ +package org.dllearner.test; + +import java.net.URL; +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.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; + +public class TestGetExampleBug { + + /** + * @param args + */ + public static void main(String[] args) { + Logger logger = Logger.getRootLogger(); + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.TRACE); + //Logger.getLogger(SparqlQuery.class).setLevel(Level.DEBUG); + + try { + String OntowikiUrl="http://localhost/ontowiki-0.8.5/service/sparql"; + + String posExamples = "http://3ba.se/conferences/FMILeipzig"; + SortedSet<String> positiveSet = new TreeSet<String>(); + positiveSet.add(posExamples); + SPARQLTasks st = new SPARQLTasks(new SparqlEndpoint(new URL(OntowikiUrl))); + AutomaticNegativeExampleFinderSPARQL ane = + new AutomaticNegativeExampleFinderSPARQL(positiveSet,st); + SortedSet<String> negExamples = new TreeSet<String>(); + int results=100; + if(negExamples.isEmpty()){ + //ane.makeNegativeExamplesFromRelatedInstances(positiveSet, "http://3ba.se/conferences/"); + negExamples = ane.getNegativeExamples(results); + if(negExamples.isEmpty()){ + ane.makeNegativeExamplesFromSuperClassesOfInstances(positiveSet, 500); + negExamples = ane.getNegativeExamples(results); + if(negExamples.isEmpty()) { + ane.makeNegativeExamplesFromRandomInstances(); + negExamples = ane.getNegativeExamples(results); + } + } + } + + System.out.println(ane.getNegativeExamples(100)); + }catch (Exception e) { + e.printStackTrace(); + } + + /*$negExamples=$client->getNegativeExamples($id,$ksID,$posExamples,count($posExamples),"http://localhost/ontowiki/service/sparql"); + $negExamples=$negExamples->item; + $client->setLearningProblem($id, "posNegDefinition"); + $client->setPositiveExamples($id, $posExamples); + $client->setNegativeExamples($id, $negExamples); + +// choose refinement operator approach + $client->setLearningAlgorithm($id, "refexamples"); +// you can add the following to apply a config option to a component, e.g. ignore a concept +// $client->applyConfigEntryStringArray($id, $la_id, "ignoredConcepts", array('http://example.com/father#male')); + + $client->initAll($id); + +// learn concept + echo 'start learning ... '; +// get only concept +// $concept = $client->learn($id, "manchester"); +// get concept and additional information in JSON syntax + $concept = $client->learnDescriptionsEvaluated($id, 5); + echo 'OK <br />'; + echo 'solution: <pre>' . $concept . '</pre>'; + + ?>*/ + + + + } + +} Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-20 14:22:56 UTC (rev 1108) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-20 14:37:13 UTC (rev 1109) @@ -19,6 +19,7 @@ */ package org.dllearner.utilities.examples; +import java.util.Iterator; import java.util.SortedSet; import java.util.TreeSet; @@ -26,6 +27,7 @@ import org.dllearner.core.ComponentManager; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.utilities.datastructures.SetManipulation; +import org.dllearner.utilities.owl.OWLVocabulary; public class AutomaticNegativeExampleFinderSPARQL { @@ -40,6 +42,7 @@ private SortedSet<String> fromRelated = new TreeSet<String>(); private SortedSet<String> fromSuperclasses = new TreeSet<String>();; private SortedSet<String> fromParallelClasses = new TreeSet<String>();; + private SortedSet<String> fromRandom = new TreeSet<String>();; private SortedSet<String> fromDomain = new TreeSet<String>();; private SortedSet<String> fromRange = new TreeSet<String>();; @@ -68,16 +71,20 @@ /** * aggregates all collected neg examples + * CAVE: it is necessary to call one of the make functions before calling this + * * @param neglimit size of negative Example set * @param stable decides whether neg Examples are randomly picked, default false, faster for developing, since the cache can be used * @return */ public SortedSet<String> getNegativeExamples(int neglimit, boolean stable ) { - SortedSet<String> negatives = new TreeSet<String>(); negatives.addAll(fromParallelClasses); negatives.addAll(fromRelated); negatives.addAll(fromSuperclasses); + if(negatives.isEmpty()) { + negatives.addAll(fromRandom); + } logger.debug("neg Example size before shrinking: " + negatives.size()); if (stable) { negatives = SetManipulation.stableShrink(negatives,neglimit); @@ -90,6 +97,18 @@ } + public void makeNegativeExamplesFromRandomInstances() { + logger.debug("making random examples "); + String variable = "subject"; + String sparqlQueryString="SELECT ?"+variable+" WHERE {" + + "?"+variable+" <" +OWLVocabulary.RDF_TYPE+">" + " ?o" + + "}"; + + fromRandom = sparqltasks.queryAsSet(sparqlQueryString, variable); + fromRandom.removeAll(fullPositiveSet); + logger.debug("|-negExample size from related: " + fromRelated.size()); + } + /** * makes neg ex from related instances, that take part in a role R(pos,neg) * filters all objects, that don't use the given namespace @@ -173,23 +192,48 @@ } + + /** + * it gets the first class of an arbitrary instance and queries the superclasses of it, + * could be more elaborate. + * It is better to use makeNegativeExamplesFromSuperClasses + * @param positiveSet + * @param sparqlResultSetLimit + */ + public void makeNegativeExamplesFromSuperClassesOfInstances(SortedSet<String> positiveSet, + int sparqlResultSetLimit) { + SortedSet<String> classes = new TreeSet<String>(); + Iterator<String> instanceIter = positiveSet.iterator(); + while(classes.isEmpty() && instanceIter.hasNext()) { + classes.addAll(sparqltasks.getClassesForInstance(instanceIter.next(), sparqlResultSetLimit)); + + } + makeNegativeExamplesFromSuperClasses(classes.first(), sparqlResultSetLimit); + } + + + public void makeNegativeExamplesFromSuperClasses(String concept, int sparqlResultSetLimit) { + makeNegativeExamplesFromSuperClasses( concept, sparqlResultSetLimit, 2); + } + + /** * if pos ex derive from one class, then neg ex are taken from a superclass * @param concept - * @param resultLimit + * @param sparqlResultSetLimit */ - public void makeNegativeExamplesFromSuperClasses(String concept, int resultLimit) { + public void makeNegativeExamplesFromSuperClasses(String concept, int sparqlResultSetLimit, int depth) { concept = concept.replaceAll("\"", ""); // superClasses.add(concept.replace("\"", "")); // logger.debug("before"+superClasses); - SortedSet<String> superClasses = sparqltasks.getSuperClasses(concept, 4); + SortedSet<String> superClasses = sparqltasks.getSuperClasses(concept, depth); logger.debug("making neg Examples from " + superClasses.size() + " superclasses"); for (String oneSuperClass : superClasses) { logger.debug(oneSuperClass); fromSuperclasses.addAll(sparqltasks.retrieveInstancesForClassDescription("\"" - + oneSuperClass + "\"", resultLimit)); + + oneSuperClass + "\"", sparqlResultSetLimit)); } this.fromSuperclasses.removeAll(fullPositiveSet); @@ -197,17 +241,17 @@ } @SuppressWarnings("unused") - private void makeNegativeExamplesFromDomain(String role, int resultLimit){ + private void makeNegativeExamplesFromDomain(String role, int sparqlResultSetLimit){ logger.debug("making Negative Examples from Domain of : "+role); - fromDomain.addAll(sparqltasks.getDomainInstances(role, resultLimit)); + fromDomain.addAll(sparqltasks.getDomainInstances(role, sparqlResultSetLimit)); fromDomain.removeAll(fullPositiveSet); logger.debug("|-neg Example size from Domain: "+this.fromDomain.size()); } @SuppressWarnings("unused") - private void makeNegativeExamplesFromRange(String role, int resultLimit){ + private void makeNegativeExamplesFromRange(String role, int sparqlResultSetLimit){ logger.debug("making Negative Examples from Range of : "+role); - fromRange.addAll(sparqltasks.getRangeInstances(role, resultLimit)); + fromRange.addAll(sparqltasks.getRangeInstances(role, sparqlResultSetLimit)); fromRange.removeAll(fullPositiveSet); logger.debug("|-neg Example size from Range: "+fromRange.size()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-08-20 14:23:00
|
Revision: 1108 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1108&view=rev Author: jenslehmann Date: 2008-08-20 14:22:56 +0000 (Wed, 20 Aug 2008) Log Message: ----------- - further cleanup and logging improvements - examples unit test improved Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Info.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/cli/Start.java trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2008-08-20 13:12:53 UTC (rev 1107) +++ trunk/src/dl-learner/org/dllearner/Info.java 2008-08-20 14:22:56 UTC (rev 1108) @@ -3,6 +3,6 @@ package org.dllearner; public class Info { - public static final String build = "2008-08-15"; + public static final String build = "2008-08-20"; } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 13:12:53 UTC (rev 1107) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 14:22:56 UTC (rev 1108) @@ -21,7 +21,6 @@ import java.io.File; import java.text.DecimalFormat; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; @@ -54,34 +53,24 @@ import org.dllearner.utilities.owl.EvaluatedDescriptionComparator; /** - * Implements the example based refinement operator learning - * approach. + * Implements the example based refinement operator learning approach. * - * TODO: Implement noise handling (here and/or in heuristics). When the - * noise level in the examples is set to a certain percentage, we - * compute the number of positive examples corresponding to this - * percentage. This is the maximum number of positive examples, which - * can be misclassified (everything above is considered a too weak - * concept wrt. the noise percentage). - * * TODO: Solve subsumption problems. It is easy to implement approximate fast * instance checks. However, subsumption is difficult to optimise. It should by - * analysed whether it is reasonable to perform instance comparisions instead - * of subsumption checks, e.g. a concept is only included in the search tree - * when it covers strictly less examples than its parent. Note, that this does - * not mean that concepts not bearing an advantage in classification are thrown - * away. They are just handled like improper refinements. [TODO: How does this + * analysed whether it is reasonable to perform instance comparisions instead of + * subsumption checks, e.g. a concept is only included in the search tree when + * it covers strictly less examples than its parent. Note, that this does not + * mean that concepts not bearing an advantage in classification are thrown + * away. They are just handled like improper refinements. [TODO: How does this * differ from not checking subsumption at all?] * * @author Jens Lehmann - * + * */ public class ExampleBasedROLearner { - private static Logger logger = Logger - .getLogger(ExampleBasedROLearner.class); - - + private static Logger logger = Logger.getLogger(ExampleBasedROLearner.class); + // basic setup: learning problem and reasoning service private ReasoningService rs; // often the learning problems needn't be accessed directly; instead @@ -95,17 +84,21 @@ private Set<Individual> positiveExamples; private int nrOfNegativeExamples; private Set<Individual> negativeExamples; - - // noise regulates how many positives can be misclassified and when the algorithm terminates + + // noise regulates how many positives can be misclassified and when the + // algorithm terminates private double noise = 0.0; private int allowedMisclassifications = 0; - + // positive only learning options: - // if no negatives are given, then one possible strategy is to find a very special concept still entailing all positive examples; - // this is realised by changing the termination criterion: a concept is a solution if it has been expanded x times (x is - // configurable) but no more special concept is found (all are either equivalent or too weak) + // if no negatives are given, then one possible strategy is to find a very + // special concept still entailing all positive examples; + // this is realised by changing the termination criterion: a concept is a + // solution if it has been expanded x times (x is + // configurable) but no more special concept is found (all are either + // equivalent or too weak) private int maxPosOnlyExpansion; - + // search tree options private boolean writeSearchTree; private File searchTreeFile; @@ -115,84 +108,85 @@ private boolean useTooWeakList = true; private boolean useOverlyGeneralList = true; private boolean useShortConceptConstruction = true; - - //extended Options + + // extended Options private long maxExecutionTimeInSeconds; - private boolean maxExecutionTimeShown=false; + private boolean maxExecutionTimeShown = false; private long minExecutionTimeInSeconds = 0; - private boolean minExecutionTimeShown=false; + private boolean minExecutionTimeShown = false; private int guaranteeXgoodDescriptions = 1; - private boolean guaranteeXgoodShown=false; - + 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 - // queries and a search bias towards ALL r.something because + // queries and a search bias towards ALL r.something because // ALL r.TOP is improper and automatically expanded further private boolean usePropernessChecks = false; - + // tree traversal means to run through the most promising concepts // and connect them in an intersection to find a solution // (this is called irregularly e.g. every 100 seconds) private boolean useTreeTraversal = false; - + // candidate reduction: using this mechanism we can simulate // the divide&conquer approach in many ILP programs using a // clause by clause search; after a period of time the candidate // set is reduced to focus CPU time on the most promising concepts private boolean useCandidateReduction = true; private int candidatePostReductionSize = 30; - + // setting to true gracefully stops the algorithm private boolean stop = false; private boolean isRunning = false; - + // node from which algorithm has started - private ExampleBasedNode startNode; - + private ExampleBasedNode startNode; + // solution protocol private boolean solutionFound = false; - private List<Description> solutions = new LinkedList<Description>(); - + private List<Description> solutions = new LinkedList<Description>(); + // used refinement operator and heuristic (exchangeable) private RhoDRDown operator; -// private RefinementOperator operator; + // private RefinementOperator operator; // private ExampleBasedHeuristic heuristic; - + // specifies whether to compute and log benchmark information private boolean computeBenchmarkInformation = false; - + // comparator used to maintain a stable ordering of nodes, i.e. // an ordering which does not change during the run of the algorithm private NodeComparatorStable nodeComparatorStable = new NodeComparatorStable(); // stable candidate set; it has no functional part in the algorithm, // but is a list of the currently best concepts found - private TreeSet<ExampleBasedNode> candidatesStable = new TreeSet<ExampleBasedNode>(nodeComparatorStable); - + private TreeSet<ExampleBasedNode> candidatesStable = new TreeSet<ExampleBasedNode>( + nodeComparatorStable); + // comparator used to create ordered sets of concepts private ConceptComparator conceptComparator = new ConceptComparator(); // comparator for evaluated descriptions private EvaluatedDescriptionComparator edComparator = new EvaluatedDescriptionComparator(); - + // utility variables - private DecimalFormat df = new DecimalFormat(); - - // candidates for refinement (used for directly accessing + private DecimalFormat df = new DecimalFormat(); + + // candidates for refinement (used for directly accessing // nodes in the search tree) private TreeSet<ExampleBasedNode> candidates; - + // new nodes found during a run of the algorithm private List<ExampleBasedNode> newCandidates = new LinkedList<ExampleBasedNode>(); - + // all concepts which have been evaluated as being proper refinements private SortedSet<Description> properRefinements = new TreeSet<Description>(conceptComparator); // blacklists private SortedSet<Description> tooWeakList = new TreeSet<Description>(conceptComparator); private SortedSet<Description> overlyGeneralList = new TreeSet<Description>(conceptComparator); - + // set of expanded nodes (TODO: better explanation) TreeSet<ExampleBasedNode> expandedNodes = new TreeSet<ExampleBasedNode>(nodeComparatorStable); - + // statistic variables private int maxRecDepth = 0; private int maxNrOfRefinements = 0; @@ -204,12 +198,12 @@ private int conceptTestsTooWeakList = 0; private int conceptTestsOverlyGeneralList = 0; private int conceptTestsReasoner = 0; - + // time variables private long runtime; private long algorithmStartTime; private long propernessCalcTimeNs = 0; - private long propernessCalcReasoningTimeNs = 0; + private long propernessCalcReasoningTimeNs = 0; private long childConceptsDeletionTimeNs = 0; private long refinementCalcTimeNs = 0; private long redundancyCheckTimeNs = 0; @@ -218,31 +212,23 @@ // prefixes private String baseURI; - private Map<String,String> prefixes; - + private Map<String, String> prefixes; + public ExampleBasedROLearner( LearningProblem learningProblem, ReasoningService rs, - RefinementOperator operator, + RefinementOperator operator, ExampleBasedHeuristic heuristic, Description startDescription, // Set<AtomicConcept> allowedConcepts, - // Set<AtomicRole> allowedRoles, - double noise, - boolean writeSearchTree, - boolean replaceSearchTree, - File searchTreeFile, - boolean useTooWeakList, - boolean useOverlyGeneralList, - boolean useShortConceptConstruction, - boolean usePropernessChecks, - int maxPosOnlyExpansion, - int maxExecutionTimeInSeconds, - int minExecutionTimeInSeconds, - int guaranteeXgoodDescriptions - ) { - - if(learningProblem instanceof PosNegLP) { + // Set<AtomicRole> allowedRoles, + double noise, boolean writeSearchTree, boolean replaceSearchTree, File searchTreeFile, + boolean useTooWeakList, boolean useOverlyGeneralList, + boolean useShortConceptConstruction, boolean usePropernessChecks, + int maxPosOnlyExpansion, int maxExecutionTimeInSeconds, int minExecutionTimeInSeconds, + int guaranteeXgoodDescriptions) { + + if (learningProblem instanceof PosNegLP) { PosNegLP lp = (PosNegLP) learningProblem; this.learningProblem = lp; posOnly = false; @@ -250,19 +236,19 @@ negativeExamples = lp.getNegativeExamples(); nrOfPositiveExamples = positiveExamples.size(); nrOfNegativeExamples = negativeExamples.size(); - -// System.out.println(nrOfPositiveExamples); -// System.out.println(nrOfNegativeExamples); -// System.exit(0); - - } else if(learningProblem instanceof PosOnlyDefinitionLP) { + + // System.out.println(nrOfPositiveExamples); + // System.out.println(nrOfNegativeExamples); + // System.exit(0); + + } else if (learningProblem instanceof PosOnlyDefinitionLP) { PosOnlyDefinitionLP lp = (PosOnlyDefinitionLP) learningProblem; this.posOnlyLearningProblem = lp; posOnly = true; positiveExamples = lp.getPositiveExamples(); negativeExamples = new TreeSet<Individual>(); nrOfPositiveExamples = lp.getPositiveExamples().size(); -// nrOfNegativeExamples = lp.getPseudoNegatives().size(); + // nrOfNegativeExamples = lp.getPseudoNegatives().size(); nrOfNegativeExamples = 0; } nrOfExamples = nrOfPositiveExamples + nrOfNegativeExamples; @@ -285,78 +271,93 @@ this.maxExecutionTimeInSeconds = maxExecutionTimeInSeconds; this.minExecutionTimeInSeconds = minExecutionTimeInSeconds; this.guaranteeXgoodDescriptions = guaranteeXgoodDescriptions; - - -// logger.setLevel(Level.DEBUG); + + // logger.setLevel(Level.DEBUG); } - + public void start() { isRunning = true; - runtime=System.currentTimeMillis(); - JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime").start(); - // TODO: write a JUnit test for this problem (long-lasting or infinite loops because - // redundant children of a node are called recursively when a node is extended + runtime = System.currentTimeMillis(); + JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime") + .start(); + // TODO: write a JUnit test for this problem (long-lasting or infinite + // loops because + // redundant children of a node are called recursively when a node is + // extended // twice) /* -// String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\". TOP)))"; -// String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND (\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE)))"; - String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 3 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND ALL \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))"; - String conceptStr2 = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 4 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND ALL \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))"; - try { - NamedClass struc = new NamedClass("http://dl-learner.org/carcinogenesis#Compound"); - Description d = KBParser.parseConcept(conceptStr); - Description d2 = KBParser.parseConcept(conceptStr2); -// SortedSet<Description> ds = (SortedSet<Description>) operator.refine(d,15,null,struc); -// System.out.println(ds); - -// System.out.println(RhoDRDown.checkIntersection((Intersection)d)); - - - Set<Individual> coveredNegatives = rs.instanceCheck(d, learningProblem.getNegativeExamples()); - Set<Individual> coveredPositives = rs.instanceCheck(d, learningProblem.getPositiveExamples()); - ExampleBasedNode ebn = new ExampleBasedNode(d); - ebn.setCoveredExamples(coveredPositives, coveredNegatives); - - properRefinements.add(d2); - extendNodeProper(ebn,13); - extendNodeProper(ebn,14); - for(Description refinement: ebn.getChildConcepts()) - System.out.println("refinement: " + refinement); - - // Individual i = new Individual("http://dl-learner.org/carcinogenesis#d101"); -// for(Individual i : learningProblem.getPositiveExamples()) -// rs.instanceCheck(ds.last(), i); - - System.out.println("finished"); - } catch (ParseException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - System.exit(0); - */ - + * // String conceptStr = + * "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2 + * \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\" + * OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS + * TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\". + * TOP)))"; // String conceptStr = + * "(\"http://dl-learner.org/carcinogenesis#Compound\" AND + * ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) + * AND (\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS + * TRUE)))"; String conceptStr = + * "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 3 + * \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\" + * OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS + * TRUE) AND ALL + * \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))"; String + * conceptStr2 = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND + * (>= 4 + * \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Halide\" + * OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS + * TRUE) AND ALL + * \"http://dl-learner.org/carcinogenesis#hasAtom\".TOP)))"; try { + * NamedClass struc = new + * NamedClass("http://dl-learner.org/carcinogenesis#Compound"); + * Description d = KBParser.parseConcept(conceptStr); Description d2 = + * KBParser.parseConcept(conceptStr2); // SortedSet<Description> ds = + * (SortedSet<Description>) operator.refine(d,15,null,struc); // + * System.out.println(ds); + * // System.out.println(RhoDRDown.checkIntersection((Intersection)d)); + * + * + * Set<Individual> coveredNegatives = rs.instanceCheck(d, + * learningProblem.getNegativeExamples()); Set<Individual> + * coveredPositives = rs.instanceCheck(d, + * learningProblem.getPositiveExamples()); ExampleBasedNode ebn = new + * ExampleBasedNode(d); ebn.setCoveredExamples(coveredPositives, + * coveredNegatives); + * + * properRefinements.add(d2); extendNodeProper(ebn,13); + * extendNodeProper(ebn,14); for(Description refinement: + * ebn.getChildConcepts()) System.out.println("refinement: " + + * refinement); + * // Individual i = new + * Individual("http://dl-learner.org/carcinogenesis#d101"); // + * for(Individual i : learningProblem.getPositiveExamples()) // + * rs.instanceCheck(ds.last(), i); + * + * System.out.println("finished"); } catch (ParseException e) { // TODO + * Auto-generated catch block e.printStackTrace(); } System.exit(0); + */ + // calculate quality threshold required for a solution allowedMisclassifications = (int) Math.round(noise * nrOfExamples); - + // start search with start class - if(startDescription == null) { + if (startDescription == null) { startNode = new ExampleBasedNode(Thing.instance); startNode.setCoveredExamples(positiveExamples, negativeExamples); } else { startNode = new ExampleBasedNode(startDescription); Set<Individual> coveredNegatives = rs.instanceCheck(startDescription, negativeExamples); - Set<Individual> coveredPositives = rs.instanceCheck(startDescription, positiveExamples); + Set<Individual> coveredPositives = rs.instanceCheck(startDescription, positiveExamples); startNode.setCoveredExamples(coveredPositives, coveredNegatives); } - + candidates.add(startNode); - candidatesStable.add(startNode); + candidatesStable.add(startNode); ExampleBasedNode bestNode = startNode; ExampleBasedNode bestNodeStable = startNode; int loop = 0; - + algorithmStartTime = System.nanoTime(); long lastPrintTime = 0; long lastTreeTraversalTime = System.nanoTime(); @@ -365,81 +366,86 @@ long traversalInterval = 300l * 1000000000l; long reductionInterval = 500l * 1000000000l; long currentTime; - - while(!solutionFound && !stop ) { - + + while (!solutionFound && !stop) { + // print statistics at most once a second currentTime = System.nanoTime(); - if(currentTime - lastPrintTime > 3000000000l) { + if (currentTime - lastPrintTime > 3000000000l) { printStatistics(false); lastPrintTime = currentTime; - logger.debug("--- loop " + loop + " started ---"); + logger.debug("--- loop " + loop + " started ---"); } - + // traverse the current search tree to find a solution - if(useTreeTraversal && (currentTime - lastTreeTraversalTime > traversalInterval)) { + if (useTreeTraversal && (currentTime - lastTreeTraversalTime > traversalInterval)) { traverseTree(); lastTreeTraversalTime = System.nanoTime(); } - + // reduce candidates to focus on promising concepts - if(useCandidateReduction && (currentTime - lastReductionTime > reductionInterval)) { + if (useCandidateReduction && (currentTime - lastReductionTime > reductionInterval)) { reduceCandidates(); lastReductionTime = System.nanoTime(); -// Logger.getRootLogger().setLevel(Level.TRACE); - } - - -// System.out.println("next expanded: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); - + // Logger.getRootLogger().setLevel(Level.TRACE); + } + + // System.out.println("next expanded: " + + // candidates.last().getShortDescription(nrOfPositiveExamples, + // nrOfNegativeExamples, baseURI)); + // we record when a more accurate node is found and log it - if(bestNodeStable.getCovPosMinusCovNeg() < candidatesStable.last().getCovPosMinusCovNeg()) { + if (bestNodeStable.getCovPosMinusCovNeg() < candidatesStable.last() + .getCovPosMinusCovNeg()) { logger.info("more accurate node found: " + candidatesStable.last()); bestNodeStable = candidatesStable.last(); } - + // chose best node according to heuristics bestNode = candidates.last(); - // extend best node + // extend best node newCandidates.clear(); // best node is removed temporarily, because extending it can // change its evaluation candidates.remove(bestNode); - extendNodeProper(bestNode, bestNode.getHorizontalExpansion()+1); + extendNodeProper(bestNode, bestNode.getHorizontalExpansion() + 1); candidates.add(bestNode); // newCandidates has been filled during node expansion candidates.addAll(newCandidates); - candidatesStable.addAll(newCandidates); - - -// System.out.println("done"); - - if(writeSearchTree) { + candidatesStable.addAll(newCandidates); + + // System.out.println("done"); + + if (writeSearchTree) { // String treeString = ""; - String treeString = "best node: " + bestNode+ "\n"; - if(expandedNodes.size()>1) { + String treeString = "best node: " + bestNode + "\n"; + if (expandedNodes.size() > 1) { treeString += "all expanded nodes:\n"; - for(ExampleBasedNode n : expandedNodes) { + for (ExampleBasedNode n : expandedNodes) { treeString += " " + n + "\n"; } } expandedNodes.clear(); - treeString += startNode.getTreeString(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); + treeString += startNode.getTreeString(nrOfPositiveExamples, nrOfNegativeExamples, + baseURI); treeString += "\n"; - if(replaceSearchTree) + if (replaceSearchTree) Files.createFile(searchTreeFile, treeString); else Files.appendFile(searchTreeFile, treeString); } - - // special situation for positive only learning: the expanded node can become a solution (see explanations + + // special situation for positive only learning: the expanded node + // can become a solution (see explanations // for maxPosOnlyExpansion above) - if(posOnly && bestNode.isPosOnlyCandidate() && (bestNode.getHorizontalExpansion() - bestNode.getConcept().getLength() >= maxPosOnlyExpansion)) { - + if (posOnly + && bestNode.isPosOnlyCandidate() + && (bestNode.getHorizontalExpansion() - bestNode.getConcept().getLength() >= maxPosOnlyExpansion)) { + boolean solution = checkSubtreePosOnly(bestNode); - - if(solution) { + + if (solution) { solutions.add(bestNode.getConcept()); ExampleBasedNode bestChild = bestNode.getChildren().last(); System.out.println("solution: " + bestNode.getConcept()); @@ -447,37 +453,39 @@ System.out.println("best child of this node: " + bestChild); System.out.println(bestNode.getChildConcepts()); System.out.println("TODO: needs to be integrated with other stopping criteria"); - System.out.println("You tried to use this algorithm for positive only learning, which is not recommended (yet)."); -// System.out.println("Exiting."); -// System.exit(0); + System.out + .println("You tried to use this algorithm for positive only learning, which is not recommended (yet)."); + // System.out.println("Exiting."); + // System.exit(0); } else { // tag as non-candidate so we do not need to search again bestNode.setPosOnlyCandidate(false); } - - } - + + } + // handle termination criteria handleStoppingConditions(); - + // Anzahl Schleifendurchläufe loop++; - }//end while - - - - if(solutionFound ) { + }// end while + + if (solutionFound) { int solutionLimit = 20; - logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + logger.info("best node " + + candidatesStable.last().getShortDescription(nrOfPositiveExamples, + nrOfNegativeExamples, baseURI)); logger.info("solutions (at most " + solutionLimit + " are shown):"); - 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() + ")"); - manchester+=show+": "+c.toManchesterSyntaxString(baseURI, prefixes)+"\n"; - kbSyntax+=show+": " + c.toKBSyntaxString()+"\n"; - if(show >= solutionLimit) { + 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() + ")"); + manchester += show + ": " + c.toManchesterSyntaxString(baseURI, prefixes) + "\n"; + kbSyntax += show + ": " + c.toKBSyntaxString() + "\n"; + if (show >= solutionLimit) { break; } show++; @@ -485,344 +493,375 @@ logger.debug(manchester); logger.debug(kbSyntax); } - + logger.debug("size of candidate set: " + candidates.size()); boolean showOrderedSolutions = false; - printBestSolutions(20,showOrderedSolutions); - + printBestSolutions(20, showOrderedSolutions); + printStatistics(true); - - if(stop) + + if (stop) logger.info("Algorithm stopped."); else - logger.info("Algorithm terminated succesfully."); - - JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime").stop(); + logger.info("Algorithm terminated succesfully."); + + JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime") + .stop(); isRunning = false; } - - - + // we apply the operator recursively until all proper refinements up // to the maxmimum length are reached private void extendNodeProper(ExampleBasedNode node, int maxLength) { long propCalcNsStart = System.nanoTime(); - - if(writeSearchTree) + + if (writeSearchTree) expandedNodes.add(node); - - if(node.getChildren().size()>maxNrOfChildren) + + if (node.getChildren().size() > maxNrOfChildren) maxNrOfChildren = node.getChildren().size(); - + extendNodeProper(node, node.getConcept(), maxLength, 0); node.setHorizontalExpansion(maxLength); - - propernessCalcTimeNs += (System.nanoTime()-propCalcNsStart); + + propernessCalcTimeNs += (System.nanoTime() - propCalcNsStart); } - - // for all refinements of concept up to max length, we check whether they are properr + + // for all refinements of concept up to max length, we check whether they + // are properr // and call the method recursively if not // recDepth is used only for statistics - private void extendNodeProper(ExampleBasedNode node, Description concept, int maxLength, int recDepth) { - - // do not execute methods if algorithm has been stopped (this means that the algorithm + private void extendNodeProper(ExampleBasedNode node, Description concept, int maxLength, + int recDepth) { + + // do not execute methods if algorithm has been stopped (this means that + // the algorithm // will terminate without further reasoning queries) - if(stop) + if (stop) return; - - if(recDepth > maxRecDepth) + + if (recDepth > maxRecDepth) maxRecDepth = recDepth; - - // compute refinements => we must not delete refinements with low horizontal expansion, + + // compute refinements => we must not delete refinements with low + // horizontal expansion, // because they are used in recursive calls of this method later on long refinementCalcTimeNsStart = System.nanoTime(); Set<Description> refinements = operator.refine(concept, maxLength, null); refinementCalcTimeNs += System.nanoTime() - refinementCalcTimeNsStart; - - if(refinements.size()>maxNrOfRefinements) + + if (refinements.size() > maxNrOfRefinements) maxNrOfRefinements = refinements.size(); - + long childConceptsDeletionTimeNsStart = System.nanoTime(); - // entferne aus den refinements alle Konzepte, die bereits Kinder des Knotens sind + // entferne aus den refinements alle Konzepte, die bereits Kinder des + // Knotens sind // for(Node n : node.getChildren()) { - // refinements.remove(n.getConcept()); + // refinements.remove(n.getConcept()); // } - - // das ist viel schneller, allerdings bekommt man ein anderes candidate set(??) + + // das ist viel schneller, allerdings bekommt man ein anderes candidate + // set(??) refinements.removeAll(node.getChildConcepts()); childConceptsDeletionTimeNs += System.nanoTime() - childConceptsDeletionTimeNsStart; - -// if(refinements.size()<30) { -//// System.out.println("refinements: " + refinements); -// for(Description refinement: refinements) -// System.out.println("refinement: " + refinement); -// } - + + // if(refinements.size()<30) { + // // System.out.println("refinements: " + refinements); + // for(Description refinement: refinements) + // System.out.println("refinement: " + refinement); + // } + long evaluateSetCreationTimeNsStart = System.nanoTime(); - - // alle Konzepte, die länger als horizontal expansion sind, müssen ausgewertet + + // alle Konzepte, die länger als horizontal expansion sind, müssen + // ausgewertet // werden TreeSet<Description> toEvaluateConcepts = new TreeSet<Description>(conceptComparator); Iterator<Description> it = refinements.iterator(); // for(Concept refinement : refinements) { - while(it.hasNext()) { - + while (it.hasNext()) { + Description refinement = it.next(); - if(refinement.getLength()>node.getHorizontalExpansion()) { + if (refinement.getLength() > node.getHorizontalExpansion()) { // sagt aus, ob festgestellt wurde, ob refinement proper ist // (sagt nicht aus, dass das refinement proper ist!) boolean propernessDetected = false; - + // 1. short concept construction - if(useShortConceptConstruction) { + if (useShortConceptConstruction) { // kurzes Konzept konstruieren - Description shortConcept = ConceptTransformation.getShortConcept(refinement, conceptComparator); + Description shortConcept = ConceptTransformation.getShortConcept(refinement, + conceptComparator); int n = conceptComparator.compare(shortConcept, concept); - + // Konzepte sind gleich also Refinement improper - if(n==0) { + if (n == 0) { propernessTestsAvoidedByShortConceptConstruction++; propernessDetected = true; - -// System.out.println("refinement " + refinement + " can be shortened"); -// System.exit(0); + + // System.out.println("refinement " + refinement + " can + // be shortened"); + // System.exit(0); } } - + // 2. too weak test - if(!propernessDetected && useTooWeakList) { - if(refinement instanceof Intersection) { - boolean tooWeakElement = containsTooWeakElement((Intersection)refinement); - if(tooWeakElement) { + if (!propernessDetected && useTooWeakList) { + if (refinement instanceof Intersection) { + boolean tooWeakElement = containsTooWeakElement((Intersection) refinement); + if (tooWeakElement) { propernessTestsAvoidedByTooWeakList++; conceptTestsTooWeakList++; propernessDetected = true; // tooWeakList.add(refinement); - - // Knoten wird direkt erzeugt (es ist buganfällig zwei Plätze - // zu haben, an denen Knoten erzeugt werden, aber es erscheint + + // Knoten wird direkt erzeugt (es ist buganfällig + // zwei Plätze + // zu haben, an denen Knoten erzeugt werden, aber es + // erscheint // hier am sinnvollsten) properRefinements.add(refinement); tooWeakList.add(refinement); - + ExampleBasedNode newNode = new ExampleBasedNode(refinement); - newNode.setHorizontalExpansion(refinement.getLength()-1); + newNode.setHorizontalExpansion(refinement.getLength() - 1); newNode.setTooWeak(true); - newNode.setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.TOO_WEAK_LIST); + newNode + .setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.TOO_WEAK_LIST); node.addChild(newNode); - + // Refinement muss gelöscht werden, da es proper ist it.remove(); } } } - + // properness konnte nicht vorher ermittelt werden - if(!propernessDetected) { + if (!propernessDetected) { toEvaluateConcepts.add(refinement); -// if(!res) { -// System.out.println("already in: " + refinement); -// Comparator comp = toEvaluateConcepts.comparator(); -// for(Description d : toEvaluateConcepts) { -// if(comp.compare(d,refinement)==0) -// System.out.println("see: " + d); -// } -// } + // if(!res) { + // System.out.println("already in: " + refinement); + // Comparator comp = toEvaluateConcepts.comparator(); + // for(Description d : toEvaluateConcepts) { + // if(comp.compare(d,refinement)==0) + // System.out.println("see: " + d); + // } + // } } - - + } - -// System.out.println("handled " + refinement + " length: " + refinement.getLength() + " (new size: " + toEvaluateConcepts.size() + ")"); - + + // System.out.println("handled " + refinement + " length: " + + // refinement.getLength() + " (new size: " + + // toEvaluateConcepts.size() + ")"); + } evaluateSetCreationTimeNs += System.nanoTime() - evaluateSetCreationTimeNsStart; - -// System.out.println("intermediate 1 " + node.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); - + + // System.out.println("intermediate 1 " + + // node.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, + // baseURI)); + // System.out.println(toEvaluateConcepts.size()); - + Set<Description> improperConcepts = null; - if(toEvaluateConcepts.size()>0) { + if (toEvaluateConcepts.size() > 0) { // Test aller Konzepte auf properness (mit DIG in nur einer Anfrage) - if(usePropernessChecks) { + if (usePropernessChecks) { long propCalcReasoningStart = System.nanoTime(); improperConcepts = rs.subsumes(toEvaluateConcepts, concept); - propernessTestsReasoner+=toEvaluateConcepts.size(); - // boolean isProper = !learningProblem.getReasoningService().subsumes(refinement, concept); + propernessTestsReasoner += toEvaluateConcepts.size(); + // boolean isProper = + // !learningProblem.getReasoningService().subsumes(refinement, + // concept); propernessCalcReasoningTimeNs += System.nanoTime() - propCalcReasoningStart; } } -// if(toEvaluateConcepts.size()<10) -// System.out.println("to evaluate: " + toEvaluateConcepts); -// else -// System.out.println("to evaluate: more than 10"); - + // if(toEvaluateConcepts.size()<10) + // System.out.println("to evaluate: " + toEvaluateConcepts); + // else + // System.out.println("to evaluate: more than 10"); + long improperConceptsRemovalTimeNsStart = System.nanoTime(); // die improper Konzepte werden von den auszuwertenden gelöscht, d.h. // alle proper concepts bleiben übrig (einfache Umbenennung) - if(improperConcepts != null) + if (improperConcepts != null) toEvaluateConcepts.removeAll(improperConcepts); Set<Description> properConcepts = toEvaluateConcepts; // alle proper concepts von refinements löschen refinements.removeAll(properConcepts); improperConceptsRemovalTimeNs += System.nanoTime() - improperConceptsRemovalTimeNsStart; - -// if(refinements.size()<10) -// System.out.println("refinements: " + refinements); -// else -// System.out.println("refinements: more than 10"); -// -// System.out.println("improper concepts: " + improperConcepts); - - for(Description refinement : properConcepts) { + + // if(refinements.size()<10) + // System.out.println("refinements: " + refinements); + // else + // System.out.println("refinements: more than 10"); + // + // System.out.println("improper concepts: " + improperConcepts); + + for (Description refinement : properConcepts) { long redundancyCheckTimeNsStart = System.nanoTime(); boolean nonRedundant = properRefinements.add(refinement); redundancyCheckTimeNs += System.nanoTime() - redundancyCheckTimeNsStart; - - if(!nonRedundant) + + if (!nonRedundant) redundantConcepts++; - + // es wird nur ein neuer Knoten erzeugt, falls das Konzept nicht // schon existiert - if(nonRedundant) { - + if (nonRedundant) { + // newly created node ExampleBasedNode newNode = new ExampleBasedNode(refinement); - // die -1 ist wichtig, da sonst keine gleich langen Refinements + // die -1 ist wichtig, da sonst keine gleich langen Refinements // für den neuen Knoten erlaubt wären z.B. person => male - newNode.setHorizontalExpansion(refinement.getLength()-1); - + newNode.setHorizontalExpansion(refinement.getLength() - 1); + boolean qualityKnown = false; int quality = -2; - + // overly general list verwenden - if(useOverlyGeneralList && refinement instanceof Union) { - if(containsOverlyGeneralElement((Union)refinement)) { + if (useOverlyGeneralList && refinement instanceof Union) { + if (containsOverlyGeneralElement((Union) refinement)) { conceptTestsOverlyGeneralList++; -// quality = getNumberOfNegatives(); + // quality = getNumberOfNegatives(); quality = nrOfNegativeExamples; qualityKnown = true; - newNode.setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.OVERLY_GENERAL_LIST); + newNode + .setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.OVERLY_GENERAL_LIST); newNode.setCoveredExamples(positiveExamples, negativeExamples); - } - + } + } // Qualität des Knotens auswerten - if(!qualityKnown) { + if (!qualityKnown) { long propCalcReasoningStart2 = System.nanoTime(); conceptTestsReasoner++; - + // quality = coveredNegativesOrTooWeak(refinement); - - // determine individuals which have not been covered yet (more efficient than full retrieval) + + // determine individuals which have not been covered yet + // (more efficient than full retrieval) Set<Individual> coveredPositives = node.getCoveredPositives(); Set<Individual> newlyCoveredPositives = new HashSet<Individual>(); - + // calculate how many pos. examples are not covered by the // parent node of the refinement int misclassifiedPositives = nrOfPositiveExamples - coveredPositives.size(); - - // iterate through all covered examples (examples which are not - // covered do not need to be tested, because they remain uncovered); - // DIG will be slow if we send each reasoner request individually - // (however if we send everything in one request, too many instance checks + + // iterate through all covered examples (examples which are + // not + // covered do not need to be tested, because they remain + // uncovered); + // DIG will be slow if we send each reasoner request + // individually + // (however if we send everything in one request, too many + // instance checks // are performed => rely on fast instance checker) - for(Individual i : coveredPositives) { + for (Individual i : coveredPositives) { // TODO: move code to a separate function - if(quality != -1) { + if (quality != -1) { boolean covered = rs.instanceCheck(refinement, i); - if(!covered) + if (!covered) misclassifiedPositives++; else newlyCoveredPositives.add(i); - - if(misclassifiedPositives > allowedMisclassifications) + + if (misclassifiedPositives > allowedMisclassifications) quality = -1; - + } } - + Set<Individual> newlyCoveredNegatives = null; - if(quality != -1) { + if (quality != -1) { Set<Individual> coveredNegatives = node.getCoveredNegatives(); newlyCoveredNegatives = new HashSet<Individual>(); - - for(Individual i : coveredNegatives) { + + for (Individual i : coveredNegatives) { boolean covered = rs.instanceCheck(refinement, i); - if(covered) + if (covered) newlyCoveredNegatives.add(i); } } - + propernessCalcReasoningTimeNs += System.nanoTime() - propCalcReasoningStart2; - newNode.setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.REASONER); - if(quality != -1) { - // quality is the number of misclassifications (if it is not too weak) + newNode + .setQualityEvaluationMethod(ExampleBasedNode.QualityEvaluationMethod.REASONER); + if (quality != -1) { + // quality is the number of misclassifications (if it is + // not too weak) quality = (nrOfPositiveExamples - newlyCoveredPositives.size()) - + newlyCoveredNegatives.size(); + + newlyCoveredNegatives.size(); newNode.setCoveredExamples(newlyCoveredPositives, newlyCoveredNegatives); } } - if(quality == -1) { + if (quality == -1) { newNode.setTooWeak(true); // Blacklist für too weak concepts tooWeakList.add(refinement); } else { // Lösung gefunden - if(quality >= 0 && quality<=allowedMisclassifications && !posOnly) { + if (quality >= 0 && quality <= allowedMisclassifications && !posOnly) { solutionFound = true; solutions.add(refinement); - } - + } newCandidates.add(newNode); - + // we need to make sure that all positives are covered // before adding something to the overly general list - if((newNode.getCoveredPositives().size() == nrOfPositiveExamples) && quality == nrOfNegativeExamples) + if ((newNode.getCoveredPositives().size() == nrOfPositiveExamples) + && quality == nrOfNegativeExamples) overlyGeneralList.add(refinement); - + } - -// System.out.println(newNode.getConcept() + " " + quality); + + // System.out.println(newNode.getConcept() + " " + quality); node.addChild(newNode); - } + } } - + // es sind jetzt noch alle Konzepte übrig, die improper refinements sind - // auf jedem dieser Konzepte wird die Funktion erneut aufgerufen, da sich + // auf jedem dieser Konzepte wird die Funktion erneut aufgerufen, da + // sich // proper refinements ergeben könnten - for(Description refinement : refinements) { + for (Description refinement : refinements) { // for(int i=0; i<=recDepth; i++) - // System.out.print(" "); -// System.out.println("call: " + refinement + " [maxLength " + maxLength + ", rec depth " + recDepth + "]"); - - // check for redundancy (otherwise we may run into very time-intensive loops, + // System.out.print(" "); + // System.out.println("call: " + refinement + " [maxLength " + + // maxLength + ", rec depth " + recDepth + "]"); + + // check for redundancy (otherwise we may run into very + // time-intensive loops, // see planned JUnit test case $x) - + long redundancyCheckTimeNsStart = System.nanoTime(); boolean redundant = properRefinements.contains(refinement); redundancyCheckTimeNs += System.nanoTime() - redundancyCheckTimeNsStart; - - if(!redundant) - extendNodeProper(node, refinement, maxLength, recDepth+1); + + if (!redundant) + extendNodeProper(node, refinement, maxLength, recDepth + 1); // for(int i=0; i<=recDepth; i++) - // System.out.print(" "); - // System.out.println("finished: " + refinement + " [maxLength " + maxLength + "]"); -// System.exit(0); + // System.out.print(" "); + // System.out.println("finished: " + refinement + " [maxLength " + + // maxLength + "]"); + // System.exit(0); } } - + private void printStatistics(boolean finalStats) { - // TODO: viele Tests haben ergeben, dass man nie 100% mit der Zeitmessung abdecken - // kann (zum einen weil Stringausgabe verzögert erfolgt und zum anderen weil - // Funktionsaufrufe, garbage collection, Zeitmessung selbst auch Zeit benötigt); + // TODO: viele Tests haben ergeben, dass man nie 100% mit der + // Zeitmessung abdecken + // kann (zum einen weil Stringausgabe verzögert erfolgt und zum anderen + // weil + // Funktionsaufrufe, garbage collection, Zeitmessung selbst auch Zeit + // benötigt); // es empfiehlt sich folgendes Vorgehen: // - Messung der Zeit eines Loops im Algorithmus // - Messung der Zeit für alle node extensions innerhalb eines Loops @@ -831,181 +870,232 @@ // ... momentan kann es aber auch erstmal so lassen long algorithmRuntime = System.nanoTime() - algorithmStartTime; - - if(!finalStats) { - + + if (!finalStats) { + ExampleBasedNode bestNode = candidatesStable.last(); -// double accuracy = 100 * ((bestNode.getCoveredPositives().size() -// + nrOfNegativeExamples - bestNode.getCoveredNegatives().size())/(double)nrOfExamples); + // double accuracy = 100 * ((bestNode.getCoveredPositives().size() + // + nrOfNegativeExamples - + // bestNode.getCoveredNegatives().size())/(double)nrOfExamples); // Refinementoperator auf Konzept anwenden -// String bestNodeString = "currently best node: " + bestNode + " accuracy: " + df.format(accuracy) + "%"; - logger.debug("start node: " + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); - String bestNodeString = "currently best node: " + bestNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI); - String bestNodeStringKBSyntax = "currently best node KBSyntax: " + bestNode.getConcept().toKBSyntaxString(); - + // String bestNodeString = "currently best node: " + bestNode + " + // accuracy: " + df.format(accuracy) + "%"; + logger.debug("start node: " + + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, + baseURI)); + String bestNodeString = "currently best node: " + + bestNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, + baseURI); + String bestNodeStringKBSyntax = "currently best node KBSyntax: " + + bestNode.getConcept().toKBSyntaxString(); + // searchTree += bestNodeString + "\n"; logger.debug(bestNodeString); 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); + 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); + logger.debug(expandedNodeString); logger.debug("algorithm runtime " + Helper.prettyPrintNanoSeconds(algorithmRuntime)); logger.debug("size of candidate set: " + candidates.size()); - // System.out.println("properness max recursion depth: " + maxRecDepth); - // System.out.println("max. number of one-step refinements: " + maxNrOfRefinements); - // System.out.println("max. number of children of a node: " + maxNrOfChildren); - logger.debug("subsumption time: " + Helper.prettyPrintNanoSeconds(rs.getSubsumptionReasoningTimeNs())); - logger.debug("instance check time: " + Helper.prettyPrintNanoSeconds(rs.getInstanceCheckReasoningTimeNs())); - logger.debug("retrieval time: " + Helper.prettyPrintNanoSeconds(rs.getRetrievalReasoningTimeNs())); + // System.out.println("properness max recursion depth: " + + // maxRecDepth); + // System.out.println("max. number of one-step refinements: " + + // maxNrOfRefinements); + // System.out.println("max. number of children of a node: " + + // maxNrOfChildren); + logger.debug("subsumption time: " + + Helper.prettyPrintNanoSeconds(rs.getSubsumptionReasoningTimeNs())); + logger.debug("instance check time: " + + Helper.prettyPrintNanoSeconds(rs.getInstanceCheckReasoningTimeNs())); + logger.debug("retrieval time: " + + Helper.prettyPrintNanoSeconds(rs.getRetrievalReasoningTimeNs())); } - - if(computeBenchmarkInformation) { - + + if (computeBenchmarkInformation) { + long reasoningTime = rs.getOverallReasoningTimeNs(); - double reasoningPercentage = 100 * reasoningTime/(double)algorithmRuntime; - long propWithoutReasoning = propernessCalcTimeNs-propernessCalcReasoningTimeNs; - double propPercentage = 100 * propWithoutReasoning/(double)algorithmRuntime; - double deletionPercentage = 100 * childConceptsDeletionTimeNs/(double)algorithmRuntime; + double reasoningPercentage = 100 * reasoningTime / (double) algorithmRuntime; + long propWithoutReasoning = propernessCalcTimeNs - propernessCalcReasoningTimeNs; + double propPercentage = 100 * propWithoutReasoning / (double) algorithmRuntime; + double deletionPercentage = 100 * childConceptsDeletionTimeNs + / (double) algorithmRuntime; long subTime = rs.getSubsumptionReasoningTimeNs(); - double subPercentage = 100 * subTime/(double)algorithmRuntime; - double refinementPercentage = 100 * refinementCalcTimeNs/(double)algorithmRuntime; - double redundancyCheckPercentage = 100 * redundancyCheckTimeNs/(double)algorithmRuntime; - double evaluateSetCreationTimePercentage = 100 * evaluateSetCreationTimeNs/(double)algorithmRuntime; - double improperConceptsRemovalTimePercentage = 100 * improperConceptsRemovalTimeNs/(double)algorithmRuntime; - double mComputationTimePercentage = 100 * operator.mComputationTimeNs/(double)algorithmRuntime; - double topComputationTimePercentage = 100 * operator.topComputationTimeNs/(double)algorithmRuntime; - double cleanTimePercentage = 100 * ConceptTransformation.cleaningTimeNs/(double)algorithmRuntime; - double onnfTimePercentage = 100 * ConceptTransformation.onnfTimeNs/(double)algorithmRuntime; - double shorteningTimePercentage = 100 * ConceptTransformation.shorteningTimeNs/(double)algorithmRuntime; - + double subPercentage = 100 * subTime / (double) algorithmRuntime; + double refinementPercentage = 100 * refinementCalcTimeNs / (double) algorithmRuntime; + double redundancyCheckPercentage = 100 * redundancyCheckTimeNs + / (double) algorithmRuntime; + double evaluateSetCreationTimePercentage = 100 * evaluateSetCreationTimeNs + / (double) algorithmRuntime; + double improperConceptsRemovalTimePercentage = 100 * improperConceptsRemovalTimeNs + / (double) algorithmRuntime; + double mComputationTimePercentage = 100 * operator.mComputationTimeNs + / (double) algorithmRuntime; + double topComputationTimePercentage = 100 * operator.topComputationTimeNs + / (double) algorithmRuntime; + double cleanTimePercentage = 100 * ConceptTransformation.cleaningTimeNs + / (double) algorithmRuntime; + double onnfTimePercentage = 100 * ConceptTransformation.onnfTimeNs + / (double) algorithmRuntime; + double shorteningTimePercentage = 100 * ConceptTransformation.shorteningTimeNs + / (double) algorithmRuntime; + logger.debug("reasoning percentage: " + df.format(reasoningPercentage) + "%"); - logger.debug(" subsumption check time: " + df.format(subPercentage) + "%"); - logger.debug("proper calculation percentage (wo. reasoning): " + df.format(propPercentage) + "%"); + logger.debug(" subsumption check time: " + df.format(subPercentage) + "%"); + logger.debug("proper calculation percentage (wo. reasoning): " + + df.format(propPercentage) + "%"); logger.debug(" deletion time percentage: " + df.format(deletionPercentage) + "%"); - logger.debug(" refinement calculation percentage: " + df.format(refinementPercentage) + "%"); - logger.debug(" m calculation percentage: " + df.format(mComputationTimePercentage) + "%"); - logger.debug(" top calculation percentage: " + df.format(topComputationTimePercentage) + "%"); - logger.debug(" redundancy check percentage: " + df.format(redundancyCheckPercentage) + "%"); - logger.debug(" evaluate set creation time percentage: " + df.format(evaluateSetCreationTimePercentage) + "%"); - logger.debug(" improper concepts removal time percentage: " + df.format(improperConceptsRemovalTimePercentage) + "%"); + logger.debug(" refinement calculation percentage: " + df.format(refinementPercentage) + + "%"); + logger.debug(" m calculation percentage: " + df.format(mComputationTimePercentage) + + "%"); + logger.debug(" top calculation percentage: " + + df.format(topComputationTimePercentage) + "%"); + logger.debug(" redundancy check percentage: " + df.format(redundancyCheckPercentage) + + "%"); + logger.debug(" evaluate set creation time percentage: " + + df.format(evaluateSetCreationTimePercentage) + "%"); + logger.debug(" improper concepts removal time percentage: " + + df.format(improperConceptsRemovalTimePercentage) + "%"); logger.debug("clean time percentage: " + df.format(cleanTimePercentage) + "%"); logger.debug("onnf time percentage: " + df.format(onnfTimePercentage) + "%"); - logger.debug("shortening time percentage: " + df.format(shorteningTimePercentage) + "%"); + logger + .debug("shortening time percentage: " + df.format(shorteningTimePercentage) + + "%"); } - - logger.debug("properness tests (reasoner/short concept/too weak list): " + propernessTestsReasoner + "/" + propernessTestsAvoidedByShortConceptConstruction + + logger.debug("properness tests (reasoner/short concept/too weak list): " + + propernessTestsReasoner + "/" + propernessTestsAvoidedByShortConceptConstruction + "/" + propernessTestsAvoidedByTooWeakList); - logger.debug("concept tests (reasoner/too weak list/overly general list/redundant concepts): " + conceptTestsReasoner + "/" - + conceptTestsTooWeakList + "/" + conceptTestsOverlyGeneralList + "/" + redundantConcepts); + logger + .debug("concept tests (reasoner/too weak list/overly general list/redundant concepts): " + + conceptTestsReasoner + + "/" + + conceptTestsTooWeakList + + "/" + + conceptTestsOverlyGeneralList + "/" + redundantConcepts); } - -// @SuppressWarnings({"unused"}) -// private int coveredNegativesOrTooWeak(Description concept) { -// if(posOnly) -// return posOnlyLearningProblem.coveredPseudoNegativeExamplesOrTooWeak(concept); -// else -// return learningProblem.coveredNegativeExamplesOrTooWeak(concept); -// } - -// private int getNumberOfNegatives() { -// if(posOnly) -// return posOnlyLearningProblem.getPseudoNegatives().size(); -// else -// return learningProblem.getNegativeExamples().size(); -// } - + + // @SuppressWarnings({"unused"}) + // private int coveredNegativesOrTooWeak(Description concept) { + // if(posOnly) + // return + // posOnlyLearningProblem.coveredPseudoNegativeExamplesOrTooWeak(concept); + // else + // return learningProblem.coveredNegativeExamplesOrTooWeak(concept); + // } + + // private int getNumberOfNegatives() { + // if(posOnly) + // return posOnlyLearningProblem.getPseudoNegatives().size(); + // else + // return learningProblem.getNegativeExamples().size(); + // } + private boolean containsTooWeakElement(Intersection mc) { - for(Description child : mc.getChildren()) { - if(tooWeakList.contains(child)) + for (Description child : mc.getChildren()) { + if (tooWeakList.contains(child)) return true; } return false; } - + private boolean containsOverlyGeneralElement(Union md) { - for(Description child : md.getChildren()) { - if(overlyGeneralList.contains(child)) + for (Description child : md.getChildren()) { + if (overlyGeneralList.contains(child)) return true; } return false; - } - + } + // TODO: investigate whether it makes sense not to store all individuals // in the nodes, but instead perform instance checks in tree traversal // (it is only run in large intervals so it shouldn't be too expensive) private void traverseTree() { -// ExampleBasedNode startNode = candidatesStable.last(); + // ExampleBasedNode startNode = candidatesStable.last(); ExampleBasedNode startNode = findBestTraversalStartNode(); Description currentDescription = startNode.getConcept(); Set<Individual> currentCoveredPos = startNode.getCoveredPositives(); Set<Individual> currentCoveredNeg = startNode.getCoveredNegatives(); double currentAccuracy = startNode.getAccuracy(nrOfPositiveExamples, nrOfNegativeExamples); - int currentMisclassifications = nrOfPositiveExamples - currentCoveredPos.size() + currentCoveredNeg.size(); - logger.debug("tree traversal start node " + startNode.getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + int currentMisclassifications = nrOfPositiveExamples - currentCoveredPos.size() + + currentCoveredNeg.size(); + logger.debug("tree traversal start node " + + startNode + .getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); logger.debug("tree traversal start accuracy: " + currentAccuracy); - int i=0; + int i = 0; // start from the most promising nodes NavigableSet<ExampleBasedNode> reverseView = candidatesStable.descendingSet(); - for(ExampleBasedNode currNode : reverseView) { + for (ExampleBasedNode currNode : reverseView) { // compute covered positives and negatives SortedSet<Individual> newCoveredPositives = new TreeSet<Individual>(currentCoveredPos); newCoveredPositives.retainAll(currNode.getCoveredPositives()); SortedSet<Individual> newCoveredNegatives = new TreeSet<Individual>(currentCoveredNeg); newCoveredNegatives.retainAll(currNode.getCoveredNegatives()); - + // compute the accuracy we would get by adding this node - double accuracy = (newCoveredPositives.size() + nrOfNegativeExamples - newCoveredNegatives.size())/(double)(nrOfPositiveExamples+nrOfNegativeExamples); - int misclassifications = nrOfPositiveExamples - newCoveredPositives.size() + newCoveredNegatives.size(); + double accuracy = (newCoveredPositives.size() + nrOfNegativeExamples - newCoveredNegatives + .size()) + / (double) (nrOfPositiveExamples + nrOfNegativeExamples); + int misclassifications = nrOfPositiveExamples - newCoveredPositives.size() + + newCoveredNegatives.size(); int misclassifiedPositives = nrOfPositiveExamples - newCoveredPositives.size(); - + int lostPositives = currentCoveredPos.size() - newCoveredPositives.size(); - - // TODO: maybe we should also consider a minimum improvement when adding something - // otherwise we could overfit - // we ... [truncated message content] |
From: <sk...@us...> - 2008-08-20 13:12:59
|
Revision: 1107 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1107&view=rev Author: sknappe Date: 2008-08-20 13:12:53 +0000 (Wed, 20 Aug 2008) Log Message: ----------- corrected mistake with classes (one article can have several classes, had only one class for each article) changed database accordingly(changed database schema and also the Pagerankcalculation) the search now works correct with correct tag cloud, you can search for articles, in articles you can search for instances of the same class like the article or you can show a class view of one of the classes, the article has as type in the class view you can see the class you selected, all father classes and all child classes in select boxes, you can show the class view of these father or child classes or you can show instances of father, child or current class added box last classes, is the same as last articles for classes deleted the navigate box, because I now use the class view, the tree I showed in navigate box couldn't handel 11k classes in one level (Entity has ca. 11k subclasses) and it was too small to work properly with, new class view should be better minor bugfixing Modified Paths: -------------- trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php trunk/src/dbpedia-navigator/ajax_search.php trunk/src/dbpedia-navigator/helper_functions.php trunk/src/dbpedia-navigator/index.php trunk/src/dbpedia-navigator/js/ajax.js trunk/src/dbpedia-navigator/localhost.sql trunk/src/dbpedia-navigator/processTreeMenu.php Added Paths: ----------- trunk/src/dbpedia-navigator/ajax_get_class.php Added: trunk/src/dbpedia-navigator/ajax_get_class.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_get_class.php (rev 0) +++ trunk/src/dbpedia-navigator/ajax_get_class.php 2008-08-20 13:12:53 UTC (rev 1107) @@ -0,0 +1,117 @@ +<?php + include('helper_functions.php'); + + $class=$_POST['class']; + $fromCache=$_POST['cache']; + if (isset($_POST['path'])) $path=$_POST['path']; + else $path=""; + + session_start(); + if (isset($_SESSION['classes'])) $classes=$_SESSION['classes']; + session_write_close(); + + + //if article is in session, get it out of the session + if (isset($classes)){ + foreach ($classes as $key => $value) + { + if ($value['uri']==$uri){ + $fromCache=$key; + break; + } + } + } + + //initialize the content variables + $content=""; + $lastClasses=""; + $title=""; + + //get the article + //if $fromCache is -1, everything is normal + //if $fromCache is >=0, the article is taken out of the cache + if ($fromCache<0) { + //if there are errors see catch block + try{ + mysql_connect('localhost','navigator','dbpedia'); + mysql_select_db("navigator_db"); + + //build Select box with Child Classes + $query="SELECT child FROM classhierarchy WHERE father='$class'"; + $res=mysql_query($query); + $childClasses=''; + while ($result=mysql_fetch_array($res)){ + $query="SELECT label FROM categories WHERE category='".$result['child']."' LIMIT 1"; + $res2=mysql_query($query); + $result2=mysql_fetch_array($res2); + $identify=urldecode(str_replace("_"," ",substr (strrchr ($result['child'], "/"), 1))); + if ((strlen($identify)+strlen($result2['label']))>100) $identify=substr($identify,0,100-strlen($result2['label'])); + $childClasses.='<option value="'.$result['child'].'">'.utf8_to_html($result2['label']).' ('.$identify.')</option>'; + } + if (strlen($childClasses)>0) + $childClasses='<select size="1" style="width:500px" id="childSelect">'.$childClasses.'</select>'; + + + //build Select box with Father Classes + $query="SELECT father FROM classhierarchy WHERE child='$class'"; + $res=mysql_query($query); + $fatherClasses=''; + while ($result=mysql_fetch_array($res)){ + $query="SELECT label FROM categories WHERE category='".$result['father']."' LIMIT 1"; + $res2=mysql_query($query); + $result2=mysql_fetch_array($res2); + $identify=urldecode(str_replace("_"," ",substr (strrchr ($result['father'], "/"), 1))); + if ((strlen($identify)+strlen($result2['label']))>100) $identify=substr($identify,0,100-strlen($result2['label'])); + $fatherClasses.='<option value="'.$result['father'].'">'.utf8_to_html($result2['label']).' ('.$identify.')</option>'; + } + if (strlen($fatherClasses)>0) + $fatherClasses='<select size="1" style="width:500px" id="fatherSelect">'.$fatherClasses.'</select>'; + + //build Title + $query="SELECT label FROM categories WHERE category='$class' LIMIT 1"; + $res=mysql_query($query); + $result=mysql_fetch_array($res); + $title=$result['label']; + + $content.=getClassView($fatherClasses,$childClasses,$title,$class); + + //Restart the Session + session_start(); + + //store class in session, to navigate between last 5 classes quickly + $contentArray=array('content' => $content,'title' => $title,'uri' => $class); + if (!isset($_SESSION['nextClass'])){ + $_SESSION['nextClass']=0; + $_SESSION['classes']=array(); + } + if ($_SESSION['nextClass']==5) $_SESSION['nextClass']=0; + $_SESSION['classes'][$_SESSION['nextClass']]=$contentArray; + $_SESSION['currentClass']=$_SESSION['nextClass']; + $_SESSION['nextClass']++; + } catch (Exception $e) + { + $content="An error occured while trying to get Class information. Please try again later."; + $title="Class not found"; + } + } + else { + session_start(); + //Article is in session + $content=$_SESSION['classes'][$fromCache]['content']; + $title=$_SESSION['classes'][$fromCache]['title']; + } + + //Build lastClasses + if (isset($_SESSION['classes'])){ + foreach ($_SESSION['classes'] as $key => $value) + { + $lastClasses.="<a href=\"\" onclick=\"get_class('class=&cache=".$key."');return false;\">".$value['title']."</a><br/>"; + } + } + + print $content; + print '$$'; + print "Class: ".$title; + print '$$'; + print $lastClasses; +?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php 2008-08-20 12:13:48 UTC (rev 1106) +++ trunk/src/dbpedia-navigator/ajax_get_subjects_from_category.php 2008-08-20 13:12:53 UTC (rev 1107) @@ -11,15 +11,18 @@ mysql_connect('localhost','navigator','dbpedia'); mysql_select_db("navigator_db"); - $query="SELECT name, label FROM rank WHERE category='$category' ORDER BY number DESC LIMIT ".$number; + $query="SELECT name FROM articlecategories WHERE category='$category' ORDER BY number DESC LIMIT ".$number; $res=mysql_query($query); $bestsearches=""; if (mysql_num_rows($res)>0){ $names=array(); $labels=array(); while ($result=mysql_fetch_array($res)){ - $labels[]=$result['label']; - $names[]=$result['name']; + $names[]=$result['name']; + $query="SELECT label FROM rank WHERE name='".$result['name']."' LIMIT 1"; + $res2=mysql_query($query); + $result2=mysql_fetch_array($res2); + $labels[]=$result2['label']; } $content.=getCategoryResultsTable($names,$labels,$category,$label,$number); $bestsearches=getBestSearches($names,$labels); Modified: trunk/src/dbpedia-navigator/ajax_search.php =================================================================== --- trunk/src/dbpedia-navigator/ajax_search.php 2008-08-20 12:13:48 UTC (rev 1106) +++ trunk/src/dbpedia-navigator/ajax_search.php 2008-08-20 13:12:53 UTC (rev 1107) @@ -2,18 +2,14 @@ include('helper_functions.php'); $label=$_POST['label']; - $list=$_POST['list']; $number=$_POST['number']; - //get parts of the list - $checkedInstances=preg_split("[,]",$list,-1,PREG_SPLIT_NO_EMPTY); - //initialise content $content=""; mysql_connect('localhost','navigator','dbpedia'); mysql_select_db("navigator_db"); - $query="SELECT name, label, category FROM rank WHERE MATCH (label) AGAINST ('$label') ORDER BY number DESC LIMIT ".$number; + $query="SELECT name, label FROM rank WHERE MATCH (label) AGAINST ('$label') ORDER BY number DESC LIMIT ".$number; $res=mysql_query($query); $bestsearches=""; if (mysql_num_rows($res)>0){ @@ -25,20 +21,30 @@ while ($result=mysql_fetch_array($res)){ $labels[]=$result['label']; $names[]=$result['name']; - if (!isset($result['category'])){ - $result['category']="NoCategory"; - $result2['label']="No Category"; + $query="SELECT category FROM articlecategories WHERE name='".$result['name']."'"; + $res3=mysql_query($query); + $arr=array(); + while ($result3=mysql_fetch_array($res3)){ + $arr[]=$result3['category']; } + if (count($arr)==0){ + $arr[]="NoCategory"; + if (!isset($tags['NoCategory'])) $tags['NoCategory']=1; + else $tags['NoCategory']++; + if (!isset($catlabels['NoCategory'])) $catlabels['NoCategory']='No Category'; + } else { - $query="SELECT label FROM categories WHERE category='".$result['category']."' LIMIT 1"; - $res2=mysql_query($query); - $result2=mysql_fetch_array($res2); + for ($i=0;$i<count($arr);$i++){ + if (!isset($tags[$arr[$i]])) $tags[$arr[$i]]=1; + else $tags[$arr[$i]]++; + $query="SELECT label FROM categories WHERE category='".$arr[$i]."' LIMIT 1"; + $res2=mysql_query($query); + $result2=mysql_fetch_array($res2); + if (!isset($catlabels[$arr[$i]])) $catlabels[$arr[$i]]=$result2['label']; + } } - $classes[]=$result['category']; - if (!isset($tags[$result['category']])) $tags[$result['category']]=1; - else $tags[$result['category']]++; - if (!isset($catlabels[$result['category']])) $catlabels[$result['category']]=$result2['label']; + $classes[]=$arr; } $content.=getTagCloud($tags,$catlabels); $content.=getResultsTable($names,$labels,$classes,$number); Modified: trunk/src/dbpedia-navigator/helper_functions.php =================================================================== --- trunk/src/dbpedia-navigator/helper_functions.php 2008-08-20 12:13:48 UTC (rev 1106) +++ trunk/src/dbpedia-navigator/helper_functions.php 2008-08-20 13:12:53 UTC (rev 1107) @@ -50,7 +50,7 @@ { $ret="<p>These are your Searchresults. Show best "; for ($k=10;$k<125;){ - $ret.="<a href=\"#\" onclick=\"var list=tree.getAllChecked();search_it('label='+document.getElementById('label').value+'&list='+list+'&number=".$k."');return false;\""; + $ret.="<a href=\"#\" onclick=\"search_it('label='+document.getElementById('label').value+'&number=".$k."');return false;\""; if ($k==$number) $ret.=" style=\"text-decoration:none;\""; else $ret.=" style=\"text-decoration:underline;\""; $ret.=">".($k)."</a>"; @@ -69,7 +69,13 @@ $name=$names[$i*25+$j]; $label=$labels[$i*25+$j]; if (strlen($label)==0) $label=urldecode(str_replace("_"," ",substr (strrchr ($name, "/"), 1))); - $class=$classes[$i*25+$j]; + $class=""; + $k=0; + foreach ($classes[$i*25+$j] as $cl){ + if ($k!=count($classes[$i*25+$j])-1) $class.=$cl.' '; + else $class.=$cl; + $k++; + } $ret.='<p style="display:'.$display.'"> '.($i*25+$j+1).'. <a href="" class="'.$class.'" onclick="get_article(\'label='.$name.'&cache=-1\');return false;">'.utf8_to_html($label).'</a></p>'; } $i++; @@ -231,15 +237,14 @@ function formatClassArray($ar) { mysql_connect('localhost','navigator','dbpedia'); mysql_select_db("navigator_db"); - $string=""; + $string="<ul>"; for($i=0; $i<count($ar); $i++) { $query="SELECT label FROM categories WHERE category='".$ar[$i]['value']."' LIMIT 1"; $res=mysql_query($query); $result=mysql_fetch_array($res); - if ($ar[$i]['value']!="http://xmlns.com/foaf/0.1/Person"&&strlen($string)>0) $string .= ', ' . formatClass($ar[$i]['value'],$result['label']); - else if ($ar[$i]['value']!="http://xmlns.com/foaf/0.1/Person"&&strlen($string)==0) $string .= formatClass($ar[$i]['value'],$result['label']); + if ($ar[$i]['value']!="http://xmlns.com/foaf/0.1/Person") $string .= '<li>' . formatClass($ar[$i]['value'],$result['label']).'</li>'; } - return $string; + return $string."</ul>"; } // format a class nicely, i.e. link to it and possibly display @@ -247,7 +252,7 @@ function formatClass($className,$label) { $yagoPrefix = 'http://dbpedia.org/class/yago/'; if(substr($className,0,30)==$yagoPrefix) { - return '<a href="#" onclick="getSubjectsFromCategory(\'category='.$className.'&label='.$label.'&number=10\');">'.$label.'</a>'; + return $label.' <a href="#" onclick="getSubjectsFromCategory(\'category='.$className.'&label='.$label.'&number=10\');">→ search Instances</a> <a href="#" onclick="get_class(\'class='.$className.'&cache=-1\');">→ show Class in Hierarchy</a>'; // DBpedia is Linked Data, so it makes always sense to link it // ToDo: instead of linking to other pages, the resource should better // be openened within DBpedia Navigator @@ -280,4 +285,47 @@ return $ret; } + +function getClassView($fathers,$childs,$title,$class) +{ + $ret='This is the class view. You can browse through the hierarchy and search for instances of classes.<br/><br/>'; + $childButtons=true; + if (strlen($childs)==0){ + $childs='There are no Child classes'; + $childButtons=false; + } + $fatherButtons=true; + if (strlen($fathers)==0){ + $fathers='There are no Father classes'; + $fatherButtons=false; + } + + $ret.='<table border="0" style="text-align:left;width:100%">'; + $ret.='<tr><td style="width:90%"><b>Father classes</b></td></tr>'; + $ret.='<tr style="height:10px"><td></td></tr>'; + $ret.='<tr><td>'.$fathers.'</td></tr>'; + $ret.='<tr style="height:10px"><td></td></tr>'; + $ret.='<tr><td>'; + if ($fatherButtons) $ret.='<input style="width:70px" type="button" value="Instances" class="button" onclick="getSubjectsFromCategory(\'category=\'+document.getElementById(\'fatherSelect\').options[document.getElementById(\'fatherSelect\').selectedIndex].value+\'&label=\'+document.getElementById(\'fatherSelect\').options[document.getElementById(\'fatherSelect\').selectedIndex].innerHTML+\'&number=10\');" title="Search Instances of Father class."/> <input style="width:70px" type="button" value="Class" class="button" onclick="get_class(\'class=\'+document.getElementById(\'fatherSelect\').options[document.getElementById(\'fatherSelect\').selectedIndex].value+\'&cache=-1\');" title="Show Father class in class view."/>'; + $ret.='</td></tr>'; + $ret.='<tr style="height:20px"><td><hr/></td></tr>'; + $ret.='<tr><td><b>Current class</b></td></tr>'; + $ret.='<tr style="height:10px"><td></td></tr>'; + $ret.='<tr><td><b>'.$title.'</b></td></tr>'; + $ret.='<tr style="height:10px"><td></td></tr>'; + $ret.='<tr><td>'; + $ret.='<input style="width:70px" type="button" value="Instances" class="button" onclick="getSubjectsFromCategory(\'category='.$class.'&label='.$title.'&number=10\');" title="Search Instances of Shown class."/>'; + $ret.='</td></tr>'; + $ret.='<tr style="height:20px"><td><hr/></td></tr>'; + $ret.='<tr><td style="width:30%"><b>Child classes</b></td></tr>'; + $ret.='<tr style="height:10px"><td></td></tr>'; + $ret.='<tr><td>'.$childs.'</td></tr>'; + $ret.='<tr style="height:10px"><td></td></tr>'; + $ret.='<tr><td>'; + if ($childButtons) $ret.='<input style="width:70px" type="button" value="Instances" class="button" onclick="getSubjectsFromCategory(\'category=\'+document.getElementById(\'childSelect\').options[document.getElementById(\'childSelect\').selectedIndex].value+\'&label=\'+document.getElementById(\'childSelect\').options[document.getElementById(\'childSelect\').selectedIndex].innerHTML+\'&number=10\');" title="Search Instances of Child class."/> <input style="width:70px" type="button" value="Class" class="button" onclick="get_class(\'class=\'+document.getElementById(\'childSelect\').options[document.getElementById(\'childSelect\').selectedIndex].value+\'&cache=-1\');" title="Show Child class in class view."/>'; + $ret.='</td></tr>'; + $ret.='</table>'; + + return $ret; +} ?> \ No newline at end of file Modified: trunk/src/dbpedia-navigator/index.php =================================================================== --- trunk/src/dbpedia-navigator/index.php 2008-08-20 12:13:48 UTC (rev 1106) +++ trunk/src/dbpedia-navigator/index.php 2008-08-20 13:12:53 UTC (rev 1107) @@ -43,9 +43,7 @@ <link rel="stylesheet" type="text/css" href="<?php print $path;?>treemenu/dhtmlxtree.css"> <script src="http://maps.google.com/maps?file=api&v=2&key=<?php print $settings->googleMapsKey;?>" type="text/javascript"></script> - <script src="<?php print $path;?>treemenu/dhtmlxcommon.js"></script> - <script src="<?php print $path;?>treemenu/dhtmlxtree.js"></script> - <script src="<?php print $path;?>js/ajax.js"></script> + <script src="<?php print $path;?>js/ajax.js"></script> <script type="text/javascript"> function setRunning(running) { @@ -64,6 +62,51 @@ map.addOverlay(marker); } } + + function show_results(class, number) + { + var links=document.getElementById('results').getElementsByTagName('p'); + var j=0; + var names; + var hasClass; + for (var i=0;i<links.length;i++){ + if (class=='all'){ + if ((j+1)>number&&j<(number+25)) links[i].style.display='block'; + else links[i].style.display='none'; + j++; + } + else{ + names=links[i].getElementsByTagName('a')[0].className.split(' '); + hasClass=false; + for (var k=0;k<names.length;k++){ + if (names[k]==class){ + hasClass=true; + break; + } + } + if (hasClass){ + if ((j+1)>number&&j<(number+25)) links[i].style.display='block'; + else links[i].style.display='none'; + j++; + } + else links[i].style.display='none'; + } + } + if (j<number){ + show_results(class,0); + return; + } + + var sitenumbers=document.getElementById('sitenumbers').getElementsByTagName('span'); + for (var i=0;i<sitenumbers.length;i++){ + if ((parseInt(sitenumbers[i].getElementsByTagName('a')[0].innerHTML)-1)*25==number) sitenumbers[i].getElementsByTagName('a')[0].style.textDecoration='none'; + else sitenumbers[i].getElementsByTagName('a')[0].style.textDecoration='underline'; + if ((parseInt(sitenumbers[i].getElementsByTagName('a')[0].innerHTML)-1)*25>=j) + sitenumbers[i].style.display='none'; + else + sitenumbers[i].style.display='inline'; + } + } </script> </head> <body <?php print $onLoad;?>> @@ -83,7 +126,7 @@ <!-- Search:<br/> --> <form onsubmit="get_article('label='+document.getElementById('label').value+'&cache=-1');return false;"> <input type="text" name="label" id="label"/><br/> - <input type="button" value="Article" class="button" onclick="get_article('label='+document.getElementById('label').value+'&cache=-1');return false;" title="Search an article with that name."/> <input type="button" value="Search" class="button" onclick="var list=tree.getAllChecked();search_it('label='+document.getElementById('label').value+'&list='+list+'&number=10');return false;" title="Search a number of articles related to that name."/> + <input type="button" value="Article" class="button" onclick="get_article('label='+document.getElementById('label').value+'&cache=-1');return false;" title="Search an article with that name."/> <input type="button" value="Search" class="button" onclick="search_it('label='+document.getElementById('label').value+'&number=10');return false;" title="Search a number of articles related to that name."/> <!-- <input type="button" value="Fulltext" class="button" onclick=""/> --> </form> </div> <!-- boxcontent --> @@ -96,32 +139,6 @@ </div> <!-- boxcontent --> </div> <!-- box --> - <div class="box" id="NavigationBox"> - <div class="boxtitle" style="cursor:help;" title="Navigate through the Class hierarchy and show instances of that class.">Navigate</div> - <div class="boxcontent"> - <div id="treeboxbox_tree" style="height:218px;overflow:auto;"> - </div> - </div> <!-- boxcontent --> - </div> <!-- box --> - <script> - tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0); - tree.setImagePath("<?php print $path;?>images/csh_bluebooks/"); - tree.enableCheckBoxes(1); - tree.setOnClickHandler(doOnClick); - function doOnClick(nodeId){ - var myUrl = tree.getUserData(nodeId,"myurl"); - var myLabel = tree.getUserData(nodeId,"mylabel"); - getSubjectsFromCategory('category='+myUrl+'&label='+myLabel+'&number=10'); - } - function myErrorHandler(type, desc, erData){ - alert('An error occured while trying to navigate through Class Tree.\nPlease try again later.'); - } - dhtmlxError.catchError("ALL",myErrorHandler); - tree.setXMLAutoLoading("processTreeMenu.php"); - tree.loadXML("processTreeMenu.php?id=0"); - </script> - - <div class="box" id="credits"> <p>DBpedia Navigator is powered by ... <br /> <a href="http://dl-learner.org">DL-Learner</a><br /> @@ -169,6 +186,12 @@ <div class="boxcontent" id="lastarticles"> </div> <!-- boxcontent --> </div> <!-- box --> + + <div class="box" id="LastClassesBox" style="display:none"> + <div class="boxtitle" style="cursor:help;" title="Up to 5 classes, that were last displayed, are shown here.">Classes Last Viewed</div> + <div class="boxcontent" id="lastclasses"> + </div> <!-- boxcontent --> + </div> <!-- box --> </div><!-- rightSidebar --> Modified: trunk/src/dbpedia-navigator/js/ajax.js =================================================================== --- trunk/src/dbpedia-navigator/js/ajax.js 2008-08-20 12:13:48 UTC (rev 1106) +++ trunk/src/dbpedia-navigator/js/ajax.js 2008-08-20 13:12:53 UTC (rev 1107) @@ -53,7 +53,7 @@ document.getElementById('Negatives').innerHTML=response[4]; setRunning(false); if (response[1]=='Article not found'){ - setTimeout("var list=tree.getAllChecked();search_it('label='+document.getElementById('label').value+'&list='+list+'&number=10')",2000); + setTimeout("search_it('label='+document.getElementById('label').value+'&number=10')",2000); } else document.getElementById('LastArticlesBox').style.display='block'; @@ -65,33 +65,33 @@ XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); XhrObj.send(param); } - -function show_results(class, number) + +function get_class(param) { - var links=document.getElementById('results').getElementsByTagName('p'); - var j=0; - for (var i=0;i<links.length;i++){ - if (links[i].getElementsByTagName('a')[0].className==class||class=='all'){ - if ((j+1)>number&&j<(number+25)) links[i].style.display='block'; - else links[i].style.display='none'; - j++; - } - else links[i].style.display='none'; + if (document.all){ + //IE + var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); } - if (j<number){ - show_results(class,0); - return; + else{ + //Mozilla + var XhrObj = new XMLHttpRequest(); } - var sitenumbers=document.getElementById('sitenumbers').getElementsByTagName('span'); - for (var i=0;i<sitenumbers.length;i++){ - if ((parseInt(sitenumbers[i].getElementsByTagName('a')[0].innerHTML)-1)*25==number) sitenumbers[i].getElementsByTagName('a')[0].style.textDecoration='none'; - else sitenumbers[i].getElementsByTagName('a')[0].style.textDecoration='underline'; - if ((parseInt(sitenumbers[i].getElementsByTagName('a')[0].innerHTML)-1)*25>=j) - sitenumbers[i].style.display='none'; - else - sitenumbers[i].style.display='inline'; + XhrObj.open("POST",'ajax_get_class.php'); + + XhrObj.onreadystatechange = function() + { + if (XhrObj.readyState == 4 && XhrObj.status == 200){ + var response = XhrObj.responseText.split('$$'); + document.getElementById('articlecontent').innerHTML=response[0]; + document.getElementById('ArticleTitle').innerHTML=response[1]; + document.getElementById('lastclasses').innerHTML=response[2]; + document.getElementById('LastClassesBox').style.display='block'; + } } + + XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); + XhrObj.send(param); } function toPositive(param) @@ -146,79 +146,79 @@ XhrObj.send(param); } - function clearPositives() - { - if (document.all){ - //IE - var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); - } - else{ - //Mozilla - var XhrObj = new XMLHttpRequest(); - } +function clearPositives() +{ + if (document.all){ + //IE + var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + else{ + //Mozilla + var XhrObj = new XMLHttpRequest(); + } - XhrObj.open("POST",'ajax_clear_positives.php'); + XhrObj.open("POST",'ajax_clear_positives.php'); - XhrObj.onreadystatechange = function() - { - if (XhrObj.readyState == 4 && XhrObj.status == 200){ - document.getElementById('Positives').innerHTML = XhrObj.responseText; - } - } + XhrObj.onreadystatechange = function() + { + if (XhrObj.readyState == 4 && XhrObj.status == 200){ + document.getElementById('Positives').innerHTML = XhrObj.responseText; + } + } - XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); - XhrObj.send(); - } + XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); + XhrObj.send(); +} - function clearNegatives() - { - if (document.all){ - //IE - var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); - } - else{ - //Mozilla - var XhrObj = new XMLHttpRequest(); - } +function clearNegatives() +{ + if (document.all){ + //IE + var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + else{ + //Mozilla + var XhrObj = new XMLHttpRequest(); + } + + XhrObj.open("POST",'ajax_clear_negatives.php'); - XhrObj.open("POST",'ajax_clear_negatives.php'); - - XhrObj.onreadystatechange = function() - { - if (XhrObj.readyState == 4 && XhrObj.status == 200){ - document.getElementById('Negatives').innerHTML = XhrObj.responseText; - } - } - - XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); - XhrObj.send(); + XhrObj.onreadystatechange = function() + { + if (XhrObj.readyState == 4 && XhrObj.status == 200){ + document.getElementById('Negatives').innerHTML = XhrObj.responseText; } + } - function removePosInterest(param) - { - if (document.all){ - //IE - var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); - } - else{ - //Mozilla - var XhrObj = new XMLHttpRequest(); - } + XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); + XhrObj.send(); +} + +function removePosInterest(param) +{ + if (document.all){ + //IE + var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + else{ + //Mozilla + var XhrObj = new XMLHttpRequest(); + } - XhrObj.open("POST",'ajax_remove_pos_interest.php'); + XhrObj.open("POST",'ajax_remove_pos_interest.php'); - XhrObj.onreadystatechange = function() - { - if (XhrObj.readyState == 4 && XhrObj.status == 200){ - var response = XhrObj.responseText.split('$$'); - document.getElementById('Positives').innerHTML=response[0]; - document.getElementById('Negatives').innerHTML=response[1]; - } - } + XhrObj.onreadystatechange = function() + { + if (XhrObj.readyState == 4 && XhrObj.status == 200){ + var response = XhrObj.responseText.split('$$'); + document.getElementById('Positives').innerHTML=response[0]; + document.getElementById('Negatives').innerHTML=response[1]; + } + } - XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); - XhrObj.send(param); - } + XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); + XhrObj.send(param); +} function removeNegInterest(param) { @@ -272,28 +272,28 @@ XhrObj.send(); } - function stopServerCall() - { - if (document.all){ - //IE - var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); - } - else{ - //Mozilla - var XhrObj = new XMLHttpRequest(); - } +function stopServerCall() +{ + if (document.all){ + //IE + var XhrObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + else{ + //Mozilla + var XhrObj = new XMLHttpRequest(); + } - XhrObj.open("POST",'ajax_stop_server_call.php'); + XhrObj.open("POST",'ajax_stop_server_call.php'); + + XhrObj.onreadystatechange = function() + { + if (XhrObj.readyState == 4 && XhrObj.status == 200){ + } + } - XhrObj.onreadystatechange = function() - { - if (XhrObj.readyState == 4 && XhrObj.status == 200){ - } - } - - XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); - XhrObj.send(); - } + XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); + XhrObj.send(); +} function getSubjectsFromConcept(param) { Modified: trunk/src/dbpedia-navigator/localhost.sql =================================================================== --- trunk/src/dbpedia-navigator/localhost.sql 2008-08-20 12:13:48 UTC (rev 1106) +++ trunk/src/dbpedia-navigator/localhost.sql 2008-08-20 13:12:53 UTC (rev 1107) @@ -1,50 +1,90 @@ --- phpMyAdmin SQL Dump --- version 2.9.1 --- http://www.phpmyadmin.net --- --- Host: localhost --- Erstellungszeit: 15. August 2008 um 15:51 --- Server Version: 5.0.67 --- PHP-Version: 5.2.5 --- --- Datenbank: `navigator_db` --- -CREATE DATABASE `navigator_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; -USE `navigator_db`; - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `categories` --- - -CREATE TABLE `categories` ( - `category` varchar(330) NOT NULL, - `label` varchar(330) NOT NULL, - PRIMARY KEY (`category`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- --- Daten für Tabelle `categories` --- - - --- -------------------------------------------------------- - --- --- Tabellenstruktur für Tabelle `rank` --- - -CREATE TABLE `rank` ( - `name` varchar(330) NOT NULL, - `number` int(8) NOT NULL default '0', - `label` varchar(330) default NULL, - `category` varchar(330) default NULL, - PRIMARY KEY (`name`), - FULLTEXT KEY `Label` (`label`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - --- --- Daten für Tabelle `rank` --- - +-- phpMyAdmin SQL Dump +-- version 2.9.1 +-- http://www.phpmyadmin.net +-- +-- Host: localhost +-- Erstellungszeit: 20. August 2008 um 12:05 +-- Server Version: 5.0.67 +-- PHP-Version: 5.2.5 +-- +-- Datenbank: `navigator_db` +-- +CREATE DATABASE `navigator_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; +USE `navigator_db`; + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `articlecategories` +-- + +CREATE TABLE `articlecategories` ( + `id` int(11) NOT NULL auto_increment, + `name` varchar(330) NOT NULL, + `category` varchar(330) NOT NULL, + `number` int(8) default '0', + PRIMARY KEY (`id`), + KEY `Category` (`category`), + KEY `Names` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- +-- Daten für Tabelle `articlecategories` +-- + + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `categories` +-- + +CREATE TABLE `categories` ( + `category` varchar(330) NOT NULL, + `label` varchar(330) NOT NULL, + PRIMARY KEY (`category`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Daten für Tabelle `categories` +-- + + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `classhierarchy` +-- + +CREATE TABLE `classhierarchy` ( + `id` int(11) NOT NULL auto_increment, + `father` varchar(330) NOT NULL, + `child` varchar(330) NOT NULL, + PRIMARY KEY (`id`), + KEY `Father` (`father`), + KEY `Child` (`child`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- +-- Daten für Tabelle `classhierarchy` +-- + + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `rank` +-- + +CREATE TABLE `rank` ( + `name` varchar(330) NOT NULL, + `label` varchar(330) default NULL, + `number` int(8) NOT NULL default '0', + PRIMARY KEY (`name`), + FULLTEXT KEY `Label` (`label`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Daten für Tabelle `rank` +-- + Modified: trunk/src/dbpedia-navigator/processTreeMenu.php =================================================================== --- trunk/src/dbpedia-navigator/processTreeMenu.php 2008-08-20 12:13:48 UTC (rev 1106) +++ trunk/src/dbpedia-navigator/processTreeMenu.php 2008-08-20 13:12:53 UTC (rev 1107) @@ -9,15 +9,24 @@ print("<tree id='".$url_var."'>"); if (!$url_var) print("<item child=\"1\" id=\"http://dbpedia.org/class/yago/Entity100001740\" text=\"Entity\"><userdata name='ud_block'>ud_data</userdata></item>"); else{ - require_once("DLLearnerConnection.php"); + /*require_once("DLLearnerConnection.php"); $sc=new DLLearnerConnection(); $ids=$sc->getIDs(); $sc=new DLLearnerConnection($ids[0],$ids[1]); - $categories=$sc->getYagoSubCategories($url_var); - foreach ($categories as $category){ - if ($category['subclasses']=="0") $child=0; - else $child=1; - print("<item child=\"".$child."\" id=\"".$category['value']."\" text=\"".$category['label']."\"><userdata name=\"myurl\">".$category['value']."</userdata><userdata name=\"mylabel\">".$category['label']."</userdata></item>"); + $categories=$sc->getYagoSubCategories($url_var);*/ + mysql_connect('localhost','navigator','dbpedia'); + mysql_select_db("navigator_db"); + $query="SELECT name FROM articlecategories WHERE category='$url_var' AND name LIKE 'http://dbpedia.org/class/yago/%' LIMIT 100"; + $res=mysql_query($query); + while ($result=mysql_fetch_array($res)){ + $query="SELECT name FROM articlecategories WHERE category='".$result['name']."' AND name LIKE 'http://dbpedia.org/class/yago/%' LIMIT 1"; + $res2=mysql_query($query); + if (mysql_num_rows($res2)>0) $child=1; + else $child=0; + $query="SELECT label FROM categories WHERE category='".$result['name']."' LIMIT 1"; + $res2=mysql_query($query); + $result2=mysql_fetch_array($res2); + print("<item child=\"".$child."\" id=\"".$result['name']."\" text=\"".$result2['label']."\"><userdata name=\"myurl\">".$result['name']."</userdata><userdata name=\"mylabel\">".$result2['label']."</userdata></item>"); } } print("</tree>"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-08-20 12:13:52
|
Revision: 1106 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1106&view=rev Author: jenslehmann Date: 2008-08-20 12:13:48 +0000 (Wed, 20 Aug 2008) Log Message: ----------- * changed command line logging: - one appender writes to console with log level info - a second appender writes to a file log/log.txt with log level debug * console output cleaned up a bit Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedNode.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/cli/Start.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedNode.java 2008-08-20 11:21:37 UTC (rev 1105) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedNode.java 2008-08-20 12:13:48 UTC (rev 1106) @@ -206,6 +206,15 @@ return (coveredPositives.size() + nrOfNegativeExamples - coveredNegatives.size())/(double)(nrOfPositiveExamples+nrOfNegativeExamples); } + /** + * Used to detect whether one node is more accurate than another one + * with calculating accuracy itself. + * @return Number of covered positives minus number of covered negatives. + */ + public int getCovPosMinusCovNeg() { + return coveredPositives.size() - coveredNegatives.size(); + } + public Set<Individual> getCoveredPositives() { return coveredPositives; } Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-08-20 11:21:37 UTC (rev 1105) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLComponent.java 2008-08-20 12:13:48 UTC (rev 1106) @@ -275,11 +275,15 @@ @Override public void init() throws ComponentInitException { + // exit with a ComponentInitException if the reasoner is unsupported for this learning algorithm if(rs.getReasonerType() == ReasonerType.DIG) { throw new ComponentInitException("DIG does not support the inferences needed in the selected learning algorithm component: " + getName()); } - logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault))); + // set log level if the option has been set + if(!logLevel.equals(CommonConfigOptions.logLevelDefault)) + logger.setLevel(Level.toLevel(logLevel,Level.toLevel(CommonConfigOptions.logLevelDefault))); + if(searchTreeFile == null) searchTreeFile = new File(defaultSearchTreeFile); Modified: trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 11:21:37 UTC (rev 1105) +++ trunk/src/dl-learner/org/dllearner/algorithms/refexamples/ExampleBasedROLearner.java 2008-08-20 12:13:48 UTC (rev 1106) @@ -26,6 +26,7 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.NavigableSet; import java.util.Set; import java.util.SortedSet; @@ -118,9 +119,9 @@ //extended Options private long maxExecutionTimeInSeconds; private boolean maxExecutionTimeShown=false; - private long minExecutionTimeInSeconds; + private long minExecutionTimeInSeconds = 0; private boolean minExecutionTimeShown=false; - private int guaranteeXgoodDescriptions; + private int guaranteeXgoodDescriptions = 1; private boolean guaranteeXgoodShown=false; // if set to false we do not test properness; this may seem wrong @@ -217,6 +218,7 @@ // prefixes private String baseURI; + private Map<String,String> prefixes; public ExampleBasedROLearner( LearningProblem learningProblem, @@ -277,7 +279,8 @@ this.useOverlyGeneralList = useOverlyGeneralList; this.useShortConceptConstruction = useShortConceptConstruction; this.usePropernessChecks = usePropernessChecks; - this.baseURI = rs.getBaseURI(); + baseURI = rs.getBaseURI(); + prefixes = rs.getPrefixes(); this.maxPosOnlyExpansion = maxPosOnlyExpansion; this.maxExecutionTimeInSeconds = maxExecutionTimeInSeconds; this.minExecutionTimeInSeconds = minExecutionTimeInSeconds; @@ -292,7 +295,7 @@ runtime=System.currentTimeMillis(); JamonMonitorLogger.getTimeMonitor(ExampleBasedROLComponent.class, "totalLearningTime").start(); // 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 + // redundant children of a node are called recursively when a node is extended // twice) /* // String conceptStr = "(\"http://dl-learner.org/carcinogenesis#Compound\" AND (>= 2 \"http://dl-learner.org/carcinogenesis#hasStructure\".\"http://dl-learner.org/carcinogenesis#Ar_halide\" OR ((\"http://dl-learner.org/carcinogenesis#amesTestPositive\" IS TRUE) AND >= 5 \"http://dl-learner.org/carcinogenesis#hasBond\". TOP)))"; @@ -350,6 +353,7 @@ candidatesStable.add(startNode); ExampleBasedNode bestNode = startNode; + ExampleBasedNode bestNodeStable = startNode; int loop = 0; @@ -386,7 +390,14 @@ } -// System.out.println("next expanded: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); +// System.out.println("next expanded: " + candidates.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); + + // we record when a more accurate node is found and log it + if(bestNodeStable.getCovPosMinusCovNeg() < candidatesStable.last().getCovPosMinusCovNeg()) { + logger.info("more accurate node found: " + candidatesStable.last()); + bestNodeStable = candidatesStable.last(); + } + // chose best node according to heuristics bestNode = candidates.last(); // extend best node @@ -456,21 +467,23 @@ if(solutionFound ) { + int solutionLimit = 20; logger.info("best node " + candidatesStable.last().getShortDescription(nrOfPositiveExamples, nrOfNegativeExamples, baseURI)); - logger.info("\nsolutions ( top 5 ):"); + logger.info("solutions (at most " + solutionLimit + " are shown):"); int show=1; String manchester="MANCHESTER:\n"; - String KBSyntax="KBSyntax:\n"; + String kbSyntax="KBSyntax:\n"; for(Description c : solutions) { logger.info(show+": " + c.toString(baseURI,null) + " (length " + c.getLength() +", depth " + c.getDepth() + ")"); - manchester+=show+": "+c.toManchesterSyntaxString(baseURI, new HashMap<String,String>())+"\n"; - KBSyntax+=show+": " + c.toKBSyntaxString()+"\n"; - if(show>=5){break;} show++; + manchester+=show+": "+c.toManchesterSyntaxString(baseURI, prefixes)+"\n"; + kbSyntax+=show+": " + c.toKBSyntaxString()+"\n"; + if(show >= solutionLimit) { + break; + } + show++; } logger.debug(manchester); - logger.debug(KBSyntax); - - + logger.debug(kbSyntax); } logger.debug("size of candidate set: " + candidates.size()); @@ -1189,7 +1202,9 @@ private boolean guaranteeXgoodDescriptions(){ if(guaranteeXgoodShown)return true; if(solutions.size()>guaranteeXgoodDescriptions){ - logger.info("Minimum number ("+guaranteeXgoodDescriptions+") of good descriptions reached, stopping now..."); + if(guaranteeXgoodDescriptions != 1) { + logger.info("Minimum number ("+guaranteeXgoodDescriptions+") of good descriptions reached, stopping now."); + } guaranteeXgoodShown=true; return true;} else return false; @@ -1218,8 +1233,10 @@ if(minExecutionTimeShown)return true; long needed = System.currentTimeMillis()- this.runtime; long minMilliSeconds = minExecutionTimeInSeconds *1000 ; - if(minMilliSeconds<needed){ - logger.info("Minimum time ("+minExecutionTimeInSeconds+" seconds) reached, stopping when next solution is found"); + if(minMilliSeconds<needed) { + if(minExecutionTimeInSeconds != 0) { + 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/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-20 11:21:37 UTC (rev 1105) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2008-08-20 12:13:48 UTC (rev 1106) @@ -36,8 +36,11 @@ import org.apache.log4j.ConsoleAppender; import org.apache.log4j.FileAppender; +import org.apache.log4j.Layout; import org.apache.log4j.Level; import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; +import org.apache.log4j.Priority; import org.apache.log4j.SimpleLayout; import org.dllearner.algorithms.BruteForceLearner; import org.dllearner.algorithms.RandomGuesser; @@ -118,20 +121,28 @@ if (args.length > 1 && args[0].equals("-q")) inQueryMode = true; - // create logger (a simple logger which outputs + // create loggers (a simple logger which outputs // its messages to the console and a log file) - SimpleLayout layout = new SimpleLayout(); + // logger 1 is the console, where we print only info messages; + // the logger is plain, i.e. does not output log level etc. + Layout layout = new PatternLayout(); ConsoleAppender consoleAppender = new ConsoleAppender(layout); + consoleAppender.setThreshold(Level.INFO); + + // logger 2 is writes to a file; it records all debug messages + // and includes the log level + Layout layout2 = new SimpleLayout(); FileAppender fileAppenderNormal = null; File f = new File("log/sparql.txt"); try { - fileAppenderNormal = new FileAppender(layout, "log/log.txt", false); + fileAppenderNormal = new FileAppender(layout2, "log/log.txt", false); f.delete(); f.createNewFile(); } catch (IOException e) { e.printStackTrace(); } +// fileAppenderNormal.setThreshold(Level.DEBUG); logger.removeAllAppenders(); logger.addAppender(consoleAppender); Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-08-20 11:21:37 UTC (rev 1105) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-08-20 12:13:48 UTC (rev 1106) @@ -222,7 +222,7 @@ } long dematDuration = System.currentTimeMillis() - dematStartTime; - logger.info("TBox dematerialised in " + dematDuration + " ms"); + logger.debug("TBox dematerialised in " + dematDuration + " ms"); } catch (ReasoningMethodUnsupportedException e) { throw new ComponentInitException( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-08-20 11:21:40
|
Revision: 1105 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1105&view=rev Author: jenslehmann Date: 2008-08-20 11:21:37 +0000 (Wed, 20 Aug 2008) Log Message: ----------- improved display of best class descriptions in DL-Learner GUI (now in Manchester OWL Syntax using base URI and prefixes in OWL file, accuracy of each class description is also shown) Modified Paths: -------------- trunk/examples/father.conf trunk/src/dl-learner/org/dllearner/gui/Config.java trunk/src/dl-learner/org/dllearner/gui/RunPanel.java Modified: trunk/examples/father.conf =================================================================== --- trunk/examples/father.conf 2008-08-19 17:35:48 UTC (rev 1104) +++ trunk/examples/father.conf 2008-08-20 11:21:37 UTC (rev 1105) @@ -11,8 +11,8 @@ import("father.kb"); +// reasoner = dig; - /** examples **/ +stefan +markus Modified: trunk/src/dl-learner/org/dllearner/gui/Config.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/Config.java 2008-08-19 17:35:48 UTC (rev 1104) +++ trunk/src/dl-learner/org/dllearner/gui/Config.java 2008-08-20 11:21:37 UTC (rev 1105) @@ -1,5 +1,3 @@ -package org.dllearner.gui; - /** * Copyright (C) 2007-2008, Jens Lehmann * @@ -20,6 +18,8 @@ * */ +package org.dllearner.gui; + import org.dllearner.core.ComponentManager; import org.dllearner.core.KnowledgeSource; import org.dllearner.core.LearningProblem; Modified: trunk/src/dl-learner/org/dllearner/gui/RunPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-08-19 17:35:48 UTC (rev 1104) +++ trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-08-20 11:21:37 UTC (rev 1105) @@ -25,9 +25,14 @@ import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.text.DecimalFormat; import java.util.List; +import java.util.Map; + import javax.swing.*; +import org.dllearner.core.EvaluatedDescription; + /** * @author Tilo Hielscher * @@ -35,6 +40,7 @@ public class RunPanel extends JPanel implements ActionListener { private static final long serialVersionUID = 1643304576470046636L; + private DecimalFormat df = new DecimalFormat(); private JButton runButton, stopButton, treeButton; private JTextArea infoArea; @@ -172,9 +178,9 @@ infoArea.setText(""); // best solutions - if (config.getLearningAlgorithm().getCurrentlyBestEvaluatedDescriptions(5) != null) { - infoArea.append("Best solutions: \n\n" - + listToString(config.getLearningAlgorithm().getCurrentlyBestEvaluatedDescriptions(10)) + "\n"); + if (config.getLearningAlgorithm().getCurrentlyBestDescriptions() != null) { + infoArea.append("Best class descriptions in Manchester OWL Syntax: \n\n" + + getSolutionString(config.getLearningAlgorithm().getCurrentlyBestEvaluatedDescriptions(10)) + "\n"); } // solution score // if (config.getLearningAlgorithm().getSolutionScore() != null) @@ -292,6 +298,17 @@ gbc.weighty = wy; } + public String getSolutionString(List<EvaluatedDescription> solutions) { + String baseURI = config.getReasoningService().getBaseURI(); + Map<String,String> prefixes = config.getReasoningService().getPrefixes(); + String string = ""; + for (EvaluatedDescription d : solutions) { + string += "accuracy: " + (df.format(d.getAccuracy()*100)) + "%: \t" + + d.getDescription().toManchesterSyntaxString(baseURI, prefixes) + "\n"; + } + return string; + } + /** * Make a string from list, every entry in new line. * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-08-19 17:35:54
|
Revision: 1104 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1104&view=rev Author: kurzum Date: 2008-08-19 17:35:48 +0000 (Tue, 19 Aug 2008) Log Message: ----------- small improvements Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 15:41:45 UTC (rev 1103) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 17:35:48 UTC (rev 1104) @@ -66,8 +66,13 @@ //SortedSet<RDFNodeTuple> tmp = new TreeSet<RDFNodeTuple>(); String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth); //System.out.println(sparqlQueryString); - ResultSetRewindable rsw= sparqlTasks.queryAsResultSet(sparqlQueryString); - @SuppressWarnings("unchecked") + ResultSetRewindable rsw=null; + try{ + rsw = sparqlTasks.queryAsResultSet(sparqlQueryString); + }catch (Exception e) { + return super.retrieveTupel(uri); + } + @SuppressWarnings("unchecked") List<ResultBinding> l = ResultSetFormatter.toList(rsw); rsw.reset(); Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-19 15:41:45 UTC (rev 1103) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-19 17:35:48 UTC (rev 1104) @@ -21,6 +21,7 @@ import java.net.URI; import java.util.SortedSet; +import java.util.TreeSet; import org.apache.log4j.Logger; import org.dllearner.utilities.datastructures.RDFNodeTuple; @@ -47,14 +48,20 @@ public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){ checkURIforValidity(uri); - if (mode == NORMAL) { - return retrieveTupel(uri); - } else if(mode == CLASSES_FOR_INSTANCES){ - return retrieveClassesForInstances(uri); - }else if(mode == CLASS_INFORMATION){ - return retrieveTuplesForClassesOnly(uri); - }else{ - throw new RuntimeException("undefined mode in aquisitor"); + try{ + if (mode == NORMAL) { + return retrieveTupel(uri); + } else if(mode == CLASSES_FOR_INSTANCES){ + return retrieveClassesForInstances(uri); + }else if(mode == CLASS_INFORMATION){ + return retrieveTuplesForClassesOnly(uri); + }else{ + throw new RuntimeException("undefined mode in aquisitor"); + } + }catch(Exception e){ + logger.warn("caught exception in tupleaquisitor, ignoring it"+e.toString()); + return new TreeSet<RDFNodeTuple>(); + } } public abstract SortedSet<RDFNodeTuple> retrieveTupel(String uri); Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-19 15:41:45 UTC (rev 1103) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Manager.java 2008-08-19 17:35:48 UTC (rev 1104) @@ -55,6 +55,7 @@ Node n = extractionAlgorithm.expandNode(uri, configuration.getTupelAquisitor()); SortedSet<String> s = n.toNTriple(); + logger.info("number of triples: "+s.size()); StringBuffer nt = new StringBuffer(33000); for (String str : s) { nt.append(str + "\n"); Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-19 15:41:45 UTC (rev 1103) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimpleObjectFilterRule.java 2008-08-19 17:35:48 UTC (rev 1104) @@ -23,6 +23,7 @@ import java.util.TreeSet; import org.dllearner.kb.extraction.Node; +import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.RDFNodeTuple; public class SimpleObjectFilterRule extends Rule{ @@ -41,6 +42,8 @@ for (RDFNodeTuple tuple : tuples) { if(!tuple.bPartContains(objectFilter)){ keep.add(tuple); + }else{ + JamonMonitorLogger.increaseCount(SimpleObjectFilterRule.class, "filteredTriples"); } } return keep; Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-19 15:41:45 UTC (rev 1103) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/SimplePredicateFilterRule.java 2008-08-19 17:35:48 UTC (rev 1104) @@ -23,6 +23,7 @@ import java.util.TreeSet; import org.dllearner.kb.extraction.Node; +import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.RDFNodeTuple; public class SimplePredicateFilterRule extends Rule{ @@ -42,6 +43,8 @@ for (RDFNodeTuple tuple : tuples) { if(!tuple.aPartContains(predicateFilter)){ keep.add(tuple); + }else{ + JamonMonitorLogger.increaseCount(SimplePredicateFilterRule.class, "filteredTriples"); } } return keep; Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 15:41:45 UTC (rev 1103) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 17:35:48 UTC (rev 1104) @@ -24,6 +24,7 @@ import org.apache.log4j.Logger; import org.dllearner.kb.extraction.Node; +import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.RDFNodeTuple; public class TypeFilterRule extends Rule{ @@ -59,7 +60,7 @@ if(!remove){ keep.add(tuple); }else{ - logger.warn("Removed: "+subject+"::"+tuple); + JamonMonitorLogger.increaseCount(TypeFilterRule.class, "filteredTriples"); } } Modified: trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-19 15:41:45 UTC (rev 1103) +++ trunk/src/dl-learner/org/dllearner/scripts/WikipediaCategoryCleaner.java 2008-08-19 17:35:48 UTC (rev 1104) @@ -222,10 +222,11 @@ LearnSPARQLConfiguration lsc = new LearnSPARQLConfiguration(); lsc.sparqlEndpoint = sparqlTasks.getSparqlEndpoint(); + lsc.recursiondepth = 1; lsc.noisePercentage = 15; lsc.guaranteeXgoodDescriptions = 200; lsc.maxExecutionTimeInSeconds = 50; - lsc.logLevel = "INFO"; + lsc.logLevel = "TRACE"; // lsc.searchTreeFile = "log/WikipediaCleaner.txt"; return lsc; Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-19 15:41:45 UTC (rev 1103) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-19 17:35:48 UTC (rev 1104) @@ -31,6 +31,7 @@ import org.dllearner.kb.extraction.Manager; import org.dllearner.kb.manipulator.Manipulator; import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.kb.sparql.SparqlQueryMaker; import org.dllearner.scripts.NT2RDF; import org.dllearner.utilities.JamonMonitorLogger; @@ -57,12 +58,13 @@ logger.removeAllAppenders(); logger.addAppender(consoleAppender); logger.setLevel(Level.INFO); + Logger.getLogger(SparqlQuery.class).setLevel(Level.DEBUG); // String test2 = "http://www.extraction.org/config#dbpediatest"; // String test = "http://www.extraction.org/config#localjoseki"; try { // URI u = new URI(test); - int recursionDepth=3; + int recursionDepth=2; Manager m = new Manager(); Configuration conf = new Configuration ( new SparqlTupelAquisitorImproved(SparqlQueryMaker.getAllowYAGOFilter(), Modified: trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-19 15:41:45 UTC (rev 1103) +++ trunk/src/dl-learner/org/dllearner/utilities/examples/AutomaticNegativeExampleFinderSPARQL.java 2008-08-19 17:35:48 UTC (rev 1104) @@ -149,16 +149,23 @@ // superclasses"); for (String instance : positiveSet) { + try{ classes.addAll(sparqltasks.getClassesForInstance(instance, sparqlResultLimit)); + }catch (Exception e) { + logger.warn("ignoring SPARQLQuery failure, see log/sparql.txt"); + } } logger.debug("getting negExamples from " + classes.size() + " parallel classes"); for (String oneClass : classes) { logger.debug(oneClass); // rsc = new // JenaResultSetConvenience(queryConcept("\""+oneClass+"\"",limit)); + try{ this.fromParallelClasses.addAll(sparqltasks.retrieveInstancesForClassDescription("\"" + oneClass + "\"", sparqlResultLimit)); - + }catch (Exception e) { + logger.warn("ignoring SPARQLQuery failure, see log/sparql.txt"); + } } fromParallelClasses.removeAll(fullPositiveSet); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-08-19 15:41:48
|
Revision: 1103 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1103&view=rev Author: kurzum Date: 2008-08-19 15:41:45 +0000 (Tue, 19 Aug 2008) Log Message: ----------- small changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 15:35:22 UTC (rev 1102) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 15:41:45 UTC (rev 1103) @@ -70,13 +70,9 @@ @SuppressWarnings("unchecked") List<ResultBinding> l = ResultSetFormatter.toList(rsw); rsw.reset(); - int count = 0; - - for (ResultBinding binding : l) { - count++; - } + int resultsetcount = 0; int i = 0; for (ResultBinding binding : l) { @@ -95,14 +91,14 @@ }else if (tmpOBJURI.isLiteral()) { tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); add(nextOBJ.toString(), tmptuple); - logger.trace(tmptuple); - logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); + //logger.trace(tmptuple); + //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); cont=false; }else { tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); add(nextOBJ.toString(), tmptuple); - logger.trace(tmptuple); - logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); + //logger.trace(tmptuple); + //logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); nextOBJ = tmpOBJURI; cont = true; } @@ -112,7 +108,7 @@ } //System.out.println("original count "+count); - logger.warn("SparqlTupelAquisitor retrieved : "+resultsetcount); + //logger.warn("SparqlTupelAquisitor retrieved : "+resultsetcount); if(resultsetcount>999) { logger.warn("SparqlTupelAquisitor retrieved more than 1000 results, there might some be missing"); } Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-19 15:35:22 UTC (rev 1102) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-19 15:41:45 UTC (rev 1103) @@ -78,12 +78,12 @@ List<Node> tmp = new ArrayList<Node>(); - logger.info(seedNode); + logger.info("Seed Node: "+seedNode); newNodes.add(seedNode); - logger.info("Starting Nodes: " + newNodes); + - for (int x = 0; x < configuration.getRecursiondepth(); x++) { + for (int x = 1; x <= configuration.getRecursiondepth(); x++) { sc.reset(); while (!newNodes.isEmpty()) { Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-19 15:35:22 UTC (rev 1102) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-19 15:41:45 UTC (rev 1103) @@ -58,11 +58,11 @@ */ public SortedSet<RDFNodeTuple> manipulate( Node node, SortedSet<RDFNodeTuple> tuples) { JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").start(); - logger.warn("before: "+tuples.size()); + //logger.warn("before: "+tuples.size()); for (Rule rule : rules) { tuples = rule.applyRule(node, tuples); } - logger.warn("after: "+tuples.size()); + //logger.warn("after: "+tuples.size()); JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").stop(); return tuples; } Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 15:35:22 UTC (rev 1102) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 15:41:45 UTC (rev 1103) @@ -48,8 +48,8 @@ public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){ SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>(); for (RDFNodeTuple tuple : tuples) { - String a = tuple.a.toString(); - String b = tuple.b.toString(); + //String a = tuple.a.toString(); + //String b = tuple.b.toString(); //System.out.println(a+b); boolean remove = (tuple.aPartContains(predicateFilter) && tuple.bPartContains(objectFilter) && This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2008-08-19 15:35:27
|
Revision: 1102 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1102&view=rev Author: kurzum Date: 2008-08-19 15:35:22 +0000 (Tue, 19 Aug 2008) Log Message: ----------- working improved aquisitor Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/LinkedDataTupelAquisitor.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -45,12 +45,17 @@ // standard query get a tupels (p,o) for subject s @Override - public SortedSet<RDFNodeTuple> getTupelForResource(String uri) { - + public SortedSet<RDFNodeTuple> retrieveTupel(String uri){ throw new RuntimeException("Not Implemented yet"); - - } + @Override + public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){ + throw new RuntimeException("Not Implemented yet"); + } + @Override + public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ + throw new RuntimeException("Not Implemented yet"); + } Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitor.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -34,8 +34,11 @@ */ public class SparqlTupelAquisitor extends TupelAquisitor { + @SuppressWarnings("unused") private static Logger logger = Logger.getLogger(SparqlTupelAquisitor.class); + protected static final String PREDICATE = "predicate"; + protected static final String OBJECT = "object"; protected SparqlQueryMaker sparqlQueryMaker; protected SPARQLTasks sparqlTasks; @@ -48,26 +51,24 @@ this.sparqlTasks = sparqlTasks; } - - // standard query get a tupels (p,o) for subject s @Override - public SortedSet<RDFNodeTuple> getTupelForResource(String uri) { - checkURIforValidity(uri); + public SortedSet<RDFNodeTuple> retrieveTupel(String uri){ + // getQuery + String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); + return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); - String pred = "predicate"; - String obj = "object"; - String sparqlQueryString = ""; + } + @Override + public SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri){ // getQuery - if (classMode) { - sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri); - }else { - sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); - } + String sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri); + return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); - - return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj); - } + @Override + public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ + return retrieveTupel(uri); + } Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/SparqlTupelAquisitorImproved.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -54,61 +54,79 @@ this.recursionDepth = recursionDepth; } - - // standard query get a tupels (p,o) for subject s -// standard query get a tupels (p,o) for subject s + @Override - public SortedSet<RDFNodeTuple> getTupelForResource(String uri) { - checkURIforValidity(uri); - String sparqlQueryString = ""; - String pred = "predicate"; - String obj = "object"; + public SortedSet<RDFNodeTuple> retrieveTupel(String uri){ - // getQuery - if (classMode) { - - - sparqlQueryString = sparqlQueryMaker.makeClassQueryUsingFilters(uri); - return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj); - } - SortedSet<RDFNodeTuple> cachedSet = resources.get(uri); if(cachedSet!=null) { return cachedSet; } //SortedSet<RDFNodeTuple> tmp = new TreeSet<RDFNodeTuple>(); - sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth); + String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryLevel(uri, recursionDepth); + //System.out.println(sparqlQueryString); ResultSetRewindable rsw= sparqlTasks.queryAsResultSet(sparqlQueryString); @SuppressWarnings("unchecked") List<ResultBinding> l = ResultSetFormatter.toList(rsw); rsw.reset(); + int count = 0; + + for (ResultBinding binding : l) { + count++; + } + int resultsetcount = 0; int i = 0; for (ResultBinding binding : l) { - i=0; - RDFNode nextURI = binding.get(obj+i); - add(uri, new RDFNodeTuple(binding.get(pred+i), nextURI )); - - for (i=1; i < recursionDepth; i++) { - RDFNode tmpURI = binding.get(obj+i); - add(nextURI.toString(), new RDFNodeTuple(binding.get(pred+i),tmpURI)); - logger.trace("For: "+nextURI.toString()+ " added :"+resources.get(nextURI.toString())); - nextURI = tmpURI; - } + i = 0; + RDFNode nextOBJ = binding.get(OBJECT+i); + RDFNode nextPRED = binding.get(PREDICATE+i); + RDFNodeTuple tmptuple = new RDFNodeTuple(nextPRED, nextOBJ ); + add(uri,tmptuple); + boolean cont = !nextOBJ.isLiteral(); + for (i=0; (i < recursionDepth) && cont; i++) { + RDFNode tmpPREDURI = binding.get(PREDICATE+i); + RDFNode tmpOBJURI = binding.get(OBJECT+i); + if(tmpOBJURI==null) { + cont=false; + }else if (tmpOBJURI.isLiteral()) { + tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); + add(nextOBJ.toString(), tmptuple); + logger.trace(tmptuple); + logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); + cont=false; + }else { + tmptuple = new RDFNodeTuple(tmpPREDURI, tmpOBJURI ); + add(nextOBJ.toString(), tmptuple); + logger.trace(tmptuple); + logger.trace("For: "+nextOBJ.toString()+ " added :"+resources.get(nextOBJ.toString())); + nextOBJ = tmpOBJURI; + cont = true; + } + }//end for + resultsetcount++; } + //System.out.println("original count "+count); + logger.warn("SparqlTupelAquisitor retrieved : "+resultsetcount); if(resultsetcount>999) { logger.warn("SparqlTupelAquisitor retrieved more than 1000 results, there might some be missing"); } - return resources.get(uri); - - //return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, pred, obj); + return ((cachedSet=resources.get(uri))==null)?new TreeSet<RDFNodeTuple>():cachedSet; } + @Override + public SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri){ + //getQuery + String sparqlQueryString = sparqlQueryMaker.makeSubjectQueryUsingFilters(uri); + return sparqlTasks.queryAsRDFNodeTuple(sparqlQueryString, PREDICATE, OBJECT); + } + + private void add(String uri, RDFNodeTuple tuple){ SortedSet<RDFNodeTuple> set = resources.get(uri); if(set==null){ Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/TupelAquisitor.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -38,20 +38,41 @@ private static Logger logger = Logger.getLogger(TupelAquisitor.class); + protected final int NORMAL = 0; + protected final int CLASSES_FOR_INSTANCES = 1; + protected final int CLASS_INFORMATION = 2; - protected boolean classMode = false; + protected int mode = 0; private boolean uriDebugCheck = true; - public abstract SortedSet<RDFNodeTuple> getTupelForResource(String uri); + public final SortedSet<RDFNodeTuple> getTupelForResource(String uri){ + checkURIforValidity(uri); + if (mode == NORMAL) { + return retrieveTupel(uri); + } else if(mode == CLASSES_FOR_INSTANCES){ + return retrieveClassesForInstances(uri); + }else if(mode == CLASS_INFORMATION){ + return retrieveTuplesForClassesOnly(uri); + }else{ + throw new RuntimeException("undefined mode in aquisitor"); + } + } + public abstract SortedSet<RDFNodeTuple> retrieveTupel(String uri); + public abstract SortedSet<RDFNodeTuple> retrieveClassesForInstances(String uri); + public abstract SortedSet<RDFNodeTuple> retrieveTuplesForClassesOnly(String uri); - public void setClassMode(boolean classMode) { - this.classMode = classMode; - } + /*private void setMode(int mode) { + this.mode = mode; + }*/ - public boolean isClassMode() { - return classMode; + public int getMode() { + return mode; } + public void setNextTaskToNormal(){mode = NORMAL;} + public void setNextTaskToClassesForInstances(){mode = CLASSES_FOR_INSTANCES;} + public void setNextTaskToClassInformation(){mode = CLASS_INFORMATION;} + protected boolean checkURIforValidity(String uri){ if(uriDebugCheck) return true; try{ Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/ExtractionAlgorithm.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -70,6 +70,7 @@ public Node expandNode(String uri, TupelAquisitor tupelAquisitor) { SimpleClock sc = new SimpleClock(); + tupelAquisitor.setNextTaskToNormal(); Node seedNode = getFirstNode(uri); List<Node> newNodes = new ArrayList<Node>(); @@ -131,7 +132,7 @@ //TODO LinkedData incompatibility - tupelAquisitor.setClassMode(true); + tupelAquisitor.setNextTaskToClassesForInstances(); if (configuration.isCloseAfterRecursion()) { while (!instances.isEmpty()) { logger.trace("Getting classes for remaining instances: " @@ -144,12 +145,11 @@ }//endif }//endwhile }//endif - tupelAquisitor.setClassMode(false); - + tupelAquisitor.setNextTaskToClassInformation(); int i = 0; - while (!classes.isEmpty()) { + while (!classes.isEmpty() && false) { logger.trace("Remaining classes: " + classes.size()); Node next = classes.remove(0); if (!alreadyQueriedSuperClasses.contains(next.getURI().toString())) { Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/DBpediaNavigatorOtherRule.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -51,7 +51,6 @@ typeTuple = tuple; } - //TODO this doesn't work, because it is unclear what toString() method returns if (tuple.a.toString().equals("http://www.w3.org/2003/01/geo/wgs84_pos#lat") && tuple.b.isLiteral()){ lat = ((Literal) tuple.b).getFloat(); Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/Manipulator.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -23,6 +23,7 @@ import java.util.List; import java.util.SortedSet; +import org.apache.log4j.Logger; import org.dllearner.kb.extraction.ClassNode; import org.dllearner.kb.extraction.InstanceNode; import org.dllearner.kb.extraction.Node; @@ -39,6 +40,7 @@ */ public class Manipulator { + private static Logger logger = Logger.getLogger(Manipulator.class); private List<Rule> rules = new ArrayList<Rule>(); private Manipulator() { @@ -56,9 +58,11 @@ */ public SortedSet<RDFNodeTuple> manipulate( Node node, SortedSet<RDFNodeTuple> tuples) { JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").start(); + logger.warn("before: "+tuples.size()); for (Rule rule : rules) { tuples = rule.applyRule(node, tuples); } + logger.warn("after: "+tuples.size()); JamonMonitorLogger.getTimeMonitor(Manipulator.class, "Time for Rules").stop(); return tuples; } @@ -111,9 +115,13 @@ private void addDefaultRules(Months month){ - addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ; - addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ; - addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ; + // addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class.getCanonicalName() )) ; + // addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class.getCanonicalName() )) ; + // addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class.getCanonicalName()) ) ; + addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_CLASS,ClassNode.class )) ; + addRule(new TypeFilterRule(month, OWLVocabulary.RDF_TYPE, OWLVocabulary.OWL_THING,InstanceNode.class )) ; + addRule(new TypeFilterRule(month, "", OWLVocabulary.OWL_CLASS, ClassNode.class) ) ; + } public synchronized void addRule(Rule newRule){ Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/TypeFilterRule.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -22,21 +22,24 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.apache.log4j.Logger; import org.dllearner.kb.extraction.Node; import org.dllearner.utilities.datastructures.RDFNodeTuple; public class TypeFilterRule extends Rule{ + public static Logger logger = Logger.getLogger(TypeFilterRule.class); + String predicateFilter; String objectFilter; - String canonicalClassName; + String classCanonicalName; - public TypeFilterRule(Months month, String predicateFilter, String objectFilter, String canonicalClassName) { + public TypeFilterRule(Months month, String predicateFilter, String objectFilter, Class<? extends Node> clazz) { super(month); this.predicateFilter = predicateFilter; this.objectFilter = objectFilter; - this.canonicalClassName = canonicalClassName; + this.classCanonicalName = clazz.getCanonicalName(); } @@ -45,12 +48,20 @@ public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){ SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>(); for (RDFNodeTuple tuple : tuples) { + String a = tuple.a.toString(); + String b = tuple.b.toString(); + //System.out.println(a+b); boolean remove = (tuple.aPartContains(predicateFilter) && - tuple.bPartContains(objectFilter) && - subject.getClass().getCanonicalName().equals(canonicalClassName)); + tuple.bPartContains(objectFilter) && + // QUALITY this might be dead wrong + (classCanonicalName.equalsIgnoreCase(subject.getClass().getCanonicalName())) + ); if(!remove){ keep.add(tuple); + }else{ + logger.warn("Removed: "+subject+"::"+tuple); } + } return keep; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlKnowledgeSource.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -47,6 +47,7 @@ import org.dllearner.core.config.StringTupleListConfigOption; import org.dllearner.core.owl.KB; import org.dllearner.kb.aquisitors.SparqlTupelAquisitor; +import org.dllearner.kb.aquisitors.SparqlTupelAquisitorImproved; import org.dllearner.kb.aquisitors.TupelAquisitor; import org.dllearner.kb.extraction.Configuration; import org.dllearner.kb.extraction.Manager; @@ -410,7 +411,8 @@ public TupelAquisitor getTupelAquisitor() { - return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks()); + //return new SparqlTupelAquisitor(getSparqlQueryMaker(), getSPARQLTasks()); + return new SparqlTupelAquisitorImproved(getSparqlQueryMaker(), getSPARQLTasks(),recursionDepth); } /* (non-Javadoc) Modified: trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-19 15:23:53 UTC (rev 1101) +++ trunk/src/dl-learner/org/dllearner/test/SparqlExtractionTest.java 2008-08-19 15:35:22 UTC (rev 1102) @@ -26,7 +26,7 @@ import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; -import org.dllearner.kb.aquisitors.SparqlTupelAquisitor; +import org.dllearner.kb.aquisitors.SparqlTupelAquisitorImproved; import org.dllearner.kb.extraction.Configuration; import org.dllearner.kb.extraction.Manager; import org.dllearner.kb.manipulator.Manipulator; @@ -34,6 +34,7 @@ import org.dllearner.kb.sparql.SparqlQueryMaker; import org.dllearner.scripts.NT2RDF; import org.dllearner.utilities.JamonMonitorLogger; +import org.dllearner.utilities.statistics.SimpleClock; /** * Test class, uses the whole thing @@ -55,17 +56,19 @@ ConsoleAppender consoleAppender = new ConsoleAppender(layout); logger.removeAllAppenders(); logger.addAppender(consoleAppender); - logger.setLevel(Level.TRACE); + logger.setLevel(Level.INFO); // String test2 = "http://www.extraction.org/config#dbpediatest"; // String test = "http://www.extraction.org/config#localjoseki"; try { // URI u = new URI(test); + int recursionDepth=3; Manager m = new Manager(); Configuration conf = new Configuration ( - new SparqlTupelAquisitor(SparqlQueryMaker.getTestFilter(), SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA")), + new SparqlTupelAquisitorImproved(SparqlQueryMaker.getAllowYAGOFilter(), + SPARQLTasks.getPredefinedSPARQLTasksWithCache("DBPEDIA"),recursionDepth), Manipulator.getDefaultManipulator(), - 1, + recursionDepth, true, true, 200 @@ -79,6 +82,7 @@ fw.write(m.extract(u2)); fw.flush(); fw.close(); + NT2RDF.convertNT2RDF(filename); JamonMonitorLogger.printAllSortedByLabel(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Jen...@us...> - 2008-08-19 15:23:57
|
Revision: 1101 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1101&view=rev Author: JensLehmann Date: 2008-08-19 15:23:53 +0000 (Tue, 19 Aug 2008) Log Message: ----------- - unit test, which verifies that all learning problems are working (learn a concept) - feature request #1892798 Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/cli/QuickStart.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java Modified: trunk/src/dl-learner/org/dllearner/cli/QuickStart.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/QuickStart.java 2008-08-19 14:28:27 UTC (rev 1100) +++ trunk/src/dl-learner/org/dllearner/cli/QuickStart.java 2008-08-19 15:23:53 UTC (rev 1101) @@ -39,7 +39,7 @@ */ public class QuickStart { - static HashMap<String, ArrayList<String>> hm = null; +// static HashMap<String, ArrayList<String>> hm = null; static String pm = ".";// pathmodifier public static void main(String[] args) { @@ -50,10 +50,10 @@ ArrayList<String> finalSelection = new ArrayList<String>(); finalSelection.add("na"); - hm = new HashMap<String, ArrayList<String>>(); + HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>(); String path = pm + File.separator + "examples"; File f = new File(path); - getAllConfs(f, path); + getAllConfs(f, path, hm); // System.out.println(hm.size()); Iterator<String> i = hm.keySet().iterator(); @@ -148,7 +148,7 @@ // System.out.println(f.isDirectory()+f.getAbsolutePath()); } - public static void getAllConfs(File f, String path) { + public static void getAllConfs(File f, String path, HashMap<String, ArrayList<String>> confs) { path = path + File.separator; // System.out.println(path); String[] act = f.list(); @@ -157,13 +157,13 @@ if (new File(path + act[i]).isDirectory()) { - getAllConfs(new File(path + act[i]), path + act[i]); + getAllConfs(new File(path + act[i]), path + act[i], confs); // al.add(new File(act[i])); } else if (act[i].endsWith(".conf")) { - if (hm.get(path) == null) { - hm.put(path, new ArrayList<String>()); + if (confs.get(path) == null) { + confs.put(path, new ArrayList<String>()); } - hm.get(path).add(act[i].substring(0, act[i].length() - 5)); + confs.get(path).add(act[i].substring(0, act[i].length() - 5)); // System.out.println(act[i].substring(0,act[i].length()-5)); // System.out.println(hm.get(path).size()); // hm.put(new Added: trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2008-08-19 15:23:53 UTC (rev 1101) @@ -0,0 +1,66 @@ +/** + * 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.test.junit; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; + +import org.dllearner.cli.QuickStart; +import org.dllearner.cli.Start; +import org.dllearner.core.ComponentInitException; +import org.junit.Test; + +/** + * Tests related to learning problems in the examples directory. + * + * @author Jens Lehmann + * + */ +public class ExampleTests { + + /** + * This test runs all conf files in the examples directory. Each conf file corresponds to one + * unit test, which is succesful if a concept was learned. + * @throws ComponentInitException If any component initialisation exception occurs in the process. + */ + @Test + public void testAllConfFiles() throws ComponentInitException { + // map containing a list of conf files for each path + HashMap<String, ArrayList<String>> confFiles = new HashMap<String, ArrayList<String>>(); + String exampleDir = "." + File.separator + "examples"; + File f = new File(exampleDir); + QuickStart.getAllConfs(f, exampleDir, confFiles); + + for(String path : confFiles.keySet()) { + for(String file : confFiles.get(path)) { + String conf = path + file + ".conf"; + // start example + Start start = new Start(new File(conf)); + start.start(false); + // test is successful if a concept was learned + assert(start.getLearningAlgorithm().getCurrentlyBestDescription() != null); + } + } + + + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |