From: <lor...@us...> - 2009-09-29 08:26:49
|
Revision: 1868 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1868&view=rev Author: lorenz_b Date: 2009-09-29 08:26:40 +0000 (Tue, 29 Sep 2009) Log Message: ----------- started auto learning mode changed consistency checking in org.dllearner.learningproblems.ClassLearningProblem Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.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/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.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/ManualLearnPanel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -165,8 +165,11 @@ double protusion = (additionalInstances.size() + coveredInstances.size() == 0) ? 0 : coveredInstances.size()/(double)(coveredInstances.size()+additionalInstances.size()); // for each description with less than 100% coverage, we check whether it is // leads to an inconsistent knowledge base - boolean isConsistent = coverage >= 0.999999 || isConsistent(description); + // workaround due to a bug (see http://sourceforge.net/tracker/?func=detail&aid=2866610&group_id=203619&atid=986319) +// boolean isConsistent = coverage >= 0.999999 || isConsistent(description); + boolean isConsistent = isConsistent(description); + // we check whether the axiom already follows from the knowledge base boolean followsFromKB = reasoner.isSuperClassOf(description, classToDescribe); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -39,10 +39,11 @@ import org.apache.log4j.PropertyConfigurator; import org.dllearner.tools.ore.ui.wizard.Wizard; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; +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.IntroductionPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.KnowledgeSourcePanelDescriptor; -import org.dllearner.tools.ore.ui.wizard.descriptors.LearningPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.descriptors.ManualLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.SavePanelDescriptor; @@ -124,9 +125,12 @@ WizardPanelDescriptor descriptor5 = new ClassChoosePanelDescriptor(); wizard.registerWizardPanel(ClassChoosePanelDescriptor.IDENTIFIER, descriptor5); - WizardPanelDescriptor descriptor6 = new LearningPanelDescriptor(); - wizard.registerWizardPanel(LearningPanelDescriptor.IDENTIFIER, descriptor6); + WizardPanelDescriptor descriptor9 = new AutoLearnPanelDescriptor(); + wizard.registerWizardPanel(AutoLearnPanelDescriptor.IDENTIFIER, descriptor9); + WizardPanelDescriptor descriptor6 = new ManualLearnPanelDescriptor(); + wizard.registerWizardPanel(ManualLearnPanelDescriptor.IDENTIFIER, descriptor6); + WizardPanelDescriptor descriptor7 = new RepairPanelDescriptor(); wizard.registerWizardPanel(RepairPanelDescriptor.IDENTIFIER, descriptor7); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -64,6 +64,7 @@ private int maxExecutionTimeInSeconds; private int maxNrOfResults; private double threshold; + private int minInstanceCount; private List<OREManagerListener> listeners; @@ -268,6 +269,14 @@ return currentClass2Learn; } + public void setMinInstanceCount(int instanceCount){ + this.minInstanceCount = instanceCount; + } + + public int getMinInstanceCount(){ + return minInstanceCount; + } + public void init(){ this.setLearningProblem(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -24,7 +24,10 @@ import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.RemoveAxiom; +import uk.ac.manchester.cs.owl.modularity.ModuleType; + import com.clarkparsia.modularity.IncrementalClassifier; +import com.clarkparsia.modularity.ModularityUtils; public class LostEntailmentsChecker { @@ -114,7 +117,11 @@ return impact; } - public Set<OWLAxiom> computeStructuralImpact(List<OWLOntologyChange> changes) {reasoner.refresh(); + public Set<OWLAxiom> computeStructuralImpact(List<OWLOntologyChange> changes) { + System.out.println("Computing structural impact"); + System.out.println("Refreshing reasoner"); + reasoner.refresh(); + System.out.println("Reasoner refreshed"); Set<OWLAxiom> possibleLosts = new HashSet<OWLAxiom>(); Set<OWLAxiom> realLosts = new HashSet<OWLAxiom>(); OWLAxiom axiom; @@ -139,6 +146,7 @@ } } }else if (axiom instanceof OWLDisjointClassesAxiom) { + Set<OWLDescription> disjointClasses = ((OWLDisjointClassesAxiom) axiom).getDescriptions(); boolean complex = false; for (OWLDescription dis : disjointClasses) { @@ -156,6 +164,7 @@ 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())); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -31,6 +31,8 @@ import java.util.Set; import java.util.Vector; +import javax.swing.JPanel; + import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.owl.Individual; import org.dllearner.learningproblems.EvaluatedDescriptionClass; @@ -44,7 +46,7 @@ * @author Christian Koetteritzsch * */ -public class GraphicalCoveragePanel extends HelpablePanel implements MouseMotionListener{ +public class GraphicalCoveragePanel extends JPanel implements MouseMotionListener{ private static final long serialVersionUID = 855436961912515267L; private static final int HEIGHT = 200; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -1,27 +1,23 @@ package org.dllearner.tools.ore.ui; -import java.awt.BorderLayout; import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; -import javax.swing.JComboBox; import javax.swing.JFrame; -import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; -import javax.swing.JTextField; +import javax.swing.JRadioButton; import javax.swing.border.TitledBorder; -import javax.swing.text.JTextComponent; -import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; - public class HelpablePanel extends JPanel { /** @@ -31,10 +27,12 @@ private JButton helpButton; private String helpText = "TODO"; - + private GridBagConstraints c; public HelpablePanel(){ - setLayout(new BorderLayout()); + setLayout(new GridBagLayout()); + c = new GridBagConstraints(); +// setLayout(new BorderLayout()); helpButton = new JButton(new ImageIcon(this.getClass().getResource("Help-16x16.png"))); helpButton.setBorderPainted(false); helpButton.setContentAreaFilled(false); @@ -67,15 +65,26 @@ } }); - JPanel holderPanel = new JPanel(); - holderPanel.setLayout(new BorderLayout()); - holderPanel.add(helpButton, BorderLayout.NORTH); - add(holderPanel, BorderLayout.EAST); +// JPanel holderPanel = new JPanel(); +// holderPanel.setLayout(new BorderLayout()); +// holderPanel.add(helpButton, BorderLayout.EAST); +// add(holderPanel, BorderLayout.NORTH); + c.anchor = GridBagConstraints.FIRST_LINE_END; + c.weightx = 0.0; + c.weighty = 0.0; + c.gridx = 1; + c.gridy = 0; + add(helpButton, c); } public HelpablePanel(JPanel content){ this(); - add(content, BorderLayout.CENTER); + c.gridx = 0; + c.gridy = 1; + c.weightx = 1.0; + c.weighty = 1.0; + c.fill = GridBagConstraints.BOTH; + add(content, c); } public void setHelpText(String helpText){ @@ -85,27 +94,27 @@ public static void main(String[] args){ JFrame frame = new JFrame(); - JPanel endPointHolderPanel = new JPanel(); - endPointHolderPanel.setLayout(new GridLayout(0, 1)); -// endPointHolderPanel.setBorder(new TitledBorder("SPARQL endpoint")); - JComboBox comboBox = new JComboBox(); - comboBox.setEditable(true); - comboBox.setActionCommand("endpoints"); + JPanel learnTypePanel = new JPanel(); + learnTypePanel.setLayout(new GridLayout(0, 1)); + JRadioButton equivalentClassButton = new JRadioButton("Learn equivalent class expressions", true); + equivalentClassButton.setActionCommand("equivalent"); + equivalentClassButton.setSelected(true); + JRadioButton superClassButton = new JRadioButton("Learn super class expressions"); + superClassButton.setActionCommand("super"); + + ButtonGroup learningType = new ButtonGroup(); + learningType.add(equivalentClassButton); + learningType.add(superClassButton); + learnTypePanel.add(equivalentClassButton); + learnTypePanel.add(superClassButton); + HelpablePanel learnTypeHelpPanel = new HelpablePanel(learnTypePanel); + learnTypeHelpPanel.setBorder(new TitledBorder("Learning type")); - endPointHolderPanel.add(new JLabel("URL")); - endPointHolderPanel.add(comboBox); - JTextField defaultGraphField = new JTextField(); - endPointHolderPanel.add(new JLabel("Default graph URI (optional)")); - endPointHolderPanel.add(defaultGraphField); - HelpablePanel endPointHelpPanel = new HelpablePanel(endPointHolderPanel); - endPointHelpPanel.setBorder(new TitledBorder("SPARQL endpoint")); - - - frame.add(endPointHelpPanel); - frame.setSize(600, 600); + frame.add(learnTypeHelpPanel); + frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -160,6 +160,7 @@ @Override public void repairPlanChanged() { + TaskManager.getInstance().setTaskStarted("Computing impact..."); new LostEntailmentsComputingTask().execute(); } @@ -182,7 +183,7 @@ @Override public Void doInBackground() { - TaskManager.getInstance().setTaskStarted("Computing impact"); + impMan.computeImpactForAxiomsInRepairPlan(); return null; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -32,7 +32,7 @@ * @author Christian Koetteritzsch * */ -public class LearningOptionsPanel extends HelpablePanel { +public class LearningOptionsPanel extends JPanel{ private static final long serialVersionUID = 2190682281812478244L; @@ -57,7 +57,6 @@ * Constructor for the Option Panel. */ public LearningOptionsPanel() { - super(); JPanel holderPanel = new JPanel(); holderPanel.setLayout(new BorderLayout()); labelPanel = new JPanel(); @@ -122,7 +121,7 @@ learnTypePanel.add(equivalentClassButton); learnTypePanel.add(superClassButton); - holderPanel.add(BorderLayout.NORTH, learnTypePanel); +// holderPanel.add(BorderLayout.NORTH, learnTypePanel); holderPanel.add(BorderLayout.WEST, labelPanel); holderPanel.add(BorderLayout.CENTER, sliderPanel); add(holderPanel, BorderLayout.CENTER); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -98,6 +98,12 @@ } } } +// for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ +// if(cl.toString().equals(token)){ +// unsatClass = true; +// break; +// } +// } String color = "black"; if(unsatClass){ color = "red"; 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-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -29,7 +29,7 @@ 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.KnowledgeSourcePanelDescriptor; -import org.dllearner.tools.ore.ui.wizard.descriptors.LearningPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.descriptors.ManualLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.SavePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.UnsatisfiableExplanationPanelDescriptor; @@ -89,7 +89,7 @@ Object nextPanelDescriptor = currentPanelDescriptor.getNextPanelDescriptor(); WizardPanelDescriptor nextDescriptor = model.getPanelHashMap().get(nextPanelDescriptor); - + if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals( KnowledgeSourcePanelDescriptor.IDENTIFIER)) { @@ -140,14 +140,21 @@ } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)) { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; ((ClassChoosePanelDescriptor) nextDescriptor).refill(); - } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ClassChoosePanelDescriptor.IDENTIFIER)) { + } +// else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ClassChoosePanelDescriptor.IDENTIFIER)) { // ore.makeOWAToCWA(); // ore.setLearningProblem(); - LearningPanelDescriptor learnDescriptor = ((LearningPanelDescriptor) model +// LearningPanelDescriptor learnDescriptor = ((LearningPanelDescriptor) model +// .getPanelHashMap().get(nextPanelDescriptor)); +// learnDescriptor.resetPanel(); + + else if(nextPanelDescriptor.equals(ManualLearnPanelDescriptor.IDENTIFIER)){ + ManualLearnPanelDescriptor learnDescriptor = ((ManualLearnPanelDescriptor) model .getPanelHashMap().get(nextPanelDescriptor)); learnDescriptor.resetPanel(); - - } else if(nextPanelDescriptor.equals(ClassChoosePanelDescriptor.IDENTIFIER)){ + + + } else if(nextPanelDescriptor.equals(ClassChoosePanelDescriptor.IDENTIFIER)){ ClassChoosePanelDescriptor classChoose = ((ClassChoosePanelDescriptor) model .getPanelHashMap().get(nextPanelDescriptor)); classChoose.resetPanel(); @@ -217,8 +224,8 @@ backPanelDescriptor = RepairPanelDescriptor.IDENTIFIER; } } - } else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(LearningPanelDescriptor.IDENTIFIER)){ - LearningPanelDescriptor learnDescriptor = (LearningPanelDescriptor) currentPanelDescriptor; + } else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ManualLearnPanelDescriptor.IDENTIFIER)){ + ManualLearnPanelDescriptor learnDescriptor = (ManualLearnPanelDescriptor) currentPanelDescriptor; if(learnDescriptor.getLa() != null && learnDescriptor.getLa().isRunning()){ learnDescriptor.getLa().stop(); learnDescriptor.getTimer().cancel(); Added: 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 (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -0,0 +1,167 @@ +package org.dllearner.tools.ore.ui.wizard.descriptors; + +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; +import java.util.concurrent.ExecutionException; + +import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; + +import org.dllearner.core.owl.NamedClass; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.TaskManager; +import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.panels.AutoLearnPanel; + +public class AutoLearnPanelDescriptor extends WizardPanelDescriptor { + + /** + * Identification string for class choose panel. + */ + public static final String IDENTIFIER = "AUTO_LEARN_PANEL"; + /** + * Information string for class choose panel. + */ + public static final String INFORMATION = ""; + + private AutoLearnPanel autoLearnPanel; + + /** + * Constructor creates new panel and adds listener to list. + */ + public AutoLearnPanelDescriptor() { + autoLearnPanel = new AutoLearnPanel(); + setPanelDescriptorIdentifier(IDENTIFIER); + setPanelComponent(autoLearnPanel); + } + + @Override + public Object getNextPanelDescriptor() { + return RepairPanelDescriptor.IDENTIFIER; + } + + @Override + public Object getBackPanelDescriptor() { + return ClassChoosePanelDescriptor.IDENTIFIER; + } + + @Override + public void aboutToDisplayPanel() { + getWizard().getInformationField().setText(INFORMATION); + fillClassesTable(); + } + + public void fillClassesTable(){ + new ClassRetrievingTask().execute(); + } + + + /** + * Inner class to get all atomic classes in a background thread. + * @author Lorenz Buehmann + * + */ + class ClassRetrievingTask extends SwingWorker<Set<NamedClass>, Void> { + + + @Override + public Set<NamedClass> doInBackground() { + + OREManager.getInstance().makeOWAToCWA(); + Set<NamedClass> classes = new TreeSet<NamedClass>(OREManager.getInstance().getReasoner().getNamedClasses()); + classes.remove(new NamedClass("http://www.w3.org/2002/07/owl#Thing")); + Iterator<NamedClass> iter = classes.iterator(); + while(iter.hasNext()){ + NamedClass nc = iter.next(); + int instanceCount = OREManager.getInstance().getReasoner().getIndividuals(nc).size(); + if(instanceCount < OREManager.getInstance().getMinInstanceCount()){ + iter.remove(); + } + } + return classes; + } + + @Override + public void done() { + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + Set<NamedClass> classes = Collections.emptySet(); + try { + classes = get(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + autoLearnPanel.fillClassesTable(classes); + TaskManager.getInstance().setTaskFinished(); + } + }); + } + } + + class EquivalentLearningTask extends SwingWorker<Void, Void> { + + + @Override + public Void doInBackground() { + OREManager.getInstance().setLearningType("equivalence"); + OREManager.getInstance().setLearningProblem(); + OREManager.getInstance().setLearningAlgorithm(); + OREManager.getInstance().getLa().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)); + TaskManager.getInstance().setTaskFinished(); + } + }); + } + } + + class SubclassLearningTask extends SwingWorker<Void, Void> { + + + @Override + public Void doInBackground() { + OREManager.getInstance().setLearningType("superClass"); + OREManager.getInstance().setLearningProblem(); + OREManager.getInstance().setLearningAlgorithm(); + OREManager.getInstance().getLa().start(); + return null; + } + + @Override + public void done() { + SwingUtilities.invokeLater(new Runnable() { + + @SuppressWarnings("unchecked") + @Override + public void run() { + + autoLearnPanel.fillSubClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). + getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); + TaskManager.getInstance().setTaskFinished(); + } + }); + } + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -20,6 +20,8 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -50,7 +52,7 @@ * @author Lorenz Buehmann * */ -public class ClassChoosePanelDescriptor extends WizardPanelDescriptor implements ListSelectionListener, ChangeListener{ +public class ClassChoosePanelDescriptor extends WizardPanelDescriptor implements ListSelectionListener, ChangeListener, ActionListener{ /** * Identification string for class choose panel. @@ -73,6 +75,7 @@ classChoosePanel = new ClassChoosePanel(); classChoosePanel.addSelectionListener(this); classChoosePanel.addChangeListener(this); + classChoosePanel.addActionsListeners(this); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(classChoosePanel); @@ -83,7 +86,12 @@ @Override public Object getNextPanelDescriptor() { - return LearningPanelDescriptor.IDENTIFIER; + if(isAutoLearningMode()){ + return AutoLearnPanelDescriptor.IDENTIFIER; + } else { + return ManualLearnPanelDescriptor.IDENTIFIER; + } + } @Override @@ -116,7 +124,7 @@ private void setNextButtonAccordingToConceptSelected() { - if (classChoosePanel.getClassesTable().getSelectedRow() >= 0){ + if (classChoosePanel.getClassesTable().getSelectedRow() >= 0 || classChoosePanel.isAutoLearnMode()){ getWizard().setNextFinishButtonEnabled(true); }else{ getWizard().setNextFinishButtonEnabled(false); @@ -192,4 +200,19 @@ }); } } + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getActionCommand().equals("auto")){ + classChoosePanel.setAutoLearningPanel(true); + } else { + classChoosePanel.setAutoLearningPanel(false); + } + setNextButtonAccordingToConceptSelected(); + + } + + public boolean isAutoLearningMode(){ + return classChoosePanel.isAutoLearnMode(); + } } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -1,296 +0,0 @@ -/** - * Copyright (C) 2007-2008, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -package org.dllearner.tools.ore.ui.wizard.descriptors; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -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; - -import org.dllearner.algorithms.celoe.CELOE; -import org.dllearner.core.EvaluatedDescription; -import org.dllearner.core.LearningAlgorithm; -import org.dllearner.learningproblems.EvaluatedDescriptionClass; -import org.dllearner.tools.ore.OREManager; -import org.dllearner.tools.ore.OREManagerListener; -import org.dllearner.tools.ore.TaskManager; -import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; -import org.dllearner.tools.ore.ui.wizard.panels.LearningPanel; - - - -/** - * Wizard panel descriptor where learned class description are shown. - * @author Lorenz Buehmann - * - */ -public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener, OREManagerListener{ - - public static final String IDENTIFIER = "LEARNING_PANEL"; - public static final String INFORMATION = "Press <Start> to start learning. While it is running, " - + "temporary results are shown in the list above. Select one of them and press <Next>"; - - private LearningPanel learnPanel; - private LearningTask learningTask; - private CELOE la; - private Timer timer; - - - public LearningPanelDescriptor() { - - learnPanel = new LearningPanel(); - learnPanel.addStartButtonListener(this); - learnPanel.addStopButtonListener(this); - learnPanel.addSelectionListener(this); - - setPanelDescriptorIdentifier(IDENTIFIER); - setPanelComponent(learnPanel); - - - } - - @Override - public Object getNextPanelDescriptor() { - EvaluatedDescriptionClass newClassDesc = OREManager.getInstance().getNewClassDescription(); - if(newClassDesc != null && newClassDesc.getAccuracy() == 1.0){ - return SavePanelDescriptor.IDENTIFIER; - } else { - return RepairPanelDescriptor.IDENTIFIER; - } - } - - @Override - public Object getBackPanelDescriptor() { - return ClassChoosePanelDescriptor.IDENTIFIER; - } - - - - @Override - public void aboutToDisplayPanel() { - getWizard().getInformationField().setText(INFORMATION); - setNextButtonAccordingToConceptSelected(); - } - - - - public void valueChanged(ListSelectionEvent e) { - setNextButtonAccordingToConceptSelected(); - -// Description range = new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), -// new NamedClass("http://example.com/father#female")); -// ObjectAllRestriction role = new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), -// range); -// Description de = new NamedClass("http://example.com/father#male"); - - if (!e.getValueIsAdjusting() && learnPanel.getResultTable().getSelectedRow() >= 0 && - (learningTask.isDone() || learningTask.isCancelled())){ - EvaluatedDescriptionClass selectedClassExpression = learnPanel.getResultTable().getSelectedValue(); -// if(!selectedClassExpression.isConsistent()){ -// learnPanel.add(new JLabel("Selected class expression may lead to an inconsistent knowledgebase.")); -// } - OREManager.getInstance().setNewClassDescription(selectedClassExpression); - - learnPanel.updateCurrentGraphicalCoveragePanel(OREManager.getInstance().getNewClassDescription()); - } - - - } - - /** - * Actions for pressing start- or stop-button. - * @param event - */ - public void actionPerformed(ActionEvent event) { - if(event.getActionCommand().equals("Start")){ - String learningType = ""; - if(learnPanel.getOptionsPanel().isEquivalentClassesTypeSelected()){ - OREManager.getInstance().setLearningType("equivalence"); - learningType = "equivalent"; - } else { - learningType = "super"; - OREManager.getInstance().setLearningType("superClass"); - } - TaskManager.getInstance().setTaskStarted("Learning " + learningType + " class expressions..."); - learnPanel.getStartButton().setEnabled(false); - learnPanel.getStopButton().setEnabled(true); - OREManager.getInstance().setNoisePercentage(learnPanel.getOptionsPanel().getMinAccuracy()); - OREManager.getInstance().setMaxExecutionTimeInSeconds(learnPanel.getOptionsPanel().getMaxExecutionTime()); - OREManager.getInstance().setMaxNrOfResults(learnPanel.getOptionsPanel().getNrOfConcepts()); - OREManager.getInstance().setThreshold(learnPanel.getOptionsPanel().getThreshold()); - learnPanel.reset(); - - - learningTask = new LearningTask(); - learningTask.execute(); - } else{ - - learnPanel.getStopButton().setEnabled(false); - la.stop(); - timer.cancel(); - learnPanel.getStartButton().setEnabled(true); - getWizard().getStatusBar().showProgress(false); - getWizard().getStatusBar().setProgressTitle("Learning stopped"); - - } - - } - - private void setNextButtonAccordingToConceptSelected() { - - if (learnPanel.getResultTable().getSelectedRow() >= 0){ - getWizard().setNextFinishButtonEnabled(true); - }else{ - getWizard().setNextFinishButtonEnabled(false); - } - - } - - /** - * Returns the swing worker thread instance. - * @return swing worker - */ - public LearningTask getWorkerThread(){ - return learningTask; - } - - /** - * Returns the timer instance. - * @return timer - */ - public Timer getTimer(){ - return timer; - } - - /** - * Returns the learning algorithm instance. - * @return learning algorithm - */ - public LearningAlgorithm getLa() { - return la; - } - - /** - * Clear list and coverage panel. - */ - public void resetPanel(){ - learnPanel.reset(); - } - - - /** - * Inner class, containing the background thread for learning class descriptions. - * @author Lorenz Buehmann - * - */ - class LearningTask extends SwingWorker<List<? extends EvaluatedDescription>, List<? extends EvaluatedDescription>> { - - - @SuppressWarnings("unchecked") - @Override - public List<? extends EvaluatedDescription> doInBackground() { - - OREManager.getInstance().setLearningProblem(); - OREManager.getInstance().setLearningAlgorithm(); - - la = OREManager.getInstance().getLa(); - - - timer = new Timer(); - timer.schedule(new TimerTask(){ - - @Override - public void run() { - if(!isCancelled() && la.isRunning()){ - publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), - OREManager.getInstance().getThreshold(), true)); - } - } - - }, 1000, 2000); - OREManager.getInstance().start(); - - List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions - (OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true); - - return result; - } - - @Override - public void done() { - - timer.cancel(); - List<? extends EvaluatedDescription> result = null; - try { - result = get(); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (ExecutionException e) { - e.printStackTrace(); - } - getWizard().getDialog().setCursor(null); - getWizard().getStatusBar().showProgress(false); - getWizard().getStatusBar().setProgressTitle("Done"); - learnPanel.getStartButton().setEnabled(true); - learnPanel.getStopButton().setEnabled(false); - updateList(result); - TaskManager.getInstance().setTaskFinished(); - - } - - @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); - - } - - - } - - - @Override - public void activeOntologyChanged() { - learnPanel.getResultTable().clear(); - - } -} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java (from rev 1864, trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -0,0 +1,296 @@ +/** + * 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.tools.ore.ui.wizard.descriptors; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +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; + +import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.core.EvaluatedDescription; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.OREManagerListener; +import org.dllearner.tools.ore.TaskManager; +import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.panels.ManualLearnPanel; + + + +/** + * Wizard panel descriptor where learned class description are shown. + * @author Lorenz Buehmann + * + */ +public class ManualLearnPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener, OREManagerListener{ + + public static final String IDENTIFIER = "MANUAL_LEARN_PANEL"; + public static final String INFORMATION = "Press <Start> to start learning. While it is running, " + + "temporary results are shown in the list above. Select one of them and press <Next>"; + + private ManualLearnPanel learnPanel; + private LearningTask learningTask; + private CELOE la; + private Timer timer; + + + public ManualLearnPanelDescriptor() { + + learnPanel = new ManualLearnPanel(); + learnPanel.addStartButtonListener(this); + learnPanel.addStopButtonListener(this); + learnPanel.addSelectionListener(this); + + setPanelDescriptorIdentifier(IDENTIFIER); + setPanelComponent(learnPanel); + + + } + + @Override + public Object getNextPanelDescriptor() { + EvaluatedDescriptionClass newClassDesc = OREManager.getInstance().getNewClassDescription(); + if(newClassDesc != null && newClassDesc.getAccuracy() == 1.0){ + return SavePanelDescriptor.IDENTIFIER; + } else { + return RepairPanelDescriptor.IDENTIFIER; + } + } + + @Override + public Object getBackPanelDescriptor() { + return ClassChoosePanelDescriptor.IDENTIFIER; + } + + + + @Override + public void aboutToDisplayPanel() { + getWizard().getInformationField().setText(INFORMATION); + setNextButtonAccordingToConceptSelected(); + } + + + + public void valueChanged(ListSelectionEvent e) { + setNextButtonAccordingToConceptSelected(); + +// Description range = new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), +// new NamedClass("http://example.com/father#female")); +// ObjectAllRestriction role = new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), +// range); +// Description de = new NamedClass("http://example.com/father#male"); + + if (!e.getValueIsAdjusting() && learnPanel.getResultTable().getSelectedRow() >= 0 && + (learningTask.isDone() || learningTask.isCancelled())){ + EvaluatedDescriptionClass selectedClassExpression = learnPanel.getResultTable().getSelectedValue(); +// if(!selectedClassExpression.isConsistent()){ +// learnPanel.add(new JLabel("Selected class expression may lead to an inconsistent knowledgebase.")); +// } + OREManager.getInstance().setNewClassDescription(selectedClassExpression); + + learnPanel.updateCurrentGraphicalCoveragePanel(OREManager.getInstance().getNewClassDescription()); + } + + + } + + /** + * Actions for pressing start- or stop-button. + * @param event + */ + public void actionPerformed(ActionEvent event) { + if(event.getActionCommand().equals("Start")){ + String learningType = ""; + if(learnPanel.getOptionsPanel().isEquivalentClassesTypeSelected()){ + OREManager.getInstance().setLearningType("equivalence"); + learningType = "equivalent"; + } else { + learningType = "super"; + OREManager.getInstance().setLearningType("superClass"); + } + TaskManager.getInstance().setTaskStarted("Learning " + learningType + " class expressions..."); + learnPanel.getStartButton().setEnabled(false); + learnPanel.getStopButton().setEnabled(true); + OREManager.getInstance().setNoisePercentage(learnPanel.getOptionsPanel().getMinAccuracy()); + OREManager.getInstance().setMaxExecutionTimeInSeconds(learnPanel.getOptionsPanel().getMaxExecutionTime()); + OREManager.getInstance().setMaxNrOfResults(learnPanel.getOptionsPanel().getNrOfConcepts()); + OREManager.getInstance().setThreshold(learnPanel.getOptionsPanel().getThreshold()); + learnPanel.reset(); + + + learningTask = new LearningTask(); + learningTask.execute(); + } else{ + + learnPanel.getStopButton().setEnabled(false); + la.stop(); + timer.cancel(); + learnPanel.getStartButton().setEnabled(true); + getWizard().getStatusBar().showProgress(false); + getWizard().getStatusBar().setProgressTitle("Learning stopped"); + + } + + } + + private void setNextButtonAccordingToConceptSelected() { + + if (learnPanel.getResultTable().getSelectedRow() >= 0){ + getWizard().setNextFinishButtonEnabled(true); + }else{ + getWizard().setNextFinishButtonEnabled(false); + } + + } + + /** + * Returns the swing worker thread instance. + * @return swing worker + */ + public LearningTask getWorkerThread(){ + return learningTask; + } + + /** + * Returns the timer instance. + * @return timer + */ + public Timer getTimer(){ + return timer; + } + + /** + * Returns the learning algorithm instance. + * @return learning algorithm + */ + public LearningAlgorithm getLa() { + return la; + } + + /** + * Clear list and coverage panel. + */ + public void resetPanel(){ + learnPanel.reset(); + } + + + /** + * Inner class, containing the background thread for learning class descriptions. + * @author Lorenz Buehmann + * + */ + class LearningTask extends SwingWorker<List<? extends EvaluatedDescription>, List<? extends EvaluatedDescription>> { + + + @SuppressWarnings("unchecked") + @Override + public List<? extends EvaluatedDescription> doInBackground() { + + OREManager.getInstance().setLearningProblem(); + OREManager.getInstance().setLearningAlgorithm(); + + la = OREManager.getInstance().getLa(); + + + timer = new Timer(); + timer.schedule(new TimerTask(){ + + @Override + public void run() { + if(!isCancelled() && la.isRunning()){ + publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), + OREManager.getInstance().getThreshold(), true)); + } + } + + }, 1000, 2000); + OREManager.getInstance().start(); + + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions + (OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true); + + return result; + } + + @Override + public void done() { + + timer.cancel(); + List<? extends EvaluatedDescription> result = null; + try { + result = get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + getWizard().getDialog().setCursor(null); + getWizard().getStatusBar().showProgress(false); + getWizard().getStatusBar().setProgressTitle("Done"); + learnPanel.getStartButton().setEnabled(true); + learnPanel.getStopButton().setEnabled(false); + updateList(result); + TaskManager.getInstance().setTaskFinished(); + + } + + @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); + + } + + + } + + + @Override + public void activeOntologyChanged() { + learnPanel.getResultTable().clear(); + + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -80,7 +80,7 @@ @Override public Object getBackPanelDescriptor() { - return LearningPanelDescriptor.IDENTIFIER; + return ManualLearnPanelDescriptor.IDENTIFIER; } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -63,7 +63,7 @@ @Override public Object getBackPanelDescriptor() { if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ - return LearningPanelDescriptor.IDENTIFIER; + return ManualLearnPanelDescriptor.IDENTIFIER; } else { return RepairPanelDescriptor.IDENTIFIER; } Added: 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 (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -0,0 +1,90 @@ +package org.dllearner.tools.ore.ui.wizard.panels; + +import java.awt.BorderLayout; +import java.util.List; +import java.util.Set; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; + +import org.dllearner.core.owl.NamedClass; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.ui.ClassesTable; +import org.dllearner.tools.ore.ui.ResultTable; + +public class AutoLearnPanel extends JPanel { + + /** + * + */ + private static final long serialVersionUID = -5204979906041331328L; + + private ClassesTable classesTable; + + private JPanel subPanel; + private JPanel equivalentPanel; + + private ResultTable equivalentResultsTable; + private ResultTable subResultsTable; + + public AutoLearnPanel(){ + createUI(); + } + + private void createUI(){ + setLayout(new BorderLayout()); + + JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + mainSplitPane.setOneTouchExpandable(true); + mainSplitPane.setDividerLocation(0.2); + + mainSplitPane.setLeftComponent(createClassesPanel()); + mainSplitPane.setRightComponent(createResultPanel()); + + add(mainSplitPane); + } + + private JComponent createClassesPanel(){ + classesTable = new ClassesTable(); + classesTable.setBorder(null); + classesTable.setEnabled(false); + JScrollPane classesScroll = new JScrollPane(classesTable); + return classesScroll; + } + + private JComponent createResultPanel(){ + JPanel resultPanel = new JPanel(new BorderLayout()); + JSplitPane equivSubSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + equivSubSplitPane.setOneTouchExpandable(true); + equivSubSplitPane.setDividerLocation(0.5); + + subPanel = new JPanel(); + subResultsTable = new ResultTable(); + subPanel.add(subResultsTable); + + equivalentPanel = new JPanel(); + equivalentResultsTable = new ResultTable(); + equivalentPanel.add(equivalentResultsTable); + + equivSubSplitPane.setTopComponent(equivalentPanel); + equivSubSplitPane.setBottomComponent(subPanel); + + resultPanel.add(equivSubSplitPane); + return resultPanel; + } + + public void fillClassesTable(Set<NamedClass> classes){ + classesTable.addClasses(classes); + } + + public void fillSubClassExpressionsTable(List<EvaluatedDescriptionClass> resultList){ + subResultsTable.addResults(resultList); + } + + public void fillEquivalentClassExpressionsTable(List<EvaluatedDescriptionClass> resultList){ + equivalentResultsTable.addResults(resultList); + } + +} 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-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -23,16 +23,24 @@ import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; +import java.awt.GridLayout; +import java.awt.event.ActionListener; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; +import javax.swing.border.EtchedBorder; import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionListener; import org.dllearner.tools.ore.ui.ClassesTable; +import org.dllearner.tools.ore.ui.HelpablePanel; +import org.dllearner.tools.ore.ui.LearningOptionsPanel; /** * Wizard panel where atomic classes are shown in list. @@ -45,7 +53,15 @@ private ClassesTable classesTable; private JSpinner minInstanceCountSpinner; + private JRadioButton autoLearnButton; + private JRadioButton manualLearnButton; + private JPanel currentPanel; + private JPanel manualLearnPanel; + private JPanel autoLearnPanel; + + private LearningOptionsPanel learningOptionsPanel; + /** * Constructor. */ @@ -55,9 +71,48 @@ private void createUI(){ setLayout(new GridBagLayout()); + 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); + createAutoLearnPanel(); + createManualLearnPanel(); + currentPanel = autoLearnPanel; + add(currentPanel); + + } + + private void createAutoLearnPanel(){ + JPanel panel = new JPanel(new GridBagLayout()); + JPanel minInstancesCountPanel = new JPanel(); + minInstancesCountPanel.add(new JLabel("Min. instance count per class: ")); + minInstanceCountSpinner = new JSpinner(); + minInstanceCountSpinner.setEnabled(true); + javax.swing.SpinnerModel spinnerModel = new SpinnerNumberModel(1, 1, 500, 1); + minInstanceCountSpinner.setModel(spinnerModel); + minInstancesCountPanel.add(minInstanceCountSpinner); + panel.add(minInstancesCountPanel); + learningOptionsPanel = new LearningOptionsPanel(); + panel.add(learningOptionsPanel); + + autoLearnPanel = panel; + } + + private void createManualLearnPanel(){ + JPanel panel = new JPanel(); + panel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.gridwidth = GridBagConstraints.REMAINDER; - JPanel minInstancesCountPanel = new JPanel(); minInstancesCountPanel.add(new JLabel("Showing classes with at least ")); minInstanceCountSpinner = new JSpinner(); @@ -66,7 +121,7 @@ minInstanceCountSpinner.setModel(spinnerModel); minInstancesCountPanel.add(minInstanceCountSpinner); minInstancesCountPanel.add(new JLabel(" instances")); - add(minInstancesCountPanel, c); + panel.add(minInstancesCountPanel, c); c.fill = GridBagConstraints.NONE; @@ -74,7 +129,9 @@ classesTable = new ClassesTable(); JScrollPane scroll = new JScrollPane(classesTable); scroll.setPreferredSize(new Dimension(400, 400)); - add(scroll, c); + panel.add(scroll, c); + + manualLearnPanel = panel; } /** @@ -88,6 +145,23 @@ public void addChangeListener(ChangeListener cL){ minInstanceCountSpinner.addChangeListener(cL); } + + public void addActionsListeners(ActionListener aL){ + autoLearnButton.addActionListener(aL); + manualLearnButton.addActionListener(aL); + } + + public void setAutoLearningPanel(boolean value){ + if(value){ + remove(manualLearnPanel); + add(autoLearnPanel); + } else { + remove(autoLearnPanel); + add(manualLearnPanel); + } + validate(); + repaint(); + } /** * Returns the table where atomic owl classes are the table elements. @@ -101,5 +175,9 @@ classesTable.clear(); minInstanceCountSpinner.setValue(new Integer(1)); } + + public boolean isAutoLearnMode(){ + return autoLearnButton.isSelected(); + } } \ No newline at end of file Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -1,200 +0,0 @@ -/** - * Copyright (C) 2007-2008, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -package org.dllearner.tools.ore.ui.wizard.panels; - -import java.awt.BorderLayout; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.event.ActionListener; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.border.TitledBorder; -import javax.swing.event.ListSelectionListener; - -import org.dllearner.core.EvaluatedDescription; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.tools.ore.OREManager; -import org.dllearner.tools.ore.ui.GraphicalCoveragePanel; -import org.dllearner.tools.ore.ui.LearningOptionsPanel; -import org.dllearner.tools.ore.ui.ResultTable; - - -/** - * The wizard panel where result table and buttons for learning step are shown. - * @author Lorenz Buehmann - * - */ -public class LearningPanel extends JPanel{ - - private static final long serialVersionUID = -7411197973240429632L; - - private ResultTable resultTable; - private JScrollPane tableScrollPane; - private JPanel resultPanel; - - private JButton stopButton; - private JButton startButton; - private JPanel buttonPanel; - private JPanel buttonSliderPanel; - - private GraphicalCoveragePanel graphicPanel; - private LearningOptionsPanel optionsPanel; - - private GridBagConstraints c; - - - public LearningPanel() { - createUI(); - } - - private void createUI(){ - setLayout(new GridBagLayout()); - c = new GridBagConstraints(); - createResultPanel(); - createControlPanel(); - createCoveragePanel(); - } - - private void createResultPanel(){ - c.gridx = 0; - c.gridy = 0; - c.weightx = 1.0; - c.weighty = 1.0; - c.anchor = GridBagConstraints.NORTHWEST; - c.fill = GridBagConstraints.BOTH; - - resultTable = new ResultTable(); - tableScrollPane = new JScrollPane(resultTable); - resultPanel = new JPanel(); - resultPanel.setLayout(new BorderLayout()); - resultPanel.add(tableScrollPane); - resultPanel.setBorder(new TitledBorder("Learned class expressions")); - - add(resultPanel, c); - } - - private void createControlPanel(){ - c.gridx = GridBagConstraints.RELATIVE; - c.gridy = 0; - c.anchor = GridBagConstraints.NORTH; - c.weightx = 0.0; - c.weighty = 0.0; - c.fill = GridBagConstraints.NONE; - - buttonSliderPanel = new JPanel(); - - GridBagLayout buttonSliderPanelLayout = new GridBagLayout(); - buttonSliderPanelLayout.rowWeights = new double[] { 0.0, 0.0 }; - buttonSliderPanelLayout.rowHeights = new int[] { 126, 7 }; - buttonSliderPanelLayout.columnWeights = new double[] { 0.1 }; - buttonSliderPanelLayout.columnWidths = new int[] { 7 }; - buttonSliderPanel.setLayout(buttonSliderPanelLayout); - - buttonPanel ... [truncated message content] |