From: <lor...@us...> - 2009-10-01 12:05:50
|
Revision: 1871 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1871&view=rev Author: lorenz_b Date: 2009-10-01 12:05:40 +0000 (Thu, 01 Oct 2009) Log Message: ----------- continued auto learning mode Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java Modified: trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -254,7 +254,7 @@ // be in the search of the learning algorith, which leads to // unpredictable behaviour) Description d = ed.getDescription().clone(); - ConceptTransformation.replaceRange(d, reasoner); +// ConceptTransformation.replaceRange(d, reasoner); ed.setDescription(d); returnList.add(ed); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -0,0 +1,95 @@ +package org.dllearner.tools.ore; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.Timer; +import java.util.TimerTask; + +import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.LearningProblemUnsupportedException; +import org.dllearner.kb.OWLFile; +import org.dllearner.learningproblems.ClassLearningProblem; +import org.dllearner.reasoning.PelletReasoner; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLObjectAllRestriction; +import org.semanticweb.owl.model.OWLObjectProperty; +import org.semanticweb.owl.model.OWLObjectSomeRestriction; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLSubClassAxiom; + +public class ConcurrencyBug { + + /** + * @param args + * @throws MalformedURLException + * @throws ComponentInitException + * @throws URISyntaxException + * @throws OWLOntologyCreationException + * @throws LearningProblemUnsupportedException + */ + public static void main(String[] args) throws MalformedURLException, ComponentInitException, OWLOntologyCreationException, URISyntaxException, LearningProblemUnsupportedException { + File file = new File("examples/swore/swore.rdf"); + URL classToDescribe = new URL("http://ns.softwiki.de/req/CustomerRequirement"); + + ComponentManager cm = ComponentManager.getInstance(); + OWLFile ks = cm.knowledgeSource(OWLFile.class); + ((OWLFile)ks).getConfigurator().setUrl(file.toURI().toURL()); + ks.init(); + + PelletReasoner reasoner = cm.reasoner(PelletReasoner.class, ks); + reasoner.init(); + reasoner.loadOntologies(); + reasoner.dematerialise(); + + ClassLearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); + lp.getConfigurator().setClassToDescribe(classToDescribe); + lp.init(); + + String NS = "http://ns.softwiki.de/req/"; + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLClass customerRequirement = factory.getOWLClass(URI.create(NS +"CustomerRequirement")); + OWLClass comment = factory.getOWLClass(URI.create(NS + "Comment")); + OWLObjectProperty idDefinedBy = factory.getOWLObjectProperty(URI.create(NS + "isDefinedBy")); + OWLObjectProperty defines = factory.getOWLObjectProperty(URI.create(NS + "defines")); + + OWLObjectSomeRestriction some = factory.getOWLObjectSomeRestriction(defines, comment); + OWLObjectAllRestriction all = factory.getOWLObjectAllRestriction(idDefinedBy, some); + OWLSubClassAxiom sub = factory.getOWLSubClassAxiom(customerRequirement, all); + +// System.out.println(reasoner.remainsSatisfiableImpl(sub)); + + final CELOE la = cm.learningAlgorithm(CELOE.class, lp, reasoner); + la.getConfigurator().setMaxExecutionTimeInSeconds(8); + la.getConfigurator().setUseNegation(false); + la.getConfigurator().setNoisePercentage(0.05); + la.getConfigurator().setMaxNrOfResults(10); + la.init(); + + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + + @Override + public void run() { + if(la.isRunning()){ + System.out.println(la.getCurrentlyBestEvaluatedDescriptions(10, 0.8, true)); + } else { + cancel(); + } + + } + }, 1000, 1000); + la.start(); + + + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -43,7 +43,7 @@ private RootFinder rootFinder; private boolean isComputeAllExplanations = false; - private int maxExplantionCount = 1; + private int maxExplanationCount = 1; private boolean allExplanationWarningChecked = false; private Map<Explanation, List<Map<OWLAxiom, Integer>>> orderingMap; @@ -113,7 +113,7 @@ if (isComputeAllExplanations) { explanations = gen.getExplanations(entailment); } else { - explanations = gen.getExplanations(entailment, maxExplantionCount); + explanations = gen.getExplanations(entailment, maxExplanationCount); } return explanations; @@ -127,9 +127,9 @@ if (isComputeAllExplanations) { explanations = gen.getExplanations(entailment); } else { - explanations = gen.getExplanations(entailment, maxExplantionCount); + explanations = gen.getExplanations(entailment, maxExplanationCount); } - + return explanations; } @@ -244,12 +244,12 @@ } public void setMaxExplantionCount(int limit){ - maxExplantionCount = limit; + maxExplanationCount = limit; fireExplanationLimitChanged(); } public int getMaxExplantionCount(){ - return maxExplantionCount; + return maxExplanationCount; } public void addListener(ExplanationManagerListener l){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -69,7 +69,7 @@ @Override public Set<Explanation> getExplanations(OWLAxiom entailment){ - return getExplanations(entailment, -1); + return getExplanations(entailment, Integer.MAX_VALUE); } public int getArity(OWLAxiom axiom){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -8,6 +8,8 @@ import org.dllearner.tools.ore.explanation.laconic.LaconicExplanationGenerator; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; +import org.mindswap.pellet.utils.Timer; +import org.mindswap.pellet.utils.Timers; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.inference.OWLReasoner; import org.semanticweb.owl.inference.OWLReasonerException; @@ -69,7 +71,7 @@ } public static void miniEconomyTest() { - String file = "file:examples/ore/miniEconomy.owl"; + String file = "file:examples/ore/koala.owl"; try { @@ -78,28 +80,43 @@ OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); - PelletReasonerFactory resonerFact = new PelletReasonerFactory(); + PelletReasonerFactory reasonerFact = new PelletReasonerFactory(); OWLDataFactory dataFactory = manager.getOWLDataFactory(); - Reasoner reasoner = resonerFact.createReasoner(manager); + Reasoner reasoner = reasonerFact.createReasoner(manager); reasoner.loadOntology(ontology); reasoner.classify(); - System.out.println(reasoner.getInconsistentClasses()); - + LaconicExplanationGenerator expGen = new LaconicExplanationGenerator( - manager, resonerFact, Collections.singleton(ontology)); + manager, reasonerFact, Collections.singleton(ontology)); +// org.semanticweb.owl.explanation.api.ExplanationGenerator<OWLAxiom> copy = org.semanticweb.owl.explanation.api. +// ExplanationManager.createLaconicExplanationGeneratorFactory(reasonerFact).createExplanationGenerator(ontology.getAxioms()); + + Set<OWLClass> unsatClasses = reasoner.getInconsistentClasses(); OWLSubClassAxiom unsatAxiom; - + Timers timers = new Timers(); for (OWLClass unsat : unsatClasses) { unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory .getOWLNothing()); + Timer t1 = timers.createTimer("t1"); + Timer t2 =timers.createTimer("t2"); + t1.start(); Set<Explanation> explanations = expGen .getExplanations(unsatAxiom); - System.out.println(explanations); + t1.stop(); +// System.out.println(explanations); + t2.start(); +// Set<org.semanticweb.owl.explanation.api.Explanation<OWLAxiom>> expl = copy.getExplanations(unsatAxiom); + t2.stop(); +// System.out.println(expl); + + for(Timer timer : timers.getTimers()){ + System.out.println(timer.getTotal()); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -22,7 +22,7 @@ public ResultTableModel(){ super(); resultList = new ArrayList<EvaluatedDescriptionClass>(); - df = new DecimalFormat("00.00%"); + df = new DecimalFormat("00%"); } public ResultTableModel(List<EvaluatedDescriptionClass> resultList){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -29,6 +29,7 @@ import org.dllearner.tools.ore.ui.wizard.descriptors.AutoLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.InconsistencyExplanationPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.descriptors.IntroductionPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.KnowledgeSourcePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ManualLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; @@ -272,25 +273,25 @@ void refreshLeftPanel(Object panelDescriptor){ - if(panelDescriptor.equals("INTRODUCTION_PANEL")){ + if(panelDescriptor.equals(IntroductionPanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(0); - } - if(panelDescriptor.equals("KNOWLEDGESOURCE_CHOOSE_PANEL")){ + } else + if(panelDescriptor.equals(KnowledgeSourcePanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(1); - } - if(panelDescriptor.equals("CLASS_CHOOSE_OWL_PANEL") || panelDescriptor.equals("CLASS_CHOOSE_SPARQL_PANEL")){ + } else + if(panelDescriptor.equals(ClassChoosePanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(3); - } - if(panelDescriptor.equals("LEARNING_PANEL")){ + } else + if(panelDescriptor.equals(ManualLearnPanelDescriptor.IDENTIFIER) || panelDescriptor.equals(AutoLearnPanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(4); - } - if(panelDescriptor.equals("REPAIR_PANEL")){ + } else + if(panelDescriptor.equals(RepairPanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(5); - } - if(panelDescriptor.equals("SAVE_PANEL")){ + } else + if(panelDescriptor.equals(SavePanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(6); - } - if(panelDescriptor.equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)){ + } else { + wizard.setLeftPanel(2); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -1,5 +1,8 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.awt.Cursor; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -22,7 +25,7 @@ import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.AutoLearnPanel; -public class AutoLearnPanelDescriptor extends WizardPanelDescriptor{ +public class AutoLearnPanelDescriptor extends WizardPanelDescriptor implements ActionListener{ /** * Identification string for class choose panel. */ @@ -35,6 +38,12 @@ private AutoLearnPanel autoLearnPanel; private List<NamedClass> classes; + + private EquivalentLearningTask equivalentLearningTask; + private SuperClassLearningTask superLearningTask; + + private int currentClassIndex = 0; + /** * Constructor creates new panel and adds listener to list. @@ -43,6 +52,8 @@ autoLearnPanel = new AutoLearnPanel(); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(autoLearnPanel); + + autoLearnPanel.addActionListener(this); classes = new ArrayList<NamedClass>(); } @@ -63,19 +74,38 @@ } public void fillClassesTable(){ + TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); new ClassRetrievingTask().execute(); } public void learnEquivalentClassExpressions(){ - TaskManager.getInstance().setTaskStarted("Learning equivalent class expressions..."); - new EquivalentLearningTask().execute(); + TaskManager.getInstance().getStatusBar().setMessage("Learning equivalent class expressions..."); + getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + equivalentLearningTask = new EquivalentLearningTask(); + equivalentLearningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); + equivalentLearningTask.execute(); } public void learnSubClassExpressions(){ - TaskManager.getInstance().setTaskStarted("Learning superclass expressions..."); - new SuperClassLearningTask().execute(); + TaskManager.getInstance().getStatusBar().setMessage("Learning superclass expressions..."); + TaskManager.getInstance().getStatusBar().setProgress(0); + getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + superLearningTask = new SuperClassLearningTask(); + superLearningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); + superLearningTask.execute(); } + public void learnNextClass(){ + autoLearnPanel.resetPanel(); + OREManager.getInstance().setCurrentClass2Learn(new NamedClass("http://ns.softwiki.de/req/CustomerRequirement"));//classes.get(currentClassIndex)); + learnEquivalentClassExpressions(); + currentClassIndex++; + } + + @Override + public void actionPerformed(ActionEvent e) { + learnNextClass(); + } /** * Inner class to get all atomic classes in a background thread. @@ -122,7 +152,7 @@ autoLearnPanel.fillClassesTable(result); OREManager.getInstance().setCurrentClass2Learn(classes.get(0)); TaskManager.getInstance().setTaskFinished(); - learnEquivalentClassExpressions(); + learnNextClass(); } }); } @@ -130,134 +160,118 @@ class EquivalentLearningTask extends SwingWorker<Void, List<? extends EvaluatedDescription>> { + private Timer timer; + private LearningAlgorithm la; + private final int maxNrOfResults = OREManager.getInstance().getMaxNrOfResults(); + private final double threshold = OREManager.getInstance().getThreshold(); @Override public Void doInBackground() { OREManager.getInstance().setLearningType("equivalence"); OREManager.getInstance().setLearningProblem(); OREManager.getInstance().setLearningAlgorithm(); - - final LearningAlgorithm la = OREManager.getInstance().getLa(); - Timer timer = new Timer(); + la = OREManager.getInstance().getLa(); + + timer = new Timer(); + setProgress(0); + TaskManager.getInstance().getStatusBar().setMaximumValue(OREManager.getInstance().getMaxExecutionTimeInSeconds()); timer.schedule(new TimerTask(){ + int progress = 0; + List<? extends EvaluatedDescription> result; @SuppressWarnings("unchecked") @Override public void run() { - if(!isCancelled() && la.isRunning()){ - publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), - OREManager.getInstance().getThreshold(), true)); + if(la.isRunning()){ + progress += 1; + setProgress(progress); + result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); + publish(result); } } - }, 1000, 2000); + }, 1000, 1000); la.start(); return null; } @Override public void done() { - SwingUtilities.invokeLater(new Runnable() { - - @SuppressWarnings("unchecked") - @Override - public void run() { - - autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). - getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); - learnSubClassExpressions(); - - } - }); + timer.cancel(); + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); + updateList(result); + learnSubClassExpressions(); } @Override - protected void process(List<List<? extends EvaluatedDescription>> resultLists) { - + protected void process(List<List<? extends EvaluatedDescription>> resultLists) { for (List<? extends EvaluatedDescription> list : resultLists) { updateList(list); } } - private void updateList(final List<? extends EvaluatedDescription> result) { - - Runnable doUpdateList = new Runnable() { - - @SuppressWarnings("unchecked") - public void run() { - autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>) result); - } - }; - SwingUtilities.invokeLater(doUpdateList); - + @SuppressWarnings("unchecked") + private void updateList(final List<? extends EvaluatedDescription> result) { + autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>) result); } } class SuperClassLearningTask extends SwingWorker<Void, List<? extends EvaluatedDescription>> { + private Timer timer; + private LearningAlgorithm la; + private final int maxNrOfResults = OREManager.getInstance().getMaxNrOfResults(); + private final double threshold = OREManager.getInstance().getThreshold(); @Override public Void doInBackground() { OREManager.getInstance().setLearningType("superClass"); OREManager.getInstance().setLearningProblem(); OREManager.getInstance().setLearningAlgorithm(); - - final LearningAlgorithm la = OREManager.getInstance().getLa(); - Timer timer = new Timer(); + la = OREManager.getInstance().getLa(); + + timer = new Timer(); + setProgress(0); + TaskManager.getInstance().getStatusBar().setMaximumValue(OREManager.getInstance().getMaxExecutionTimeInSeconds()); timer.schedule(new TimerTask(){ + int progress = 0; + List<? extends EvaluatedDescription> result; @SuppressWarnings("unchecked") @Override public void run() { - if(!isCancelled() && la.isRunning()){ - publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), - OREManager.getInstance().getThreshold(), true)); + if(la.isRunning()){ + progress += 1; + setProgress(progress); + result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); + publish(result); } } - }, 1000, 2000); + }, 1000, 1000); la.start(); - return null; } @Override public void done() { - SwingUtilities.invokeLater(new Runnable() { - - @SuppressWarnings("unchecked") - @Override - public void run() { - - autoLearnPanel.fillSuperClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). - getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); - TaskManager.getInstance().setTaskFinished(); - } - }); + timer.cancel(); + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); + updateList(result); + TaskManager.getInstance().setTaskFinished(); + setProgress(0); } @Override - protected void process(List<List<? extends EvaluatedDescription>> resultLists) { - + protected void process(List<List<? extends EvaluatedDescription>> resultLists) { for (List<? extends EvaluatedDescription> list : resultLists) { updateList(list); } } + @SuppressWarnings("unchecked") private void updateList(final List<? extends EvaluatedDescription> result) { - - Runnable doUpdateList = new Runnable() { - - @SuppressWarnings("unchecked") - public void run() { - autoLearnPanel.fillSuperClassExpressionsTable((List<EvaluatedDescriptionClass>) result); - } - }; - SwingUtilities.invokeLater(doUpdateList); - + autoLearnPanel.fillSuperClassExpressionsTable((List<EvaluatedDescriptionClass>) result); } } - - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -1,13 +1,22 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.awt.BorderLayout; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; -import javax.swing.SwingUtilities; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSpinner; import javax.swing.SwingWorker; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.ExplanationManagerListener; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; import org.dllearner.tools.ore.RepairManagerListener; @@ -18,7 +27,7 @@ import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.model.OWLOntologyChange; -public class InconsistencyExplanationPanelDescriptor extends WizardPanelDescriptor implements ActionListener, RepairManagerListener{ +public class InconsistencyExplanationPanelDescriptor extends WizardPanelDescriptor implements ActionListener,ChangeListener, ExplanationManagerListener, RepairManagerListener{ public static final String IDENTIFIER = "INCONSISTENCY_PANEL"; public static final String INFORMATION = ""; @@ -32,14 +41,18 @@ } public void init() { - reasoner = OREManager.getInstance().getReasoner() - .getReasoner(); + reasoner = OREManager.getInstance().getReasoner().getReasoner(); + expMan = ExplanationManager.getInstance(OREManager.getInstance()); - expMan.setComputeAllExplanationsMode(true); + expMan.addListener(this); + repMan = RepairManager.getInstance(OREManager.getInstance()); repMan.addListener(this); + panel = new InconsistencyExplanationPanel(); panel.addActionListeners(this); + panel.addChangeListener(this); + setPanelComponent(panel); } @@ -79,28 +92,77 @@ showExplanations(); } - @Override - public void actionPerformed(ActionEvent e) { - if (e.getActionCommand().equals("regular")) { - expMan.setLaconicMode(false); - } else if (e.getActionCommand().equals("laconic")) { - expMan.setLaconicMode(true); - } - } + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("regular")) { + expMan.setLaconicMode(false); + } else if (e.getActionCommand().equals("laconic")) { + expMan.setLaconicMode(true); + } else if (e.getActionCommand().equals("all")){ + conditionalWarning("Computing all explanations might take a long time!", getWizard().getDialog()); + expMan.setComputeAllExplanationsMode(true); + panel.setMaxExplanationsMode(false); + } else if (e.getActionCommand().equals("max")){ + expMan.setComputeAllExplanationsMode(false); + panel.setMaxExplanationsMode(true); + } + } + @Override public void repairPlanChanged() { // TODO Auto-generated method stub } + + @Override + public void stateChanged(ChangeEvent e) { + JSpinner spinner = (JSpinner)e.getSource(); + expMan.setMaxExplantionCount(((Integer)spinner.getValue()).intValue()); + + } @Override + public void explanationLimitChanged() { + showExplanations(); + } + + @Override + public void explanationTypeChanged() { + showExplanations(); + } + + @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { showExplanations(); panel.repaint(); setNextButtonEnabled2ConsistentOntology(); } + private void conditionalWarning(final String notice, Component parent) { + class NotifyPanel extends JPanel { + /** + * + */ + private static final long serialVersionUID = -5602333953438722592L; + + public NotifyPanel() { + final JCheckBox enough = new JCheckBox("Don't show this message again", expMan.isAllExplanationWarningChecked()); + enough.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + expMan.setAllExplanationWarningChecked(); + } + }); + setLayout(new BorderLayout()); + add(new JLabel("<html><font size=+1>" + notice + "</font></html>"), BorderLayout.CENTER); + add(enough, BorderLayout.SOUTH); + } + } + if( ! expMan.isAllExplanationWarningChecked()) + JOptionPane.showMessageDialog(parent, new NotifyPanel(), "Warning", JOptionPane.WARNING_MESSAGE); + } + class ExplanationTask extends SwingWorker<Void, Void>{ @Override @@ -118,22 +180,16 @@ } private void showExplanations(){ - - SwingUtilities.invokeLater(new Runnable() { - - @Override - public void run() { - panel.clearExplanationsPanel(); - int counter = 1; - for (Explanation explanation : expMan - .getInconsistencyExplanations()) { - panel.addExplanation(explanation, counter); - counter++; - } - panel.validate(); - + panel.clearExplanationsPanel(); + int counter = 1; + for (Explanation explanation : expMan.getInconsistencyExplanations()) { + panel.addExplanation(explanation, counter); + counter++; + if(counter > expMan.getMaxExplantionCount() && !expMan.isComputeAllExplanationsMode()){ + break; } - }); + } + panel.validate(); TaskManager.getInstance().setTaskFinished(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -26,9 +26,7 @@ import java.util.List; import java.util.Timer; import java.util.TimerTask; -import java.util.concurrent.ExecutionException; -import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -212,12 +210,12 @@ * @author Lorenz Buehmann * */ - class LearningTask extends SwingWorker<List<? extends EvaluatedDescription>, List<? extends EvaluatedDescription>> { + class LearningTask extends SwingWorker<Void, List<? extends EvaluatedDescription>> { @SuppressWarnings("unchecked") @Override - public List<? extends EvaluatedDescription> doInBackground() { + public Void doInBackground() { OREManager.getInstance().setLearningProblem(); OREManager.getInstance().setLearningAlgorithm(); @@ -233,32 +231,27 @@ @Override public void run() {progress += 1;setProgress(progress); if(!isCancelled() && la.isRunning()){ - publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), - OREManager.getInstance().getThreshold(), true)); + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), + OREManager.getInstance().getThreshold(), true); + publish(result); } } }, 1000, 1000); - OREManager.getInstance().start(); + la.start(); - List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions - (OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true); - return result; + + return null; } @Override public void done() { timer.cancel(); - List<? extends EvaluatedDescription> result = null; - try { - result = get(); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (ExecutionException e) { - e.printStackTrace(); - } + + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), + OREManager.getInstance().getThreshold(), true); updateList(result); TaskManager.getInstance().setTaskFinished(); setProgress(0); @@ -269,22 +262,14 @@ @Override protected void process(List<List<? extends EvaluatedDescription>> resultLists) { - for (List<? extends EvaluatedDescription> list : resultLists) { updateList(list); } } - private void updateList(final List<? extends EvaluatedDescription> result) { - - Runnable doUpdateList = new Runnable() { - - @SuppressWarnings("unchecked") - public void run() { - learnPanel.getResultTable().addResults((List<EvaluatedDescriptionClass>) result); - } - }; - SwingUtilities.invokeLater(doUpdateList); + @SuppressWarnings("unchecked") + private void updateList(final List<? extends EvaluatedDescription> result) { + learnPanel.getResultTable().addResults((List<EvaluatedDescriptionClass>) result); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -1,11 +1,17 @@ package org.dllearner.tools.ore.ui.wizard.panels; import java.awt.BorderLayout; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ActionListener; import java.util.List; import java.util.Set; import javax.swing.BorderFactory; +import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; @@ -36,7 +42,15 @@ private GraphicalCoveragePanel equivalentClassCoveragePanel; private GraphicalCoveragePanel superClassCoveragePanel; - + + private JLabel equivalentInconsistencyLabel; + private JLabel superInconsistencyLabel; + + private JButton skipButton; + + private final static String INCONSISTENY_WARNING = "<html><font color=red>" + + "Warning. Selected class expressions leads to an inconsistent ontology!" + + "</font></html>"; public AutoLearnPanel(){ createUI(); } @@ -68,29 +82,78 @@ equivSubSplitPane.setOneTouchExpandable(true); equivSubSplitPane.setDividerLocation(0.5); + equivSubSplitPane.setTopComponent(createEquivalentPanel()); + equivSubSplitPane.setBottomComponent(createSuperPanel()); + + addTableSelectionListeners(); + + skipButton = new JButton("Skip"); + skipButton.setActionCommand("skip"); + + resultPanel.add(equivSubSplitPane, BorderLayout.CENTER); + resultPanel.add(skipButton, BorderLayout.SOUTH); + + return resultPanel; + } + + private JComponent createEquivalentPanel(){ + GridBagConstraints c = new GridBagConstraints(); equivalentPanel = new JPanel(); + equivalentPanel.setLayout(new GridBagLayout()); + + c.weightx = 1.0; + c.weighty = 1.0; + c.fill = GridBagConstraints.BOTH; + c.gridx = 0; + c.gridy = 0; equivalentClassResultsTable = new EquivalentClassExpressionsTable(); equivalentClassResultsTable.setName("equivalent"); - equivalentPanel.add(new JScrollPane(equivalentClassResultsTable)); + equivalentPanel.add(new JScrollPane(equivalentClassResultsTable), c); + + c.weightx = 0.0; + c.weighty = 0.0; + c.gridx = 1; + c.gridy = 0; equivalentClassCoveragePanel = new GraphicalCoveragePanel(""); - equivalentPanel.add(equivalentClassCoveragePanel); + equivalentPanel.add(equivalentClassCoveragePanel, c); equivalentPanel.setBorder(BorderFactory.createTitledBorder("Equivalent class expressions")); + c.gridx = 0; + c.gridy = 1; + equivalentInconsistencyLabel = new JLabel(" "); + equivalentPanel.add(equivalentInconsistencyLabel, c); + + return equivalentPanel; + } + + private JComponent createSuperPanel(){ + GridBagConstraints c = new GridBagConstraints(); superPanel = new JPanel(); + superPanel.setLayout(new GridBagLayout()); + + c.weightx = 1.0; + c.weighty = 1.0; + c.fill = GridBagConstraints.BOTH; + c.gridx = 0; + c.gridy = 0; superClassResultsTable = new EquivalentClassExpressionsTable(); superClassResultsTable.setName("super"); - superPanel.add(new JScrollPane(superClassResultsTable)); + superPanel.add(new JScrollPane(superClassResultsTable), c); + + c.weightx = 0.0; + c.weighty = 0.0; + c.gridx = 1; + c.gridy = 0; superClassCoveragePanel = new GraphicalCoveragePanel(""); - superPanel.add(superClassCoveragePanel); + superPanel.add(superClassCoveragePanel, c); superPanel.setBorder(BorderFactory.createTitledBorder("Superclass expressions")); - addTableSelectionListeners(); + c.gridx = 0; + c.gridy = 1; + superInconsistencyLabel = new JLabel(" "); + superPanel.add(superInconsistencyLabel, c); - equivSubSplitPane.setTopComponent(equivalentPanel); - equivSubSplitPane.setBottomComponent(superPanel); - - resultPanel.add(equivSubSplitPane); - return resultPanel; + return superPanel; } public void fillClassesTable(Set<NamedClass> classes){ @@ -105,6 +168,17 @@ equivalentClassResultsTable.addResults(resultList); } + public void addActionListener(ActionListener aL){ + skipButton.addActionListener(aL); + } + + public void resetPanel(){ + equivalentClassResultsTable.clear(); + superClassResultsTable.clear(); + equivalentClassCoveragePanel.clear(); + superClassCoveragePanel.clear(); + } + private void addTableSelectionListeners(){ equivalentClassResultsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override @@ -114,7 +188,12 @@ EvaluatedDescriptionClass selectedClassExpression = equivalentClassResultsTable.getSelectedValue(); OREManager.getInstance().setNewClassDescription(selectedClassExpression); - equivalentClassCoveragePanel.setNewClassDescription(selectedClassExpression); + equivalentClassCoveragePanel.setNewClassDescription(selectedClassExpression); + if(!selectedClassExpression.isConsistent()){ + equivalentInconsistencyLabel.setText(INCONSISTENY_WARNING); + } else { + equivalentInconsistencyLabel.setText(" "); + } } } @@ -129,7 +208,12 @@ EvaluatedDescriptionClass selectedClassExpression = superClassResultsTable.getSelectedValue(); OREManager.getInstance().setNewClassDescription(selectedClassExpression); - superClassCoveragePanel.setNewClassDescription(selectedClassExpression); + superClassCoveragePanel.setNewClassDescription(selectedClassExpression); + if(!selectedClassExpression.isConsistent()){ + superInconsistencyLabel.setText(INCONSISTENY_WARNING); + } else { + superInconsistencyLabel.setText(" "); + } } } }); @@ -143,4 +227,14 @@ superClassCoveragePanel.setNewClassDescription(desc); } + public static void main(String[] args){ + JFrame frame = new JFrame(); + + + frame.add(new AutoLearnPanel()); + frame.pack(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setVisible(true); + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -28,6 +28,7 @@ import javax.swing.BorderFactory; import javax.swing.ButtonGroup; +import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -72,29 +73,45 @@ private void createUI(){ setLayout(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + JPanel optionsPanel = new JPanel(new GridLayout(0, 1)); + autoLearnButton = new JRadioButton("Automatic learning mode"); autoLearnButton.setActionCommand("auto"); + manualLearnButton = new JRadioButton("Manual learning mode"); manualLearnButton.setActionCommand("manual"); + ButtonGroup learningType = new ButtonGroup(); learningType.add(manualLearnButton); learningType.add(autoLearnButton); autoLearnButton.setSelected(true); optionsPanel.add(autoLearnButton); optionsPanel.add(manualLearnButton); + HelpablePanel optionsHelpPanel = new HelpablePanel(optionsPanel); optionsHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); - add(optionsHelpPanel); + c.gridwidth = GridBagConstraints.REMAINDER; + add(optionsHelpPanel, c); + createAutoLearnPanel(); createManualLearnPanel(); + + Dimension size = new Dimension(500, 500); + autoLearnPanel.setPreferredSize(size); + manualLearnPanel.setPreferredSize(size); + currentPanel = autoLearnPanel; - add(currentPanel); + add(currentPanel, c); } private void createAutoLearnPanel(){ JPanel panel = new JPanel(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + + c.gridwidth = GridBagConstraints.REMAINDER; JPanel minInstancesCountPanel = new JPanel(); minInstancesCountPanel.add(new JLabel("Min. instance count per class: ")); minInstanceCountSpinner = new JSpinner(); @@ -102,9 +119,10 @@ javax.swing.SpinnerModel spinnerModel = new SpinnerNumberModel(1, 1, 500, 1); minInstanceCountSpinner.setModel(spinnerModel); minInstancesCountPanel.add(minInstanceCountSpinner); - panel.add(minInstancesCountPanel); + panel.add(minInstancesCountPanel, c); + learningOptionsPanel = new LearningOptionsPanel(); - panel.add(learningOptionsPanel); + panel.add(learningOptionsPanel, c); autoLearnPanel = panel; } @@ -187,8 +205,19 @@ OREManager.getInstance().setMaxExecutionTimeInSeconds(learningOptionsPanel.getMaxExecutionTime()); OREManager.getInstance().setMaxNrOfResults(learningOptionsPanel.getNrOfConcepts()); OREManager.getInstance().setNoisePercentage(learningOptionsPanel.getMinAccuracy()); + OREManager.getInstance().setThreshold(learningOptionsPanel.getThreshold()); OREManager.getInstance().setMinInstanceCount(((Integer)(minInstanceCountSpinner.getValue())).intValue()); } + + public static void main(String[] args){ + JFrame frame = new JFrame(); + + + frame.add(new ClassChoosePanel()); + frame.pack(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setVisible(true); + } } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -2,8 +2,13 @@ import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.GridLayout; +import java.awt.Insets; import java.awt.event.ActionListener; +import java.util.HashSet; +import java.util.Set; import javax.swing.BorderFactory; import javax.swing.Box; @@ -13,12 +18,18 @@ import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; +import javax.swing.JSpinner; import javax.swing.JSplitPane; +import javax.swing.SpinnerNumberModel; +import javax.swing.border.EtchedBorder; +import javax.swing.event.ChangeListener; import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.tools.ore.ui.ExplanationTable; import org.dllearner.tools.ore.ui.ExplanationTablePanel; +import org.dllearner.tools.ore.ui.HelpablePanel; import org.dllearner.tools.ore.ui.RepairPlanPanel; +import org.dllearner.tools.ore.ui.UnsatisfiableClassesTable; import org.semanticweb.owl.apibinding.OWLManager; public class InconsistencyExplanationPanel extends JPanel{ @@ -28,81 +39,142 @@ */ private static final long serialVersionUID = 9206626647697013786L; - private JSplitPane statsSplitPane; - private JScrollPane explanationsScrollPane; private JComponent explanationsPanel; + private JPanel buttonExplanationsPanel; - private JPanel buttonPanel; + + private ButtonGroup explanationType; private JRadioButton regularButton; private JRadioButton laconicButton; + private JRadioButton computeAllExplanationsRadioButton; + private JRadioButton computeMaxExplanationsRadioButton; + private JSpinner maxExplanationsSelector; + + + private Set<ExplanationTablePanel> explanationPanels; + private Set<ExplanationTable> explanationTables; + + public InconsistencyExplanationPanel() { + createUI(); + } + private void createUI(){ setLayout(new BorderLayout()); + add(createDebuggingPanel()); + } + + private JComponent createDebuggingPanel(){ + JSplitPane debuggingSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + debuggingSplitPane.setDividerLocation(500); + debuggingSplitPane.setOneTouchExpandable(true); - Dimension minimumSize = new Dimension(400, 400); - - + debuggingSplitPane.setTopComponent(createExplanationPanel()); + debuggingSplitPane.setBottomComponent(createRepairPanel()); + + return debuggingSplitPane; + } + + private JComponent createExplanationPanel(){ explanationsPanel = new Box(1); + + explanationPanels = new HashSet<ExplanationTablePanel>(); + explanationTables = new HashSet<ExplanationTable>(); 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); + + buttonExplanationsPanel = new JPanel(); + buttonExplanationsPanel.setLayout(new BorderLayout()); + buttonExplanationsPanel.add(explanationsScrollPane, BorderLayout.CENTER); + JPanel holder = new JPanel(new BorderLayout()); + holder.add(createExplanationHeaderPanel(), BorderLayout.WEST); + buttonExplanationsPanel.add(holder, BorderLayout.NORTH); + + return buttonExplanationsPanel; - regularButton = new JRadioButton("regular", true); + } + + private JComponent createExplanationHeaderPanel(){ + JPanel headerPanel = new JPanel(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + + + JPanel explanationTypePanel = new JPanel(new GridLayout(0, 1)); + regularButton = new JRadioButton("Show regular explanations", true); regularButton.setActionCommand("regular"); - - laconicButton = new JRadioButton("laconic"); + regularButton.setSelected(true); + laconicButton = new JRadioButton("Show precise explanations"); laconicButton.setActionCommand("laconic"); - 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); - - statsSplitPane = new JSplitPane(0); - statsSplitPane.setResizeWeight(1.0D); - statsSplitPane.setTopComponent(buttonExplanationsPanel); + explanationTypePanel.add(regularButton); + explanationTypePanel.add(laconicButton); + HelpablePanel explanationTypeHelpPanel = new HelpablePanel(explanationTypePanel); + explanationTypeHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); - //repair panel - JPanel repairPanelHolder = new JPanel(); - repairPanelHolder.setOpaque(false); - repairPanelHolder.setLayout(new BorderLayout()); - repairPanelHolder.add(new JLabel("Repair plan"), BorderLayout.NORTH); - RepairPlanPanel repairPanel = new RepairPlanPanel(); - repairPanelHolder.add(repairPanel); + JPanel explanationCountPanel = new JPanel(new GridBagLayout()); - statsSplitPane.setBottomComponent(repairPanelHolder); - - statsSplitPane.setBorder(null); - statsSplitPane.setDividerLocation(500); - statsSplitPane.setOneTouchExpandable(true); - - add(statsSplitPane); + maxExplanationsSelector = new JSpinner(); + maxExplanationsSelector.setEnabled(true); + javax.swing.SpinnerModel spinnerModel = new SpinnerNumberModel(1, 1, 500, 1); + maxExplanationsSelector.setModel(spinnerModel); + maxExplanationsSelector.setBorder(BorderFactory.createEmptyBorder(0, 30, 0, 0)); + + computeAllExplanationsRadioButton = new JRadioButton("Compute all explanations"); + computeAllExplanationsRadioButton.setActionCommand("all"); + + computeMaxExplanationsRadioButton = new JRadioButton("Limit explanation count to:"); + computeMaxExplanationsRadioButton.setActionCommand("max"); + computeMaxExplanationsRadioButton.setSelected(true); + + ButtonGroup limitButtonGroup = new ButtonGroup(); + limitButtonGroup.add(computeAllExplanationsRadioButton); + limitButtonGroup.add(computeMaxExplanationsRadioButton); + + explanationCountPanel.add(computeAllExplanationsRadioButton, new GridBagConstraints(0, 0, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); + explanationCountPanel.add(computeMaxExplanationsRadioButton, new GridBagConstraints(0, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); + explanationCountPanel.add(maxExplanationsSelector, new GridBagConstraints(1, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); + + HelpablePanel explanationCountHelpPanel = new HelpablePanel(explanationCountPanel); + explanationCountHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); + + c.fill = GridBagConstraints.VERTICAL; + + headerPanel.add(explanationTypeHelpPanel, c); + c.anchor = GridBagConstraints.LINE_END; + headerPanel.add(explanationCountHelpPanel, c); + + return headerPanel; + } + private JComponent createRepairPanel(){ + JPanel repairPanel = new JPanel(new BorderLayout()); + repairPanel.add(new JLabel("Repair plan"), BorderLayout.NORTH); + repairPanel.add(new RepairPlanPanel(), BorderLayout.CENTER); + return repairPanel; } - public void clearExplanationsPanel(){ + public void clearExplanationsPanel() { explanationsPanel.removeAll(); + explanationsPanel.validate(); } + public void setMaxExplanationsMode(boolean value){ + maxExplanationsSelector.setEnabled(value); + } + public void addExplanation(Explanation explanation, int counter){ ExplanationTable expTable = new ExplanationTable(explanation, OWLManager.createOWLOntologyManager().getOWLDataFactory().getOWLThing()); explanationsPanel.add(new ExplanationTablePanel(expTable, counter)); @@ -113,6 +185,12 @@ public void addActionListeners(ActionListener aL){ regularButton.addActionListener(aL); laconicButton.addActionListener(aL); + computeAllExplanationsRadioButton.addActionListener(aL); + computeMaxExplanationsRadioButton.addActionListener(aL); } + public void addChangeListener(ChangeListener cL){ + maxExplanationsSelector.addChangeListener(cL); + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -137,56 +137,11 @@ 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("Show regular explanations", true); -// regularButton.setActionCommand("regular"); -// regularButton.setSelected(true); -// laconicButton = new JRadioButton("Show precise explanations"); -// laconicButton.setActionCommand("laconic"); -// -// explanationType = new ButtonGroup(); -// explanationType.add(regularButton); -// explanationType.add(laconicButton); -// -// buttonPanel = new JPanel(); -// buttonPanel.setLayout(new GridBagLayout()); -// buttonPanel.add(regularButton, new GridBagConstraints(0, 0, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 2, 30), 0, 0)); -// buttonPanel.add(laconicButton, new GridBagConstraints(0, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 30), 0, 0)); -// HelpablePanel explanationTypeHelpPanel = new HelpablePanel(buttonPanel); -// explanationTypeHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); -// -// JPanel buttonPanelHolder = new JPanel(new BorderLayout()); -// buttonPanelHolder.add(explanationTypeHelpPanel, "West"); -// -// maxExplanationsSelector = new JSpinner(); -// maxExplanationsSelector.setEnabled(true); -// javax.swing.SpinnerModel spinnerModel = new SpinnerNumberModel(1, 1, 500, 1); -// maxExplanationsSelector.setModel(spinnerModel); -// maxExplanationsSelector.setBorder(BorderFactory.createEmptyBorder(0, 30, 0, 0)); -// -// computeAllExplanationsRadioButton = new JRadioButton("Compute all explanations"); -// computeAllExplanationsRadioButton.setActionCommand("all"); -// -// computeMaxExplanationsRadioButton = new JRadioButton("Limit explanation count to:"); -// computeMaxExplanationsRadioButton.setActionCommand("MAX"); -// computeMaxExplanationsRadioButton.setSelected(true); -// -// ButtonGroup limitButtonGroup = new ButtonGroup(); -// limitButtonGroup.add(computeAllExplanationsRadioButton); -// limitButtonGroup.add(computeMaxExplanationsRadioButton); -// -//// buttonPanel.add(computeAllExplanationsRadioButton, new GridBagConstraints(1, 0, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); -//// buttonPanel.add(computeMaxExplanationsRadioButton, new GridBagConstraints(1, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); -//// buttonPanel.add(maxExplanationsSelector, new GridBagConstraints(3, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); -// -// strikeOutBox = new JCheckBox("Strike out irrelevant parts"); -// strikeOutBox.setActionCommand("strike"); -//// buttonPanel.add(strikeOutBox, new GridBagConstraints(3, 0, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); buttonExplanationsPanel = new JPanel(); buttonExplanationsPanel.setLayout(new BorderLayout()); @@ -231,7 +186,7 @@ computeAllExplanationsRadioButton.setActionCommand("all"); computeMaxExplanationsRadioButton = new JRadioButton("Limit explanation count to:"); - computeMaxExplanationsRadioButton.setActionCommand("MAX"); + computeMaxExplanationsRadioButton.setActionCommand("max"); computeMaxExplanationsRadioButton.setSelected(true); ButtonGroup limitButtonGroup = new ButtonGroup(); @@ -283,20 +238,20 @@ return impactRepairPanel; } - private JComponent createRepairPanel(){ - return new RepairPlanPanel(); - } +// private JComponent createRepairPanel(){ +// return new RepairPlanPanel(); +// } +// +// private JComponent createImpactPanel(){ +// ImpactTable impactTable = new ImpactTable(); +// JScrollPane impScr = new JScrollPane(impactTable); +// JPanel impactPanel = new JPanel(); +// impactPanel.setLayout(new BorderLayout()); +// impactPanel.add(new JLabel("Impact"), BorderLayout.NORTH); +// impactPanel.add(impScr); +// return impactPanel; +// } - private JComponent createImpactPanel(){ - ImpactTable impactTable = new ImpactTable(); - JScrollPane impScr = new JScrollPane(impactTable); - JPanel impactPanel = new JPanel(); - impactPanel.setLayout(new BorderLayout()); - impactPanel.add(new JLabel("Impact"), BorderLayout.NORTH); - impactPanel.add(impScr); - return impactPanel; - } - public void fillUnsatClassesTable(List<OWLClass> unsatClasses) { unsatClassesTable.addUnsatClasses(unsatClasses); unsatClassesScrollPane.validate(); @@ -306,17 +261,6 @@ explanationsPanel.removeAll(); explanationsPanel.validate(); } - - public void addExplanation(Explanation explanation, OWLClass unsat, int counter) { - ExplanationTable expTable = new ExplanationTable(explanation, unsat); - ExplanationTablePanel panel = new ExplanationTablePanel(expTable, counter); - explanationsPanel.add(panel); - explanationsPanel.add(Box.createVerticalStrut(10)); - explanationPanels.add(panel); -// explanationsPanel.add(new JSeparator()); -// explanationsPanel.add(Box.createVerticalStrut(10)); -// this.updateUI(); - } public void addExplanations(Set<Explanation> explanations, OWLClass unsat){ explanationTables.clear(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |