You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(120) |
Sep
(36) |
Oct
(116) |
Nov
(17) |
Dec
(44) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(143) |
Feb
(192) |
Mar
(74) |
Apr
(84) |
May
(105) |
Jun
(64) |
Jul
(49) |
Aug
(120) |
Sep
(159) |
Oct
(156) |
Nov
(51) |
Dec
(28) |
2009 |
Jan
(17) |
Feb
(55) |
Mar
(33) |
Apr
(57) |
May
(54) |
Jun
(28) |
Jul
(6) |
Aug
(16) |
Sep
(38) |
Oct
(30) |
Nov
(26) |
Dec
(52) |
2010 |
Jan
(7) |
Feb
(91) |
Mar
(65) |
Apr
(2) |
May
(14) |
Jun
(25) |
Jul
(38) |
Aug
(48) |
Sep
(80) |
Oct
(70) |
Nov
(75) |
Dec
(77) |
2011 |
Jan
(68) |
Feb
(53) |
Mar
(51) |
Apr
(35) |
May
(65) |
Jun
(101) |
Jul
(29) |
Aug
(230) |
Sep
(95) |
Oct
(49) |
Nov
(110) |
Dec
(63) |
2012 |
Jan
(41) |
Feb
(42) |
Mar
(25) |
Apr
(46) |
May
(51) |
Jun
(44) |
Jul
(45) |
Aug
(29) |
Sep
(12) |
Oct
(9) |
Nov
(17) |
Dec
(2) |
2013 |
Jan
(12) |
Feb
(14) |
Mar
(7) |
Apr
(16) |
May
(54) |
Jun
(27) |
Jul
(11) |
Aug
(5) |
Sep
(85) |
Oct
(27) |
Nov
(37) |
Dec
(32) |
2014 |
Jan
(8) |
Feb
(29) |
Mar
(5) |
Apr
(3) |
May
(22) |
Jun
(3) |
Jul
(4) |
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <ku...@us...> - 2009-05-19 16:49:58
|
Revision: 1758 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1758&view=rev Author: kurzum Date: 2009-05-19 16:49:37 +0000 (Tue, 19 May 2009) Log Message: ----------- literal fix Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java 2009-05-19 16:38:22 UTC (rev 1757) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java 2009-05-19 16:49:37 UTC (rev 1758) @@ -27,6 +27,7 @@ import org.dllearner.utilities.JamonMonitorLogger; import org.dllearner.utilities.datastructures.RDFNodeTuple; +import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.impl.ResourceImpl; public class StringToResource extends Rule{ @@ -57,15 +58,12 @@ SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>(); for (RDFNodeTuple tuple : tuples) { // do nothing if the object contains http:// - if(!tuple.bPartContains("http://")){ + if(!tuple.b.isResource()){ boolean replace = true; - //check for numbers - for (int i = 0; i <= 9; i++) { - if(tuple.bPartContains(i+"")){ + if(((Literal) tuple.b).getDatatypeURI().contains("decimal")){ replace = false; - - } + } // do nothing if limit is exceeded This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2009-05-19 16:38:31
|
Revision: 1757 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1757&view=rev Author: kurzum Date: 2009-05-19 16:38:22 +0000 (Tue, 19 May 2009) Log Message: ----------- fix Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java 2009-05-19 16:36:34 UTC (rev 1756) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java 2009-05-19 16:38:22 UTC (rev 1757) @@ -61,7 +61,7 @@ boolean replace = true; //check for numbers - for (int i = 0; i < 9; i++) { + for (int i = 0; i <= 9; i++) { if(tuple.bPartContains(i+"")){ replace = false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2009-05-19 16:36:49
|
Revision: 1756 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1756&view=rev Author: kurzum Date: 2009-05-19 16:36:34 +0000 (Tue, 19 May 2009) Log Message: ----------- new rule for manipulator Added Paths: ----------- trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java Added: trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/StringToResource.java 2009-05-19 16:36:34 UTC (rev 1756) @@ -0,0 +1,104 @@ +/** + * 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.net.URLEncoder; +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 StringToResource extends Rule{ + + String namespace; + int limit ; + + + /** + * @param month + * @param resourceNamespace ns for the created uris + * @param limit does not convert strings that are longer than a specific value, zero means convert all + */ + public StringToResource(Months month, String resourceNamespace, int limit) { + super(month); + String slash = ""; + if(!resourceNamespace.endsWith("/")) { + slash="/"; + } + + this.namespace = slash+resourceNamespace; + this.limit = limit; + } + + + @Override + public SortedSet<RDFNodeTuple> applyRule(Node subject, SortedSet<RDFNodeTuple> tuples){ + SortedSet<RDFNodeTuple> keep = new TreeSet<RDFNodeTuple>(); + for (RDFNodeTuple tuple : tuples) { + // do nothing if the object contains http:// + if(!tuple.bPartContains("http://")){ + boolean replace = true; + + //check for numbers + for (int i = 0; i < 9; i++) { + if(tuple.bPartContains(i+"")){ + replace = false; + + } + } + + // do nothing if limit is exceeded + if(limit != 0 && tuple.b.toString().length()>limit){ + replace = false; + } + + if (replace){ + + String tmp = tuple.b.toString(); + try{ + //encode + tmp = URLEncoder.encode(tmp, "UTF-8"); + }catch (Exception e) { + // TODO: handle exception + } + + tuple.b = new ResourceImpl(namespace+tmp); + JamonMonitorLogger.increaseCount(StringToResource.class, "convertedToURI"); + }else { + // do nothing + } + } + keep.add(tuple); + } + return keep; + } + + @Override + public void logJamon(){ + JamonMonitorLogger.increaseCount(StringToResource.class, "replacedObjects"); + } + + + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-18 15:38:42
|
Revision: 1755 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1755&view=rev Author: jenslehmann Date: 2009-05-18 15:38:38 +0000 (Mon, 18 May 2009) Log Message: ----------- continued class matching ASK queries now work in combination with cache Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java trunk/src/dl-learner/org/dllearner/scripts/matching/Utility.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2009-05-18 14:15:08 UTC (rev 1754) +++ trunk/src/dl-learner/org/dllearner/algorithms/celoe/CELOE.java 2009-05-18 15:38:38 UTC (rev 1755) @@ -36,7 +36,6 @@ import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.configurators.CELOEConfigurator; -import org.dllearner.core.configurators.Configurator; import org.dllearner.core.options.CommonConfigOptions; import org.dllearner.core.options.ConfigOption; import org.dllearner.core.owl.ClassHierarchy; @@ -124,7 +123,7 @@ private int maxHorizExp = 0; @Override - public Configurator getConfigurator() { + public CELOEConfigurator getConfigurator() { return configurator; } Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2009-05-18 14:15:08 UTC (rev 1754) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/Cache.java 2009-05-18 15:38:38 UTC (rev 1755) @@ -312,6 +312,19 @@ return result; } + public boolean executeSparqlAskQuery(SparqlQuery query) { + String str = getCacheEntry(query.getSparqlQueryString()); + JamonMonitorLogger.increaseCount(Cache.class, "TotalQueries"); + if(str != null) { + JamonMonitorLogger.increaseCount(Cache.class, "SuccessfulHits"); + return Boolean.parseBoolean(str); + } else { + Boolean result = query.sendAsk(); + addToCache(query.getSparqlQueryString(), result.toString()); + return result; + } + } + /** * deletes all Files in the cacheDir, does not delete the cacheDir itself, * and can thus still be used without creating a new Cache Object Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2009-05-18 14:15:08 UTC (rev 1754) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2009-05-18 15:38:38 UTC (rev 1755) @@ -507,6 +507,15 @@ return jsonString; } + public boolean ask(String askQueryString) { + if(cache == null) { + SparqlQuery sq = new SparqlQuery(askQueryString, sparqlEndpoint); + return sq.sendAsk(); + } else { + return cache.executeSparqlAskQuery(new SparqlQuery(askQueryString, sparqlEndpoint)); + } + } + /** * a String Helper which constructs the limit clause of a sparql query. if * sparqlResultLimit is zero, returns nothing Modified: trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java 2009-05-18 14:15:08 UTC (rev 1754) +++ trunk/src/dl-learner/org/dllearner/learningproblems/PosOnlyLP.java 2009-05-18 15:38:38 UTC (rev 1755) @@ -31,6 +31,7 @@ import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.configurators.PosNegLPStandardConfigurator; import org.dllearner.core.configurators.PosOnlyLPConfigurator; import org.dllearner.core.options.CommonConfigMappings; import org.dllearner.core.options.ConfigEntry; @@ -66,6 +67,7 @@ public PosOnlyLP(ReasonerComponent reasoningService) { super(reasoningService); + configurator = new PosOnlyLPConfigurator(this); } /* Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java 2009-05-18 14:15:08 UTC (rev 1754) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java 2009-05-18 15:38:38 UTC (rev 1755) @@ -29,12 +29,14 @@ import java.util.zip.DataFormatException; import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.ReasonerComponent; +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.learningproblems.PosOnlyLP; import org.dllearner.reasoning.FastInstanceChecker; @@ -51,11 +53,11 @@ private static SparqlEndpoint dbpediaEndpoint = SparqlEndpoint.getEndpointLOCALDBpedia(); private static SparqlEndpoint geoDataEndpoint = SparqlEndpoint.getEndpointLOCALGeoData(); - public static void main(String args[]) throws IOException, DataFormatException, LearningProblemUnsupportedException { + public static void main(String args[]) throws IOException, DataFormatException, LearningProblemUnsupportedException, ComponentInitException { File matchesFile = new File("log/geodata/owlsameas_en.dat"); Map<URI,URI> matches = Utility.getMatches(matchesFile); -// SPARQLTasks st = new SPARQLTasks(dbpediaEndpoint); + SPARQLTasks dbpedia = new SPARQLTasks(new Cache("cache/matching"),dbpediaEndpoint); Set<String> positives = new TreeSet<String>(); Set<String> negatives = new TreeSet<String>(); @@ -65,8 +67,8 @@ URI lgdURI = match.getValue(); // test whether the dbpediaURI is a city String query = "ASK {<"+dbpediaURI+"> a <http://dbpedia.org/ontology/City>}"; - SparqlQuery sq = new SparqlQuery(query, dbpediaEndpoint); - boolean isCity = sq.sendAsk(); + boolean isCity = dbpedia.ask(query); +// System.out.println(isCity + " " + lgdURI); if(isCity) { positives.add(lgdURI.toString()); } else { @@ -78,18 +80,31 @@ instances.addAll(positives); instances.addAll(negatives); + System.out.println(instances.size() + " instances - " + positives.size() + " positive examples"); + // plug together DL-Learner components ComponentManager cm = ComponentManager.getInstance(); + SparqlKnowledgeSource ks = cm.knowledgeSource(SparqlKnowledgeSource.class); ks.getConfigurator().setInstances(instances); ks.getConfigurator().setPredefinedEndpoint("LOCALGEODATA"); + ks.getConfigurator().setSaveExtractedFragment(true); + ks.init(); + ReasonerComponent reasoner = cm.reasoner(FastInstanceChecker.class, ks); + reasoner.init(); + PosOnlyLP lp = cm.learningProblem(PosOnlyLP.class, reasoner); lp.getConfigurator().setPositiveExamples(positives); - CELOE algorithm = cm.learningAlgorithm(CELOE.class, lp, reasoner); + lp.init(); + CELOE celoe = cm.learningAlgorithm(CELOE.class, lp, reasoner); + celoe.getConfigurator().setUseHasValueConstructor(true); + celoe.getConfigurator().setValueFrequencyThreshold(3); + celoe.init(); + // execute algorithm - algorithm.start(); + celoe.start(); // Set<EvaluatedDescriptionPosOnly> solutions = (Set<EvaluatedDescriptionPosOnly>) algorithm.getCurrentlyBestEvaluatedDescriptions(); } Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/Utility.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/Utility.java 2009-05-18 14:15:08 UTC (rev 1754) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/Utility.java 2009-05-18 15:38:38 UTC (rev 1755) @@ -28,6 +28,8 @@ import java.util.Map; import java.util.zip.DataFormatException; +import org.apache.log4j.Logger; + /** * Utility methods for creating/optimising matches between knowledge bases. * @@ -36,6 +38,8 @@ */ public final class Utility { + private static Logger logger = Logger.getLogger(Utility.class); + /** * Reads in a file containing known matches between knowledge bases. * @@ -59,9 +63,13 @@ if(tmp.length != 2) { throw new DataFormatException("Line " + lineCount + " incorrectly formatted."); } +// if(matches.containsKey(URI.create(tmp[1]))) { +// logger.warn("multiple key " + tmp[1] + " ... ignoring all but one value"); +// } matches.put(URI.create(tmp[1]), URI.create(tmp[0] + "#id")); lineCount++; } + logger.info("read " + lineCount + " lines"); return matches; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hee...@us...> - 2009-05-18 14:15:17
|
Revision: 1754 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1754&view=rev Author: heeroyuy Date: 2009-05-18 14:15:08 +0000 (Mon, 18 May 2009) Log Message: ----------- -fixed bug Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2009-05-17 19:43:45 UTC (rev 1753) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2009-05-18 14:15:08 UTC (rev 1754) @@ -156,6 +156,7 @@ // suggested concept private List<? extends EvaluatedDescription> evalDescriptions; private boolean isReasonerSet; + private boolean knowledgeSourceIsUpdated; /** * This is the constructor for DL-Learner model. @@ -170,6 +171,7 @@ isReasonerSet = false; this.view = view; ontologyConsistent = true; + knowledgeSourceIsUpdated = false; owlDescription = new HashSet<OWLDescription>(); ComponentManager.setComponentClasses(componenten); cm = ComponentManager.getInstance(); @@ -522,6 +524,14 @@ public EvaluatedDescription getCurrentlySelectedClassDescription(int index) { return evalDescriptions.get(index); } + + public void setKnowledgeSourceIsUpdated(boolean isUpdated) { + knowledgeSourceIsUpdated = isUpdated; + } + + public boolean getIsKnowledgeSourceIsUpdated() { + return knowledgeSourceIsUpdated; + } } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java 2009-05-17 19:43:45 UTC (rev 1753) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java 2009-05-18 14:15:08 UTC (rev 1754) @@ -121,6 +121,7 @@ private static final int SCROLL_HEIGHT = 400; private boolean toogled = false; private String labels; + private int individualSize; /** * The constructor for the DL-Learner tab in the class description @@ -131,6 +132,7 @@ public DLLearnerView(OWLEditorKit editor) { editorKit = editor; labels = ""; + individualSize = 0; model = new DLLearnerModel(editorKit, this); sugPanel = new SuggestClassPanel(model, this); learnerPanel = new JPanel(); @@ -195,18 +197,21 @@ public void makeView(String label) { run.setEnabled(false); String currentConcept = editorKit.getOWLWorkspace().getOWLSelectionModel().getLastSelectedClass().toString(); - if(!labels.equals(currentConcept)) { + if(!labels.equals(currentConcept) || individualSize != editorKit.getModelManager().getActiveOntology().getIndividualAxioms().size()) { + if(individualSize != editorKit.getModelManager().getActiveOntology().getIndividualAxioms().size()) { + model.setKnowledgeSourceIsUpdated(true); + } else { + model.setKnowledgeSourceIsUpdated(false); + } readThread = new ReadingOntologyThread(editorKit, this, model); } - if(!readThread.isAlive() && !labels.equals(currentConcept)) { + if(!readThread.isAlive() && !labels.equals(currentConcept)|| individualSize != editorKit.getModelManager().getActiveOntology().getIndividualAxioms().size()) { readThread.start(); } if(readThread.hasIndividuals()) { run.setEnabled(true); } - //if(labels.equals(currentConcept)) { - //model.getReasoner().setUpdated(); - //} + individualSize = editorKit.getModelManager().getActiveOntology().getIndividualAxioms().size(); labels = currentConcept; run.setText("suggest " + label + " expression"); GridBagConstraints c = new GridBagConstraints(); Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java 2009-05-17 19:43:45 UTC (rev 1753) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java 2009-05-18 14:15:08 UTC (rev 1754) @@ -103,7 +103,6 @@ // individuals of // the concept currentConcept = concept; - if (reasoner.getIndividuals(concept) != null) { if (reasoner.getIndividuals(concept).size() > 0) { hasIndividuals = true; @@ -170,7 +169,7 @@ String loading ="loading instances..."; view.getHintPanel().setForeground(Color.RED); view.setHintMessage(loading); - if(!model.isReasonerSet()) { + if(!model.isReasonerSet() || model.getIsKnowledgeSourceIsUpdated() == true) { model.setKnowledgeSource(); model.setReasoner(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-17 19:43:48
|
Revision: 1753 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1753&view=rev Author: lorenz_b Date: 2009-05-17 19:43:45 +0000 (Sun, 17 May 2009) Log Message: ----------- fixed bug Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-05-17 19:43:11 UTC (rev 1752) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-05-17 19:43:45 UTC (rev 1753) @@ -1,6 +1,9 @@ package org.dllearner.tools.ore.explanation; import java.net.URI; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -11,6 +14,11 @@ import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDataPropertyDomainAxiom; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLDisjointClassesAxiom; +import org.semanticweb.owl.model.OWLObjectPropertyDomainAxiom; +import org.semanticweb.owl.model.OWLObjectPropertyRangeAxiom; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChangeException; import org.semanticweb.owl.model.OWLOntologyCreationException; @@ -20,10 +28,11 @@ public class AxiomRanker { - Map axiomSOSMap; - OWLOntology ontology; - Reasoner reasoner; - OWLDataFactory factory; + private Map axiomSOSMap; + private OWLOntology ontology; + private Reasoner reasoner; + private OWLDataFactory factory; + boolean enableImpactUnsat; public AxiomRanker(OWLOntology ont, Reasoner reasoner, OWLDataFactory fact){ this.ontology = ont; @@ -31,13 +40,120 @@ this.factory = fact; } - private void computeImpactSOS(OWLAxiom ax) { - - + public Set<OWLAxiom> computeImpactSOS(OWLAxiom axiom) { + Set<OWLAxiom> result = new HashSet<OWLAxiom>(); + if (axiom instanceof OWLSubClassAxiom) { + OWLSubClassAxiom subAx = (OWLSubClassAxiom) axiom; + if (subAx.getSubClass() instanceof OWLClass && subAx.getSuperClass() instanceof OWLClass) { + OWLClass sub = (OWLClass) subAx.getSubClass(); + OWLClass sup = (OWLClass) subAx.getSuperClass(); + + for (OWLClass desc : SetUtils.union(reasoner.getDescendantClasses(sub))) { + + for (OWLClass anc : SetUtils.union(reasoner.getAncestorClasses(sup))) { + + if (!anc.equals(factory.getOWLThing()) && !desc.equals(factory.getOWLNothing())) { + OWLSubClassAxiom ax = factory.getOWLSubClassAxiom(desc, anc); + result.add(ax); + } + } + } + } + }else if (axiom instanceof OWLDisjointClassesAxiom) { + Set<OWLDescription> disjointClasses = ((OWLDisjointClassesAxiom) axiom).getDescriptions(); + boolean complex = false; + for (OWLDescription dis : disjointClasses) { + if (dis.isAnonymous()) { + complex = true; + break; + } + } + if (!complex) { + + List<OWLDescription> disjoints = new ArrayList<OWLDescription>(disjointClasses); + + + + for (OWLDescription dis : new ArrayList<OWLDescription>(disjoints)) { + if (!dis.equals(factory.getOWLNothing())) { + disjoints.remove(dis); + Set<? extends OWLDescription> descendants = SetUtils.union(reasoner.getDescendantClasses(dis.asOWLClass())); + descendants.removeAll(reasoner.getEquivalentClasses(factory.getOWLNothing())); +// if (enableImpactUnsat) { +// descendants.addAll(((OWLClass) dis).getSubClasses(ontology)); +// } + for (OWLDescription desc1 : descendants) { + + if (!desc1.equals(factory.getOWLNothing())) { + if (enableImpactUnsat || !reasoner.getEquivalentClasses((desc1)).contains(factory.getOWLNothing())) { + for (OWLDescription desc2 : disjoints) { + + if (!desc2.equals(desc1)) { + Set<OWLDescription> newDis = new HashSet<OWLDescription>(); + newDis.add(desc1); + newDis.add(desc2); + OWLDisjointClassesAxiom ax = factory.getOWLDisjointClassesAxiom(newDis); + result.add(ax); + } + } + } + } + } + + disjoints.add(dis); + + + } + } + return result; + } + } + else if (axiom instanceof OWLObjectPropertyDomainAxiom) { + OWLObjectPropertyDomainAxiom pd = (OWLObjectPropertyDomainAxiom) axiom; + + if (pd.getDomain() instanceof OWLClass) { + OWLClass dom = (OWLClass) pd.getDomain(); + Set<OWLClass> superClasses = SetUtils.union(reasoner.getSuperClasses(dom)); + for (OWLClass sup : superClasses) { + + OWLObjectPropertyDomainAxiom ax = factory.getOWLObjectPropertyDomainAxiom( pd.getProperty(), sup); + result.add(ax); + } + } + } + else if (axiom instanceof OWLDataPropertyDomainAxiom) { + OWLDataPropertyDomainAxiom pd = (OWLDataPropertyDomainAxiom) axiom; + + if (pd.getDomain() instanceof OWLClass) { + OWLClass dom = (OWLClass) pd.getDomain(); + Set<OWLClass> superClasses = SetUtils.union(reasoner.getSuperClasses(dom)); + for (OWLClass sup : superClasses) { + + OWLDataPropertyDomainAxiom ax = factory.getOWLDataPropertyDomainAxiom( pd.getProperty(), sup); + result.add(ax); + } + } + } + else if (axiom instanceof OWLObjectPropertyRangeAxiom) { + OWLObjectPropertyRangeAxiom pd = (OWLObjectPropertyRangeAxiom) axiom; + + if (pd.getRange() instanceof OWLClass) { + OWLClass ran = (OWLClass) pd.getRange(); + Set<OWLClass> superClasses = SetUtils.union(reasoner.getSuperClasses(ran)); + for (OWLClass sup : superClasses) { + + OWLObjectPropertyRangeAxiom ax = factory.getOWLObjectPropertyRangeAxiom(pd.getProperty(), sup); + result.add(ax); + } + } + } + return result; } + + public static void main(String[] args){ try { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-17 19:43:30
|
Revision: 1752 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1752&view=rev Author: lorenz_b Date: 2009-05-17 19:43:11 +0000 (Sun, 17 May 2009) Log Message: ----------- extended explanation-gui showing lost entailments on axiom removal Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-15 11:55:08 UTC (rev 1751) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -1,6 +1,5 @@ package org.dllearner.tools.ore; -import java.net.URI; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -14,7 +13,6 @@ import org.dllearner.tools.ore.explanation.RootFinder; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; -import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; @@ -22,7 +20,6 @@ import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyChangeListener; -import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; @@ -51,41 +48,45 @@ boolean ontologyChanged = true; - private ExplanationManager(String ontPath){ + + private ExplanationManager(OWLOntologyManager manager, Reasoner reasoner, + OWLOntology ontology) { regularExplanationCache = new HashMap<OWLClass, Set<Set<OWLAxiom>>>(); laconicExplanationCache = new HashMap<OWLClass, Set<Set<OWLAxiom>>>(); - - try { - manager = OWLManager.createOWLOntologyManager(); - manager.addOntologyChangeListener(this); - dataFactory = manager.getOWLDataFactory(); - ontology = manager.loadOntology(URI.create(ontPath)); - reasonerFactory = new PelletReasonerFactory(); - reasoner = reasonerFactory.createReasoner(manager); - reasoner.loadOntology(ontology); - reasoner.classify(); - - rootFinder = new RootFinder(manager, reasoner, reasonerFactory); - - regularExpGen = new PelletExplanation(manager, Collections.singleton(ontology)); - laconicExpGen = new LaconicExplanationGenerator(manager, reasonerFactory, Collections.singleton(ontology)); - - rootClasses = new HashSet<OWLClass>(); - unsatClasses = new HashSet<OWLClass>(); - } catch (OWLOntologyCreationException e) { - - e.printStackTrace(); - } + + this.manager = manager; + this.reasoner = reasoner; + this.ontology = ontology; + manager.addOntologyChangeListener(this); + dataFactory = manager.getOWLDataFactory(); + + reasonerFactory = new PelletReasonerFactory(); + + rootFinder = new RootFinder(manager, reasoner, reasonerFactory); + + regularExpGen = new PelletExplanation(manager, Collections + .singleton(ontology)); + laconicExpGen = new LaconicExplanationGenerator(manager, + reasonerFactory, Collections.singleton(ontology)); + + rootClasses = new HashSet<OWLClass>(); + unsatClasses = new HashSet<OWLClass>(); + } - public static synchronized ExplanationManager getExplanationManager(String ontPath){ - if(instance == null){ - instance = new ExplanationManager(ontPath); + public static synchronized ExplanationManager getExplanationManager( + OWLOntologyManager manager, Reasoner reasoner, OWLOntology ontology) { + if (instance == null) { + instance = new ExplanationManager(manager, reasoner, ontology); } return instance; } + public static synchronized ExplanationManager getExplanationManager(){ + return instance; + } + public Set<OWLClass> getUnsatisfiableClasses(){ computeRootUnsatisfiableClasses(); return unsatClasses; @@ -181,4 +182,21 @@ ontologyChanged = true; } + + public int getArity(OWLClass cl, OWLAxiom ax) { + int arity = 0; + Set<Set<OWLAxiom>> explanations = regularExplanationCache.get(cl); + + if(explanations != null){ + + for (Set<OWLAxiom> explanation : explanations) { + if (explanation.contains(ax)) { + arity++; + } + } + } + return arity; + } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-15 11:55:08 UTC (rev 1751) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -4,9 +4,14 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; +import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.net.URI; +import java.util.Collections; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import javax.swing.BorderFactory; import javax.swing.Box; @@ -14,24 +19,33 @@ import javax.swing.DefaultListModel; import javax.swing.JComponent; import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JSplitPane; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import javax.swing.table.DefaultTableModel; import org.jdesktop.swingx.JXList; -import org.jdesktop.swingx.JXTable; +import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; -public class ExplanationPanel extends JPanel implements ListSelectionListener, ActionListener{ +public class ExplanationPanel extends JPanel implements ListSelectionListener, + ActionListener { private JXList unsatList; private JSplitPane splitPane; + private JSplitPane statsSplitPane; private JScrollPane listScrollPane; private JScrollPane explanationsScrollPane; private JComponent explanationsPanel; @@ -40,61 +54,50 @@ private ButtonGroup explanationType; private JRadioButton regularButton; private JRadioButton laconicButton; - private OWLSyntaxTableCellRenderer tableRenderer; + private UnsatClassesListCellRenderer listRenderer; + + private ExplanationManager expManager; + private ImpactManager impManager; + - private ExplanationManager manager; private OWLClass unsatClass; /** * */ private static final long serialVersionUID = 2213073383532597460L; - public ExplanationPanel(ExplanationManager manager){ + public ExplanationPanel(ExplanationManager expMan, ImpactManager impMan) { + - this.manager = manager; - + this.expManager = expMan; + this.impManager = impMan; + setLayout(new BorderLayout()); - + Dimension minimumSize = new Dimension(400, 400); - - tableRenderer = new OWLSyntaxTableCellRenderer(); - listRenderer = new UnsatClassesListCellRenderer(manager); - - - - DefaultListModel model = new DefaultListModel(); - for(OWLClass root : manager.getRootUnsatisfiableClasses()){ - model.addElement(root); - } - for(OWLClass unsat : manager.getUnsatisfiableClasses()){ - if(!model.contains(unsat)){ - model.addElement(unsat); - } - } - - unsatList = new JXList(model); - + listRenderer = new UnsatClassesListCellRenderer(expManager); + unsatList = new JXList(); + fillUnsatClassesList(); unsatList.addListSelectionListener(this); unsatList.setCellRenderer(listRenderer); listScrollPane = new JScrollPane(unsatList); listScrollPane.setPreferredSize(minimumSize); - + explanationsPanel = new Box(1); - - + JPanel pan = new JPanel(new BorderLayout()); pan.add(explanationsPanel, BorderLayout.NORTH); explanationsScrollPane = new JScrollPane(pan); explanationsScrollPane.setPreferredSize(minimumSize); - explanationsScrollPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); + explanationsScrollPane.setBorder(BorderFactory + .createLineBorder(Color.LIGHT_GRAY)); explanationsScrollPane.getViewport().setOpaque(false); - explanationsScrollPane.getViewport().setBackground(null); - explanationsScrollPane.setOpaque(false); - - + explanationsScrollPane.getViewport().setBackground(null); + explanationsScrollPane.setOpaque(false); + regularButton = new JRadioButton("regular", true); regularButton.setActionCommand("regular"); regularButton.addActionListener(this); @@ -107,69 +110,77 @@ buttonPanel = new JPanel(); buttonPanel.add(regularButton); buttonPanel.add(laconicButton); - + buttonExplanationsPanel = new JPanel(); buttonExplanationsPanel.setLayout(new BorderLayout()); - buttonExplanationsPanel.add(explanationsScrollPane, BorderLayout.CENTER); + buttonExplanationsPanel + .add(explanationsScrollPane, BorderLayout.CENTER); buttonExplanationsPanel.add(buttonPanel, BorderLayout.NORTH); + + statsSplitPane = new JSplitPane(0); + statsSplitPane.setResizeWeight(1.0D); + statsSplitPane.setTopComponent(buttonExplanationsPanel); - splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, buttonExplanationsPanel); + JPanel impactPanel = new JPanel(); + impactPanel.setLayout(new BorderLayout()); + impactPanel.add(new JLabel("Lost entailments"), BorderLayout.NORTH); + JScrollPane scr = new JScrollPane(new ImpactTable(impManager)); + impactPanel.add(scr); + + statsSplitPane.setBottomComponent(impactPanel); + + statsSplitPane.setBorder(null); + statsSplitPane.setDividerLocation(500); + statsSplitPane.setOneTouchExpandable(true); + + splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, + statsSplitPane); splitPane.setOneTouchExpandable(true); splitPane.setDividerLocation(150); splitPane.setBorder(null); - - + add(splitPane); } - - - private void addExplanationTable(List<OWLAxiom> explanation, int number){ - - - JXTable expTable = new JXTable(); - DefaultTableModel model = new DefaultTableModel(); - model.addColumn("axiom", explanation.toArray()); - expTable.setModel(model); - expTable.setDefaultRenderer(Object.class, tableRenderer); - - - -// DLSyntaxObjectRenderer r = new DLSyntaxObjectRenderer(); -// Vector<String> t = new Vector<String>(); -// for(OWLAxiom ax : explanation) -// t.add(r.render(ax)); -// model.addColumn("axiom", t); -// expTable.setModel(new ExplanationTableModel()); -// expTable.setDefaultRenderer(JButton.class, new ExplanationTableCellRenderer(expTable.getDefaultRenderer(JButton.class))); -// expTable.addMouseListener(new JTableButtonMouseListener(expTable)); + private void fillUnsatClassesList() { + DefaultListModel model = new DefaultListModel(); + Set<OWLClass> rootClasses = new TreeSet<OWLClass>(expManager + .getRootUnsatisfiableClasses()); + for (OWLClass root : rootClasses) { + model.addElement(root); + } + Set<OWLClass> derivedClasses = new TreeSet<OWLClass>(expManager + .getUnsatisfiableClasses()); + derivedClasses.removeAll(rootClasses); + for (OWLClass unsat : derivedClasses) { + model.addElement(unsat); - expTable.getColumn(0).sizeWidthToFit(); - expTable.setSize(300, 300); - expTable.setEditable(false); - - - + } + unsatList.setModel(model); + } + private void addExplanationTable(List<OWLAxiom> explanation, int number) { + + // DLSyntaxObjectRenderer r = new DLSyntaxObjectRenderer(); + // Vector<String> t = new Vector<String>(); + // for(OWLAxiom ax : explanation) + // t.add(r.render(ax)); + // model.addColumn("axiom", t); -// JPanel tablePanel = new JPanel();tablePanel.setLayout(new GridLayout(0,1)); -// -// tablePanel.add(expTable); -// tablePanel.setPreferredSize(new Dimension(300, 300)); -// tablePanel.setBorder(BorderFactory.createTitledBorder("explanation " + number)); - + ExplanationTable expTable = new ExplanationTable(explanation, impManager, expManager, unsatClass); explanationsPanel.add(new ExplanationTablePanel(expTable, number)); - + } - - private void clearExplanationsPanel(){ + + private void clearExplanationsPanel() { explanationsPanel.removeAll(); } - - private void showLaconicExplanations(){ + + private void showLaconicExplanations() { clearExplanationsPanel(); int counter = 1; - for(List<OWLAxiom> explanation : manager.getOrderedLaconicUnsatisfiableExplanations(unsatClass)){ + for (List<OWLAxiom> explanation : expManager + .getOrderedLaconicUnsatisfiableExplanations(unsatClass)) { addExplanationTable(explanation, counter); counter++; } @@ -178,11 +189,12 @@ explanationsPanel.add(Box.createVerticalStrut(10)); this.updateUI(); } - - private void showRegularExplanations(){ + + private void showRegularExplanations() { clearExplanationsPanel(); int counter = 1; - for(List<OWLAxiom> explanation : manager.getOrderedUnsatisfiableExplanations(unsatClass)){ + for (List<OWLAxiom> explanation : expManager + .getOrderedUnsatisfiableExplanations(unsatClass)) { addExplanationTable(explanation, counter); counter++; } @@ -191,49 +203,103 @@ explanationsPanel.add(Box.createVerticalStrut(10)); this.updateUI(); } - @Override public void valueChanged(ListSelectionEvent e) { - unsatClass = (OWLClass)((JXList)e.getSource()).getSelectedValue(); + unsatClass = (OWLClass) ((JXList) e.getSource()).getSelectedValue(); + +// OWLEditorKitFactory edFac = new OWLEditorKitFactory(); +// edFac.canLoad(URI.create("file:examples/ore/koala.owl")); +// +// try { +// EditorKit kit = edFac.createEditorKit(); +// } catch (Exception e2) { +// // TODO Auto-generated catch block +// e2.printStackTrace(); +// } +// +// OWLModelManager m = new OWLModelManagerImpl(); +// try { +// m.loadOntology(URI.create("file:examples/ore/koala.owl")); +// } catch (OWLOntologyCreationException e1) { +// // TODO Auto-generated catch block +// e1.printStackTrace(); +// } +// +// OWLExpressionCheckerFactory f = new ManchesterOWLExpressionCheckerFactory(m); +// OWLExpressionChecker<OWLDescription> checker = f.getOWLDescriptionChecker(); +// +// ExpressionEditor<OWLDescription> editor2 = new ExpressionEditor<OWLDescription>(); +// editor2.setVisible(true); +// editor.setDescription(unsatClass); - if(regularButton.isSelected()){ + + if (regularButton.isSelected()) { showRegularExplanations(); } else { showLaconicExplanations(); } - + } - - @Override public void actionPerformed(ActionEvent e) { - if(e.getActionCommand().equals("regular")){ + if (e.getActionCommand().equals("regular")) { showRegularExplanations(); - } else if(e.getActionCommand().equals("laconic") && !unsatList.isSelectionEmpty()){ + } else if (e.getActionCommand().equals("laconic") + && !unsatList.isSelectionEmpty()) { showLaconicExplanations(); - + } - + } - - public static void main(String[] args){ - - String file = "file:examples/ore/miniEconomy.owl"; - - ExplanationManager manager = ExplanationManager.getExplanationManager(file); - ExplanationPanel panel = new ExplanationPanel(manager); - - - JFrame test = new JFrame(); - test.setLayout(new GridLayout(0, 1)); - test.setSize(new Dimension(800, 500)); - test.add(panel); - test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - test.setVisible(true); - - + + public static void main(String[] args) { + + try { + String file = "file:examples/ore/koala.owl"; + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI + .create(file)); + PelletReasonerFactory reasonerFactory = new PelletReasonerFactory(); + Reasoner reasoner = reasonerFactory.createReasoner(manager); + reasoner.loadOntologies(Collections.singleton(ontology)); + reasoner.classify(); + ExplanationManager expManager = ExplanationManager + .getExplanationManager(manager, reasoner, ontology); + ImpactManager impManager = ImpactManager.getImpactManager(manager, + reasoner, ontology); + ExplanationPanel panel = new ExplanationPanel(expManager, + impManager); + + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + + JFrame test = new JFrame(); + test.setLayout(new GridLayout(0, 1)); + test.setSize(new Dimension(1200, 700)); + test.add(panel); + test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + test.setVisible(true); + } catch (HeadlessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (UnsupportedLookAndFeelException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } } -} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,186 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.util.List; + +import javax.swing.AbstractCellEditor; +import javax.swing.JButton; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; + +import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class ExplanationTable extends JXTable implements ImpactManagerListener{ + + /** + * + */ + private static final long serialVersionUID = 5580730282611559609L; + + private List<OWLAxiom> explanation; + private ImpactManager impMan; + + public ExplanationTable(List<OWLAxiom> explanation, ImpactManager impMan, ExplanationManager expMan, OWLClass cl) { + this.explanation = explanation; + this.impMan = impMan; + setBackground(Color.WHITE); + setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + setModel(new ExplanationTableModel(explanation, expMan, impMan, cl)); + getColumn(0).setCellRenderer(new OWLSyntaxTableCellRenderer(impMan)); + TableColumn column4 = getColumn(3); + column4.setCellRenderer(new ButtonCellRenderer()); + column4.setCellEditor(new ButtonCellEditor()); + column4.setResizable(false); + setColumnSizes(); + getSelectionModel().addListSelectionListener(new ListSelectionListener(){ + + + final ExplanationTable table; + + @Override + public void valueChanged(ListSelectionEvent e) { + + table.changeSelection(); + + } + { + table = ExplanationTable.this; + + } + + }); + + addFocusListener(new FocusListener() { + + final ExplanationTable table; + + public void focusGained(FocusEvent focusevent) + { + } + + public void focusLost(FocusEvent e) + { + table.clearSelection(); + table.changeSelection(); + + } + + + + + { + + table = ExplanationTable.this; + + } + }); + } + + private OWLAxiom getOWLAxiomAtRow(int rowIndex){ + return ((ExplanationTableModel)getModel()).getOWLAxiomAtRow(rowIndex); + } + + private void setColumnSizes(){ + getColumn(1).setMaxWidth(30); + getColumn(2).setMaxWidth(30); + getColumn(3).setMaxWidth(80); + } + + private void changeSelection() { + + + if(getSelectedRow() >=0){ + OWLAxiom rowAxiom = getOWLAxiomAtRow(getSelectedRow()); + impMan.setActualAxiom(rowAxiom); + } else { + impMan.setActualAxiom(null); + } + + } + + class ButtonCellRenderer extends JButton implements TableCellRenderer{ + + /** + * + */ + private static final long serialVersionUID = 1962950956976967243L; + + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + if (isSelected) { + setForeground(table.getSelectionForeground()); + setBackground(table.getSelectionBackground()); + } else { + setForeground(table.getForeground()); + setBackground(UIManager.getColor("Button.background")); + } + setText( (value ==null) ? "" : value.toString() ); + return this; + } + + + } + + class ButtonCellEditor extends AbstractCellEditor implements + TableCellEditor, ActionListener { + /** + * + */ + private static final long serialVersionUID = 9017452102605141646L; + JTable table; + JButton editButton; + String text; + + + public ButtonCellEditor() { + super(); + + editButton = new JButton(); + editButton.setFocusPainted(false); + editButton.addActionListener(this); + } + + + @Override + public Component getTableCellEditorComponent(JTable table, + Object value, boolean isSelected, int row, int column) { + text = (value == null) ? "" : value.toString(); + editButton.setText(text); + return editButton; + } + + @Override + public Object getCellEditorValue() { + return text; + } + + @Override + public void actionPerformed(ActionEvent e) { + fireEditingStopped(); + } + } + + @Override + public void axiomForImpactChanged() { + repaint(); + + } + + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,99 @@ +package org.dllearner.tools.ore; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class ExplanationTableModel extends AbstractTableModel { + + + /** + * + */ + private static final long serialVersionUID = -4537633628250304813L; + private List<OWLAxiom> axioms; + private List<Boolean> remove; + private ExplanationManager expMan; + private ImpactManager impMan; + private OWLClass unsat; + + public ExplanationTableModel(List<OWLAxiom> axioms, ExplanationManager expMan, ImpactManager impMan, OWLClass cl){ + this.axioms = axioms; + this.expMan = expMan; + this.impMan = impMan; + this.unsat = cl; + remove = new ArrayList<Boolean>(); + for(int i = 0; i < axioms.size(); i++){ + remove.add(false); + } + } + + @Override + public int getColumnCount() { + return 4; + } + + @Override + public int getRowCount() { + return axioms.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0 && rowIndex >=0){ + return axioms.get(rowIndex); + } else if(columnIndex == 1){ + return expMan.getArity(unsat, axioms.get(rowIndex)); + } else if(columnIndex == 2) { + return Boolean.valueOf(impMan.isSelected(getOWLAxiomAtRow(rowIndex)));//remove.get(rowIndex); + } else { + return "rewrite"; + } + + } + + + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + if(columnIndex == 2){ + OWLAxiom ax = getOWLAxiomAtRow(rowIndex); + if(impMan.isSelected(ax)){ + impMan.removeAxiomFromImpactList(ax); + } else { + impMan.addAxiom2ImpactList(ax); + } + } + super.setValueAt(value, rowIndex, columnIndex); + } + + @Override + public Class<? extends Object> getColumnClass(int columnIndex){ + if(columnIndex == 0) { + return OWLAxiom.class; + } else if(columnIndex == 1){ + return int.class; + } else if(columnIndex == 2) { + return Boolean.class; + } else { + return String.class; + } + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(columnIndex == 2 || columnIndex == 3) + return true; + return false; + } + + public OWLAxiom getOWLAxiomAtRow(int rowIndex){ + return axioms.get(rowIndex); + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java 2009-05-15 11:55:08 UTC (rev 1751) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -23,6 +23,7 @@ this.explanationTable = explanationTable; this.explanationNumber = explanationNumber; createGUI(); + } private void createGUI(){ Added: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,89 @@ +package org.dllearner.tools.ore; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.dllearner.tools.ore.explanation.AxiomRanker; +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyManager; + +public class ImpactManager { + + private static ImpactManager instance; + private Map<OWLAxiom, Set<OWLAxiom>> impact; + private AxiomRanker ranker; + private OWLAxiom actual; + private List<OWLAxiom> selectedAxioms; + private List<ImpactManagerListener> listeners; + + private ImpactManager(OWLOntologyManager manager, Reasoner reasoner, OWLOntology ontology) { + impact = new HashMap<OWLAxiom, Set<OWLAxiom>>(); + selectedAxioms = new ArrayList<OWLAxiom>(); + listeners = new ArrayList<ImpactManagerListener>(); + ranker = new AxiomRanker(ontology, reasoner, manager.getOWLDataFactory()); + + } + + private ImpactManager(){ + + } + + public void addListener(ImpactManagerListener listener){ + listeners.add(listener); + } + + public void removeListener(ImpactManagerListener listener){ + listeners.remove(listener); + } + + public static synchronized ImpactManager getImpactManager(OWLOntologyManager manager, Reasoner reasoner, OWLOntology ontology) { + if (instance == null) { + instance = new ImpactManager(manager, reasoner, ontology); + } + return instance; + } + + + public Set<OWLAxiom> getImpactAxioms() { + Set<OWLAxiom> imp = impact.get(actual); + if (imp == null) { + imp = new HashSet<OWLAxiom>(); + impact.put(actual, imp); + imp.addAll(ranker.computeImpactSOS(actual)); + } + return imp; + } + + public void setActualAxiom(OWLAxiom ax){ + actual = ax; + fireAxiomForImpactChanged(); + } + + public void addAxiom2ImpactList(OWLAxiom ax){ + selectedAxioms.add(ax); + fireAxiomForImpactChanged(); + } + + public void removeAxiomFromImpactList(OWLAxiom ax){ + selectedAxioms.remove(ax); + fireAxiomForImpactChanged(); + } + + public boolean isSelected(OWLAxiom ax){ + return selectedAxioms.contains(ax); + } + + private void fireAxiomForImpactChanged(){ + for(ImpactManagerListener listener : listeners){ + listener.axiomForImpactChanged(); + } + } + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,5 @@ +package org.dllearner.tools.ore; + +public interface ImpactManagerListener { + public abstract void axiomForImpactChanged(); +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTable.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,27 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; + +import org.jdesktop.swingx.JXTable; + +public class ImpactTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 4146762679753151490L; + + public ImpactTable(ImpactManager manager){ + super(new ImpactTableModel(manager)); + + setShowHorizontalLines(true); + setGridColor(Color.LIGHT_GRAY); + setTableHeader(null); + getColumnModel().getColumn(0).setCellRenderer(new OWLSyntaxTableCellRenderer()); + setRowHeight(getRowHeight() + 4); + + } + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,61 @@ +package org.dllearner.tools.ore; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.semanticweb.owl.model.OWLAxiom; + +public class ImpactTableModel extends AbstractTableModel implements ImpactManagerListener +{ + + /** + * + */ + private static final long serialVersionUID = 6109818990550020196L; + private ImpactManager impMan; + private List<OWLAxiom> impact; + + public ImpactTableModel(ImpactManager impMan) + { + + impact = new ArrayList<OWLAxiom>(); + this.impMan = impMan; + impMan.addListener(this); + rebuildData(); + } + + private void rebuildData() + { + impact.clear(); + impact.addAll(impMan.getImpactAxioms()); + Collections.sort(impact); + fireTableDataChanged(); + } + + + + public int getRowCount() + { + return impact.size(); + } + + public int getColumnCount() + { + return 1; + } + + public Object getValueAt(int rowIndex, int columnIndex) + { + return impact.get(rowIndex); + } + + + @Override + public void axiomForImpactChanged() { + rebuildData(); + + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java 2009-05-15 11:55:08 UTC (rev 1751) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -22,10 +22,12 @@ private StringWriter buffer; private TextBlockWriter writer; private ManchesterSyntaxObjectRenderer renderer; + private ImpactManager impMan; // private List<String> oldAxioms; - public OWLSyntaxTableCellRenderer(){ + public OWLSyntaxTableCellRenderer(ImpactManager impMan){ super(); + this.impMan = impMan; buffer = new StringWriter(); writer = new TextBlockWriter(buffer); renderer = new ManchesterSyntaxObjectRenderer(writer); @@ -34,12 +36,24 @@ // oldAxioms = new ArrayList<String>(); } + + public OWLSyntaxTableCellRenderer(){ + super(); + buffer = new StringWriter(); + writer = new TextBlockWriter(buffer); + renderer = new ManchesterSyntaxObjectRenderer(writer); + renderer.setWrapLines( false ); + renderer.setSmartIndent( true ); + } + @Override protected void setValue(Object value) { if(value instanceof OWLAxiom){ - - + boolean striked = false; + if(impMan != null && impMan.isSelected((OWLAxiom)value)){ + striked = true; + } ((OWLAxiom)value).accept(renderer); writer.flush(); @@ -71,6 +85,10 @@ StringBuffer bf = new StringBuffer(); bf.append("<html>"); + if(striked){ + bf.append("<strike>"); + } + String token; while(st.hasMoreTokens()){ token = st.nextToken(); @@ -88,8 +106,12 @@ bf.append(" " + token + " "); } } + if(striked){ + bf.append("</strike>"); + } bf.append("</html>"); newAxiom = bf.toString(); + setText(newAxiom); // oldAxioms.add(buffer.toString()); buffer.getBuffer().delete(0, buffer.toString().length()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-15 11:55:24
|
Revision: 1751 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1751&view=rev Author: jenslehmann Date: 2009-05-15 11:55:08 +0000 (Fri, 15 May 2009) Log Message: ----------- - prepared class matching - added support for ASK queries Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java trunk/src/dl-learner/org/dllearner/scripts/matching/Utility.java Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2009-05-14 06:33:31 UTC (rev 1750) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SPARQLTasks.java 2009-05-15 11:55:08 UTC (rev 1751) @@ -28,6 +28,7 @@ import org.dllearner.utilities.datastructures.StringTuple; import org.dllearner.utilities.owl.OWLVocabulary; +import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetFactory; import com.hp.hpl.jena.query.ResultSetFormatter; Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2009-05-14 06:33:31 UTC (rev 1750) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlEndpoint.java 2009-05-15 11:55:08 UTC (rev 1751) @@ -85,6 +85,8 @@ return getEndpointLOCALDBpedia(); } else if (name.equals("LOCALGEONAMES")) { return getEndpointLOCALGeonames(); + } else if (name.equals("LOCALGEODATA")) { + return getEndpointLOCALGeoData(); } else if (name.equals("LOCALJOSECKI") || name.equals("LOCALJOSEKI") ) { return getEndpointlocalJoseki(); } else if (name.equals("LOCALJOSEKIBIBLE")||name.equals("LOCALJOSECKIBIBLE")) { Modified: trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2009-05-14 06:33:31 UTC (rev 1750) +++ trunk/src/dl-learner/org/dllearner/kb/sparql/SparqlQuery.java 2009-05-15 11:55:08 UTC (rev 1751) @@ -41,7 +41,7 @@ /** * Represents one SPARQL query. It includes support for stopping the SPARQL * query (which may be necessary if a timeout is reached) and is designed to be - * able to run a query in a separate thread. + * able to run a query in a separate thread. * * @author Jens Lehmann * @author Sebastian Hellmann @@ -142,6 +142,15 @@ return rs; } + public boolean sendAsk() { + isRunning = true; + String service = sparqlEndpoint.getURL().toString(); + queryExecution = new QueryEngineHTTP(service, sparqlQueryString); + boolean result = queryExecution.execAsk(); + isRunning = false; + return result; + } + /** * Stops the execution of the query. */ Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java 2009-05-14 06:33:31 UTC (rev 1750) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java 2009-05-15 11:55:08 UTC (rev 1751) @@ -20,12 +20,14 @@ package org.dllearner.scripts.matching; import java.io.BufferedReader; +import java.io.File; import java.io.FileReader; import java.io.IOException; import java.net.URI; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.zip.DataFormatException; import org.apache.log4j.Level; import org.apache.log4j.Logger; @@ -140,25 +142,13 @@ return discarded; } - public static void main(String args[]) throws IOException { + public static void main(String args[]) throws IOException, DataFormatException { Logger.getRootLogger().setLevel(Level.TRACE); // test file - String testFile = "log/geodata/owlsameas_en.dat"; + File testFile = new File("log/geodata/owlsameas_en.dat"); // map for collecting matches - Map<URI,URI> matches = new HashMap<URI,URI>(); - // read file line by line to collect matches - BufferedReader br = new BufferedReader(new FileReader(testFile)); - String line; - while ((line = br.readLine()) != null) { - String[] tmp = line.split("\t"); -// System.out.println(line); -// for(String test : tmp) { -// System.out.println(test); -// } - - matches.put(URI.create(tmp[1]), URI.create(tmp[0] + "#id")); - } + Map<URI,URI> matches = Utility.getMatches(testFile); // perform evaluation and print results Evaluation eval = new Evaluation(matches); System.out.println(eval.getTests() + " points tested (" + eval.getDiscarded() + " discarded)"); Added: trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/LearnOSMClasses.java 2009-05-15 11:55:08 UTC (rev 1751) @@ -0,0 +1,96 @@ +/** + * Copyright (C) 2007-2009, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.scripts.matching; + +import java.io.File; +import java.io.IOException; +import java.net.URI; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import java.util.Map.Entry; +import java.util.zip.DataFormatException; + +import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.LearningProblemUnsupportedException; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.kb.sparql.SparqlQuery; +import org.dllearner.learningproblems.PosOnlyLP; +import org.dllearner.reasoning.FastInstanceChecker; + +/** + * Uses learning algorithms to learn class definitions for DBpedia + * classes in LinkedGeoData. As a final result, we can classify most + * objects in LinkedGeoData using the DBpedia ontology. + * + * @author Jens Lehmann + * + */ +public class LearnOSMClasses { + + private static SparqlEndpoint dbpediaEndpoint = SparqlEndpoint.getEndpointLOCALDBpedia(); + private static SparqlEndpoint geoDataEndpoint = SparqlEndpoint.getEndpointLOCALGeoData(); + + public static void main(String args[]) throws IOException, DataFormatException, LearningProblemUnsupportedException { + File matchesFile = new File("log/geodata/owlsameas_en.dat"); + Map<URI,URI> matches = Utility.getMatches(matchesFile); + +// SPARQLTasks st = new SPARQLTasks(dbpediaEndpoint); + Set<String> positives = new TreeSet<String>(); + Set<String> negatives = new TreeSet<String>(); + + // loop through all matches + for(Entry<URI,URI> match : matches.entrySet()) { + URI dbpediaURI = match.getKey(); + URI lgdURI = match.getValue(); + // test whether the dbpediaURI is a city + String query = "ASK {<"+dbpediaURI+"> a <http://dbpedia.org/ontology/City>}"; + SparqlQuery sq = new SparqlQuery(query, dbpediaEndpoint); + boolean isCity = sq.sendAsk(); + if(isCity) { + positives.add(lgdURI.toString()); + } else { + negatives.add(lgdURI.toString()); + } + } + + Set<String> instances = new TreeSet<String>(); + instances.addAll(positives); + instances.addAll(negatives); + + // plug together DL-Learner components + ComponentManager cm = ComponentManager.getInstance(); + SparqlKnowledgeSource ks = cm.knowledgeSource(SparqlKnowledgeSource.class); + ks.getConfigurator().setInstances(instances); + ks.getConfigurator().setPredefinedEndpoint("LOCALGEODATA"); + ReasonerComponent reasoner = cm.reasoner(FastInstanceChecker.class, ks); + PosOnlyLP lp = cm.learningProblem(PosOnlyLP.class, reasoner); + lp.getConfigurator().setPositiveExamples(positives); + CELOE algorithm = cm.learningAlgorithm(CELOE.class, lp, reasoner); + + // execute algorithm + algorithm.start(); +// Set<EvaluatedDescriptionPosOnly> solutions = (Set<EvaluatedDescriptionPosOnly>) algorithm.getCurrentlyBestEvaluatedDescriptions(); + } + +} Added: trunk/src/dl-learner/org/dllearner/scripts/matching/Utility.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/Utility.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/Utility.java 2009-05-15 11:55:08 UTC (rev 1751) @@ -0,0 +1,68 @@ +/** + * Copyright (C) 2007-2009, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.scripts.matching; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.net.URI; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.DataFormatException; + +/** + * Utility methods for creating/optimising matches between knowledge bases. + * + * @author Jens Lehmann + * + */ +public final class Utility { + + /** + * Reads in a file containing known matches between knowledge bases. + * + * Note: + * - Currently, it is assumed that the format is URI + tabulator + URI + newline. + * - Currently, #id is appended to the second URI on the line. + * - Currently, the order is reversed. + * + * @param file A file, which contains matches. + * @return A map containing the matches. + * @throws IOException If an error occurs during reading the file. + */ + public static Map<URI, URI> getMatches(File file) throws IOException, DataFormatException { + Map<URI,URI> matches = new HashMap<URI,URI>(); + // read file line by line to collect matches + BufferedReader br = new BufferedReader(new FileReader(file)); + String line; + int lineCount = 0; + while ((line = br.readLine()) != null) { + String[] tmp = line.split("\t"); + if(tmp.length != 2) { + throw new DataFormatException("Line " + lineCount + " incorrectly formatted."); + } + matches.put(URI.create(tmp[1]), URI.create(tmp[0] + "#id")); + lineCount++; + } + return matches; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hee...@us...> - 2009-05-14 06:33:44
|
Revision: 1750 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1750&view=rev Author: heeroyuy Date: 2009-05-14 06:33:31 +0000 (Thu, 14 May 2009) Log Message: ----------- -fixed bug that plugin shows loding instances... when ontology is inconsistent Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2009-05-10 13:33:52 UTC (rev 1749) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2009-05-14 06:33:31 UTC (rev 1750) @@ -228,13 +228,14 @@ reasoner.isSatisfiable(); view.setIsInconsistent(false); isReasonerSet = true; - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - System.out.println("fehler!!!!!!!!!"); - e.printStackTrace(); + }catch (ComponentInitException e) { + System.out.println("testen"); + view.setIsInconsistent(true); + //e.printStackTrace(); } catch (InconsistentOntologyException incon) { + System.out.println("test"); view.setIsInconsistent(true); - } + } } /** Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java 2009-05-10 13:33:52 UTC (rev 1749) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java 2009-05-14 06:33:31 UTC (rev 1750) @@ -204,6 +204,9 @@ if(readThread.hasIndividuals()) { run.setEnabled(true); } + //if(labels.equals(currentConcept)) { + //model.getReasoner().setUpdated(); + //} labels = currentConcept; run.setText("suggest " + label + " expression"); GridBagConstraints c = new GridBagConstraints(); @@ -238,13 +241,14 @@ c.weighty = 0.0; c.gridwidth = 1; addButtonPanel.add("North", accept); - //c.gridwidth = GridBagConstraints.REMAINDER; learner.add(addButtonPanel, c); - c.fill = GridBagConstraints.HORIZONTAL; - c.gridwidth = GridBagConstraints.REMAINDER; + c.fill = GridBagConstraints.BOTH; + c.weightx = 0.0; + c.weighty = 0.0; c.gridx = 0; c.gridy = 2; + hint.setPreferredSize(new Dimension(490, 60)); learner.add(hint, c); advancedPanel.add(advanced); @@ -252,7 +256,6 @@ advanced.setIcon(icon); advanced.setSelected(false); c.fill = GridBagConstraints.NONE; - c.gridwidth = GridBagConstraints.RELATIVE; c.gridx = 0; c.weightx = 0.0; c.weighty = 0.0; @@ -261,8 +264,6 @@ posPanel.setVisible(false); c.fill = GridBagConstraints.BOTH; - c.gridwidth = GridBagConstraints.RELATIVE; - c.gridheight = GridBagConstraints.RELATIVE; c.gridx = 0; c.gridy = 4; c.weightx = 0.0; @@ -449,6 +450,10 @@ this.isInconsistent = isIncon; } + public boolean getIsInconsistent() { + return isInconsistent; + } + /** * Adds Actionlistener to the run button. * @param a ActionListener Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java 2009-05-10 13:33:52 UTC (rev 1749) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java 2009-05-14 06:33:31 UTC (rev 1750) @@ -175,7 +175,7 @@ model.setReasoner(); } reasoner = model.getReasoner(); - isInconsistent = false; + isInconsistent = view.getIsInconsistent(); if(!isInconsistent) { this.checkURI(); this.setPositiveConcept(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-10 14:22:29
|
Revision: 1749 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1749&view=rev Author: lorenz_b Date: 2009-05-10 13:33:52 +0000 (Sun, 10 May 2009) Log Message: ----------- design update for explanation view Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-07 11:41:54 UTC (rev 1748) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-10 13:33:52 UTC (rev 1749) @@ -18,7 +18,10 @@ import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.OWLOntologyChangeListener; import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; @@ -29,7 +32,7 @@ import com.clarkparsia.explanation.PelletExplanation; -public class ExplanationManager { +public class ExplanationManager implements OWLOntologyChangeListener{ private static ExplanationManager instance; @@ -43,6 +46,9 @@ private RootFinder rootFinder; private Map<OWLClass, Set<Set<OWLAxiom>>> regularExplanationCache; private Map<OWLClass, Set<Set<OWLAxiom>>> laconicExplanationCache; + private Set<OWLClass> unsatClasses; + private Set<OWLClass> rootClasses; + boolean ontologyChanged = true; private ExplanationManager(String ontPath){ @@ -51,16 +57,21 @@ try { manager = OWLManager.createOWLOntologyManager(); + manager.addOntologyChangeListener(this); dataFactory = manager.getOWLDataFactory(); ontology = manager.loadOntology(URI.create(ontPath)); reasonerFactory = new PelletReasonerFactory(); reasoner = reasonerFactory.createReasoner(manager); reasoner.loadOntology(ontology); reasoner.classify(); + rootFinder = new RootFinder(manager, reasoner, reasonerFactory); regularExpGen = new PelletExplanation(manager, Collections.singleton(ontology)); laconicExpGen = new LaconicExplanationGenerator(manager, reasonerFactory, Collections.singleton(ontology)); + + rootClasses = new HashSet<OWLClass>(); + unsatClasses = new HashSet<OWLClass>(); } catch (OWLOntologyCreationException e) { e.printStackTrace(); @@ -74,15 +85,29 @@ return instance; } + public Set<OWLClass> getUnsatisfiableClasses(){ - return reasoner.getInconsistentClasses(); + computeRootUnsatisfiableClasses(); + return unsatClasses; } - public Set<OWLClass> getRootUnsatisfiableClasses(){ - return rootFinder.getRootClasses(); + computeRootUnsatisfiableClasses(); + return rootClasses; } + + public void computeRootUnsatisfiableClasses(){ + if(ontologyChanged){ + rootClasses.clear(); + unsatClasses.clear(); + unsatClasses.addAll(reasoner.getInconsistentClasses()); + rootClasses.addAll(rootFinder.getRootClasses()); + ontologyChanged = false; + } + + } + public Set<Set<OWLAxiom>> getUnsatisfiableExplanations(OWLClass unsat){ Set<Set<OWLAxiom>> explanations = regularExplanationCache.get(unsat); if(explanations == null){ @@ -149,4 +174,11 @@ } return orderedExplanations; } + + @Override + public void ontologiesChanged(List<? extends OWLOntologyChange> arg0) + throws OWLException { + ontologyChanged = true; + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-07 11:41:54 UTC (rev 1748) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-10 13:33:52 UTC (rev 1749) @@ -1,17 +1,23 @@ package org.dllearner.tools.ore; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; +import javax.swing.BorderFactory; +import javax.swing.Box; import javax.swing.ButtonGroup; +import javax.swing.DefaultListModel; +import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; +import javax.swing.JSeparator; import javax.swing.JSplitPane; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -28,7 +34,7 @@ private JSplitPane splitPane; private JScrollPane listScrollPane; private JScrollPane explanationsScrollPane; - private JPanel explanationsPanel; + private JComponent explanationsPanel; private JPanel buttonExplanationsPanel; private JPanel buttonPanel; private ButtonGroup explanationType; @@ -49,6 +55,8 @@ this.manager = manager; + setLayout(new BorderLayout()); + Dimension minimumSize = new Dimension(400, 400); tableRenderer = new OWLSyntaxTableCellRenderer(); @@ -56,17 +64,37 @@ - unsatList = new JXList(manager.getUnsatisfiableClasses().toArray()); + + DefaultListModel model = new DefaultListModel(); + for(OWLClass root : manager.getRootUnsatisfiableClasses()){ + model.addElement(root); + } + for(OWLClass unsat : manager.getUnsatisfiableClasses()){ + if(!model.contains(unsat)){ + model.addElement(unsat); + } + } + + unsatList = new JXList(model); + unsatList.addListSelectionListener(this); unsatList.setCellRenderer(listRenderer); listScrollPane = new JScrollPane(unsatList); listScrollPane.setPreferredSize(minimumSize); - explanationsPanel = new JPanel(); - explanationsPanel.setLayout(new GridLayout(0,1)); - explanationsScrollPane = new JScrollPane(explanationsPanel); + explanationsPanel = new Box(1); + + + JPanel pan = new JPanel(new BorderLayout()); + pan.add(explanationsPanel, BorderLayout.NORTH); + explanationsScrollPane = new JScrollPane(pan); explanationsScrollPane.setPreferredSize(minimumSize); + explanationsScrollPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); + explanationsScrollPane.getViewport().setOpaque(false); + explanationsScrollPane.getViewport().setBackground(null); + explanationsScrollPane.setOpaque(false); + regularButton = new JRadioButton("regular", true); regularButton.setActionCommand("regular"); regularButton.addActionListener(this); @@ -88,11 +116,13 @@ splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, buttonExplanationsPanel); splitPane.setOneTouchExpandable(true); splitPane.setDividerLocation(150); + splitPane.setBorder(null); add(splitPane); } + private void addExplanationTable(List<OWLAxiom> explanation, int number){ @@ -128,7 +158,7 @@ // tablePanel.setPreferredSize(new Dimension(300, 300)); // tablePanel.setBorder(BorderFactory.createTitledBorder("explanation " + number)); - explanationsPanel.add(new JScrollPane(expTable)); + explanationsPanel.add(new ExplanationTablePanel(expTable, number)); } @@ -143,6 +173,9 @@ addExplanationTable(explanation, counter); counter++; } + explanationsPanel.add(Box.createVerticalStrut(10)); + explanationsPanel.add(new JSeparator()); + explanationsPanel.add(Box.createVerticalStrut(10)); this.updateUI(); } @@ -153,6 +186,9 @@ addExplanationTable(explanation, counter); counter++; } + explanationsPanel.add(Box.createVerticalStrut(10)); + explanationsPanel.add(new JSeparator()); + explanationsPanel.add(Box.createVerticalStrut(10)); this.updateUI(); } @@ -185,7 +221,7 @@ public static void main(String[] args){ - String file = "file:examples/ore/tambis.owl"; + String file = "file:examples/ore/miniEconomy.owl"; ExplanationManager manager = ExplanationManager.getExplanationManager(file); ExplanationPanel panel = new ExplanationPanel(manager); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java 2009-05-10 13:33:52 UTC (rev 1749) @@ -0,0 +1,42 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Color; + +import javax.swing.BorderFactory; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.border.Border; + +import org.jdesktop.swingx.JXTable; + +public class ExplanationTablePanel extends JPanel{ + + /** + * + */ + private static final long serialVersionUID = -7836622769361235749L; + private JXTable explanationTable; + private int explanationNumber; + + public ExplanationTablePanel(JXTable explanationTable, int explanationNumber){ + this.explanationTable = explanationTable; + this.explanationNumber = explanationNumber; + createGUI(); + } + + private void createGUI(){ + setLayout(new BorderLayout(2, 2)); + JLabel label = new JLabel(new StringBuilder().append("Explanation ").append(explanationNumber).toString()); + add(label, BorderLayout.NORTH); + JPanel tablePanel = new JPanel(new BorderLayout()); + Border emptyBorder = BorderFactory.createEmptyBorder(0, 20, 0, 0); + Border lineBorder = BorderFactory.createLineBorder(Color.LIGHT_GRAY); + tablePanel.setBorder(BorderFactory.createCompoundBorder(emptyBorder, lineBorder)); + tablePanel.add(explanationTable); + add(tablePanel); + + } + + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-05-07 11:41:54 UTC (rev 1748) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-05-10 13:33:52 UTC (rev 1749) @@ -91,7 +91,7 @@ // get(par, parent2Childs).add(child); // } // } - return rootClasses; + return Collections.unmodifiableSet(rootClasses); } private void computePossibleRoots(){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-07 11:41:55
|
Revision: 1748 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1748&view=rev Author: jenslehmann Date: 2009-05-07 11:41:54 +0000 (Thu, 07 May 2009) Log Message: ----------- mapping evaluator working Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java 2009-05-07 10:11:58 UTC (rev 1747) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java 2009-05-07 11:41:54 UTC (rev 1748) @@ -77,7 +77,13 @@ while(rs.hasNext()) { QuerySolution qs = rs.nextSolution(); geoLat = qs.getLiteral("lat").getDouble(); + if(((Double)geoLat).toString().contains("E")) { + geoLat = 0.0; + } geoLong = qs.getLiteral("long").getDouble(); + if(((Double)geoLong).toString().contains("E")) { + geoLong = 0.0; + } label = qs.getLiteral("label").getString(); if(qs.contains("type")) { classList.add(qs.get("type").toString()); Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java 2009-05-07 10:11:58 UTC (rev 1747) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java 2009-05-07 11:41:54 UTC (rev 1748) @@ -40,6 +40,7 @@ public class Evaluation { private int tests; + private int discarded; private int noMatchCount; private int correctMatchCount; private int incorrectMatchCount; @@ -53,6 +54,7 @@ public Evaluation(Map<URI,URI> testMatches) throws IOException { tests = 0; + discarded = 0; noMatchCount = 0; correctMatchCount = 0; incorrectMatchCount = 0; @@ -75,6 +77,7 @@ dbpediaPoint = new DBpediaPoint(match.getKey()); } catch (Exception e) { logger.debug(e.getMessage()); + discarded++; continue; } URI matchedURI = DBpediaLinkedGeoData.findGeoDataMatch(dbpediaPoint); @@ -133,6 +136,10 @@ return tests; } + public int getDiscarded() { + return discarded; + } + public static void main(String args[]) throws IOException { Logger.getRootLogger().setLevel(Level.TRACE); @@ -154,6 +161,7 @@ } // perform evaluation and print results Evaluation eval = new Evaluation(matches); + System.out.println(eval.getTests() + " points tested (" + eval.getDiscarded() + " discarded)"); System.out.println("precision: " + eval.getPrecision()); System.out.println("recall: " + eval.getRecall()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-07 10:12:05
|
Revision: 1747 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1747&view=rev Author: jenslehmann Date: 2009-05-07 10:11:58 +0000 (Thu, 07 May 2009) Log Message: ----------- mapping evaluator ctd. Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java 2009-05-07 08:48:00 UTC (rev 1746) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java 2009-05-07 10:11:58 UTC (rev 1747) @@ -60,6 +60,7 @@ private static double scoreThreshold = 0.8; private static StringDistance distance = new Jaro(); +// public static SparqlEndpoint dbpediaEndpoint = SparqlEndpoint.getEndpointDBpedia(); public static SparqlEndpoint dbpediaEndpoint = SparqlEndpoint.getEndpointLOCALDBpedia(); private static SparqlEndpoint geoDataEndpoint = SparqlEndpoint.getEndpointLOCALGeoData(); @@ -319,6 +320,8 @@ // perform string similarity // (we can use a variety of string matching heuristics) +// System.out.println(label); +// System.out.println(dbpediaPoint); double score = distance.score(label, dbpediaPoint.getLabel()); if(score > highestScore) { highestScore = score; Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java 2009-05-07 08:48:00 UTC (rev 1746) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java 2009-05-07 10:11:58 UTC (rev 1747) @@ -20,6 +20,8 @@ package org.dllearner.scripts.matching; import java.net.URI; +import java.util.LinkedList; +import java.util.List; import org.dllearner.kb.sparql.SparqlQuery; @@ -49,7 +51,7 @@ * Constructs a DBpedia point using SPARQL. * @param uri URI of DBpedia resource. */ - public DBpediaPoint(URI uri) { + public DBpediaPoint(URI uri) throws Exception { super(0,0); this.uri = uri; @@ -57,8 +59,8 @@ String queryStr = "SELECT ?lat, ?long, ?label, ?type WHERE {"; queryStr += "<"+uri+"> <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat ."; queryStr += "<"+uri+"> <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?long ."; - queryStr += "?object rdfs:label ?label . "; - queryStr += "OPTIONAL { <"+uri+" rdf:type ?type . "; + queryStr += "<"+uri+"> rdfs:label ?label . "; + queryStr += "OPTIONAL { <"+uri+"> rdf:type ?type . "; queryStr += "FILTER (!(?type LIKE <http://dbpedia.org/ontology/Resource>)) ."; queryStr += "FILTER (?type LIKE <http://dbpedia.org/ontology/%>) ."; queryStr += "} }"; @@ -66,16 +68,23 @@ SparqlQuery query = new SparqlQuery(queryStr, DBpediaLinkedGeoData.dbpediaEndpoint); ResultSet rs = query.send(); classes = new String[] { }; - int count = 0; + List<String> classList = new LinkedList<String>(); + if(!rs.hasNext()) { + throw new Exception("cannot construct point for " + uri + " (latitude/longitude missing?)"); + } + while(rs.hasNext()) { QuerySolution qs = rs.nextSolution(); geoLat = qs.getLiteral("lat").getDouble(); geoLong = qs.getLiteral("long").getDouble(); label = qs.getLiteral("label").getString(); - classes[count] = qs.get("type").toString(); - count++; + if(qs.contains("type")) { + classList.add(qs.get("type").toString()); + } } + + classes = classList.toArray(classes); } public DBpediaPoint(URI uri, String label, String[] classes, double geoLat, double geoLong, int decimalCount) { Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java 2009-05-07 08:48:00 UTC (rev 1746) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java 2009-05-07 10:11:58 UTC (rev 1747) @@ -27,6 +27,9 @@ import java.util.Map; import java.util.Map.Entry; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + /** * Performs an evaluation of a matching method method by analising it * on a test set. @@ -44,6 +47,8 @@ private double precision; private double recall; + private static Logger logger = Logger.getLogger(Evaluation.class); + // map from DBpedia to LinkedGeoData public Evaluation(Map<URI,URI> testMatches) throws IOException { @@ -63,7 +68,15 @@ // memory to efficiently evaluate a lot of parameter settings without // requiring to perform slow HTTP or SPARQL requests - DBpediaPoint dbpediaPoint = new DBpediaPoint(match.getKey()); + logger.trace("searching match for " + match.getKey() + "..."); + + DBpediaPoint dbpediaPoint = null; + try { + dbpediaPoint = new DBpediaPoint(match.getKey()); + } catch (Exception e) { + logger.debug(e.getMessage()); + continue; + } URI matchedURI = DBpediaLinkedGeoData.findGeoDataMatch(dbpediaPoint); URI testURI = match.getValue(); @@ -71,12 +84,15 @@ // no match found if(matchedURI == null) { noMatchCount++; + logger.trace(" ... no match found"); // correct match found } else if(matchedURI.equals(testURI)) { correctMatchCount++; + logger.trace(" ... " + testURI + " correctly detected"); // incorrect match found } else { incorrectMatchCount++; + logger.trace(" ... " + matchedURI + " detected, but " + testURI + " is correct"); } tests++; @@ -118,6 +134,8 @@ } public static void main(String args[]) throws IOException { + + Logger.getRootLogger().setLevel(Level.TRACE); // test file String testFile = "log/geodata/owlsameas_en.dat"; // map for collecting matches @@ -126,8 +144,13 @@ BufferedReader br = new BufferedReader(new FileReader(testFile)); String line; while ((line = br.readLine()) != null) { - String[] tmp = line.split(" "); - matches.put(URI.create(tmp[1]), URI.create(tmp[0])); + String[] tmp = line.split("\t"); +// System.out.println(line); +// for(String test : tmp) { +// System.out.println(test); +// } + + matches.put(URI.create(tmp[1]), URI.create(tmp[0] + "#id")); } // perform evaluation and print results Evaluation eval = new Evaluation(matches); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-07 08:48:13
|
Revision: 1746 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1746&view=rev Author: jenslehmann Date: 2009-05-07 08:48:00 +0000 (Thu, 07 May 2009) Log Message: ----------- mapping evaluator Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java 2009-05-07 08:45:50 UTC (rev 1745) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java 2009-05-07 08:48:00 UTC (rev 1746) @@ -52,7 +52,7 @@ // chose between nt and dat private static String dbpediaFileFormat = "dat"; - private static File dbpediaFile = new File("log/DBpedia_POIs." + dbpediaFileFormat); + static File dbpediaFile = new File("log/DBpedia_POIs." + dbpediaFileFormat); private static boolean regenerateFile = false; private static File matchingFile = new File("log/DBpedia_GeoData_Links.nt"); @@ -60,7 +60,7 @@ private static double scoreThreshold = 0.8; private static StringDistance distance = new Jaro(); - private static SparqlEndpoint dbpediaEndpoint = SparqlEndpoint.getEndpointLOCALDBpedia(); + public static SparqlEndpoint dbpediaEndpoint = SparqlEndpoint.getEndpointLOCALDBpedia(); private static SparqlEndpoint geoDataEndpoint = SparqlEndpoint.getEndpointLOCALGeoData(); // read in DBpedia ontology such that we perform taxonomy reasoning @@ -257,7 +257,7 @@ fos.close(); } - private static URI findGeoDataMatch(DBpediaPoint dbpediaPoint) throws IOException { + public static URI findGeoDataMatch(DBpediaPoint dbpediaPoint) throws IOException { // 1 degree is about 111 km (depending on the specific point) int distanceThresholdMeters = 1000; Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java 2009-05-07 08:45:50 UTC (rev 1745) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaPoint.java 2009-05-07 08:48:00 UTC (rev 1746) @@ -21,6 +21,11 @@ import java.net.URI; +import org.dllearner.kb.sparql.SparqlQuery; + +import com.hp.hpl.jena.query.QuerySolution; +import com.hp.hpl.jena.query.ResultSet; + /** * A geo location in DBpedia. * @@ -39,6 +44,40 @@ // number of decimals indicates a large object) private int decimalCount; + + /** + * Constructs a DBpedia point using SPARQL. + * @param uri URI of DBpedia resource. + */ + public DBpediaPoint(URI uri) { + super(0,0); + this.uri = uri; + + // construct DBpedia query + String queryStr = "SELECT ?lat, ?long, ?label, ?type WHERE {"; + queryStr += "<"+uri+"> <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat ."; + queryStr += "<"+uri+"> <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?long ."; + queryStr += "?object rdfs:label ?label . "; + queryStr += "OPTIONAL { <"+uri+" rdf:type ?type . "; + queryStr += "FILTER (!(?type LIKE <http://dbpedia.org/ontology/Resource>)) ."; + queryStr += "FILTER (?type LIKE <http://dbpedia.org/ontology/%>) ."; + queryStr += "} }"; + + SparqlQuery query = new SparqlQuery(queryStr, DBpediaLinkedGeoData.dbpediaEndpoint); + ResultSet rs = query.send(); + classes = new String[] { }; + int count = 0; + + while(rs.hasNext()) { + QuerySolution qs = rs.nextSolution(); + geoLat = qs.getLiteral("lat").getDouble(); + geoLong = qs.getLiteral("long").getDouble(); + label = qs.getLiteral("label").getString(); + classes[count] = qs.get("type").toString(); + count++; + } + } + public DBpediaPoint(URI uri, String label, String[] classes, double geoLat, double geoLong, int decimalCount) { super(geoLat,geoLong); this.uri = uri; Added: trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/Evaluation.java 2009-05-07 08:48:00 UTC (rev 1746) @@ -0,0 +1,138 @@ +/** + * Copyright (C) 2007-2009, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.scripts.matching; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.net.URI; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +/** + * Performs an evaluation of a matching method method by analising it + * on a test set. + * + * @author Jens Lehmann + * + */ +public class Evaluation { + + private int tests; + private int noMatchCount; + private int correctMatchCount; + private int incorrectMatchCount; + private int matchCount; + private double precision; + private double recall; + + // map from DBpedia to LinkedGeoData + public Evaluation(Map<URI,URI> testMatches) throws IOException { + + tests = 0; + noMatchCount = 0; + correctMatchCount = 0; + incorrectMatchCount = 0; + + for(Entry<URI,URI> match : testMatches.entrySet()) { + // find point in DBpedia file: + // approach 1: + // step 1: locate point in DBpedia file + // step 2: read all information about point + // step 3: write a method converting this information into a DBpedia point + + // "problem": might be good to put all relevant DBpedia and GeoData points in + // memory to efficiently evaluate a lot of parameter settings without + // requiring to perform slow HTTP or SPARQL requests + + DBpediaPoint dbpediaPoint = new DBpediaPoint(match.getKey()); + URI matchedURI = DBpediaLinkedGeoData.findGeoDataMatch(dbpediaPoint); + + URI testURI = match.getValue(); + + // no match found + if(matchedURI == null) { + noMatchCount++; + // correct match found + } else if(matchedURI.equals(testURI)) { + correctMatchCount++; + // incorrect match found + } else { + incorrectMatchCount++; + } + + tests++; + } + + matchCount = correctMatchCount + incorrectMatchCount; + // determine proportion of correct matchings + precision = correctMatchCount / (double) matchCount; + // determine proportion of correct matches + recall = correctMatchCount / (double) tests; + } + + public int getCorrectMatchCount() { + return correctMatchCount; + } + + public int getIncorrectMatchCount() { + return incorrectMatchCount; + } + + public int getMatchCount() { + return matchCount; + } + + public int getNoMatchCount() { + return noMatchCount; + } + + public double getPrecision() { + return precision; + } + + public double getRecall() { + return recall; + } + + public int getTests() { + return tests; + } + + public static void main(String args[]) throws IOException { + // test file + String testFile = "log/geodata/owlsameas_en.dat"; + // map for collecting matches + Map<URI,URI> matches = new HashMap<URI,URI>(); + // read file line by line to collect matches + BufferedReader br = new BufferedReader(new FileReader(testFile)); + String line; + while ((line = br.readLine()) != null) { + String[] tmp = line.split(" "); + matches.put(URI.create(tmp[1]), URI.create(tmp[0])); + } + // perform evaluation and print results + Evaluation eval = new Evaluation(matches); + System.out.println("precision: " + eval.getPrecision()); + System.out.println("recall: " + eval.getRecall()); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-07 08:45:53
|
Revision: 1745 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1745&view=rev Author: lorenz_b Date: 2009-05-07 08:45:50 +0000 (Thu, 07 May 2009) Log Message: ----------- new panel to show explanations rendered in OWL-syntax or DL-syntax Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/UnsatClassesListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/information.png Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -0,0 +1,203 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.List; + +import javax.swing.ButtonGroup; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.DefaultTableModel; + +import org.jdesktop.swingx.JXList; +import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class ExplanationPanel extends JPanel implements ListSelectionListener, ActionListener{ + + private JXList unsatList; + private JSplitPane splitPane; + private JScrollPane listScrollPane; + private JScrollPane explanationsScrollPane; + private JPanel explanationsPanel; + private JPanel buttonExplanationsPanel; + private JPanel buttonPanel; + private ButtonGroup explanationType; + private JRadioButton regularButton; + private JRadioButton laconicButton; + private OWLSyntaxTableCellRenderer tableRenderer; + private UnsatClassesListCellRenderer listRenderer; + + + private ExplanationManager manager; + private OWLClass unsatClass; + /** + * + */ + private static final long serialVersionUID = 2213073383532597460L; + + public ExplanationPanel(ExplanationManager manager){ + + this.manager = manager; + + Dimension minimumSize = new Dimension(400, 400); + + tableRenderer = new OWLSyntaxTableCellRenderer(); + listRenderer = new UnsatClassesListCellRenderer(manager); + + + + unsatList = new JXList(manager.getUnsatisfiableClasses().toArray()); + unsatList.addListSelectionListener(this); + unsatList.setCellRenderer(listRenderer); + listScrollPane = new JScrollPane(unsatList); + listScrollPane.setPreferredSize(minimumSize); + + explanationsPanel = new JPanel(); + explanationsPanel.setLayout(new GridLayout(0,1)); + explanationsScrollPane = new JScrollPane(explanationsPanel); + explanationsScrollPane.setPreferredSize(minimumSize); + + regularButton = new JRadioButton("regular", true); + regularButton.setActionCommand("regular"); + regularButton.addActionListener(this); + laconicButton = new JRadioButton("laconic"); + laconicButton.setActionCommand("laconic"); + laconicButton.addActionListener(this); + explanationType = new ButtonGroup(); + explanationType.add(regularButton); + explanationType.add(laconicButton); + buttonPanel = new JPanel(); + buttonPanel.add(regularButton); + buttonPanel.add(laconicButton); + + buttonExplanationsPanel = new JPanel(); + buttonExplanationsPanel.setLayout(new BorderLayout()); + buttonExplanationsPanel.add(explanationsScrollPane, BorderLayout.CENTER); + buttonExplanationsPanel.add(buttonPanel, BorderLayout.NORTH); + + splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, buttonExplanationsPanel); + splitPane.setOneTouchExpandable(true); + splitPane.setDividerLocation(150); + + + add(splitPane); + } + + private void addExplanationTable(List<OWLAxiom> explanation, int number){ + + + JXTable expTable = new JXTable(); + DefaultTableModel model = new DefaultTableModel(); + model.addColumn("axiom", explanation.toArray()); + expTable.setModel(model); + expTable.setDefaultRenderer(Object.class, tableRenderer); + + + +// DLSyntaxObjectRenderer r = new DLSyntaxObjectRenderer(); +// Vector<String> t = new Vector<String>(); +// for(OWLAxiom ax : explanation) +// t.add(r.render(ax)); +// model.addColumn("axiom", t); + +// expTable.setModel(new ExplanationTableModel()); +// expTable.setDefaultRenderer(JButton.class, new ExplanationTableCellRenderer(expTable.getDefaultRenderer(JButton.class))); +// expTable.addMouseListener(new JTableButtonMouseListener(expTable)); + + expTable.getColumn(0).sizeWidthToFit(); + expTable.setSize(300, 300); + expTable.setEditable(false); + + + + + +// JPanel tablePanel = new JPanel();tablePanel.setLayout(new GridLayout(0,1)); +// +// tablePanel.add(expTable); +// tablePanel.setPreferredSize(new Dimension(300, 300)); +// tablePanel.setBorder(BorderFactory.createTitledBorder("explanation " + number)); + + explanationsPanel.add(new JScrollPane(expTable)); + + } + + private void clearExplanationsPanel(){ + explanationsPanel.removeAll(); + } + + private void showLaconicExplanations(){ + clearExplanationsPanel(); + int counter = 1; + for(List<OWLAxiom> explanation : manager.getOrderedLaconicUnsatisfiableExplanations(unsatClass)){ + addExplanationTable(explanation, counter); + counter++; + } + this.updateUI(); + } + + private void showRegularExplanations(){ + clearExplanationsPanel(); + int counter = 1; + for(List<OWLAxiom> explanation : manager.getOrderedUnsatisfiableExplanations(unsatClass)){ + addExplanationTable(explanation, counter); + counter++; + } + this.updateUI(); + } + + + @Override + public void valueChanged(ListSelectionEvent e) { + + unsatClass = (OWLClass)((JXList)e.getSource()).getSelectedValue(); + + if(regularButton.isSelected()){ + showRegularExplanations(); + } else { + showLaconicExplanations(); + } + + } + + + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getActionCommand().equals("regular")){ + showRegularExplanations(); + } else if(e.getActionCommand().equals("laconic") && !unsatList.isSelectionEmpty()){ + showLaconicExplanations(); + + } + + } + + public static void main(String[] args){ + + String file = "file:examples/ore/tambis.owl"; + + ExplanationManager manager = ExplanationManager.getExplanationManager(file); + ExplanationPanel panel = new ExplanationPanel(manager); + + + JFrame test = new JFrame(); + test.setLayout(new GridLayout(0, 1)); + test.setSize(new Dimension(800, 500)); + test.add(panel); + test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + test.setVisible(true); + + +} +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2009-05-07 08:42:31 UTC (rev 1744) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -15,19 +15,23 @@ import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; +import com.clarkparsia.explanation.PelletExplanation; +import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; + @SuppressWarnings("unused") public class ExplanationTest { // private static final String file = "file:examples/ore/inconsistent.owl"; - private static final String file = "file:examples/ore/buggyPolicy.owl"; + private static final String file = "file:examples/ore/koala.owl"; private static final String NS = "http://cohse.semanticweb.org/ontologies/people#"; /** * @param args */ public static void main(String[] args) { - /* + + try { PelletExplanation.setup(); @@ -94,8 +98,8 @@ // TODO Auto-generated catch block e.printStackTrace(); } - */ - } + + } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -0,0 +1,108 @@ +package org.dllearner.tools.ore; + +import java.io.StringWriter; +import java.util.StringTokenizer; + +import javax.swing.table.DefaultTableCellRenderer; + +import org.semanticweb.owl.model.OWLAxiom; + +import com.clarkparsia.explanation.io.manchester.Keyword; +import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxObjectRenderer; +import com.clarkparsia.explanation.io.manchester.TextBlockWriter; + +public class OWLSyntaxTableCellRenderer extends DefaultTableCellRenderer { + + /** + * + */ + private static final long serialVersionUID = 6528440084244154347L; + + + private StringWriter buffer; + private TextBlockWriter writer; + private ManchesterSyntaxObjectRenderer renderer; +// private List<String> oldAxioms; + + public OWLSyntaxTableCellRenderer(){ + super(); + buffer = new StringWriter(); + writer = new TextBlockWriter(buffer); + renderer = new ManchesterSyntaxObjectRenderer(writer); + renderer.setWrapLines( false ); + renderer.setSmartIndent( true ); +// oldAxioms = new ArrayList<String>(); + + } + @Override + protected void setValue(Object value) { + + if(value instanceof OWLAxiom){ + + + ((OWLAxiom)value).accept(renderer); + + writer.flush(); + String newAxiom = buffer.toString(); +// System.out.println("new axiom " + newAxiom); +// if(!oldAxioms.isEmpty()){ +// StringTokenizer st = new StringTokenizer(newAxiom); +// int index; +// String token = st.nextToken(); +// for(String s : oldAxioms){System.out.println("old axiom " + s); +// +// +// if(s.contains(token)){ +// index = s.indexOf(token); +// if(index>0){ +// StringBuffer bf = new StringBuffer(); +// for(int i = 0;i<=index+10;i++){ +// bf.append(" "); +// } +// bf.append(newAxiom); +// newAxiom = bf.toString(); +// break; +// } +// } +// +// } +// } + StringTokenizer st = new StringTokenizer(newAxiom); + + StringBuffer bf = new StringBuffer(); + bf.append("<html>"); + String token; + while(st.hasMoreTokens()){ + token = st.nextToken(); + String color = "black"; + boolean isReserved = false; + for(Keyword key : Keyword.values()){ + if(token.equals(key.getLabel())){ + color = key.getColor(); + isReserved = true;break; + } + } + if(isReserved){ + bf.append("<font color=" + color + ">" + token + " </font>"); + } else { + bf.append(" " + token + " "); + } + } + bf.append("</html>"); + newAxiom = bf.toString(); + setText(newAxiom); +// oldAxioms.add(buffer.toString()); + buffer.getBuffer().delete(0, buffer.toString().length()); + } else { + super.setValue(value); + } + +// ManchesterOWLSyntaxOWLObjectRendererImpl renderer = new ManchesterOWLSyntaxOWLObjectRendererImpl(); + + +//// DLSyntaxObjectRenderer renderer = new DLSyntaxObjectRenderer(); +// setText(renderer.render((OWLAxiom) value)); + + + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-05-07 08:42:31 UTC (rev 1744) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -22,12 +22,21 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.KnowledgeSource; import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.LearningProblemUnsupportedException; +import org.dllearner.core.ReasonerComponent; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.learningproblems.ClassLearningProblem; +import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; -import org.dllearner.utilities.learn.LearnSPARQLConfiguration; /** * Test class for SPARQL mode. @@ -38,6 +47,7 @@ @SuppressWarnings("unused") public static void main(String[] args){ + ComponentManager cm = ComponentManager.getInstance(); SparqlEndpoint endPoint = SparqlEndpoint.getEndpointDBpedia(); @@ -49,26 +59,33 @@ AutomaticNegativeExampleFinderSPARQL neg = new AutomaticNegativeExampleFinderSPARQL(posExamples, task, new TreeSet<String>()); SortedSet<String> negExamples = neg.getNegativeExamples(20); + System.out.println(negExamples); - LearnSPARQLConfiguration conf = new LearnSPARQLConfiguration(); - // TODO Please update class to either use ComponentManager or - // add a convenience constructor to org.dllearner.utilities.components.ComponentCombo -// LearnSparql learn = new LearnSparql(conf); - LearningAlgorithm la = null; - -// try { - //la = learn.learn(posExamples, negExamples, OWLAPIReasoner.class); -// } catch (ComponentInitException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (LearningProblemUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - - la.start(); + try { + String example = "http://dbpedia.org/resource/Angela_Merkel"; + + + + KnowledgeSource ks = cm.knowledgeSource(SparqlKnowledgeSource.class); + cm.applyConfigEntry(ks, "predefinedEndpoint", "DBPEDIA"); + ks.init(); + ReasonerComponent reasoner = cm.reasoner(OWLAPIReasoner.class, ks); + reasoner.init(); + LearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); + lp.init(); + LearningAlgorithm la = cm.learningAlgorithm(CELOE.class, lp, reasoner); + la.init(); + + la.start(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (LearningProblemUnsupportedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/UnsatClassesListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/UnsatClassesListCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/UnsatClassesListCellRenderer.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -0,0 +1,50 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; +import java.awt.Component; +import java.util.Set; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.ImageIcon; +import javax.swing.JList; + +import org.semanticweb.owl.model.OWLClass; + +public class UnsatClassesListCellRenderer extends DefaultListCellRenderer { + + /** + * + */ + private static final long serialVersionUID = -6705062445027715783L; + + private ExplanationManager manager; + private Set<OWLClass> rootClasses; + + public UnsatClassesListCellRenderer(ExplanationManager man){ + this.manager = man; + rootClasses = manager.getRootUnsatisfiableClasses(); + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + + if(rootClasses.contains((OWLClass)value)){ + setText(value.toString() ); + setIcon(new ImageIcon("src/dl-learner/org/dllearner/tools/ore/information.png")); + setHorizontalTextPosition(LEADING); + } + else { + setText(value.toString()); + setIcon(null); + } + if(isSelected){ + setBackground(new Color(242, 242, 242)); + } else { + setBackground(Color.WHITE); + } + return this; + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/information.png =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/information.png ___________________________________________________________________ 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: <lor...@us...> - 2009-05-07 08:42:34
|
Revision: 1744 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1744&view=rev Author: lorenz_b Date: 2009-05-07 08:42:31 +0000 (Thu, 07 May 2009) Log Message: ----------- some small changes axiom ranking class started to implement Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BetaGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TauGenerator.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-05-07 08:42:31 UTC (rev 1744) @@ -0,0 +1,78 @@ +package org.dllearner.tools.ore.explanation; + +import java.net.URI; +import java.util.Map; +import java.util.Set; + +import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; +import org.mindswap.pellet.utils.SetUtils; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLSubClassAxiom; +import org.semanticweb.owl.model.RemoveAxiom; + +public class AxiomRanker { + + Map axiomSOSMap; + OWLOntology ontology; + Reasoner reasoner; + OWLDataFactory factory; + + public AxiomRanker(OWLOntology ont, Reasoner reasoner, OWLDataFactory fact){ + this.ontology = ont; + this.reasoner = reasoner; + this.factory = fact; + } + + private void computeImpactSOS(OWLAxiom ax) { + + + } + + + + public static void main(String[] args){ + + try { + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory dFactory = manager.getOWLDataFactory(); + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create("file:examples/ore/koala.owl")); + PelletReasonerFactory factory = new PelletReasonerFactory(); + Reasoner reasoner = factory.createReasoner(manager); + reasoner.loadOntology(ontology); + reasoner.classify(); + + + OWLClass cl1 = dFactory.getOWLClass(URI.create("http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#koala")); + OWLClass cl2 = dFactory.getOWLClass(URI.create("http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#person")); + OWLAxiom ax = dFactory.getOWLSubClassAxiom(cl1, dFactory.getOWLObjectComplementOf(cl2)); + Set<OWLClass> before = null; + Set<OWLClass> after = null; + if(ax instanceof OWLSubClassAxiom){ + before = SetUtils.union(reasoner.getSuperClasses(cl1)); + manager.applyChange(new RemoveAxiom(ontology, ax)); + after = SetUtils.union(reasoner.getSuperClasses(cl1)); + System.out.println(SetUtils.difference(before, after)); + } + System.out.println(cl1.getSuperClasses(ontology)); + System.out.println(after); + + + + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + +} Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java ___________________________________________________________________ Added: svn:executable + * Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BetaGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BetaGenerator.java 2009-05-07 08:38:31 UTC (rev 1743) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BetaGenerator.java 2009-05-07 08:42:31 UTC (rev 1744) @@ -1,120 +0,0 @@ - - -package org.dllearner.tools.ore.explanation; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -import org.semanticweb.owl.model.OWLClass; -import org.semanticweb.owl.model.OWLDataFactory; -import org.semanticweb.owl.model.OWLDataRange; -import org.semanticweb.owl.model.OWLDataValueRestriction; -import org.semanticweb.owl.model.OWLDescription; -import org.semanticweb.owl.model.OWLObjectComplementOf; -import org.semanticweb.owl.model.OWLObjectExactCardinalityRestriction; -import org.semanticweb.owl.model.OWLObjectMaxCardinalityRestriction; -import org.semanticweb.owl.model.OWLObjectMinCardinalityRestriction; -import org.semanticweb.owl.model.OWLObjectPropertyExpression; -import org.semanticweb.owl.model.OWLObjectUnionOf; - - - -public class BetaGenerator extends BaseDescriptionGenerator -{ - - public BetaGenerator(OWLDataFactory factory) - { - super(factory); - } - - public Set<OWLDescription> visit(OWLClass desc) - { - Set<OWLDescription> descs = new HashSet<OWLDescription>(3); - descs.add(desc); - descs.add(getDataFactory().getOWLNothing()); - return descs; - } - - public Set<OWLDescription> visit(OWLObjectComplementOf desc) - { - Set<OWLDescription> descs = new HashSet<OWLDescription>(); - - for(OWLDescription d : computeTau(desc.getOperand())){ - descs.add(getDataFactory().getOWLObjectComplementOf(d)); - } - - return descs; - } - - protected Set<OWLDescription> compute(OWLDescription description) - { - return computeBeta(description); - } - - public Set<OWLDescription> visit(OWLObjectMaxCardinalityRestriction desc) - { - Set<OWLDescription> fillers = computeTau(desc.getFiller()); - Set<OWLDescription> result = new HashSet<OWLDescription>(); - for(int n = desc.getCardinality(); n > 0; n--) - { - for(OWLDescription filler : fillers){ - result.add(getDataFactory().getOWLObjectMinCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), n, filler)); - } - } - - result.add(getLimit()); - return result; - } - - @Override - public Set<OWLDescription> visit(OWLObjectExactCardinalityRestriction desc) - { - Set<OWLDescription> fillers = computeBeta((OWLDescription)desc.getFiller()); - Set<OWLDescription> result = new HashSet<OWLDescription>(); - - for(OWLDescription filler : fillers){ - result.add(getDataFactory().getOWLObjectExactCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), desc.getCardinality(), filler)); - } - result.add(getLimit()); - return result; - } - - @Override - public Set<OWLDescription> visit(OWLObjectUnionOf desc) - { - return super.visit(desc); - } - - public Set<OWLDescription> visit(OWLObjectMinCardinalityRestriction desc) - { - Set<OWLDescription> fillers = computeBeta((OWLDescription)desc.getFiller()); - Set<OWLDescription> result = new HashSet<OWLDescription>(); - - for(OWLDescription filler : fillers){ - result.add(getDataFactory().getOWLObjectMinCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), desc.getCardinality(), filler)); - } - result.add(getLimit()); - return result; - } - - @Override - protected OWLClass getLimit() - { - return getDataFactory().getOWLNothing(); - } - - @Override - protected OWLDataRange getDataLimit() - { - return getDataFactory().getOWLDataComplementOf(getDataFactory().getTopDataType()); - } - - @Override - public Set<OWLDescription> visit(OWLDataValueRestriction desc) - { - return Collections.singleton((OWLDescription)desc); - } - - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicExplanationGenerator.java 2009-05-07 08:38:31 UTC (rev 1743) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicExplanationGenerator.java 2009-05-07 08:42:31 UTC (rev 1744) @@ -119,14 +119,14 @@ System.out.println("\t ***** No change in ontology. Early termination."); break; } - +// man2.saveOntology(extendedOnt, URI.create("file:/home/lorenz/neu.owl")); axiomsInPreviousOntology.clear(); axiomsInPreviousOntology.addAll(extendedOnt.getLogicalAxioms()); Set<Set<OWLAxiom>> allPrevJustsCopy = new HashSet<Set<OWLAxiom>>(allPreviouslyFoundJustifications); - + Set<OWLOntology> ont2 = new HashSet<OWLOntology>(); - ont2.add(extendedOnt); + ont2.add(extendedOnt); PelletExplanation expGen = new PelletExplanation(man2, ont2); Set<Set<OWLAxiom>> currentJustifications = expGen.getEntailmentExplanations((OWLAxiom)entailment); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-05-07 08:38:31 UTC (rev 1743) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-05-07 08:42:31 UTC (rev 1744) @@ -8,6 +8,8 @@ import java.util.Set; import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; +import org.mindswap.pellet.utils.progress.SwingProgressMonitor; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.inference.OWLReasoner; import org.semanticweb.owl.inference.OWLReasonerException; @@ -22,6 +24,7 @@ import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; +import com.clarkparsia.explanation.PelletExplanation; import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; public class LaconicTest { @@ -30,48 +33,105 @@ public static void main(String[] args) { - miniTest(); +// test(); +// miniTest(); miniEconomyTest(); - universityTest(); +// universityTest(); } + public static void test(){ + String file = "file:/home/lorenz/neu.owl"; + + + + try { + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); + PrintWriter pw = new PrintWriter(System.out); + renderer.startRendering(pw); + OWLDataFactory dataFactory = manager.getOWLDataFactory(); + PelletReasonerFactory resonerFact = new PelletReasonerFactory(); + + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI + .create(file)); + + Set<OWLOntology> ontologies = new HashSet<OWLOntology>(); + Reasoner reasoner = resonerFact.createReasoner(manager); + reasoner.loadOntologies(Collections.singleton(ontology)); + System.out.println(reasoner.getInconsistentClasses()); + PelletExplanation exp = new PelletExplanation(manager, Collections.singleton(ontology)); + + System.out.println(exp.getUnsatisfiableExplanations(dataFactory.getOWLClass( + URI.create("http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#KoalaWithPhD")))); + renderer.endRendering(); + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + public static void miniEconomyTest() { String file = "file:examples/ore/miniEconomy.owl"; try { - + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); PrintWriter pw = new PrintWriter(System.out); renderer.startRendering(pw); + + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); Set<OWLOntology> ontologies = new HashSet<OWLOntology>(); ontologies.add(ontology); - OWLReasonerFactory resonerFact = new PelletReasonerFactory(); + PelletReasonerFactory resonerFact = new PelletReasonerFactory(); OWLDataFactory dataFactory = manager.getOWLDataFactory(); - - OWLReasoner reasoner = resonerFact.createReasoner(manager); + + ////////////////////HermiT test +// HermiTReasonerFactory f = new HermiTReasonerFactory(); +// HermitReasoner re = (HermitReasoner) f.createReasoner(manager); +// re.loadOntologies(ontologies); +// Timer t1 = new Timer("classifying"); +// t1.start(); +// re.classify(); +// t1.stop(); +// re.realise(); +// System.out.println("HermiT" + re.getInconsistentClasses()); + ////////////////////////////// + + Reasoner reasoner = resonerFact.createReasoner(manager); reasoner.loadOntologies(ontologies); + SwingProgressMonitor monitor = new SwingProgressMonitor(); + reasoner.getKB().getTaxonomyBuilder().setProgressMonitor(monitor); reasoner.classify(); - + System.out.println(reasoner.getInconsistentClasses()); + LaconicExplanationGenerator expGen = new LaconicExplanationGenerator( manager, resonerFact, ontologies); + + Set<OWLClass> unsatClasses = reasoner.getInconsistentClasses(); OWLSubClassAxiom unsatAxiom; - for (OWLClass unsat : unsatClasses) { - unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory - .getOWLNothing()); - Set<Set<OWLAxiom>> preciseJusts = expGen - .getExplanations(unsatAxiom); - renderer.render(unsatAxiom, preciseJusts); - } - + unsatAxiom = dataFactory.getOWLSubClassAxiom(dataFactory.getOWLClass(URI.create("http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#KoalaWithPhD")), + dataFactory.getOWLNothing()); +// for (OWLClass unsat : unsatClasses) { +// unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory +// .getOWLNothing()); +// Set<Set<OWLAxiom>> preciseJusts = expGen +// .getExplanations(unsatAxiom); +// renderer.render(unsatAxiom, preciseJusts); +// } + Set<Set<OWLAxiom>> preciseJusts = expGen.getExplanations(unsatAxiom); + renderer.render(unsatAxiom, preciseJusts); renderer.endRendering(); } catch (OWLOntologyCreationException e) { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-05-07 08:38:31 UTC (rev 1743) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-05-07 08:42:31 UTC (rev 1744) @@ -333,12 +333,10 @@ OWLReasonerFactory factory = new PelletReasonerFactory(); OWLReasoner reasoner = factory.createReasoner(manager); reasoner.loadOntologies(Collections.singleton(ontology)); - UnsatRootClassesFinder strReasoner = new UnsatRootClassesFinder(manager, reasoner, factory); - System.out.println(strReasoner.getRootUnsatisfiableClasses()); + RootFinder strReasoner = new RootFinder(manager, reasoner, factory); + System.out.println(strReasoner.getRootClasses()); } catch (OWLOntologyCreationException e) { e.printStackTrace(); - } catch (ExplanationException e) { - e.printStackTrace(); } catch (OWLReasonerException e) { e.printStackTrace(); } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TauGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TauGenerator.java 2009-05-07 08:38:31 UTC (rev 1743) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TauGenerator.java 2009-05-07 08:42:31 UTC (rev 1744) @@ -1,84 +0,0 @@ - -package org.dllearner.tools.ore.explanation; - -import java.util.HashSet; -import java.util.Set; - -import org.semanticweb.owl.model.OWLClass; -import org.semanticweb.owl.model.OWLDataFactory; -import org.semanticweb.owl.model.OWLDataRange; -import org.semanticweb.owl.model.OWLDescription; -import org.semanticweb.owl.model.OWLObjectComplementOf; -import org.semanticweb.owl.model.OWLObjectMaxCardinalityRestriction; -import org.semanticweb.owl.model.OWLObjectMinCardinalityRestriction; -import org.semanticweb.owl.model.OWLObjectPropertyExpression; - - -public class TauGenerator extends BaseDescriptionGenerator -{ - - public TauGenerator(OWLDataFactory factory) - { - super(factory); - } - - public Set<OWLDescription> visit(OWLClass desc) - { - Set<OWLDescription> descs = new HashSet<OWLDescription>(); - descs.add(desc); - descs.add(getDataFactory().getOWLThing()); - return descs; - } - - public Set<OWLDescription> visit(OWLObjectComplementOf desc) - { - Set<OWLDescription> descs = new HashSet<OWLDescription>(); - - for(OWLDescription d : computeBeta(desc.getOperand())){ - descs.add(getDataFactory().getOWLObjectComplementOf(d)); - } - return descs; - } - - public Set<OWLDescription> visit(OWLObjectMaxCardinalityRestriction desc) - { - Set<OWLDescription> descs = new HashSet<OWLDescription>(); - - for(OWLDescription filler : computeBeta(desc.getFiller())){ - descs.add(getDataFactory().getOWLObjectMaxCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), desc.getCardinality(), filler)); - } - descs.add(getLimit()); - return descs; - } - - public Set<OWLDescription> visit(OWLObjectMinCardinalityRestriction desc) - { - Set<OWLDescription> weakenedFillers = computeTau((OWLDescription)desc.getFiller()); - Set<OWLDescription> result = new HashSet<OWLDescription>(); - for(int n = desc.getCardinality(); n > 0; n--) - { - - for(OWLDescription filler : weakenedFillers ){ - result.add(getDataFactory().getOWLObjectMinCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), n, filler)); - } - - } - - result.add(getLimit()); - return result; - } - - @Override - protected OWLClass getLimit() - { - return getDataFactory().getOWLThing(); - } - - @Override - protected OWLDataRange getDataLimit() - { - return getDataFactory().getTopDataType(); - } - - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-07 08:38:37
|
Revision: 1743 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1743&view=rev Author: lorenz_b Date: 2009-05-07 08:38:31 +0000 (Thu, 07 May 2009) Log Message: ----------- prototype class to work with inconsistency explanations implemented as singleton Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-07 08:38:31 UTC (rev 1743) @@ -0,0 +1,152 @@ +package org.dllearner.tools.ore; + +import java.net.URI; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.dllearner.tools.ore.explanation.ExplanationException; +import org.dllearner.tools.ore.explanation.LaconicExplanationGenerator; +import org.dllearner.tools.ore.explanation.RootFinder; +import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLSubClassAxiom; + +import uk.ac.manchester.cs.bhig.util.Tree; +import uk.ac.manchester.cs.owl.explanation.ordering.DefaultExplanationOrderer; +import uk.ac.manchester.cs.owl.explanation.ordering.ExplanationTree; + +import com.clarkparsia.explanation.PelletExplanation; + +public class ExplanationManager { + + private static ExplanationManager instance; + + private OWLOntologyManager manager; + private OWLDataFactory dataFactory; + private PelletReasonerFactory reasonerFactory; + private OWLOntology ontology; + private Reasoner reasoner; + private PelletExplanation regularExpGen; + private LaconicExplanationGenerator laconicExpGen; + private RootFinder rootFinder; + private Map<OWLClass, Set<Set<OWLAxiom>>> regularExplanationCache; + private Map<OWLClass, Set<Set<OWLAxiom>>> laconicExplanationCache; + + + private ExplanationManager(String ontPath){ + regularExplanationCache = new HashMap<OWLClass, Set<Set<OWLAxiom>>>(); + laconicExplanationCache = new HashMap<OWLClass, Set<Set<OWLAxiom>>>(); + + try { + manager = OWLManager.createOWLOntologyManager(); + dataFactory = manager.getOWLDataFactory(); + ontology = manager.loadOntology(URI.create(ontPath)); + reasonerFactory = new PelletReasonerFactory(); + reasoner = reasonerFactory.createReasoner(manager); + reasoner.loadOntology(ontology); + reasoner.classify(); + rootFinder = new RootFinder(manager, reasoner, reasonerFactory); + + regularExpGen = new PelletExplanation(manager, Collections.singleton(ontology)); + laconicExpGen = new LaconicExplanationGenerator(manager, reasonerFactory, Collections.singleton(ontology)); + } catch (OWLOntologyCreationException e) { + + e.printStackTrace(); + } + } + + public static synchronized ExplanationManager getExplanationManager(String ontPath){ + if(instance == null){ + instance = new ExplanationManager(ontPath); + } + return instance; + } + + public Set<OWLClass> getUnsatisfiableClasses(){ + return reasoner.getInconsistentClasses(); + } + + + public Set<OWLClass> getRootUnsatisfiableClasses(){ + return rootFinder.getRootClasses(); + } + + public Set<Set<OWLAxiom>> getUnsatisfiableExplanations(OWLClass unsat){ + Set<Set<OWLAxiom>> explanations = regularExplanationCache.get(unsat); + if(explanations == null){ + explanations = regularExpGen.getUnsatisfiableExplanations(unsat); + regularExplanationCache.put(unsat, explanations); + } + + return explanations; + } + + public Set<Set<OWLAxiom>> getLaconicUnsatisfiableExplanations(OWLClass unsat){ + Set<Set<OWLAxiom>> explanations = laconicExplanationCache.get(unsat); + OWLSubClassAxiom unsatAxiom; + if(explanations == null){ + unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory.getOWLNothing()); + try { + explanations = laconicExpGen.getExplanations(unsatAxiom); + } catch (ExplanationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + laconicExplanationCache.put(unsat, explanations); + } + return explanations; + + } + + public Set<List<OWLAxiom>> getOrderedUnsatisfiableExplanations(OWLClass unsat){ + + return getOrderedExplanations(dataFactory.getOWLSubClassAxiom(unsat, dataFactory.getOWLNothing()), + getUnsatisfiableExplanations(unsat)); + + } + + public Set<List<OWLAxiom>> getOrderedLaconicUnsatisfiableExplanations(OWLClass unsat){ + + return getOrderedExplanations(dataFactory.getOWLSubClassAxiom(unsat, dataFactory.getOWLNothing()), + getLaconicUnsatisfiableExplanations(unsat)); + + } + + public ArrayList<OWLAxiom> getTree2List(Tree<OWLAxiom> tree){ + ArrayList<OWLAxiom> ordering = new ArrayList<OWLAxiom>(); + ordering.add((OWLAxiom)tree.getUserObject()); + for(Tree<OWLAxiom> child : tree.getChildren()){ + ordering.addAll(getTree2List(child)); + } + return ordering; + } + + public Set<List<OWLAxiom>> getOrderedExplanations(OWLAxiom entailment, Set<Set<OWLAxiom>> explanations){ + DefaultExplanationOrderer orderer = new DefaultExplanationOrderer(); + Set<List<OWLAxiom>> orderedExplanations = new HashSet<List<OWLAxiom>>(); + ArrayList<OWLAxiom> ordering; + for(Set<OWLAxiom> explanation : explanations){ + ordering = new ArrayList<OWLAxiom>(); + ExplanationTree tree = orderer.getOrderedExplanation(entailment, explanation); + +// ordering.add(tree.getUserObject()); + for(Tree<OWLAxiom> child : tree.getChildren()){ + ordering.addAll(getTree2List(child)); + } + orderedExplanations.add(ordering); + } + return orderedExplanations; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-07 08:28:17
|
Revision: 1742 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1742&view=rev Author: lorenz_b Date: 2009-05-07 08:28:15 +0000 (Thu, 07 May 2009) Log Message: ----------- class to get possible root unsatisfiable classes using structural analysis of the ontology Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-05-07 08:28:15 UTC (rev 1742) @@ -0,0 +1,346 @@ +package org.dllearner.tools.ore.explanation; + +import java.net.URI; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.inference.OWLReasoner; +import org.semanticweb.owl.inference.OWLReasonerException; +import org.semanticweb.owl.inference.OWLReasonerFactory; +import org.semanticweb.owl.model.AxiomType; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataAllRestriction; +import org.semanticweb.owl.model.OWLDataExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataSomeRestriction; +import org.semanticweb.owl.model.OWLDataValueRestriction; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLDescriptionVisitor; +import org.semanticweb.owl.model.OWLDisjointClassesAxiom; +import org.semanticweb.owl.model.OWLEntity; +import org.semanticweb.owl.model.OWLObjectAllRestriction; +import org.semanticweb.owl.model.OWLObjectComplementOf; +import org.semanticweb.owl.model.OWLObjectExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectIntersectionOf; +import org.semanticweb.owl.model.OWLObjectMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectOneOf; +import org.semanticweb.owl.model.OWLObjectPropertyExpression; +import org.semanticweb.owl.model.OWLObjectSelfRestriction; +import org.semanticweb.owl.model.OWLObjectSomeRestriction; +import org.semanticweb.owl.model.OWLObjectUnionOf; +import org.semanticweb.owl.model.OWLObjectValueRestriction; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLQuantifiedRestriction; +import org.semanticweb.owl.model.RemoveAxiom; + +public class RootFinder implements OWLDescriptionVisitor{ + + private OWLOntologyManager manager; + private OWLReasoner reasoner; + private OWLReasonerFactory reasonerFactory; + private Set<OWLClass> rootClasses; + private Set<OWLClass> depend2Classes; + private OWLOntology ontology; + + int depth; + private Map<Integer, Set<OWLObjectAllRestriction>> depth2UniversalRestrictionPropertyMap; + private Map<Integer, Set<OWLObjectPropertyExpression>> depth2ExistsRestrictionPropertyMap; + + private Map<OWLClass, Set<OWLClass>> child2Parents; + private Map<OWLClass, Set<OWLClass>> parent2Children; + + public RootFinder(OWLOntologyManager manager, OWLReasoner reasoner, OWLReasonerFactory reasonerFactory){ + this.manager = manager; + this.reasoner = reasoner; + this.reasonerFactory = reasonerFactory; + try { + this.ontology = manager.createOntology(URI.create("all"), reasoner.getLoadedOntologies()); + } catch (OWLOntologyCreationException e) { + e.printStackTrace(); + } catch (OWLOntologyChangeException e) { + e.printStackTrace(); + } + rootClasses = new HashSet<OWLClass>(); + depend2Classes = new HashSet<OWLClass>(); + depth2UniversalRestrictionPropertyMap = new HashMap<Integer, Set<OWLObjectAllRestriction>>(); + depth2ExistsRestrictionPropertyMap = new HashMap<Integer, Set<OWLObjectPropertyExpression>>(); + + child2Parents = new HashMap<OWLClass, Set<OWLClass>>(); + parent2Children = new HashMap<OWLClass, Set<OWLClass>>(); + } + + public Set<OWLClass> getRootClasses(){ + computePossibleRoots(); + pruneRoots(); + rootClasses.remove(manager.getOWLDataFactory().getOWLNothing()); +// for(OWLClass child : child2Parents.keySet()){ +// for(OWLClass par : get(child, child2Parents)){ +// get(par, parent2Childs).add(child); +// } +// } + return rootClasses; + } + + private void computePossibleRoots(){ + try { + for(OWLClass cls : reasoner.getInconsistentClasses()){ + reset(); + for(OWLDescription equi : cls.getEquivalentClasses(ontology)){ + equi.accept(this); + } + for(OWLDescription sup : cls.getSuperClasses(ontology)){ + sup.accept(this); + } + for(Integer depth : depth2UniversalRestrictionPropertyMap.keySet()){ + Set<OWLObjectPropertyExpression> successors = depth2ExistsRestrictionPropertyMap.get(depth); + if(successors != null){ + for(OWLObjectAllRestriction all : depth2UniversalRestrictionPropertyMap.get(depth)){ + if(successors.contains(all.getProperty())){ + depend2Classes.add(all.getFiller().asOWLClass()); + } + } + } + } + child2Parents.put(cls, depend2Classes); + if(depend2Classes.isEmpty()){ + rootClasses.add(cls); + } + } + } catch (OWLReasonerException e) { + e.printStackTrace(); + } + } + + private void pruneRoots() { + + try { + Set<OWLClass> roots = new HashSet<OWLClass>(rootClasses); + List<OWLOntologyChange> appliedChanges = new ArrayList<OWLOntologyChange>(); + Set<OWLClass> potentialRoots = new HashSet<OWLClass>(); + for (OWLDisjointClassesAxiom dis : new ArrayList<OWLDisjointClassesAxiom>( + ontology.getAxioms(AxiomType.DISJOINT_CLASSES))) { + for (OWLClass cls : roots) { + if (dis.getSignature().contains(cls)) { + OWLOntologyChange rem = new RemoveAxiom(ontology, dis); + manager.applyChange(rem); + appliedChanges.add(rem); + for (OWLEntity ent : dis.getSignature()) { + if (ent.isOWLClass()) { + potentialRoots.add(ent.asOWLClass()); + } + } + } + } + } + for (OWLClass cls : roots) { + manager.addAxiom(ontology, manager.getOWLDataFactory() + .getOWLDeclarationAxiom(cls)); + } + OWLReasoner checker = reasonerFactory.createReasoner(manager); + checker.loadOntologies(Collections.singleton(ontology)); + for (OWLClass root : new ArrayList<OWLClass>(roots)) { + if (!potentialRoots.contains(root) && checker.isSatisfiable(root)) { + rootClasses.remove(root); + } + } + } catch (OWLOntologyChangeException e) { + e.printStackTrace(); + } catch (OWLReasonerException e) { + e.printStackTrace(); + } + } + + private void reset(){ + depend2Classes.clear(); + depth2ExistsRestrictionPropertyMap.clear(); + depth2UniversalRestrictionPropertyMap.clear(); + } + + private void checkObjectRestriction(OWLQuantifiedRestriction<OWLObjectPropertyExpression,OWLDescription> restr){ + OWLDescription filler = restr.getFiller(); + try { + if(filler.isAnonymous()){ + depth++; + filler.accept(this); + depth--; + } else { + if(!reasoner.isSatisfiable(filler)){ + depend2Classes.add(filler.asOWLClass()); + if(restr instanceof OWLObjectAllRestriction){ + addAllRestrictionProperty((OWLObjectAllRestriction) restr); + return; + } + } + addExistsRestrictionProperty(restr.getProperty()); + } + } catch (OWLReasonerException e) { + e.printStackTrace(); + } + + } + + private void addExistsRestrictionProperty(OWLObjectPropertyExpression expr){ + Set<OWLObjectPropertyExpression> properties = depth2ExistsRestrictionPropertyMap.get(Integer.valueOf(depth)); + if(properties == null){ + properties = new HashSet<OWLObjectPropertyExpression>(); + depth2ExistsRestrictionPropertyMap.put(Integer.valueOf(depth), properties); + } + properties.add(expr); + } + + private void addAllRestrictionProperty(OWLObjectAllRestriction all){ + Set<OWLObjectAllRestriction> properties = depth2UniversalRestrictionPropertyMap.get(Integer.valueOf(depth)); + if(properties == null){ + properties = new HashSet<OWLObjectAllRestriction>(); + depth2UniversalRestrictionPropertyMap.put(Integer.valueOf(depth), properties); + } + properties.add(all); + } + + + @Override + public void visit(OWLClass cls) { + + try { + if(!reasoner.isSatisfiable(cls)) { + depend2Classes.add(cls); + } + } catch (OWLReasonerException e) { + e.printStackTrace(); + } + } + + @Override + public void visit(OWLObjectIntersectionOf and) { + + try { + for(OWLDescription op : and.getOperands()) { + if(op.isAnonymous()){ + op.accept(this); + } else if(!reasoner.isSatisfiable(op)) { + depend2Classes.add(op.asOWLClass()); + } + } + } catch (OWLReasonerException e) { + e.printStackTrace(); + } + } + + @Override + public void visit(OWLObjectUnionOf or) { + + try { + for(OWLDescription op : or.getOperands()){ + if(reasoner.isSatisfiable(op)){ + return; + } + } + for(OWLDescription op : or.getOperands()){ + if(op.isAnonymous()){ + op.accept(this); + } else { + depend2Classes.add(op.asOWLClass()); + } + } + } catch (OWLReasonerException e) { + e.printStackTrace(); + } + } + + @Override + public void visit(OWLObjectAllRestriction all) { + checkObjectRestriction(all); + } + + @Override + public void visit(OWLObjectMinCardinalityRestriction min) { + checkObjectRestriction(min); + } + + @Override + public void visit(OWLObjectExactCardinalityRestriction exact) { + checkObjectRestriction(exact); + } + + @Override + public void visit(OWLObjectSelfRestriction self) { + addExistsRestrictionProperty(self.getProperty()); + } + + @Override + public void visit(OWLObjectSomeRestriction some) { + checkObjectRestriction(some); + } + + @Override + public void visit(OWLObjectComplementOf arg0) { + } + + @Override + public void visit(OWLObjectValueRestriction arg0) { + } + + @Override + public void visit(OWLObjectMaxCardinalityRestriction arg0) { + } + + @Override + public void visit(OWLObjectOneOf arg0) { + } + + @Override + public void visit(OWLDataSomeRestriction arg0) { + } + + @Override + public void visit(OWLDataAllRestriction arg0) { + } + + @Override + public void visit(OWLDataValueRestriction arg0) { + } + + @Override + public void visit(OWLDataMinCardinalityRestriction arg0) { + } + + @Override + public void visit(OWLDataExactCardinalityRestriction arg0) { + } + + @Override + public void visit(OWLDataMaxCardinalityRestriction arg0) { + } + + public static void main(String[] args){ + try { + String file = "file:examples/ore/tambis.owl"; + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create(file)); + OWLReasonerFactory factory = new PelletReasonerFactory(); + OWLReasoner reasoner = factory.createReasoner(manager); + reasoner.loadOntologies(Collections.singleton(ontology)); + UnsatRootClassesFinder strReasoner = new UnsatRootClassesFinder(manager, reasoner, factory); + System.out.println(strReasoner.getRootUnsatisfiableClasses()); + } catch (OWLOntologyCreationException e) { + e.printStackTrace(); + } catch (ExplanationException e) { + e.printStackTrace(); + } catch (OWLReasonerException e) { + e.printStackTrace(); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hee...@us...> - 2009-05-06 13:15:11
|
Revision: 1741 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1741&view=rev Author: heeroyuy Date: 2009-05-06 13:15:10 +0000 (Wed, 06 May 2009) Log Message: ----------- -removed EllipseTest -removed checkstyle warnings -update suggest list only when item has changed -update graphical panel when suggest list item is updated Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java trunk/src/dl-learner/org/dllearner/tools/protege/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/protege/IndividualPoint.java trunk/src/dl-learner/org/dllearner/tools/protege/MoreDetailForSuggestedConceptsPanel.java trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java trunk/src/dl-learner/org/dllearner/tools/protege/ProtegePlugin.java trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java trunk/src/dl-learner/org/dllearner/tools/protege/SuggestClassPanel.java trunk/src/dl-learner/org/dllearner/tools/protege/SuggestListItem.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/protege/EllipseTest.java Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ActionHandler.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -74,15 +74,10 @@ /** * This is the constructor for the action handler. - * - * @param a - * ActionHandler * @param m * DLLearnerModel * @param view * DLlearner tab - * @param i - * id if it is a subclass or an equivalent class * */ public ActionHandler(DLLearnerModel m, DLLearnerView view) { @@ -102,7 +97,8 @@ if (z.getActionCommand().equals("suggest equivalent class expression") || z.getActionCommand().equals("suggest super class expression")) { model.setKnowledgeSource(); - //model.setReasoner(); + view.getSuggestClassPanel().getSuggestModel().clear(); + view.getSuggestClassPanel().repaint(); model.setLearningProblem(); model.setLearningAlgorithm(); view.getRunButton().setEnabled(false); Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -162,8 +162,6 @@ * * @param editorKit * Editor Kit to get the currently loaded Ontology - * @param id - * String if it learns a subclass or a superclass. * @param view * current view of the DL-Learner tab */ @@ -181,6 +179,10 @@ sources = new HashSet<KnowledgeSource>(); } + /** + * Sets the ID if an equivalent or a superclass must be suggested. + * @param d ID if it is an equivalent or a superclass + */ public void setID(String d) { this.id = d; } @@ -495,13 +497,30 @@ return individual; } + /** + * This method returns if the ID is an equivalent or a superclass. + * @return id if it is an equivalent or superclass + */ public String getID() { return id; } + /** + * Returns boolean if reasoner is allready set. + * @return isReasonerSet + */ public boolean isReasonerSet() { return isReasonerSet; } + + /** + * This method returns the currently selected class description as an evaluated description. + * @param index which class descriptions is selected + * @return selected class description + */ + public EvaluatedDescription getCurrentlySelectedClassDescription(int index) { + return evalDescriptions.get(index); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerView.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -127,13 +127,12 @@ * editor. * * @param editor OWLEditorKit - * @param label String */ public DLLearnerView(OWLEditorKit editor) { editorKit = editor; labels = ""; model = new DLLearnerModel(editorKit, this); - sugPanel = new SuggestClassPanel(); + sugPanel = new SuggestClassPanel(model, this); learnerPanel = new JPanel(); learnerPanel.setLayout(new BorderLayout()); learnerScroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); @@ -191,6 +190,7 @@ /** * This Method renders the view of the plugin. + * @param label label if it is an equivalent or superclass */ public void makeView(String label) { run.setEnabled(false); @@ -282,6 +282,8 @@ sugPanel.setVisible(true); learnerScroll.setViewportView(learner); this.renderErrorMessage(""); + this.getSuggestClassPanel().getSuggestModel().clear(); + this.getSuggestClassPanel().repaint(); } @@ -303,6 +305,10 @@ } } + /** + * This method enables the GraphicalCoveragePanel after a class expression is + * selected from the list. + */ public void setGraphicalPanel() { GridBagConstraints c = new GridBagConstraints(); learner.remove(posPanel); @@ -380,6 +386,9 @@ return model.getNewOWLDescription(); } + /** + * This method unsets all results after closing the plugin. + */ public void dispose() { this.unsetEverything(); sugPanel.getSuggestList().removeAll(); @@ -485,14 +494,26 @@ setHintMessage(message); } + /** + * This method returns the view of the plugin. + * @return Plugin view + */ public JComponent getLearnerView() { return learnerScroll; } + /** + * This method returns the model of the DL-Learner plugin. + * @return model of the plugin + */ public DLLearnerModel getDLLearnerModel() { return model; } + /** + * This method returns the thread for initializing the reasoner and reading the ontology. + * @return thread that initializes the reasoner + */ public ReadingOntologyThread getReadingOntologyThread() { return readThread; } Deleted: trunk/src/dl-learner/org/dllearner/tools/protege/EllipseTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/EllipseTest.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/EllipseTest.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -1,58 +0,0 @@ -package org.dllearner.tools.protege; - -import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.geom.Ellipse2D; -import java.awt.geom.Point2D; -import java.util.Random; - -import javax.swing.JDialog; -import javax.swing.JPanel; - -public class EllipseTest extends JPanel { - - private static final long serialVersionUID = -5676466024192284648L; - private final Ellipse2D te; - private final Random random; - - public EllipseTest() { - te = new Ellipse2D.Double(0, 0, 150, 150); - this.setSize(500, 500); - random = new Random(); - JDialog dialog = new JDialog(); - dialog.add(this); - dialog.setSize(600, 600); - dialog.setVisible(true); - } - - @Override - protected void paintComponent(Graphics g) { - Graphics2D g2D; - g2D = (Graphics2D) g; - g2D.setColor(Color.YELLOW); - g2D.fill(te); - g2D.setColor(Color.RED); - double x = random.nextInt(500); - double y = random.nextInt(500); - int i = 0; - while (i < 1000) { - Point2D point = new Point2D.Double(x, y); - if (te.contains(point)) { - Ellipse2D circlePoint = new Ellipse2D.Double(x - 1, y - 1, 3, 3); - g2D.draw(circlePoint); - // g2D.drawString("*", ((int)x), ((int) y)); - x = random.nextInt(500); - y = random.nextInt(500); - i++; - } else { - x = random.nextInt(500); - y = random.nextInt(500); - } - } - } - - public static void main(String[] args) { - new EllipseTest(); - } -} Modified: trunk/src/dl-learner/org/dllearner/tools/protege/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/GraphicalCoveragePanel.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/GraphicalCoveragePanel.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -53,6 +53,7 @@ private static final int PLUS_SIZE = 5; private static final int SUBSTRING_SIZE = 25; private static final int SPACE_SIZE = 7; + private static final int MAX_RANDOM_NUMBER = 300; private static final String EQUI_STRING = "equivalent class"; private final String id; private int shiftXAxis; @@ -120,7 +121,7 @@ posNotCovIndVector = new Vector<IndividualPoint>(); additionalIndividuals = new Vector<IndividualPoint>(); points = new Vector<IndividualPoint>(); - this.computeGraphics(0, 0); + this.computeGraphics(); handler = new GraphicalCoveragePanelHandler(this, desc, model); if(shiftXAxis == 0) { oldConcept = new Ellipse2D.Double(ELLIPSE_X_AXIS + (2 * adjustment)+3, @@ -139,7 +140,7 @@ + adjustment, ELLIPSE_Y_AXIS, WIDTH + distortionOld, HEIGHT + distortionOld); } - this.computeIndividualPoints(300); + this.computeIndividualPoints(); this.addMouseMotionListener(handler); this.addMouseListener(handler); } @@ -376,7 +377,7 @@ } } - private void computeGraphics(int w, int h) { + private void computeGraphics() { if (eval != null) { this.setVisible(true); panel.repaint(); @@ -385,7 +386,7 @@ distortionOld = 0; adjustment = 0; Ellipse2D old = new Ellipse2D.Double(ELLIPSE_X_AXIS, ELLIPSE_Y_AXIS, - WIDTH + w, HEIGHT + h); + WIDTH, HEIGHT); x1 = (int) old.getCenterX() - PLUS_SIZE; x2 = (int) old.getCenterX() + PLUS_SIZE; y1 = (int) old.getCenterY() - PLUS_SIZE; @@ -393,19 +394,19 @@ centerX = (int) old.getCenterX(); centerY = (int) old.getCenterY(); double coverage = ((EvaluatedDescriptionClass) eval).getCoverage(); - shiftXAxis = (int) Math.round((WIDTH + w) * (1 - coverage)); + shiftXAxis = (int) Math.round((WIDTH) * (1 - coverage)); if (additionalIndividualSize != 0 && ((EvaluatedDescriptionClass) eval).getCoverage() == 1.0 && ((EvaluatedDescriptionClass) eval).getAddition() < 1.0) { - distortionOld = (int) Math.round((WIDTH + w) * 0.3); + distortionOld = (int) Math.round((WIDTH) * 0.3); Ellipse2D newer = new Ellipse2D.Double(ELLIPSE_X_AXIS + shiftXAxis, - ELLIPSE_Y_AXIS, (WIDTH + w), HEIGHT + h); + ELLIPSE_Y_AXIS, (WIDTH), HEIGHT); adjustment = (int) Math.round(newer.getCenterY() / 4); } - this.renderPlus(w); + this.renderPlus(); } } - private void renderPlus(int w) { + private void renderPlus() { if (eval != null) { coveredIndividualSize = ((EvaluatedDescriptionClass) eval) .getCoveredInstances().size(); @@ -418,17 +419,17 @@ shiftNewConceptX = 0; shiftCovered = 0; if (coveredIndividualSize == 0) { - shiftNewConcept = (int) Math.round(((WIDTH + w) / 2.0) * newConcepts); + shiftNewConcept = (int) Math.round(((WIDTH) / 2.0) * newConcepts); } else if (additionalIndividualSize != coveredIndividualSize) { - shiftNewConcept = (int) Math.round(((WIDTH + w) / 2.0) + shiftNewConcept = (int) Math.round(((WIDTH) / 2.0) * (1.0 + (1.0 - oldConcepts))); - shiftOldConcept = (int) Math.round(((WIDTH + w) / 2.0) * oldConcepts); - shiftCovered = (int) Math.round(((WIDTH + w) / 2.0) + shiftOldConcept = (int) Math.round(((WIDTH) / 2.0) * oldConcepts); + shiftCovered = (int) Math.round(((WIDTH) / 2.0) * (1 - oldConcepts)); } if (((EvaluatedDescriptionClass) eval).getAddition() != 1.0 && ((EvaluatedDescriptionClass) eval) .getCoverage() == 1.0) { - shiftCovered = (int) Math.round(((WIDTH + w) / 2.0) * 0.625); + shiftCovered = (int) Math.round(((WIDTH) / 2.0) * 0.625); shiftNewConceptX = shiftCovered; shiftNewConcept = 2 * shiftNewConceptX; } @@ -478,13 +479,13 @@ } } - private void computeIndividualPoints(int n) { + private void computeIndividualPoints() { if (eval != null) { Set<Individual> posInd = ((EvaluatedDescriptionClass) eval) .getCoveredInstances(); int i = 0; - double x = random.nextInt(n); - double y = random.nextInt(n); + double x = random.nextInt(MAX_RANDOM_NUMBER); + double y = random.nextInt(MAX_RANDOM_NUMBER); boolean flag = true; for (Individual ind : posInd) { flag = true; @@ -507,12 +508,12 @@ i++; flag = false; - x = random.nextInt(n); - y = random.nextInt(n); + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); break; } else { - x = random.nextInt(n); - y = random.nextInt(n); + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); } } @@ -522,8 +523,8 @@ Set<Individual> posNotCovInd = ((EvaluatedDescriptionClass) eval) .getAdditionalInstances(); int j = 0; - x = random.nextInt(n); - y = random.nextInt(n); + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); for (Individual ind : posNotCovInd) { flag = true; if (j < MAX_NUMBER_OF_INDIVIDUAL_POINTS) { @@ -563,12 +564,12 @@ } j++; flag = false; - x = random.nextInt(n); - y = random.nextInt(n); + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); break; } else { - x = random.nextInt(n); - y = random.nextInt(n); + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); } } @@ -580,8 +581,8 @@ notCovInd.removeAll(posInd); notCoveredInd = notCovInd.size(); int k = 0; - x = random.nextInt(n); - y = random.nextInt(n); + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); for (Individual ind : notCovInd) { flag = true; if (k < MAX_NUMBER_OF_INDIVIDUAL_POINTS) { @@ -603,12 +604,12 @@ } k++; flag = false; - x = random.nextInt(n); - y = random.nextInt(n); + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); break; } else { - x = random.nextInt(n); - y = random.nextInt(n); + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); } } @@ -685,32 +686,32 @@ } /** - * - * @return + * This method returns how much the old concept must be shifted. + * @return shift of the old concept */ public int getShiftOldConcept() { return shiftOldConcept; } /** - * - * @return + * This method returns how much the plus in the middle must be shifted. + * @return shift of the middle plus */ public int getShiftCovered() { return shiftCovered; } /** - * - * @return + * This method returns how much the new concept must be shifted. + * @return shift of the new concept */ public int getShiftNewConcept() { return shiftNewConcept; } /** - * - * @return + * This method returns how much the new concept must be shifted. + * @return shift of the new concept */ public int getShiftNewConceptX() { return shiftNewConceptX; @@ -732,17 +733,4 @@ public EvaluatedDescription getEvaluateddescription() { return eval; } - - public void resizePanel(int w, int h) { - this.setPreferredSize(new Dimension(WIDTH + w, HEIGHT + 100 + h)); - this.computeGraphics(w, h); - oldConcept = new Ellipse2D.Double(ELLIPSE_X_AXIS + (2 * adjustment), - ELLIPSE_Y_AXIS, WIDTH + w, HEIGHT + h); - newConcept = new Ellipse2D.Double(ELLIPSE_X_AXIS + shiftXAxis - + adjustment, ELLIPSE_Y_AXIS, WIDTH + distortionOld + w, HEIGHT - + distortionOld + h); - this.computeIndividualPoints(300 + w + h); - this.repaint(); - - } } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/IndividualPoint.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/IndividualPoint.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/IndividualPoint.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -106,6 +106,10 @@ return individual; } + /** + * This method returns an ellipse of the individual for the GraphicalCoveragePanel. + * @return individual point of the individual + */ public Ellipse2D getIndividualPoint() { return circlePoint; } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/MoreDetailForSuggestedConceptsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/MoreDetailForSuggestedConceptsPanel.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/MoreDetailForSuggestedConceptsPanel.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -156,12 +156,25 @@ } + /** + * Returns the graphical coverage panel. + * @return graphical coverage panel + */ public GraphicalCoveragePanel getGraphicalCoveragePanel() { return p; } + + /** + * Returns the concept panel. + * @return concept panel + */ public JPanel getConceptPanel() { return conceptPanel; } + + /** + * Unsets the panel after plugin is closed. + */ public void unsetPanel() { unsetEverything(); conceptPanel.removeAll(); @@ -181,5 +194,4 @@ repaint(); } - -} \ No newline at end of file +} Modified: trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -49,9 +49,9 @@ public OptionPanel() { setLayout(new BorderLayout()); labelPanel = new JPanel(); - labelPanel.setLayout(new GridLayout(0,1)); + labelPanel.setLayout(new GridLayout(0, 1)); sliderPanel = new JPanel(); - sliderPanel.setLayout(new GridLayout(0,1)); + sliderPanel.setLayout(new GridLayout(0, 1)); minAccuracyLabel = new JLabel("noise in %: "); maxExecutionTimeLabel = new JLabel("maximum execution time: "); nrOfConceptsLabel = new JLabel("max. number of results: "); Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ProtegePlugin.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ProtegePlugin.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ProtegePlugin.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -48,11 +48,19 @@ @Override public Set<OWLDescription> getDescriptions() { + if(view.getDLLearnerModel().getLearningAlgorithm() != null) { + if(view.getDLLearnerModel().getLearningAlgorithm().isRunning()) { + view.getDLLearnerModel().getLearningAlgorithm().stop(); + view.unsetEverything(); + } + } return view.getSolutions(); } @Override public boolean isValidInput() { + view.getSuggestClassPanel().getSuggestModel().clear(); + view.getSuggestClassPanel().repaint(); if(this.getAxiomType().toString().equals(EQUIVALENT_CLASS_STRING)) { view.makeView("equivalent class"); } else if(this.getAxiomType().toString().equals(SUPERCLASS_STRING)) { @@ -87,8 +95,4 @@ public void removeStatusChangedListener( InputVerificationStatusChangedListener arg0) { } - - - - -} \ No newline at end of file +} Modified: trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/ReadingOntologyThread.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -54,7 +54,6 @@ /** * This is the constructor of the ReadingOntologyThread. * @param editorKit OWLEditorKit - * @param frame OWLFrame * @param v DL-Learner view * @param m DL-Learner model */ @@ -64,10 +63,18 @@ this.model = m; } + /** + * This method sets the view of the DL-Learner plugin. + * @param v DLLearnerView + */ public void setDLLearnerView(DLLearnerView v) { this.view = v; } + /** + * This method sets the model of the DL-Learner plugin. + * @param m DLLearnerModel + */ public void setDLLearnerModel(DLLearnerModel m) { this.model = m; } @@ -104,7 +111,6 @@ individual = reasoner.getIndividuals(concept); model.setIndividuals(individual); model.setHasIndividuals(hasIndividuals); - System.out.println("current: " + currentConcept); model.setCurrentConcept(currentConcept); view.getRunButton().setEnabled(true); break; @@ -192,6 +198,10 @@ } } + /** + * This method returns the NamedClass for the currently selected class. + * @return NamedClass of the currently selected class + */ public NamedClass getCurrentConcept() { return currentConcept; } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/SuggestClassPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/SuggestClassPanel.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/SuggestClassPanel.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -28,36 +28,48 @@ import javax.swing.ListSelectionModel; /** - * This class is the panel for the suggest list. - * It shows the descriptions made by the DL-Learner. + * This class is the panel for the suggest list. It shows the descriptions made + * by the DL-Learner. + * * @author Christian Koetteritzsch - * + * */ public class SuggestClassPanel extends JPanel { - + private static final long serialVersionUID = 724628423947230L; - - // Description List - + + // Description List + private final JList descriptions; - - // Panel for the description list - + + // Panel for the description list + private final JPanel suggestPanel; - - //Scroll panel if the suggestions are longer than the Panel itself + // Scroll panel if the suggestions are longer than the Panel itself + private final JScrollPane suggestScroll; + private DefaultListModel suggestModel; + private DLLearnerModel model; + private DLLearnerView view; + /** - * This is the constructor for the suggest panel. - * It creates a new Scroll panel and puts the Suggest List in it. + * This is the constructor for the suggest panel. It creates a new Scroll + * panel and puts the Suggest List in it. + * @param m model of the DL-Learner + * @param v view of the DL-Learner */ - public SuggestClassPanel() { + public SuggestClassPanel(DLLearnerModel m, DLLearnerView v) { super(); + this.model = m; + this.view = v; + suggestModel = new DefaultListModel(); this.setLayout(new BorderLayout()); - //renders scroll bars if necessary - suggestScroll = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - descriptions = new JList(); + // renders scroll bars if necessary + suggestScroll = new JScrollPane( + JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, + JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + descriptions = new JList(suggestModel); descriptions.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); suggestPanel = new JPanel(); descriptions.setVisible(true); @@ -68,41 +80,86 @@ descriptions.setCellRenderer(new SuggestListCellRenderer()); add(BorderLayout.CENTER, suggestScroll); } - + /** - * this method adds an new Scroll Panel and returns the updated SuggestClassPanel. + * this method adds an new Scroll Panel and returns the updated + * SuggestClassPanel. + * * @return updated SuggestClassPanel */ public SuggestClassPanel updateSuggestClassList() { add(suggestScroll); return this; - + } + /** * This method is called after the model for the suggest list is updated. - * - * @param desc List model of descriptions made by the DL-Learner + * + * @param desc + * List model of descriptions made by the DL-Learner */ public void setSuggestList(DefaultListModel desc) { - descriptions.setModel(desc); + if (desc.size() != 0) { + if (suggestModel.size() == 0) { + for (int i = 0; i < desc.size(); i++) { + suggestModel.add(i, desc.get(i)); + } + } else { + for (int i = 0; i < suggestModel.size(); i++) { + if (!((SuggestListItem) suggestModel.get(i)).getValue() + .equals(((SuggestListItem) desc.get(i)).getValue())) { + descriptions.getSelectedIndex(); + suggestModel.set(i, desc.get(i)); + if (descriptions.getSelectedIndex() == i) { + view + .getMoreDetailForSuggestedConceptsPanel() + .renderDetailPanel( + model + .getCurrentlySelectedClassDescription(i)); + view.setGraphicalPanel(); + view.getMoreDetailForSuggestedConceptsPanel() + .repaint(); + + } + } + } + for (int i = suggestModel.getSize(); i < desc.size(); i++) { + suggestModel.add(i, desc.get(i)); + } + } + } descriptions.repaint(); repaint(); } + /** * This method returns the current Description list. + * * @return JList of Descriptions */ public JList getSuggestList() { return descriptions; } - + /** * This method adds the suggest list to the Mouse Listener. - * @param action ActionHandler + * + * @param action + * ActionHandler */ public void addSuggestPanelMouseListener(ActionHandler action) { descriptions.addMouseListener(action); - + } + /** + * Thsi method returns the list model for the suggest list. + * + * @return list model for the suggest list + */ + public DefaultListModel getSuggestModel() { + return suggestModel; + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/protege/SuggestListItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/SuggestListItem.java 2009-05-06 10:53:22 UTC (rev 1740) +++ trunk/src/dl-learner/org/dllearner/tools/protege/SuggestListItem.java 2009-05-06 13:15:10 UTC (rev 1741) @@ -28,8 +28,8 @@ public class SuggestListItem { private final Color color; - private final String value; - private final double accuracy; + private String value; + private double accuracy; /** * Constructor for the SuggestListItem. * @param c Color Color in which the text is painted. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-06 10:53:28
|
Revision: 1740 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1740&view=rev Author: jenslehmann Date: 2009-05-06 10:53:22 +0000 (Wed, 06 May 2009) Log Message: ----------- fixed two load/save bugs in GUI Modified Paths: -------------- trunk/doc/configOptions.txt trunk/src/dl-learner/org/dllearner/cli/Start.java trunk/src/dl-learner/org/dllearner/core/options/StringConfigOption.java trunk/src/dl-learner/org/dllearner/core/options/URLConfigOption.java Modified: trunk/doc/configOptions.txt =================================================================== --- trunk/doc/configOptions.txt 2009-05-06 10:37:08 UTC (rev 1739) +++ trunk/doc/configOptions.txt 2009-05-06 10:53:22 UTC (rev 1740) @@ -196,13 +196,7 @@ default value: true conf file usage: fastInstanceChecker.defaultNegation = true; -option name: forallRetrievalSemantics -description: This option controls how to interpret the all quantifier in orall r.C. The standard option isto return all those which do not have an r-filler not in C. The domain semantics is to use thosewhich are in the domain of r and do not have an r-filler not in C. The forallExists semantics is touse those which have at least one r-filler and do not have an r-filler not in C. -allowed values: String [domain, forallExists, standard] -default value: forallExists -conf file usage: fastInstanceChecker.forallRetrievalSemantics = forallExists; - component: fast retrieval reasoner (org.dllearner.reasoning.FastRetrievalReasoner) ================================================================================== @@ -225,160 +219,124 @@ * Learning Problems * ********************* -component: unnamed component (org.dllearner.learningproblems.ClassLearningProblem) -================================================================================== +component: class learning problem (org.dllearner.learningproblems.ClassLearningProblem) +======================================================================================= conf file usage: problem = classLearning; option name: classToDescribe description: class of which a description should be learned -allowed values: String [] +allowed values: URL default value: not set (mandatory) conf file usage: classLearning.classToDescribe = ; option name: type -description: Whether to learn an equivalence class or super class axiom. +description: whether to learn an equivalence class or super class axiom allowed values: String [equivalence, superClass] default value: equivalence conf file usage: classLearning.type = equivalence; -component: two valued inclusion learning problem (org.dllearner.learningproblems.PosNegInclusionLP) -=================================================================================================== +component: pos neg learning problem (org.dllearner.learningproblems.PosNegLPStandard) +===================================================================================== -conf file usage: problem = posNegInclusionLP; +conf file usage: problem = posNegLPStandard; option name: positiveExamples description: positive examples allowed values: Set<String> default value: not set (mandatory) -conf file usage: posNegInclusionLP.positiveExamples = ; +conf file usage: posNegLPStandard.positiveExamples = ; option name: negativeExamples description: negative examples allowed values: Set<String> default value: not set (mandatory) -conf file usage: posNegInclusionLP.negativeExamples = ; +conf file usage: posNegLPStandard.negativeExamples = ; option name: useRetrievalForClassficiation description: Specifies whether to use retrieval or instance checks for testing a concept. allowed values: boolean default value: false -conf file usage: posNegInclusionLP.useRetrievalForClassficiation = false; +conf file usage: posNegLPStandard.useRetrievalForClassficiation = false; option name: percentPerLenghtUnit description: describes the reduction in classification accuracy in percent one is willing to accept for reducing the length of the concept by one allowed values: double min 0.0 max 1.0 default value: 0.05 -conf file usage: posNegInclusionLP.percentPerLenghtUnit = 0.05; +conf file usage: posNegLPStandard.percentPerLenghtUnit = 0.05; option name: useMultiInstanceChecks description: See UseMultiInstanceChecks enum. allowed values: String [never, oneCheck, twoChecks] default value: twoChecks -conf file usage: posNegInclusionLP.useMultiInstanceChecks = twoChecks; +conf file usage: posNegLPStandard.useMultiInstanceChecks = twoChecks; -component: two valued definition learning problem (org.dllearner.learningproblems.PosNegLPStandard) -=================================================================================================== - -conf file usage: problem = posNegDefinitionLP; - -option name: positiveExamples -description: positive examples -allowed values: Set<String> -default value: not set (mandatory) -conf file usage: posNegDefinitionLP.positiveExamples = ; - -option name: negativeExamples -description: negative examples -allowed values: Set<String> -default value: not set (mandatory) -conf file usage: posNegDefinitionLP.negativeExamples = ; - -option name: useRetrievalForClassficiation -description: Specifies whether to use retrieval or instance checks for testing a concept. -allowed values: boolean -default value: false -conf file usage: posNegDefinitionLP.useRetrievalForClassficiation = false; - -option name: percentPerLenghtUnit -description: describes the reduction in classification accuracy in percent one is willing to accept for reducing the length of the concept by one -allowed values: double min 0.0 max 1.0 -default value: 0.05 -conf file usage: posNegDefinitionLP.percentPerLenghtUnit = 0.05; - -option name: useMultiInstanceChecks -description: See UseMultiInstanceChecks enum. -allowed values: String [never, oneCheck, twoChecks] -default value: twoChecks -conf file usage: posNegDefinitionLP.useMultiInstanceChecks = twoChecks; - - component: three valued definition learning problem (org.dllearner.learningproblems.PosNegLPStrict) =================================================================================================== -conf file usage: problem = posNegDefinitionLPStrict; +conf file usage: problem = posNegLPStrict; option name: positiveExamples description: positive examples allowed values: Set<String> default value: not set (mandatory) -conf file usage: posNegDefinitionLPStrict.positiveExamples = ; +conf file usage: posNegLPStrict.positiveExamples = ; option name: negativeExamples description: negative examples allowed values: Set<String> default value: not set (mandatory) -conf file usage: posNegDefinitionLPStrict.negativeExamples = ; +conf file usage: posNegLPStrict.negativeExamples = ; option name: useRetrievalForClassficiation description: Specifies whether to use retrieval or instance checks for testing a concept. allowed values: boolean default value: false -conf file usage: posNegDefinitionLPStrict.useRetrievalForClassficiation = false; +conf file usage: posNegLPStrict.useRetrievalForClassficiation = false; option name: percentPerLenghtUnit description: describes the reduction in classification accuracy in percent one is willing to accept for reducing the length of the concept by one allowed values: double min 0.0 max 1.0 default value: 0.05 -conf file usage: posNegDefinitionLPStrict.percentPerLenghtUnit = 0.05; +conf file usage: posNegLPStrict.percentPerLenghtUnit = 0.05; option name: useMultiInstanceChecks description: See UseMultiInstanceChecks enum. allowed values: String [never, oneCheck, twoChecks] default value: twoChecks -conf file usage: posNegDefinitionLPStrict.useMultiInstanceChecks = twoChecks; +conf file usage: posNegLPStrict.useMultiInstanceChecks = twoChecks; option name: penaliseNeutralExamples description: if set to true neutral examples are penalised allowed values: boolean default value: not set -conf file usage: posNegDefinitionLPStrict.penaliseNeutralExamples = ; +conf file usage: posNegLPStrict.penaliseNeutralExamples = ; option name: accuracyPenalty description: penalty for pos/neg examples which are classified as neutral allowed values: double default value: 1.0 -conf file usage: posNegDefinitionLPStrict.accuracyPenalty = 1.0; +conf file usage: posNegLPStrict.accuracyPenalty = 1.0; option name: errorPenalty description: penalty for pos. examples classified as negative or vice versa allowed values: double default value: 3.0 -conf file usage: posNegDefinitionLPStrict.errorPenalty = 3.0; +conf file usage: posNegLPStrict.errorPenalty = 3.0; -component: positive only definition learning problem (org.dllearner.learningproblems.PosOnlyLP) -=============================================================================================== +component: pos only learning problem (org.dllearner.learningproblems.PosOnlyLP) +=============================================================================== -conf file usage: problem = null; +conf file usage: problem = posOnlyLP; option name: positiveExamples description: positive examples allowed values: Set<String> default value: not set (mandatory) -conf file usage: null.positiveExamples = ; +conf file usage: posOnlyLP.positiveExamples = ; *********************** @@ -408,11 +366,11 @@ conf file usage: algorithm = random; -option name: numberOfTrees +option name: numberOfGuesses description: number of randomly generated concepts/trees allowed values: int -default value: 5 -conf file usage: random.numberOfTrees = 5; +default value: 100 +conf file usage: random.numberOfGuesses = 100; option name: maxDepth description: maximum depth of generated concepts/trees @@ -465,8 +423,8 @@ option name: useNegation description: specifies whether negation is used in the learning algorothm allowed values: boolean -default value: true -conf file usage: celoe.useNegation = true; +default value: false +conf file usage: celoe.useNegation = false; option name: useBooleanDatatypes description: specifies whether boolean datatypes are used in the learning algorothm @@ -495,10 +453,16 @@ option name: maxDepth description: maximum depth of description allowed values: int -default value: 4 -conf file usage: celoe.maxDepth = 4; +default value: 7 +conf file usage: celoe.maxDepth = 7; +option name: maxNrOfResults +description: Sets the maximum number of results one is interested in. (Setting this to a lower value may increase performance as the learning algorithm has to store/evaluate/beautify less descriptions). +allowed values: int min 1 max 100 +default value: 10 +conf file usage: celoe.maxNrOfResults = 10; + component: standard EL learning algorithm (org.dllearner.algorithms.el.ELLearningAlgorithm) =========================================================================================== @@ -954,12 +918,6 @@ default value: false conf file usage: refexamples.usePropernessChecks = false; -option name: maxPosOnlyExpansion -description: specifies how often a node in the search tree of a posonly learning problem needs to be expanded before it is considered as solution candidate -allowed values: int -default value: 4 -conf file usage: refexamples.maxPosOnlyExpansion = 4; - option name: noisePercentage description: the (approximated) percentage of noise within the examples allowed values: double min 0.0 max 100.0 Modified: trunk/src/dl-learner/org/dllearner/cli/Start.java =================================================================== --- trunk/src/dl-learner/org/dllearner/cli/Start.java 2009-05-06 10:37:08 UTC (rev 1739) +++ trunk/src/dl-learner/org/dllearner/cli/Start.java 2009-05-06 10:53:22 UTC (rev 1740) @@ -62,6 +62,7 @@ import org.dllearner.core.options.StringConfigOption; import org.dllearner.core.options.StringSetConfigOption; import org.dllearner.core.options.StringTupleListConfigOption; +import org.dllearner.core.options.URLConfigOption; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; @@ -388,6 +389,19 @@ (StringConfigOption) configOption, option.getStringValue()); cm.applyConfigEntry(component, entry); + } else if (configOption instanceof URLConfigOption && option.isStringOption()) { + + ConfigEntry<URL> entry = null; + try { + entry = new ConfigEntry<URL>( + (URLConfigOption) configOption, new URL(option.getStringValue())); + } catch (MalformedURLException e) { + handleError("The type of conf file entry \"" + option.getFullName() + + "\" is not correct: value \"" + option.getValue() + + "\" not valid a URL!"); + } + cm.applyConfigEntry(component, entry); + } else if (configOption instanceof IntegerConfigOption && option.isIntegerOption()) { ConfigEntry<Integer> entry = new ConfigEntry<Integer>( Modified: trunk/src/dl-learner/org/dllearner/core/options/StringConfigOption.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/options/StringConfigOption.java 2009-05-06 10:37:08 UTC (rev 1739) +++ trunk/src/dl-learner/org/dllearner/core/options/StringConfigOption.java 2009-05-06 10:53:22 UTC (rev 1740) @@ -120,7 +120,7 @@ @Override public String getValueFormatting(String value) { if (value != null) - return value.toString() + ";"; + return "\"" + value.toString() + "\";"; else return null; } Modified: trunk/src/dl-learner/org/dllearner/core/options/URLConfigOption.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/options/URLConfigOption.java 2009-05-06 10:37:08 UTC (rev 1739) +++ trunk/src/dl-learner/org/dllearner/core/options/URLConfigOption.java 2009-05-06 10:53:22 UTC (rev 1740) @@ -96,7 +96,7 @@ */ @Override public String getValueFormatting(URL value) { - return value.toString(); + return "\"" + value.toString() + "\";"; } /* (non-Javadoc) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-06 10:37:23
|
Revision: 1739 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1739&view=rev Author: jenslehmann Date: 2009-05-06 10:37:08 +0000 (Wed, 06 May 2009) Log Message: ----------- fixed problem in GUI help in release Modified Paths: -------------- trunk/build.xml trunk/src/dl-learner/org/dllearner/gui/tutorial.html trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java Modified: trunk/build.xml =================================================================== --- trunk/build.xml 2009-05-06 09:50:58 UTC (rev 1738) +++ trunk/build.xml 2009-05-06 10:37:08 UTC (rev 1739) @@ -118,7 +118,7 @@ <!-- we also need to copy some images, which should be included in dllearner.jar --> <copy toDir="classes_tmp" > - <fileset dir="${source_dir}" includes="**/*.gif"/> + <fileset dir="${source_dir}" includes="**/*.gif,**/*.html"/> </copy> <mkdir dir="${release_tmp_dir}"/> <mkdir dir="${release_tmp_dir}/lib/"/> Modified: trunk/src/dl-learner/org/dllearner/gui/tutorial.html =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/tutorial.html 2009-05-06 09:50:58 UTC (rev 1738) +++ trunk/src/dl-learner/org/dllearner/gui/tutorial.html 2009-05-06 10:37:08 UTC (rev 1739) @@ -27,21 +27,23 @@ <p> <i>Example:</i><br /> Suppose you want to learn the definition of a class in an existing ontology. In this case, -you can proceed as follows:<br /> -1. In the tab "Knowledge Source", choose an OWL file containing your ontology.<br /> -2. Click on the tab "Reasoner". We recommend to the defaults unchanged here, but you - are free to modify the settings and choose the reasoner you like.<br /> -3. Click on the tab "Learning Problem". This may take a while, since the reasoner will now +you can proceed as follows: +<ol> +<li>In the tab "Knowledge Source", choose an OWL file containing your ontology.</li> +<li>Click on the tab "Reasoner". We recommend to the defaults unchanged here, but you + are free to modify the settings and choose the reasoner you like.</li> +<li>Click on the tab "Learning Problem". This may take a while, since the reasoner will now read the ontology you specified in step 1. Since you want to learn the definition of a class, use the drop down box and select "Class Learning Problem". After this, set the value of - the option "classToDescribe" to the desired class.<br /> -4. Click on the "Learning Algorithm" tab. Here, you can select a learning algorithm and - modify its settings. If you are unsure what to do, just stick with the default values.<br /> -5. Click on the "Run" tab and press the "Start" button. The algorithm is now running + the option "classToDescribe" to the desired class.</li> +<li>Click on the "Learning Algorithm" tab. Here, you can select a learning algorithm and + modify its settings. If you are unsure what to do, just stick with the default values.</li> +<li>Click on the "Run" tab and press the "Start" button. The algorithm is now running and the currently best solutions found are displayed in the panel below (using Manchester OWL Syntax) along with some reasoning statistics. Depending on the learning algorithm and settings, the run may not terminate (in reasonable time). In such a case you can use - the "Stop" button to gracefully stop the algorithm.<br /> + the "Stop" button to gracefully stop the algorithm.</li> +</ol> For explanations of components in each step, please consult the DL-Learner manual. </p><br /> Modified: trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2009-05-06 09:50:58 UTC (rev 1738) +++ trunk/src/dl-learner/org/dllearner/test/junit/ExampleTests.java 2009-05-06 10:37:08 UTC (rev 1739) @@ -70,7 +70,7 @@ boolean randomize = true; // GPs can be excluded temporarily (because those tests are very time-consuming) - boolean testGP = false; + boolean testGP = true; // we use a logger, which outputs few messages (warnings, errors) SimpleLayout layout = new SimpleLayout(); @@ -130,7 +130,7 @@ // ignore.add("./examples/family-benchmark/Aunt.conf"); // did not terminate so far (waited 45 minutes) => disallowing ALL helps (TODO find out details) // ignore.add("examples/krk/KRK_ZERO_against_1to5_fastInstance.conf"); // stack overflow // ignore.add("examples/krk/KRK_ONE_ZERO_fastInstance.conf"); // stack overflow - ignore.add("examples/krk/"); // too many stack overflows +// ignore.add("examples/krk/"); // too many stack overflows int failedCounter = 0; int counter = 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-06 09:51:00
|
Revision: 1738 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1738&view=rev Author: jenslehmann Date: 2009-05-06 09:50:58 +0000 (Wed, 06 May 2009) Log Message: ----------- several small improvements Modified Paths: -------------- trunk/bin/dllearner trunk/bin/dllearner.bat trunk/bin/gui trunk/bin/gui.bat trunk/bin/quickstart trunk/bin/quickstart.bat trunk/bin/ws trunk/bin/ws.bat trunk/build.xml trunk/doc/manual/manual.tex trunk/src/dl-learner/org/dllearner/Info.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java Modified: trunk/bin/dllearner =================================================================== --- trunk/bin/dllearner 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/bin/dllearner 2009-05-06 09:50:58 UTC (rev 1738) @@ -1,2 +1,2 @@ #!/bin/bash -java -Xmx512m -Djava.library.path=lib/fact/ -cp .:./lib/dig1.1-xmlbeans.jar:./lib/fact/FaCTpp-OWLAPI-v1.1.11.jar:./lib/ini4j-0.3.2.jar:./lib/jamon-2.7.jar:./lib/jena/antlr-2.7.5.jar:./lib/jena/arq.jar:./lib/jena/commons-logging-1.1.1.jar:./lib/jena/concurrent.jar:./lib/jena/icu4j_3_4.jar:./lib/jena/iri.jar:./lib/jena/jena.jar:./lib/jena/json.jar:./lib/jena/xercesImpl.jar:./lib/junit-4.4.jar:./lib/log4j.jar:./lib/mysql/mysql-connector-java-5.1.6-bin.jar:./lib/ore-tool/swingx-0.9.2.jar:./lib/owlapi/owlapi-bin.jar:./lib/pellet/aterm-java-1.6.jar:./lib/pellet/pellet-core.jar:./lib/pellet/pellet-datatypes.jar:./lib/pellet/pellet-el.jar:./lib/pellet/pellet-explanation.jar:./lib/pellet/pellet-owlapi.jar:./lib/pellet/pellet-rules.jar:./lib/pellet/relaxngDatatype.jar:./lib/pellet/xsdlib.jar:./lib/protege/org.protege.editor.core.application.jar:./lib/protege/org.protege.editor.owl.jar:./lib/secondstring-20060615.jar:./lib/xbean.jar:./lib/dllearner.jar org.dllearner.cli.Start $@ \ No newline at end of file +java -Xmx1024m -Djava.library.path=lib/fact/ -cp .:./lib/ant_latex.jar:./lib/dig1.1-xmlbeans.jar:./lib/fact/FaCTpp-OWLAPI-v1.1.11.jar:./lib/ini4j-0.3.2.jar:./lib/jamon-2.7.jar:./lib/jena/antlr-2.7.5.jar:./lib/jena/arq.jar:./lib/jena/commons-logging-1.1.1.jar:./lib/jena/concurrent.jar:./lib/jena/icu4j_3_4.jar:./lib/jena/iri.jar:./lib/jena/jena.jar:./lib/jena/json.jar:./lib/jena/xercesImpl.jar:./lib/junit-4.4.jar:./lib/log4j.jar:./lib/mysql/mysql-connector-java-5.1.6-bin.jar:./lib/ore-tool/swingx-0.9.7.jar:./lib/owlapi/owlapi-bin.jar:./lib/pellet/aterm-java-1.6.jar:./lib/pellet/pellet-core.jar:./lib/pellet/pellet-datatypes.jar:./lib/pellet/pellet-el.jar:./lib/pellet/pellet-explanation.jar:./lib/pellet/pellet-modularity.jar:./lib/pellet/pellet-owlapi.jar:./lib/pellet/pellet-rules.jar:./lib/pellet/relaxngDatatype.jar:./lib/pellet/xsdlib.jar:./lib/protege/org.protege.editor.core.application.jar:./lib/protege/org.protege.editor.owl.jar:./lib/secondstring-20060615.jar:./lib/xbean.jar:./lib/dllearner.jar org.dllearner.cli.Start $@ \ No newline at end of file Modified: trunk/bin/dllearner.bat =================================================================== --- trunk/bin/dllearner.bat 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/bin/dllearner.bat 2009-05-06 09:50:58 UTC (rev 1738) @@ -1 +1 @@ -java -Xmx512m -Djava.library.path=lib/fact/ -cp .;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCTpp-OWLAPI-v1.1.11.jar;.\lib\ini4j-0.3.2.jar;.\lib\jamon-2.7.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\mysql\mysql-connector-java-5.1.6-bin.jar;.\lib\ore-tool\swingx-0.9.2.jar;.\lib\owlapi\owlapi-bin.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet-core.jar;.\lib\pellet\pellet-datatypes.jar;.\lib\pellet\pellet-el.jar;.\lib\pellet\pellet-explanation.jar;.\lib\pellet\pellet-owlapi.jar;.\lib\pellet\pellet-rules.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\protege\org.protege.editor.core.application.jar;.\lib\protege\org.protege.editor.owl.jar;.\lib\secondstring-20060615.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.cli.Start %* \ No newline at end of file +java -Xmx1024m -Djava.library.path=lib/fact/ -cp .;.\lib\ant_latex.jar;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCTpp-OWLAPI-v1.1.11.jar;.\lib\ini4j-0.3.2.jar;.\lib\jamon-2.7.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\mysql\mysql-connector-java-5.1.6-bin.jar;.\lib\ore-tool\swingx-0.9.7.jar;.\lib\owlapi\owlapi-bin.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet-core.jar;.\lib\pellet\pellet-datatypes.jar;.\lib\pellet\pellet-el.jar;.\lib\pellet\pellet-explanation.jar;.\lib\pellet\pellet-modularity.jar;.\lib\pellet\pellet-owlapi.jar;.\lib\pellet\pellet-rules.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\protege\org.protege.editor.core.application.jar;.\lib\protege\org.protege.editor.owl.jar;.\lib\secondstring-20060615.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.cli.Start %* \ No newline at end of file Modified: trunk/bin/gui =================================================================== --- trunk/bin/gui 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/bin/gui 2009-05-06 09:50:58 UTC (rev 1738) @@ -1,2 +1,2 @@ #!/bin/bash -java -Xmx512m -Djava.library.path=lib/fact/ -cp .:./lib/dig1.1-xmlbeans.jar:./lib/fact/FaCTpp-OWLAPI-v1.1.11.jar:./lib/ini4j-0.3.2.jar:./lib/jamon-2.7.jar:./lib/jena/antlr-2.7.5.jar:./lib/jena/arq.jar:./lib/jena/commons-logging-1.1.1.jar:./lib/jena/concurrent.jar:./lib/jena/icu4j_3_4.jar:./lib/jena/iri.jar:./lib/jena/jena.jar:./lib/jena/json.jar:./lib/jena/xercesImpl.jar:./lib/junit-4.4.jar:./lib/log4j.jar:./lib/mysql/mysql-connector-java-5.1.6-bin.jar:./lib/ore-tool/swingx-0.9.2.jar:./lib/owlapi/owlapi-bin.jar:./lib/pellet/aterm-java-1.6.jar:./lib/pellet/pellet-core.jar:./lib/pellet/pellet-datatypes.jar:./lib/pellet/pellet-el.jar:./lib/pellet/pellet-explanation.jar:./lib/pellet/pellet-owlapi.jar:./lib/pellet/pellet-rules.jar:./lib/pellet/relaxngDatatype.jar:./lib/pellet/xsdlib.jar:./lib/protege/org.protege.editor.core.application.jar:./lib/protege/org.protege.editor.owl.jar:./lib/secondstring-20060615.jar:./lib/xbean.jar:./lib/dllearner.jar org.dllearner.gui.StartGUI $@ \ No newline at end of file +java -Xmx1024m -Djava.library.path=lib/fact/ -cp .:./lib/ant_latex.jar:./lib/dig1.1-xmlbeans.jar:./lib/fact/FaCTpp-OWLAPI-v1.1.11.jar:./lib/ini4j-0.3.2.jar:./lib/jamon-2.7.jar:./lib/jena/antlr-2.7.5.jar:./lib/jena/arq.jar:./lib/jena/commons-logging-1.1.1.jar:./lib/jena/concurrent.jar:./lib/jena/icu4j_3_4.jar:./lib/jena/iri.jar:./lib/jena/jena.jar:./lib/jena/json.jar:./lib/jena/xercesImpl.jar:./lib/junit-4.4.jar:./lib/log4j.jar:./lib/mysql/mysql-connector-java-5.1.6-bin.jar:./lib/ore-tool/swingx-0.9.7.jar:./lib/owlapi/owlapi-bin.jar:./lib/pellet/aterm-java-1.6.jar:./lib/pellet/pellet-core.jar:./lib/pellet/pellet-datatypes.jar:./lib/pellet/pellet-el.jar:./lib/pellet/pellet-explanation.jar:./lib/pellet/pellet-modularity.jar:./lib/pellet/pellet-owlapi.jar:./lib/pellet/pellet-rules.jar:./lib/pellet/relaxngDatatype.jar:./lib/pellet/xsdlib.jar:./lib/protege/org.protege.editor.core.application.jar:./lib/protege/org.protege.editor.owl.jar:./lib/secondstring-20060615.jar:./lib/xbean.jar:./lib/dllearner.jar org.dllearner.gui.StartGUI $@ \ No newline at end of file Modified: trunk/bin/gui.bat =================================================================== --- trunk/bin/gui.bat 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/bin/gui.bat 2009-05-06 09:50:58 UTC (rev 1738) @@ -1 +1 @@ -java -Xmx512m -Djava.library.path=lib/fact/ -cp .;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCTpp-OWLAPI-v1.1.11.jar;.\lib\ini4j-0.3.2.jar;.\lib\jamon-2.7.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\mysql\mysql-connector-java-5.1.6-bin.jar;.\lib\ore-tool\swingx-0.9.2.jar;.\lib\owlapi\owlapi-bin.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet-core.jar;.\lib\pellet\pellet-datatypes.jar;.\lib\pellet\pellet-el.jar;.\lib\pellet\pellet-explanation.jar;.\lib\pellet\pellet-owlapi.jar;.\lib\pellet\pellet-rules.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\protege\org.protege.editor.core.application.jar;.\lib\protege\org.protege.editor.owl.jar;.\lib\secondstring-20060615.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.gui.StartGUI %* \ No newline at end of file +java -Xmx1024m -Djava.library.path=lib/fact/ -cp .;.\lib\ant_latex.jar;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCTpp-OWLAPI-v1.1.11.jar;.\lib\ini4j-0.3.2.jar;.\lib\jamon-2.7.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\mysql\mysql-connector-java-5.1.6-bin.jar;.\lib\ore-tool\swingx-0.9.7.jar;.\lib\owlapi\owlapi-bin.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet-core.jar;.\lib\pellet\pellet-datatypes.jar;.\lib\pellet\pellet-el.jar;.\lib\pellet\pellet-explanation.jar;.\lib\pellet\pellet-modularity.jar;.\lib\pellet\pellet-owlapi.jar;.\lib\pellet\pellet-rules.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\protege\org.protege.editor.core.application.jar;.\lib\protege\org.protege.editor.owl.jar;.\lib\secondstring-20060615.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.gui.StartGUI %* \ No newline at end of file Modified: trunk/bin/quickstart =================================================================== --- trunk/bin/quickstart 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/bin/quickstart 2009-05-06 09:50:58 UTC (rev 1738) @@ -1,2 +1,2 @@ #!/bin/bash -java -Xmx512m -Djava.library.path=lib/fact/ -cp .:./lib/dig1.1-xmlbeans.jar:./lib/fact/FaCTpp-OWLAPI-v1.1.11.jar:./lib/ini4j-0.3.2.jar:./lib/jamon-2.7.jar:./lib/jena/antlr-2.7.5.jar:./lib/jena/arq.jar:./lib/jena/commons-logging-1.1.1.jar:./lib/jena/concurrent.jar:./lib/jena/icu4j_3_4.jar:./lib/jena/iri.jar:./lib/jena/jena.jar:./lib/jena/json.jar:./lib/jena/xercesImpl.jar:./lib/junit-4.4.jar:./lib/log4j.jar:./lib/mysql/mysql-connector-java-5.1.6-bin.jar:./lib/ore-tool/swingx-0.9.2.jar:./lib/owlapi/owlapi-bin.jar:./lib/pellet/aterm-java-1.6.jar:./lib/pellet/pellet-core.jar:./lib/pellet/pellet-datatypes.jar:./lib/pellet/pellet-el.jar:./lib/pellet/pellet-explanation.jar:./lib/pellet/pellet-owlapi.jar:./lib/pellet/pellet-rules.jar:./lib/pellet/relaxngDatatype.jar:./lib/pellet/xsdlib.jar:./lib/protege/org.protege.editor.core.application.jar:./lib/protege/org.protege.editor.owl.jar:./lib/secondstring-20060615.jar:./lib/xbean.jar:./lib/dllearner.jar org.dllearner.cli.QuickStart \ No newline at end of file +java -Xmx1024m -Djava.library.path=lib/fact/ -cp .:./lib/ant_latex.jar:./lib/dig1.1-xmlbeans.jar:./lib/fact/FaCTpp-OWLAPI-v1.1.11.jar:./lib/ini4j-0.3.2.jar:./lib/jamon-2.7.jar:./lib/jena/antlr-2.7.5.jar:./lib/jena/arq.jar:./lib/jena/commons-logging-1.1.1.jar:./lib/jena/concurrent.jar:./lib/jena/icu4j_3_4.jar:./lib/jena/iri.jar:./lib/jena/jena.jar:./lib/jena/json.jar:./lib/jena/xercesImpl.jar:./lib/junit-4.4.jar:./lib/log4j.jar:./lib/mysql/mysql-connector-java-5.1.6-bin.jar:./lib/ore-tool/swingx-0.9.7.jar:./lib/owlapi/owlapi-bin.jar:./lib/pellet/aterm-java-1.6.jar:./lib/pellet/pellet-core.jar:./lib/pellet/pellet-datatypes.jar:./lib/pellet/pellet-el.jar:./lib/pellet/pellet-explanation.jar:./lib/pellet/pellet-modularity.jar:./lib/pellet/pellet-owlapi.jar:./lib/pellet/pellet-rules.jar:./lib/pellet/relaxngDatatype.jar:./lib/pellet/xsdlib.jar:./lib/protege/org.protege.editor.core.application.jar:./lib/protege/org.protege.editor.owl.jar:./lib/secondstring-20060615.jar:./lib/xbean.jar:./lib/dllearner.jar org.dllearner.cli.QuickStart \ No newline at end of file Modified: trunk/bin/quickstart.bat =================================================================== --- trunk/bin/quickstart.bat 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/bin/quickstart.bat 2009-05-06 09:50:58 UTC (rev 1738) @@ -1 +1 @@ -java -Xmx512m -Djava.library.path=lib/fact/ -cp .;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCTpp-OWLAPI-v1.1.11.jar;.\lib\ini4j-0.3.2.jar;.\lib\jamon-2.7.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\mysql\mysql-connector-java-5.1.6-bin.jar;.\lib\ore-tool\swingx-0.9.2.jar;.\lib\owlapi\owlapi-bin.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet-core.jar;.\lib\pellet\pellet-datatypes.jar;.\lib\pellet\pellet-el.jar;.\lib\pellet\pellet-explanation.jar;.\lib\pellet\pellet-owlapi.jar;.\lib\pellet\pellet-rules.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\protege\org.protege.editor.core.application.jar;.\lib\protege\org.protege.editor.owl.jar;.\lib\secondstring-20060615.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.cli.QuickStart \ No newline at end of file +java -Xmx1024m -Djava.library.path=lib/fact/ -cp .;.\lib\ant_latex.jar;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCTpp-OWLAPI-v1.1.11.jar;.\lib\ini4j-0.3.2.jar;.\lib\jamon-2.7.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\mysql\mysql-connector-java-5.1.6-bin.jar;.\lib\ore-tool\swingx-0.9.7.jar;.\lib\owlapi\owlapi-bin.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet-core.jar;.\lib\pellet\pellet-datatypes.jar;.\lib\pellet\pellet-el.jar;.\lib\pellet\pellet-explanation.jar;.\lib\pellet\pellet-modularity.jar;.\lib\pellet\pellet-owlapi.jar;.\lib\pellet\pellet-rules.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\protege\org.protege.editor.core.application.jar;.\lib\protege\org.protege.editor.owl.jar;.\lib\secondstring-20060615.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.cli.QuickStart \ No newline at end of file Modified: trunk/bin/ws =================================================================== --- trunk/bin/ws 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/bin/ws 2009-05-06 09:50:58 UTC (rev 1738) @@ -1,2 +1,2 @@ #!/bin/bash -java -Xmx512m -Djava.library.path=lib/fact/ -cp .:./lib/dig1.1-xmlbeans.jar:./lib/fact/FaCTpp-OWLAPI-v1.1.11.jar:./lib/ini4j-0.3.2.jar:./lib/jamon-2.7.jar:./lib/jena/antlr-2.7.5.jar:./lib/jena/arq.jar:./lib/jena/commons-logging-1.1.1.jar:./lib/jena/concurrent.jar:./lib/jena/icu4j_3_4.jar:./lib/jena/iri.jar:./lib/jena/jena.jar:./lib/jena/json.jar:./lib/jena/xercesImpl.jar:./lib/junit-4.4.jar:./lib/log4j.jar:./lib/mysql/mysql-connector-java-5.1.6-bin.jar:./lib/ore-tool/swingx-0.9.2.jar:./lib/owlapi/owlapi-bin.jar:./lib/pellet/aterm-java-1.6.jar:./lib/pellet/pellet-core.jar:./lib/pellet/pellet-datatypes.jar:./lib/pellet/pellet-el.jar:./lib/pellet/pellet-explanation.jar:./lib/pellet/pellet-owlapi.jar:./lib/pellet/pellet-rules.jar:./lib/pellet/relaxngDatatype.jar:./lib/pellet/xsdlib.jar:./lib/protege/org.protege.editor.core.application.jar:./lib/protege/org.protege.editor.owl.jar:./lib/secondstring-20060615.jar:./lib/xbean.jar:./lib/dllearner.jar org.dllearner.server.DLLearnerWSStart $@ \ No newline at end of file +java -Xmx1024m -Djava.library.path=lib/fact/ -cp .:./lib/ant_latex.jar:./lib/dig1.1-xmlbeans.jar:./lib/fact/FaCTpp-OWLAPI-v1.1.11.jar:./lib/ini4j-0.3.2.jar:./lib/jamon-2.7.jar:./lib/jena/antlr-2.7.5.jar:./lib/jena/arq.jar:./lib/jena/commons-logging-1.1.1.jar:./lib/jena/concurrent.jar:./lib/jena/icu4j_3_4.jar:./lib/jena/iri.jar:./lib/jena/jena.jar:./lib/jena/json.jar:./lib/jena/xercesImpl.jar:./lib/junit-4.4.jar:./lib/log4j.jar:./lib/mysql/mysql-connector-java-5.1.6-bin.jar:./lib/ore-tool/swingx-0.9.7.jar:./lib/owlapi/owlapi-bin.jar:./lib/pellet/aterm-java-1.6.jar:./lib/pellet/pellet-core.jar:./lib/pellet/pellet-datatypes.jar:./lib/pellet/pellet-el.jar:./lib/pellet/pellet-explanation.jar:./lib/pellet/pellet-modularity.jar:./lib/pellet/pellet-owlapi.jar:./lib/pellet/pellet-rules.jar:./lib/pellet/relaxngDatatype.jar:./lib/pellet/xsdlib.jar:./lib/protege/org.protege.editor.core.application.jar:./lib/protege/org.protege.editor.owl.jar:./lib/secondstring-20060615.jar:./lib/xbean.jar:./lib/dllearner.jar org.dllearner.server.DLLearnerWSStart $@ \ No newline at end of file Modified: trunk/bin/ws.bat =================================================================== --- trunk/bin/ws.bat 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/bin/ws.bat 2009-05-06 09:50:58 UTC (rev 1738) @@ -1 +1 @@ -java -Xmx512m -Djava.library.path=lib/fact/ -cp .;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCTpp-OWLAPI-v1.1.11.jar;.\lib\ini4j-0.3.2.jar;.\lib\jamon-2.7.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\mysql\mysql-connector-java-5.1.6-bin.jar;.\lib\ore-tool\swingx-0.9.2.jar;.\lib\owlapi\owlapi-bin.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet-core.jar;.\lib\pellet\pellet-datatypes.jar;.\lib\pellet\pellet-el.jar;.\lib\pellet\pellet-explanation.jar;.\lib\pellet\pellet-owlapi.jar;.\lib\pellet\pellet-rules.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\protege\org.protege.editor.core.application.jar;.\lib\protege\org.protege.editor.owl.jar;.\lib\secondstring-20060615.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.server.DLLearnerWSStart %* \ No newline at end of file +java -Xmx1024m -Djava.library.path=lib/fact/ -cp .;.\lib\ant_latex.jar;.\lib\dig1.1-xmlbeans.jar;.\lib\fact\FaCTpp-OWLAPI-v1.1.11.jar;.\lib\ini4j-0.3.2.jar;.\lib\jamon-2.7.jar;.\lib\jena\antlr-2.7.5.jar;.\lib\jena\arq.jar;.\lib\jena\commons-logging-1.1.1.jar;.\lib\jena\concurrent.jar;.\lib\jena\icu4j_3_4.jar;.\lib\jena\iri.jar;.\lib\jena\jena.jar;.\lib\jena\json.jar;.\lib\jena\xercesImpl.jar;.\lib\junit-4.4.jar;.\lib\log4j.jar;.\lib\mysql\mysql-connector-java-5.1.6-bin.jar;.\lib\ore-tool\swingx-0.9.7.jar;.\lib\owlapi\owlapi-bin.jar;.\lib\pellet\aterm-java-1.6.jar;.\lib\pellet\pellet-core.jar;.\lib\pellet\pellet-datatypes.jar;.\lib\pellet\pellet-el.jar;.\lib\pellet\pellet-explanation.jar;.\lib\pellet\pellet-modularity.jar;.\lib\pellet\pellet-owlapi.jar;.\lib\pellet\pellet-rules.jar;.\lib\pellet\relaxngDatatype.jar;.\lib\pellet\xsdlib.jar;.\lib\protege\org.protege.editor.core.application.jar;.\lib\protege\org.protege.editor.owl.jar;.\lib\secondstring-20060615.jar;.\lib\xbean.jar;.\lib\dllearner.jar org.dllearner.server.DLLearnerWSStart %* \ No newline at end of file Modified: trunk/build.xml =================================================================== --- trunk/build.xml 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/build.xml 2009-05-06 09:50:58 UTC (rev 1738) @@ -17,7 +17,7 @@ <!-- other settings --> <!-- maximum amount of allocated memory in startup scripts --> - <property name ="max_memory" value="512" /> + <property name ="max_memory" value="1024" /> <!-- set up classpath --> <path id="classpath"> Modified: trunk/doc/manual/manual.tex =================================================================== --- trunk/doc/manual/manual.tex 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/doc/manual/manual.tex 2009-05-06 09:50:58 UTC (rev 1738) @@ -69,7 +69,7 @@ \emph{Conf files}, e.g. \verb|examples/father.conf| in this case, describe the learning problem and specify which algorithm you want to use to solve it. In the simplest case they just say where to find the background knowledge to use (in the OWL file \verb|examples/father.owl| in this case) and the positive and negative examples (marked by ``+'' and ``-'', respectively). When running the above command, you should get something similar to the following: \begin{verbatim} -DL-Learner 2009-04-20 command line interface +DL-Learner 2009-05-06 command line interface starting component manager ... OK (157ms) initialising component "OWL file" ... OK (0ms) initialising component "fast instance checker" ... OK (842ms) Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/src/dl-learner/org/dllearner/Info.java 2009-05-06 09:50:58 UTC (rev 1738) @@ -3,6 +3,6 @@ package org.dllearner; public class Info { - public static final String build = "2009-04-20"; + public static final String build = "2009-05-06"; } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2009-05-06 09:50:58 UTC (rev 1738) @@ -293,6 +293,9 @@ } else { // instantiate Pellet reasoner reasoner = new org.mindswap.pellet.owlapi.Reasoner(manager); + // we register Pellet as ontology change listener, otherwise Pellet + // will not refresh when the ontology is modified + manager.addOntologyChangeListener((org.mindswap.pellet.owlapi.Reasoner)reasoner); //set classification output to "none", while default is "console" PelletOptions.USE_CLASSIFICATION_MONITOR = PelletOptions.MonitorType.valueOf("NONE"); @@ -301,7 +304,7 @@ Logger pelletLogger = Logger.getLogger("org.mindswap.pellet"); pelletLogger.setLevel(Level.WARN); } - + /* Set<OWLOntology> importsClosure = manager.getImportsClosure(ontology); System.out.println("imports closure : " + importsClosure); @@ -1060,11 +1063,11 @@ try { // workaround due to a bug in Pellet 2.0RC (see PelletBug.java und PelletBug2.java) - if(configurator.getReasonerType().equals("pellet")) { - consistent = ((org.mindswap.pellet.owlapi.Reasoner)reasoner).isConsistent(); - } else { +// if(configurator.getReasonerType().equals("pellet")) { +// consistent = ((org.mindswap.pellet.owlapi.Reasoner)reasoner).isConsistent(); +// } else { consistent = reasoner.isConsistent(ontology); - } +// } } catch (OWLReasonerException e) { e.printStackTrace(); } Modified: trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java 2009-05-05 13:43:32 UTC (rev 1737) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/DBpediaLinkedGeoData.java 2009-05-06 09:50:58 UTC (rev 1738) @@ -312,7 +312,7 @@ String line=""; while ((line = rd.readLine()) != null) { - if(line.contains("<http://linkedgeodata.org/vocabulary#name>") || line.contains("<http://linkedgeodata.org/vocabulary/#name%25en>")) { + if(line.contains("<http://linkedgeodata.org/vocabulary#name>") || line.contains("<http://linkedgeodata.org/vocabulary/#name%25en>") || line.contains("<http://linkedgeodata.org/vocabulary/#int_name>")) { int first = line.indexOf("\"") + 1; int last = line.lastIndexOf("\""); String label = line.substring(first, last); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2009-05-05 14:27:38
|
Revision: 1737 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1737&view=rev Author: kurzum Date: 2009-05-05 13:43:32 +0000 (Tue, 05 May 2009) Log Message: ----------- missing class Added Paths: ----------- trunk/src/dl-learner/org/dllearner/utilities/CSVFileToArray.java Added: trunk/src/dl-learner/org/dllearner/utilities/CSVFileToArray.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/CSVFileToArray.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/CSVFileToArray.java 2009-05-05 13:43:32 UTC (rev 1737) @@ -0,0 +1,73 @@ +/** + * Copyright (C) 2007, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.utilities; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; + +import com.ibm.icu.util.StringTokenizer; + +/** + * @author Jens Lehmann + * + */ +public class CSVFileToArray { + public String filename; + BufferedReader br; + String separator = " "; + + public CSVFileToArray(String filename, String separator)throws FileNotFoundException, IOException{ + this(filename); + this.separator = separator; + + + } + + public CSVFileToArray(String filename)throws FileNotFoundException, IOException{ + File file = new File(filename); + this.br = new BufferedReader(new FileReader(file)); + + } + + + public ArrayList<String> next()throws IOException{ + String line = this.br.readLine(); + if(line == null) { + br.close(); + return null;} + ArrayList<String> a = new ArrayList<String>(); + StringTokenizer st = new StringTokenizer(line,this.separator); + while(st.hasMoreElements()){ + a.add(st.nextToken()); + + } + return a; + + } + + + + + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-05 12:16:17
|
Revision: 1736 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1736&view=rev Author: jenslehmann Date: 2009-05-05 12:12:49 +0000 (Tue, 05 May 2009) Log Message: ----------- modified random guesser such that it works for all learning problems Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java trunk/src/dl-learner/org/dllearner/algorithms/gp/GPUtilities.java trunk/src/dl-learner/org/dllearner/gui/widgets/WidgetPanelURL.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2009-05-05 11:52:27 UTC (rev 1735) +++ trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2009-05-05 12:12:49 UTC (rev 1736) @@ -24,19 +24,30 @@ import org.apache.log4j.Logger; import org.dllearner.algorithms.gp.GPUtilities; -import org.dllearner.algorithms.gp.Program; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblem; import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.Score; import org.dllearner.core.configurators.RandomGuesserConfigurator; import org.dllearner.core.options.ConfigEntry; import org.dllearner.core.options.ConfigOption; import org.dllearner.core.options.IntegerConfigOption; import org.dllearner.core.options.InvalidConfigOptionValueException; import org.dllearner.core.owl.Description; -import org.dllearner.learningproblems.EvaluatedDescriptionPosNeg; -import org.dllearner.learningproblems.ScorePosNeg; +/** + * This learning algorithm provides a random guessing technique to solve + * learning problems in description logics/OWL. Solutions of such problems + * are concepts, which can be viewed as trees. The algorithm takes as input + * the number of guesses (how many concepts to generate) and the maximum depth + * of the concepts/trees. Using this, it randomly creates trees by calling the + * "grow" method of a genetic programming algorithm. The target language is + * currently ALC. + * + * @author Jens Lehmann + * + */ public class RandomGuesser extends LearningAlgorithm { private RandomGuesserConfigurator configurator; @@ -46,13 +57,15 @@ } private Description bestDefinition = null; - private ScorePosNeg bestScore; + private Score bestScore; private double bestFitness = Double.NEGATIVE_INFINITY; + private boolean isRunning = false; + private double lengthPenalty = 0.02; private int numberOfTrees = 100; private int maxDepth = 5; - private static Logger logger = Logger.getLogger(RandomGuesser.class); + private static Logger logger = Logger.getLogger(RandomGuesser.class); public RandomGuesser(LearningProblem learningProblem, ReasonerComponent rs) { super(learningProblem, rs); @@ -71,7 +84,7 @@ public static Collection<ConfigOption<?>> createConfigOptions() { Collection<ConfigOption<?>> options = new LinkedList<ConfigOption<?>>(); - options.add(new IntegerConfigOption("numberOfTrees", "number of randomly generated concepts/trees", 100)); + options.add(new IntegerConfigOption("numberOfGuesses", "number of randomly generated concepts/trees", 100)); options.add(new IntegerConfigOption("maxDepth", "maximum depth of generated concepts/trees", 5)); return options; } @@ -82,10 +95,11 @@ @Override public <T> void applyConfigEntry(ConfigEntry<T> entry) throws InvalidConfigOptionValueException { String name = entry.getOptionName(); - if (name.equals("numberOfTrees")) + if (name.equals("numberOfGuesses")) { numberOfTrees = (Integer) entry.getValue(); - else if(name.equals("maxDepth")) + } else if(name.equals("maxDepth")) { maxDepth = (Integer) entry.getValue(); + } } /* (non-Javadoc) @@ -93,35 +107,38 @@ */ @Override public void init() { - // TODO Auto-generated method stub - + } @Override public void start() { - // this.learningProblem = learningProblem; + isRunning = true; - // indem man die Klasse GP.Program verwendet, kann man auch - // alle Features z.B. ADC, Type-Guessing verwenden - Program p; + Description d; for(int i=0; i<numberOfTrees; i++) { - // p = GPUtilities.createGrowRandomProgram(learningProblem, maxDepth); - p = GPUtilities.createGrowRandomProgram(learningProblem, reasoner, maxDepth, false); - if(p.getFitness()>bestFitness) { - bestFitness = p.getFitness(); - bestScore = p.getScore(); - bestDefinition = p.getTree(); +// p = GPUtilities.createGrowRandomProgram(learningProblem, reasoner, maxDepth, false); + d = GPUtilities.createGrowRandomTree(learningProblem, reasoner, maxDepth, false); + + double acc = learningProblem.getAccuracy(d); + double fitness = acc - lengthPenalty * d.getLength(); + + if(fitness>bestFitness) { + bestFitness = fitness; + bestScore = learningProblem.computeScore(d); + bestDefinition = d; // p.getTree(); } } logger.info("Random-Guesser (" + numberOfTrees + " trials, maximum depth " + maxDepth + ")"); logger.info("best solution: " + bestDefinition); logger.info("fitness: " + bestFitness); + + isRunning = false; } // @Override - public ScorePosNeg getSolutionScore() { + public Score getSolutionScore() { return bestScore; } @@ -131,13 +148,13 @@ } @Override - public EvaluatedDescriptionPosNeg getCurrentlyBestEvaluatedDescription() { - return new EvaluatedDescriptionPosNeg(bestDefinition,bestScore); + public EvaluatedDescription getCurrentlyBestEvaluatedDescription() { + return learningProblem.evaluate(bestDefinition); +// return new EvaluatedDescriptionPosNeg(bestDefinition,bestScore); } @Override public void stop() { - // TODO Auto-generated method stub } @@ -146,8 +163,7 @@ */ @Override public boolean isRunning() { - // TODO Auto-generated method stub - return false; + return isRunning; } } Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/GPUtilities.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/GPUtilities.java 2009-05-05 11:52:27 UTC (rev 1735) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/GPUtilities.java 2009-05-05 12:12:49 UTC (rev 1736) @@ -690,7 +690,7 @@ return createProgram(learningProblem, createGrowRandomTree(learningProblem, rs, depth,false)); } - private static Description createGrowRandomTree(LearningProblem learningProblem, ReasonerComponent rs, int depth, boolean useADC) { + public static Description createGrowRandomTree(LearningProblem learningProblem, ReasonerComponent rs, int depth, boolean useADC) { /* private static Concept pickAlphabetSymbol(boolean useADC) { FlatABox abox = FlatABox.getInstance(); Modified: trunk/src/dl-learner/org/dllearner/gui/widgets/WidgetPanelURL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/widgets/WidgetPanelURL.java 2009-05-05 11:52:27 UTC (rev 1735) +++ trunk/src/dl-learner/org/dllearner/gui/widgets/WidgetPanelURL.java 2009-05-05 12:12:49 UTC (rev 1736) @@ -26,7 +26,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Set; import javax.swing.JButton; import javax.swing.JComboBox; @@ -36,7 +35,6 @@ import org.dllearner.core.Component; import org.dllearner.core.ReasonerComponent; -import org.dllearner.core.configurators.ClassLearningProblemConfigurator; import org.dllearner.core.options.URLConfigOption; import org.dllearner.core.owl.NamedClass; import org.dllearner.gui.Config; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2009-05-05 11:52:41
|
Revision: 1735 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1735&view=rev Author: kurzum Date: 2009-05-05 11:52:27 +0000 (Tue, 05 May 2009) Log Message: ----------- code for testing existing matching Added Paths: ----------- trunk/src/dl-learner/org/dllearner/scripts/matching/LearnCriteria.java trunk/src/dl-learner/org/dllearner/scripts/matching/Mcollect.java trunk/src/dl-learner/org/dllearner/scripts/matching/Pcollect.java trunk/src/dl-learner/org/dllearner/scripts/matching/SameCollect.java Added: trunk/src/dl-learner/org/dllearner/scripts/matching/LearnCriteria.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/LearnCriteria.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/LearnCriteria.java 2009-05-05 11:52:27 UTC (rev 1735) @@ -0,0 +1,120 @@ +package org.dllearner.scripts.matching; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.kb.sparql.Cache; +import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.utilities.CSVFileToArray; +import org.dllearner.utilities.datastructures.StringTuple; + +import com.wcohen.ss.Jaro; +import com.wcohen.ss.api.StringDistance; + +public class LearnCriteria { + ArrayList<SameCollect>sameAs =new ArrayList<SameCollect>() ; + Mcollect m ; + /** + * @param args + */ + public static void main(String[] args) { + LearnCriteria lc = new LearnCriteria(); + @SuppressWarnings("unused") + StringDistance distance = new Jaro(); + try{ + CSVFileToArray csv = new CSVFileToArray("osmdata/owlsameas_en.csv"); + ArrayList<String> al =null ; + + while ((al = csv.next()) != null){ + //System.out.println(al); + if(al.size()!=2)continue; + //if(distance.score(al.get(0), al.get(1))>=0.7){ + //System.out.println(distance.score(al.get(0), al.get(1))); + //System.out.println(al); + //} + //String dbpedia = al.get(1).replace("%25", "%"); + String dbpedia = al.get(1); + lc.sameAs.add(new SameCollect(al.get(0), dbpedia)); + } + }catch (Exception e) { + e.printStackTrace(); + } + + Mcollect m = new Mcollect(); + SPARQLTasks dbpedia = new SPARQLTasks(new Cache("matching"), SparqlEndpoint.getEndpointLOCALDBpedia()); + int countzerold = 0; + int countzerodb = 0; + for (int x = 0; x<lc.sameAs.size();x++) { + SameCollect s = lc.sameAs.get(x); + String query = "SELECT * WHERE {<"+s.db+"> ?p ?o}"; + s.dbdata = dbpedia.queryAsRDFNodeTuple(query, "?p", "?o"); + s.lddata = lc.getLinkedData(s.ld); +// System.exit(0); +// System.out.println(s.lddata); +// for (StringTuple string : s.lddata ) { +// System.out.println(string); +// } + m.add(s); + if(s.dbdata.size() == 0){ + System.out.println(s.db); + countzerodb+=1; + } + //if( s.lddata.size() == 0)countzerold+=1; +// if(x>110) break; + System.out.println(x); + } + + System.out.println(countzerodb); + System.out.println(countzerold); + // System.exit(0); + + System.out.println(m); + //System.out.println(lc.sameAs); + //System.out.println(lc.sameAs.size()); + + + } + + public SortedSet<StringTuple> getLinkedData(String url){ + SortedSet<StringTuple> result = new TreeSet<StringTuple>(); + try{ + URL linkedGeoDataURL = new URL(url); + + URLConnection conn = linkedGeoDataURL.openConnection(); + BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); + String line=""; + @SuppressWarnings("unused") + boolean oneLine = false; + while ((line = rd.readLine()) != null) + + { oneLine = true; +// System.out.println(line);continue; + line = line.replace("<"+url+"#id>", ""); + line = line.replace("<"+url+">", ""); + + + String p = line.substring(line.indexOf("<")+1,line.indexOf(">") ); + line = line.substring(line.indexOf(">")+1); + line = line.substring(0,line.lastIndexOf(".")); + line = line.trim(); + line = line.substring(1); + String o = line.substring(0,line.length()-1); +// System.out.println(new StringTuple(p,o)); + result.add(new StringTuple(p,o)); + } + + rd.close(); + + }catch (Exception e) { + e.printStackTrace(); + } + return result; + } + +} Added: trunk/src/dl-learner/org/dllearner/scripts/matching/Mcollect.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/Mcollect.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/Mcollect.java 2009-05-05 11:52:27 UTC (rev 1735) @@ -0,0 +1,63 @@ +package org.dllearner.scripts.matching; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.dllearner.utilities.datastructures.RDFNodeTuple; +import org.dllearner.utilities.datastructures.StringTuple; + +import com.wcohen.ss.Jaro; +import com.wcohen.ss.api.StringDistance; + +public class Mcollect { + String name; + List<Pcollect> props = new ArrayList<Pcollect>(); + + + public void add(SameCollect s){ + StringDistance distance = new Jaro(); + + for (RDFNodeTuple db : s.dbdata) { + for (StringTuple ld : s.lddata) { +// System.out.println(ld.b); +// System.out.println(db.b.toString()); +// System.out.println(istance.score(ld.b,db.b.toString())); + if ( distance.score(ld.b,db.b.toString())>=0.90){ + boolean found = false; + for (Pcollect p : props){ + + if(p.ldp.equals(ld.a) && p.dbp.equals( db.a.toString())){ + p.count +=1; + found = true; + } + } + if(found==false){ + props.add(new Pcollect(ld.a, db.a.toString())); + } + + + }; + + } + } + } + + @SuppressWarnings("unchecked") + @Override + public String toString(){ + //SortedSet<Pcollect> s = new TreeSet<Pcollect>(); +// for(Pcollect one : s){ +// s.add(one); +// +// } + String ret = ""; + Collections.sort(props ); + for(int a=0; a<props.size();a++){ + + ret+= props.get(a).toString()+"\n"; + + } + return ret; + } +} Added: trunk/src/dl-learner/org/dllearner/scripts/matching/Pcollect.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/Pcollect.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/Pcollect.java 2009-05-05 11:52:27 UTC (rev 1735) @@ -0,0 +1,34 @@ +package org.dllearner.scripts.matching; + +public class Pcollect implements Comparable<Pcollect>{ + + String ldp; + String dbp; + int count=1; + + + + + public Pcollect(String ldp, String dbp) { + super(); + this.ldp = ldp.trim(); + this.dbp = dbp.trim(); + } + + + @Override + public String toString(){ + String ret = "count : "+count+" : "+ldp+ " = "+dbp; + + return ret; + } + + public int compareTo(Pcollect in){ + + Pcollect other = (Pcollect) in; + if(this.count==other.count)return 0; + if( this.count>other.count){ + return -1; + }else {return 1;} + } +} Added: trunk/src/dl-learner/org/dllearner/scripts/matching/SameCollect.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/matching/SameCollect.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/matching/SameCollect.java 2009-05-05 11:52:27 UTC (rev 1735) @@ -0,0 +1,23 @@ +package org.dllearner.scripts.matching; + +import java.util.SortedSet; + +import org.dllearner.utilities.datastructures.RDFNodeTuple; +import org.dllearner.utilities.datastructures.StringTuple; + +public class SameCollect { + + String ld; + String db; + + SortedSet<RDFNodeTuple> dbdata; + SortedSet<StringTuple> lddata; + + public SameCollect(String ld, String db) { + super(); + this.ld = ld; + this.db = db; + } + + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-05-05 10:58:42
|
Revision: 1734 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1734&view=rev Author: jenslehmann Date: 2009-05-05 10:58:26 +0000 (Tue, 05 May 2009) Log Message: ----------- fixed random guesser problem Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java Modified: trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2009-05-05 10:01:50 UTC (rev 1733) +++ trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2009-05-05 10:58:26 UTC (rev 1734) @@ -49,8 +49,8 @@ private ScorePosNeg bestScore; private double bestFitness = Double.NEGATIVE_INFINITY; - private int numberOfTrees; - private int maxDepth; + private int numberOfTrees = 100; + private int maxDepth = 5; private static Logger logger = Logger.getLogger(RandomGuesser.class); @@ -71,7 +71,7 @@ public static Collection<ConfigOption<?>> createConfigOptions() { Collection<ConfigOption<?>> options = new LinkedList<ConfigOption<?>>(); - options.add(new IntegerConfigOption("numberOfTrees", "number of randomly generated concepts/trees", 5)); + options.add(new IntegerConfigOption("numberOfTrees", "number of randomly generated concepts/trees", 100)); options.add(new IntegerConfigOption("maxDepth", "maximum depth of generated concepts/trees", 5)); return options; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |