From: <lor...@us...> - 2010-03-13 12:08:06
|
Revision: 2117 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2117&view=rev Author: lorenz_b Date: 2010-03-13 12:07:58 +0000 (Sat, 13 Mar 2010) Log Message: ----------- Some small layout changes. Some changes in workflow. Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Info.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsTableModel.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/ManualLearnPanelDescriptor.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/RepairPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/SavePanel.java Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/Info.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -3,6 +3,6 @@ package org.dllearner; public class Info { - public static final String build = "2010-03-10"; + public static final String build = "2010-03-13"; } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -3,51 +3,57 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Timer; +import java.util.TimerTask; +import java.util.TreeSet; import org.dllearner.algorithms.celoe.CELOE; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.ClassLearningProblem; import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.mindswap.pellet.utils.progress.ProgressMonitor; public class LearningManager { private static LearningManager instance; - public enum LearningMode {AUTO, MANUAL}; + public enum LearningMode {AUTO, MANUAL, OFF}; public enum LearningType { EQUIVALENT, SUPER }; private List<LearningManagerListener> listeners; - public static final int AUTO_LEARN_MODE = 0; - public static final int MANUAL_LEARN_MODE = 1; - - private ComponentManager cm; - private LearningMode learningMode = LearningMode.AUTO; private LearningType learningType = LearningType.EQUIVALENT; + private ComponentManager cm; private ClassLearningProblem lp; private CELOE la; + private ReasonerComponent reasoner; private NamedClass currentClass2Describe; private int maxExecutionTimeInSeconds; private double noisePercentage; + private double threshold; private int maxNrOfResults; - private ReasonerComponent reasoner; - private List<EvaluatedDescriptionClass> newDescriptions; private List<EvaluatedDescriptionClass> equivalentDescriptions; private List<EvaluatedDescriptionClass> superDescriptions; private int currentDescriptionIndex = 0; + + private boolean learningInProgress = false; + + private ProgressMonitor progressMonitor; public static synchronized LearningManager getInstance(){ if(instance == null){ @@ -61,6 +67,7 @@ reasoner = OREManager.getInstance().getReasoner(); listeners = new ArrayList<LearningManagerListener>(); newDescriptions = new ArrayList<EvaluatedDescriptionClass>(); + progressMonitor = TaskManager.getInstance().getStatusBar(); } public void setLearningMode(LearningMode learningMode){ @@ -71,11 +78,16 @@ this.learningType = learningType; } + public LearningType getLearningType(){ + return learningType; + } + public void initLearningProblem(){ + reasoner = OREManager.getInstance().getReasoner(); lp = cm.learningProblem(ClassLearningProblem.class, reasoner); try { if(learningType.equals(LearningType.EQUIVALENT)){ - cm.applyConfigEntry(lp, "type", "equivalent"); + cm.applyConfigEntry(lp, "type", "equivalence"); } else { cm.applyConfigEntry(lp, "type", "superClass"); } @@ -110,6 +122,54 @@ } } + public boolean learnAsynchronously() { + if (learningInProgress) { + return false; + } + initLearningProblem(); + initLearningAlgorithm(); + learningInProgress = true; + progressMonitor.setProgressLength(maxExecutionTimeInSeconds); + String learnType = ""; + if(learningType == LearningType.EQUIVALENT){ + learnType = "equivalent"; + } else { + learnType = "superclass"; + } + progressMonitor.setProgressMessage("Learning " + learnType + " expressions"); + + Thread currentLearningThread = new Thread(new LearningRunner(), "Learning Thread"); + currentLearningThread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { + public void uncaughtException(Thread thread, Throwable throwable) { + + } + }); + currentLearningThread.start(); + return true; + } + + public boolean stopLearning() { + if (!learningInProgress) { + return false; + } + la.stop(); + learningInProgress = false; + progressMonitor.setProgressLength(0); + + return true; + } + + public synchronized List<EvaluatedDescriptionClass> getCurrentlyLearnedDescriptions(){ + List<EvaluatedDescriptionClass> result; + if(la != null){ + result = Collections.unmodifiableList((List<EvaluatedDescriptionClass>)la.getCurrentlyBestEvaluatedDescriptions + (maxNrOfResults, threshold, true)); + } else { + result = Collections.emptyList(); + } + return result; + } + public boolean isManualLearningMode(){ return learningMode.equals(LearningMode.MANUAL); } @@ -142,6 +202,10 @@ this.maxNrOfResults = maxNrOfResults; } + public void setThreshold(double threshold) { + this.threshold = threshold; + } + public void setNewDescriptions(List<List<EvaluatedDescriptionClass>> descriptions) { newDescriptions.clear(); newDescriptions.addAll(descriptions.get(0)); @@ -211,5 +275,24 @@ listener.newDescriptionSelected(index); } } + + private class LearningRunner implements Runnable{ + @Override + public void run() { + try{ + la.start(); + } finally{ + learningInProgress = false; + fireLearningFinished(); + progressMonitor.setProgressMessage("Done"); + } + } + } + + + public void fireLearningFinished(){ + + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -55,6 +55,7 @@ import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyChangeException; import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.RemoveAxiom; import org.semanticweb.owl.util.OWLEntityRemover; @@ -115,7 +116,7 @@ } - public void addNewClassDescription(NamedClass old, Description newDesc){ + public void addEquivalentClassDescription(NamedClass old, Description newDesc){ OWLDescription oldOWLAPIDesc = OWLAPIConverter.getOWLAPIDescription(old); OWLDescription newOWLAPIDesc = OWLAPIConverter.getOWLAPIDescription(newDesc); OWLEquivalentClassesAxiom equivAxiom = factory.getOWLEquivalentClassesAxiom(oldOWLAPIDesc, newOWLAPIDesc); @@ -129,6 +130,20 @@ } } + public void addSuperClassDescription(NamedClass old, Description newDesc){ + OWLDescription subClass = OWLAPIConverter.getOWLAPIDescription(old); + OWLDescription superClass = OWLAPIConverter.getOWLAPIDescription(newDesc); + OWLSubClassAxiom subAxiom = factory.getOWLSubClassAxiom(subClass, superClass); + AddAxiom add = new AddAxiom(ontology, subAxiom); + try { + manager.applyChange(add); + globalChanges.add(add); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + /** * Rewrite ontology by replacing old class with new learned class description. * @param newDesc Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -78,7 +78,7 @@ public void setSelectedDescription(int rowIndex){ int oldRowIndex = selectedRowIndex; selectedRowIndex = rowIndex; - fireTableRowsUpdated(oldRowIndex, selectedRowIndex); + fireTableDataChanged(); } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -154,6 +154,8 @@ descScroll.setViewportView(descPanel); JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + splitPane.setDividerLocation(0.7); + splitPane.setResizeWeight(0.7); statsPanel = new StatsPanel(ind); statsPanel.init(); @@ -176,7 +178,6 @@ actionStatsPanel.add(descScroll, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); actionStatsPanel.add(splitPane, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); -// actionStatsPanel.add(changesScroll, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); okCancelPanel = new JPanel(); okCancelPanel.setLayout(new BorderLayout()); @@ -193,9 +194,6 @@ buttonBox.add(cancelButton); okCancelPanel.add(buttonBox, BorderLayout.EAST); -// getContentPane().add(actionStatsPanel, java.awt.BorderLayout.CENTER); -// getContentPane().add(okCancelPanel, BorderLayout.SOUTH); - add(descScroll, BorderLayout.NORTH); add(splitPane, BorderLayout.CENTER); add(okCancelPanel, BorderLayout.SOUTH); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -3,6 +3,7 @@ import java.awt.Color; import java.awt.Component; import java.awt.Cursor; +import java.awt.Graphics; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; @@ -140,4 +141,6 @@ getSelectionModel().clearSelection(); } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -8,6 +8,7 @@ import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.tools.ore.ui.rendering.ManchesterSyntaxTableCellRenderer; import org.dllearner.tools.ore.ui.rendering.ProgressBarTableCellRenderer; +import org.dllearner.tools.protege.SuggestionsTableModel; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.HighlighterFactory; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -55,17 +55,8 @@ @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { - if(!selectionList.get(rowIndex).booleanValue()){ - selectedClassExpression = resultList.get(rowIndex); - for(int i = 0; i < selectionList.size(); i++){ - selectionList.set(i, Boolean.FALSE); - } - selectionList.set(rowIndex, (Boolean)value); - - super.fireTableCellUpdated(rowIndex, columnIndex); - } - - + selectionList.set(rowIndex, !selectionList.get(rowIndex)); + fireTableCellUpdated(rowIndex, columnIndex); } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsTable.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsTable.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -20,12 +20,9 @@ setModel(new StatsTableModel()); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); setEditable(false); - setTableHeader(null); setGridColor(Color.LIGHT_GRAY); setRowHeight(getRowHeight() + 4); getColumn(0).setMaxWidth(100); - setShowGrid(false); -// getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); setRowSelectionAllowed(false); setCellSelectionEnabled(false); setColumnSelectionAllowed(false); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsTableModel.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsTableModel.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -44,6 +44,17 @@ } } + @Override + public String getColumnName(int column) { + if(column == 0){ + return "Action"; + } else if(column == 1){ + return "Axiom"; + } else { + return ""; + } + } + public void setChanges(List<OWLOntologyChange> changes){ this.changes.clear(); this.changes.addAll(changes); 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 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -29,6 +29,7 @@ import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.LearningManager.LearningType; 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; @@ -177,11 +178,24 @@ if(!SetUtils.union(descriptions.get(0), descriptions.get(1)).isEmpty()){ LearningManager.getInstance().setNewDescriptions(descriptions); } + OREManager oreMan = OREManager.getInstance(); + for(EvaluatedDescriptionClass e : descriptions.get(0)){ + oreMan.getModifier().addEquivalentClassDescription(oreMan.getCurrentClass2Learn(), e.getDescription()); + } + for(EvaluatedDescriptionClass e : descriptions.get(1)){ + oreMan.getModifier().addSuperClassDescription(oreMan.getCurrentClass2Learn(), e.getDescription()); + } } else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ManualLearnPanelDescriptor.IDENTIFIER)){ OREManager oreMan = OREManager.getInstance(); - oreMan.getModifier().addNewClassDescription(oreMan.getCurrentClass2Learn(), - oreMan.getNewClassDescription().getDescription()); + if(LearningManager.getInstance().getLearningType() == LearningType.SUPER){ + oreMan.getModifier().addSuperClassDescription(oreMan.getCurrentClass2Learn(), + oreMan.getNewClassDescription().getDescription()); + } else { + oreMan.getModifier().addEquivalentClassDescription(oreMan.getCurrentClass2Learn(), + oreMan.getNewClassDescription().getDescription()); + } + } else if(nextPanelDescriptor.equals(RepairPanelDescriptor.IDENTIFIER)){ 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 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -71,6 +71,12 @@ + "Select one of them for which you want to learn equivalent class or superclass expressions," + " then press <Next>"; + public static final String SKIP_LEARN_INFORMATION = "Choose one of the learning modes above, or press "+ + " <Next> to finish the wizard."; + + public static final String NO_LEARNING_SUPPORTED_INFORMATION = "LEarning is not supported because the currently loaded ontology contains no individuals. "+ + "Please choose another ontology or press <Next> to finish the wizard."; + private ClassChoosePanel classChoosePanel; private Map<Integer, Set<NamedClass>> instanceCountToClasses; @@ -93,10 +99,13 @@ @Override public Object getNextPanelDescriptor() { - if(isAutoLearningMode()){ + LearningMode mode = LearningManager.getInstance().getLearningMode(); + if(mode == LearningMode.AUTO){ return AutoLearnPanelDescriptor.IDENTIFIER; + } else if(mode == LearningMode.MANUAL){ + return ManualLearnPanelDescriptor.IDENTIFIER; } else { - return ManualLearnPanelDescriptor.IDENTIFIER; + return SavePanelDescriptor.IDENTIFIER; } } @@ -106,16 +115,27 @@ return KnowledgeSourcePanelDescriptor.IDENTIFIER; } - @Override + @Override public void aboutToDisplayPanel() { - if(isAutoLearningMode()){ - getWizard().getInformationField().setText(AUTO_LEARN_INFORMATION); - } else { - getWizard().getInformationField().setText(MANUAL_LEARN_INFORMATION); - } - - setNextButtonAccordingToConceptSelected(); - } + if (OREManager.getInstance().getReasoner().getIndividuals().size() == 0) { + LearningManager.getInstance().setLearningMode(LearningMode.OFF); + classChoosePanel.setLearningSupported(false); + classChoosePanel.refreshLearningPanel(); + getWizard().getInformationField().setText(NO_LEARNING_SUPPORTED_INFORMATION); + } else { + classChoosePanel.setLearningSupported(true); + + LearningMode mode = LearningManager.getInstance().getLearningMode(); + if (mode == LearningMode.AUTO) { + getWizard().getInformationField().setText(AUTO_LEARN_INFORMATION); + } else if (mode == LearningMode.MANUAL) { + getWizard().getInformationField().setText(MANUAL_LEARN_INFORMATION); + } else { + getWizard().getInformationField().setText(SKIP_LEARN_INFORMATION); + } + } + setNextButtonAccordingToConceptSelected(); + } /** * Method is called when other element in list is selected, and sets next button enabled. @@ -125,6 +145,8 @@ setNextButtonAccordingToConceptSelected(); if (!e.getValueIsAdjusting() && classChoosePanel.getClassesTable().getSelectedRow() >= 0) { OREManager.getInstance().setCurrentClass2Learn((NamedClass) classChoosePanel.getClassesTable().getSelectedValue()); + LearningManager.getInstance().setCurrentClass2Describe(classChoosePanel.getClassesTable().getSelectedValue()); + } } @@ -135,8 +157,10 @@ } private void setNextButtonAccordingToConceptSelected() { - - if (classChoosePanel.getClassesTable().getSelectedRow() >= 0 || classChoosePanel.isAutoLearnMode()){ + LearningManager man = LearningManager.getInstance(); + if (classChoosePanel.getClassesTable().getSelectedRow() >= 0 + || classChoosePanel.isAutoLearnMode() + || man.getLearningMode() == LearningMode.OFF){ getWizard().setNextFinishButtonEnabled(true); }else{ getWizard().setNextFinishButtonEnabled(false); @@ -218,23 +242,31 @@ @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("auto")){ - classChoosePanel.setAutoLearningPanel(true); - getWizard().getInformationField().setText(AUTO_LEARN_INFORMATION); LearningManager.getInstance().setLearningMode(LearningMode.AUTO); - } else { - classChoosePanel.setAutoLearningPanel(false); - getWizard().getInformationField().setText(MANUAL_LEARN_INFORMATION); + } else if(e.getActionCommand().equals("manual")){ LearningManager.getInstance().setLearningMode(LearningMode.MANUAL); retrieveClasses(); + } else { + LearningManager.getInstance().setLearningMode(LearningMode.OFF); } + updateWizardInformation(); + classChoosePanel.refreshLearningPanel(); setNextButtonAccordingToConceptSelected(); } - public boolean isAutoLearningMode(){ - return classChoosePanel.isAutoLearnMode(); + private void updateWizardInformation(){ + LearningMode mode = LearningManager.getInstance().getLearningMode(); + if(mode == LearningMode.AUTO){ + getWizard().getInformationField().setText(AUTO_LEARN_INFORMATION); + } else if(mode == LearningMode.MANUAL){ + getWizard().getInformationField().setText(MANUAL_LEARN_INFORMATION); + } else { + getWizard().getInformationField().setText(SKIP_LEARN_INFORMATION); + } } + public void setAutoLearningOptions(){ classChoosePanel.setLearningOptions(); } 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 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -27,6 +27,7 @@ import java.util.Timer; import java.util.TimerTask; +import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -35,9 +36,11 @@ import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.OREManagerListener; import org.dllearner.tools.ore.TaskManager; +import org.dllearner.tools.ore.LearningManager.LearningType; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.ManualLearnPanel; @@ -107,8 +110,7 @@ // range); // Description de = new NamedClass("http://example.com/father#male"); - if (!e.getValueIsAdjusting() && learnPanel.getResultTable().getSelectedRow() >= 0 && - (learningTask.isDone() || learningTask.isCancelled())){ + if (!e.getValueIsAdjusting() && learnPanel.getResultTable().getSelectedRow() >= 0){ EvaluatedDescriptionClass selectedClassExpression = learnPanel.getResultTable().getSelectedValue(); learnPanel.showInconsistencyWarning(!selectedClassExpression.isConsistent()); OREManager.getInstance().setNewClassDescription(selectedClassExpression); @@ -124,26 +126,51 @@ */ public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ + learnPanel.getStartButton().setEnabled(false); + learnPanel.getStopButton().setEnabled(true); + String learningType = ""; + + LearningManager.getInstance().setNoisePercentage(learnPanel.getOptionsPanel().getMinAccuracy()); + LearningManager.getInstance().setMaxExecutionTimeInSeconds(learnPanel.getOptionsPanel().getMaxExecutionTime()); + LearningManager.getInstance().setMaxNrOfResults(learnPanel.getOptionsPanel().getNrOfConcepts()); + LearningManager.getInstance().setThreshold(learnPanel.getOptionsPanel().getThreshold()); + if(learnPanel.isEquivalentClassesTypeSelected()){ OREManager.getInstance().setLearningType("equivalence"); + LearningManager.getInstance().setLearningType(LearningType.EQUIVALENT); + learningType = "equivalent"; } else { learningType = "super"; OREManager.getInstance().setLearningType("superClass"); + LearningManager.getInstance().setLearningType(LearningType.SUPER); } -// TaskManager.getInstance().setTaskStarted("Learning " + learningType + " class expressions..."); + TaskManager.getInstance().getStatusBar().setMessage("Learning " + learningType + " class expressions..."); getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - 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(); + +// TaskManager.getInstance().setTaskStarted("Learning " + learningType + " class expressions..."); +// Timer timer = new Timer(); +// timer.schedule(new TimerTask() { +// int progress = 0; +// +// @Override +// public void run() { +// progress++; +// fillTable(LearningManager.getInstance().getCurrentlyLearnedDescriptions()); +// TaskManager.getInstance().getStatusBar().setProgress(progress); +// +// } +// }, 1000, 1000); +// LearningManager.getInstance().learnAsynchronously(); - learningTask = new LearningTask(); learningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); learningTask.execute(); @@ -159,6 +186,21 @@ } } + + private void fillTable(final List<EvaluatedDescriptionClass> result){ + Runnable r = new Runnable() { + @Override + public void run() { + learnPanel.getResultTable().addResults(result); + } + }; + if(SwingUtilities.isEventDispatchThread()){ + r.run(); + } else { + SwingUtilities.invokeLater(r); + } + + } private void setNextButtonAccordingToConceptSelected() { 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 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -96,6 +96,8 @@ @Override public void aboutToDisplayPanel() { getWizard().getInformationField().setText(INFORMATION); + OREManager oreMan = OREManager.getInstance(); + repairPanel.setClassToDescribe(oreMan.getManchesterSyntaxRendering(oreMan.getCurrentClass2Learn())); } /** 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 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -29,6 +29,7 @@ import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.LearningManager.LearningMode; import org.dllearner.tools.ore.ui.OverrideFileChooser; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.SavePanel; @@ -86,15 +87,17 @@ @Override public Object getBackPanelDescriptor() { - - if(LearningManager.getInstance().isManualLearningMode()){ + LearningMode mode = LearningManager.getInstance().getLearningMode(); + if(mode == LearningMode.MANUAL){ if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ return ManualLearnPanelDescriptor.IDENTIFIER; } else { return RepairPanelDescriptor.IDENTIFIER; } + } else if(mode == LearningMode.AUTO){ + return AutoLearnPanelDescriptor.IDENTIFIER; } else { - return AutoLearnPanelDescriptor.IDENTIFIER; + return ClassChoosePanelDescriptor.IDENTIFIER; } } 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 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -20,6 +20,7 @@ package org.dllearner.tools.ore.ui.wizard.panels; +import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; @@ -39,7 +40,9 @@ import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionListener; +import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.LearningManager.LearningMode; import org.dllearner.tools.ore.ui.ClassesTable; import org.dllearner.tools.ore.ui.HelpablePanel; import org.dllearner.tools.ore.ui.LearningOptionsPanel; @@ -57,6 +60,7 @@ private JSpinner minInstanceCountSpinner; private JRadioButton autoLearnButton; private JRadioButton manualLearnButton; + private JRadioButton noLearningButton; private JPanel currentPanel; private JPanel manualLearnPanel; @@ -77,7 +81,7 @@ } private void createUI(){ - setLayout(new GridBagLayout()); + setLayout(new BorderLayout()); GridBagConstraints c = new GridBagConstraints(); JPanel optionsPanel = new JPanel(new GridLayout(0, 1)); @@ -88,18 +92,24 @@ manualLearnButton = new JRadioButton("Manual learning mode"); manualLearnButton.setActionCommand("manual"); + noLearningButton = new JRadioButton("Skip learning"); + noLearningButton.setActionCommand("skip"); + + ButtonGroup learningType = new ButtonGroup(); learningType.add(manualLearnButton); learningType.add(autoLearnButton); + learningType.add(noLearningButton); autoLearnButton.setSelected(true); optionsPanel.add(autoLearnButton); optionsPanel.add(manualLearnButton); + optionsPanel.add(noLearningButton); HelpablePanel optionsHelpPanel = new HelpablePanel(optionsPanel); optionsHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); optionsHelpPanel.setHelpText(HELP_TEXT); c.gridwidth = GridBagConstraints.REMAINDER; - add(optionsHelpPanel, c); + add(optionsHelpPanel, BorderLayout.NORTH); createAutoLearnPanel(); createManualLearnPanel(); @@ -109,7 +119,7 @@ manualLearnPanel.setPreferredSize(size); currentPanel = autoLearnPanel; - add(currentPanel, c); + add(currentPanel, BorderLayout.CENTER); } @@ -174,15 +184,20 @@ public void addActionsListeners(ActionListener aL){ autoLearnButton.addActionListener(aL); manualLearnButton.addActionListener(aL); + noLearningButton.addActionListener(aL); } - public void setAutoLearningPanel(boolean value){ - if(value){ + public void refreshLearningPanel(){ + LearningMode mode = LearningManager.getInstance().getLearningMode(); + if(mode == LearningMode.AUTO){ remove(manualLearnPanel); add(autoLearnPanel); + } else if(mode == LearningMode.MANUAL){ + remove(autoLearnPanel); + add(manualLearnPanel); } else { remove(autoLearnPanel); - add(manualLearnPanel); + remove(manualLearnPanel); } validate(); repaint(); @@ -200,13 +215,25 @@ classesTable.clear(); minInstanceCountSpinner.setValue(Integer.valueOf(3)); autoLearnButton.setSelected(true); - setAutoLearningPanel(true); + LearningManager.getInstance().setLearningMode(LearningMode.AUTO); + refreshLearningPanel(); } public boolean isAutoLearnMode(){ return autoLearnButton.isSelected(); } + public void setLearningSupported(boolean value){ + if(!value){ + autoLearnButton.setEnabled(false); + manualLearnButton.setEnabled(false); + noLearningButton.setSelected(true); + } else { + autoLearnButton.setEnabled(true); + manualLearnButton.setEnabled(true); + } + } + public void setLearningOptions(){ OREManager.getInstance().setMaxExecutionTimeInSeconds(learningOptionsPanel.getMaxExecutionTime()); OREManager.getInstance().setMaxNrOfResults(learningOptionsPanel.getNrOfConcepts()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -21,8 +21,7 @@ package org.dllearner.tools.ore.ui.wizard.panels; import java.awt.BorderLayout; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; +import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionListener; import java.awt.event.MouseListener; @@ -30,14 +29,16 @@ 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; import javax.swing.border.MatteBorder; -import javax.swing.border.TitledBorder; import javax.swing.event.ListSelectionListener; import org.dllearner.tools.ore.ui.IndividualsTable; import org.dllearner.tools.ore.ui.MarkableClassExpressionsTable; +import org.jdesktop.swingx.JXTitledPanel; /** * JPanel for repairing action. @@ -59,99 +60,53 @@ private JButton negAddButton; private JButton nextButton; + private JLabel classToDescribeLabel; private MarkableClassExpressionsTable descriptionsTable; public RepairPanel() { - setLayout(new GridBagLayout()); -// createAutoUI(); createUI(); } private void createUI(){ - GridBagConstraints c = new GridBagConstraints(); - c.fill = GridBagConstraints.BOTH; - c.weighty = 0.3; - c.weightx = 1.0; - c.gridx = 0; - c.gridy = 0; -// c.gridwidth = GridBagConstraints.REMAINDER; - add(createDescriptionsPanel(), c); + setLayout(new BorderLayout()); + JSplitPane mainSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); - c.fill = GridBagConstraints.NONE; - c.gridx = 1; - c.gridy = 0; - nextButton = new JButton("Next suggestion"); - nextButton.setActionCommand("next"); - add(nextButton, c); - c.fill = GridBagConstraints.BOTH; - c.gridwidth = 1; - c.gridy = 1; - c.gridx = 0; - c.weightx = 0.5; - c.weighty = 0.5; - add(createPosPanel(), c); - c.gridx = 1; - add(createNegPanel(), c); - } - - private void createAutoUI(){ - GridBagConstraints c = new GridBagConstraints(); - c.fill = GridBagConstraints.BOTH; - c.weighty = 0.3; - c.weightx = 1.0; - c.gridx = 0; - c.gridy = 0; -// c.gridwidth = GridBagConstraints.REMAINDER; - add(createDescriptionsPanel(), c); - - c.fill = GridBagConstraints.NONE; - c.gridx = 1; - c.gridy = 0; + JPanel descriptionPanel = new JPanel(new BorderLayout()); + descriptionPanel.add(createDescriptionsPanel(), BorderLayout.CENTER); nextButton = new JButton("Next suggestion"); nextButton.setActionCommand("next"); - add(nextButton, c); + JPanel buttonPanel = new JPanel(new BorderLayout()); + buttonPanel.add(nextButton, BorderLayout.NORTH); + descriptionPanel.add(buttonPanel, BorderLayout.EAST); - c.fill = GridBagConstraints.BOTH; - c.gridwidth = 1; - c.gridy = 1; - c.gridx = 0; - c.weightx = 0.5; - c.weighty = 0.5; - add(createPosPanel(), c); - c.gridx = 1; - add(createNegPanel(), c); + JSplitPane examplesSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + examplesSplitPane.setLeftComponent(createPosPanel()); + examplesSplitPane.setRightComponent(createNegPanel()); + examplesSplitPane.setDividerLocation(0.5); + examplesSplitPane.setResizeWeight(0.5); + examplesSplitPane.setOneTouchExpandable(true); - } - - private void createManualUI(){ - GridBagConstraints c = new GridBagConstraints(); - c.fill = GridBagConstraints.BOTH; - c.gridx = 0; - c.gridy = 0; - c.gridwidth = GridBagConstraints.REMAINDER; - add(createDescriptionsPanel(), c); + mainSplitPane.setTopComponent(descriptionPanel); + mainSplitPane.setBottomComponent(examplesSplitPane); + mainSplitPane.setDividerLocation(0.3); + mainSplitPane.setOneTouchExpandable(true); - c.gridwidth = 1; - c.gridy = 1; - c.gridx = 0; - c.weightx = 0.5; - c.weighty = 0.5; - add(createPosPanel(), c); - c.gridx = 1; - add(createNegPanel(), c); - - c.gridy = 2; - nextButton = new JButton("Next"); - nextButton.setActionCommand("next"); -// add(nextButton, c); + add(mainSplitPane); } + private JComponent createDescriptionsPanel(){ JPanel panel = new JPanel(new BorderLayout()); + JPanel classToDescribePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + classToDescribePanel.add(new JLabel("Class to describe:")); + classToDescribeLabel = new JLabel(); + classToDescribePanel.add(classToDescribeLabel); + panel.add(classToDescribePanel, BorderLayout.NORTH); + descriptionsTable = new MarkableClassExpressionsTable(); JScrollPane scroll = new JScrollPane(descriptionsTable); scroll.setBorder(new MatteBorder(null)); @@ -160,13 +115,10 @@ } private JComponent createPosPanel(){ - JPanel posPanel = new JPanel(); + JXTitledPanel posPanel = new JXTitledPanel("Positive examples"); + posPanel.getContentContainer().setLayout(new BorderLayout()); posPanel.setName("positive"); - posPanel.setLayout(new GridBagLayout()); - posPanel.setBorder(new TitledBorder("Positive examples")); - GridBagConstraints gbc = new GridBagConstraints(); - JPanel buttonPanel = new JPanel(); buttonPanel.setName("positive"); buttonPanel.setLayout(new GridLayout(0, 1)); @@ -179,32 +131,21 @@ posRepairButton = new JButton("Repair"); posRepairButton.setActionCommand("posRepair"); buttonPanel.add(posRepairButton); - gbc.anchor = GridBagConstraints.NORTH; - posPanel.add(buttonPanel, gbc); + JPanel buttonPanelHolder = new JPanel(new BorderLayout()); + buttonPanelHolder.add(buttonPanel, BorderLayout.NORTH); + posPanel.getContentContainer().add(buttonPanelHolder, BorderLayout.EAST); posTable = new IndividualsTable(); - gbc.fill = GridBagConstraints.BOTH; - gbc.weightx = 1; - gbc.weighty = 1; - posPanel.add(new JScrollPane(posTable), gbc); + posPanel.getContentContainer().add(new JScrollPane(posTable), BorderLayout.CENTER); return posPanel; } private JComponent createNegPanel(){ - JPanel negPanel = new JPanel(); + JXTitledPanel negPanel = new JXTitledPanel("Negative examples"); + negPanel.getContentContainer().setLayout(new BorderLayout()); negPanel.setName("negative"); - negPanel.setLayout(new GridBagLayout()); - negPanel.setBorder(new TitledBorder("Negative examples")); - GridBagConstraints gbc = new GridBagConstraints(); - - negTable = new IndividualsTable(); - gbc.fill = GridBagConstraints.BOTH; - gbc.weightx = 1; - gbc.weighty = 1; - negPanel.add(new JScrollPane(negTable), gbc); - JPanel buttonPanel = new JPanel(); buttonPanel.setName("negative"); buttonPanel.setLayout(new GridLayout(0, 1)); @@ -217,12 +158,13 @@ negRepairButton = new JButton("Repair"); negRepairButton.setActionCommand("negRepair"); buttonPanel.add(negRepairButton); - gbc.fill = GridBagConstraints.NONE; - gbc.weightx = 0; - gbc.weighty = 0; - gbc.anchor = GridBagConstraints.NORTH; - negPanel.add(buttonPanel, gbc); + JPanel buttonPanelHolder = new JPanel(new BorderLayout()); + buttonPanelHolder.add(buttonPanel, BorderLayout.NORTH); + negPanel.getContentContainer().add(buttonPanelHolder, BorderLayout.EAST); + negTable = new IndividualsTable(); + negPanel.getContentContainer().add(new JScrollPane(negTable), BorderLayout.CENTER); + return negPanel; } @@ -247,12 +189,9 @@ } public void setManualStyle(boolean value){ -// removeAll(); if(value){ -// createManualUI(); nextButton.setVisible(false); } else { -// createAutoUI(); nextButton.setVisible(true); } repaint(); @@ -292,6 +231,10 @@ negTable.addMouseListener(mL); } + public void setClassToDescribe(String classToDescribeString){ + classToDescribeLabel.setText(classToDescribeString); + } + public static void main(String[] args){ JFrame frame = new JFrame(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/SavePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/SavePanel.java 2010-03-11 17:20:23 UTC (rev 2116) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/SavePanel.java 2010-03-13 12:07:58 UTC (rev 2117) @@ -20,7 +20,7 @@ package org.dllearner.tools.ore.ui.wizard.panels; -import java.awt.GridBagConstraints; +import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionListener; @@ -32,6 +32,7 @@ import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.ui.StatsTable; +import org.jdesktop.swingx.JXTitledPanel; /** * JPanel where to buttons are added to save and go back to class choose panel. @@ -50,22 +51,21 @@ public SavePanel(){ setLayout(new GridLayout(0,1)); - GridBagConstraints c = new GridBagConstraints(); - c.fill = GridBagConstraints.BOTH; - c.weightx = 1.0; - c.weighty = 1.0; + + JXTitledPanel changesPanel = new JXTitledPanel("Ontology changes"); + changesPanel.getContentContainer().setLayout(new BorderLayout()); changesTable = new StatsTable(); - add(new JScrollPane(changesTable), c); + changesPanel.getContentContainer().add(new JScrollPane(changesTable), BorderLayout.CENTER); + add(changesPanel); + JPanel buttonHolderPanel = new JPanel(); buttonHolderPanel.setLayout(new BoxLayout(buttonHolderPanel, BoxLayout.X_AXIS)); - saveExit = new JButton("Save and Exit"); buttonHolderPanel.add(saveExit); - saveGoBack = new JButton("Save and go to class choose panel"); buttonHolderPanel.add(saveGoBack); - add(buttonHolderPanel, c); + add(buttonHolderPanel); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |