From: <lor...@us...> - 2008-09-21 12:49:00
|
Revision: 1233 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1233&view=rev Author: lorenz_b Date: 2008-09-21 12:48:48 +0000 (Sun, 21 Sep 2008) Log Message: ----------- some javadoc and checkstyle Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparql.java trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparqlDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/Main.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java trunk/src/dl-learner/org/dllearner/tools/ore/SavePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/SavePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/UndoLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardModel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -29,7 +29,11 @@ import javax.swing.JPanel; import org.semanticweb.owl.model.OWLOntologyChange; - +/** + * JPanel where an ontology change and his undo function is listed. + * @author Lorenz Buehmann + * + */ public class ChangePanel extends JPanel{ /** @@ -38,7 +42,7 @@ private static final long serialVersionUID = -934113184795465461L; /** - * Constructor for a JPanel where an ontology change and his undo function is listed + * Constructor * @param label * @param changes * @param mL Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -28,12 +28,13 @@ import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.border.BevelBorder; - +/** + * JPanel where all ontology changes are shown. + * @author Lorenz Buehmann + * + */ public class ChangesPanel extends JPanel{ - /** - * - */ private static final long serialVersionUID = -7538532926820669891L; public ChangesPanel(){ @@ -45,7 +46,10 @@ } - + /** + * Refresh the actual panel. + * @param cont + */ public void updatePanel(Container cont){ remove(cont); SwingUtilities.updateComponentTreeUI(this); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -36,7 +36,11 @@ import org.jdesktop.swingx.icon.EmptyIcon; import org.jdesktop.swingx.painter.BusyPainter; - +/** + * Wizard panel where atomic classes are shown in list. + * @author Lorenz Buehmann + * + */ public class ClassPanelOWL extends JPanel{ private static final long serialVersionUID = 3026319637264844550L; @@ -78,7 +82,7 @@ contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); - add(contentPanel,BorderLayout.CENTER); + add(contentPanel, BorderLayout.CENTER); add(labelPanel, BorderLayout.SOUTH); } @@ -89,7 +93,7 @@ conceptList = new JList(model); - scroll.setPreferredSize(new Dimension(400,400)); + scroll.setPreferredSize(new Dimension(400, 400)); scroll.setViewportView(conceptList); contentPanel1.add(scroll); @@ -102,10 +106,8 @@ return model; } - public void setModel(DefaultListModel dm){ - conceptList.setModel(dm); - } + public void addSelectionListener(ListSelectionListener l){ conceptList.addListSelectionListener(l); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -27,12 +27,17 @@ - +/** + * Wizard panel descriptor for selecting one of the atomic classes in OWL-ontology that + * has to be (re)learned. + * @author Lorenz Buehmann + * + */ public class ClassPanelOWLDescriptor extends WizardPanelDescriptor implements ListSelectionListener{ public static final String IDENTIFIER = "CLASS_CHOOSE_OWL_PANEL"; public static final String INFORMATION = "In this panel all atomic classes in the ontology are shown in the list above. " + - "Select one of them which should be (re)learned from then press \"Next-Button\""; + "Select one of them which should be (re)learned from, then press \"Next-Button\""; private ClassPanelOWL owlClassPanel; @@ -65,7 +70,7 @@ public void valueChanged(ListSelectionEvent e) { setNextButtonAccordingToConceptSelected(); if (!e.getValueIsAdjusting()) - getWizardModel().getOre().setConcept((NamedClass)owlClassPanel.getList().getSelectedValue()); + getWizardModel().getOre().setClassToLearn((NamedClass)owlClassPanel.getList().getSelectedValue()); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparql.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparql.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -33,7 +33,11 @@ import org.jdesktop.swingx.icon.EmptyIcon; import org.jdesktop.swingx.painter.BusyPainter; - +/** + * Wizard Panel for SPARQL-Mode. + * @author Lorenz Buehmann + * + */ public class ClassPanelSparql extends JPanel{ private static final long serialVersionUID = 3026319637264844550L; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparqlDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparqlDescriptor.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparqlDescriptor.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -20,10 +20,11 @@ package org.dllearner.tools.ore; - - - - +/** + * Class for SPARQL-Mode + * @author Lorenz Buehmann + * + */ public class ClassPanelSparqlDescriptor extends WizardPanelDescriptor{ public static final String IDENTIFIER = "CLASS_CHOOSE_SPARQL_PANEL"; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -30,6 +30,11 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; +/** + * List cell renderer for colored lines to provide better view on list values. + * @author Lorenz Buehmann + * + */ public class ColorListCellRenderer extends JLabel implements ListCellRenderer { private static final long serialVersionUID = -7592805113197759247L; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -43,6 +43,11 @@ import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.Thing; +/** + * Label that might have menu items when clicked on it. + * @author Lorenz Buehmann + * + */ public class DescriptionLabel extends JLabel implements MouseListener{ /** * @@ -84,7 +89,7 @@ } /** - * initialize description label with solution + * initialize description label with solution. */ public void init(){ baseURI = ore.getBaseURI(); @@ -241,14 +246,14 @@ /** - * returns actual description + * returns actual description. */ public Description getDescription(){ return desc; } /** - * adds action listeners to menu items + * adds action listeners to menu items. * @param aL */ public void addActionListeners(ActionListener aL){ @@ -275,6 +280,9 @@ } + /** + * Underlining label when mouse over. + */ public void mouseEntered(MouseEvent e) { setText("<html><u>" + ((Description) desc).toManchesterSyntaxString(ore @@ -286,6 +294,9 @@ } + /** + * Removing underlining when mosue relased. + */ public void mouseExited(MouseEvent e) { setText(((Description) desc).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -24,6 +24,11 @@ import org.dllearner.core.owl.Description; +/** + * Item for possible repair action. + * @author Lorenz Buehmann + * + */ public class DescriptionMenuItem extends JMenuItem { /** @@ -57,11 +62,18 @@ this.action = action; } - + /** + * Returns the description part where item is asserted to. + * @return description + */ public Description getDescription(){ return desc; } + /** + * Returns action type represented as number.. + * @return number + */ public int getActionID(){ return action; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -33,6 +33,11 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +/** + * Panel where learned class description is shown, and parts that might occur errors are red colored. + * @author Lorenz Buehmann + * + */ public class DescriptionPanel extends JPanel{ /** @@ -44,7 +49,7 @@ private Individual ind; private ActionListener aL; private String mode; - boolean correct = false; + private boolean correct = false; private Description newClassDescription; public DescriptionPanel(ORE ore, Individual ind, ActionListener aL, String mode){ @@ -52,7 +57,7 @@ setBackground(Color.WHITE); setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); this.ore = ore; - this.newClassDescription = ore.getNewClassDescription(); + this.newClassDescription = ore.getNewClassDescription().getDescription(); this.ind = ind; this.aL = aL; this.mode = mode; @@ -70,7 +75,7 @@ } } else if(mode.equals("pos")){ - for(JLabel jL : ore.DescriptionToJLabelPos(ind, newClassDescription)){ + for(JLabel jL : ore.descriptionToJLabelPos(ind, newClassDescription)){ add(jL); if(jL instanceof DescriptionLabel){ @@ -84,6 +89,9 @@ } } + /** + * Updates the panel. + */ public void updatePanel(){ for(Component c : getComponents()) if(c instanceof JLabel) @@ -104,7 +112,7 @@ } } else if(mode.equals("pos")){ - for (JLabel jL : ore.DescriptionToJLabelPos(ind, newClassDescription)) { + for (JLabel jL : ore.descriptionToJLabelPos(ind, newClassDescription)) { add(jL); if (jL instanceof DescriptionLabel) { ((DescriptionLabel) jL).setIndOre(ore, ind); @@ -119,7 +127,10 @@ } - + /** + * Checks whether description is covered by positive example, or not covered by negative example. + * @return true if description is covered by positive example, or not covered by negative example, otherwise false is returned + */ public boolean isCorrect(){ return correct; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -32,7 +32,11 @@ import javax.swing.JTextArea; import javax.swing.UIManager; - +/** + * Wizard panel with introduction text. + * @author Lorenz Buehmann + * + */ public class IntroductionPanel extends JPanel { private static final long serialVersionUID = 7184544803724152044L; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -21,7 +21,11 @@ package org.dllearner.tools.ore; - +/** + * Wizard panel descriptor with some informations for the tool. + * @author Lorenz Buehmann + * + */ public class IntroductionPanelDescriptor extends WizardPanelDescriptor { public static final String IDENTIFIER = "INTRODUCTION_PANEL"; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -39,6 +39,12 @@ import javax.swing.event.DocumentListener; import javax.swing.filechooser.FileFilter; +/** + * Wizard panel where radio buttons for choosing knowledge source type, button for browsing + * file system and textfields for inserting file name or SPARQL-URL are added. + * @author Lorenz Buehmann + * + */ public class KnowledgeSourcePanel extends JPanel{ private static final long serialVersionUID = -3997200565180270088L; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -26,7 +26,11 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; - +/** + * Wizard panel descriptor where knowledge source is selected. + * @author Lorenz Buehmann + * + */ public class KnowledgeSourcePanelDescriptor extends WizardPanelDescriptor implements ActionListener, DocumentListener{ public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; @@ -66,6 +70,9 @@ setNextButtonAccordingToExistingOWLFile(); } + /** + * Actions for buttons. + */ public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("browse")){ @@ -110,7 +117,7 @@ setNextButtonAccordingToExistingOWLFile(); } - public KnowledgeSourcePanel getPanel() { + public KnowledgeSourcePanel getPanel() { return knowledgePanel; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -47,7 +47,11 @@ import org.jdesktop.swingx.painter.BusyPainter; - +/** + * The wizard panel where list and buttons for learning step are shown. + * @author Lorenz Buehmann + * + */ public class LearningPanel extends JPanel{ private static final long serialVersionUID = -7411197973240429632L; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -33,12 +33,16 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; -import org.dllearner.core.owl.Description; - +/** + * Wizard panel descriptor where learned class description are shown. + * @author Lorenz Buehmann + * + */ public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener{ public static final String IDENTIFIER = "LEARNING_PANEL"; @@ -94,13 +98,14 @@ // Description de = new NamedClass("http://example.com/father#male"); if (!e.getValueIsAdjusting()){ - getWizardModel().getOre().setNewClassDescription((Description)(learnPanel.getResultList().getSelectedValue())); - - + getWizardModel().getOre().setNewClassDescription(((EvaluatedDescription) (learnPanel.getResultList().getSelectedValue()))); } } + /** + * Actions for pressing start- or stop-button. + */ public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ learnPanel.getListModel().clear(); @@ -120,12 +125,8 @@ } - - } - - private void setNextButtonAccordingToConceptSelected() { if (learnPanel.getResultList().getSelectedValue()!= null){ @@ -136,35 +137,51 @@ } + /** + * Returns the swing worker thread instance. + * @return swing worker + */ public LearnSwingWorker getWorkerThread(){ return worker; } + /** + * 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 loading message. + */ public void setPanelDefaults(){ learnPanel.getListModel().clear(); learnPanel.getStatusLabel().setText(""); } - - class LearnSwingWorker extends SwingWorker<List<Description>, List<Description>> { - - + /** + * Inner class, containing the background thread for learning class descriptions. + * @author Lorenz Buehmann + * + */ + class LearnSwingWorker extends SwingWorker<List<EvaluatedDescription>, List<EvaluatedDescription>> { + Thread t; - - @SuppressWarnings("unchecked") @Override - public List<Description> doInBackground() { + public List<EvaluatedDescription> doInBackground() { learnPanel.getResultList().setCellRenderer(new ColumnListCellRenderer(getWizardModel().getOre())); learnPanel.getLoadingLabel().setBusy(true); @@ -177,8 +194,7 @@ @Override public void run() { if(la != null){ - - publish(la.getCurrentlyBestDescriptions(30, true)); + publish(la.getCurrentlyBestEvaluatedDescriptions(30, 0.0, true)); } } @@ -204,7 +220,7 @@ // TODO Auto-generated catch block e.printStackTrace(); } - List<Description> result = getWizardModel().getOre().getLearningResults(30); + List<EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(30, 0.0, true); return result; } @@ -213,7 +229,7 @@ public void done() { timer.cancel(); - List<Description> result = null; + List<EvaluatedDescription> result = null; try { result = get(); } catch (InterruptedException e) { @@ -230,16 +246,16 @@ } @Override - protected void process(List<List<Description>> resultLists) { + protected void process(List<List<EvaluatedDescription>> resultLists) { // panel4.getModel().clear(); - for (List<Description> list : resultLists) { + for (List<EvaluatedDescription> list : resultLists) { updateList(list); } } - void updateList(final List<Description> result) { + void updateList(final List<EvaluatedDescription> result) { Runnable doUpdateList = new Runnable() { @@ -247,7 +263,7 @@ DefaultListModel dm = new DefaultListModel(); public void run() { // learnPanel.getListModel().clear(); - for (Description d : result) { + for (EvaluatedDescription d : result) { dm.addElement(d); // panel4.getModel().addElement(d); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -28,6 +28,11 @@ import javax.swing.JLabel; import javax.swing.JPanel; +/** + * Navigation panel where it's shown the actual wizard step and former and following steps. + * @author Lorenz Buehmann + * + */ public class LeftPanel extends JPanel{ private static final long serialVersionUID = -1205252523136710091L; @@ -56,6 +61,10 @@ } + /** + * Sets the actual step, that has to be printed bold in the navigation panel. + * @param i number of the step + */ public void set(int i){ removeAll(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Main.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -26,9 +26,17 @@ import javax.swing.UnsupportedLookAndFeelException; - +/** + * Main class starting the wizard and registering wizard panels. + * @author Lorenz Buehmann + * + */ public class Main { + /** + * main method. + * @param args possible is to use OWL-File as parameter + */ public static void main(String[] args) { try { UIManager.setLookAndFeel( Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -21,8 +21,7 @@ package org.dllearner.tools.ore; import java.io.File; -import java.math.BigDecimal; -import java.util.ArrayList; +import java.net.MalformedURLException; import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -37,6 +36,7 @@ import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; +import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.KnowledgeSource; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblemUnsupportedException; @@ -54,7 +54,11 @@ import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.reasoning.OWLAPIReasoner; - +/** + * This class contains init methods, and is used as broker between wizard and OWL-API. + * @author Lorenz Buehmann + * + */ public class ORE { private LearningAlgorithm la; @@ -69,9 +73,9 @@ private SortedSet<Individual> posExamples; private SortedSet<Individual> negExamples; - private NamedClass ignoredConcept; - private Description newClassDescription; - private Set<NamedClass> allAtomicConcepts; + private NamedClass classToLearn; + private EvaluatedDescription newClassDescription; + private OntologyModifier modifier; @@ -89,12 +93,19 @@ // step 1: detect knowledge sources + /** + * Applying knowledge source. + */ public void setKnowledgeSource(File f) { - Class<OWLFile> owl = OWLFile.class; - ks = cm.knowledgeSource(owl); + ks = cm.knowledgeSource(OWLFile.class); - cm.applyConfigEntry(ks, "url", f.toURI().toString()); + try { + cm.applyConfigEntry(ks, "url", f.toURI().toURL()); + } catch (MalformedURLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } try { ks.init(); @@ -106,7 +117,9 @@ } - + /** + * Initialize the reasoners. + */ public void initReasoners(){ fastReasoner = cm.reasoner(FastInstanceChecker.class, ks); @@ -127,22 +140,24 @@ e.printStackTrace(); } rs = cm.reasoningService(fastReasoner); - modifier = new OntologyModifier(owlReasoner); + modifier = new OntologyModifier(owlReasoner, rs); baseURI = fastReasoner.getBaseURI(); prefixes = fastReasoner.getPrefixes(); } + /** + * Returns the reasoningservice. + * @return reasoning service + */ public ReasoningService getReasoningService(){ return rs; } - public SortedSet<Individual> getPosExamples(){ - return posExamples; - } + public void setPosNegExamples(){ - posExamples = rs.retrieval(ignoredConcept); + posExamples = rs.retrieval(classToLearn); negExamples = rs.getIndividuals(); for (Individual pos : posExamples){ @@ -150,16 +165,13 @@ } } - public SortedSet<Individual> getNegExamples(){ - return negExamples; - } - + public OntologyModifier getModifier() { return modifier; } - public Description getNewClassDescription() { + public EvaluatedDescription getNewClassDescription() { return newClassDescription; } @@ -200,7 +212,7 @@ Set<String> t = new TreeSet<String>(); - t.add(ignoredConcept.getName()); + t.add(classToLearn.getName()); cm.applyConfigEntry(la, "ignoredConcepts", t); cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 10); try { @@ -212,8 +224,12 @@ } - public void setConcept(NamedClass concept){ - this.ignoredConcept = concept; + /** + * Sets the class that has to be learned. + * @param oldClass class that is choosen to be (re)learned + */ + public void setClassToLearn(NamedClass oldClass){ + this.classToLearn = oldClass; } public void init(){ @@ -230,9 +246,13 @@ } - public LearningAlgorithm start(){ + /** + * Starts the learning algorithm, setting noise value and ignored concepts. + * + */ + public void start(){ Set<String> t = new TreeSet<String>(); - t.add(ignoredConcept.getName()); + t.add(classToLearn.getName()); cm.applyConfigEntry(la, "ignoredConcepts", t); cm.applyConfigEntry(la, "noisePercentage", noise); try { @@ -243,119 +263,10 @@ } la.start(); - return la; - } - - public List<Description> getLearningResults(int anzahl){ - return la.getCurrentlyBestDescriptions(anzahl, true); - } - - /** - * returns accuracy of a description - * @param d - * @return - */ - public BigDecimal computeAccuracy(Description d){ - int numberPosExamples = 0; - int numberNegExamples = 0; - double result_tmp = 0.0f; - for(Individual ind : posExamples){ - if(rs.instanceCheck(d, ind)) - numberPosExamples++; - } - for(Individual ind : negExamples){ - if(!rs.instanceCheck(d, ind)) - numberNegExamples++; - } - - result_tmp = ((float)(numberPosExamples) + (float)(numberNegExamples))/((float)(posExamples.size())+(float)(negExamples.size())) * 100; - BigDecimal result = new BigDecimal( result_tmp ); - result = result.setScale( 2, BigDecimal.ROUND_HALF_UP ); - return result; - - } - - public HashSet<Individual> getNegFailureExamples(){ - FastInstanceChecker instanceReasoner = cm.reasoner(FastInstanceChecker.class, ks); - try { - instanceReasoner.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - ReasoningService instanceRs = cm.reasoningService(instanceReasoner); - HashSet<Individual> negFailureExamples = new HashSet<Individual>() ; - - for(Individual ind : negExamples){ - if(instanceRs.instanceCheck(newClassDescription, ind)) - negFailureExamples.add(ind); - - } - - return negFailureExamples; - } - - public List<HashSet<Individual>> getFailureExamples(){ - List<HashSet<Individual>> list = new ArrayList<HashSet<Individual>>(); - - FastInstanceChecker instanceReasoner = cm.reasoner(FastInstanceChecker.class, ks); - try { - instanceReasoner.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - ReasoningService instanceRs = cm.reasoningService(instanceReasoner); - - HashSet<Individual> posFailureExamples = new HashSet<Individual>() ; - for(Individual ind : posExamples){ - if(!instanceRs.instanceCheck(newClassDescription, ind)) - posFailureExamples.add(ind); - } - - HashSet<Individual> negFailureExamples = new HashSet<Individual>() ; - for(Individual ind : negExamples){ - if(instanceRs.instanceCheck(newClassDescription, ind)) - negFailureExamples.add(ind); - } - - list.add(posFailureExamples); - list.add(negFailureExamples); - - - - return list; - - } - public HashSet<Individual> getPosFailureExamples(){ - FastInstanceChecker instanceReasoner = cm.reasoner(FastInstanceChecker.class, ks); - try { - instanceReasoner.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - ReasoningService instanceRs = cm.reasoningService(instanceReasoner); - - HashSet<Individual> posFailureExamples = new HashSet<Individual>() ; - - - for(Individual ind : posExamples){ - if(!instanceRs.instanceCheck(newClassDescription, ind)) - posFailureExamples.add(ind); - - } - - return posFailureExamples; - } - - public void setNewClassDescription(Description newClassDescription) { + public void setNewClassDescription(EvaluatedDescription newClassDescription) { this.newClassDescription = newClassDescription; } @@ -364,15 +275,13 @@ } public NamedClass getIgnoredConcept() { - return ignoredConcept; + return classToLearn; } - public void setAllAtomicConcepts(Set<NamedClass> allAtomicConcepts) { - this.allAtomicConcepts = allAtomicConcepts; - } + /** - * finds out description parts that might cause inconsistency - for negative examples only + * retrieves description parts that might cause inconsistency - for negative examples only * @param ind * @param desc * @return @@ -404,7 +313,7 @@ return criticals; } /** - * finds the description that might cause inconsistency for negative examples + * Retrieves the description parts, that might cause inconsistency - for negative examples. * @param ind * @param desc * @return vector of JLabel @@ -467,12 +376,12 @@ } /** - * finds the description that might cause inconsistency for positive examples + * Retrieves the description parts that might cause inconsistency - for positive examples. * @param ind * @param desc * @return vector of JLabel */ - public Collection<JLabel> DescriptionToJLabelPos(Individual ind, Description desc){ + public Collection<JLabel> descriptionToJLabelPos(Individual ind, Description desc){ Collection<JLabel> criticals = new Vector<JLabel>(); List<Description> children = desc.getChildren(); @@ -485,17 +394,17 @@ if(desc instanceof Union){ criticals.add(new JLabel("(")); for(int i = 0; i<children.size()-1; i++){ - criticals.addAll(DescriptionToJLabelPos(ind, desc.getChild(i))); + criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(i))); criticals.add(new JLabel("or")); } - criticals.addAll(DescriptionToJLabelPos(ind, desc.getChild(children.size()-1))); + criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(children.size()-1))); criticals.add(new JLabel(")")); } else if(desc instanceof Intersection){ criticals.add(new JLabel("(")); for(int i = 0; i<children.size()-1; i++){ if(!fastReasoner.instanceCheck(desc.getChild(i), ind)){ - criticals.addAll(DescriptionToJLabelPos(ind, desc.getChild(i))); + criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(i))); } else{ criticals.add(new JLabel(desc.getChild(i).toManchesterSyntaxString(baseURI, prefixes))); @@ -503,7 +412,7 @@ criticals.add(new JLabel("and")); } if(!fastReasoner.instanceCheck(desc.getChild(children.size()-1), ind)){ - criticals.addAll(DescriptionToJLabelPos(ind, desc.getChild(children.size()-1))); + criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(children.size()-1))); } else{ criticals.add(new JLabel(desc.getChild(children.size()-1).toManchesterSyntaxString(baseURI, prefixes))); @@ -529,7 +438,7 @@ } /** - * returns individuals that are in range of property + * Returns individuals that are in range of property. * @param objRestr * @param ind * @return @@ -543,7 +452,7 @@ } /** - * returns individuals that are not in range of property + * Returns individuals that are not in range of property. * @param objRestr * @param ind * @return @@ -569,6 +478,11 @@ return allIndividuals; } + /** + * Returns classes where individual might moved to. + * @param ind the individual + * @return set of classes + */ public Set<NamedClass> getpossibleClassesMoveTo(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); for(NamedClass nc : rs.getNamedClasses()){ @@ -576,11 +490,16 @@ moveClasses.add(nc); } } - moveClasses.remove(ignoredConcept); + moveClasses.remove(classToLearn); return moveClasses; } + /** + * Returns classes where individual might moved from. + * @param ind the individual + * @return set of classes + */ public Set<NamedClass> getpossibleClassesMoveFrom(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); for(NamedClass nc : rs.getNamedClasses()){ @@ -588,11 +507,14 @@ moveClasses.add(nc); } } - moveClasses.remove(ignoredConcept); + moveClasses.remove(classToLearn); return moveClasses; } + /** + * Update reasoners ontology. + */ public void updateReasoner(){ fastReasoner = cm.reasoner(FastInstanceChecker.class, new OWLAPIOntology(modifier.getOntology())); try { @@ -614,7 +536,7 @@ } /** - * get the complement classes where individual is asserted to + * Get the complement classes where individual is asserted to. * @param desc * @param ind * @return @@ -622,10 +544,11 @@ public Set<NamedClass> getComplements(Description desc, Individual ind){ Set<NamedClass> complements = new HashSet<NamedClass>(); for(NamedClass nc : owlReasoner.getAtomicConcepts()){ - - if(owlReasoner.instanceCheck(nc, ind)){ - if(modifier.isComplement(desc, nc)){ - complements.add(nc); + if(!(nc.toString().endsWith("Thing"))){ + if(owlReasoner.instanceCheck(nc, ind)){ + if(modifier.isComplement(desc, nc)){ + complements.add(nc); + } } } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -28,6 +28,7 @@ import java.util.List; import java.util.Set; +import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; @@ -66,24 +67,30 @@ import org.semanticweb.owl.model.UnknownOWLOntologyException; import org.semanticweb.owl.util.OWLEntityRemover; +/** + * This class provides several methods to modify the ontology by using OWL-API. + * @author Lorenz Buehmann + * + */ public class OntologyModifier { private OWLOntology ontology; private OWLAPIReasoner reasoner; private OWLDataFactory factory; private OWLOntologyManager manager; + private ReasoningService rs; - public OntologyModifier(OWLAPIReasoner reasoner){ + public OntologyModifier(OWLAPIReasoner reasoner, ReasoningService rs){ this.reasoner = reasoner; this.manager = OWLManager.createOWLOntologyManager(); this.factory = manager.getOWLDataFactory(); this.ontology = reasoner.getOWLAPIOntologies().get(0); - + this.rs = rs; } /** - * Adds an EquivalentClassesAxiom axiom to the ontology + * Adds an EquivalentClassesAxiom axiom to the ontology. * @param newDesc new axiom to add * @param oldDesc old description * @return @@ -113,11 +120,11 @@ } /** - * rewrite ontology by replacing old class with new learned class description + * Rewrite ontology by replacing old class with new learned class description. * @param newDesc * @param oldClass */ - public void rewriteClassDescription(Description newDesc, Description oldClass){ + public List<OWLOntologyChange> rewriteClassDescription(Description newDesc, Description oldClass){ OWLDescription newClassDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(newDesc); // OWLDescription oldClassDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(oldClass); @@ -150,10 +157,12 @@ e.printStackTrace(); } + return changes; + } /** - * saves the ontology as RDF-file + * Saves the ontology as RDF-file. */ public void saveOntology(){ @@ -173,7 +182,7 @@ } /** - * Deletes the complete individual from the ontology + * Deletes the complete individual from the ontology. * @param ind the individual to delete */ public List<OWLOntologyChange> deleteIndividual(Individual ind){ @@ -201,7 +210,7 @@ } /** - * Removes a classAssertion + * Removes a classAssertion. * @param ind the individual which has to removed from class * @param desc the class to which the individual is asserted * @return changes that have been done @@ -231,7 +240,7 @@ } /** - * adds a classAssertion + * Adds a classAssertion. * @param ind the individual which has to be asserted to class * @param desc the class to which the individual has to be asserted * @return changes that have been done @@ -264,7 +273,7 @@ } /** - * removes classAssertion between individual to a old class, and creates a new classAssertion + * Removes classAssertion between individual to a old class, and creates a new classAssertion. * @param ind individual which has to be moved * @param oldClass class where individual is asserted before * @param newClass class where individual is moved to @@ -304,7 +313,7 @@ } /** - * + * Removes all object property assertions with role, and it's inverse. * @param ind the individual which property has to be removed * @param objSome the property which has to be removed * @return changes that have been done @@ -321,22 +330,29 @@ OWLObjectPropertyExpression invProperty = null; - for(OWLInverseObjectPropertiesAxiom inv : invProperties) - if(propertyOWLAPI.equals(inv.getSecondProperty())) + for(OWLInverseObjectPropertiesAxiom inv : invProperties){ + if(propertyOWLAPI.equals(inv.getSecondProperty())){ invProperty = inv.getFirstProperty(); - else + } + else{ invProperty = inv.getSecondProperty(); + } + } List<RemoveAxiom> removeList = new LinkedList<RemoveAxiom>(); for(OWLObjectPropertyAssertionAxiom o :properties){ - if( (o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(individualOWLAPI))) + if( (o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(individualOWLAPI))){ removeList.add(new RemoveAxiom(ontology, o)); - if(invProperty != null) - for(OWLObjectPropertyAssertionAxiom ob :ontology.getObjectPropertyAssertionAxioms(o.getObject())) - if(ob.getProperty().equals(invProperty) && ob.getObject().equals(individualOWLAPI)) + } + if(invProperty != null){ + for(OWLObjectPropertyAssertionAxiom ob :ontology.getObjectPropertyAssertionAxioms(o.getObject())){ + if(ob.getProperty().equals(invProperty) && ob.getObject().equals(individualOWLAPI)){ removeList.add(new RemoveAxiom(ontology, ob)); + } + } + } } @@ -356,7 +372,7 @@ /** - * removes an object property assertion from the ontology if the axiom is existing in the ontology + * Removes an object property assertion from the ontology if the axiom is existing in the ontology. * @param subject * @param objSome * @param object @@ -396,7 +412,7 @@ } /** - * + * Adds an object property assertion to the ontology. * @param subInd the individual which is subject in the objectProperty * @param objSome the property which has to be added to subject * @param objInd the individual which is object in the objectProperty @@ -457,7 +473,7 @@ } /** - * checks whether desc1 and desc2 are complement of each other + * checks whether desc1 and desc2 are disjoint. * @param desc1 class 1 * @param desc2 class 2 * @return @@ -467,25 +483,35 @@ OWLClass owlClass1 = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc1).asOWLClass(); OWLClass owlClass2 = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc2).asOWLClass(); - //superclasses and class1 - Set<OWLDescription> superClasses1 = owlClass1.getSuperClasses(ontology); +// Set<OWLDescription> superClasses1 = owlClass1.getSuperClasses(ontology); + Set<OWLDescription> superClasses1 = new HashSet<OWLDescription>(); + for(Description d : rs.getMoreGeneralConcepts(desc1)){ + superClasses1.add(OWLAPIDescriptionConvertVisitor.getOWLDescription(d)); + } superClasses1.add(owlClass1); +// System.out.println(desc1 + "::" + superClasses1); //superclasses and class2 - Set<OWLDescription> superClasses2 = owlClass2.getSuperClasses(ontology); +// Set<OWLDescription> superClasses2 = owlClass2.getSuperClasses(ontology); + Set<OWLDescription> superClasses2 = new HashSet<OWLDescription>(); + for(Description d : rs.getMoreGeneralConcepts(desc2)){ + superClasses2.add(OWLAPIDescriptionConvertVisitor.getOWLDescription(d)); + } superClasses2.add(owlClass2); for(OWLAxiom ax : ontology.getAxioms()){ for(OWLDescription o1 : superClasses1){ + OWLDescription negO1 = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(new NamedClass(o1.toString()))); for(OWLDescription o2 : superClasses2){ +// System.out.println(o1 + " " + o2); OWLDescription negO2 = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(new NamedClass(o2.toString()))); - - if(ax.equals(factory.getOWLDisjointClassesAxiom(o1, o2))){ + System.out.println(factory.getOWLDisjointClassesAxiom(o1, o2)); + if(ax.toString().equals(factory.getOWLDisjointClassesAxiom(o1, o2).toString())){ return true; - }else if(ax.equals(factory.getOWLDisjointClassesAxiom(o2, o1))){ + }else if(ax.toString().equals(factory.getOWLDisjointClassesAxiom(o2, o1).toString())){ return true; }else if(ax.toString().equals(factory.getOWLEquivalentClassesAxiom(o1, negO2).toString())){ return true; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairDialog.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairDialog.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -54,6 +54,12 @@ import org.dllearner.core.owl.ObjectSomeRestriction; import org.semanticweb.owl.model.OWLOntologyChange; +/** + * The repair dialog where the learned class description (including error parts), + * the statistics and the undo options are shown. + * @author Lorenz Buehmann + * + */ public class RepairDialog extends JDialog implements ActionListener, MouseListener{ /** @@ -130,6 +136,10 @@ } + /** + * Initializing and making dialog visible. + * @return integer value + */ public int showDialog(){ baseURI = ore.getBaseURI(); prefixes = ore.getPrefixes(); @@ -200,6 +210,9 @@ } + /** + * Method controls action events triggered by clicking on red labels in class description at the top of the dialog. + */ public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof DescriptionMenuItem){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -28,15 +28,12 @@ import java.awt.Insets; import java.awt.event.ActionListener; import java.awt.event.MouseListener; -import java.awt.geom.Ellipse2D; -import java.awt.geom.RoundRectangle2D; import javax.swing.BorderFactory; import javax.swing.DefaultListModel; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JComponent; -import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; @@ -44,43 +41,37 @@ import javax.swing.border.TitledBorder; import javax.swing.event.ListSelectionListener; -import org.jdesktop.swingx.JXBusyLabel; -import org.jdesktop.swingx.icon.EmptyIcon; -import org.jdesktop.swingx.painter.BusyPainter; - +/** + * JPanel for repairing action. + * @author Lorenz Buehmann + * + */ public class RepairPanel extends JPanel{ private static final long serialVersionUID = -7411197973240429632L; private JPanel contentPanel; - private DefaultListModel posFailureModel; private DefaultListModel negFailureModel; - - private JLabel statusLabel; - private JXBusyLabel loadingLabel; - - - private JPanel posPanel; - private JList posList; private JScrollPane posScrollPane; - private JScrollPane negScrollPane; + private JList posList; + private JPanel posButtonPanel; private JButton pos_repairButton; private JButton pos_deleteButton; private JButton pos_removeButton; - private JPanel posButtonPanel; + + private JPanel negPanel; + private JScrollPane negScrollPane; + private JList negList; + private JPanel negButtonPanel; private JButton neg_repairButton; private JButton neg_deleteButton; private JButton neg_addButton; - private JPanel negButtonPanel; - private JList negList; - private JPanel negPanel; - @SuppressWarnings("unchecked") public RepairPanel() { super(); @@ -90,21 +81,7 @@ this.setLayout(new java.awt.BorderLayout()); JPanel labelPanel = new JPanel(); - statusLabel = new JLabel(); - - loadingLabel = new JXBusyLabel(new Dimension(15,15)); - BusyPainter painter = new BusyPainter( - new RoundRectangle2D.Float(0, 0,6.0f,2.6f,10.0f,10.0f), - new Ellipse2D.Float(2.0f,2.0f,11.0f,11.0f)); - painter.setTrailLength(2); - painter.setPoints(7); - painter.setFrame(-1); - loadingLabel.setPreferredSize(new Dimension(15,15)); - loadingLabel.setIcon(new EmptyIcon(15,15)); - loadingLabel.setBusyPainter(painter); - labelPanel.add(loadingLabel); - labelPanel.add(statusLabel); - + contentPanel = getContentPanel(); add(contentPanel,BorderLayout.CENTER); @@ -247,43 +224,51 @@ return contentPanel; } - - - public JLabel getStatusLabel() { - return statusLabel; - } - - public JXBusyLabel getLoadingLabel() { - return loadingLabel; - } - + /** + * Returns the list model for positive examples. + * @return list model + */ public DefaultListModel getPosFailureModel() { return posFailureModel; } + /** + * Returns the list model for negative examples. + * @return list model + */ public DefaultListModel getNegFailureModel() { return negFailureModel; } + /** + * Returns the list for positive examples. + * @return positive list + */ public javax.swing.JList getPosFailureList() { return posList; } + /** + * Returns the list for negative examples. + * @return negative list + */ public javax.swing.JList getNegFailureList() { return negList; } + /** + * adds the list selection listener for lists. + * @param l list selection listener + */ public void addSelectionListeners(ListSelectionListener l){ posList.addListSelectionListener(l); negList.addListSelectionListener(l); } - - public void addMouseListeners(MouseListener mL){ - posList.addMouseListener(mL); - negList.addMouseListener(mL); - } - + /** + * Adds the action listener to buttons. + * @param aL action listener + */ public void addActionListeners(ActionListener aL){ pos_removeButton.addActionListener(aL); pos_deleteButton.addActionListener(aL); @@ -293,6 +278,19 @@ neg_repairButton.addActionListener(aL); } + /** + * Adds mouse listener to lists. + * @param mL mouse listener + */ + public void addMouseListeners(MouseListener mL){ + posList.addMouseListener(mL); + negList.addMouseListener(mL); + } + + /** + * Sets custom cell renderer to the lists. + * @param ore + */ public void setCellRenderers(ORE ore){ ColorListCellRenderer cell = new ColorListCellRenderer(ore); posList.setCellRenderer(cell); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -27,6 +27,7 @@ import java.util.HashSet; import java.util.Set; +import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -36,7 +37,11 @@ - +/** + * Wizard panel descriptor where it is possible torepair wrong examples. + * @author Lorenz Buehmann + * + */ public class RepairPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener, MouseListener{ public static final String IDENTIFIER = "REPAIR_PANEL"; @@ -56,7 +61,7 @@ repairPanel.addActionListeners(this); repairPanel.addSelectionListeners(this); repairPanel.addMouseListeners(this); - + setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(repairPanel); ontologyChanges = new HashSet<OWLOntologyChange>(); @@ -79,23 +84,34 @@ getWizard().getInformationField().setText(INFORMATION); } - public void clearLists(){ - repairPanel.getNegFailureModel().clear(); - repairPanel.getPosFailureModel().clear(); + /** + * Adds the wrong negative and positive examples to the lists. + */ + public void refreshExampleLists(){ + this.ore = getWizardModel().getOre(); + repairPanel.setCellRenderers(ore); + + DefaultListModel negModel = repairPanel.getNegFailureModel(); + negModel.clear(); + for(Individual ind : ore.getNewClassDescription().getCoveredNegatives()){ + negModel.addElement(ind); + } + + DefaultListModel posModel = repairPanel.getPosFailureModel(); + posModel.clear(); + for(Individual ind : ore.getNewClassDescription().getNotCoveredPositives()){ + posModel.addElement(ind); + } + + } - - - public void valueChanged(ListSelectionEvent e) { - -// if (!e.getValueIsAdjusting()) -// System.err.println(panel4.getNegFailureList().getSelectedValue()); - - } - + /** + * Method to control actions by button pressed. + */ public void actionPerformed(ActionEvent event) { - ore = getWizardModel().getOre(); +// ore = getWizardModel().getOre(); modi = ore.getModifier(); String actionName = ((JButton)event.getSource()).getName(); String actionType = ((JButton)event.getSource()).getParent().getName(); @@ -152,6 +168,9 @@ } + /** + * Method provides repair action by double click on list element. + */ public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2){ @@ -186,22 +205,6 @@ } public void mouseEntered(MouseEvent e) { -// JList negList = repairPanel.getNegFailureList(); -// DefaultListModel negModel = repairPanel.getNegFailureModel(); -// if(e.getSource() instanceof JList){ -// int index = negList.locationToIndex(e.getPoint()); -// if (-1 < index) { -// Individual ind = (Individual)negModel.getElementAt(index); -// StringBuffer strBuf = new StringBuffer(); -// strBuf.append("<html><b><u>classes:</b></u><br><br><BLOCKQUOTE>"); -// -// for(NamedClass n: getWizardModel().getOre().reasoner2.getConcepts(ind)) -// strBuf.append("<br>" + n ); -// strBuf.append("</BLOCKQUOTE></html>"); -// negList.setToolTipText(strBuf.toString()); -// } -// } - } @@ -220,13 +223,20 @@ } - + /** + * Returns all ontology changes been done by repairing ontology. + * @return + */ public Set<OWLOntologyChange> getOntologyChanges() { return ontologyChanges; } + + @Override + public void valueChanged(ListSelectionEvent arg0) { + // TODO Auto-generated method stub + + } - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -1,3 +1,22 @@ +/** + * 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; import java.util.SortedSet; @@ -7,11 +26,17 @@ import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; import org.dllearner.utilities.learn.LearnSPARQLConfiguration; import org.dllearner.utilities.learn.LearnSparql; +/** + * Test class for SPARQL mode. + * @author Lorenz Buehmann + * + */ public class SPARQLTest{ public static void main(String[] args){ @@ -31,15 +56,17 @@ LearnSparql learn = new LearnSparql(conf); LearningAlgorithm la = null; -// try { -// la = learn.learn(posExamples, negExamples); -// } catch (ComponentInitException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (LearningProblemUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// la.start(); + + try { + la = learn.learn(posExamples, negExamples, OWLAPIReasoner.class); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (LearningProblemUnsupportedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + la.start(); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SavePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SavePanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SavePanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -25,7 +25,11 @@ import javax.swing.JButton; import javax.swing.JPanel; - +/** + * JPanel where to buttons are added to save and go back to class choose panel. + * @author Lorenz Buehmann + * + */ public class SavePanel extends JPanel{ /** @@ -43,6 +47,10 @@ add(saveGoBack); } + /** + * Adds the action listener to both buttons. + * @param aL action listener + */ public void addActionListeners(ActionListener aL){ saveExit.addActionListener(aL); saveGoBack.addActionListener(aL); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SavePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SavePanelDescriptor.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SavePanelDescriptor.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -23,6 +23,11 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +/** + * Wizard panel descriptor that provides saving ontology and going back to class choose panel. + * @author Lorenz Buehmann + * + */ public class SavePanelDescriptor extends WizardPanelDescriptor implements ActionListener{ public static final String IDENTIFIER = "SAVE_PANEL"; public static final String INFORMATION = "Press 'Save and exit' button to save the changes you made and exit the program, " + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-09-19 11:53:26 UTC (rev 1232) +++ trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-09-21 12:48:48 UTC (rev 1233) @@ -40,10 +40,13 @@ import org.jdesktop.swingx.JXTaskPane; import org.jdesktop.swingx.JXTaskPaneContainer; +/** + * Here are shown the name of the individual, class assertions and object properties of the individual which is selected to repair. + * @author Lorenz B... [truncated message content] |
From: <lor...@us...> - 2008-09-22 16:41:29
|
Revision: 1237 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1237&view=rev Author: lorenz_b Date: 2008-09-22 16:41:09 +0000 (Mon, 22 Sep 2008) Log Message: ----------- checkstyle Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparql.java trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/Main.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardModel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -42,10 +42,10 @@ private static final long serialVersionUID = -934113184795465461L; /** - * Constructor - * @param label - * @param changes - * @param mL + * Constructor. + * @param label labelname + * @param changes ontology changes + * @param mL mouse listener */ public ChangePanel(String label, List<OWLOntologyChange> changes, MouseListener mL){ super(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -37,6 +37,9 @@ private static final long serialVersionUID = -7538532926820669891L; + /** + * Constructor. + */ public ChangesPanel(){ super(); setLayout(new GridLayout(0, 1)); @@ -48,7 +51,7 @@ /** * Refresh the actual panel. - * @param cont + * @param cont gui container for changes */ public void updatePanel(Container cont){ remove(cont); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -53,6 +53,9 @@ private JXBusyLabel loadingLabel; private JLabel statusLabel; + /** + * Constructor. + */ @SuppressWarnings("unchecked") public ClassPanelOWL() { @@ -102,25 +105,43 @@ return contentPanel1; } + /** + * Returns list model for owl-classes. + * @return the list model + */ public DefaultListModel getModel(){ return model; } - + /** + * Adds list selection listener to atomic classes list. + * @param l the default list selection listener + */ public void addSelectionListener(ListSelectionListener l){ conceptList.addListSelectionListener(l); } - + + /** + * Returns the list where atomic owl classes are the list elements. + * @return instance of JList + */ public JList getList(){ return conceptList; } - + /** + * Returns the label which reports the loading status. + * @return instance of JLabel + */ public JLabel getStatusLabel() { return statusLabel; } + /** + * Returns the animated label for loading action. + * @return instance of JXBusyLabel + */ public JXBusyLabel getLoadingLabel() { return loadingLabel; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -21,8 +21,8 @@ package org.dllearner.tools.ore; import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; + import org.dllearner.core.owl.NamedClass; @@ -33,14 +33,23 @@ * @author Lorenz Buehmann * */ -public class ClassPanelOWLDescriptor extends WizardPanelDescriptor implements ListSelectionListener{ +public class ClassPanelOWLDescriptor extends WizardPanelDescriptor implements javax.swing.event.ListSelectionListener{ + /** + * Identification string for class choose panel. + */ public static final String IDENTIFIER = "CLASS_CHOOSE_OWL_PANEL"; - public static final String INFORMATION = "In this panel all atomic classes in the ontology are shown in the list above. " + - "Select one of them which should be (re)learned from, then press \"Next-Button\""; + /** + * Information string for class choose panel. + */ + public static final String INFORMATION = "In this panel all atomic classes in the ontology are shown in the list above. " + + "Select one of them which should be (re)learned from, then press \"Next-Button\""; private ClassPanelOWL owlClassPanel; + /** + * Constructor creates new panel and adds listener to list. + */ public ClassPanelOWLDescriptor() { owlClassPanel = new ClassPanelOWL(); owlClassPanel.addSelectionListener(this); @@ -66,12 +75,15 @@ setNextButtonAccordingToConceptSelected(); } - + /** + * Method is called when other element in list is selected, and sets next button enabled. + * @param e ListSelectionEvent + */ public void valueChanged(ListSelectionEvent e) { setNextButtonAccordingToConceptSelected(); - if (!e.getValueIsAdjusting()) - getWizardModel().getOre().setClassToLearn((NamedClass)owlClassPanel.getList().getSelectedValue()); - + if (!e.getValueIsAdjusting()) { + getWizardModel().getOre().setClassToLearn((NamedClass) owlClassPanel.getList().getSelectedValue()); + } } private void setNextButtonAccordingToConceptSelected() { @@ -83,7 +95,11 @@ } } - + + /** + * Returns the JPanel with the GUI elements. + * @return extended JPanel + */ public ClassPanelOWL getOwlClassPanel() { return owlClassPanel; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparql.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelSparql.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -56,15 +56,15 @@ statusLabel = new JLabel(); - loadingLabel = new JXBusyLabel(new Dimension(15,15)); + loadingLabel = new JXBusyLabel(new Dimension(15, 15)); BusyPainter painter = new BusyPainter( - new RoundRectangle2D.Float(0, 0,6.0f,2.6f,10.0f,10.0f), - new Ellipse2D.Float(2.0f,2.0f,11.0f,11.0f)); + new RoundRectangle2D.Float(0, 0, 6.0f, 2.6f, 10.0f, 10.0f), + new Ellipse2D.Float(2.0f, 2.0f, 11.0f, 11.0f)); painter.setTrailLength(2); painter.setPoints(7); painter.setFrame(-1); - loadingLabel.setPreferredSize(new Dimension(15,15)); - loadingLabel.setIcon(new EmptyIcon(15,15)); + loadingLabel.setPreferredSize(new Dimension(15, 15)); + loadingLabel.setIcon(new EmptyIcon(15, 15)); loadingLabel.setBusyPainter(painter); @@ -74,7 +74,7 @@ contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); - add(contentPanel,BorderLayout.CENTER); + add(contentPanel, BorderLayout.CENTER); add(labelPanel, BorderLayout.SOUTH); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -48,11 +48,11 @@ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - if(value instanceof NamedClass) - setText(((NamedClass)value).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); - else if(value instanceof Individual) - setText(((Individual)value).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); - + if(value instanceof NamedClass){ + setText(((NamedClass) value).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); + } else if(value instanceof Individual){ + setText(((Individual) value).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); + } Color background; Color foreground; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -61,11 +61,11 @@ desc.setText(((EvaluatedDescription) value).getDescription().toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); //round accuracy to 2 digits double accuracy = ((EvaluatedDescription) value).getAccuracy(); - BigDecimal roundedAccuracy = new BigDecimal( accuracy * 100 ); - roundedAccuracy = roundedAccuracy.setScale( 2, BigDecimal.ROUND_HALF_UP ); + BigDecimal roundedAccuracy = new BigDecimal(accuracy * 100); + roundedAccuracy = roundedAccuracy.setScale(2, BigDecimal.ROUND_HALF_UP); cor.setText(roundedAccuracy.toString()); - add(cor,new GridBagConstraints(0, 0, 1, 1, 0.1, 0.0, GridBagConstraints.LINE_END, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));//, BorderLayout.WEST); - add(desc,new GridBagConstraints(1, 0, 1, 1, 0.8, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));//, BorderLayout.EAST); + add(cor, new GridBagConstraints(0, 0, 1, 1, 0.1, 0.0, GridBagConstraints.LINE_END, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));//, BorderLayout.WEST); + add(desc, new GridBagConstraints(1, 0, 1, 1, 0.8, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));//, BorderLayout.EAST); Color background; Color foreground; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -95,7 +95,7 @@ baseURI = ore.getBaseURI(); prefixes = ore.getPrefixes(); - setText(((Description)desc).toManchesterSyntaxString(ore.getBaseURI(),ore.getPrefixes())); + setText(((Description) desc).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); menu = new JPopupMenu(); ToolTipManager.sharedInstance().setDismissDelay(7000); //negative example solutions @@ -103,22 +103,23 @@ if(!(desc instanceof Negation)){ if(desc instanceof NamedClass){ //1. description is a named class descriptionLabel = desc.toManchesterSyntaxString(baseURI, prefixes); - menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc) ); //1.a remove class assertion + menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc)); //1.a remove class assertion JMenu dme = new JMenu("move class assertion " + descriptionLabel + " to ..."); //1.b move individual for(NamedClass nc : ore.getpossibleClassesMoveTo(ind)){ - DescriptionMenuItem move = new DescriptionMenuItem(MOVE_TO_CLASS, nc.toManchesterSyntaxString(baseURI, prefixes), (NamedClass)desc); + DescriptionMenuItem move = new DescriptionMenuItem(MOVE_TO_CLASS, nc.toManchesterSyntaxString(baseURI, prefixes), (NamedClass) desc); move.setName(nc.toString()); dme.add(move); Set<NamedClass> complements = ore.getComplements(nc, ind); //check for complement error - if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(desc.toString())) ) ){ + if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(desc.toString())))){ move.setEnabled(false); StringBuffer strBuf = new StringBuffer(); - strBuf.append("<html>class assertion not possible because individual<br> " + - "is still asserted to its complements:<br><BLOCKQUOTE>"); + strBuf.append("<html>class assertion not possible because individual<br> " + + "is still asserted to its complements:<br><BLOCKQUOTE>"); - for(NamedClass n: complements) + for(NamedClass n: complements){ strBuf.append("<br><b>" + n + "</b>"); + } strBuf.append("</BLOCKQUOTE></html>"); @@ -126,27 +127,25 @@ } } menu.add(dme); - } - else if(desc instanceof ObjectSomeRestriction){ //2. description is a object some restriction - String propertyName = ((ObjectSomeRestriction)desc).getRole().toString(baseURI, prefixes); - String propertyRange = ((ObjectSomeRestriction)desc).getChild(0).toManchesterSyntaxString(baseURI, prefixes); + } else if(desc instanceof ObjectSomeRestriction){ //2. description is a object some restriction + String propertyName = ((ObjectSomeRestriction) desc).getRole().toString(baseURI, prefixes); + String propertyRange = ((ObjectSomeRestriction) desc).getChild(0).toManchesterSyntaxString(baseURI, prefixes); menu.add(new DescriptionMenuItem(DELETE_PROPERTY, propertyName , desc)); //2.a remove all property assertions - if (!(desc.getChild(0) instanceof Thing)) - menu.add(new DescriptionMenuItem(REMOVE_RANGE_PROPERTY,propertyRange , desc)); //2.b remove property assertions with objects in range - - } - else if(desc instanceof ObjectAllRestriction){ //3. description is a object all restriction + if (!(desc.getChild(0) instanceof Thing)){ + menu.add(new DescriptionMenuItem(REMOVE_RANGE_PROPERTY, propertyRange, desc)); //2.b remove property assertions with objects in range + } + } else if(desc instanceof ObjectAllRestriction){ //3. description is a object all restriction if (!(desc.getChild(0) instanceof Thing)) { JMenu dme = new JMenu("add property assertion " + ((ObjectAllRestriction) desc).getRole().toKBSyntaxString(baseURI, prefixes) //3.a add property assertion with object not in range + " with object ..."); - for (Individual i : ore.getIndividualsNotInPropertyRange((ObjectAllRestriction) desc, ind)) - dme.add(new DescriptionMenuItem(ADD_PROPERTY,i.toManchesterSyntaxString(baseURI, prefixes), desc)); - menu.add(dme); + for (Individual i : ore.getIndividualsNotInPropertyRange((ObjectAllRestriction) desc, ind)){ + dme.add(new DescriptionMenuItem(ADD_PROPERTY, i.toManchesterSyntaxString(baseURI, prefixes), desc)); + } + menu.add(dme); } } - } - else if(desc instanceof Negation){ + } else if(desc instanceof Negation){ if(desc.getChild(0) instanceof NamedClass){ //4. description is a negated named class DescriptionMenuItem addItem = new DescriptionMenuItem(ADD_CLASS, desc.getChild(0).toManchesterSyntaxString(baseURI, prefixes), desc.getChild(0)); menu.add(addItem); //4.a add class assertion @@ -154,11 +153,12 @@ if(!complements.isEmpty()){ addItem.setEnabled(false); StringBuffer strBuf = new StringBuffer(); - strBuf.append("<html>class assertion not possible because individual<br> " + - "is still asserted to its complements:<br><BLOCKQUOTE>"); + strBuf.append("<html>class assertion not possible because individual<br> " + + "is still asserted to its complements:<br><BLOCKQUOTE>"); - for(NamedClass n: complements) + for(NamedClass n: complements){ strBuf.append("<br><b>" + n + "</b>"); + } strBuf.append("</BLOCKQUOTE></html>"); @@ -166,9 +166,7 @@ } } } - } - //positive example solutions - else if(mode.equals("pos")){ + } else if(mode.equals("pos")){//positive example solutions if(!(desc instanceof Negation)){ if(desc instanceof NamedClass){ DescriptionMenuItem add = new DescriptionMenuItem(ADD_CLASS, desc.toManchesterSyntaxString(baseURI, prefixes), desc); @@ -176,11 +174,12 @@ if(!(complements.isEmpty())){ add.setEnabled(false); StringBuffer strBuf = new StringBuffer(); - strBuf.append("<html>class assertion not possible because individual<br> " + - "is still asserted to its complements:<br><BLOCKQUOTE>"); + strBuf.append("<html>class assertion not possible because individual<br> " + + "is still asserted to its complements:<br><BLOCKQUOTE>"); - for(NamedClass n: complements) + for(NamedClass n: complements){ strBuf.append("<br><b>" + n + "</b>"); + } strBuf.append("</BLOCKQUOTE></html>"); @@ -192,18 +191,19 @@ if(moveClasses.size() > 0){ JMenu move = new JMenu("move to " + desc.toManchesterSyntaxString(baseURI, prefixes) + " from ..."); for (NamedClass m : moveClasses){System.out.println("hier" + m); - DescriptionMenuItem item = new DescriptionMenuItem(MOVE_FROM_CLASS,m.toManchesterSyntaxString(baseURI, prefixes), desc); + DescriptionMenuItem item = new DescriptionMenuItem(MOVE_FROM_CLASS, m.toManchesterSyntaxString(baseURI, prefixes), desc); item.setName(m.toString()); move.add(item); if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(m.toString())))){ move.setEnabled(false); StringBuffer strBuf = new StringBuffer(); - strBuf.append("<html>moving class is not possible because individual<br> " + - "is still asserted to its complements:<br><BLOCKQUOTE>"); + strBuf.append("<html>moving class is not possible because individual<br> " + + "is still asserted to its complements:<br><BLOCKQUOTE>"); - for(NamedClass n: complements) + for(NamedClass n: complements){ strBuf.append("<br><b>" + n + "</b>"); + } strBuf.append("</BLOCKQUOTE></html>"); @@ -215,31 +215,28 @@ } - } - else if(desc instanceof ObjectSomeRestriction){ + } else if(desc instanceof ObjectSomeRestriction){ JMenu dme = new JMenu("add property assertion " + ((ObjectSomeRestriction) desc).getRole() + " with object ..."); - for (Individual i : ore.getIndividualsInPropertyRange((ObjectSomeRestriction) desc, ind)) - dme.add(new DescriptionMenuItem(ADD_PROPERTY,i.toManchesterSyntaxString(baseURI, prefixes), desc)); - menu.add(dme); + for (Individual i : ore.getIndividualsInPropertyRange((ObjectSomeRestriction) desc, ind)){ + dme.add(new DescriptionMenuItem(ADD_PROPERTY, i.toManchesterSyntaxString(baseURI, prefixes), desc)); + } + menu.add(dme); - } - else if(desc instanceof ObjectAllRestriction){ + } else if(desc instanceof ObjectAllRestriction){ if (!(desc.getChild(0) instanceof Thing)) { - menu.add(new DescriptionMenuItem(REMOVE_NOT_RANGE_PROPERTY,((ObjectAllRestriction) desc).getChild(0).toString(baseURI, prefixes), desc)); - menu.add(new DescriptionMenuItem(DELETE_PROPERTY,((ObjectAllRestriction) desc).getRole().toString(baseURI, prefixes), desc)); + menu.add(new DescriptionMenuItem(REMOVE_NOT_RANGE_PROPERTY, ((ObjectAllRestriction) desc).getChild(0).toString(baseURI, prefixes), desc)); + menu.add(new DescriptionMenuItem(DELETE_PROPERTY, ((ObjectAllRestriction) desc).getRole().toString(baseURI, prefixes), desc)); } } } - } - - else if(desc instanceof Negation){ + } else if(desc instanceof Negation){ if(desc.getChild(0) instanceof NamedClass){ descriptionLabel = desc.toManchesterSyntaxString(baseURI, prefixes); - menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc) ); + menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc)); } } } @@ -247,6 +244,7 @@ /** * returns actual description. + * @return desc Description */ public Description getDescription(){ return desc; @@ -254,15 +252,17 @@ /** * adds action listeners to menu items. - * @param aL + * @param aL ActionListener */ public void addActionListeners(ActionListener aL){ for(Component c : menu.getComponents()){ - if(c instanceof DescriptionMenuItem) - ((DescriptionMenuItem)c).addActionListener(aL); - else if(c instanceof JMenu) - for( int i = 0; i < ((JMenu)c).getItemCount(); i++) - ((JMenu)c).getItem(i).addActionListener(aL); + if(c instanceof DescriptionMenuItem){ + ((DescriptionMenuItem) c).addActionListener(aL); + } else if(c instanceof JMenu){ + for(int i = 0; i < ((JMenu) c).getItemCount(); i++){ + ((JMenu) c).getItem(i).addActionListener(aL); + } + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -41,22 +41,23 @@ public DescriptionMenuItem(int action, String text, Description d){ super(); - if(action == 3) + if(action == 3){ setText("remove class assertion to " + text); - else if(action == 0) + } else if(action == 0){ setText(text); - else if(action == 2) + } else if(action == 2){ setText("add class assertion to " + text); - else if(action == 4) + } else if(action == 4){ setText(text); - else if(action == 6) + } else if(action == 6){ setText("delete complete property " + text); - else if(action == 5) + }else if(action == 5){ setText("remove all property assertions to " + text); - else if(action == 7) + } else if(action == 7){ setText("remove all property assertions with range not in " + text); - else if(action == 1) + } else if(action == 1){ setText(text); + } this.desc = d; this.action = action; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -66,22 +66,21 @@ add(jL); if(jL instanceof DescriptionLabel){ - ((DescriptionLabel)jL).setIndOre(ore, ind); - ((DescriptionLabel)jL).init(); - ((DescriptionLabel)jL).addActionListeners(aL); + ((DescriptionLabel) jL).setIndOre(ore, ind); + ((DescriptionLabel) jL).init(); + ((DescriptionLabel) jL).addActionListeners(aL); } } - } - else if(mode.equals("pos")){ + } else if(mode.equals("pos")){ for(JLabel jL : ore.descriptionToJLabelPos(ind, newClassDescription)){ add(jL); if(jL instanceof DescriptionLabel){ - ((DescriptionLabel)jL).setIndOre(ore, ind); - ((DescriptionLabel)jL).init(); - ((DescriptionLabel)jL).addActionListeners(aL); + ((DescriptionLabel) jL).setIndOre(ore, ind); + ((DescriptionLabel) jL).init(); + ((DescriptionLabel) jL).addActionListeners(aL); } @@ -93,10 +92,11 @@ * Updates the panel. */ public void updatePanel(){ - for(Component c : getComponents()) - if(c instanceof JLabel) + for(Component c : getComponents()){ + if(c instanceof JLabel){ remove(c); - + } + } ore.updateReasoner(); correct = true; if (mode.equals("neg")) { @@ -110,8 +110,7 @@ } } - } - else if(mode.equals("pos")){ + } else if(mode.equals("pos")){ for (JLabel jL : ore.descriptionToJLabelPos(ind, newClassDescription)) { add(jL); if (jL instanceof DescriptionLabel) { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -84,12 +84,12 @@ instructionsField.setEditable(false); instructionsField.setLineWrap(true); instructionsField.setRows(5); - instructionsField.setFont(new Font("Serif",Font.PLAIN,14)); - instructionsField.setText("This is an test of a wizard dialog, which allows a knowledge engineer to select " + - "a class of an ontology which should be (re)learned.\n" + - "On the next page, choose a OWL file or a SPARQL-URL, that contains an ontology. After that " + - "you might be able to select a class in the ontology to learn. When the class you selected is learned" + - ", you are able to add the axiom to the ontology and after all you might be able to repair if necessary. " ); + instructionsField.setFont(new Font("Serif", Font.PLAIN, 14)); + instructionsField.setText("This is an test of a wizard dialog, which allows a knowledge engineer to select " + + "a class of an ontology which should be (re)learned.\n" + + "On the next page, choose a OWL file or a SPARQL-URL, that contains an ontology. After that " + + "you might be able to select a class in the ontology to learn. When the class you selected is learned" + + ", you are able to add the axiom to the ontology and after all you might be able to repair if necessary. "); instructionsField.setWrapStyleWord(true); jScrollPane1.setViewportView(instructionsField); @@ -99,7 +99,7 @@ welcomeTitle.setText("Welcome to the DL-Learner ORE-Tool!"); contentPanel1.add(welcomeTitle, java.awt.BorderLayout.NORTH); - jPanel1.setLayout(new java.awt.GridLayout(0, 1,0,0)); + jPanel1.setLayout(new java.awt.GridLayout(0, 1, 0, 0)); jPanel1.add(jScrollPane1); contentPanel1.add(jPanel1, java.awt.BorderLayout.CENTER); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -151,7 +151,7 @@ .addComponent(sparqlMessage)); - contentPanel1.setLayout(new GridLayout(0,1)); + contentPanel1.setLayout(new GridLayout(0, 1)); contentPanel1.add(buttonPanel); contentPanel1.add(owlPanel); contentPanel1.add(sparqlPanel); @@ -177,28 +177,33 @@ filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY); String choosenPath = fileURL.getText(); - if(!choosenPath.equals("") && (new File(choosenPath)).exists()) + if(!choosenPath.equals("") && (new File(choosenPath)).exists()){ filechooser.setCurrentDirectory(new File(fileURL.getText())); + } filechooser.addChoosableFileFilter(new FileFilter() { @Override public boolean accept(File f) { - if (f.isDirectory()) return true; + if(f.isDirectory()){ + return true; + } return f.getName().toLowerCase().endsWith(".owl"); } @Override - public String getDescription () { return "OWLs"; } + public String getDescription(){ + return "OWLs"; + } }); - int status = filechooser.showOpenDialog( null ); + int status = filechooser.showOpenDialog(null); - if ( status == JFileChooser.APPROVE_OPTION ){ + if (status == JFileChooser.APPROVE_OPTION){ String strURL = filechooser.getSelectedFile().getAbsolutePath(); fileURL.setText(strURL); - }else{ - System.out.println( "Auswahl abgebrochen" ); + } else{ + System.out.println("Auswahl abgebrochen"); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -52,10 +52,11 @@ @Override public Object getNextPanelDescriptor() { - if(getWizard().getKnowledgeSourceType() == 0) + if(getWizard().getKnowledgeSourceType() == 0){ return ClassPanelOWLDescriptor.IDENTIFIER; - else + } else{ return ClassPanelSparqlDescriptor.IDENTIFIER; + } } @Override @@ -72,6 +73,7 @@ /** * Actions for buttons. + * @param e ActionListener */ public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -86,15 +86,15 @@ JPanel statusPanel = new JPanel(); statusLabel = new JLabel(); - loadingLabel = new JXBusyLabel(new Dimension(15,15)); + loadingLabel = new JXBusyLabel(new Dimension(15, 15)); BusyPainter<Object> painter = new BusyPainter<Object>( - new RoundRectangle2D.Float(0, 0,6.0f,2.6f,10.0f,10.0f), - new Ellipse2D.Float(2.0f,2.0f,11.0f,11.0f)); + new RoundRectangle2D.Float(0, 0, 6.0f, 2.6f, 10.0f, 10.0f), + new Ellipse2D.Float(2.0f, 2.0f, 11.0f, 11.0f)); painter.setTrailLength(2); painter.setPoints(7); painter.setFrame(-1); - loadingLabel.setPreferredSize(new Dimension(15,15)); - loadingLabel.setIcon(new EmptyIcon(15,15)); + loadingLabel.setPreferredSize(new Dimension(15, 15)); + loadingLabel.setIcon(new EmptyIcon(15, 15)); loadingLabel.setBusyPainter(painter); statusPanel.add(loadingLabel); statusPanel.add(statusLabel); @@ -102,7 +102,7 @@ contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); - add(contentPanel,BorderLayout.CENTER); + add(contentPanel, BorderLayout.CENTER); add(statusPanel, BorderLayout.SOUTH); { buttonSliderPanel = new JPanel(); @@ -145,10 +145,10 @@ noiseSlider.setMajorTickSpacing(10); noiseSlider.setMinorTickSpacing(5); Dictionary<Integer, JLabel> map = new Hashtable<Integer, JLabel>(); - map.put( new Integer(0), new JLabel("0%") ); - map.put( new Integer(50), new JLabel("50%") ); - map.put( new Integer(100),new JLabel("100%") ); - noiseSlider.setLabelTable( map ); + map.put(new Integer(0), new JLabel("0%")); + map.put(new Integer(50), new JLabel("50%")); + map.put(new Integer(100), new JLabel("100%")); + noiseSlider.setLabelTable(map); noiseSlider.setPaintLabels(true); noisePanel.add(noiseSlider); } @@ -162,7 +162,7 @@ listPanel = new JPanel(); GridBagLayout jPanel1Layout = new GridBagLayout(); jPanel1Layout.rowWeights = new double[] {0.0, 0.5}; - jPanel1Layout.rowHeights = new int[] {16,400}; + jPanel1Layout.rowHeights = new int[] {16, 400}; jPanel1Layout.columnWeights = new double[] {0.0, 0.5}; jPanel1Layout.columnWidths = new int[] {50, 700}; listPanel.setLayout(jPanel1Layout); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -46,8 +46,8 @@ public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener{ public static final String IDENTIFIER = "LEARNING_PANEL"; - public static final String INFORMATION = "In this panel you can start the learning algorithm. While it ist running, " + - "temporary results are shown in the list above. Select one of them and press Next"; + public static final String INFORMATION = "In this panel you can start the learning algorithm. While it ist running, " + + "temporary results are shown in the list above. Select one of them and press Next"; private LearningPanel learnPanel; private LearnSwingWorker worker; @@ -105,6 +105,7 @@ /** * Actions for pressing start- or stop-button. + * @param event */ public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ @@ -113,8 +114,7 @@ learnPanel.getStopButton().setEnabled(true); worker = new LearnSwingWorker(); worker.execute(); - } - else{ + } else{ learnPanel.getStopButton().setEnabled(false); la.stop(); @@ -177,7 +177,7 @@ */ class LearnSwingWorker extends SwingWorker<List<EvaluatedDescription>, List<EvaluatedDescription>> { - Thread t; + private Thread t; @SuppressWarnings("unchecked") @Override @@ -255,7 +255,7 @@ } } - void updateList(final List<EvaluatedDescription> result) { + private void updateList(final List<EvaluatedDescription> result) { Runnable doUpdateList = new Runnable() { @@ -275,9 +275,7 @@ SwingUtilities.invokeLater(doUpdateList); } - + - - } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -38,13 +38,17 @@ private static final long serialVersionUID = -1205252523136710091L; private JLabel[] jLabel; + /** + * Constructor instantiating JLabels with wizard step names. + * @param i step number printed bold + */ public LeftPanel(int i){ jLabel = new JLabel[6]; setBackground(new java.awt.Color(255, 255, 255)); JPanel panel2 = new JPanel(); panel2.setBackground(new java.awt.Color(255, 255, 255)); - panel2.setLayout(new GridLayout(5,1,0,10)); + panel2.setLayout(new GridLayout(5, 1, 0, 10)); jLabel[0] = new JLabel("1. Introduction"); jLabel[1] = new JLabel("2. Knowledge Source"); jLabel[2] = new JLabel("3. Choose Class"); @@ -53,10 +57,11 @@ jLabel[5] = new JLabel("6. Save/Exit"); jLabel[i].setFont(jLabel[i].getFont().deriveFont(Font.BOLD)); - for(JLabel current : jLabel) - panel2.add(current); + for(JLabel current : jLabel){ + panel2.add(current); + } setLayout(new BorderLayout()); - setPreferredSize(new Dimension(140,500)); + setPreferredSize(new Dimension(140, 500)); add(panel2, BorderLayout.NORTH); } @@ -71,7 +76,7 @@ setBackground(new java.awt.Color(255, 255, 255)); JPanel panel2 = new JPanel(); panel2.setBackground(new java.awt.Color(255, 255, 255)); - panel2.setLayout(new GridLayout(6,1,0,10)); + panel2.setLayout(new GridLayout(6, 1, 0, 10)); jLabel[0] = new JLabel("1. Introduction"); jLabel[1] = new JLabel("2. Knowledge Source"); jLabel[2] = new JLabel("3. Choose Class"); @@ -81,8 +86,9 @@ jLabel[i].setFont(jLabel[i].getFont().deriveFont(Font.BOLD)); - for(JLabel current : jLabel) - panel2.add(current); + for(JLabel current : jLabel){ + panel2.add(current); + } setLayout(new BorderLayout()); add(panel2, BorderLayout.NORTH); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Main.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -80,10 +80,10 @@ WizardPanelDescriptor descriptor7 = new SavePanelDescriptor(); wizard.registerWizardPanel(SavePanelDescriptor.IDENTIFIER, descriptor7); - if ( !(args.length == 1)){ + if (!(args.length == 1)){ wizard.setCurrentPanel(IntroductionPanelDescriptor.IDENTIFIER); - }else{ - ((KnowledgeSourcePanelDescriptor)descriptor2).getPanel().setFileURL(args[0]); + } else{ + ((KnowledgeSourcePanelDescriptor) descriptor2).getPanel().setFileURL(args[0]); wizard.setCurrentPanel(KnowledgeSourcePanelDescriptor.IDENTIFIER); wizard.setLeftPanel(1); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -281,7 +281,7 @@ /** - * retrieves description parts that might cause inconsistency - for negative examples only + * Retrieves description parts that might cause inconsistency - for negative examples only. * @param ind * @param desc * @return @@ -296,18 +296,19 @@ if(children.size() >= 2){ if(desc instanceof Intersection){ - for(Description d: children) + for(Description d: children){ criticals.addAll(getNegCriticalDescriptions(ind, d)); - - } - else if(desc instanceof Union){ - for(Description d: children) - if(owlReasoner.instanceCheck(d, ind)) + } + } else if(desc instanceof Union){ + for(Description d: children){ + if(owlReasoner.instanceCheck(d, ind)){ criticals.addAll(getNegCriticalDescriptions(ind, d)); + } + } } - } - else + } else{ criticals.add(desc); + } } return criticals; @@ -337,36 +338,32 @@ } criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(children.size()-1))); criticals.add(new JLabel(")")); - } - else if(desc instanceof Union){ + } else if(desc instanceof Union){ criticals.add(new JLabel("(")); for(int i = 0; i<children.size()-1; i++){ if(fastReasoner.instanceCheck(desc.getChild(i), ind)){ criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(i))); - } - else{ + } else{ criticals.add(new JLabel(desc.getChild(i).toManchesterSyntaxString(baseURI, prefixes))); } criticals.add(new JLabel("or")); } if(fastReasoner.instanceCheck(desc.getChild(children.size()-1), ind)){ criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(children.size()-1))); - } - else{ + } else{ criticals.add(new JLabel(desc.getChild(children.size()-1).toManchesterSyntaxString(baseURI, prefixes))); } criticals.add(new JLabel(")")); } - } - else{ + } else{ criticals.add(new DescriptionLabel(desc, "neg")); } - } - else + } else{ criticals.add(new JLabel(desc.toManchesterSyntaxString(baseURI, prefixes))); + } } catch (ReasoningMethodUnsupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -399,36 +396,29 @@ } criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(children.size()-1))); criticals.add(new JLabel(")")); - } - else if(desc instanceof Intersection){ + } else if(desc instanceof Intersection){ criticals.add(new JLabel("(")); for(int i = 0; i<children.size()-1; i++){ if(!fastReasoner.instanceCheck(desc.getChild(i), ind)){ criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(i))); - } - else{ + } else{ criticals.add(new JLabel(desc.getChild(i).toManchesterSyntaxString(baseURI, prefixes))); } criticals.add(new JLabel("and")); } if(!fastReasoner.instanceCheck(desc.getChild(children.size()-1), ind)){ criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(children.size()-1))); - } - else{ + } else{ criticals.add(new JLabel(desc.getChild(children.size()-1).toManchesterSyntaxString(baseURI, prefixes))); } criticals.add(new JLabel(")")); - - } - } - else{ - + } else{ criticals.add(new DescriptionLabel(desc, "pos")); } - } - else + } else{ criticals.add(new JLabel(desc.toManchesterSyntaxString(baseURI, prefixes))); + } } catch (ReasoningMethodUnsupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -523,7 +513,7 @@ // TODO Auto-generated catch block e.printStackTrace(); } - owlReasoner = cm.reasoner(OWLAPIReasoner.class,new OWLAPIOntology(modifier.getOntology())); + owlReasoner = cm.reasoner(OWLAPIReasoner.class, new OWLAPIOntology(modifier.getOntology())); try { owlReasoner.init(); @@ -552,6 +542,7 @@ } } } + System.out.println(complements); return complements; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -189,7 +189,7 @@ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); - OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); + OWLIndividual individualOWLAPI = factory.getOWLIndividual(URI.create(ind.getName())); OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); @@ -219,7 +219,7 @@ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); - OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); + OWLIndividual individualOWLAPI = factory.getOWLIndividual(URI.create(ind.getName())); OWLDescription owlDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); OWLClassAssertionAxiom owlCl = factory.getOWLClassAssertionAxiom(individualOWLAPI, owlDesc); @@ -249,7 +249,7 @@ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); - OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); + OWLIndividual individualOWLAPI = factory.getOWLIndividual(URI.create(ind.getName())); OWLDescription owlDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); OWLClassAssertionAxiom owlCl = factory.getOWLClassAssertionAxiom(individualOWLAPI, owlDesc); @@ -283,7 +283,7 @@ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); - OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); + OWLIndividual individualOWLAPI = factory.getOWLIndividual(URI.create(ind.getName())); //Loeschen OWLDescription oldDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(oldClass); @@ -300,7 +300,8 @@ try { - manager.applyChanges(changes);saveOntology(); + manager.applyChanges(changes); + saveOntology(); return changes; } catch (OWLOntologyChangeException e) { @@ -322,7 +323,7 @@ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); - OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); + OWLIndividual individualOWLAPI = factory.getOWLIndividual(URI.create(ind.getName())); OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(individualOWLAPI); @@ -333,8 +334,7 @@ for(OWLInverseObjectPropertiesAxiom inv : invProperties){ if(propertyOWLAPI.equals(inv.getSecondProperty())){ invProperty = inv.getFirstProperty(); - } - else{ + } else{ invProperty = inv.getSecondProperty(); } } @@ -343,7 +343,7 @@ List<RemoveAxiom> removeList = new LinkedList<RemoveAxiom>(); for(OWLObjectPropertyAssertionAxiom o :properties){ - if( (o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(individualOWLAPI))){ + if((o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(individualOWLAPI))){ removeList.add(new RemoveAxiom(ontology, o)); } if(invProperty != null){ @@ -382,16 +382,19 @@ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); - OWLIndividual subjectOWLAPI = factory.getOWLIndividual( URI.create(subject.getName())); - OWLIndividual objectOWLAPI = factory.getOWLIndividual( URI.create(object.getName())); + OWLIndividual subjectOWLAPI = factory.getOWLIndividual(URI.create(subject.getName())); + OWLIndividual objectOWLAPI = factory.getOWLIndividual(URI.create(object.getName())); OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(subjectOWLAPI); RemoveAxiom remove = null; - for(OWLObjectPropertyAssertionAxiom o :properties) - if( (o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(subjectOWLAPI)) && (o.getObject().equals(objectOWLAPI))) + for(OWLObjectPropertyAssertionAxiom o :properties){ + if((o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(subjectOWLAPI)) && (o.getObject().equals(objectOWLAPI))){ remove = new RemoveAxiom(ontology, o); + } + } + changes.add(remove); @@ -422,8 +425,8 @@ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); - OWLIndividual subjectOWLAPI = factory.getOWLIndividual( URI.create(subInd.getName())); - OWLIndividual objectOWLAPI = factory.getOWLIndividual( URI.create(objInd.getName())); + OWLIndividual subjectOWLAPI = factory.getOWLIndividual(URI.create(subInd.getName())); + OWLIndividual objectOWLAPI = factory.getOWLIndividual(URI.create(objInd.getName())); OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); OWLObjectPropertyAssertionAxiom objAssertion = factory.getOWLObjectPropertyAssertionAxiom(subjectOWLAPI, propertyOWLAPI, objectOWLAPI); @@ -443,7 +446,7 @@ /** - * undo changes of type {@link OWLOntologyChange} + * undo changes of type {@link OWLOntologyChange}. * @param changes */ public void undoChanges(Collection<OWLOntologyChange> changes){ @@ -457,8 +460,7 @@ } catch (OWLOntologyChangeException e) { e.printStackTrace(); } - } - else if(change instanceof AddAxiom){ + } else if(change instanceof AddAxiom){ RemoveAxiom remove = new RemoveAxiom(ontology, change.getAxiom()); try { manager.applyChange(remove); @@ -508,7 +510,7 @@ for(OWLDescription o2 : superClasses2){ // System.out.println(o1 + " " + o2); OWLDescription negO2 = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(new NamedClass(o2.toString()))); - System.out.println(factory.getOWLDisjointClassesAxiom(o1, o2)); +// System.out.println(factory.getOWLDisjointClassesAxiom(o1, o2)); if(ax.toString().equals(factory.getOWLDisjointClassesAxiom(o1, o2).toString())){ return true; }else if(ax.toString().equals(factory.getOWLDisjointClassesAxiom(o2, o1).toString())){ @@ -530,7 +532,7 @@ } /** - * returns object properties for an individual + * Returns object properties for an individual. * @param ind * @return */ @@ -549,7 +551,7 @@ } /** - * returns the actual ontology + * Returns the actual ontology. * @return ontology */ public OWLOntology getOntology() { @@ -558,7 +560,7 @@ /** - * prints reasons for inconsistent classes + * Prints reasons for inconsistent classes. */ public void reason(){ // reasoner.getInconsistencyReasons(ontology); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairDialog.java 2008-09-22 14:50:35 UTC (rev 1236) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairDialog.java 2008-09-22 16:41:09 UTC (rev 1237) @@ -76,8 +76,8 @@ private StatsPanel statsPanel; private DescriptionPanel descPanel; - private JPanel ok_cancelPanel; - private JPanel action_stats_Panel; + private JPanel okCancelPanel; + private JPanel actionStatsPanel; private ChangesPanel changesPanel; private JScrollPane changesScroll; @@ -103,7 +103,7 @@ setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { - if(allChanges.size() > 0 ){ + if(allChanges.size() > 0){ if (JOptionPane.showConfirmDialog(dialogd, "All changes will be lost!", "Warning!", JOptionPane.YES_NO_OPTION) @@ -116,8 +116,7 @@ setVisible(false); dispose(); } - } - else{ + } else{ returncode = CANCEL_RETURN_CODE; setVisible(false); dispose(); @@ -143,10 +142,11 @@ public int showDialog(){ baseURI = ore.getBaseURI(); prefixes = ore.getPrefixes(); - if(mode.equals("neg")) + if(mode.equals("neg")){ this.setTitle("Repair negative example"); - else if(mode.equals("pos")) + } else if(mode.equals("pos")){ this.setTitle("Repair positive example"); + } this.setSize(700, 700); this.setLayout(new BorderLayout()); @@ -164,43 +164,43 @@ changesScroll = new JScrollPane(); changesScroll.setViewportView(changesPanel); - action_stats_Panel = new JPanel(); + actionStatsPanel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); gbl.rowWeights = new double[] {0.0, 0.1, 0.1}; gbl.rowHeights = new int[] {64, 7, 7}; gbl.columnWeights = new double[] {0.1}; gbl.columnWidths = new int[] {7}; - action_stats_Panel.setLayout(gbl); + actionStatsPanel.setLayout(gbl); - action_stats_Panel.add(descScroll, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); - action_stats_Panel.add(statsScroll, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); - action_stats_Panel.add(changesScroll, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); + 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(statsScroll, 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)); JSeparator separator = new JSeparator(); Box buttonBox = new Box(BoxLayout.X_AXIS); - ok_cancelPanel = new JPanel(); - ok_cancelPanel.setLayout(new BorderLayout()); - ok_cancelPanel.add(separator, BorderLayout.NORTH); + okCancelPanel = new JPanel(); + okCancelPanel.setLayout(new BorderLayout()); + okCancelPanel.add(separator, BorderLayout.NORTH); okButton = new JButton("Ok"); okButton.addActionListener(this); cancelButton = new JButton("Cancel"); cancelButton.addActionListener(this); - getContentPane().add(action_stats_Panel, java.awt.BorderLayout.CENTER); + getContentPane().add(actionStatsPanel, java.awt.BorderLayout.CENTER); buttonBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10))); buttonBox.add(okButton); buttonBox.add(Box.createHorizontalStrut(10)); buttonBox.add(cancelButton); - ok_cancelPanel.add(buttonBox, BorderLayout.EAST); + okCancelPanel.add(buttonBox, BorderLayout.EAST); - getContentPane().add(ok_cancelPanel, BorderLayout.SOUTH); + getContentPane().add(okCancelPanel, BorderLayout.SOUTH); this.setModal(true); @@ -216,24 +216,23 @@ public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof DescriptionMenuItem){ - DescriptionMenuItem item =(DescriptionMenuItem)e.getSource(); + DescriptionMenuItem item =(DescriptionMenuItem) e.getSource(); actualDesc = item.getDescription(); int action = item.getActionID(); if(action == 4){ Individual obj = new Individual(e.getActionCommand()); - List<OWLOntologyChange> changes = modifier.addObjectProperty(ind, (ObjectQuantorRestriction)actualDesc, obj); + List<OWLOntologyChange> changes = modifier.addObjectProperty(ind, (ObjectQuantorRestriction) actualDesc, obj); allChanges.addAll(changes); descPanel.updatePanel(); statsPanel.updatePanel(); - changesPanel.add(new ChangePanel("added property assertion " + ((ObjectQuantorRestriction)actualDesc).getRole().toKBSyntaxString(baseURI, prefixes) + changesPanel.add(new ChangePanel("added property assertion " + ((ObjectQuantorRestriction) actualDesc).getRole().toKBSyntaxString(baseURI, prefixes) + " to " + obj.toManchesterSyntaxString(baseURI, prefixes), changes, this)); changesScroll.updateUI(); - } - else if(action == 5){ - ObjectQuantorRestriction property = (ObjectQuantorRestriction)actualDesc; + } else if(action == 5){ + ObjectQuantorRestriction property = (ObjectQuantorRestriction) actualDesc; List<OWLOntologyChange> changes = null; for(Individual i : ore.getIndividualsInPropertyRange(property, ind)){ changes = modifier.removeObjectPropertyAssertion(ind, property, i); @@ -242,47 +241,42 @@ descPanel.updatePanel(); statsPanel.updatePanel(); - changesPanel.add(new ChangePanel("removed property assertions " + - ((ObjectSomeRestriction)actualDesc).getRole().toKBSyntaxString(baseURI, prefixes) + - " to range " + ((ObjectSomeRestriction)actualDesc).getChild(0).toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesPanel.add(new ChangePanel("removed property assertions " + + ((ObjectSomeRestriction) actualDesc).getRole().toKBSyntaxString(baseURI, prefixes) + + " to range " + ((ObjectSomeRestriction) actualDesc).getChild(0).toManchesterSyntaxString(baseURI, prefixes), changes, this)); changesScroll.updateUI(); - } - else if(action == 6){ - List<OWLOntologyChange> changes = modifier.deleteObjectProperty(ind, (ObjectQuantorRestriction)actualDesc); + } else if(action == 6){ + List<OWLOntologyChange> changes = modifier.deleteObjectProperty(ind, (ObjectQuantorRestriction) actualDesc); allChanges.addAll(changes); descPanel.updatePanel(); statsPanel.updatePanel(); - changesPanel.add(new ChangePanel("deleted property " + ((ObjectQuantorRestriction)actualDesc).getRole().toKBSyntaxString(baseURI, prefixes), changes, this)); + changesPanel.add(new ChangePanel("deleted property " + ((ObjectQuantorRestriction) actualDesc).getRole().toKBSyntaxString(baseURI, prefixes), changes, this)); changesScroll.updateUI(); - } - else if(action == 0){ + } else if(action == 0){ newDesc = new NamedClass(item.getName()); List<OWLOntologyChange> changes = modifier.moveIndividual(ind, actualDesc, newDesc); allChanges.addAll(changes); descPanel.updatePanel(); statsPanel.updatePanel(); - changesPanel.add(new ChangePanel("moved class assertion from " + actualDesc.toManchesterSyntaxString(baseURI, prefixes) + - " to " + newDesc.toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesPanel.add(new ChangePanel("moved class assertion from " + actualDesc.toManchesterSyntaxString(baseURI, prefixes) + + " to " + newDesc.toManchesterSyntaxString(baseURI, prefixes), changes, this)); changesScroll.updateUI(); - } - else if(action == 3){ + } else if(action == 3){ List<OWLOntologyChange> changes = modifier.removeClassAssertion(ind, actualDesc); allChanges.addAll(changes); descPanel.updatePanel(); statsPanel.updatePanel(); changesPanel.add(new ChangePanel("removed class assertion to " + actualDesc.toManchesterSyntaxString(baseURI, prefixes), changes, this)); changesScroll.updateUI(); - } - else if(action == 2){ + } else if(action == 2){ List<OWLOntologyChange> changes = modifier.addClassAssertion(ind, actualDesc); allChanges.addAll(changes); descPanel.updatePanel(); statsPanel.updatePanel(); changesPanel.add(new ChangePanel("added class assertion to " + actualDesc.toManchesterSyntaxString(baseURI, prefixes), changes, this)); changesScroll.updateUI(); - } - else if(action == 7){ - ObjectQuantorRestriction property = (ObjectQuantorRestriction)actualDesc; + } else if(action == 7){ + ObjectQuantorRestriction property = (ObjectQuantorRestriction) actualDesc; List<OWLOntologyChange> changes = null; for(Individual i : ore.getIndividualsNotInPropertyRange(property, ind)){ changes = modifier.removeObjectPropertyAssertion(ind, property, i); @@ -292,39 +286,30 @@ descPanel.updatePanel(); statsPanel.updatePanel(); - changesPanel.add(new ChangePanel("removed property assertion " + property.getRole().toKBSyntaxString(baseURI, prefixes) + - " to " + ind.toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesPanel.add(new ChangePanel("removed property assertion " + property.getRole().toKBSyntaxString(baseURI, prefixes) + + " to " + ind.toManchesterSyntaxString(baseURI, prefixes), changes, this)); changesScroll.updateUI(); - } - else if(action == 1){ + } else if(action == 1){ Description oldDesc = new NamedClass(item.getName()); List<OWLO... [truncated message content] |
From: <lor...@us...> - 2008-09-22 17:17:59
|
Revision: 1238 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1238&view=rev Author: lorenz_b Date: 2008-09-22 17:17:49 +0000 (Mon, 22 Sep 2008) Log Message: ----------- improved performance of disjoint check Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-09-22 16:41:09 UTC (rev 1237) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-09-22 17:17:49 UTC (rev 1238) @@ -74,7 +74,7 @@ private Map<String, String> prefixes; /** - * constructor + * constructor. * * @param d * @param mode Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-09-22 16:41:09 UTC (rev 1237) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-09-22 17:17:49 UTC (rev 1238) @@ -532,6 +532,7 @@ * @return */ public Set<NamedClass> getComplements(Description desc, Individual ind){ +// System.out.println("----------------" + desc + "---------------"); Set<NamedClass> complements = new HashSet<NamedClass>(); for(NamedClass nc : owlReasoner.getAtomicConcepts()){ if(!(nc.toString().endsWith("Thing"))){ @@ -542,7 +543,7 @@ } } } - System.out.println(complements); +// System.out.println("Disjunkt sind: " + complements); return complements; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-09-22 16:41:09 UTC (rev 1237) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-09-22 17:17:49 UTC (rev 1238) @@ -488,8 +488,8 @@ //superclasses and class1 // Set<OWLDescription> superClasses1 = owlClass1.getSuperClasses(ontology); Set<OWLDescription> superClasses1 = new HashSet<OWLDescription>(); - for(Description d : rs.getMoreGeneralConcepts(desc1)){ - superClasses1.add(OWLAPIDescriptionConvertVisitor.getOWLDescription(d)); + for(Description d1 : rs.getMoreGeneralConcepts(desc1)){ + superClasses1.add(OWLAPIDescriptionConvertVisitor.getOWLDescription(d1)); } superClasses1.add(owlClass1); // System.out.println(desc1 + "::" + superClasses1); @@ -497,33 +497,54 @@ //superclasses and class2 // Set<OWLDescription> superClasses2 = owlClass2.getSuperClasses(ontology); Set<OWLDescription> superClasses2 = new HashSet<OWLDescription>(); - for(Description d : rs.getMoreGeneralConcepts(desc2)){ - superClasses2.add(OWLAPIDescriptionConvertVisitor.getOWLDescription(d)); + for(Description d2 : rs.getMoreGeneralConcepts(desc2)){ + superClasses2.add(OWLAPIDescriptionConvertVisitor.getOWLDescription(d2)); } superClasses2.add(owlClass2); - for(OWLAxiom ax : ontology.getAxioms()){ +// System.out.println("superklassen von " + desc2 + " sind: " + superClasses2); + for(OWLDescription o1 : superClasses1){ - for(OWLDescription o1 : superClasses1){ + OWLDescription negO1 = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(new NamedClass(o1.toString()))); + for(OWLDescription o2 : superClasses2){ + + OWLDescription negO2 = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(new NamedClass(o2.toString()))); - OWLDescription negO1 = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(new NamedClass(o1.toString()))); - for(OWLDescription o2 : superClasses2){ -// System.out.println(o1 + " " + o2); - OWLDescription negO2 = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(new NamedClass(o2.toString()))); -// System.out.println(factory.getOWLDisjointClassesAxiom(o1, o2)); - if(ax.toString().equals(factory.getOWLDisjointClassesAxiom(o1, o2).toString())){ - return true; - }else if(ax.toString().equals(factory.getOWLDisjointClassesAxiom(o2, o1).toString())){ - return true; - }else if(ax.toString().equals(factory.getOWLEquivalentClassesAxiom(o1, negO2).toString())){ - return true; - }else if(ax.toString().equals(factory.getOWLEquivalentClassesAxiom(o2, negO1).toString())){ - return true; - } + if(ontology.containsAxiom(factory.getOWLDisjointClassesAxiom(o1, o2))){ + return true; + }else if(ontology.containsAxiom(factory.getOWLDisjointClassesAxiom(o2, o1))){ + return true; + }else if(ontology.containsAxiom(factory.getOWLEquivalentClassesAxiom(o1, negO2))){ + return true; + }else if(ontology.containsAxiom(factory.getOWLEquivalentClassesAxiom(o2, negO1))){ + return true; } - } + } + +// for(OWLAxiom ax : ontology.getAxioms()){ +// +// for(OWLDescription o1 : superClasses1){ +// +// OWLDescription negO1 = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(new NamedClass(o1.toString()))); +// for(OWLDescription o2 : superClasses2){ +// +// OWLDescription negO2 = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(new NamedClass(o2.toString()))); +// +// if(ax.toString().equals(factory.getOWLDisjointClassesAxiom(o1, o2).toString())){ +// return true; +// }else if(ax.toString().equals(factory.getOWLDisjointClassesAxiom(o2, o1).toString())){ +// return true; +// }else if(ax.toString().equals(factory.getOWLEquivalentClassesAxiom(o1, negO2).toString())){ +// return true; +// }else if(ax.toString().equals(factory.getOWLEquivalentClassesAxiom(o2, negO1).toString())){ +// return true; +// } +// } +// +// } +// } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-12-01 11:24:18
|
Revision: 1540 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1540&view=rev Author: lorenz_b Date: 2008-12-01 11:24:10 +0000 (Mon, 01 Dec 2008) Log Message: ----------- fixed failures caused by reasoning updates Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-12-01 07:40:08 UTC (rev 1539) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -61,6 +61,7 @@ desc.setText(((EvaluatedDescription) value).getDescription().toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); //round accuracy to 2 digits double accuracy = ((EvaluatedDescription) value).getAccuracy(); + BigDecimal roundedAccuracy = new BigDecimal(accuracy * 100); roundedAccuracy = roundedAccuracy.setScale(2, BigDecimal.ROUND_HALF_UP); cor.setText(roundedAccuracy.toString()); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -0,0 +1,102 @@ +package org.dllearner.tools.ore; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URI; +import java.util.Set; + +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLException; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; + +import com.clarkparsia.explanation.PelletExplanation; +import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; + + +public class ExplanationTest { + +// private static final String file = "file:examples/ore/inconsistent.owl"; + private static final String file = "file:examples/ore/buggyPolicy.owl"; + private static final String NS = "http://cohse.semanticweb.org/ontologies/people#"; + + /** + * @param args + */ + public static void main(String[] args) { + + try { + PelletExplanation.setup(); + + // The renderer is used to pretty print explanation + ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); + // The writer used for the explanation rendered + PrintWriter out = new PrintWriter( System.out ); + renderer.startRendering( out ); + + // Create an OWLAPI manager that allows to load an ontology file and + // create OWLEntities + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntology( URI.create( file ) ); + OWLDataFactory factory = manager.getOWLDataFactory(); + + // Create the reasoner and load the ontology + Reasoner reasoner = new Reasoner( manager ); + reasoner.loadOntology( ontology ); + + // Create an explanation generator + PelletExplanation expGen = new PelletExplanation( reasoner ); + + // Create some concepts + OWLClass madCow = factory.getOWLClass( URI.create( NS + "mad+cow" ) ); + OWLClass animalLover = factory.getOWLClass( URI.create( NS + "animal+lover" ) ); + OWLClass petOwner = factory.getOWLClass( URI.create( NS + "pet+owner" ) ); + + //Explain why ontology is inconsistent + out.println( "Why is ontology inconsistent?" ); + renderer.render(expGen.getInconsistencyExplanations()); + + out.println( "unsatisfiable classes:" ); + for(OWLClass cl : reasoner.getClasses()){ + if(!reasoner.isSatisfiable(cl)){ + out.println(cl); + renderer.render(expGen.getUnsatisfiableExplanations(cl)); + } + } + + + + + // Explain why mad cow is an unsatisfiable concept + Set<Set<OWLAxiom>> exp = expGen.getUnsatisfiableExplanations( madCow ); + out.println( "Why is " + madCow + " concept unsatisfiable?" ); + renderer.render( exp ); + + // Now explain why animal lover is a sub class of pet owner + exp = expGen.getSubClassExplanations( animalLover, petOwner ); + out.println( "Why is " + animalLover + " subclass of " + petOwner + "?" ); + renderer.render( exp ); + + renderer.endRendering(); + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (UnsupportedOperationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } +} + + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-12-01 07:40:08 UTC (rev 1539) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -66,8 +66,8 @@ private PosNegDefinitionLP lp; private ComponentManager cm; - private FastInstanceChecker fastReasoner; - private OWLAPIReasoner owlReasoner; + private ReasonerComponent fastReasoner; + private ReasonerComponent owlReasoner; private SortedSet<Individual> posExamples; private SortedSet<Individual> negExamples; @@ -85,9 +85,9 @@ public ORE() { - + cm = ComponentManager.getInstance(); - + } // step 1: detect knowledge sources @@ -141,7 +141,7 @@ modifier = new OntologyModifier(owlReasoner, rs); baseURI = fastReasoner.getBaseURI(); prefixes = fastReasoner.getPrefixes(); - + } /** @@ -155,9 +155,10 @@ public void setPosNegExamples(){ - posExamples = rs.getIndividuals(classToLearn); - negExamples = rs.getIndividuals(); + posExamples = owlReasoner.getIndividuals(classToLearn); + negExamples = owlReasoner.getIndividuals(); + for (Individual pos : posExamples){ negExamples.remove(pos); } @@ -182,11 +183,11 @@ return prefixes; } - public OWLAPIReasoner getOwlReasoner() { + public ReasonerComponent getOwlReasoner() { return owlReasoner; } - public FastInstanceChecker getFastReasoner() { + public ReasonerComponent getFastReasoner() { return fastReasoner; } @@ -470,8 +471,8 @@ */ public Set<NamedClass> getpossibleClassesMoveTo(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : rs.getNamedClasses()){ - if(!rs.hasType(nc, ind)){ + for(NamedClass nc : owlReasoner.getNamedClasses()){ + if(!owlReasoner.hasType(nc, ind)){ moveClasses.add(nc); } } @@ -487,8 +488,8 @@ */ public Set<NamedClass> getpossibleClassesMoveFrom(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : rs.getNamedClasses()){ - if(rs.hasType(nc, ind)){ + for(NamedClass nc : owlReasoner.getNamedClasses()){ + if(owlReasoner.hasType(nc, ind)){ moveClasses.add(nc); } } @@ -541,9 +542,34 @@ return complements; } + + + + public static void main(String[] args){ + final ORE test = new ORE(); + + File owlFile1 = new File("examples/ore/people+pets.owl"); + File owlFile2 = new File("examples/ore/inconsistent.owl"); + File owlFile3 = new File("examples/ore/incohaerent.owl"); + + test.setKnowledgeSource(owlFile1); + test.initReasoners(); + System.out.println(test.owlReasoner.isSatisfiable()); + + test.setKnowledgeSource(owlFile2); + test.initReasoners(); + System.out.println(test.owlReasoner.isSatisfiable()); + + test.setKnowledgeSource(owlFile3); + test.initReasoners(); + System.out.println(test.owlReasoner.isSatisfiable()); + + + + + } } - // public static void main(String[] args){ // // final ORE test = new ORE(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-12-01 07:40:08 UTC (rev 1539) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -75,17 +75,17 @@ public class OntologyModifier { private OWLOntology ontology; - private OWLAPIReasoner reasoner; + private ReasonerComponent reasoner; private OWLDataFactory factory; private OWLOntologyManager manager; private ReasonerComponent rs; - public OntologyModifier(OWLAPIReasoner reasoner, ReasonerComponent rs){ + public OntologyModifier(ReasonerComponent reasoner, ReasonerComponent rs){ this.reasoner = reasoner; this.manager = OWLManager.createOWLOntologyManager(); this.factory = manager.getOWLDataFactory(); - this.ontology = reasoner.getOWLAPIOntologies().get(0); + this.ontology = ((OWLAPIReasoner)reasoner).getOWLAPIOntologies().get(0); this.rs = rs; } @@ -595,7 +595,7 @@ } OWLDebugger debugger = new BlackBoxOWLDebugger(manager, ontology, checker); - for(OWLClass owlClass : reasoner.getInconsistentOWLClasses()){ + for(OWLClass owlClass : ((OWLAPIReasoner)reasoner).getInconsistentOWLClasses()){ /* Find the sets of support and print them */ Set<Set<OWLAxiom>> allsos = null; try { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-12-01 07:40:08 UTC (rev 1539) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-12-01 11:24:10 UTC (rev 1540) @@ -282,8 +282,8 @@ wizard.getModel().getOre().initReasoners(); - Set<NamedClass> ind = wizard.getModel().getOre() - .getReasonerComponent().getNamedClasses(); + Set<NamedClass> ind = wizard.getModel().getOre().getOwlReasoner().getNamedClasses(); + return ind; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-04-02 08:49:25
|
Revision: 1680 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1680&view=rev Author: lorenz_b Date: 2009-04-02 08:49:20 +0000 (Thu, 02 Apr 2009) Log Message: ----------- added classes used to compute precise explanations Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BaseDescriptionGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BetaGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BottomTester.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TauGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TopTester.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BaseDescriptionGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BaseDescriptionGenerator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BaseDescriptionGenerator.java 2009-04-02 08:49:20 UTC (rev 1680) @@ -0,0 +1,266 @@ + +package org.dllearner.tools.ore.explanation; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataAllRestriction; +import org.semanticweb.owl.model.OWLDataExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDataMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataPropertyExpression; +import org.semanticweb.owl.model.OWLDataRange; +import org.semanticweb.owl.model.OWLDataSomeRestriction; +import org.semanticweb.owl.model.OWLDataValueRestriction; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLDescriptionVisitorEx; +import org.semanticweb.owl.model.OWLIndividual; +import org.semanticweb.owl.model.OWLObjectAllRestriction; +import org.semanticweb.owl.model.OWLObjectExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectIntersectionOf; +import org.semanticweb.owl.model.OWLObjectOneOf; +import org.semanticweb.owl.model.OWLObjectPropertyExpression; +import org.semanticweb.owl.model.OWLObjectSelfRestriction; +import org.semanticweb.owl.model.OWLObjectSomeRestriction; +import org.semanticweb.owl.model.OWLObjectUnionOf; +import org.semanticweb.owl.model.OWLObjectValueRestriction; + + + +public abstract class BaseDescriptionGenerator + implements OWLDescriptionVisitorEx<Set<OWLDescription>> +{ + private OWLDataFactory factory; + private static TopTester topChecker = new TopTester(); + private static BottomTester bottomChecker = new BottomTester(); + + public BaseDescriptionGenerator(OWLDataFactory factory) + { + this.factory = factory; + } + + public boolean isThing(OWLDescription description) + { + return ((Boolean)description.accept(topChecker)).booleanValue(); + } + + public boolean isNothing(OWLDescription description) + { + return ((Boolean)description.accept(bottomChecker)).booleanValue(); + } + + public OWLDataFactory getDataFactory() + { + return factory; + } + + public Set<OWLDescription> computeTau(OWLDescription desc) + { + TauGenerator gen = new TauGenerator(factory); + return desc.accept(gen); + } + + public Set<OWLDescription> computeBeta(OWLDescription desc) + { + BetaGenerator gen = new BetaGenerator(factory); + return (Set<OWLDescription>)desc.accept(gen); + } + + private Set<Set<OWLDescription>> computeReplacements(Set<OWLDescription> operands) + {System.out.println("Eingabe : " + operands); + Set<List<OWLDescription>> ps = new HashSet<List<OWLDescription>>(); + ps.add(new ArrayList()); + + for(OWLDescription op : operands) + { + Set<List<OWLDescription>> pscopy = new HashSet<List<OWLDescription>>(ps); + + for(OWLDescription d : (Set<OWLDescription>)op.accept(this)) { + for(List<OWLDescription> pselement : pscopy) { + ArrayList<OWLDescription> union = new ArrayList<OWLDescription>(); + union.addAll(pselement); + union.add(d); + ps.remove(pselement); + ps.add(union); + } + } + } + + Set<Set<OWLDescription>> result = new HashSet<Set<OWLDescription>>(); + + for(List<OWLDescription> desc : ps ){ + result.add(new HashSet<OWLDescription>(desc)); + }System.out.println("Ergebnis : " + result); + return result; + } + + public Set<OWLDescription> visit(OWLObjectIntersectionOf desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + Set<Set<OWLDescription>> conjunctions = computeReplacements(desc.getOperands()); + for(Set<OWLDescription> conjuncts : conjunctions){ + + for(OWLDescription conjunct : conjuncts){ + if(isThing(conjunct)){ + conjuncts.remove(conjunct); + } + } + + if(conjuncts.isEmpty()) + descs.add(factory.getOWLThing()); + else + if(conjuncts.size() != 1) + descs.add(factory.getOWLObjectIntersectionOf(conjuncts)); + else + descs.addAll(conjuncts); + } + + descs.add(getLimit()); + return descs; + } + + public Set<OWLDescription> visit(OWLObjectUnionOf desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + Set<Set<OWLDescription>> disjunctions = computeReplacements(desc.getOperands()); + for(Set<OWLDescription> disjuncts : disjunctions){ + + for(OWLDescription disjunct : disjuncts){ + if(isNothing(disjunct)){ + disjuncts.remove(disjunct); + } + } + if(disjuncts.size() != 1){ + descs.add(factory.getOWLObjectUnionOf(disjuncts)); + } else{ +// descs.add(disjuncts.iterator().next()); + descs.addAll(disjuncts); + } + } + + descs.add(getLimit()); + return descs; + } + + public Set<OWLDescription> visit(OWLObjectSomeRestriction desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + descs.add(desc); + for(OWLDescription filler : desc.getFiller().accept(this)){ + if(!isNothing(filler)) + descs.add(factory.getOWLObjectSomeRestriction((OWLObjectPropertyExpression)desc.getProperty(), filler)); + } + descs.add(getLimit()); + return descs; + } + + public Set<OWLDescription> visit(OWLObjectAllRestriction desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + + for(OWLDescription filler : desc.getFiller().accept(this)){ + if(!isThing(filler)) + descs.add(factory.getOWLObjectAllRestriction((OWLObjectPropertyExpression)desc.getProperty(), filler)); + } + descs.add(getLimit()); + return descs; + } + + public Set<OWLDescription> visit(OWLObjectValueRestriction desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + descs.add(desc); + + for(OWLDescription filler : factory.getOWLObjectOneOf(new OWLIndividual[] {(OWLIndividual)desc.getValue()}).accept(this)){ + descs.add(factory.getOWLObjectSomeRestriction((OWLObjectPropertyExpression)desc.getProperty(), filler)); + } + + + descs.add(getLimit()); + return descs; + } + + public Set<OWLDescription> visit(OWLObjectExactCardinalityRestriction desc) + { + Set<OWLDescription> result = new HashSet<OWLDescription>(); + OWLDescription min = getDataFactory().getOWLObjectMinCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), desc.getCardinality(), (OWLDescription)desc.getFiller()); + result.addAll(min.accept(this)); + OWLDescription max = getDataFactory().getOWLObjectMaxCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), desc.getCardinality(), (OWLDescription)desc.getFiller()); + result.addAll(max.accept(this)); + result.add(getLimit()); + return result; + } + + public Set<OWLDescription> visit(OWLObjectSelfRestriction desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + descs.add(desc); + descs.add(getLimit()); + return descs; + } + + public Set<OWLDescription> visit(OWLObjectOneOf desc) + { + Set<OWLDescription> ops = new HashSet<OWLDescription>(); + if(desc.getIndividuals().size() == 1) + { + ops.add(desc); + ops.add(getLimit()); + return ops; + } + + for(OWLIndividual ind : desc.getIndividuals()){ + ops.add(factory.getOWLObjectOneOf(new OWLIndividual[] {ind})); + } + + OWLDescription rewrite = factory.getOWLObjectUnionOf(ops); + return rewrite.accept(this); + } + + protected abstract OWLClass getLimit(); + + protected abstract OWLDataRange getDataLimit(); + + public Set<OWLDescription> visit(OWLDataSomeRestriction desc) + { + return Collections.singleton((OWLDescription)desc); + } + + public Set<OWLDescription> visit(OWLDataAllRestriction desc) + { + return Collections.singleton((OWLDescription)desc); + } + + public Set<OWLDescription> visit(OWLDataValueRestriction desc) + { + Set<OWLDescription> result = new HashSet<OWLDescription>(2); + result.add(desc); + result.add(getDataFactory().getOWLDataSomeRestriction((OWLDataPropertyExpression)desc.getProperty(), getDataLimit())); + return result; + } + + public Set<OWLDescription> visit(OWLDataMinCardinalityRestriction desc) + { + return Collections.singleton((OWLDescription)desc); + } + + public Set<OWLDescription> visit(OWLDataExactCardinalityRestriction desc) + { + return Collections.singleton((OWLDescription)desc); + } + + public Set<OWLDescription> visit(OWLDataMaxCardinalityRestriction desc) + { + return Collections.singleton((OWLDescription)desc); + } + + + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BetaGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BetaGenerator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BetaGenerator.java 2009-04-02 08:49:20 UTC (rev 1680) @@ -0,0 +1,115 @@ + + +package org.dllearner.tools.ore.explanation; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDataRange; +import org.semanticweb.owl.model.OWLDataValueRestriction; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLObjectComplementOf; +import org.semanticweb.owl.model.OWLObjectExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectPropertyExpression; +import org.semanticweb.owl.model.OWLObjectUnionOf; + + + +public class BetaGenerator extends BaseDescriptionGenerator +{ + + public BetaGenerator(OWLDataFactory factory) + { + super(factory); + } + + public Set<OWLDescription> visit(OWLClass desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(3); + descs.add(desc); + descs.add(getDataFactory().getOWLNothing()); + return descs; + } + + public Set<OWLDescription> visit(OWLObjectComplementOf desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + + for(OWLDescription d : computeTau(desc.getOperand())){ + descs.add(getDataFactory().getOWLObjectComplementOf(d)); + } + + return descs; + } + + protected Set<OWLDescription> compute(OWLDescription description) + { + return computeBeta(description); + } + + public Set<OWLDescription> visit(OWLObjectMaxCardinalityRestriction desc) + { + Set<OWLDescription> fillers = computeTau(desc.getFiller()); + Set<OWLDescription> result = new HashSet<OWLDescription>(); + for(int n = desc.getCardinality(); n > 0; n--) + { + for(OWLDescription filler : fillers){ + result.add(getDataFactory().getOWLObjectMinCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), n, filler)); + } + } + + result.add(getLimit()); + return result; + } + + public Set<OWLDescription> visit(OWLObjectExactCardinalityRestriction desc) + { + Set<OWLDescription> fillers = computeBeta((OWLDescription)desc.getFiller()); + Set<OWLDescription> result = new HashSet<OWLDescription>(); + + for(OWLDescription filler : fillers){ + result.add(getDataFactory().getOWLObjectExactCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), desc.getCardinality(), filler)); + } + result.add(getLimit()); + return result; + } + + public Set<OWLDescription> visit(OWLObjectUnionOf desc) + { + return super.visit(desc); + } + + public Set<OWLDescription> visit(OWLObjectMinCardinalityRestriction desc) + { + Set<OWLDescription> fillers = computeBeta((OWLDescription)desc.getFiller()); + Set<OWLDescription> result = new HashSet<OWLDescription>(); + + for(OWLDescription filler : fillers){ + result.add(getDataFactory().getOWLObjectMinCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), desc.getCardinality(), filler)); + } + result.add(getLimit()); + return result; + } + + protected OWLClass getLimit() + { + return getDataFactory().getOWLNothing(); + } + + protected OWLDataRange getDataLimit() + { + return getDataFactory().getOWLDataComplementOf(getDataFactory().getTopDataType()); + } + + public Set<OWLDescription> visit(OWLDataValueRestriction desc) + { + return Collections.singleton((OWLDescription)desc); + } + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BottomTester.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BottomTester.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/BottomTester.java 2009-04-02 08:49:20 UTC (rev 1680) @@ -0,0 +1,129 @@ + +package org.dllearner.tools.ore.explanation; + +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataAllRestriction; +import org.semanticweb.owl.model.OWLDataExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataSomeRestriction; +import org.semanticweb.owl.model.OWLDataValueRestriction; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLDescriptionVisitorEx; +import org.semanticweb.owl.model.OWLObjectAllRestriction; +import org.semanticweb.owl.model.OWLObjectComplementOf; +import org.semanticweb.owl.model.OWLObjectExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectIntersectionOf; +import org.semanticweb.owl.model.OWLObjectMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectOneOf; +import org.semanticweb.owl.model.OWLObjectSelfRestriction; +import org.semanticweb.owl.model.OWLObjectSomeRestriction; +import org.semanticweb.owl.model.OWLObjectUnionOf; +import org.semanticweb.owl.model.OWLObjectValueRestriction; + +public class BottomTester implements OWLDescriptionVisitorEx<Boolean> +{ + + @Override + public Boolean visit(OWLClass owlClass) { + + return Boolean.valueOf(owlClass.isOWLNothing()); + } + + @Override + public Boolean visit(OWLObjectIntersectionOf intersect) { + for(OWLDescription desc : intersect.getOperands()){ + if (((Boolean) desc.accept(this)).booleanValue()) { + return Boolean.valueOf(true); + } + } + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLObjectUnionOf union) { + for(OWLDescription desc : union.getOperands()){ + if (((Boolean) desc.accept(this)).booleanValue()) { + return Boolean.valueOf(true); + } + } + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLObjectComplementOf desc) { + return Boolean.valueOf(desc.isOWLThing()); + } + + @Override + public Boolean visit(OWLObjectSomeRestriction desc) { + return (Boolean) ((OWLDescription) desc.getFiller()).accept(this); + } + + @Override + public Boolean visit(OWLObjectAllRestriction arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLObjectValueRestriction arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLObjectMinCardinalityRestriction desc) { + return (Boolean) ((OWLDescription) desc.getFiller()).accept(this); + } + + @Override + public Boolean visit(OWLObjectExactCardinalityRestriction desc) { + return (Boolean) ((OWLDescription) desc.getFiller()).accept(this); + } + + @Override + public Boolean visit(OWLObjectMaxCardinalityRestriction arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLObjectSelfRestriction arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLObjectOneOf arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLDataSomeRestriction arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLDataAllRestriction arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLDataValueRestriction arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLDataMinCardinalityRestriction arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLDataExactCardinalityRestriction arg0) { + return Boolean.valueOf(false); + } + + @Override + public Boolean visit(OWLDataMaxCardinalityRestriction arg0) { + return Boolean.valueOf(false); + } + +} \ No newline at end of file Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TauGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TauGenerator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TauGenerator.java 2009-04-02 08:49:20 UTC (rev 1680) @@ -0,0 +1,82 @@ + +package org.dllearner.tools.ore.explanation; + +import java.util.HashSet; +import java.util.Set; + +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDataRange; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLObjectComplementOf; +import org.semanticweb.owl.model.OWLObjectMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectPropertyExpression; + + +public class TauGenerator extends BaseDescriptionGenerator +{ + + public TauGenerator(OWLDataFactory factory) + { + super(factory); + } + + public Set<OWLDescription> visit(OWLClass desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + descs.add(desc); + descs.add(getDataFactory().getOWLThing()); + return descs; + } + + public Set<OWLDescription> visit(OWLObjectComplementOf desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + + for(OWLDescription d : computeBeta(desc.getOperand())){ + descs.add(getDataFactory().getOWLObjectComplementOf(d)); + } + return descs; + } + + public Set<OWLDescription> visit(OWLObjectMaxCardinalityRestriction desc) + { + Set<OWLDescription> descs = new HashSet<OWLDescription>(); + + for(OWLDescription filler : computeBeta(desc.getFiller())){ + descs.add(getDataFactory().getOWLObjectMaxCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), desc.getCardinality(), filler)); + } + descs.add(getLimit()); + return descs; + } + + public Set<OWLDescription> visit(OWLObjectMinCardinalityRestriction desc) + { + Set<OWLDescription> weakenedFillers = computeTau((OWLDescription)desc.getFiller()); + Set<OWLDescription> result = new HashSet<OWLDescription>(); + for(int n = desc.getCardinality(); n > 0; n--) + { + + for(OWLDescription filler : weakenedFillers ){ + result.add(getDataFactory().getOWLObjectMinCardinalityRestriction((OWLObjectPropertyExpression)desc.getProperty(), n, filler)); + } + + } + + result.add(getLimit()); + return result; + } + + protected OWLClass getLimit() + { + return getDataFactory().getOWLThing(); + } + + protected OWLDataRange getDataLimit() + { + return getDataFactory().getTopDataType(); + } + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TopTester.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TopTester.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/TopTester.java 2009-04-02 08:49:20 UTC (rev 1680) @@ -0,0 +1,142 @@ + + +package org.dllearner.tools.ore.explanation; + +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataAllRestriction; +import org.semanticweb.owl.model.OWLDataExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataSomeRestriction; +import org.semanticweb.owl.model.OWLDataValueRestriction; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLDescriptionVisitorEx; +import org.semanticweb.owl.model.OWLObjectAllRestriction; +import org.semanticweb.owl.model.OWLObjectComplementOf; +import org.semanticweb.owl.model.OWLObjectExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectIntersectionOf; +import org.semanticweb.owl.model.OWLObjectMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectOneOf; +import org.semanticweb.owl.model.OWLObjectSelfRestriction; +import org.semanticweb.owl.model.OWLObjectSomeRestriction; +import org.semanticweb.owl.model.OWLObjectUnionOf; +import org.semanticweb.owl.model.OWLObjectValueRestriction; + + + +public class TopTester + implements OWLDescriptionVisitorEx<Boolean> +{ + + public TopTester() + { + bottomChecker = new BottomTester(); + } + + public Boolean visit(OWLClass desc) + { + return Boolean.valueOf(desc.isOWLThing()); + } + + public Boolean visit(OWLObjectIntersectionOf desc) + { + for(OWLDescription op : desc.getOperands()){ + if(!((Boolean)op.accept(this)).booleanValue()){ + return Boolean.valueOf(false); + } + } + + return Boolean.valueOf(true); + } + + public Boolean visit(OWLObjectUnionOf desc) + { + for(OWLDescription op : desc.getOperands()){ + if(((Boolean)op.accept(this)).booleanValue()){ + return Boolean.valueOf(true); + } + } + + return Boolean.valueOf(false); + } + + public Boolean visit(OWLObjectComplementOf desc) + { + return (Boolean)desc.getOperand().accept(bottomChecker); + } + + public Boolean visit(OWLObjectSomeRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLObjectAllRestriction desc) + { + return (Boolean)((OWLDescription)desc.getFiller()).accept(this); + } + + public Boolean visit(OWLObjectValueRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLObjectMinCardinalityRestriction desc) + { + return Boolean.valueOf(desc.getCardinality() == 0); + } + + public Boolean visit(OWLObjectExactCardinalityRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLObjectMaxCardinalityRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLObjectSelfRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLObjectOneOf desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLDataSomeRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLDataAllRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLDataValueRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLDataMinCardinalityRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLDataExactCardinalityRestriction desc) + { + return Boolean.valueOf(false); + } + + public Boolean visit(OWLDataMaxCardinalityRestriction desc) + { + return Boolean.valueOf(false); + } + + + + private BottomTester bottomChecker; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-04 12:25:22
|
Revision: 1731 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1731&view=rev Author: lorenz_b Date: 2009-05-04 12:25:17 +0000 (Mon, 04 May 2009) Log Message: ----------- fixed error according to new swingx lib Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWL.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -33,6 +33,12 @@ import javax.swing.event.ListSelectionListener; import org.jdesktop.swingx.JXBusyLabel; +import org.jdesktop.swingx.JXList; +import org.jdesktop.swingx.decorator.ColorHighlighter; +import org.jdesktop.swingx.decorator.FilterPipeline; +import org.jdesktop.swingx.decorator.HighlightPredicate; +import org.jdesktop.swingx.decorator.HighlighterFactory; +import org.jdesktop.swingx.decorator.ShuttleSorter; import org.jdesktop.swingx.icon.EmptyIcon; import org.jdesktop.swingx.painter.BusyPainter; @@ -45,7 +51,7 @@ private static final long serialVersionUID = 3026319637264844550L; - private javax.swing.JList conceptList; + private JXList conceptList; private JPanel contentPanel; @@ -94,8 +100,17 @@ JPanel contentPanel1 = new JPanel(); JScrollPane scroll = new JScrollPane(); - - conceptList = new JList(model); + + + conceptList = new JXList(model); + conceptList.setFilterEnabled(true); + conceptList.setFilters(new FilterPipeline(new ShuttleSorter(0, true))); + conceptList.setHighlighters(HighlighterFactory.createSimpleStriping(HighlighterFactory.CLASSIC_LINE_PRINTER)); + conceptList.addHighlighter(new ColorHighlighter( HighlightPredicate.ROLLOVER_ROW)); + conceptList.setRolloverEnabled(true); +// conceptList.setSearchable(new ListsSearchPredicate.MATCH_ALL); +// conceptList.setHighlighters(HighlighterFactory.createAlternateStriping()); + scroll.setPreferredSize(new Dimension(400, 400)); scroll.setViewportView(conceptList); contentPanel1.add(scroll); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassPanelOWLDescriptor.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -22,7 +22,6 @@ import javax.swing.event.ListSelectionEvent; - import org.dllearner.core.owl.NamedClass; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -32,7 +32,7 @@ import javax.swing.JPanel; import javax.swing.ListCellRenderer; -import org.dllearner.learningproblems.EvaluatedDescriptionPosNeg; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; /** * List cell renderer for 2 columns. @@ -58,13 +58,13 @@ JLabel cor = new JLabel(); JLabel desc = new JLabel(); setLayout(new GridBagLayout()); - desc.setText(((EvaluatedDescriptionPosNeg) value).getDescription().toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); + desc.setText(((EvaluatedDescriptionClass) value).getDescription().toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); //round accuracy to 2 digits - double accuracy = ((EvaluatedDescriptionPosNeg) value).getAccuracy(); + double accuracy = ((EvaluatedDescriptionClass) value).getAccuracy(); BigDecimal roundedAccuracy = new BigDecimal(accuracy * 100); roundedAccuracy = roundedAccuracy.setScale(2, BigDecimal.ROUND_HALF_UP); - cor.setText(roundedAccuracy.toString()); + cor.setText(String.valueOf(roundedAccuracy)); add(cor, new GridBagConstraints(0, 0, 1, 1, 0.1, 0.0, GridBagConstraints.LINE_END, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));//, BorderLayout.WEST); add(desc, new GridBagConstraints(1, 0, 1, 1, 0.8, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));//, BorderLayout.EAST); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -97,7 +97,7 @@ remove(c); } } - ore.updateReasoner(); +// ore.updateReasoner(); correct = true; if (mode.equals("neg")) { for (JLabel jL : ore.descriptionToJLabelNeg(ind, newClassDescription)) { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -165,6 +165,7 @@ browseButton.addActionListener(l); fileURL.addActionListener(l); sparqlURL.addActionListener(l); + connectButton.addActionListener(l); owl.addActionListener(l); sparql.addActionListener(l); fileURL.getDocument().addDocumentListener(d); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -103,6 +103,10 @@ } } + + private void connect2Sparql(){ + + } public void changedUpdate(DocumentEvent e) { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -87,7 +87,7 @@ JPanel statusPanel = new JPanel(); statusLabel = new JLabel(); loadingLabel = new JXBusyLabel(new Dimension(15, 15)); - BusyPainter<Object> painter = new BusyPainter<Object>( + BusyPainter painter = new BusyPainter( new RoundRectangle2D.Float(0, 0, 6.0f, 2.6f, 10.0f, 10.0f), new Ellipse2D.Float(2.0f, 2.0f, 11.0f, 11.0f)); painter.setTrailLength(2); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -35,7 +35,7 @@ import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; -import org.dllearner.learningproblems.EvaluatedDescriptionPosNeg; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; @@ -99,7 +99,7 @@ // Description de = new NamedClass("http://example.com/father#male"); if (!e.getValueIsAdjusting()){ - getWizardModel().getOre().setNewClassDescription(((EvaluatedDescriptionPosNeg) (learnPanel.getResultList().getSelectedValue()))); + getWizardModel().getOre().setNewClassDescription(((EvaluatedDescriptionClass) (learnPanel.getResultList().getSelectedValue()))); } } @@ -113,6 +113,7 @@ learnPanel.getListModel().clear(); learnPanel.getStartButton().setEnabled(false); learnPanel.getStopButton().setEnabled(true); + worker = new LearnSwingWorker(); worker.execute(); } else{ @@ -248,9 +249,7 @@ @Override protected void process(List<List<? extends EvaluatedDescription>> resultLists) { - -// panel4.getModel().clear(); - + for (List<? extends EvaluatedDescription> list : resultLists) { updateList(list); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -33,11 +33,12 @@ import javax.swing.JLabel; -import org.dllearner.algorithms.refinement2.ROLComponent2; +import org.dllearner.algorithms.celoe.CELOE; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; import org.dllearner.core.KnowledgeSource; import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.ReasonerComponent; import org.dllearner.core.owl.Description; @@ -48,10 +49,17 @@ import org.dllearner.core.owl.Union; import org.dllearner.kb.OWLAPIOntology; import org.dllearner.kb.OWLFile; -import org.dllearner.learningproblems.EvaluatedDescriptionPosNeg; -import org.dllearner.learningproblems.PosNegLPStandard; +import org.dllearner.learningproblems.ClassLearningProblem; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.reasoning.OWLAPIReasoner; +import org.mindswap.pellet.exceptions.InconsistentOntologyException; +import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; /** * This class contains init methods, and is used as broker between wizard and OWL-API. @@ -63,7 +71,7 @@ private LearningAlgorithm la; private ReasonerComponent rs; private KnowledgeSource ks; - private PosNegLPStandard lp; + private LearningProblem lp; private ComponentManager cm; private ReasonerComponent fastReasoner; @@ -73,7 +81,7 @@ private SortedSet<Individual> negExamples; private NamedClass classToLearn; - private EvaluatedDescriptionPosNeg newClassDescription; + private EvaluatedDescriptionClass newClassDescription; private OntologyModifier modifier; @@ -83,7 +91,9 @@ private double noise = 0.0; + private File owlFile; + public ORE() { cm = ComponentManager.getInstance(); @@ -96,6 +106,7 @@ * Applying knowledge source. */ public void setKnowledgeSource(File f) { + this.owlFile = f; ks = cm.knowledgeSource(OWLFile.class); @@ -115,7 +126,24 @@ } + public boolean consistentOntology() throws InconsistentOntologyException{ + boolean consistent = true; + try { + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ont = manager.loadOntology(owlFile.toURI()); + Reasoner reasoner = new PelletReasonerFactory().createReasoner(manager); + reasoner.loadOntology(ont); + + consistent = reasoner.isConsistent(); + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return consistent; + } + /** * Initialize the reasoners. */ @@ -144,16 +172,9 @@ } - /** - * Returns the reasoningservice. - * @return reasoning service - */ - public ReasonerComponent getReasonerComponent(){ - return rs; - } + - public void setPosNegExamples(){ posExamples = owlReasoner.getIndividuals(classToLearn); negExamples = owlReasoner.getIndividuals(); @@ -170,7 +191,7 @@ } - public EvaluatedDescriptionPosNeg getNewClassDescription() { + public EvaluatedDescriptionClass getNewClassDescription() { return newClassDescription; } @@ -192,17 +213,32 @@ } public void setLearningProblem(){ - lp = new PosNegLPStandard(owlReasoner, posExamples, negExamples); - lp.init(); + lp = cm.learningProblem(ClassLearningProblem.class, fastReasoner); + cm.applyConfigEntry(lp, "classToDescribe", classToLearn.toString()); + try { + lp.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } public void setNoise(double noise){ + System.out.println("setze noise auf" + noise); + cm.applyConfigEntry(la, "noisePercentage", noise); + try { + la.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } this.noise = noise; } public void setLearningAlgorithm(){ try { - la = cm.learningAlgorithm(ROLComponent2.class, lp, owlReasoner); + la = cm.learningAlgorithm(CELOE.class, lp, fastReasoner); + cm.applyConfigEntry(la, "useNegation", false); } catch (LearningProblemUnsupportedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); @@ -212,8 +248,8 @@ t.add(classToLearn.getName()); - cm.applyConfigEntry(la, "ignoredConcepts", t); - cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 10); +// cm.applyConfigEntry(la, "ignoredConcepts", t); +// cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 10); try { la.init(); } catch (ComponentInitException e) { @@ -232,13 +268,13 @@ } public void init(){ - try { - owlReasoner.init(); - fastReasoner.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } +// try { +// owlReasoner.init(); +// fastReasoner.init(); +// } catch (ComponentInitException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } this.setPosNegExamples(); this.setLearningProblem(); this.setLearningAlgorithm(); @@ -251,9 +287,9 @@ */ public void start(){ Set<String> t = new TreeSet<String>(); - t.add(classToLearn.getName()); - cm.applyConfigEntry(la, "ignoredConcepts", t); - cm.applyConfigEntry(la, "noisePercentage", noise); +// t.add(classToLearn.getName()); +// cm.applyConfigEntry(la, "ignoredConcepts", t); +// cm.applyConfigEntry(la, "noisePercentage", noise); try { la.init(); } catch (ComponentInitException e) { @@ -265,7 +301,7 @@ } - public void setNewClassDescription(EvaluatedDescriptionPosNeg newClassDescription) { + public void setNewClassDescription(EvaluatedDescriptionClass newClassDescription) { this.newClassDescription = newClassDescription; } @@ -517,7 +553,7 @@ // TODO Auto-generated catch block e.printStackTrace(); } -// rs = cm.reasoningService(owlReasoner); + setLearningAlgorithm(); } @@ -538,7 +574,7 @@ } } } -// System.out.println("Disjunkt sind: " + complements); + System.out.println("Disjunkt sind: " + complements); return complements; } @@ -546,29 +582,55 @@ public static void main(String[] args){ - final ORE test = new ORE(); + try{ + ComponentManager cm = ComponentManager.getInstance(); - File owlFile1 = new File("examples/ore/people+pets.owl"); - File owlFile2 = new File("examples/ore/inconsistent.owl"); - File owlFile3 = new File("examples/ore/incohaerent.owl"); + // create knowledge source + KnowledgeSource source = cm.knowledgeSource(OWLFile.class); + String example = "examples/ore/inconsistent.owl"; + cm.applyConfigEntry(source, "url", new File(example).toURI().toURL()); + source.init(); - test.setKnowledgeSource(owlFile1); - test.initReasoners(); - System.out.println(test.owlReasoner.isSatisfiable()); + // create OWL API reasoning service with standard settings + ReasonerComponent reasoner = cm.reasoner(OWLAPIReasoner.class, source); + reasoner.init(); - test.setKnowledgeSource(owlFile2); - test.initReasoners(); - System.out.println(test.owlReasoner.isSatisfiable()); + // create a learning problem and set positive and negative examples + LearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); +// cm.applyConfigEntry(lp, "type", "superClass"); + cm.applyConfigEntry(lp, "classToDescribe", "http://cohse.semanticweb.org/ontologies/people#mad+cow"); + lp.init(); - test.setKnowledgeSource(owlFile3); - test.initReasoners(); - System.out.println(test.owlReasoner.isSatisfiable()); + // create the learning algorithm + LearningAlgorithm la = null; + try { + la = cm.learningAlgorithm(CELOE.class, lp, reasoner); + la.init(); + } catch (LearningProblemUnsupportedException e) { + e.printStackTrace(); + } + + // start the algorithm and print the best concept found + la.start(); + + System.out.println(la.getCurrentlyBestEvaluatedDescriptions(10, 0.8, true)); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } +} - } + + } + + // public static void main(String[] args){ // Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -486,7 +486,7 @@ //superclasses and class1 // Set<OWLDescription> superClasses1 = owlClass1.getSuperClasses(ontology); Set<OWLDescription> superClasses1 = new HashSet<OWLDescription>(); - for(Description d1 : rs.getSuperClasses(desc1)){ + for(Description d1 : reasoner.getSuperClasses(desc1)){ superClasses1.add(OWLAPIDescriptionConvertVisitor.getOWLDescription(d1)); } superClasses1.add(owlClass1); @@ -495,7 +495,7 @@ //superclasses and class2 // Set<OWLDescription> superClasses2 = owlClass2.getSuperClasses(ontology); Set<OWLDescription> superClasses2 = new HashSet<OWLDescription>(); - for(Description d2 : rs.getSuperClasses(desc2)){ + for(Description d2 : reasoner.getSuperClasses(desc2)){ superClasses2.add(OWLAPIDescriptionConvertVisitor.getOWLDescription(d2)); } superClasses2.add(owlClass2); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -206,7 +206,7 @@ for(String i : value){ actionPane.add(new JLabel("<html><strike>" + i + "</strike></html>")); } - actionPane.setExpanded(false); + actionPane.setCollapsed(false); propertyPane.add(actionPane); } else if(newPropMap.keySet().contains(key)){ JXTaskPane actionPane = new JXTaskPane(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2009-05-04 11:38:19 UTC (rev 1730) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2009-05-04 12:25:17 UTC (rev 1731) @@ -25,13 +25,18 @@ import java.util.List; import java.util.Set; import java.util.concurrent.ExecutionException; +import java.util.logging.Level; import javax.swing.DefaultListModel; +import javax.swing.Icon; import javax.swing.JOptionPane; import javax.swing.SwingWorker; +import javax.swing.UIManager; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.NamedClass; +import org.jdesktop.swingx.JXErrorPane; +import org.jdesktop.swingx.error.ErrorInfo; import org.semanticweb.owl.model.OWLOntologyChange; /** @@ -92,13 +97,24 @@ if(nextPanelDescriptor.equals("CLASS_CHOOSE_OWL_PANEL")){ // model.getOre().getOwlReasoner().isSatisfiable() - + if(!ore.consistentOntology()){ + Exception e = new Exception("ff"); + ErrorInfo info = new ErrorInfo("Inconsistent ontology", "2", "3", null, e, Level.ALL, null); + JXErrorPane error = new JXErrorPane(); + Icon icon = UIManager.getIcon("JOptionPane.errorIcon"); + error.setErrorInfo(info); + error.setIcon(icon);System.out.println(icon); + JXErrorPane.showDialog(wizard.getDialog(), error); + + + } ((ClassPanelOWLDescriptor) nextDescriptor).getOwlClassPanel().getModel().clear(); new ConceptRetriever(nextPanelDescriptor).execute(); } if(nextPanelDescriptor.equals("LEARNING_PANEL")){ ore.init(); +// ore.get LearningPanelDescriptor learnDescriptor = ((LearningPanelDescriptor) model.getPanelHashMap().get(nextPanelDescriptor)); learnDescriptor.setPanelDefaults(); @@ -266,6 +282,7 @@ class ConceptRetriever extends SwingWorker<Set<NamedClass>, NamedClass> { private Object nextPanelID; private ClassPanelOWL owlClassPanel; + private Set<NamedClass> unsatClasses; public ConceptRetriever(Object nextPanelDescriptor) { @@ -278,14 +295,14 @@ owlClassPanel.getStatusLabel().setText("Loading atomic classes"); owlClassPanel.getLoadingLabel().setBusy(true); - owlClassPanel.getList().setCellRenderer(new ColorListCellRenderer(wizard.getModel().getOre())); +// owlClassPanel.getList().setCellRenderer(new ColorListCellRenderer(wizard.getModel().getOre())); wizard.getModel().getOre().initReasoners(); - Set<NamedClass> ind = wizard.getModel().getOre().getOwlReasoner().getNamedClasses(); - + Set<NamedClass> classes = wizard.getModel().getOre().getOwlReasoner().getNamedClasses(); + unsatClasses = wizard.getModel().getOre().getOwlReasoner().getInconsistentClasses(); - return ind; + return classes; } @Override @@ -307,6 +324,7 @@ for (NamedClass cl : ind) { dm.addElement(cl); + //nextPanel.panel3.getModel().addElement(cl); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-07 08:45:53
|
Revision: 1745 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1745&view=rev Author: lorenz_b Date: 2009-05-07 08:45:50 +0000 (Thu, 07 May 2009) Log Message: ----------- new panel to show explanations rendered in OWL-syntax or DL-syntax Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/UnsatClassesListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/information.png Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -0,0 +1,203 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.List; + +import javax.swing.ButtonGroup; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.DefaultTableModel; + +import org.jdesktop.swingx.JXList; +import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class ExplanationPanel extends JPanel implements ListSelectionListener, ActionListener{ + + private JXList unsatList; + private JSplitPane splitPane; + private JScrollPane listScrollPane; + private JScrollPane explanationsScrollPane; + private JPanel explanationsPanel; + private JPanel buttonExplanationsPanel; + private JPanel buttonPanel; + private ButtonGroup explanationType; + private JRadioButton regularButton; + private JRadioButton laconicButton; + private OWLSyntaxTableCellRenderer tableRenderer; + private UnsatClassesListCellRenderer listRenderer; + + + private ExplanationManager manager; + private OWLClass unsatClass; + /** + * + */ + private static final long serialVersionUID = 2213073383532597460L; + + public ExplanationPanel(ExplanationManager manager){ + + this.manager = manager; + + Dimension minimumSize = new Dimension(400, 400); + + tableRenderer = new OWLSyntaxTableCellRenderer(); + listRenderer = new UnsatClassesListCellRenderer(manager); + + + + unsatList = new JXList(manager.getUnsatisfiableClasses().toArray()); + unsatList.addListSelectionListener(this); + unsatList.setCellRenderer(listRenderer); + listScrollPane = new JScrollPane(unsatList); + listScrollPane.setPreferredSize(minimumSize); + + explanationsPanel = new JPanel(); + explanationsPanel.setLayout(new GridLayout(0,1)); + explanationsScrollPane = new JScrollPane(explanationsPanel); + explanationsScrollPane.setPreferredSize(minimumSize); + + regularButton = new JRadioButton("regular", true); + regularButton.setActionCommand("regular"); + regularButton.addActionListener(this); + laconicButton = new JRadioButton("laconic"); + laconicButton.setActionCommand("laconic"); + laconicButton.addActionListener(this); + explanationType = new ButtonGroup(); + explanationType.add(regularButton); + explanationType.add(laconicButton); + buttonPanel = new JPanel(); + buttonPanel.add(regularButton); + buttonPanel.add(laconicButton); + + buttonExplanationsPanel = new JPanel(); + buttonExplanationsPanel.setLayout(new BorderLayout()); + buttonExplanationsPanel.add(explanationsScrollPane, BorderLayout.CENTER); + buttonExplanationsPanel.add(buttonPanel, BorderLayout.NORTH); + + splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, buttonExplanationsPanel); + splitPane.setOneTouchExpandable(true); + splitPane.setDividerLocation(150); + + + add(splitPane); + } + + private void addExplanationTable(List<OWLAxiom> explanation, int number){ + + + JXTable expTable = new JXTable(); + DefaultTableModel model = new DefaultTableModel(); + model.addColumn("axiom", explanation.toArray()); + expTable.setModel(model); + expTable.setDefaultRenderer(Object.class, tableRenderer); + + + +// DLSyntaxObjectRenderer r = new DLSyntaxObjectRenderer(); +// Vector<String> t = new Vector<String>(); +// for(OWLAxiom ax : explanation) +// t.add(r.render(ax)); +// model.addColumn("axiom", t); + +// expTable.setModel(new ExplanationTableModel()); +// expTable.setDefaultRenderer(JButton.class, new ExplanationTableCellRenderer(expTable.getDefaultRenderer(JButton.class))); +// expTable.addMouseListener(new JTableButtonMouseListener(expTable)); + + expTable.getColumn(0).sizeWidthToFit(); + expTable.setSize(300, 300); + expTable.setEditable(false); + + + + + +// JPanel tablePanel = new JPanel();tablePanel.setLayout(new GridLayout(0,1)); +// +// tablePanel.add(expTable); +// tablePanel.setPreferredSize(new Dimension(300, 300)); +// tablePanel.setBorder(BorderFactory.createTitledBorder("explanation " + number)); + + explanationsPanel.add(new JScrollPane(expTable)); + + } + + private void clearExplanationsPanel(){ + explanationsPanel.removeAll(); + } + + private void showLaconicExplanations(){ + clearExplanationsPanel(); + int counter = 1; + for(List<OWLAxiom> explanation : manager.getOrderedLaconicUnsatisfiableExplanations(unsatClass)){ + addExplanationTable(explanation, counter); + counter++; + } + this.updateUI(); + } + + private void showRegularExplanations(){ + clearExplanationsPanel(); + int counter = 1; + for(List<OWLAxiom> explanation : manager.getOrderedUnsatisfiableExplanations(unsatClass)){ + addExplanationTable(explanation, counter); + counter++; + } + this.updateUI(); + } + + + @Override + public void valueChanged(ListSelectionEvent e) { + + unsatClass = (OWLClass)((JXList)e.getSource()).getSelectedValue(); + + if(regularButton.isSelected()){ + showRegularExplanations(); + } else { + showLaconicExplanations(); + } + + } + + + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getActionCommand().equals("regular")){ + showRegularExplanations(); + } else if(e.getActionCommand().equals("laconic") && !unsatList.isSelectionEmpty()){ + showLaconicExplanations(); + + } + + } + + public static void main(String[] args){ + + String file = "file:examples/ore/tambis.owl"; + + ExplanationManager manager = ExplanationManager.getExplanationManager(file); + ExplanationPanel panel = new ExplanationPanel(manager); + + + JFrame test = new JFrame(); + test.setLayout(new GridLayout(0, 1)); + test.setSize(new Dimension(800, 500)); + test.add(panel); + test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + test.setVisible(true); + + +} +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2009-05-07 08:42:31 UTC (rev 1744) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -15,19 +15,23 @@ import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; +import com.clarkparsia.explanation.PelletExplanation; +import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; + @SuppressWarnings("unused") public class ExplanationTest { // private static final String file = "file:examples/ore/inconsistent.owl"; - private static final String file = "file:examples/ore/buggyPolicy.owl"; + private static final String file = "file:examples/ore/koala.owl"; private static final String NS = "http://cohse.semanticweb.org/ontologies/people#"; /** * @param args */ public static void main(String[] args) { - /* + + try { PelletExplanation.setup(); @@ -94,8 +98,8 @@ // TODO Auto-generated catch block e.printStackTrace(); } - */ - } + + } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -0,0 +1,108 @@ +package org.dllearner.tools.ore; + +import java.io.StringWriter; +import java.util.StringTokenizer; + +import javax.swing.table.DefaultTableCellRenderer; + +import org.semanticweb.owl.model.OWLAxiom; + +import com.clarkparsia.explanation.io.manchester.Keyword; +import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxObjectRenderer; +import com.clarkparsia.explanation.io.manchester.TextBlockWriter; + +public class OWLSyntaxTableCellRenderer extends DefaultTableCellRenderer { + + /** + * + */ + private static final long serialVersionUID = 6528440084244154347L; + + + private StringWriter buffer; + private TextBlockWriter writer; + private ManchesterSyntaxObjectRenderer renderer; +// private List<String> oldAxioms; + + public OWLSyntaxTableCellRenderer(){ + super(); + buffer = new StringWriter(); + writer = new TextBlockWriter(buffer); + renderer = new ManchesterSyntaxObjectRenderer(writer); + renderer.setWrapLines( false ); + renderer.setSmartIndent( true ); +// oldAxioms = new ArrayList<String>(); + + } + @Override + protected void setValue(Object value) { + + if(value instanceof OWLAxiom){ + + + ((OWLAxiom)value).accept(renderer); + + writer.flush(); + String newAxiom = buffer.toString(); +// System.out.println("new axiom " + newAxiom); +// if(!oldAxioms.isEmpty()){ +// StringTokenizer st = new StringTokenizer(newAxiom); +// int index; +// String token = st.nextToken(); +// for(String s : oldAxioms){System.out.println("old axiom " + s); +// +// +// if(s.contains(token)){ +// index = s.indexOf(token); +// if(index>0){ +// StringBuffer bf = new StringBuffer(); +// for(int i = 0;i<=index+10;i++){ +// bf.append(" "); +// } +// bf.append(newAxiom); +// newAxiom = bf.toString(); +// break; +// } +// } +// +// } +// } + StringTokenizer st = new StringTokenizer(newAxiom); + + StringBuffer bf = new StringBuffer(); + bf.append("<html>"); + String token; + while(st.hasMoreTokens()){ + token = st.nextToken(); + String color = "black"; + boolean isReserved = false; + for(Keyword key : Keyword.values()){ + if(token.equals(key.getLabel())){ + color = key.getColor(); + isReserved = true;break; + } + } + if(isReserved){ + bf.append("<font color=" + color + ">" + token + " </font>"); + } else { + bf.append(" " + token + " "); + } + } + bf.append("</html>"); + newAxiom = bf.toString(); + setText(newAxiom); +// oldAxioms.add(buffer.toString()); + buffer.getBuffer().delete(0, buffer.toString().length()); + } else { + super.setValue(value); + } + +// ManchesterOWLSyntaxOWLObjectRendererImpl renderer = new ManchesterOWLSyntaxOWLObjectRendererImpl(); + + +//// DLSyntaxObjectRenderer renderer = new DLSyntaxObjectRenderer(); +// setText(renderer.render((OWLAxiom) value)); + + + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-05-07 08:42:31 UTC (rev 1744) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -22,12 +22,21 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.KnowledgeSource; import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.LearningProblemUnsupportedException; +import org.dllearner.core.ReasonerComponent; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.learningproblems.ClassLearningProblem; +import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; -import org.dllearner.utilities.learn.LearnSPARQLConfiguration; /** * Test class for SPARQL mode. @@ -38,6 +47,7 @@ @SuppressWarnings("unused") public static void main(String[] args){ + ComponentManager cm = ComponentManager.getInstance(); SparqlEndpoint endPoint = SparqlEndpoint.getEndpointDBpedia(); @@ -49,26 +59,33 @@ AutomaticNegativeExampleFinderSPARQL neg = new AutomaticNegativeExampleFinderSPARQL(posExamples, task, new TreeSet<String>()); SortedSet<String> negExamples = neg.getNegativeExamples(20); + System.out.println(negExamples); - LearnSPARQLConfiguration conf = new LearnSPARQLConfiguration(); - // TODO Please update class to either use ComponentManager or - // add a convenience constructor to org.dllearner.utilities.components.ComponentCombo -// LearnSparql learn = new LearnSparql(conf); - LearningAlgorithm la = null; - -// try { - //la = learn.learn(posExamples, negExamples, OWLAPIReasoner.class); -// } catch (ComponentInitException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (LearningProblemUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - - la.start(); + try { + String example = "http://dbpedia.org/resource/Angela_Merkel"; + + + + KnowledgeSource ks = cm.knowledgeSource(SparqlKnowledgeSource.class); + cm.applyConfigEntry(ks, "predefinedEndpoint", "DBPEDIA"); + ks.init(); + ReasonerComponent reasoner = cm.reasoner(OWLAPIReasoner.class, ks); + reasoner.init(); + LearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); + lp.init(); + LearningAlgorithm la = cm.learningAlgorithm(CELOE.class, lp, reasoner); + la.init(); + + la.start(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (LearningProblemUnsupportedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/UnsatClassesListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/UnsatClassesListCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/UnsatClassesListCellRenderer.java 2009-05-07 08:45:50 UTC (rev 1745) @@ -0,0 +1,50 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; +import java.awt.Component; +import java.util.Set; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.ImageIcon; +import javax.swing.JList; + +import org.semanticweb.owl.model.OWLClass; + +public class UnsatClassesListCellRenderer extends DefaultListCellRenderer { + + /** + * + */ + private static final long serialVersionUID = -6705062445027715783L; + + private ExplanationManager manager; + private Set<OWLClass> rootClasses; + + public UnsatClassesListCellRenderer(ExplanationManager man){ + this.manager = man; + rootClasses = manager.getRootUnsatisfiableClasses(); + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + + if(rootClasses.contains((OWLClass)value)){ + setText(value.toString() ); + setIcon(new ImageIcon("src/dl-learner/org/dllearner/tools/ore/information.png")); + setHorizontalTextPosition(LEADING); + } + else { + setText(value.toString()); + setIcon(null); + } + if(isSelected){ + setBackground(new Color(242, 242, 242)); + } else { + setBackground(Color.WHITE); + } + return this; + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/information.png =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/information.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-10 14:22:29
|
Revision: 1749 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1749&view=rev Author: lorenz_b Date: 2009-05-10 13:33:52 +0000 (Sun, 10 May 2009) Log Message: ----------- design update for explanation view Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-07 11:41:54 UTC (rev 1748) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-10 13:33:52 UTC (rev 1749) @@ -18,7 +18,10 @@ import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.OWLOntologyChangeListener; import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; @@ -29,7 +32,7 @@ import com.clarkparsia.explanation.PelletExplanation; -public class ExplanationManager { +public class ExplanationManager implements OWLOntologyChangeListener{ private static ExplanationManager instance; @@ -43,6 +46,9 @@ private RootFinder rootFinder; private Map<OWLClass, Set<Set<OWLAxiom>>> regularExplanationCache; private Map<OWLClass, Set<Set<OWLAxiom>>> laconicExplanationCache; + private Set<OWLClass> unsatClasses; + private Set<OWLClass> rootClasses; + boolean ontologyChanged = true; private ExplanationManager(String ontPath){ @@ -51,16 +57,21 @@ try { manager = OWLManager.createOWLOntologyManager(); + manager.addOntologyChangeListener(this); dataFactory = manager.getOWLDataFactory(); ontology = manager.loadOntology(URI.create(ontPath)); reasonerFactory = new PelletReasonerFactory(); reasoner = reasonerFactory.createReasoner(manager); reasoner.loadOntology(ontology); reasoner.classify(); + rootFinder = new RootFinder(manager, reasoner, reasonerFactory); regularExpGen = new PelletExplanation(manager, Collections.singleton(ontology)); laconicExpGen = new LaconicExplanationGenerator(manager, reasonerFactory, Collections.singleton(ontology)); + + rootClasses = new HashSet<OWLClass>(); + unsatClasses = new HashSet<OWLClass>(); } catch (OWLOntologyCreationException e) { e.printStackTrace(); @@ -74,15 +85,29 @@ return instance; } + public Set<OWLClass> getUnsatisfiableClasses(){ - return reasoner.getInconsistentClasses(); + computeRootUnsatisfiableClasses(); + return unsatClasses; } - public Set<OWLClass> getRootUnsatisfiableClasses(){ - return rootFinder.getRootClasses(); + computeRootUnsatisfiableClasses(); + return rootClasses; } + + public void computeRootUnsatisfiableClasses(){ + if(ontologyChanged){ + rootClasses.clear(); + unsatClasses.clear(); + unsatClasses.addAll(reasoner.getInconsistentClasses()); + rootClasses.addAll(rootFinder.getRootClasses()); + ontologyChanged = false; + } + + } + public Set<Set<OWLAxiom>> getUnsatisfiableExplanations(OWLClass unsat){ Set<Set<OWLAxiom>> explanations = regularExplanationCache.get(unsat); if(explanations == null){ @@ -149,4 +174,11 @@ } return orderedExplanations; } + + @Override + public void ontologiesChanged(List<? extends OWLOntologyChange> arg0) + throws OWLException { + ontologyChanged = true; + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-07 11:41:54 UTC (rev 1748) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-10 13:33:52 UTC (rev 1749) @@ -1,17 +1,23 @@ package org.dllearner.tools.ore; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; +import javax.swing.BorderFactory; +import javax.swing.Box; import javax.swing.ButtonGroup; +import javax.swing.DefaultListModel; +import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; +import javax.swing.JSeparator; import javax.swing.JSplitPane; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -28,7 +34,7 @@ private JSplitPane splitPane; private JScrollPane listScrollPane; private JScrollPane explanationsScrollPane; - private JPanel explanationsPanel; + private JComponent explanationsPanel; private JPanel buttonExplanationsPanel; private JPanel buttonPanel; private ButtonGroup explanationType; @@ -49,6 +55,8 @@ this.manager = manager; + setLayout(new BorderLayout()); + Dimension minimumSize = new Dimension(400, 400); tableRenderer = new OWLSyntaxTableCellRenderer(); @@ -56,17 +64,37 @@ - unsatList = new JXList(manager.getUnsatisfiableClasses().toArray()); + + DefaultListModel model = new DefaultListModel(); + for(OWLClass root : manager.getRootUnsatisfiableClasses()){ + model.addElement(root); + } + for(OWLClass unsat : manager.getUnsatisfiableClasses()){ + if(!model.contains(unsat)){ + model.addElement(unsat); + } + } + + unsatList = new JXList(model); + unsatList.addListSelectionListener(this); unsatList.setCellRenderer(listRenderer); listScrollPane = new JScrollPane(unsatList); listScrollPane.setPreferredSize(minimumSize); - explanationsPanel = new JPanel(); - explanationsPanel.setLayout(new GridLayout(0,1)); - explanationsScrollPane = new JScrollPane(explanationsPanel); + explanationsPanel = new Box(1); + + + JPanel pan = new JPanel(new BorderLayout()); + pan.add(explanationsPanel, BorderLayout.NORTH); + explanationsScrollPane = new JScrollPane(pan); explanationsScrollPane.setPreferredSize(minimumSize); + explanationsScrollPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); + explanationsScrollPane.getViewport().setOpaque(false); + explanationsScrollPane.getViewport().setBackground(null); + explanationsScrollPane.setOpaque(false); + regularButton = new JRadioButton("regular", true); regularButton.setActionCommand("regular"); regularButton.addActionListener(this); @@ -88,11 +116,13 @@ splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, buttonExplanationsPanel); splitPane.setOneTouchExpandable(true); splitPane.setDividerLocation(150); + splitPane.setBorder(null); add(splitPane); } + private void addExplanationTable(List<OWLAxiom> explanation, int number){ @@ -128,7 +158,7 @@ // tablePanel.setPreferredSize(new Dimension(300, 300)); // tablePanel.setBorder(BorderFactory.createTitledBorder("explanation " + number)); - explanationsPanel.add(new JScrollPane(expTable)); + explanationsPanel.add(new ExplanationTablePanel(expTable, number)); } @@ -143,6 +173,9 @@ addExplanationTable(explanation, counter); counter++; } + explanationsPanel.add(Box.createVerticalStrut(10)); + explanationsPanel.add(new JSeparator()); + explanationsPanel.add(Box.createVerticalStrut(10)); this.updateUI(); } @@ -153,6 +186,9 @@ addExplanationTable(explanation, counter); counter++; } + explanationsPanel.add(Box.createVerticalStrut(10)); + explanationsPanel.add(new JSeparator()); + explanationsPanel.add(Box.createVerticalStrut(10)); this.updateUI(); } @@ -185,7 +221,7 @@ public static void main(String[] args){ - String file = "file:examples/ore/tambis.owl"; + String file = "file:examples/ore/miniEconomy.owl"; ExplanationManager manager = ExplanationManager.getExplanationManager(file); ExplanationPanel panel = new ExplanationPanel(manager); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java 2009-05-10 13:33:52 UTC (rev 1749) @@ -0,0 +1,42 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Color; + +import javax.swing.BorderFactory; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.border.Border; + +import org.jdesktop.swingx.JXTable; + +public class ExplanationTablePanel extends JPanel{ + + /** + * + */ + private static final long serialVersionUID = -7836622769361235749L; + private JXTable explanationTable; + private int explanationNumber; + + public ExplanationTablePanel(JXTable explanationTable, int explanationNumber){ + this.explanationTable = explanationTable; + this.explanationNumber = explanationNumber; + createGUI(); + } + + private void createGUI(){ + setLayout(new BorderLayout(2, 2)); + JLabel label = new JLabel(new StringBuilder().append("Explanation ").append(explanationNumber).toString()); + add(label, BorderLayout.NORTH); + JPanel tablePanel = new JPanel(new BorderLayout()); + Border emptyBorder = BorderFactory.createEmptyBorder(0, 20, 0, 0); + Border lineBorder = BorderFactory.createLineBorder(Color.LIGHT_GRAY); + tablePanel.setBorder(BorderFactory.createCompoundBorder(emptyBorder, lineBorder)); + tablePanel.add(explanationTable); + add(tablePanel); + + } + + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-05-07 11:41:54 UTC (rev 1748) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-05-10 13:33:52 UTC (rev 1749) @@ -91,7 +91,7 @@ // get(par, parent2Childs).add(child); // } // } - return rootClasses; + return Collections.unmodifiableSet(rootClasses); } private void computePossibleRoots(){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-17 19:43:30
|
Revision: 1752 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1752&view=rev Author: lorenz_b Date: 2009-05-17 19:43:11 +0000 (Sun, 17 May 2009) Log Message: ----------- extended explanation-gui showing lost entailments on axiom removal Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-15 11:55:08 UTC (rev 1751) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -1,6 +1,5 @@ package org.dllearner.tools.ore; -import java.net.URI; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -14,7 +13,6 @@ import org.dllearner.tools.ore.explanation.RootFinder; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; -import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; @@ -22,7 +20,6 @@ import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyChangeListener; -import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; @@ -51,41 +48,45 @@ boolean ontologyChanged = true; - private ExplanationManager(String ontPath){ + + private ExplanationManager(OWLOntologyManager manager, Reasoner reasoner, + OWLOntology ontology) { regularExplanationCache = new HashMap<OWLClass, Set<Set<OWLAxiom>>>(); laconicExplanationCache = new HashMap<OWLClass, Set<Set<OWLAxiom>>>(); - - try { - manager = OWLManager.createOWLOntologyManager(); - manager.addOntologyChangeListener(this); - dataFactory = manager.getOWLDataFactory(); - ontology = manager.loadOntology(URI.create(ontPath)); - reasonerFactory = new PelletReasonerFactory(); - reasoner = reasonerFactory.createReasoner(manager); - reasoner.loadOntology(ontology); - reasoner.classify(); - - rootFinder = new RootFinder(manager, reasoner, reasonerFactory); - - regularExpGen = new PelletExplanation(manager, Collections.singleton(ontology)); - laconicExpGen = new LaconicExplanationGenerator(manager, reasonerFactory, Collections.singleton(ontology)); - - rootClasses = new HashSet<OWLClass>(); - unsatClasses = new HashSet<OWLClass>(); - } catch (OWLOntologyCreationException e) { - - e.printStackTrace(); - } + + this.manager = manager; + this.reasoner = reasoner; + this.ontology = ontology; + manager.addOntologyChangeListener(this); + dataFactory = manager.getOWLDataFactory(); + + reasonerFactory = new PelletReasonerFactory(); + + rootFinder = new RootFinder(manager, reasoner, reasonerFactory); + + regularExpGen = new PelletExplanation(manager, Collections + .singleton(ontology)); + laconicExpGen = new LaconicExplanationGenerator(manager, + reasonerFactory, Collections.singleton(ontology)); + + rootClasses = new HashSet<OWLClass>(); + unsatClasses = new HashSet<OWLClass>(); + } - public static synchronized ExplanationManager getExplanationManager(String ontPath){ - if(instance == null){ - instance = new ExplanationManager(ontPath); + public static synchronized ExplanationManager getExplanationManager( + OWLOntologyManager manager, Reasoner reasoner, OWLOntology ontology) { + if (instance == null) { + instance = new ExplanationManager(manager, reasoner, ontology); } return instance; } + public static synchronized ExplanationManager getExplanationManager(){ + return instance; + } + public Set<OWLClass> getUnsatisfiableClasses(){ computeRootUnsatisfiableClasses(); return unsatClasses; @@ -181,4 +182,21 @@ ontologyChanged = true; } + + public int getArity(OWLClass cl, OWLAxiom ax) { + int arity = 0; + Set<Set<OWLAxiom>> explanations = regularExplanationCache.get(cl); + + if(explanations != null){ + + for (Set<OWLAxiom> explanation : explanations) { + if (explanation.contains(ax)) { + arity++; + } + } + } + return arity; + } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-15 11:55:08 UTC (rev 1751) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -4,9 +4,14 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; +import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.net.URI; +import java.util.Collections; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import javax.swing.BorderFactory; import javax.swing.Box; @@ -14,24 +19,33 @@ import javax.swing.DefaultListModel; import javax.swing.JComponent; import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JSplitPane; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import javax.swing.table.DefaultTableModel; import org.jdesktop.swingx.JXList; -import org.jdesktop.swingx.JXTable; +import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; -public class ExplanationPanel extends JPanel implements ListSelectionListener, ActionListener{ +public class ExplanationPanel extends JPanel implements ListSelectionListener, + ActionListener { private JXList unsatList; private JSplitPane splitPane; + private JSplitPane statsSplitPane; private JScrollPane listScrollPane; private JScrollPane explanationsScrollPane; private JComponent explanationsPanel; @@ -40,61 +54,50 @@ private ButtonGroup explanationType; private JRadioButton regularButton; private JRadioButton laconicButton; - private OWLSyntaxTableCellRenderer tableRenderer; + private UnsatClassesListCellRenderer listRenderer; + + private ExplanationManager expManager; + private ImpactManager impManager; + - private ExplanationManager manager; private OWLClass unsatClass; /** * */ private static final long serialVersionUID = 2213073383532597460L; - public ExplanationPanel(ExplanationManager manager){ + public ExplanationPanel(ExplanationManager expMan, ImpactManager impMan) { + - this.manager = manager; - + this.expManager = expMan; + this.impManager = impMan; + setLayout(new BorderLayout()); - + Dimension minimumSize = new Dimension(400, 400); - - tableRenderer = new OWLSyntaxTableCellRenderer(); - listRenderer = new UnsatClassesListCellRenderer(manager); - - - - DefaultListModel model = new DefaultListModel(); - for(OWLClass root : manager.getRootUnsatisfiableClasses()){ - model.addElement(root); - } - for(OWLClass unsat : manager.getUnsatisfiableClasses()){ - if(!model.contains(unsat)){ - model.addElement(unsat); - } - } - - unsatList = new JXList(model); - + listRenderer = new UnsatClassesListCellRenderer(expManager); + unsatList = new JXList(); + fillUnsatClassesList(); unsatList.addListSelectionListener(this); unsatList.setCellRenderer(listRenderer); listScrollPane = new JScrollPane(unsatList); listScrollPane.setPreferredSize(minimumSize); - + explanationsPanel = new Box(1); - - + JPanel pan = new JPanel(new BorderLayout()); pan.add(explanationsPanel, BorderLayout.NORTH); explanationsScrollPane = new JScrollPane(pan); explanationsScrollPane.setPreferredSize(minimumSize); - explanationsScrollPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); + explanationsScrollPane.setBorder(BorderFactory + .createLineBorder(Color.LIGHT_GRAY)); explanationsScrollPane.getViewport().setOpaque(false); - explanationsScrollPane.getViewport().setBackground(null); - explanationsScrollPane.setOpaque(false); - - + explanationsScrollPane.getViewport().setBackground(null); + explanationsScrollPane.setOpaque(false); + regularButton = new JRadioButton("regular", true); regularButton.setActionCommand("regular"); regularButton.addActionListener(this); @@ -107,69 +110,77 @@ buttonPanel = new JPanel(); buttonPanel.add(regularButton); buttonPanel.add(laconicButton); - + buttonExplanationsPanel = new JPanel(); buttonExplanationsPanel.setLayout(new BorderLayout()); - buttonExplanationsPanel.add(explanationsScrollPane, BorderLayout.CENTER); + buttonExplanationsPanel + .add(explanationsScrollPane, BorderLayout.CENTER); buttonExplanationsPanel.add(buttonPanel, BorderLayout.NORTH); + + statsSplitPane = new JSplitPane(0); + statsSplitPane.setResizeWeight(1.0D); + statsSplitPane.setTopComponent(buttonExplanationsPanel); - splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, buttonExplanationsPanel); + JPanel impactPanel = new JPanel(); + impactPanel.setLayout(new BorderLayout()); + impactPanel.add(new JLabel("Lost entailments"), BorderLayout.NORTH); + JScrollPane scr = new JScrollPane(new ImpactTable(impManager)); + impactPanel.add(scr); + + statsSplitPane.setBottomComponent(impactPanel); + + statsSplitPane.setBorder(null); + statsSplitPane.setDividerLocation(500); + statsSplitPane.setOneTouchExpandable(true); + + splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, + statsSplitPane); splitPane.setOneTouchExpandable(true); splitPane.setDividerLocation(150); splitPane.setBorder(null); - - + add(splitPane); } - - - private void addExplanationTable(List<OWLAxiom> explanation, int number){ - - - JXTable expTable = new JXTable(); - DefaultTableModel model = new DefaultTableModel(); - model.addColumn("axiom", explanation.toArray()); - expTable.setModel(model); - expTable.setDefaultRenderer(Object.class, tableRenderer); - - - -// DLSyntaxObjectRenderer r = new DLSyntaxObjectRenderer(); -// Vector<String> t = new Vector<String>(); -// for(OWLAxiom ax : explanation) -// t.add(r.render(ax)); -// model.addColumn("axiom", t); -// expTable.setModel(new ExplanationTableModel()); -// expTable.setDefaultRenderer(JButton.class, new ExplanationTableCellRenderer(expTable.getDefaultRenderer(JButton.class))); -// expTable.addMouseListener(new JTableButtonMouseListener(expTable)); + private void fillUnsatClassesList() { + DefaultListModel model = new DefaultListModel(); + Set<OWLClass> rootClasses = new TreeSet<OWLClass>(expManager + .getRootUnsatisfiableClasses()); + for (OWLClass root : rootClasses) { + model.addElement(root); + } + Set<OWLClass> derivedClasses = new TreeSet<OWLClass>(expManager + .getUnsatisfiableClasses()); + derivedClasses.removeAll(rootClasses); + for (OWLClass unsat : derivedClasses) { + model.addElement(unsat); - expTable.getColumn(0).sizeWidthToFit(); - expTable.setSize(300, 300); - expTable.setEditable(false); - - - + } + unsatList.setModel(model); + } + private void addExplanationTable(List<OWLAxiom> explanation, int number) { + + // DLSyntaxObjectRenderer r = new DLSyntaxObjectRenderer(); + // Vector<String> t = new Vector<String>(); + // for(OWLAxiom ax : explanation) + // t.add(r.render(ax)); + // model.addColumn("axiom", t); -// JPanel tablePanel = new JPanel();tablePanel.setLayout(new GridLayout(0,1)); -// -// tablePanel.add(expTable); -// tablePanel.setPreferredSize(new Dimension(300, 300)); -// tablePanel.setBorder(BorderFactory.createTitledBorder("explanation " + number)); - + ExplanationTable expTable = new ExplanationTable(explanation, impManager, expManager, unsatClass); explanationsPanel.add(new ExplanationTablePanel(expTable, number)); - + } - - private void clearExplanationsPanel(){ + + private void clearExplanationsPanel() { explanationsPanel.removeAll(); } - - private void showLaconicExplanations(){ + + private void showLaconicExplanations() { clearExplanationsPanel(); int counter = 1; - for(List<OWLAxiom> explanation : manager.getOrderedLaconicUnsatisfiableExplanations(unsatClass)){ + for (List<OWLAxiom> explanation : expManager + .getOrderedLaconicUnsatisfiableExplanations(unsatClass)) { addExplanationTable(explanation, counter); counter++; } @@ -178,11 +189,12 @@ explanationsPanel.add(Box.createVerticalStrut(10)); this.updateUI(); } - - private void showRegularExplanations(){ + + private void showRegularExplanations() { clearExplanationsPanel(); int counter = 1; - for(List<OWLAxiom> explanation : manager.getOrderedUnsatisfiableExplanations(unsatClass)){ + for (List<OWLAxiom> explanation : expManager + .getOrderedUnsatisfiableExplanations(unsatClass)) { addExplanationTable(explanation, counter); counter++; } @@ -191,49 +203,103 @@ explanationsPanel.add(Box.createVerticalStrut(10)); this.updateUI(); } - @Override public void valueChanged(ListSelectionEvent e) { - unsatClass = (OWLClass)((JXList)e.getSource()).getSelectedValue(); + unsatClass = (OWLClass) ((JXList) e.getSource()).getSelectedValue(); + +// OWLEditorKitFactory edFac = new OWLEditorKitFactory(); +// edFac.canLoad(URI.create("file:examples/ore/koala.owl")); +// +// try { +// EditorKit kit = edFac.createEditorKit(); +// } catch (Exception e2) { +// // TODO Auto-generated catch block +// e2.printStackTrace(); +// } +// +// OWLModelManager m = new OWLModelManagerImpl(); +// try { +// m.loadOntology(URI.create("file:examples/ore/koala.owl")); +// } catch (OWLOntologyCreationException e1) { +// // TODO Auto-generated catch block +// e1.printStackTrace(); +// } +// +// OWLExpressionCheckerFactory f = new ManchesterOWLExpressionCheckerFactory(m); +// OWLExpressionChecker<OWLDescription> checker = f.getOWLDescriptionChecker(); +// +// ExpressionEditor<OWLDescription> editor2 = new ExpressionEditor<OWLDescription>(); +// editor2.setVisible(true); +// editor.setDescription(unsatClass); - if(regularButton.isSelected()){ + + if (regularButton.isSelected()) { showRegularExplanations(); } else { showLaconicExplanations(); } - + } - - @Override public void actionPerformed(ActionEvent e) { - if(e.getActionCommand().equals("regular")){ + if (e.getActionCommand().equals("regular")) { showRegularExplanations(); - } else if(e.getActionCommand().equals("laconic") && !unsatList.isSelectionEmpty()){ + } else if (e.getActionCommand().equals("laconic") + && !unsatList.isSelectionEmpty()) { showLaconicExplanations(); - + } - + } - - public static void main(String[] args){ - - String file = "file:examples/ore/miniEconomy.owl"; - - ExplanationManager manager = ExplanationManager.getExplanationManager(file); - ExplanationPanel panel = new ExplanationPanel(manager); - - - JFrame test = new JFrame(); - test.setLayout(new GridLayout(0, 1)); - test.setSize(new Dimension(800, 500)); - test.add(panel); - test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - test.setVisible(true); - - + + public static void main(String[] args) { + + try { + String file = "file:examples/ore/koala.owl"; + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI + .create(file)); + PelletReasonerFactory reasonerFactory = new PelletReasonerFactory(); + Reasoner reasoner = reasonerFactory.createReasoner(manager); + reasoner.loadOntologies(Collections.singleton(ontology)); + reasoner.classify(); + ExplanationManager expManager = ExplanationManager + .getExplanationManager(manager, reasoner, ontology); + ImpactManager impManager = ImpactManager.getImpactManager(manager, + reasoner, ontology); + ExplanationPanel panel = new ExplanationPanel(expManager, + impManager); + + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + + JFrame test = new JFrame(); + test.setLayout(new GridLayout(0, 1)); + test.setSize(new Dimension(1200, 700)); + test.add(panel); + test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + test.setVisible(true); + } catch (HeadlessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (UnsupportedLookAndFeelException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } } -} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,186 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.util.List; + +import javax.swing.AbstractCellEditor; +import javax.swing.JButton; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; + +import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class ExplanationTable extends JXTable implements ImpactManagerListener{ + + /** + * + */ + private static final long serialVersionUID = 5580730282611559609L; + + private List<OWLAxiom> explanation; + private ImpactManager impMan; + + public ExplanationTable(List<OWLAxiom> explanation, ImpactManager impMan, ExplanationManager expMan, OWLClass cl) { + this.explanation = explanation; + this.impMan = impMan; + setBackground(Color.WHITE); + setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + setModel(new ExplanationTableModel(explanation, expMan, impMan, cl)); + getColumn(0).setCellRenderer(new OWLSyntaxTableCellRenderer(impMan)); + TableColumn column4 = getColumn(3); + column4.setCellRenderer(new ButtonCellRenderer()); + column4.setCellEditor(new ButtonCellEditor()); + column4.setResizable(false); + setColumnSizes(); + getSelectionModel().addListSelectionListener(new ListSelectionListener(){ + + + final ExplanationTable table; + + @Override + public void valueChanged(ListSelectionEvent e) { + + table.changeSelection(); + + } + { + table = ExplanationTable.this; + + } + + }); + + addFocusListener(new FocusListener() { + + final ExplanationTable table; + + public void focusGained(FocusEvent focusevent) + { + } + + public void focusLost(FocusEvent e) + { + table.clearSelection(); + table.changeSelection(); + + } + + + + + { + + table = ExplanationTable.this; + + } + }); + } + + private OWLAxiom getOWLAxiomAtRow(int rowIndex){ + return ((ExplanationTableModel)getModel()).getOWLAxiomAtRow(rowIndex); + } + + private void setColumnSizes(){ + getColumn(1).setMaxWidth(30); + getColumn(2).setMaxWidth(30); + getColumn(3).setMaxWidth(80); + } + + private void changeSelection() { + + + if(getSelectedRow() >=0){ + OWLAxiom rowAxiom = getOWLAxiomAtRow(getSelectedRow()); + impMan.setActualAxiom(rowAxiom); + } else { + impMan.setActualAxiom(null); + } + + } + + class ButtonCellRenderer extends JButton implements TableCellRenderer{ + + /** + * + */ + private static final long serialVersionUID = 1962950956976967243L; + + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + if (isSelected) { + setForeground(table.getSelectionForeground()); + setBackground(table.getSelectionBackground()); + } else { + setForeground(table.getForeground()); + setBackground(UIManager.getColor("Button.background")); + } + setText( (value ==null) ? "" : value.toString() ); + return this; + } + + + } + + class ButtonCellEditor extends AbstractCellEditor implements + TableCellEditor, ActionListener { + /** + * + */ + private static final long serialVersionUID = 9017452102605141646L; + JTable table; + JButton editButton; + String text; + + + public ButtonCellEditor() { + super(); + + editButton = new JButton(); + editButton.setFocusPainted(false); + editButton.addActionListener(this); + } + + + @Override + public Component getTableCellEditorComponent(JTable table, + Object value, boolean isSelected, int row, int column) { + text = (value == null) ? "" : value.toString(); + editButton.setText(text); + return editButton; + } + + @Override + public Object getCellEditorValue() { + return text; + } + + @Override + public void actionPerformed(ActionEvent e) { + fireEditingStopped(); + } + } + + @Override + public void axiomForImpactChanged() { + repaint(); + + } + + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,99 @@ +package org.dllearner.tools.ore; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class ExplanationTableModel extends AbstractTableModel { + + + /** + * + */ + private static final long serialVersionUID = -4537633628250304813L; + private List<OWLAxiom> axioms; + private List<Boolean> remove; + private ExplanationManager expMan; + private ImpactManager impMan; + private OWLClass unsat; + + public ExplanationTableModel(List<OWLAxiom> axioms, ExplanationManager expMan, ImpactManager impMan, OWLClass cl){ + this.axioms = axioms; + this.expMan = expMan; + this.impMan = impMan; + this.unsat = cl; + remove = new ArrayList<Boolean>(); + for(int i = 0; i < axioms.size(); i++){ + remove.add(false); + } + } + + @Override + public int getColumnCount() { + return 4; + } + + @Override + public int getRowCount() { + return axioms.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0 && rowIndex >=0){ + return axioms.get(rowIndex); + } else if(columnIndex == 1){ + return expMan.getArity(unsat, axioms.get(rowIndex)); + } else if(columnIndex == 2) { + return Boolean.valueOf(impMan.isSelected(getOWLAxiomAtRow(rowIndex)));//remove.get(rowIndex); + } else { + return "rewrite"; + } + + } + + + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + if(columnIndex == 2){ + OWLAxiom ax = getOWLAxiomAtRow(rowIndex); + if(impMan.isSelected(ax)){ + impMan.removeAxiomFromImpactList(ax); + } else { + impMan.addAxiom2ImpactList(ax); + } + } + super.setValueAt(value, rowIndex, columnIndex); + } + + @Override + public Class<? extends Object> getColumnClass(int columnIndex){ + if(columnIndex == 0) { + return OWLAxiom.class; + } else if(columnIndex == 1){ + return int.class; + } else if(columnIndex == 2) { + return Boolean.class; + } else { + return String.class; + } + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(columnIndex == 2 || columnIndex == 3) + return true; + return false; + } + + public OWLAxiom getOWLAxiomAtRow(int rowIndex){ + return axioms.get(rowIndex); + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java 2009-05-15 11:55:08 UTC (rev 1751) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTablePanel.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -23,6 +23,7 @@ this.explanationTable = explanationTable; this.explanationNumber = explanationNumber; createGUI(); + } private void createGUI(){ Added: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,89 @@ +package org.dllearner.tools.ore; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.dllearner.tools.ore.explanation.AxiomRanker; +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyManager; + +public class ImpactManager { + + private static ImpactManager instance; + private Map<OWLAxiom, Set<OWLAxiom>> impact; + private AxiomRanker ranker; + private OWLAxiom actual; + private List<OWLAxiom> selectedAxioms; + private List<ImpactManagerListener> listeners; + + private ImpactManager(OWLOntologyManager manager, Reasoner reasoner, OWLOntology ontology) { + impact = new HashMap<OWLAxiom, Set<OWLAxiom>>(); + selectedAxioms = new ArrayList<OWLAxiom>(); + listeners = new ArrayList<ImpactManagerListener>(); + ranker = new AxiomRanker(ontology, reasoner, manager.getOWLDataFactory()); + + } + + private ImpactManager(){ + + } + + public void addListener(ImpactManagerListener listener){ + listeners.add(listener); + } + + public void removeListener(ImpactManagerListener listener){ + listeners.remove(listener); + } + + public static synchronized ImpactManager getImpactManager(OWLOntologyManager manager, Reasoner reasoner, OWLOntology ontology) { + if (instance == null) { + instance = new ImpactManager(manager, reasoner, ontology); + } + return instance; + } + + + public Set<OWLAxiom> getImpactAxioms() { + Set<OWLAxiom> imp = impact.get(actual); + if (imp == null) { + imp = new HashSet<OWLAxiom>(); + impact.put(actual, imp); + imp.addAll(ranker.computeImpactSOS(actual)); + } + return imp; + } + + public void setActualAxiom(OWLAxiom ax){ + actual = ax; + fireAxiomForImpactChanged(); + } + + public void addAxiom2ImpactList(OWLAxiom ax){ + selectedAxioms.add(ax); + fireAxiomForImpactChanged(); + } + + public void removeAxiomFromImpactList(OWLAxiom ax){ + selectedAxioms.remove(ax); + fireAxiomForImpactChanged(); + } + + public boolean isSelected(OWLAxiom ax){ + return selectedAxioms.contains(ax); + } + + private void fireAxiomForImpactChanged(){ + for(ImpactManagerListener listener : listeners){ + listener.axiomForImpactChanged(); + } + } + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,5 @@ +package org.dllearner.tools.ore; + +public interface ImpactManagerListener { + public abstract void axiomForImpactChanged(); +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTable.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,27 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; + +import org.jdesktop.swingx.JXTable; + +public class ImpactTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 4146762679753151490L; + + public ImpactTable(ImpactManager manager){ + super(new ImpactTableModel(manager)); + + setShowHorizontalLines(true); + setGridColor(Color.LIGHT_GRAY); + setTableHeader(null); + getColumnModel().getColumn(0).setCellRenderer(new OWLSyntaxTableCellRenderer()); + setRowHeight(getRowHeight() + 4); + + } + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -0,0 +1,61 @@ +package org.dllearner.tools.ore; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.semanticweb.owl.model.OWLAxiom; + +public class ImpactTableModel extends AbstractTableModel implements ImpactManagerListener +{ + + /** + * + */ + private static final long serialVersionUID = 6109818990550020196L; + private ImpactManager impMan; + private List<OWLAxiom> impact; + + public ImpactTableModel(ImpactManager impMan) + { + + impact = new ArrayList<OWLAxiom>(); + this.impMan = impMan; + impMan.addListener(this); + rebuildData(); + } + + private void rebuildData() + { + impact.clear(); + impact.addAll(impMan.getImpactAxioms()); + Collections.sort(impact); + fireTableDataChanged(); + } + + + + public int getRowCount() + { + return impact.size(); + } + + public int getColumnCount() + { + return 1; + } + + public Object getValueAt(int rowIndex, int columnIndex) + { + return impact.get(rowIndex); + } + + + @Override + public void axiomForImpactChanged() { + rebuildData(); + + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java 2009-05-15 11:55:08 UTC (rev 1751) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java 2009-05-17 19:43:11 UTC (rev 1752) @@ -22,10 +22,12 @@ private StringWriter buffer; private TextBlockWriter writer; private ManchesterSyntaxObjectRenderer renderer; + private ImpactManager impMan; // private List<String> oldAxioms; - public OWLSyntaxTableCellRenderer(){ + public OWLSyntaxTableCellRenderer(ImpactManager impMan){ super(); + this.impMan = impMan; buffer = new StringWriter(); writer = new TextBlockWriter(buffer); renderer = new ManchesterSyntaxObjectRenderer(writer); @@ -34,12 +36,24 @@ // oldAxioms = new ArrayList<String>(); } + + public OWLSyntaxTableCellRenderer(){ + super(); + buffer = new StringWriter(); + writer = new TextBlockWriter(buffer); + renderer = new ManchesterSyntaxObjectRenderer(writer); + renderer.setWrapLines( false ); + renderer.setSmartIndent( true ); + } + @Override protected void setValue(Object value) { if(value instanceof OWLAxiom){ - - + boolean striked = false; + if(impMan != null && impMan.isSelected((OWLAxiom)value)){ + striked = true; + } ((OWLAxiom)value).accept(renderer); writer.flush(); @@ -71,6 +85,10 @@ StringBuffer bf = new StringBuffer(); bf.append("<html>"); + if(striked){ + bf.append("<strike>"); + } + String token; while(st.hasMoreTokens()){ token = st.nextToken(); @@ -88,8 +106,12 @@ bf.append(" " + token + " "); } } + if(striked){ + bf.append("</strike>"); + } bf.append("</html>"); newAxiom = bf.toString(); + setText(newAxiom); // oldAxioms.add(buffer.toString()); buffer.getBuffer().delete(0, buffer.toString().length()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-05-20 09:23:00
|
Revision: 1764 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1764&view=rev Author: lorenz_b Date: 2009-05-20 09:22:49 +0000 (Wed, 20 May 2009) Log Message: ----------- added refreshing action after executing repair plan Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairTable.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairTableModel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -13,6 +13,7 @@ import org.dllearner.tools.ore.explanation.RootFinder; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; @@ -29,7 +30,7 @@ import com.clarkparsia.explanation.PelletExplanation; -public class ExplanationManager implements OWLOntologyChangeListener{ +public class ExplanationManager implements OWLOntologyChangeListener, ImpactManagerListener{ private static ExplanationManager instance; @@ -49,17 +50,18 @@ - private ExplanationManager(OWLOntologyManager manager, Reasoner reasoner, - OWLOntology ontology) { + private ExplanationManager(Reasoner reasoner) { regularExplanationCache = new HashMap<OWLClass, Set<Set<OWLAxiom>>>(); laconicExplanationCache = new HashMap<OWLClass, Set<Set<OWLAxiom>>>(); - this.manager = manager; this.reasoner = reasoner; - this.ontology = ontology; + this.manager = reasoner.getManager(); + this.ontology = reasoner.getLoadedOntologies().iterator().next(); + manager.addOntologyChangeListener(this); + manager.addOntologyChangeListener(reasoner); dataFactory = manager.getOWLDataFactory(); - + ImpactManager.getImpactManager(reasoner).addListener(this); reasonerFactory = new PelletReasonerFactory(); rootFinder = new RootFinder(manager, reasoner, reasonerFactory); @@ -75,9 +77,9 @@ } public static synchronized ExplanationManager getExplanationManager( - OWLOntologyManager manager, Reasoner reasoner, OWLOntology ontology) { + Reasoner reasoner) { if (instance == null) { - instance = new ExplanationManager(manager, reasoner, ontology); + instance = new ExplanationManager(reasoner); } return instance; } @@ -177,10 +179,12 @@ } @Override - public void ontologiesChanged(List<? extends OWLOntologyChange> arg0) - throws OWLException { + public void ontologiesChanged(List<? extends OWLOntologyChange> changes) + throws OWLException {System.out.println(changes); ontologyChanged = true; + + } public int getArity(OWLClass cl, OWLAxiom ax) { @@ -197,6 +201,20 @@ } return arity; } + + @Override + public void axiomForImpactChanged() { + // TODO Auto-generated method stub + + } + + @Override + public void repairPlanExecuted() { + reasoner.refresh(); + ontologyChanged = true; + regularExplanationCache.clear(); + laconicExplanationCache.clear(); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -31,17 +31,22 @@ import javax.swing.event.ListSelectionListener; import org.jdesktop.swingx.JXList; +import org.mindswap.pellet.PelletOptions; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; +import org.mindswap.pellet.utils.progress.SwingProgressMonitor; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.OWLOntologyChangeListener; import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; public class ExplanationPanel extends JPanel implements ListSelectionListener, - ActionListener { + ActionListener,ImpactManagerListener{ private JXList unsatList; private JSplitPane splitPane; @@ -74,6 +79,7 @@ this.expManager = expMan; this.impManager = impMan; + impManager.addListener(this); setLayout(new BorderLayout()); Dimension minimumSize = new Dimension(400, 400); @@ -121,14 +127,29 @@ statsSplitPane.setResizeWeight(1.0D); statsSplitPane.setTopComponent(buttonExplanationsPanel); + //repair panel + JPanel impactRepairPanel = new JPanel(); + impactRepairPanel.setLayout(new BorderLayout()); + impactRepairPanel.add(new JLabel("Repair plan"), BorderLayout.NORTH); + JSplitPane impRepSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + impRepSplit.setOneTouchExpandable(true); + impRepSplit.setDividerLocation(600); + impRepSplit.setBorder(null); + impactRepairPanel.add(impRepSplit); + JPanel impactPanel = new JPanel(); impactPanel.setLayout(new BorderLayout()); impactPanel.add(new JLabel("Lost entailments"), BorderLayout.NORTH); - JScrollPane scr = new JScrollPane(new ImpactTable(impManager)); - impactPanel.add(scr); + JScrollPane impScr = new JScrollPane(new ImpactTable(impManager)); + impactPanel.add(impScr); + impRepSplit.setRightComponent(impactPanel); - statsSplitPane.setBottomComponent(impactPanel); + RepairPlanPanel repairPanel = new RepairPlanPanel(impManager); + impRepSplit.setLeftComponent(repairPanel); + + statsSplitPane.setBottomComponent(impactRepairPanel); + statsSplitPane.setBorder(null); statsSplitPane.setDividerLocation(500); statsSplitPane.setOneTouchExpandable(true); @@ -235,9 +256,9 @@ // editor.setDescription(unsatClass); - if (regularButton.isSelected()) { + if (!unsatList.isSelectionEmpty() && regularButton.isSelected()) { showRegularExplanations(); - } else { + } else if(!unsatList.isSelectionEmpty()){ showLaconicExplanations(); } @@ -254,30 +275,73 @@ } } + + @Override + public void axiomForImpactChanged() { + // TODO Auto-generated method stub + + } + @Override + public void repairPlanExecuted() { + explanationsPanel.removeAll(); + + fillUnsatClassesList(); + repaint(); + } + + public static void main(String[] args) { try { - String file = "file:examples/ore/koala.owl"; + String file = "file:examples/ore/miniEconomy.owl"; + PelletOptions.USE_CLASSIFICATION_MONITOR = PelletOptions.MonitorType.NONE; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); + + org.mindswap.pellet.utils.progress.ProgressMonitor mon = new SwingProgressMonitor(); PelletReasonerFactory reasonerFactory = new PelletReasonerFactory(); Reasoner reasoner = reasonerFactory.createReasoner(manager); reasoner.loadOntologies(Collections.singleton(ontology)); +// reasoner.getKB().getTaxonomyBuilder().setProgressMonitor(mon); +// mon.taskStarted(); reasoner.classify(); +// mon.taskFinished(); + + + +// try { +// String text = "Koala SubclassOf Class: Animal"; +// OWLEntityChecker checker = new EntityChecker(manager); +// ManchesterOWLSyntaxEditorParser parser = new ManchesterOWLSyntaxEditorParser(manager.getOWLDataFactory(),text); +// parser.setOWLEntityChecker(checker); +// parser.parseOntology(manager, ontology); +// parser.setBase(ontology.getURI().toString() + "#"); +// parser.parseDescription(); +// } catch (OWLOntologyChangeException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (ParserException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } + + + + ExplanationManager expManager = ExplanationManager - .getExplanationManager(manager, reasoner, ontology); - ImpactManager impManager = ImpactManager.getImpactManager(manager, - reasoner, ontology); + .getExplanationManager(reasoner); + ImpactManager impManager = ImpactManager.getImpactManager( + reasoner); ExplanationPanel panel = new ExplanationPanel(expManager, impManager); - + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); JFrame test = new JFrame(); test.setLayout(new GridLayout(0, 1)); - test.setSize(new Dimension(1200, 700)); + test.setSize(new Dimension(1400, 1000)); test.add(panel); test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setVisible(true); @@ -302,4 +366,8 @@ } } + + + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -6,6 +6,8 @@ import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.util.List; import javax.swing.AbstractCellEditor; @@ -35,6 +37,7 @@ public ExplanationTable(List<OWLAxiom> explanation, ImpactManager impMan, ExplanationManager expMan, OWLClass cl) { this.explanation = explanation; this.impMan = impMan; + impMan.addListener(this); setBackground(Color.WHITE); setAutoResizeMode(JTable.AUTO_RESIZE_OFF); setModel(new ExplanationTableModel(explanation, expMan, impMan, cl)); @@ -86,6 +89,19 @@ } }); + + addMouseListener(new MouseAdapter() { + + final ExplanationTable table; + { + table = ExplanationTable.this; + } + public void mouseClicked(MouseEvent e){ + if(e.getClickCount() == 2){ + System.out.println(getValueAt(table.rowAtPoint(e.getPoint()), 0)); + } + } + }); } private OWLAxiom getOWLAxiomAtRow(int rowIndex){ @@ -100,13 +116,13 @@ private void changeSelection() { - - if(getSelectedRow() >=0){ - OWLAxiom rowAxiom = getOWLAxiomAtRow(getSelectedRow()); - impMan.setActualAxiom(rowAxiom); - } else { - impMan.setActualAxiom(null); - } +// +// if(getSelectedRow() >=0){ +// OWLAxiom rowAxiom = getOWLAxiomAtRow(getSelectedRow()); +// impMan.setActualAxiom(rowAxiom); +// } else { +// impMan.setActualAxiom(null); +// } } @@ -179,6 +195,12 @@ repaint(); } + + @Override + public void repairPlanExecuted() { + // TODO Auto-generated method stub + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -49,7 +49,7 @@ } else if(columnIndex == 1){ return expMan.getArity(unsat, axioms.get(rowIndex)); } else if(columnIndex == 2) { - return Boolean.valueOf(impMan.isSelected(getOWLAxiomAtRow(rowIndex)));//remove.get(rowIndex); + return Boolean.valueOf(impMan.isSelected(getOWLAxiomAtRow(rowIndex))); } else { return "rewrite"; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -11,7 +11,10 @@ import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.OWLOntologyChangeException; import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.RemoveAxiom; public class ImpactManager { @@ -21,12 +24,16 @@ private OWLAxiom actual; private List<OWLAxiom> selectedAxioms; private List<ImpactManagerListener> listeners; + private OWLOntology ontology; + private OWLOntologyManager manager; - private ImpactManager(OWLOntologyManager manager, Reasoner reasoner, OWLOntology ontology) { + private ImpactManager(Reasoner reasoner) { + this.ontology = reasoner.getLoadedOntologies().iterator().next(); + this.manager = reasoner.getManager(); impact = new HashMap<OWLAxiom, Set<OWLAxiom>>(); selectedAxioms = new ArrayList<OWLAxiom>(); listeners = new ArrayList<ImpactManagerListener>(); - ranker = new AxiomRanker(ontology, reasoner, manager.getOWLDataFactory()); + ranker = new AxiomRanker(ontology, reasoner, manager); } @@ -42,24 +49,41 @@ listeners.remove(listener); } - public static synchronized ImpactManager getImpactManager(OWLOntologyManager manager, Reasoner reasoner, OWLOntology ontology) { + public static synchronized ImpactManager getImpactManager(Reasoner reasoner) { if (instance == null) { - instance = new ImpactManager(manager, reasoner, ontology); + instance = new ImpactManager(reasoner); } return instance; } - public Set<OWLAxiom> getImpactAxioms() { - Set<OWLAxiom> imp = impact.get(actual); + public Set<OWLAxiom> getImpactAxioms(OWLAxiom ax) { + + Set<OWLAxiom> imp = impact.get(ax); if (imp == null) { imp = new HashSet<OWLAxiom>(); - impact.put(actual, imp); - imp.addAll(ranker.computeImpactSOS(actual)); + impact.put(ax, imp); + if(ax != null){ + imp.addAll(ranker.computeImpactOnRemoval(ax)); + imp.addAll(ranker.computeImpactSOS(ax));//computeImpactSOS(actual)); + } } return imp; } + public Set<OWLAxiom> getImpactForAxioms2Remove(){ + Set<OWLAxiom> totalImpact = new HashSet<OWLAxiom>(); + for(OWLAxiom ax : selectedAxioms){ + Set<OWLAxiom> imp = getImpactAxioms(ax); + if(imp != null){ + totalImpact.addAll(imp); + } + + + } + return totalImpact; + } + public void setActualAxiom(OWLAxiom ax){ actual = ax; fireAxiomForImpactChanged(); @@ -67,6 +91,7 @@ public void addAxiom2ImpactList(OWLAxiom ax){ selectedAxioms.add(ax); + fireAxiomForImpactChanged(); } @@ -79,11 +104,37 @@ return selectedAxioms.contains(ax); } + public List<OWLAxiom> getAxioms2Remove(){ + return selectedAxioms; + } + + public void executeRepairPlan(){ + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); + for(OWLAxiom ax : selectedAxioms){ + changes.add(new RemoveAxiom(ontology, ax)); + } + try { + manager.applyChanges(changes); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + impact.clear(); + selectedAxioms.clear(); + fireRepairPlanExecuted(); + } + private void fireAxiomForImpactChanged(){ for(ImpactManagerListener listener : listeners){ listener.axiomForImpactChanged(); } } + private void fireRepairPlanExecuted(){ + for(ImpactManagerListener listener : listeners){ + listener.repairPlanExecuted(); + } + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManagerListener.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -2,4 +2,5 @@ public interface ImpactManagerListener { public abstract void axiomForImpactChanged(); + public abstract void repairPlanExecuted(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -30,7 +30,7 @@ private void rebuildData() { impact.clear(); - impact.addAll(impMan.getImpactAxioms()); + impact.addAll(impMan.getImpactForAxioms2Remove()); Collections.sort(impact); fireTableDataChanged(); } @@ -58,4 +58,12 @@ rebuildData(); } + + @Override + public void repairPlanExecuted() { + rebuildData(); + + } + + } Added: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPlanPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPlanPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPlanPanel.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -0,0 +1,43 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; + +import javax.swing.AbstractAction; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +public class RepairPlanPanel extends JPanel { + + /** + * + */ + private static final long serialVersionUID = 537629900742120594L; + private ImpactManager impMan; + + public RepairPlanPanel(ImpactManager impMan) { + this.impMan = impMan; + + setLayout(new BorderLayout()); + add(new JLabel("Axioms to remove"), BorderLayout.NORTH); + JPanel buttonPanel = new JPanel(new FlowLayout(2)); + add(buttonPanel, "South"); + buttonPanel.add(new JButton(new AbstractAction("compute plan") { + + public void actionPerformed(ActionEvent e) { + computeRepairPlan(); + } + + })); + + JScrollPane repScr = new JScrollPane(new RepairTable(impMan)); + add(repScr); + } + + private void computeRepairPlan() { + impMan.executeRepairPlan(); + } +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/RepairTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairTable.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -0,0 +1,24 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; + +import org.jdesktop.swingx.JXTable; + +public class RepairTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = -621497634521668635L; + + public RepairTable(ImpactManager manager){ + super(new RepairTableModel(manager)); + + setShowHorizontalLines(true); + setGridColor(Color.LIGHT_GRAY); + setTableHeader(null); + getColumnModel().getColumn(0).setCellRenderer(new OWLSyntaxTableCellRenderer()); + setRowHeight(getRowHeight() + 4); + + } +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/RepairTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairTableModel.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -0,0 +1,67 @@ +package org.dllearner.tools.ore; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.semanticweb.owl.model.OWLAxiom; + +public class RepairTableModel extends AbstractTableModel implements ImpactManagerListener{ + + /** + * + */ + private static final long serialVersionUID = -5898900692701380258L; + private ImpactManager impMan; + private List<OWLAxiom> axioms2Remove; + + public RepairTableModel(ImpactManager impMan) + { + + axioms2Remove = new ArrayList<OWLAxiom>(); + this.impMan = impMan; + impMan.addListener(this); + rebuildData(); + } + + private void rebuildData() + { + axioms2Remove.clear(); + axioms2Remove.addAll(impMan.getAxioms2Remove()); + Collections.sort(axioms2Remove); + fireTableDataChanged(); + } + + + + public int getRowCount() + { + return axioms2Remove.size(); + } + + public int getColumnCount() + { + return 1; + } + + public Object getValueAt(int rowIndex, int columnIndex) + { + return axioms2Remove.get(rowIndex); + } + + + @Override + public void axiomForImpactChanged() { + rebuildData(); + + } + + @Override + public void repairPlanExecuted() { + rebuildData(); + + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -11,6 +11,8 @@ import org.mindswap.pellet.owlapi.Reasoner; import org.mindswap.pellet.utils.SetUtils; import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.inference.OWLReasonerException; +import org.semanticweb.owl.model.AxiomType; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; @@ -26,19 +28,82 @@ import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.RemoveAxiom; +import com.clarkparsia.modularity.IncrementalClassifier; + public class AxiomRanker { private Map axiomSOSMap; + private OWLOntology ontology; private Reasoner reasoner; + private OWLOntologyManager manager; private OWLDataFactory factory; + boolean enableImpactUnsat; - public AxiomRanker(OWLOntology ont, Reasoner reasoner, OWLDataFactory fact){ + public AxiomRanker(OWLOntology ont, Reasoner reasoner, OWLOntologyManager mng){ this.ontology = ont; this.reasoner = reasoner; - this.factory = fact; + this.manager = mng; + this.factory = manager.getOWLDataFactory(); } + + public Set<OWLAxiom> computeImpactOnRemoval(OWLAxiom ax){ + Set<OWLAxiom> impact = new HashSet<OWLAxiom>(); + + try { + IncrementalClassifier classifier = new IncrementalClassifier(manager); + classifier.loadOntology(ontology); + classifier.classify(); + Set<OWLClass> inc = classifier.getInconsistentClasses(); + for(OWLDescription cl : ontology.getClassesInSignature()){ + if(!inc.contains(cl)){ + for(OWLClass sup : SetUtils.union(classifier.getAncestorClasses(cl))){ + if(!sup.equals(factory.getOWLThing())){ + for(OWLClass sub : SetUtils.union(classifier.getDescendantClasses(cl))){ + if(!sub.equals(factory.getOWLNothing())){ + impact.add(factory.getOWLSubClassAxiom(cl, sup)); + } + } + + } + } + + } + } + + + manager.applyChange(new RemoveAxiom(ontology, ax)); + classifier.classify(); + inc = classifier.getInconsistentClasses(); + + for(OWLDescription cl : ontology.getClassesInSignature()){ + if(!inc.contains(cl)){ + for(OWLClass sup : SetUtils.union(classifier.getAncestorClasses(cl))){ + if(!sup.equals(factory.getOWLThing())){ + for(OWLClass sub : SetUtils.union(classifier.getDescendantClasses(cl))){ + if(!sub.equals(factory.getOWLNothing())){ + impact.remove(factory.getOWLSubClassAxiom(cl, sup)); + } + } + + } + } + + } + } + manager.addAxiom(ontology, ax);classifier.classify(); + + } catch (OWLReasonerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return impact; + } public Set<OWLAxiom> computeImpactSOS(OWLAxiom axiom) { Set<OWLAxiom> result = new HashSet<OWLAxiom>(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicExplanationGenerator.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicExplanationGenerator.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -286,8 +286,7 @@ public Set<Set<OWLAxiom>> getRegularExplanations(OWLAxiom entailment) throws ExplanationException { Set<Set<OWLAxiom>> regularJusts; - - regularJusts = pelletExplanation.getEntailmentExplanations((OWLAxiom)entailment); + regularJusts = pelletExplanation.getEntailmentExplanations((OWLAxiom)entailment); lastRegularJusts.addAll(regularJusts); return regularJusts; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-05-20 09:15:53 UTC (rev 1763) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-05-20 09:22:49 UTC (rev 1764) @@ -15,6 +15,7 @@ import org.semanticweb.owl.inference.OWLReasonerException; import org.semanticweb.owl.inference.OWLReasonerFactory; import org.semanticweb.owl.model.AxiomType; +import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataAllRestriction; import org.semanticweb.owl.model.OWLDataExactCardinalityRestriction; @@ -83,6 +84,7 @@ } public Set<OWLClass> getRootClasses(){ + rootClasses.clear(); computePossibleRoots(); pruneRoots(); rootClasses.remove(manager.getOWLDataFactory().getOWLNothing()); @@ -164,6 +166,7 @@ } private void reset(){ + depend2Classes.clear(); depth2ExistsRestrictionPropertyMap.clear(); depth2UniversalRestrictionPropertyMap.clear(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-06-03 16:03:12
|
Revision: 1789 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1789&view=rev Author: lorenz_b Date: 2009-06-03 16:03:06 +0000 (Wed, 03 Jun 2009) Log Message: ----------- added new step to wizard which shows explanations when ontology is inconsistent currently still for testing purpose Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ClassificationProgressMonitor.java trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/ClassificationProgressMonitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ClassificationProgressMonitor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ClassificationProgressMonitor.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -0,0 +1,117 @@ +package org.dllearner.tools.ore; + +import java.awt.Cursor; +import java.awt.Dimension; + +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.SwingUtilities; + +import org.mindswap.pellet.utils.progress.ProgressMonitor; + +public class ClassificationProgressMonitor extends JPanel implements ProgressMonitor{ + + /** + * + */ + private static final long serialVersionUID = -4913267621100462227L; + private javax.swing.ProgressMonitor monitor; + private JProgressBar progressBar; + private String progressMessage = ""; + private String progressTitle = ""; + private int progress = 0; + private int progressLength = 0; + private int progressPercent = -1; + private long startTime = -1; + private boolean canceled = false; + + + public ClassificationProgressMonitor(){ + super(); + monitor = new javax.swing.ProgressMonitor(this, progressTitle, progressMessage, 0 ,progressLength); + progressBar = new JProgressBar(0, progressLength); + progressBar.setValue(progress); + progressBar.setStringPainted(true); + add(progressBar); + setSize(new Dimension(200, 200)); + + } + + @Override + public int getProgress() { + return progress; + } + + @Override + public int getProgressPercent() { + return progressPercent; + } + + @Override + public void incrementProgress() { + setProgress(progress + 1); + + } + + @Override + public boolean isCanceled() { + return monitor.isCanceled(); + } + + @Override + public void setProgress(int progress) { + this.progress = progress; + updateProgress(); + + } + + @Override + public void setProgressLength(int length) { + progressLength = length; + monitor.setMaximum(length); + progressBar.setMaximum(length); + + } + + @Override + public void setProgressMessage(String message) { + progressMessage = message; + monitor.setNote(message); + + } + + @Override + public void setProgressTitle(String title) { + progressTitle = title; + + } + + @Override + public void taskFinished() { + monitor.close(); + setCursor(null); + + } + + @Override + public void taskStarted() { + setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + } + + private void updateProgress(){ + SwingUtilities.invokeLater(new Runnable(){ + + @Override + public void run() { + monitor.setProgress(progress); + progressBar.setValue(progress); + + } + + }); + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-06-03 14:14:07 UTC (rev 1788) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -138,6 +138,32 @@ } + public Set<Set<OWLAxiom>> getInconsistencyExplanations(){ + Set<Set<OWLAxiom>> explanations = regularExplanationCache.get(dataFactory.getOWLThing()); + if(explanations == null){ + explanations = regularExpGen.getInconsistencyExplanations(); + regularExplanationCache.put(dataFactory.getOWLThing(), explanations); + } + return explanations; + } + + public Set<Set<OWLAxiom>> getLaconicInconsistencyExplanations(){ + OWLClass thing = dataFactory.getOWLThing(); + Set<Set<OWLAxiom>> explanations = laconicExplanationCache.get(thing); + OWLSubClassAxiom unsatAxiom; + if(explanations == null){ + unsatAxiom = dataFactory.getOWLSubClassAxiom(thing, dataFactory.getOWLNothing()); + try { + explanations = laconicExpGen.getExplanations(unsatAxiom); + } catch (ExplanationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + laconicExplanationCache.put(thing, explanations); + } + return explanations; + } + public Set<List<OWLAxiom>> getOrderedUnsatisfiableExplanations(OWLClass unsat){ return getOrderedExplanations(dataFactory.getOWLSubClassAxiom(unsat, dataFactory.getOWLNothing()), @@ -152,6 +178,18 @@ } + public Set<List<OWLAxiom>> getOrderedInconsistencyExplanations(){ + + return getOrderedExplanations(dataFactory.getOWLSubClassAxiom(dataFactory.getOWLThing(), dataFactory.getOWLNothing()), + getInconsistencyExplanations()); + + } + + public Set<List<OWLAxiom>> getOrderedLaconicInconsistencyExplanations(){ + return getOrderedExplanations(dataFactory.getOWLSubClassAxiom(dataFactory.getOWLThing(), dataFactory.getOWLNothing()), + getLaconicInconsistencyExplanations()); + } + public ArrayList<OWLAxiom> getTree2List(Tree<OWLAxiom> tree){ ArrayList<OWLAxiom> ordering = new ArrayList<OWLAxiom>(); ordering.add((OWLAxiom)tree.getUserObject()); @@ -180,7 +218,7 @@ @Override public void ontologiesChanged(List<? extends OWLOntologyChange> changes) - throws OWLException {System.out.println(changes); + throws OWLException { ontologyChanged = true; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-06-03 14:14:07 UTC (rev 1788) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -25,6 +25,7 @@ import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JSplitPane; +import javax.swing.ProgressMonitor; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.event.ListSelectionEvent; @@ -35,16 +36,19 @@ import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; import org.mindswap.pellet.utils.progress.SwingProgressMonitor; +import org.protege.editor.owl.ui.inference.ClassifyAction; import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.inference.OWLReasonerException; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; -import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyChange; -import org.semanticweb.owl.model.OWLOntologyChangeListener; import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; +import com.clarkparsia.modularity.AxiomBasedModuleExtractor; +import com.clarkparsia.modularity.IncrementalClassifier; +import com.clarkparsia.modularity.ModuleExtractor; + public class ExplanationPanel extends JPanel implements ListSelectionListener, ActionListener,ImpactManagerListener{ @@ -294,23 +298,32 @@ public static void main(String[] args) { try { - String file = "file:examples/ore/miniEconomy.owl"; - PelletOptions.USE_CLASSIFICATION_MONITOR = PelletOptions.MonitorType.NONE; + String file = "file:examples/ore/tambis.owl"; + PelletOptions.USE_CLASSIFICATION_MONITOR = PelletOptions.MonitorType.SWING; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); org.mindswap.pellet.utils.progress.ProgressMonitor mon = new SwingProgressMonitor(); + org.mindswap.pellet.utils.progress.ProgressMonitor m = new ClassificationProgressMonitor(); + JFrame fr = new JFrame(); + fr.setSize(new Dimension(400, 400)); + fr.setLayout(new BorderLayout()); + fr.add((JPanel)m); + fr.setVisible(true); PelletReasonerFactory reasonerFactory = new PelletReasonerFactory(); Reasoner reasoner = reasonerFactory.createReasoner(manager); reasoner.loadOntologies(Collections.singleton(ontology)); -// reasoner.getKB().getTaxonomyBuilder().setProgressMonitor(mon); + reasoner.getKB().getTaxonomyBuilder().setProgressMonitor(mon); // mon.taskStarted(); + + reasoner.classify(); -// mon.taskFinished(); + + // try { // String text = "Koala SubclassOf Class: Animal"; // OWLEntityChecker checker = new EntityChecker(manager); @@ -363,7 +376,7 @@ } catch (UnsupportedLookAndFeelException e) { // TODO Auto-generated catch block e.printStackTrace(); - } + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-06-03 14:14:07 UTC (rev 1788) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -64,8 +64,8 @@ imp = new HashSet<OWLAxiom>(); impact.put(ax, imp); if(ax != null){ - imp.addAll(ranker.computeImpactOnRemoval(ax)); - imp.addAll(ranker.computeImpactSOS(ax));//computeImpactSOS(actual)); +// imp.addAll(ranker.computeImpactOnRemoval(ax)); + imp.addAll(ranker.computeImpactSOS(ax)); } } return imp; Added: trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -0,0 +1,132 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.ActionListener; +import java.util.List; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.ButtonGroup; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JSeparator; +import javax.swing.JSplitPane; + +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLAxiom; + +public class InconsistencyExplanationPanel extends JPanel{ + + /** + * + */ + private static final long serialVersionUID = 9206626647697013786L; + + private JSplitPane statsSplitPane; + + private JScrollPane explanationsScrollPane; + private JComponent explanationsPanel; + private JPanel buttonExplanationsPanel; + private JPanel buttonPanel; + private ButtonGroup explanationType; + private JRadioButton regularButton; + private JRadioButton laconicButton; + + private ImpactManager impMan; + private ExplanationManager expMan; + + + public InconsistencyExplanationPanel(ExplanationManager expMan, ImpactManager impMan) { + + this.expMan = expMan; + this.impMan = impMan; + +// impManager.addListener(this); + setLayout(new BorderLayout()); + + Dimension minimumSize = new Dimension(400, 400); + + + explanationsPanel = new Box(1); + + JPanel pan = new JPanel(new BorderLayout()); + pan.add(explanationsPanel, BorderLayout.NORTH); + explanationsScrollPane = new JScrollPane(pan); + explanationsScrollPane.setPreferredSize(minimumSize); + explanationsScrollPane.setBorder(BorderFactory + .createLineBorder(Color.LIGHT_GRAY)); + explanationsScrollPane.getViewport().setOpaque(false); + explanationsScrollPane.getViewport().setBackground(null); + explanationsScrollPane.setOpaque(false); + + regularButton = new JRadioButton("regular", true); + regularButton.setActionCommand("regular"); +// regularButton.addActionListener(this); + laconicButton = new JRadioButton("laconic"); + laconicButton.setActionCommand("laconic"); +// laconicButton.addActionListener(this); + explanationType = new ButtonGroup(); + explanationType.add(regularButton); + explanationType.add(laconicButton); + buttonPanel = new JPanel(); + buttonPanel.add(regularButton); + buttonPanel.add(laconicButton); + + buttonExplanationsPanel = new JPanel(); + buttonExplanationsPanel.setLayout(new BorderLayout()); + buttonExplanationsPanel + .add(explanationsScrollPane, BorderLayout.CENTER); + buttonExplanationsPanel.add(buttonPanel, BorderLayout.NORTH); + + statsSplitPane = new JSplitPane(0); + statsSplitPane.setResizeWeight(1.0D); + statsSplitPane.setTopComponent(buttonExplanationsPanel); + + //repair panel + JPanel repairPanelHolder = new JPanel(); + repairPanelHolder.setOpaque(false); + repairPanelHolder.setLayout(new BorderLayout()); + repairPanelHolder.add(new JLabel("Repair plan"), BorderLayout.NORTH); + RepairPlanPanel repairPanel = new RepairPlanPanel(impMan); + repairPanelHolder.add(repairPanel); + + + statsSplitPane.setBottomComponent(repairPanelHolder); + + statsSplitPane.setBorder(null); + statsSplitPane.setDividerLocation(500); + statsSplitPane.setOneTouchExpandable(true); + + add(statsSplitPane); + + } + + public void clearExplanationsPanel(){ + explanationsPanel.removeAll(); + } + + public void addExplanation(List<OWLAxiom> explanation, int counter){ + ExplanationTable expTable = new ExplanationTable(explanation, impMan, expMan, OWLManager.createOWLOntologyManager().getOWLDataFactory().getOWLThing()); + explanationsPanel.add(new ExplanationTablePanel(expTable, counter)); + + explanationsPanel.add(Box.createVerticalStrut(10)); + explanationsPanel.add(new JSeparator()); + explanationsPanel.add(Box.createVerticalStrut(10)); + this.updateUI(); + } + + public void addActionListeners(ActionListener aL){ + regularButton.addActionListener(aL); + laconicButton.addActionListener(aL); + } + + + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -0,0 +1,90 @@ +package org.dllearner.tools.ore; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.List; + +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.model.OWLAxiom; + +public class InconsistencyExplanationPanelDescriptor extends WizardPanelDescriptor implements ActionListener{ + public static final String IDENTIFIER = "INCONSISTENCY_PANEL"; + public static final String INFORMATION = ""; + + private InconsistencyExplanationPanel panel; + private ExplanationManager expMan; + private ImpactManager impMan; + + public InconsistencyExplanationPanelDescriptor() { + + setPanelDescriptorIdentifier(IDENTIFIER); + + } + + public void init() { + Reasoner reasoner = getWizardModel().getOre().getPelletReasoner() + .getReasoner(); + expMan = ExplanationManager.getExplanationManager(reasoner); + impMan = ImpactManager.getImpactManager(reasoner); + panel = new InconsistencyExplanationPanel(expMan, impMan); + panel.addActionListeners(this); + setPanelComponent(panel); + + + } + + private void showLaconicExplanations() { + panel.clearExplanationsPanel(); + int counter = 1; + for (List<OWLAxiom> explanation : expMan + .getOrderedLaconicInconsistencyExplanations()) { + panel.addExplanation(explanation, counter); + counter++; + } + + } + + private void showRegularExplanations() { + panel.clearExplanationsPanel(); + int counter = 1; + for (List<OWLAxiom> explanation : expMan + .getOrderedInconsistencyExplanations()) { + panel.addExplanation(explanation, counter); + counter++; + } + } + + + + + + @Override + public Object getNextPanelDescriptor() { + return ClassPanelOWLDescriptor.IDENTIFIER; + } + + @Override + public Object getBackPanelDescriptor() { + return null; + } + + @Override + public void aboutToDisplayPanel() { + showRegularExplanations(); + getWizard().getInformationField().setText(INFORMATION); + } + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("regular")) { + showRegularExplanations(); + } else if (e.getActionCommand().equals("laconic")) { + showLaconicExplanations(); + + } + + } + + +} + \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2009-06-03 14:14:07 UTC (rev 1788) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -21,7 +21,10 @@ package org.dllearner.tools.ore; import java.io.File; +import java.io.IOException; +import java.io.StringWriter; import java.net.MalformedURLException; +import java.net.URL; import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -41,6 +44,7 @@ import org.dllearner.core.LearningProblem; import org.dllearner.core.LearningProblemUnsupportedException; import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.configurators.ComponentFactory; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; @@ -53,14 +57,13 @@ import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.reasoning.PelletReasoner; import org.mindswap.pellet.exceptions.InconsistentOntologyException; -import org.mindswap.pellet.owlapi.PelletReasonerFactory; -import org.mindswap.pellet.owlapi.Reasoner; -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyCreationException; -import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLException; +import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; + /** * This class contains init methods, and is used as broker between wizard and OWL-API. * @author Lorenz Buehmann @@ -69,18 +72,17 @@ public class ORE { private LearningAlgorithm la; - private ReasonerComponent rs; + private KnowledgeSource ks; private LearningProblem lp; private ComponentManager cm; private ReasonerComponent fastReasoner; - private ReasonerComponent owlReasoner; - private SortedSet<Individual> posExamples; - private SortedSet<Individual> negExamples; + private PelletReasoner pelletReasoner; - private NamedClass classToLearn; + + private NamedClass class2Learn; private EvaluatedDescriptionClass newClassDescription; @@ -116,6 +118,7 @@ // TODO Auto-generated catch block e1.printStackTrace(); } + try { ks.init(); @@ -126,24 +129,26 @@ } - public boolean consistentOntology() throws InconsistentOntologyException{ - boolean consistent = true; + public void initPelletReasoner(){ + pelletReasoner = cm.reasoner(PelletReasoner.class, ks); try { - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLOntology ont = manager.loadOntology(owlFile.toURI()); - Reasoner reasoner = new PelletReasonerFactory().createReasoner(manager); - reasoner.loadOntology(ont); - - consistent = reasoner.isConsistent(); - } catch (OWLOntologyCreationException e) { + pelletReasoner.init(); + } catch (ComponentInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } - - return consistent; + pelletReasoner.loadOntologies(); } + public boolean consistentOntology() throws InconsistentOntologyException{ + return pelletReasoner.isConsistent(); + } + public PelletReasoner getPelletReasoner(){ + return pelletReasoner; + } + + /** * Initialize the reasoners. */ @@ -156,33 +161,36 @@ // TODO Auto-generated catch block e.printStackTrace(); } + pelletReasoner.loadOntologies(); + pelletReasoner.classify(); + modifier = new OntologyModifier(pelletReasoner); + baseURI = fastReasoner.getBaseURI(); + prefixes = fastReasoner.getPrefixes(); - - - owlReasoner = cm.reasoner(OWLAPIReasoner.class, ks); + } + + public String getInconsistencyExplanationsString(){ + ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); + StringWriter buffer = new StringWriter(); + renderer.startRendering(buffer); try { - owlReasoner.init(); - } catch (ComponentInitException e) { + renderer.render(getInconsistencyExplanations()); + } catch (UnsupportedOperationException e) { // TODO Auto-generated catch block e.printStackTrace(); + } catch (OWLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } - modifier = new OntologyModifier(owlReasoner, rs); - baseURI = fastReasoner.getBaseURI(); - prefixes = fastReasoner.getPrefixes(); - + renderer.endRendering(); + return buffer.toString(); } - - - - public void setPosNegExamples(){ - posExamples = owlReasoner.getIndividuals(classToLearn); - negExamples = owlReasoner.getIndividuals(); - - - for (Individual pos : posExamples){ - negExamples.remove(pos); - } + private Set<Set<OWLAxiom>> getInconsistencyExplanations(){ + return pelletReasoner.getInconsistencyReasons(); } @@ -204,17 +212,15 @@ return prefixes; } - public ReasonerComponent getOwlReasoner() { - return owlReasoner; - } public ReasonerComponent getFastReasoner() { return fastReasoner; } public void setLearningProblem(){ - lp = cm.learningProblem(ClassLearningProblem.class, fastReasoner); - cm.applyConfigEntry(lp, "classToDescribe", classToLearn.toString()); + + lp = ComponentFactory.getClassLearningProblem(fastReasoner, getClass2LearnAsURL()); + try { lp.init(); } catch (ComponentInitException e) { @@ -223,6 +229,18 @@ } } + private URL getClass2LearnAsURL(){ + URL classURL = null; + try { + classURL = new URL(class2Learn.toString()); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return classURL; + + } + public void setNoise(double noise){ System.out.println("setze noise auf" + noise); cm.applyConfigEntry(la, "noisePercentage", noise); @@ -236,20 +254,16 @@ } public void setLearningAlgorithm(){ + try { - la = cm.learningAlgorithm(CELOE.class, lp, fastReasoner); + la = ComponentFactory.getCELOE(lp, fastReasoner); cm.applyConfigEntry(la, "useNegation", false); } catch (LearningProblemUnsupportedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } - - Set<String> t = new TreeSet<String>(); - - - t.add(classToLearn.getName()); -// cm.applyConfigEntry(la, "ignoredConcepts", t); -// cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 10); + + try { la.init(); } catch (ComponentInitException e) { @@ -261,21 +275,14 @@ /** * Sets the class that has to be learned. - * @param oldClass class that is choosen to be (re)learned + * @param oldClass class that is chosen to be (re)learned */ - public void setClassToLearn(NamedClass oldClass){ - this.classToLearn = oldClass; + public void setClassToLearn(NamedClass class2Learn){ + this.class2Learn = class2Learn; } public void init(){ -// try { -// owlReasoner.init(); -// fastReasoner.init(); -// } catch (ComponentInitException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - this.setPosNegExamples(); + this.setLearningProblem(); this.setLearningAlgorithm(); @@ -286,10 +293,7 @@ * */ public void start(){ - Set<String> t = new TreeSet<String>(); -// t.add(classToLearn.getName()); -// cm.applyConfigEntry(la, "ignoredConcepts", t); -// cm.applyConfigEntry(la, "noisePercentage", noise); + try { la.init(); } catch (ComponentInitException e) { @@ -310,7 +314,7 @@ } public NamedClass getIgnoredConcept() { - return classToLearn; + return class2Learn; } @@ -325,7 +329,7 @@ Set<Description> criticals = new HashSet<Description>(); List<Description> children = desc.getChildren(); - if(owlReasoner.hasType(desc, ind)){ + if(pelletReasoner.hasType(desc, ind)){ if(children.size() >= 2){ @@ -335,7 +339,7 @@ } } else if(desc instanceof Union){ for(Description d: children){ - if(owlReasoner.hasType(d, ind)){ + if(pelletReasoner.hasType(d, ind)){ criticals.addAll(getNegCriticalDescriptions(ind, d)); } } @@ -468,7 +472,7 @@ */ public Set<Individual> getIndividualsInPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ - Set<Individual> individuals = owlReasoner.getIndividuals(objRestr.getChild(0)); + Set<Individual> individuals = pelletReasoner.getIndividuals(objRestr.getChild(0)); individuals.remove(ind); return individuals; @@ -484,7 +488,7 @@ Set<Individual> allIndividuals = new HashSet<Individual>(); - for(Individual i : owlReasoner.getIndividuals()){ + for(Individual i : pelletReasoner.getIndividuals()){ // try { if(!fastReasoner.hasType(objRestr.getChild(0), i)){ @@ -507,12 +511,12 @@ */ public Set<NamedClass> getpossibleClassesMoveTo(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : owlReasoner.getNamedClasses()){ - if(!owlReasoner.hasType(nc, ind)){ + for(NamedClass nc : pelletReasoner.getNamedClasses()){ + if(!pelletReasoner.hasType(nc, ind)){ moveClasses.add(nc); } } - moveClasses.remove(classToLearn); + moveClasses.remove(class2Learn); return moveClasses; } @@ -524,12 +528,12 @@ */ public Set<NamedClass> getpossibleClassesMoveFrom(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : owlReasoner.getNamedClasses()){ - if(owlReasoner.hasType(nc, ind)){ + for(NamedClass nc : pelletReasoner.getNamedClasses()){ + if(pelletReasoner.hasType(nc, ind)){ moveClasses.add(nc); } } - moveClasses.remove(classToLearn); + moveClasses.remove(class2Learn); return moveClasses; } @@ -545,10 +549,10 @@ // TODO Auto-generated catch block e.printStackTrace(); } - owlReasoner = cm.reasoner(OWLAPIReasoner.class, new OWLAPIOntology(modifier.getOntology())); + try { - owlReasoner.init(); + pelletReasoner.init(); } catch (ComponentInitException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -563,19 +567,20 @@ * @param ind */ public Set<NamedClass> getComplements(Description desc, Individual ind){ -// System.out.println("----------------" + desc + "---------------"); + Set<NamedClass> complements = new HashSet<NamedClass>(); - for(NamedClass nc : owlReasoner.getNamedClasses()){ + System.out.println(pelletReasoner.getComplementClasses(desc)); + for(NamedClass nc : pelletReasoner.getNamedClasses()){ if(!(nc.toString().endsWith("Thing"))){ - if(owlReasoner.hasType(nc, ind)){ + if(pelletReasoner.hasType(nc, ind)){ if(modifier.isComplement(desc, nc)){ complements.add(nc); } } } } - System.out.println("Disjunkt sind: " + complements); + return complements; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-06-03 14:14:07 UTC (rev 1788) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -28,7 +28,6 @@ import java.util.List; import java.util.Set; -import org.dllearner.core.ReasonerComponent; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; @@ -37,6 +36,7 @@ import org.dllearner.core.owl.ObjectPropertyAssertion; import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.reasoning.PelletReasoner; import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.apibinding.OWLManager; @@ -75,18 +75,18 @@ public class OntologyModifier { private OWLOntology ontology; - private ReasonerComponent reasoner; + private PelletReasoner reasoner; private OWLDataFactory factory; private OWLOntologyManager manager; - private ReasonerComponent rs; - public OntologyModifier(ReasonerComponent reasoner, ReasonerComponent rs){ + + public OntologyModifier(PelletReasoner reasoner){ this.reasoner = reasoner; - this.manager = OWLManager.createOWLOntologyManager(); + this.manager = reasoner.getOWLOntologyManager(); this.factory = manager.getOWLDataFactory(); - this.ontology = ((OWLAPIReasoner)reasoner).getOWLAPIOntologies().get(0); - this.rs = rs; + this.ontology = (reasoner.getOWLAPIOntologies()); + } /** @@ -595,7 +595,7 @@ } OWLDebugger debugger = new BlackBoxOWLDebugger(manager, ontology, checker); - for(OWLClass owlClass : ((OWLAPIReasoner)reasoner).getInconsistentOWLClasses()){ + for(OWLClass owlClass : reasoner.getInconsistentOWLClasses()){ /* Find the sets of support and print them */ Set<Set<OWLAxiom>> allsos = null; try { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2009-06-03 14:14:07 UTC (rev 1788) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -99,7 +99,7 @@ DefaultListModel posModel = repairPanel.getPosFailureModel(); posModel.clear();System.out.println(ore.getNewClassDescription().getCoveredInstances()); - Set<Individual> posNotCovered = ore.getOwlReasoner().getIndividuals(ore.getIgnoredConcept()); + Set<Individual> posNotCovered = ore.getPelletReasoner().getIndividuals(ore.getIgnoredConcept()); posNotCovered.removeAll(ore.getNewClassDescription().getCoveredInstances()); for(Individual ind : posNotCovered){ posModel.addElement(ind); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2009-06-03 14:14:07 UTC (rev 1788) +++ trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -100,7 +100,7 @@ classPane = new JXTaskPane(); classPane.setTitle("Classes"); - oldClasses = ore.getOwlReasoner().getTypes(ind); + oldClasses = ore.getPelletReasoner().getTypes(ind); for(NamedClass nc : oldClasses){ classPane.add(new JLabel(nc.toManchesterSyntaxString(baseURI, prefixes))); } @@ -154,7 +154,7 @@ classPane.removeAll(); Set<String> newClassesString = new HashSet<String>(); - for (NamedClass nc : ore.getOwlReasoner().getTypes(ind)){ + for (NamedClass nc : ore.getPelletReasoner().getTypes(ind)){ newClassesString.add(nc.toManchesterSyntaxString(baseURI, prefixes)); } Set<String> oldClassesString = new HashSet<String>(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2009-06-03 14:14:07 UTC (rev 1788) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -21,22 +21,21 @@ package org.dllearner.tools.ore; +import java.awt.Dimension; import java.awt.event.ActionListener; import java.util.List; import java.util.Set; import java.util.concurrent.ExecutionException; -import java.util.logging.Level; import javax.swing.DefaultListModel; -import javax.swing.Icon; +import javax.swing.JDialog; import javax.swing.JOptionPane; +import javax.swing.JProgressBar; +import javax.swing.SwingUtilities; import javax.swing.SwingWorker; -import javax.swing.UIManager; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.NamedClass; -import org.jdesktop.swingx.JXErrorPane; -import org.jdesktop.swingx.error.ErrorInfo; import org.semanticweb.owl.model.OWLOntologyChange; /** @@ -96,20 +95,30 @@ WizardPanelDescriptor nextDescriptor = model.getPanelHashMap().get(nextPanelDescriptor); if(nextPanelDescriptor.equals("CLASS_CHOOSE_OWL_PANEL")){ -// model.getOre().getOwlReasoner().isSatisfiable() + ore.initPelletReasoner(); + if(!ore.consistentOntology()){ - Exception e = new Exception("ff"); - ErrorInfo info = new ErrorInfo("Inconsistent ontology", "2", "3", null, e, Level.ALL, null); - JXErrorPane error = new JXErrorPane(); - Icon icon = UIManager.getIcon("JOptionPane.errorIcon"); - error.setErrorInfo(info); - error.setIcon(icon);System.out.println(icon); - JXErrorPane.showDialog(wizard.getDialog(), error); + int n = showInconsistentOntologyWarning(); + + if(n == JOptionPane.NO_OPTION){ + nextPanelDescriptor = KnowledgeSourcePanelDescriptor.IDENTIFIER; + } else { + InconsistencyExplanationPanelDescriptor incDescriptor = new InconsistencyExplanationPanelDescriptor(); + wizard.registerWizardPanel(InconsistencyExplanationPanelDescriptor.IDENTIFIER, incDescriptor); + ((InconsistencyExplanationPanelDescriptor)model.getPanelHashMap().get(InconsistencyExplanationPanelDescriptor.IDENTIFIER)).init(); + incDescriptor.init(); + wizard.registerWizardPanel(InconsistencyExplanationPanelDescriptor.IDENTIFIER, incDescriptor); + nextPanelDescriptor = InconsistencyExplanationPanelDescriptor.IDENTIFIER; + } + + + } else { + ((ClassPanelOWLDescriptor) nextDescriptor).getOwlClassPanel().getModel().clear(); + new ConceptRetriever(nextPanelDescriptor).execute(); } - ((ClassPanelOWLDescriptor) nextDescriptor).getOwlClassPanel().getModel().clear(); - new ConceptRetriever(nextPanelDescriptor).execute(); + } if(nextPanelDescriptor.equals("LEARNING_PANEL")){ @@ -229,8 +238,41 @@ } + + private int showInconsistentOntologyWarning(){ +// Exception e = new Exception("ff"); + String infoString = "<html>Can not do reasoning with inconsistent ontologies, " + + "since everything is equivalent to owl:nothing\n" + + "<ul>" + + "<li>Press 'Yes' and try to repair the ontology</li>" + + "<li>Press 'No' and choose another ontology or exit</li>" + + "</ul></html>"; +// ErrorInfo info = new ErrorInfo("Warning: Inconsistent ontology.",infoString , wizard.getModel().getOre().getInconsistencyExplanationsString(), null, e, Level.ALL, null); +// JXErrorPane error = new JXErrorPane(); +// Icon icon = UIManager.getIcon("OptionPane.warningIcon"); +// error.setErrorInfo(info); +// error.setIcon(icon); +// JXErrorPane.showDialog(wizard.getDialog(), error); + + Object[] options = {"Yes", + "No"}; + int n = JOptionPane.showOptionDialog(wizard.getDialog(), + infoString, + "Inconsistent ontology loaded!", + JOptionPane.YES_NO_OPTION, + JOptionPane.WARNING_MESSAGE, + null, //do not use a custom Icon + options, //the titles of buttons + options[0]); //default button title + + return n; + + } + + + void resetButtonsToPanelRules() { // Reset the buttons to support the original panel rules, @@ -298,10 +340,10 @@ // owlClassPanel.getList().setCellRenderer(new ColorListCellRenderer(wizard.getModel().getOre())); wizard.getModel().getOre().initReasoners(); + + Set<NamedClass> classes = wizard.getModel().getOre().getPelletReasoner().getNamedClasses(); + - Set<NamedClass> classes = wizard.getModel().getOre().getOwlReasoner().getNamedClasses(); - unsatClasses = wizard.getModel().getOre().getOwlReasoner().getInconsistentClasses(); - return classes; } @@ -336,6 +378,13 @@ } } + + + + + + + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-06-03 14:14:07 UTC (rev 1788) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-06-03 16:03:06 UTC (rev 1789) @@ -212,6 +212,9 @@ } } } + for(OWLAxiom ax : result){ + System.out.println(reasoner.isEntailed(axiom)); + } return result; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-06-07 16:43:48
|
Revision: 1791 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1791&view=rev Author: lorenz_b Date: 2009-06-07 16:43:07 +0000 (Sun, 07 Jun 2009) Log Message: ----------- small changes to work with the inconsistency panel Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/Main.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-06-03 16:05:00 UTC (rev 1790) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-06-07 16:43:07 UTC (rev 1791) @@ -13,7 +13,6 @@ import org.dllearner.tools.ore.explanation.RootFinder; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; -import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; @@ -47,6 +46,7 @@ private Set<OWLClass> unsatClasses; private Set<OWLClass> rootClasses; boolean ontologyChanged = true; + boolean isLaconicMode = false; @@ -59,17 +59,17 @@ this.ontology = reasoner.getLoadedOntologies().iterator().next(); manager.addOntologyChangeListener(this); - manager.addOntologyChangeListener(reasoner); +// manager.addOntologyChangeListener(reasoner); dataFactory = manager.getOWLDataFactory(); ImpactManager.getImpactManager(reasoner).addListener(this); reasonerFactory = new PelletReasonerFactory(); rootFinder = new RootFinder(manager, reasoner, reasonerFactory); - regularExpGen = new PelletExplanation(manager, Collections - .singleton(ontology)); + regularExpGen = new PelletExplanation(reasoner.getManager(), reasoner.getLoadedOntologies()); + laconicExpGen = new LaconicExplanationGenerator(manager, - reasonerFactory, Collections.singleton(ontology)); + reasonerFactory, manager.getOntologies()); rootClasses = new HashSet<OWLClass>(); unsatClasses = new HashSet<OWLClass>(); @@ -223,11 +223,18 @@ + + } public int getArity(OWLClass cl, OWLAxiom ax) { int arity = 0; - Set<Set<OWLAxiom>> explanations = regularExplanationCache.get(cl); + Set<Set<OWLAxiom>> explanations; + if(isLaconicMode){ + explanations = laconicExplanationCache.get(cl); + } else { + explanations = regularExplanationCache.get(cl); + } if(explanations != null){ @@ -239,6 +246,11 @@ } return arity; } + + public void setLaconicMode(boolean laconic){ + isLaconicMode = laconic; + + } @Override public void axiomForImpactChanged() { @@ -250,6 +262,9 @@ public void repairPlanExecuted() { reasoner.refresh(); ontologyChanged = true; + regularExpGen = new PelletExplanation(reasoner.getManager(), reasoner.getLoadedOntologies()); + laconicExpGen = new LaconicExplanationGenerator(manager, + reasonerFactory, reasoner.getLoadedOntologies()); regularExplanationCache.clear(); laconicExplanationCache.clear(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-06-03 16:05:00 UTC (rev 1790) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-06-07 16:43:07 UTC (rev 1791) @@ -25,7 +25,6 @@ import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JSplitPane; -import javax.swing.ProgressMonitor; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.event.ListSelectionEvent; @@ -36,19 +35,13 @@ import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; import org.mindswap.pellet.utils.progress.SwingProgressMonitor; -import org.protege.editor.owl.ui.inference.ClassifyAction; import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.inference.OWLReasonerException; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; -import com.clarkparsia.modularity.AxiomBasedModuleExtractor; -import com.clarkparsia.modularity.IncrementalClassifier; -import com.clarkparsia.modularity.ModuleExtractor; - public class ExplanationPanel extends JPanel implements ListSelectionListener, ActionListener,ImpactManagerListener{ @@ -298,7 +291,7 @@ public static void main(String[] args) { try { - String file = "file:examples/ore/tambis.owl"; + String file = "file:examples/ore/koala.owl"; PelletOptions.USE_CLASSIFICATION_MONITOR = PelletOptions.MonitorType.SWING; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-06-03 16:05:00 UTC (rev 1790) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-06-07 16:43:07 UTC (rev 1791) @@ -26,8 +26,10 @@ private List<ImpactManagerListener> listeners; private OWLOntology ontology; private OWLOntologyManager manager; + private Reasoner reasoner; private ImpactManager(Reasoner reasoner) { + this.reasoner = reasoner; this.ontology = reasoner.getLoadedOntologies().iterator().next(); this.manager = reasoner.getManager(); impact = new HashMap<OWLAxiom, Set<OWLAxiom>>(); @@ -116,9 +118,10 @@ try { manager.applyChanges(changes); } catch (OWLOntologyChangeException e) { - // TODO Auto-generated catch block + System.out.println("Error in Impactmanager: Couldn't apply ontology changes"); e.printStackTrace(); } + impact.clear(); selectedAxioms.clear(); fireRepairPlanExecuted(); @@ -131,6 +134,7 @@ } private void fireRepairPlanExecuted(){ + for(ImpactManagerListener listener : listeners){ listener.repairPlanExecuted(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java 2009-06-03 16:05:00 UTC (rev 1790) +++ trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java 2009-06-07 16:43:07 UTC (rev 1791) @@ -106,7 +106,7 @@ } - public void clearExplanationsPanel(){ + public void clearExplanationsPanel(){System.out.println("Clearing explanations"); explanationsPanel.removeAll(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java 2009-06-03 16:05:00 UTC (rev 1790) +++ trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java 2009-06-07 16:43:07 UTC (rev 1791) @@ -7,13 +7,15 @@ import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.model.OWLAxiom; -public class InconsistencyExplanationPanelDescriptor extends WizardPanelDescriptor implements ActionListener{ +public class InconsistencyExplanationPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ImpactManagerListener{ public static final String IDENTIFIER = "INCONSISTENCY_PANEL"; public static final String INFORMATION = ""; private InconsistencyExplanationPanel panel; private ExplanationManager expMan; private ImpactManager impMan; + private Reasoner reasoner; + private boolean laconicMode = false; public InconsistencyExplanationPanelDescriptor() { @@ -22,19 +24,22 @@ } public void init() { - Reasoner reasoner = getWizardModel().getOre().getPelletReasoner() + reasoner = getWizardModel().getOre().getPelletReasoner() .getReasoner(); expMan = ExplanationManager.getExplanationManager(reasoner); impMan = ImpactManager.getImpactManager(reasoner); + impMan.addListener(this); panel = new InconsistencyExplanationPanel(expMan, impMan); panel.addActionListeners(this); setPanelComponent(panel); + } private void showLaconicExplanations() { panel.clearExplanationsPanel(); + expMan.setLaconicMode(true); int counter = 1; for (List<OWLAxiom> explanation : expMan .getOrderedLaconicInconsistencyExplanations()) { @@ -46,6 +51,7 @@ private void showRegularExplanations() { panel.clearExplanationsPanel(); + expMan.setLaconicMode(false); int counter = 1; for (List<OWLAxiom> explanation : expMan .getOrderedInconsistencyExplanations()) { @@ -54,10 +60,25 @@ } } + private void showExplanations(){ + if(laconicMode) { + showLaconicExplanations(); + } else { + showRegularExplanations(); + } + } + private void setNextButtonEnabled2ConsistentOntology(){ + if(reasoner.isConsistent()){ + getWizard().setNextFinishButtonEnabled(true); + } else { + getWizard().setNextFinishButtonEnabled(false); + } + } + @Override public Object getNextPanelDescriptor() { return ClassPanelOWLDescriptor.IDENTIFIER; @@ -65,25 +86,44 @@ @Override public Object getBackPanelDescriptor() { - return null; + return KnowledgeSourcePanelDescriptor.IDENTIFIER; } @Override public void aboutToDisplayPanel() { showRegularExplanations(); getWizard().getInformationField().setText(INFORMATION); + getWizard().setNextFinishButtonEnabled(false); } @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("regular")) { - showRegularExplanations(); + laconicMode = false; } else if (e.getActionCommand().equals("laconic")) { - showLaconicExplanations(); - + laconicMode = true; } + showExplanations(); } + + @Override + public void axiomForImpactChanged() { + // TODO Auto-generated method stub + + } + + @Override + public void repairPlanExecuted() { + + System.out.println("repair plan executed"); + showExplanations(); + panel.repaint(); + setNextButtonEnabled2ConsistentOntology(); + + } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Main.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2009-06-03 16:05:00 UTC (rev 1790) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2009-06-07 16:43:07 UTC (rev 1791) @@ -20,6 +20,7 @@ package org.dllearner.tools.ore; +import java.awt.Dimension; import java.util.Locale; import javax.swing.UIManager; @@ -57,7 +58,8 @@ Locale.setDefault(Locale.ENGLISH); Wizard wizard = new Wizard(); wizard.getDialog().setTitle("DL-Learner ORE-Tool"); - wizard.getDialog().setSize(1300, 600); + Dimension dim = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + wizard.getDialog().setSize(dim); WizardPanelDescriptor descriptor1 = new IntroductionPanelDescriptor(); wizard.registerWizardPanel(IntroductionPanelDescriptor.IDENTIFIER, descriptor1); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPlanPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPlanPanel.java 2009-06-03 16:05:00 UTC (rev 1790) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPlanPanel.java 2009-06-07 16:43:07 UTC (rev 1791) @@ -34,6 +34,8 @@ })); JScrollPane repScr = new JScrollPane(new RepairTable(impMan)); + repScr.setBackground(null); + repScr.getViewport().setOpaque(false); add(repScr); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2009-06-03 16:05:00 UTC (rev 1790) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2009-06-07 16:43:07 UTC (rev 1791) @@ -108,7 +108,7 @@ InconsistencyExplanationPanelDescriptor incDescriptor = new InconsistencyExplanationPanelDescriptor(); wizard.registerWizardPanel(InconsistencyExplanationPanelDescriptor.IDENTIFIER, incDescriptor); ((InconsistencyExplanationPanelDescriptor)model.getPanelHashMap().get(InconsistencyExplanationPanelDescriptor.IDENTIFIER)).init(); - incDescriptor.init(); + wizard.registerWizardPanel(InconsistencyExplanationPanelDescriptor.IDENTIFIER, incDescriptor); nextPanelDescriptor = InconsistencyExplanationPanelDescriptor.IDENTIFIER; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-06-07 21:01:09
|
Revision: 1792 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1792&view=rev Author: lorenz_b Date: 2009-06-07 21:01:00 +0000 (Sun, 07 Jun 2009) Log Message: ----------- integrated 'unsatisfiable_explanation'-step into wizard structure Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/UnsatisfiableExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/UnsatisfiableExplanationPanelDescriptor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-06-07 16:43:07 UTC (rev 1791) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-06-07 21:01:00 UTC (rev 1792) @@ -121,6 +121,17 @@ return explanations; } + public Set<Set<OWLAxiom>> getUnsatisfiableExplanations(OWLClass unsat, int count){ + Set<Set<OWLAxiom>> explanations = regularExplanationCache.get(unsat); + if(explanations == null){ + explanations = regularExpGen.getUnsatisfiableExplanations(unsat, count); + regularExplanationCache.put(unsat, explanations); + } + + return explanations; + } + + public Set<Set<OWLAxiom>> getLaconicUnsatisfiableExplanations(OWLClass unsat){ Set<Set<OWLAxiom>> explanations = laconicExplanationCache.get(unsat); OWLSubClassAxiom unsatAxiom; @@ -171,6 +182,13 @@ } + public Set<List<OWLAxiom>> getOrderedUnsatisfiableExplanations(OWLClass unsat, int count){ + + return getOrderedExplanations(dataFactory.getOWLSubClassAxiom(unsat, dataFactory.getOWLNothing()), + getUnsatisfiableExplanations(unsat, count)); + + } + public Set<List<OWLAxiom>> getOrderedLaconicUnsatisfiableExplanations(OWLClass unsat){ return getOrderedExplanations(dataFactory.getOWLSubClassAxiom(unsat, dataFactory.getOWLNothing()), Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-06-07 16:43:07 UTC (rev 1791) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-06-07 21:01:00 UTC (rev 1792) @@ -291,7 +291,7 @@ public static void main(String[] args) { try { - String file = "file:examples/ore/koala.owl"; + String file = "file:examples/ore/tambis.owl"; PelletOptions.USE_CLASSIFICATION_MONITOR = PelletOptions.MonitorType.SWING; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI @@ -303,7 +303,7 @@ fr.setSize(new Dimension(400, 400)); fr.setLayout(new BorderLayout()); fr.add((JPanel)m); - fr.setVisible(true); +// fr.setVisible(true); PelletReasonerFactory reasonerFactory = new PelletReasonerFactory(); Reasoner reasoner = reasonerFactory.createReasoner(manager); reasoner.loadOntologies(Collections.singleton(ontology)); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java 2009-06-07 16:43:07 UTC (rev 1791) +++ trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanel.java 2009-06-07 21:01:00 UTC (rev 1792) @@ -106,7 +106,7 @@ } - public void clearExplanationsPanel(){System.out.println("Clearing explanations"); + public void clearExplanationsPanel(){ explanationsPanel.removeAll(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java 2009-06-07 16:43:07 UTC (rev 1791) +++ trunk/src/dl-learner/org/dllearner/tools/ore/InconsistencyExplanationPanelDescriptor.java 2009-06-07 21:01:00 UTC (rev 1792) @@ -116,7 +116,7 @@ @Override public void repairPlanExecuted() { - System.out.println("repair plan executed"); + showExplanations(); panel.repaint(); setNextButtonEnabled2ConsistentOntology(); Added: trunk/src/dl-learner/org/dllearner/tools/ore/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/UnsatisfiableExplanationPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/UnsatisfiableExplanationPanel.java 2009-06-07 21:01:00 UTC (rev 1792) @@ -0,0 +1,172 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.event.ActionListener; +import java.util.List; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.ButtonGroup; +import javax.swing.DefaultListModel; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.JSeparator; +import javax.swing.JSplitPane; +import javax.swing.event.ListSelectionListener; + +import org.jdesktop.swingx.JXList; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class UnsatisfiableExplanationPanel extends JPanel{ + + private JXList unsatList; + private JSplitPane splitPane; + private JSplitPane statsSplitPane; + private JScrollPane listScrollPane; + private JScrollPane explanationsScrollPane; + private JComponent explanationsPanel; + private JPanel buttonExplanationsPanel; + private JPanel buttonPanel; + private ButtonGroup explanationType; + private JRadioButton regularButton; + private JRadioButton laconicButton; + + private UnsatClassesListCellRenderer listRenderer; + + private ExplanationManager expMan; + private ImpactManager impMan; + + + + private OWLClass unsatClass; + + public UnsatisfiableExplanationPanel(ExplanationManager expMan, ImpactManager impMan){ + this.expMan = expMan; + this.impMan = impMan; + + + setLayout(new BorderLayout()); + + Dimension minimumSize = new Dimension(400, 400); + + listRenderer = new UnsatClassesListCellRenderer(expMan); + unsatList = new JXList(); + + + unsatList.setCellRenderer(listRenderer); + listScrollPane = new JScrollPane(unsatList); + listScrollPane.setPreferredSize(minimumSize); + + explanationsPanel = new Box(1); + + JPanel pan = new JPanel(new BorderLayout()); + pan.add(explanationsPanel, BorderLayout.NORTH); + explanationsScrollPane = new JScrollPane(pan); + explanationsScrollPane.setPreferredSize(minimumSize); + explanationsScrollPane.setBorder(BorderFactory + .createLineBorder(Color.LIGHT_GRAY)); + explanationsScrollPane.getViewport().setOpaque(false); + explanationsScrollPane.getViewport().setBackground(null); + explanationsScrollPane.setOpaque(false); + + regularButton = new JRadioButton("regular", true); + regularButton.setActionCommand("regular"); + + laconicButton = new JRadioButton("laconic"); + laconicButton.setActionCommand("laconic"); + + explanationType = new ButtonGroup(); + explanationType.add(regularButton); + explanationType.add(laconicButton); + buttonPanel = new JPanel(); + buttonPanel.add(regularButton); + buttonPanel.add(laconicButton); + + buttonExplanationsPanel = new JPanel(); + buttonExplanationsPanel.setLayout(new BorderLayout()); + buttonExplanationsPanel + .add(explanationsScrollPane, BorderLayout.CENTER); + buttonExplanationsPanel.add(buttonPanel, BorderLayout.NORTH); + + statsSplitPane = new JSplitPane(0); + statsSplitPane.setResizeWeight(1.0D); + statsSplitPane.setTopComponent(buttonExplanationsPanel); + + //repair panel + JPanel impactRepairPanel = new JPanel(); + impactRepairPanel.setLayout(new BorderLayout()); + impactRepairPanel.add(new JLabel("Repair plan"), BorderLayout.NORTH); + JSplitPane impRepSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + impRepSplit.setOneTouchExpandable(true); + impRepSplit.setDividerLocation(600); + impRepSplit.setBorder(null); + impactRepairPanel.add(impRepSplit); + + JPanel impactPanel = new JPanel(); + impactPanel.setLayout(new BorderLayout()); + impactPanel.add(new JLabel("Lost entailments"), BorderLayout.NORTH); + JScrollPane impScr = new JScrollPane(new ImpactTable(impMan)); + impactPanel.add(impScr); + impRepSplit.setRightComponent(impactPanel); + + RepairPlanPanel repairPanel = new RepairPlanPanel(impMan); + impRepSplit.setLeftComponent(repairPanel); + + + statsSplitPane.setBottomComponent(impactRepairPanel); + + statsSplitPane.setBorder(null); + statsSplitPane.setDividerLocation(500); + statsSplitPane.setOneTouchExpandable(true); + + splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, + statsSplitPane); + splitPane.setOneTouchExpandable(true); + splitPane.setDividerLocation(150); + splitPane.setBorder(null); + + add(splitPane); + } + + public void fillUnsatClassesList(List<OWLClass> unsatClasses) { + DefaultListModel model = new DefaultListModel(); + for(OWLClass cl : unsatClasses){ + model.addElement(cl); + } + + unsatList.setModel(model); + } + + public void clearExplanationsPanel() { + + explanationsPanel.removeAll(); + } + + public void addExplanation(List<OWLAxiom> explanation, OWLClass unsat, int counter) { + ExplanationTable expTable = new ExplanationTable(explanation, impMan, + expMan, unsat); + explanationsPanel.add(new ExplanationTablePanel(expTable, counter)); + + explanationsPanel.add(Box.createVerticalStrut(10)); + explanationsPanel.add(new JSeparator()); + explanationsPanel.add(Box.createVerticalStrut(10)); + this.updateUI(); + } + + public void addActionListeners(ActionListener aL) { + regularButton.addActionListener(aL); + laconicButton.addActionListener(aL); + } + + public void addListSelectionListener(ListSelectionListener l){ + unsatList.addListSelectionListener(l); + } + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/UnsatisfiableExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/UnsatisfiableExplanationPanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/UnsatisfiableExplanationPanelDescriptor.java 2009-06-07 21:01:00 UTC (rev 1792) @@ -0,0 +1,147 @@ +package org.dllearner.tools.ore; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; + +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import org.jdesktop.swingx.JXList; +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class UnsatisfiableExplanationPanelDescriptor extends + WizardPanelDescriptor implements ActionListener, ImpactManagerListener, ListSelectionListener{ + + public static final String IDENTIFIER = "UNSATISFIABLE_PANEL"; + public static final String INFORMATION = ""; + + private UnsatisfiableExplanationPanel panel; + private ExplanationManager expMan; + private ImpactManager impMan; + private Reasoner reasoner; + private boolean laconicMode = false; + private OWLClass unsatClass; + + public UnsatisfiableExplanationPanelDescriptor(){ + setPanelDescriptorIdentifier(IDENTIFIER); + } + + public void init() { + reasoner = getWizardModel().getOre().getPelletReasoner() + .getReasoner(); + expMan = ExplanationManager.getExplanationManager(reasoner); + impMan = ImpactManager.getImpactManager(reasoner); + impMan.addListener(this); + panel = new UnsatisfiableExplanationPanel(expMan, impMan); + panel.addActionListeners(this); + panel.addListSelectionListener(this); + setPanelComponent(panel); + + + + } + + private void showLaconicExplanations() { + panel.clearExplanationsPanel(); + expMan.setLaconicMode(true); + int counter = 1; + for (List<OWLAxiom> explanation : expMan + .getOrderedLaconicUnsatisfiableExplanations(unsatClass)) { + panel.addExplanation(explanation, unsatClass, counter); + counter++; + } + + } + + private void showRegularExplanations() { + panel.clearExplanationsPanel(); + expMan.setLaconicMode(false); + int counter = 1; + for (List<OWLAxiom> explanation : expMan + .getOrderedUnsatisfiableExplanations(unsatClass)) { + panel.addExplanation(explanation, unsatClass, counter); + counter++; + } + } + + private void showExplanations(){ + if(laconicMode) { + showLaconicExplanations(); + } else { + showRegularExplanations(); + } + } + + @Override + public Object getNextPanelDescriptor() { + return ClassPanelOWLDescriptor.IDENTIFIER; + } + + @Override + public Object getBackPanelDescriptor() { + return KnowledgeSourcePanelDescriptor.IDENTIFIER; + } + + @Override + public void aboutToDisplayPanel() { + fillUnsatClassesList(); + getWizard().getInformationField().setText(INFORMATION); + + } + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("regular")) { + laconicMode = false; + } else if (e.getActionCommand().equals("laconic")) { + laconicMode = true; + } + showExplanations(); + + } + + @Override + public void axiomForImpactChanged() { + // TODO Auto-generated method stub + + } + + @Override + public void repairPlanExecuted() { + panel.clearExplanationsPanel(); + + fillUnsatClassesList(); + panel.repaint(); + + } + + private void fillUnsatClassesList(){ + List<OWLClass> unsatClasses = new ArrayList<OWLClass>(); + Set<OWLClass> rootClasses = new TreeSet<OWLClass>(expMan + .getRootUnsatisfiableClasses()); + unsatClasses.addAll(rootClasses); + Set<OWLClass> derivedClasses = new TreeSet<OWLClass>(expMan + .getUnsatisfiableClasses()); + derivedClasses.removeAll(rootClasses); + + unsatClasses.addAll(derivedClasses); + panel.fillUnsatClassesList(unsatClasses); + } + + @Override + public void valueChanged(ListSelectionEvent e) { + JXList unsatList = (JXList) e.getSource(); + unsatClass = (OWLClass)unsatList.getSelectedValue(); + if (!unsatList.isSelectionEmpty()) { + showExplanations(); + } + + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2009-06-07 16:43:07 UTC (rev 1791) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2009-06-07 21:01:00 UTC (rev 1792) @@ -21,17 +21,13 @@ package org.dllearner.tools.ore; -import java.awt.Dimension; import java.awt.event.ActionListener; import java.util.List; import java.util.Set; import java.util.concurrent.ExecutionException; import javax.swing.DefaultListModel; -import javax.swing.JDialog; import javax.swing.JOptionPane; -import javax.swing.JProgressBar; -import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import org.dllearner.core.owl.Description; @@ -85,18 +81,19 @@ private void nextButtonPressed() { WizardModel model = wizard.getModel(); - WizardPanelDescriptor descriptor = model.getCurrentPanelDescriptor(); + WizardPanelDescriptor currentPanelDescriptor = model.getCurrentPanelDescriptor(); ORE ore = model.getOre(); // If it is a finishable panel, close down the dialog. Otherwise, // get the ID that the current panel identifies as the next panel, // and display it. - Object nextPanelDescriptor = descriptor.getNextPanelDescriptor(); + Object nextPanelDescriptor = currentPanelDescriptor.getNextPanelDescriptor(); WizardPanelDescriptor nextDescriptor = model.getPanelHashMap().get(nextPanelDescriptor); - - if(nextPanelDescriptor.equals("CLASS_CHOOSE_OWL_PANEL")){ + + if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals + (KnowledgeSourcePanelDescriptor.IDENTIFIER)){ ore.initPelletReasoner(); - + if(!ore.consistentOntology()){ @@ -115,11 +112,36 @@ } else { - ((ClassPanelOWLDescriptor) nextDescriptor).getOwlClassPanel().getModel().clear(); - new ConceptRetriever(nextPanelDescriptor).execute(); + ore.getPelletReasoner().classify(); + if(ore.getPelletReasoner().getInconsistentClasses().size() > 0 ){ + UnsatisfiableExplanationPanelDescriptor unsatDescriptor = new UnsatisfiableExplanationPanelDescriptor(); + wizard.registerWizardPanel(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER, unsatDescriptor); + ((UnsatisfiableExplanationPanelDescriptor)model.getPanelHashMap().get(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)).init(); + wizard.registerWizardPanel(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER, unsatDescriptor); + nextPanelDescriptor = UnsatisfiableExplanationPanelDescriptor.IDENTIFIER; + } else { + + nextPanelDescriptor = ClassPanelOWLDescriptor.IDENTIFIER; + ((ClassPanelOWLDescriptor) nextDescriptor).getOwlClassPanel().getModel().clear(); + new ConceptRetriever(nextPanelDescriptor).execute(); + } + } } + if(currentPanelDescriptor.equals(InconsistencyExplanationPanelDescriptor.IDENTIFIER)){ + ore.getPelletReasoner().classify(); + if(ore.getPelletReasoner().getInconsistentClasses().size() > 0 ){ + + } else { + nextPanelDescriptor = KnowledgeSourcePanelDescriptor.IDENTIFIER; + } + } + if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)){ + nextPanelDescriptor = ClassPanelOWLDescriptor.IDENTIFIER; + ((ClassPanelOWLDescriptor) nextDescriptor).getOwlClassPanel().getModel().clear(); + new ConceptRetriever(nextPanelDescriptor).execute(); + } if(nextPanelDescriptor.equals("LEARNING_PANEL")){ ore.init(); @@ -144,7 +166,7 @@ Description oldClass = model.getOre().getIgnoredConcept(); List<OWLOntologyChange> changes = ore.getModifier().rewriteClassDescription(newDesc, oldClass); - ((RepairPanelDescriptor) descriptor).getOntologyChanges().addAll(changes); + ((RepairPanelDescriptor) currentPanelDescriptor).getOntologyChanges().addAll(changes); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-08-04 20:02:49
|
Revision: 1817 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1817&view=rev Author: lorenz_b Date: 2009-08-04 20:02:34 +0000 (Tue, 04 Aug 2009) Log Message: ----------- refactored package structure, since developing and maintaining became to ineffective Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColorListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColumnListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.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/RepairTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UndoLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatClassesListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardPanelNotFoundException.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassPanelOWLDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassPanelSparqlDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.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/descriptors/UnsatisfiableExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ChangePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ChangesPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassPanelOWL.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassPanelSparql.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/DescriptionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ExplanationTablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.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/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/SavePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/ClassificationProgressMonitor.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,117 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Cursor; +import java.awt.Dimension; + +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.SwingUtilities; + +import org.mindswap.pellet.utils.progress.ProgressMonitor; + +public class ClassificationProgressMonitor extends JPanel implements ProgressMonitor{ + + /** + * + */ + private static final long serialVersionUID = -4913267621100462227L; + private javax.swing.ProgressMonitor monitor; + private JProgressBar progressBar; + private String progressMessage = ""; + private String progressTitle = ""; + private int progress = 0; + private int progressLength = 0; + private int progressPercent = -1; + private long startTime = -1; + private boolean canceled = false; + + + public ClassificationProgressMonitor(){ + super(); + monitor = new javax.swing.ProgressMonitor(this, progressTitle, progressMessage, 0 ,progressLength); + progressBar = new JProgressBar(0, progressLength); + progressBar.setValue(progress); + progressBar.setStringPainted(true); + add(progressBar); + setSize(new Dimension(200, 200)); + + } + + @Override + public int getProgress() { + return progress; + } + + @Override + public int getProgressPercent() { + return progressPercent; + } + + @Override + public void incrementProgress() { + setProgress(progress + 1); + + } + + @Override + public boolean isCanceled() { + return monitor.isCanceled(); + } + + @Override + public void setProgress(int progress) { + this.progress = progress; + updateProgress(); + + } + + @Override + public void setProgressLength(int length) { + progressLength = length; + monitor.setMaximum(length); + progressBar.setMaximum(length); + + } + + @Override + public void setProgressMessage(String message) { + progressMessage = message; + monitor.setNote(message); + + } + + @Override + public void setProgressTitle(String title) { + progressTitle = title; + + } + + @Override + public void taskFinished() { + monitor.close(); + setCursor(null); + + } + + @Override + public void taskStarted() { + setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + } + + private void updateProgress(){ + SwingUtilities.invokeLater(new Runnable(){ + + @Override + public void run() { + monitor.setProgress(progress); + progressBar.setValue(progress); + + } + + }); + } + + + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColorListCellRenderer.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColorListCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColorListCellRenderer.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,79 @@ +/** + * 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; + +import java.awt.Color; +import java.awt.Component; + +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.tools.ore.ORE; + +/** + * List cell renderer for colored lines to provide better view on list values. + * @author Lorenz Buehmann + * + */ +public class ColorListCellRenderer extends JLabel implements ListCellRenderer { + + private static final long serialVersionUID = -7592805113197759247L; + private ORE ore; + + public ColorListCellRenderer(ORE ore) { + setOpaque(true); + this.ore = ore; + } + + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + if(value instanceof NamedClass){ + setText(((NamedClass) value).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); + } else if(value instanceof Individual){ + setText(((Individual) value).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); + } + Color background; + Color foreground; + + if (index % 2 == 0 && !isSelected) { + background = new Color(242, 242, 242); + foreground = Color.BLACK; + + } else if(isSelected){ + + background = Color.LIGHT_GRAY; + foreground = Color.BLACK; + }else{ + background = Color.WHITE; + foreground = Color.BLACK; + } + + setForeground(foreground); + setBackground(background); + + return this; + } + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColumnListCellRenderer.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColumnListCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColumnListCellRenderer.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,94 @@ +/** + * 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; + +import java.awt.Color; +import java.awt.Component; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import java.math.BigDecimal; + +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.ListCellRenderer; + +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.ORE; + +/** + * List cell renderer for 2 columns. + * @author Lorenz Buehmann + * + */ +public class ColumnListCellRenderer extends JPanel implements ListCellRenderer { + + private static final long serialVersionUID = 3024913291199515567L; + private ORE ore; + + + public ColumnListCellRenderer(ORE ore) { + this.ore = ore; + setOpaque(true); + } + + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + removeAll(); + + JLabel cor = new JLabel(); + JLabel desc = new JLabel(); + setLayout(new GridBagLayout()); + desc.setText(((EvaluatedDescriptionClass) value).getDescription().toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); + //round accuracy to 2 digits + double accuracy = ((EvaluatedDescriptionClass) value).getAccuracy(); + + BigDecimal roundedAccuracy = new BigDecimal(accuracy * 100); + roundedAccuracy = roundedAccuracy.setScale(2, BigDecimal.ROUND_HALF_UP); + cor.setText(String.valueOf(roundedAccuracy)); + add(cor, new GridBagConstraints(0, 0, 1, 1, 0.1, 0.0, GridBagConstraints.LINE_END, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));//, BorderLayout.WEST); + add(desc, new GridBagConstraints(1, 0, 1, 1, 0.8, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));//, BorderLayout.EAST); + + Color background; + Color foreground; + + if (index % 2 == 0 && !isSelected) { + background = new Color(242, 242, 242); + foreground = Color.BLACK; + + } else if(isSelected){ + + background = Color.LIGHT_GRAY; + foreground = Color.WHITE; + }else{ + background = Color.WHITE; + foreground = Color.BLACK; + } + + setForeground(foreground); + setBackground(background); + + return this; + } + +} \ No newline at end of file Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,316 @@ +/** + * 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; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.Map; +import java.util.Set; + +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JPopupMenu; +import javax.swing.ToolTipManager; + +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.ObjectAllRestriction; +import org.dllearner.core.owl.ObjectCardinalityRestriction; +import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.core.owl.Thing; +import org.dllearner.tools.ore.ORE; + +/** + * Label that might have menu items when clicked on it. + * @author Lorenz Buehmann + * + */ +public class DescriptionLabel extends JLabel implements MouseListener{ + /** + * + */ + private static final long serialVersionUID = 1L; + + private static final int MOVE_TO_CLASS = 0; + private static final int MOVE_FROM_CLASS = 1; + private static final int ADD_CLASS = 2; + private static final int REMOVE_CLASS = 3; + private static final int ADD_PROPERTY = 4; + private static final int REMOVE_RANGE_PROPERTY = 5; + private static final int DELETE_PROPERTY = 6; + private static final int REMOVE_NOT_RANGE_PROPERTY = 7; + + private final Description desc; + private Individual ind; + private ORE ore; + private JPopupMenu menu; + private String mode; + private String descriptionLabel; + + private String baseURI; + private Map<String, String> prefixes; + + /** + * constructor. + * + * @param d + * @param mode + */ + public DescriptionLabel(Description d, String mode) { + super(); + this.desc = d; + this.mode = mode; + setForeground(Color.red); + addMouseListener(this); + + } + + /** + * initialize description label with solution. + */ + public void init(){ + baseURI = ore.getBaseURI(); + prefixes = ore.getPrefixes(); + + setText(((Description) desc).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); + menu = new JPopupMenu(); + ToolTipManager.sharedInstance().setDismissDelay(7000); + //negative example solutions + if(mode.equals("neg")){ + if(!(desc instanceof Negation)){ + if(desc instanceof NamedClass){ //1. description is a named class + descriptionLabel = desc.toManchesterSyntaxString(baseURI, prefixes); + menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc)); //1.a remove class assertion + + JMenu dme = new JMenu("move class assertion " + descriptionLabel + " to ..."); //1.b move individual + for(NamedClass nc : ore.getpossibleClassesMoveTo(ind)){ + DescriptionMenuItem move = new DescriptionMenuItem(MOVE_TO_CLASS, nc.toManchesterSyntaxString(baseURI, prefixes), (NamedClass) desc); + move.setName(nc.toString()); + dme.add(move); + Set<NamedClass> complements = ore.getComplements(nc, ind); //check for complement error + if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(desc.toString())))){ + move.setEnabled(false); + StringBuffer strBuf = new StringBuffer(); + strBuf.append("<html>class assertion not possible because individual<br> " + + "is still asserted to its complements:<br><BLOCKQUOTE>"); + + for(NamedClass n: complements){ + strBuf.append("<br><b>" + n + "</b>"); + } + strBuf.append("</BLOCKQUOTE></html>"); + + + move.setToolTipText(strBuf.toString()); + } + } + menu.add(dme); + } else if(desc instanceof ObjectSomeRestriction){ //2. description is a object some restriction + String propertyName = ((ObjectSomeRestriction) desc).getRole().toString(baseURI, prefixes); + String propertyRange = ((ObjectSomeRestriction) desc).getChild(0).toManchesterSyntaxString(baseURI, prefixes); + menu.add(new DescriptionMenuItem(DELETE_PROPERTY, propertyName , desc)); //2.a remove all property assertions + if (!(desc.getChild(0) instanceof Thing)){ + menu.add(new DescriptionMenuItem(REMOVE_RANGE_PROPERTY, propertyRange, desc)); //2.b remove property assertions with objects in range + } + } else if(desc instanceof ObjectAllRestriction){ //3. description is a object all restriction + if (!(desc.getChild(0) instanceof Thing)) { + JMenu dme = new JMenu("add property assertion " + ((ObjectAllRestriction) desc).getRole().toKBSyntaxString(baseURI, prefixes) //3.a add property assertion with object not in range + + " with object ..."); + for (Individual i : ore.getIndividualsNotInPropertyRange((ObjectAllRestriction) desc, ind)){ + dme.add(new DescriptionMenuItem(ADD_PROPERTY, i.toManchesterSyntaxString(baseURI, prefixes), desc)); + } + menu.add(dme); + } + } + + } else if(desc instanceof Negation){ + if(desc.getChild(0) instanceof NamedClass){ //4. description is a negated named class + DescriptionMenuItem addItem = new DescriptionMenuItem(ADD_CLASS, desc.getChild(0).toManchesterSyntaxString(baseURI, prefixes), desc.getChild(0)); + menu.add(addItem); //4.a add class assertion + Set<NamedClass> complements = ore.getComplements(desc.getChild(0), ind); //check for complement errors + if(!complements.isEmpty()){ + addItem.setEnabled(false); + StringBuffer strBuf = new StringBuffer(); + strBuf.append("<html>class assertion not possible because individual<br> " + + "is still asserted to its complements:<br><BLOCKQUOTE>"); + + for(NamedClass n: complements){ + strBuf.append("<br><b>" + n + "</b>"); + } + strBuf.append("</BLOCKQUOTE></html>"); + + + addItem.setToolTipText(strBuf.toString()); + } + } + } + } else if(mode.equals("pos")){//positive example solutions + if(!(desc instanceof Negation)){ + if(desc instanceof NamedClass){ + DescriptionMenuItem add = new DescriptionMenuItem(ADD_CLASS, desc.toManchesterSyntaxString(baseURI, prefixes), desc); + Set<NamedClass> complements = ore.getComplements(desc, ind); + if(!(complements.isEmpty())){ + add.setEnabled(false); + StringBuffer strBuf = new StringBuffer(); + strBuf.append("<html>class assertion not possible because individual<br> " + + "is still asserted to its complements:<br><BLOCKQUOTE>"); + + for(NamedClass n: complements){ + strBuf.append("<br><b>" + n + "</b>"); + } + strBuf.append("</BLOCKQUOTE></html>"); + + + add.setToolTipText(strBuf.toString()); + } + menu.add(add); + + Set<NamedClass> moveClasses = ore.getpossibleClassesMoveFrom(ind); + if(moveClasses.size() > 0){ + JMenu move = new JMenu("move to " + desc.toManchesterSyntaxString(baseURI, prefixes) + " from ..."); + for (NamedClass m : moveClasses){System.out.println("hier" + m); + DescriptionMenuItem item = new DescriptionMenuItem(MOVE_FROM_CLASS, m.toManchesterSyntaxString(baseURI, prefixes), desc); + item.setName(m.toString()); + move.add(item); + + if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(m.toString())))){ + move.setEnabled(false); + StringBuffer strBuf = new StringBuffer(); + strBuf.append("<html>moving class is not possible because individual<br> " + + "is still asserted to its complements:<br><BLOCKQUOTE>"); + + for(NamedClass n: complements){ + strBuf.append("<br><b>" + n + "</b>"); + } + strBuf.append("</BLOCKQUOTE></html>"); + + + move.setToolTipText(strBuf.toString()); + } + } + menu.add(move); + + } + + + } else if(desc instanceof ObjectSomeRestriction){ + JMenu dme = new JMenu("add property assertion " + ((ObjectSomeRestriction) desc).getRole() + + " with object ..."); + for (Individual i : ore.getIndividualsInPropertyRange((ObjectSomeRestriction) desc, ind)){ + dme.add(new DescriptionMenuItem(ADD_PROPERTY, i.toManchesterSyntaxString(baseURI, prefixes), desc)); + } + menu.add(dme); + + } else if(desc instanceof ObjectAllRestriction){ + if (!(desc.getChild(0) instanceof Thing)) { + menu.add(new DescriptionMenuItem(REMOVE_NOT_RANGE_PROPERTY, ((ObjectAllRestriction) desc).getChild(0).toString(baseURI, prefixes), desc)); + menu.add(new DescriptionMenuItem(DELETE_PROPERTY, ((ObjectAllRestriction) desc).getRole().toString(baseURI, prefixes), desc)); + } + } + + + } + + } else if(desc instanceof Negation){ + if(desc.getChild(0) instanceof NamedClass){ + descriptionLabel = desc.toManchesterSyntaxString(baseURI, prefixes); + menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc)); + } + } + } + + + /** + * returns actual description. + * @return desc Description + */ + public Description getDescription(){ + return desc; + } + + /** + * adds action listeners to menu items. + * @param aL ActionListener + */ + public void addActionListeners(ActionListener aL){ + for(Component c : menu.getComponents()){ + if(c instanceof DescriptionMenuItem){ + ((DescriptionMenuItem) c).addActionListener(aL); + } else if(c instanceof JMenu){ + for(int i = 0; i < ((JMenu) c).getItemCount(); i++){ + ((JMenu) c).getItem(i).addActionListener(aL); + } + } + + + } + + + } + + public void setIndOre(ORE ore, Individual ind) { + this.ore = ore; + this.ind = ind; + } + + public void mouseClicked(MouseEvent e) { + menu.show(this.getParent(), getLocation().x, getLocation().y + 50); + + } + + /** + * Underlining label when mouse over. + */ + public void mouseEntered(MouseEvent e) { + setText("<html><u>" + + ((Description) desc).toManchesterSyntaxString(ore + .getBaseURI(), ore.getPrefixes()) + "</u></html>"); + setCursor(new Cursor(Cursor.HAND_CURSOR)); + if(desc instanceof ObjectCardinalityRestriction){ + setToolTipText("ObjectCardinality repair not available at present"); + } + + } + + /** + * Removing underlining when mosue relased. + */ + public void mouseExited(MouseEvent e) { + setText(((Description) desc).toManchesterSyntaxString(ore.getBaseURI(), + ore.getPrefixes())); + setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + } + + public void mousePressed(MouseEvent e) { + // TODO Auto-generated method stub + + } + + public void mouseReleased(MouseEvent e) { + // TODO Auto-generated method stub + + } +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,84 @@ +/** + * 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; + +import javax.swing.JMenuItem; + +import org.dllearner.core.owl.Description; + +/** + * Item for possible repair action. + * @author Lorenz Buehmann + * + */ +public class DescriptionMenuItem extends JMenuItem { + + /** + * + */ + private static final long serialVersionUID = 6784086889435854440L; + + private Description desc; + private int action; + + public DescriptionMenuItem(int action, String text, Description d){ + super(); + if(action == 3){ + setText("remove class assertion to " + text); + } else if(action == 0){ + setText(text); + } else if(action == 2){ + setText("add class assertion to " + text); + } else if(action == 4){ + setText(text); + } else if(action == 6){ + setText("delete complete property " + text); + }else if(action == 5){ + setText("remove all property assertions to " + text); + } else if(action == 7){ + setText("remove all property assertions with range not in " + text); + } else if(action == 1){ + setText(text); + } + + this.desc = d; + this.action = action; + } + + /** + * Returns the description part where item is asserted to. + * @return description + */ + public Description getDescription(){ + return desc; + } + + /** + * Returns action type represented as number.. + * @return number + */ + public int getActionID(){ + return action; + } + + + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTable.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,215 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.List; + +import javax.swing.AbstractCellEditor; +import javax.swing.JButton; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; + +import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.ImpactManager; +import org.dllearner.tools.ore.RepairManager; +import org.dllearner.tools.ore.RepairManagerListener; +import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class ExplanationTable extends JXTable implements RepairManagerListener{ + + /** + * + */ + private static final long serialVersionUID = 5580730282611559609L; + + private List<OWLAxiom> explanation; + private RepairManager repMan; + private ImpactManager impMan; + + public ExplanationTable(List<OWLAxiom> explanation, RepairManager repMan,ImpactManager impMan, ExplanationManager expMan, OWLClass cl) { + this.explanation = explanation; + this.repMan = repMan; + this.impMan = impMan; + repMan.addListener(this); + setBackground(Color.WHITE); + setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + setModel(new ExplanationTableModel(explanation, expMan,impMan, repMan, cl)); + getColumn(0).setCellRenderer(new OWLSyntaxTableCellRenderer(repMan)); + TableColumn column4 = getColumn(3); + column4.setCellRenderer(new ButtonCellRenderer()); + column4.setCellEditor(new ButtonCellEditor()); + column4.setResizable(false); + setColumnSizes(); + getSelectionModel().addListSelectionListener(new ListSelectionListener(){ + + + final ExplanationTable table; + + @Override + public void valueChanged(ListSelectionEvent e) { + + table.changeSelection(); + + } + { + table = ExplanationTable.this; + + } + + }); + + addFocusListener(new FocusListener() { + + final ExplanationTable table; + + public void focusGained(FocusEvent focusevent) + { + } + + public void focusLost(FocusEvent e) + { + table.clearSelection(); + table.changeSelection(); + + } + + + + + { + + table = ExplanationTable.this; + + } + }); + + addMouseListener(new MouseAdapter() { + + final ExplanationTable table; + { + table = ExplanationTable.this; + } + public void mouseClicked(MouseEvent e){ + if(e.getClickCount() == 2){ + System.out.println(getValueAt(table.rowAtPoint(e.getPoint()), 0)); + } + } + }); + } + + private OWLAxiom getOWLAxiomAtRow(int rowIndex){ + return ((ExplanationTableModel)getModel()).getOWLAxiomAtRow(rowIndex); + } + + private void setColumnSizes(){ + getColumn(1).setMaxWidth(30); + getColumn(2).setMaxWidth(30); + getColumn(3).setMaxWidth(80); + } + + private void changeSelection() { + +// +// if(getSelectedRow() >=0){ +// OWLAxiom rowAxiom = getOWLAxiomAtRow(getSelectedRow()); +// impMan.setActualAxiom(rowAxiom); +// } else { +// impMan.setActualAxiom(null); +// } + + } + + class ButtonCellRenderer extends JButton implements TableCellRenderer{ + + /** + * + */ + private static final long serialVersionUID = 1962950956976967243L; + + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + if (isSelected) { + setForeground(table.getSelectionForeground()); + setBackground(table.getSelectionBackground()); + } else { + setForeground(table.getForeground()); + setBackground(UIManager.getColor("Button.background")); + } + setText( (value ==null) ? "" : value.toString() ); + return this; + } + + + } + + class ButtonCellEditor extends AbstractCellEditor implements + TableCellEditor, ActionListener { + /** + * + */ + private static final long serialVersionUID = 9017452102605141646L; + JTable table; + JButton editButton; + String text; + + + public ButtonCellEditor() { + super(); + + editButton = new JButton(); + editButton.setFocusPainted(false); + editButton.addActionListener(this); + } + + + @Override + public Component getTableCellEditorComponent(JTable table, + Object value, boolean isSelected, int row, int column) { + text = (value == null) ? "" : value.toString(); + editButton.setText(text); + return editButton; + } + + @Override + public Object getCellEditorValue() { + return text; + } + + @Override + public void actionPerformed(ActionEvent e) { + fireEditingStopped(); + } + } + + + @Override + public void repairPlanExecuted() { + // TODO Auto-generated method stub + + } + + @Override + public void repairPlanChanged() { + repaint(); + + } + + + + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTableModel.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,106 @@ +package org.dllearner.tools.ore.ui; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.ImpactManager; +import org.dllearner.tools.ore.RepairManager; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +public class ExplanationTableModel extends AbstractTableModel { + + + /** + * + */ + private static final long serialVersionUID = -4537633628250304813L; + private List<OWLAxiom> axioms; + private List<Boolean> remove; + private ExplanationManager expMan; + private ImpactManager impMan; + private RepairManager repMan; + private OWLClass unsat; + + public ExplanationTableModel(List<OWLAxiom> axioms, ExplanationManager expMan, ImpactManager impMan, RepairManager repMan, OWLClass cl){ + this.axioms = axioms; + this.expMan = expMan; + this.impMan = impMan; + this.repMan = repMan; + this.unsat = cl; + remove = new ArrayList<Boolean>(); + for(int i = 0; i < axioms.size(); i++){ + remove.add(false); + } + } + + @Override + public int getColumnCount() { + return 4; + } + + @Override + public int getRowCount() { + return axioms.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0 && rowIndex >=0){ + return axioms.get(rowIndex); + } else if(columnIndex == 1){ + return expMan.getArity(unsat, axioms.get(rowIndex)); + } else if(columnIndex == 2) { + return Boolean.valueOf(impMan.isSelected(getOWLAxiomAtRow(rowIndex))); + } else { + return "rewrite"; + } + + } + + + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + if(columnIndex == 2){ + OWLAxiom ax = getOWLAxiomAtRow(rowIndex); + if(impMan.isSelected(ax)){ + repMan.removeAxiom2Remove(ax); + impMan.removeAxiomFromImpactList(ax); + } else { + impMan.addAxiom2ImpactList(ax); + repMan.addAxiom2Remove(ax); + } + } + super.setValueAt(value, rowIndex, columnIndex); + } + + @Override + public Class<? extends Object> getColumnClass(int columnIndex){ + if(columnIndex == 0) { + return OWLAxiom.class; + } else if(columnIndex == 1){ + return int.class; + } else if(columnIndex == 2) { + return Boolean.class; + } else { + return String.class; + } + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(columnIndex == 2 || columnIndex == 3) + return true; + return false; + } + + public OWLAxiom getOWLAxiomAtRow(int rowIndex){ + return axioms.get(rowIndex); + } + + + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTable.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,28 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; + +import org.dllearner.tools.ore.ImpactManager; +import org.jdesktop.swingx.JXTable; + +public class ImpactTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 4146762679753151490L; + + public ImpactTable(ImpactManager manager){ + super(new ImpactTableModel(manager)); + + setShowHorizontalLines(true); + setGridColor(Color.LIGHT_GRAY); + setTableHeader(null); + getColumnModel().getColumn(0).setCellRenderer(new OWLSyntaxTableCellRenderer()); + setRowHeight(getRowHeight() + 4); + + } + + + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/ImpactTableModel.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,71 @@ +package org.dllearner.tools.ore.ui; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.dllearner.tools.ore.ImpactManager; +import org.dllearner.tools.ore.ImpactManagerListener; +import org.semanticweb.owl.model.OWLAxiom; + +public class ImpactTableModel extends AbstractTableModel implements ImpactManagerListener +{ + + /** + * + */ + private static final long serialVersionUID = 6109818990550020196L; + private ImpactManager impMan; + private List<OWLAxiom> impact; + + public ImpactTableModel(ImpactManager impMan) + { + + impact = new ArrayList<OWLAxiom>(); + this.impMan = impMan; + impMan.addListener(this); + rebuildData(); + } + + private void rebuildData() + { + impact.clear(); + impact.addAll(impMan.getImpactForAxioms2Remove()); + Collections.sort(impact); + fireTableDataChanged(); + } + + + + public int getRowCount() + { + return impact.size(); + } + + public int getColumnCount() + { + return 1; + } + + public Object getValueAt(int rowIndex, int columnIndex) + { + return impact.get(rowIndex); + } + + + @Override + public void axiomForImpactChanged() { + rebuildData(); + + } + + @Override + public void repairPlanExecuted() { + rebuildData(); + + } + + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/OWLSyntaxTableCellRenderer.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,131 @@ +package org.dllearner.tools.ore.ui; + +import java.io.StringWriter; +import java.util.StringTokenizer; + +import javax.swing.table.DefaultTableCellRenderer; + +import org.dllearner.tools.ore.RepairManager; +import org.semanticweb.owl.model.OWLAxiom; + +import com.clarkparsia.explanation.io.manchester.Keyword; +import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxObjectRenderer; +import com.clarkparsia.explanation.io.manchester.TextBlockWriter; + +public class OWLSyntaxTableCellRenderer extends DefaultTableCellRenderer { + + /** + * + */ + private static final long serialVersionUID = 6528440084244154347L; + + + private StringWriter buffer; + private TextBlockWriter writer; + private ManchesterSyntaxObjectRenderer renderer; + private RepairManager repMan; +// private List<String> oldAxioms; + + public OWLSyntaxTableCellRenderer(RepairManager repMan){ + super(); + this.repMan = repMan; + buffer = new StringWriter(); + writer = new TextBlockWriter(buffer); + renderer = new ManchesterSyntaxObjectRenderer(writer); + renderer.setWrapLines( false ); + renderer.setSmartIndent( true ); +// oldAxioms = new ArrayList<String>(); + + } + + public OWLSyntaxTableCellRenderer(){ + super(); + buffer = new StringWriter(); + writer = new TextBlockWriter(buffer); + renderer = new ManchesterSyntaxObjectRenderer(writer); + renderer.setWrapLines( false ); + renderer.setSmartIndent( true ); + } + + @Override + protected void setValue(Object value) { + + if(value instanceof OWLAxiom){ + boolean striked = false; + if(repMan != null && repMan.isSelected((OWLAxiom)value)){ + striked = true; + } + ((OWLAxiom)value).accept(renderer); + + writer.flush(); + String newAxiom = buffer.toString(); +// System.out.println("new axiom " + newAxiom); +// if(!oldAxioms.isEmpty()){ +// StringTokenizer st = new StringTokenizer(newAxiom); +// int index; +// String token = st.nextToken(); +// for(String s : oldAxioms){System.out.println("old axiom " + s); +// +// +// if(s.contains(token)){ +// index = s.indexOf(token); +// if(index>0){ +// StringBuffer bf = new StringBuffer(); +// for(int i = 0;i<=index+10;i++){ +// bf.append(" "); +// } +// bf.append(newAxiom); +// newAxiom = bf.toString(); +// break; +// } +// } +// +// } +// } + StringTokenizer st = new StringTokenizer(newAxiom); + + StringBuffer bf = new StringBuffer(); + bf.append("<html>"); + if(striked){ + bf.append("<strike>"); + } + + String token; + while(st.hasMoreTokens()){ + token = st.nextToken(); + String color = "black"; + boolean isReserved = false; + for(Keyword key : Keyword.values()){ + if(token.equals(key.getLabel())){ + color = key.getColor(); + isReserved = true;break; + } + } + if(isReserved){ + bf.append("<font color=" + color + ">" + token + " </font>"); + } else { + bf.append(" " + token + " "); + } + } + if(striked){ + bf.append("</strike>"); + } + bf.append("</html>"); + newAxiom = bf.toString(); + + setText(newAxiom); +// oldAxioms.add(buffer.toString()); + buffer.getBuffer().delete(0, buffer.toString().length()); + } else { + super.setValue(value); + } + +// ManchesterOWLSyntaxOWLObjectRendererImpl renderer = new ManchesterOWLSyntaxOWLObjectRendererImpl(); + + +//// DLSyntaxObjectRenderer renderer = new DLSyntaxObjectRenderer(); +// setText(renderer.render((OWLAxiom) value)); + + + } +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/RepairDialog.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,388 @@ +/** + * 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; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSeparator; +import javax.swing.border.EmptyBorder; + +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.ObjectQuantorRestriction; +import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.tools.ore.ORE; +import org.dllearner.tools.ore.OntologyModifier; +import org.dllearner.tools.ore.ui.wizard.panels.ChangePanel; +import org.dllearner.tools.ore.ui.wizard.panels.ChangesPanel; +import org.dllearner.tools.ore.ui.wizard.panels.DescriptionPanel; +import org.dllearner.tools.ore.ui.wizard.panels.StatsPanel; +import org.semanticweb.owl.model.OWLOntologyChange; + +/** + * The repair dialog where the learned class description (including error parts), + * the statistics and the undo options are shown. + * @author Lorenz Buehmann + * + */ +public class RepairDialog extends JDialog implements ActionListener, MouseListener{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + + public static final int CANCEL_RETURN_CODE = 1; + public static final int OK_RETURN_CODE = 2; + public static final int VALID_RETURN_CODE = 3; + + private int returncode; + + private StatsPanel statsPanel; + private DescriptionPanel descPanel; + private JPanel okCancelPanel; + private JPanel actionStatsPanel; + + private ChangesPanel changesPanel; + private JScrollPane changesScroll; + + private JButton okButton; + private JButton cancelButton; + + private String mode; + + private OntologyModifier modifier; + private ORE ore; + private Individual ind; + private Description actualDesc; + private Description newDesc; + private Set<OWLOntologyChange> allChanges; + private String baseURI; + private Map<String, String> prefixes; + + + public RepairDialog(Individual ind, JDialog dialog, final ORE ore, String mode){ + super(dialog, true); + final Component dialogd = this.getParent(); + setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent we) { + if(allChanges.size() > 0){ + if (JOptionPane.showConfirmDialog(dialogd, + "All changes will be lost!", "Warning!", + JOptionPane.YES_NO_OPTION) + == JOptionPane.YES_OPTION){ + + modifier.undoChanges(allChanges); + ore.updateReasoner(); + allChanges.clear(); + returncode = CANCEL_RETURN_CODE; + setVisible(false); + dispose(); + } + } else{ + returncode = CANCEL_RETURN_CODE; + setVisible(false); + dispose(); + } + + } + + }); + + + this.ind = ind; + this.ore = ore; + this.modifier = ore.getModifier(); + this.mode = mode; + allChanges = new HashSet<OWLOntologyChange>(); + + } + + /** + * Initializing and making dialog visible. + * @return integer value + */ + public int showDialog(){ + baseURI = ore.getBaseURI(); + prefixes = ore.getPrefixes(); + if(mode.equals("neg")){ + this.setTitle("Repair negative example"); + } else if(mode.equals("pos")){ + this.setTitle("Repair positive example"); + } + this.setSize(700, 700); + this.setLayout(new BorderLayout()); + + descPanel = new DescriptionPanel(ore, ind, this, mode); + JScrollPane descScroll = new JScrollPane(); + descScroll.setViewportView(descPanel); + + statsPanel = new StatsPanel(ore, ind); + statsPanel.init(); + JScrollPane statsScroll = new JScrollPane(); + statsScroll.setViewportView(statsPanel); + + + changesPanel = new ChangesPanel(); + changesScroll = new JScrollPane(); + changesScroll.setViewportView(changesPanel); + + actionStatsPanel = new JPanel(); + + GridBagLayout gbl = new GridBagLayout(); + gbl.rowWeights = new double[] {0.0, 0.1, 0.1}; + gbl.rowHeights = new int[] {64, 7, 7}; + gbl.columnWeights = new double[] {0.1}; + gbl.columnWidths = new int[] {7}; + actionStatsPanel.setLayout(gbl); + + + 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(statsScroll, 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)); + + + JSeparator separator = new JSeparator(); + Box buttonBox = new Box(BoxLayout.X_AXIS); + + okCancelPanel = new JPanel(); + okCancelPanel.setLayout(new BorderLayout()); + okCancelPanel.add(separator, BorderLayout.NORTH); + okButton = new JButton("Ok"); + okButton.addActionListener(this); + cancelButton = new JButton("Cancel"); + cancelButton.addActionListener(this); + + + getContentPane().add(actionStatsPanel, java.awt.BorderLayout.CENTER); + + + buttonBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10))); + buttonBox.add(okButton); + buttonBox.add(Box.createHorizontalStrut(10)); + buttonBox.add(cancelButton); + okCancelPanel.add(buttonBox, BorderLayout.EAST); + + getContentPane().add(okCancelPanel, BorderLayout.SOUTH); + + + this.setModal(true); + this.setVisible(true); + + return returncode; + + } + + /** + * Method controls action events triggered by clicking on red labels in class description at the top of the dialog. + */ + public void actionPerformed(ActionEvent e) { + + if(e.getSource() instanceof DescriptionMenuItem){ + DescriptionMenuItem item =(DescriptionMenuItem) e.getSource(); + actualDesc = item.getDescription(); + int action = item.getActionID(); + if(action == 4){ + Individual obj = new Individual(e.getActionCommand()); + + List<OWLOntologyChange> changes = modifier.addObjectProperty(ind, (ObjectQuantorRestriction) actualDesc, obj); + allChanges.addAll(changes); + + descPanel.updatePanel(); + + statsPanel.updatePanel(); + changesPanel.add(new ChangePanel("added property assertion " + ((ObjectQuantorRestriction) actualDesc).getRole().toKBSyntaxString(baseURI, prefixes) + + " to " + obj.toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesScroll.updateUI(); + } else if(action == 5){ + ObjectQuantorRestriction property = (ObjectQuantorRestriction) actualDesc; + List<OWLOntologyChange> changes = null; + for(Individual i : ore.getIndividualsInPropertyRange(property, ind)){ + changes = modifier.removeObjectPropertyAssertion(ind, property, i); + allChanges.addAll(changes); + } + + descPanel.updatePanel(); + statsPanel.updatePanel(); + changesPanel.add(new ChangePanel("removed property assertions " + + ((ObjectSomeRestriction) actualDesc).getRole().toKBSyntaxString(baseURI, prefixes) + + " to range " + ((ObjectSomeRestriction) actualDesc).getChild(0).toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesScroll.updateUI(); + } else if(action == 6){ + List<OWLOntologyChange> changes = modifier.deleteObjectProperty(ind, (ObjectQuantorRestriction) actualDesc); + allChanges.addAll(changes); + descPanel.updatePanel(); + statsPanel.updatePanel(); + changesPanel.add(new ChangePanel("deleted property " + ((ObjectQuantorRestriction) actualDesc).getRole().toKBSyntaxString(baseURI, prefixes), changes, this)); + changesScroll.updateUI(); + } else if(action == 0){ + newDesc = new NamedClass(item.getName()); + List<OWLOntologyChange> changes = modifier.moveIndividual(ind, actualDesc, newDesc); + allChanges.addAll(changes); + descPanel.updatePanel(); + statsPanel.updatePanel(); + changesPanel.add(new ChangePanel("moved class assertion from " + actualDesc.toManchesterSyntaxString(baseURI, prefixes) + + " to " + newDesc.toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesScroll.updateUI(); + } else if(action == 3){ + List<OWLOntologyChange> changes = modifier.removeClassAssertion(ind, actualDesc); + allChanges.addAll(changes); + descPanel.updatePanel(); + statsPanel.updatePanel(); + changesPanel.add(new ChangePanel("removed class assertion to " + actualDesc.toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesScroll.updateUI(); + } else if(action == 2){ + List<OWLOntologyChange> changes = modifier.addClassAssertion(ind, actualDesc); + allChanges.addAll(changes); + descPanel.updatePanel(); + statsPanel.updatePanel(); + changesPanel.add(new ChangePanel("added class assertion to " + actualDesc.toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesScroll.updateUI(); + } else if(action == 7){ + ObjectQuantorRestriction property = (ObjectQuantorRestriction) actualDesc; + List<OWLOntologyChange> changes = null; + for(Individual i : ore.getIndividualsNotInPropertyRange(property, ind)){ + changes = modifier.removeObjectPropertyAssertion(ind, property, i); + allChanges.addAll(changes); + } + + + descPanel.updatePanel(); + statsPanel.updatePanel(); + changesPanel.add(new ChangePanel("removed property assertion " + property.getRole().toKBSyntaxString(baseURI, prefixes) + + " to " + ind.toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesScroll.updateUI(); + } else if(action == 1){ + Description oldDesc = new NamedClass(item.getName()); + List<OWLOntologyChange> changes = modifier.moveIndividual(ind, oldDesc, actualDesc); + allChanges.addAll(changes); + descPanel.updatePanel(); + statsPanel.updatePanel(); + changesPanel.add(new ChangePanel("moved class assertion from " + oldDesc.toManchesterSyntaxString(baseURI, prefixes) + + " to " + actualDesc.toManchesterSyntaxString(baseURI, prefixes), changes, this)); + changesScroll.updateUI(); + } + } else if(e.getActionCommand().equals("Ok")){ + if(descPanel.isCorrect()){ + returncode = VALID_RETURN_CODE; + } else{ + returncode = OK_RETURN_CODE; + } + ore.updateReasoner(); + setVisible(false); + dispose(); + } else if(e.getActionCommand().equals("Cancel")){ + if(allChanges.size() > 0){ + if (JOptionPane.showConfirmDialog(this, + "All changes will be lost!", "Warning!", + JOptionPane.YES_NO_OPTION) + == JOptionPane.YES_OPTION){ + + modifier.undoChanges(allChanges); + ore.updateReasoner(); + allChanges.clear(); + returncode = CANCEL_RETURN_CODE; + setVisible(false); + dispose(); + } + } else{ + returncode = CANCEL_RETURN_CODE; + setVisible(false); + dispose(); + } + + } + + + } + + + public void mouseClicked(MouseEvent e) { + if(e.getSource() instanceof UndoLabel){ + List<OWLOntologyChange> changes = ((UndoLabel) e.getSource()).getChanges(); + modifier.undoChanges(changes); + allChanges.removeAll(changes); + descPanel.updatePanel(); + statsPanel.updatePanel(); + changesPanel.updatePanel(((UndoLabel) e.getSource()).getParent()); + setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + + } + } + + public void mouseEntered(MouseEvent e) { + if(e.getSource() instanceof UndoLabel){ + ((UndoLabel) e.getSource()).setText("<html><u>Undo</u></html>"); + setCursor(new Cursor(Cursor.HAND_CURSOR)); + } + + } + + public void mouseExited(MouseEvent e) { + if(e.getSource() instanceof UndoLabel){ + ((UndoLabel) e.getSource()).setText("Undo"); + setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + } + + } + + public void mousePressed(MouseEvent e) { + + } + + public void mouseReleased(MouseEvent e) { + + } + + public Set<OWLOntologyChange> getAllChanges() { + return allChanges; + } + + + + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/RepairTable.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,25 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; + +import org.dllearner.tools.ore.RepairManager; +import org.jdesktop.swingx.JXTable; + +public class RepairTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = -621497634521668635L; + + public RepairTable(RepairManager manager){ + super(new RepairTableModel(manager)); + + setShowHorizontalLines(true); + setGridColor(Color.LIGHT_GRAY); + setTableHeader(null); + getColumnModel().getColumn(0).setCellRenderer(new OWLSyntaxTableCellRenderer()); + setRowHeight(getRowHeight() + 4); + + } +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTableModel.java (from rev 1816, trunk/src/dl-learner/org/dllearner/tools/ore/RepairTableModel.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTableModel.java 2009-08-04 20:02:34 UTC (rev 1817) @@ -0,0 +1,69 @@ +package org.dllearner.tools.ore.ui; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.dllearner.tools.ore.RepairManager; +import org.dllearner.tools.ore.RepairManagerListener; +import org.semanticweb.owl.model.OWLAxiom; + +public class RepairTableModel extends AbstractTableModel implements RepairManagerListener{ + + /** + * + */ + private static final long serialVersionUID = -5898900692701380258L; + private RepairManager repMan; + private List<OWLAxiom> axioms2Remove; + + public RepairTableModel(RepairManager impMan) + { + + axioms2Remove = new ArrayList<OWLAxiom>(); + this.repMan = impMan; + repMan.addListener(this); + rebuildData(); + } + + private void rebuildData() + { + axioms2Remove.clear(); + axioms2Remove.addAll(repMan.getAxioms2Remove()); + Collections.sort(axioms2Remove); + fireTableDataChanged(); + } + + + + public int getRowCount() + { + ... [truncated message content] |
From: <lor...@us...> - 2009-08-25 15:57:54
|
Revision: 1831 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1831&view=rev Author: lorenz_b Date: 2009-08-25 15:57:36 +0000 (Tue, 25 Aug 2009) Log Message: ----------- some changes in UI added option to add axiom in lost entailments list to repair plan Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MouseOverHintDemo.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBarSimulator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.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/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/MouseOverHintManager.java trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java trunk/src/dl-learner/org/dllearner/tools/ore/minus.png trunk/src/dl-learner/org/dllearner/tools/ore/plus.png trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTableCellRenderer.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColorListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MouseOverHintManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RecentManager.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -49,16 +49,16 @@ private CachedExplanationGenerator gen; - private ExplanationManager(Reasoner reasoner) { + private ExplanationManager(OREManager oreMan) { - this.reasoner = reasoner; + this.reasoner = oreMan.getPelletReasoner().getReasoner(); this.manager = reasoner.getManager(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); manager.addOntologyChangeListener(this); // manager.addOntologyChangeListener(reasoner); dataFactory = manager.getOWLDataFactory(); - RepairManager.getRepairManager(reasoner).addListener(this); + RepairManager.getRepairManager(oreMan).addListener(this); reasonerFactory = new PelletReasonerFactory(); rootFinder = new RootFinder(manager, reasoner, reasonerFactory); @@ -77,9 +77,9 @@ } public static synchronized ExplanationManager getInstance( - Reasoner reasoner) { + OREManager oreMan) { if (instance == null) { - instance = new ExplanationManager(reasoner); + instance = new ExplanationManager(oreMan); } return instance; } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationPanel.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -1,427 +0,0 @@ -package org.dllearner.tools.ore; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.GridLayout; -import java.awt.HeadlessException; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.net.URI; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.TreeSet; - -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.ButtonGroup; -import javax.swing.DefaultListModel; -import javax.swing.JComponent; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JScrollPane; -import javax.swing.JSeparator; -import javax.swing.JSplitPane; -import javax.swing.UIManager; -import javax.swing.UnsupportedLookAndFeelException; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import org.dllearner.tools.ore.ui.ClassificationProgressMonitor; -import org.dllearner.tools.ore.ui.ExplanationTable; -import org.dllearner.tools.ore.ui.ImpactTable; -import org.dllearner.tools.ore.ui.StatusBar; -import org.dllearner.tools.ore.ui.UnsatClassesTableCellRenderer; -import org.dllearner.tools.ore.ui.wizard.panels.ExplanationTablePanel; -import org.dllearner.tools.ore.ui.wizard.panels.RepairPlanPanel; -import org.jdesktop.swingx.JXList; -import org.mindswap.pellet.PelletOptions; -import org.mindswap.pellet.owlapi.PelletReasonerFactory; -import org.mindswap.pellet.owlapi.Reasoner; -import org.mindswap.pellet.utils.progress.SwingProgressMonitor; -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.model.OWLAxiom; -import org.semanticweb.owl.model.OWLClass; -import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyChange; -import org.semanticweb.owl.model.OWLOntologyCreationException; -import org.semanticweb.owl.model.OWLOntologyManager; - -public class ExplanationPanel extends JPanel implements ListSelectionListener, - ActionListener,ImpactManagerListener, ExplanationManagerListener, RepairManagerListener{ - - private JXList unsatList; - private JSplitPane splitPane; - private JSplitPane statsSplitPane; - private JScrollPane listScrollPane; - private JScrollPane explanationsScrollPane; - private JComponent explanationsPanel; - private JPanel buttonExplanationsPanel; - private JPanel buttonPanel; - private ButtonGroup explanationType; - private JRadioButton regularButton; - private JRadioButton laconicButton; - - private UnsatClassesTableCellRenderer listRenderer; - - private ExplanationManager expManager; - private ImpactManager impManager; - private RepairManager repManager; - - private StatusBar statusBar; - - - private OWLClass unsatClass; - /** - * - */ - private static final long serialVersionUID = 2213073383532597460L; - - public ExplanationPanel(ExplanationManager expMan, ImpactManager impMan, RepairManager repMan) { - - - this.expManager = expMan; - this.impManager = impMan; - this.repManager = repMan; - - impManager.addListener(this); - setLayout(new BorderLayout()); - - Dimension minimumSize = new Dimension(400, 400); - - listRenderer = new UnsatClassesTableCellRenderer(expManager); - unsatList = new JXList(); - fillUnsatClassesList(); - unsatList.addListSelectionListener(this); -// unsatList.setCellRenderer(listRenderer); - listScrollPane = new JScrollPane(unsatList); - listScrollPane.setPreferredSize(minimumSize); - - explanationsPanel = new Box(1); - - JPanel pan = new JPanel(new BorderLayout()); - pan.add(explanationsPanel, BorderLayout.NORTH); - explanationsScrollPane = new JScrollPane(pan); - explanationsScrollPane.setPreferredSize(minimumSize); - explanationsScrollPane.setBorder(BorderFactory - .createLineBorder(Color.LIGHT_GRAY)); - explanationsScrollPane.getViewport().setOpaque(false); - explanationsScrollPane.getViewport().setBackground(null); - explanationsScrollPane.setOpaque(false); - - regularButton = new JRadioButton("regular", true); - regularButton.setActionCommand("regular"); - regularButton.addActionListener(this); - laconicButton = new JRadioButton("laconic"); - laconicButton.setActionCommand("laconic"); - laconicButton.addActionListener(this); - explanationType = new ButtonGroup(); - explanationType.add(regularButton); - explanationType.add(laconicButton); - buttonPanel = new JPanel(); - buttonPanel.add(regularButton); - buttonPanel.add(laconicButton); - - buttonExplanationsPanel = new JPanel(); - buttonExplanationsPanel.setLayout(new BorderLayout()); - buttonExplanationsPanel - .add(explanationsScrollPane, BorderLayout.CENTER); - buttonExplanationsPanel.add(buttonPanel, BorderLayout.NORTH); - - statsSplitPane = new JSplitPane(0); - statsSplitPane.setResizeWeight(1.0D); - statsSplitPane.setTopComponent(buttonExplanationsPanel); - - //repair panel - JPanel impactRepairPanel = new JPanel(); - impactRepairPanel.setLayout(new BorderLayout()); - impactRepairPanel.add(new JLabel("Repair plan"), BorderLayout.NORTH); - JSplitPane impRepSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); - impRepSplit.setOneTouchExpandable(true); - impRepSplit.setDividerLocation(600); - impRepSplit.setBorder(null); - impactRepairPanel.add(impRepSplit); - - JPanel impactPanel = new JPanel(); - impactPanel.setLayout(new BorderLayout()); - impactPanel.add(new JLabel("Lost entailments"), BorderLayout.NORTH); - JScrollPane impScr = new JScrollPane(new ImpactTable(impManager)); - impactPanel.add(impScr); - impRepSplit.setRightComponent(impactPanel); - - RepairPlanPanel repairPanel = new RepairPlanPanel(repManager); - impRepSplit.setLeftComponent(repairPanel); - - - statsSplitPane.setBottomComponent(impactRepairPanel); - - statsSplitPane.setBorder(null); - statsSplitPane.setDividerLocation(500); - statsSplitPane.setOneTouchExpandable(true); - - splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, listScrollPane, - statsSplitPane); - splitPane.setOneTouchExpandable(true); - splitPane.setDividerLocation(150); - splitPane.setBorder(null); - - add(splitPane); - - statusBar = new StatusBar(); - add(statusBar, BorderLayout.SOUTH); - } - - private void fillUnsatClassesList() { - DefaultListModel model = new DefaultListModel(); - Set<OWLClass> rootClasses = new TreeSet<OWLClass>(expManager - .getRootUnsatisfiableClasses()); - for (OWLClass root : rootClasses) { - model.addElement(root); - } - Set<OWLClass> derivedClasses = new TreeSet<OWLClass>(expManager - .getUnsatisfiableClasses()); - derivedClasses.removeAll(rootClasses); - for (OWLClass unsat : derivedClasses) { - model.addElement(unsat); - - } - unsatList.setModel(model); - } - - private void addExplanationTable(List<OWLAxiom> explanation, int number) { - - // DLSyntaxObjectRenderer r = new DLSyntaxObjectRenderer(); - // Vector<String> t = new Vector<String>(); - // for(OWLAxiom ax : explanation) - // t.add(r.render(ax)); - // model.addColumn("axiom", t); - - ExplanationTable expTable = new ExplanationTable(explanation, repManager, impManager, expManager, unsatClass); - explanationsPanel.add(new ExplanationTablePanel(expTable, number)); - - } - - private void clearExplanationsPanel() { - explanationsPanel.removeAll(); - } - - private void showLaconicExplanations() { - clearExplanationsPanel(); - int counter = 1; - for (List<OWLAxiom> explanation : expManager - .getUnsatisfiableExplanations(unsatClass)) { - addExplanationTable(explanation, counter); - counter++; - } - explanationsPanel.add(Box.createVerticalStrut(10)); - explanationsPanel.add(new JSeparator()); - explanationsPanel.add(Box.createVerticalStrut(10)); - this.updateUI(); - } - - private void showRegularExplanations() { - clearExplanationsPanel(); - int counter = 1; - for (List<OWLAxiom> explanation : expManager - .getUnsatisfiableExplanations(unsatClass)) { - addExplanationTable(explanation, counter); - counter++; - } - explanationsPanel.add(Box.createVerticalStrut(10)); - explanationsPanel.add(new JSeparator()); - explanationsPanel.add(Box.createVerticalStrut(10)); - this.updateUI(); - } - - private void showExplanations(){ - clearExplanationsPanel(); - int counter = 1; - for (List<OWLAxiom> explanation : expManager - .getUnsatisfiableExplanations(unsatClass)) { - addExplanationTable(explanation, counter); - counter++; - } - explanationsPanel.add(Box.createVerticalStrut(10)); - explanationsPanel.add(new JSeparator()); - explanationsPanel.add(Box.createVerticalStrut(10)); - this.updateUI(); - } - - @Override - public void valueChanged(ListSelectionEvent e) { - - unsatClass = (OWLClass) ((JXList) e.getSource()).getSelectedValue(); - -// OWLEditorKitFactory edFac = new OWLEditorKitFactory(); -// edFac.canLoad(URI.create("file:examples/ore/koala.owl")); -// -// try { -// EditorKit kit = edFac.createEditorKit(); -// } catch (Exception e2) { -// // TODO Auto-generated catch block -// e2.printStackTrace(); -// } -// -// OWLModelManager m = new OWLModelManagerImpl(); -// try { -// m.loadOntology(URI.create("file:examples/ore/koala.owl")); -// } catch (OWLOntologyCreationException e1) { -// // TODO Auto-generated catch block -// e1.printStackTrace(); -// } -// -// OWLExpressionCheckerFactory f = new ManchesterOWLExpressionCheckerFactory(m); -// OWLExpressionChecker<OWLDescription> checker = f.getOWLDescriptionChecker(); -// -// ExpressionEditor<OWLDescription> editor2 = new ExpressionEditor<OWLDescription>(); -// editor2.setVisible(true); -// editor.setDescription(unsatClass); - - - if (!unsatList.isSelectionEmpty()) { - showExplanations(); - } - - } - - @Override - public void actionPerformed(ActionEvent e) { - if (e.getActionCommand().equals("regular")) { - expManager.setLaconicMode(false); - } else if (e.getActionCommand().equals("laconic")) { - expManager.setLaconicMode(true); - - } - - } - - @Override - public void impactListChanged() { - // TODO Auto-generated method stub - - } - - @Override - public void repairPlanExecuted(List<OWLOntologyChange> changes) { - explanationsPanel.removeAll(); - - fillUnsatClassesList(); - repaint(); - } - - @Override - public void explanationLimitChanged() { - if(unsatClass != null){ - showExplanations(); - } - - } - - - public static void main(String[] args) { - - try { - String file = "file:examples/ore/tambis.owl"; - PelletOptions.USE_CLASSIFICATION_MONITOR = PelletOptions.MonitorType.SWING; - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI - .create(file)); - - org.mindswap.pellet.utils.progress.ProgressMonitor mon = new SwingProgressMonitor(); - org.mindswap.pellet.utils.progress.ProgressMonitor m = new ClassificationProgressMonitor(); - JFrame fr = new JFrame(); - fr.setSize(new Dimension(400, 400)); - fr.setLayout(new BorderLayout()); - fr.add((JPanel)m); -// fr.setVisible(true); - PelletReasonerFactory reasonerFactory = new PelletReasonerFactory(); - Reasoner reasoner = reasonerFactory.createReasoner(manager); - reasoner.loadOntologies(Collections.singleton(ontology)); - reasoner.getKB().getTaxonomyBuilder().setProgressMonitor(mon); -// mon.taskStarted(); - - - reasoner.classify(); - - - - - -// try { -// String text = "Koala SubclassOf Class: Animal"; -// OWLEntityChecker checker = new EntityChecker(manager); -// ManchesterOWLSyntaxEditorParser parser = new ManchesterOWLSyntaxEditorParser(manager.getOWLDataFactory(),text); -// parser.setOWLEntityChecker(checker); -// parser.parseOntology(manager, ontology); -// parser.setBase(ontology.getURI().toString() + "#"); -// parser.parseDescription(); -// } catch (OWLOntologyChangeException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (ParserException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - - - - - ExplanationManager expManager = ExplanationManager - .getInstance(reasoner); - ImpactManager impManager = ImpactManager.getInstance( - reasoner); - RepairManager repManager= RepairManager.getRepairManager(reasoner); - ExplanationPanel panel = new ExplanationPanel(expManager, - impManager, repManager); - - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - - JFrame test = new JFrame(); - test.setLayout(new GridLayout(0, 1)); - test.setSize(new Dimension(1400, 1000)); - test.add(panel); - test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - test.setVisible(true); - } catch (HeadlessException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OWLOntologyCreationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ClassNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InstantiationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalAccessException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (UnsupportedLookAndFeelException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - @Override - public void explanationTypeChanged() { - // TODO Auto-generated method stub - - } - - @Override - public void repairPlanChanged() { - // TODO Auto-generated method stub - - } - - - - - - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -26,15 +26,15 @@ private OWLOntologyManager manager; private Reasoner reasoner; - private ImpactManager(Reasoner reasoner) { - this.reasoner = reasoner; + private ImpactManager(OREManager oreMan) { + this.reasoner = oreMan.getPelletReasoner().getReasoner(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); this.manager = reasoner.getManager(); impact = new HashMap<OWLAxiom, Set<OWLAxiom>>(); selectedAxioms = new ArrayList<OWLAxiom>(); listeners = new ArrayList<ImpactManagerListener>(); ranker = new AxiomRanker(ontology, reasoner, manager); - RepairManager.getRepairManager(reasoner).addListener(this); + RepairManager.getRepairManager(oreMan).addListener(this); } @@ -50,9 +50,9 @@ listeners.remove(listener); } - public static synchronized ImpactManager getInstance(Reasoner reasoner) { + public static synchronized ImpactManager getInstance(OREManager oreMan) { if (instance == null) { - instance = new ImpactManager(reasoner); + instance = new ImpactManager(oreMan); } return instance; } Copied: trunk/src/dl-learner/org/dllearner/tools/ore/MouseOverHintManager.java (from rev 1830, trunk/src/dl-learner/org/dllearner/tools/ore/ui/MouseOverHintManager.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/MouseOverHintManager.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/MouseOverHintManager.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -0,0 +1,132 @@ +package org.dllearner.tools.ore; + +import java.awt.Component; +import java.awt.Container; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.Map; +import java.util.WeakHashMap; + +import javax.swing.JLabel; +import javax.swing.MenuElement; +import javax.swing.table.JTableHeader; + + + + + +public class MouseOverHintManager implements MouseListener { + + private Map<Component, String> hintMap; + + private JLabel hintLabel; + + + + public MouseOverHintManager( JLabel hintLabel ) { + + hintMap = new WeakHashMap<Component, String>(); + + this.hintLabel = hintLabel; + + } + + + + public void addHintFor( Component comp, String hintText ) { + + hintMap.put( comp, hintText ); + + } + + + + public void enableHints( Component comp ) { + + comp.addMouseListener( this ); + + if ( comp instanceof Container ) { + + Component[] components = ((Container)comp).getComponents(); + + for ( int i=0; i<components.length; i++ ) + + enableHints( components[i] ); + + } + + if ( comp instanceof MenuElement ) { + + MenuElement[] elements = ((MenuElement)comp).getSubElements(); + + for ( int i=0; i<elements.length; i++ ) + + enableHints( elements[i].getComponent() ); + + } + + } + + + + private String getHintFor( Component comp ) { + + String hint = (String)hintMap.get(comp); + + if ( hint == null ) { + + if ( comp instanceof JLabel ) + + hint = (String)hintMap.get(((JLabel)comp).getLabelFor()); + + else if ( comp instanceof JTableHeader ) + + hint = (String)hintMap.get(((JTableHeader)comp).getTable()); + + } + + return hint; + + } + + + + + + public void mouseEntered( MouseEvent e ) { + + Component comp = (Component)e.getSource(); + + String hint; + + do { + + hint = getHintFor(comp); + + comp = comp.getParent(); + + } while ( (hint == null) && (comp != null) ); + + if ( hint != null ) + + hintLabel.setText( hint ); + + } + + + + public void mouseExited( MouseEvent e ) { + + hintLabel.setText( " " ); + + } + + + + public void mouseClicked( MouseEvent e ) {} + + public void mousePressed( MouseEvent e ) {} + + public void mouseReleased( MouseEvent e ) {} + +} Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -1,763 +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; - -import java.io.File; -import java.io.IOException; -import java.io.StringWriter; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Vector; - -import javax.swing.JLabel; - -import org.dllearner.algorithms.celoe.CELOE; -import org.dllearner.core.ComponentInitException; -import org.dllearner.core.ComponentManager; -import org.dllearner.core.KnowledgeSource; -import org.dllearner.core.LearningAlgorithm; -import org.dllearner.core.LearningProblem; -import org.dllearner.core.LearningProblemUnsupportedException; -import org.dllearner.core.ReasonerComponent; -import org.dllearner.core.configurators.ComponentFactory; -import org.dllearner.core.owl.Description; -import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.Intersection; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.ObjectQuantorRestriction; -import org.dllearner.core.owl.Union; -import org.dllearner.kb.OWLFile; -import org.dllearner.learningproblems.ClassLearningProblem; -import org.dllearner.learningproblems.EvaluatedDescriptionClass; -import org.dllearner.reasoning.FastInstanceChecker; -import org.dllearner.reasoning.OWLAPIReasoner; -import org.dllearner.reasoning.PelletReasoner; -import org.dllearner.tools.ore.ui.DescriptionLabel; -import org.mindswap.pellet.exceptions.InconsistentOntologyException; -import org.semanticweb.owl.model.OWLAxiom; -import org.semanticweb.owl.model.OWLException; - -import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; - -/** - * This class contains init methods, and is used as broker between wizard and OWL-API. - * @author Lorenz Buehmann - * - */ -public class ORE { - - private LearningAlgorithm la; - - private OWLFile ks; - private LearningProblem lp; - private ComponentManager cm; - - private ReasonerComponent fastReasoner; - - private PelletReasoner pelletReasoner; - - - private NamedClass class2Learn; - private EvaluatedDescriptionClass newClassDescription; - - - private OntologyModifier modifier; - - private String baseURI; - private Map<String, String> prefixes; - - private double noise = 0.0; - - private File owlFile; - - - public ORE() { - - cm = ComponentManager.getInstance(); - - } - - // step 1: detect knowledge sources - - /** - * Applying knowledge source. - */ - public void setKnowledgeSource(File f) { - this.owlFile = f; - - ks = cm.knowledgeSource(OWLFile.class); - try { - ks.getConfigurator().setUrl(f.toURI().toURL()); - } catch (MalformedURLException e2) { - // TODO Auto-generated catch block - e2.printStackTrace(); - } - - try { - ks.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - public void setKnowledgeSourceFromURI(URI uri){ - ks = cm.knowledgeSource(OWLFile.class); - try { - ks.getConfigurator().setUrl(uri.toURL()); - } catch (MalformedURLException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - try { - ks.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public void initPelletReasoner(){ - pelletReasoner = cm.reasoner(PelletReasoner.class, ks); - try { - pelletReasoner.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - pelletReasoner.loadOntologies(); - } - - public void loadOntology(){ - pelletReasoner.loadOntologies(); - } - - public boolean consistentOntology() throws InconsistentOntologyException{ - return pelletReasoner.isConsistent(); - } - - public PelletReasoner getPelletReasoner(){ - return pelletReasoner; - } - - - /** - * Initialize the reasoners. - */ - public void initReasoners(){ - - fastReasoner = cm.reasoner(FastInstanceChecker.class, ks); - try { - fastReasoner.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - pelletReasoner.loadOntologies(); - pelletReasoner.classify(); - modifier = new OntologyModifier(pelletReasoner); - baseURI = fastReasoner.getBaseURI(); - prefixes = fastReasoner.getPrefixes(); - - } - - public String getInconsistencyExplanationsString(){ - ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); - StringWriter buffer = new StringWriter(); - renderer.startRendering(buffer); - try { - renderer.render(getInconsistencyExplanations()); - } catch (UnsupportedOperationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OWLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - renderer.endRendering(); - return buffer.toString(); - } - - private Set<Set<OWLAxiom>> getInconsistencyExplanations(){ - return pelletReasoner.getInconsistencyReasons(); - } - - - public OntologyModifier getModifier() { - return modifier; - } - - - public EvaluatedDescriptionClass getNewClassDescription() { - return newClassDescription; - } - - - public String getBaseURI() { - return baseURI; - } - - public Map<String, String> getPrefixes() { - return prefixes; - } - - - public ReasonerComponent getFastReasoner() { - return fastReasoner; - } - - public void setLearningProblem(){ - - lp = ComponentFactory.getClassLearningProblem(fastReasoner, getClass2LearnAsURL()); - - try { - lp.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private URL getClass2LearnAsURL(){ - URL classURL = null; - try { - classURL = new URL(class2Learn.toString()); - } catch (MalformedURLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return classURL; - - } - - public void setNoise(double noise){ - System.out.println("setze noise auf" + noise); - cm.applyConfigEntry(la, "noisePercentage", noise); - try { - la.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - this.noise = noise; - } - - public void setLearningAlgorithm(){ - - try { - la = ComponentFactory.getCELOE(lp, fastReasoner); - cm.applyConfigEntry(la, "useNegation", false); - } catch (LearningProblemUnsupportedException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - - - try { - la.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - /** - * Sets the class that has to be learned. - * @param oldClass class that is chosen to be (re)learned - */ - public void setClassToLearn(NamedClass class2Learn){ - this.class2Learn = class2Learn; - } - - public void init(){ - - this.setLearningProblem(); - this.setLearningAlgorithm(); - - } - - /** - * Starts the learning algorithm, setting noise value and ignored concepts. - * - */ - public void start(){ - - try { - la.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - la.start(); - - } - - public void setNewClassDescription(EvaluatedDescriptionClass newClassDescription) { - this.newClassDescription = newClassDescription; - } - - public LearningAlgorithm getLa() { - return la; - } - - public NamedClass getIgnoredConcept() { - return class2Learn; - } - - - - /** - * Retrieves description parts that might cause inconsistency - for negative examples only. - * @param ind - * @param desc - */ - public Set<Description> getNegCriticalDescriptions(Individual ind, Description desc){ - - Set<Description> criticals = new HashSet<Description>(); - List<Description> children = desc.getChildren(); - - if(pelletReasoner.hasType(desc, ind)){ - - if(children.size() >= 2){ - - if(desc instanceof Intersection){ - for(Description d: children){ - criticals.addAll(getNegCriticalDescriptions(ind, d)); - } - } else if(desc instanceof Union){ - for(Description d: children){ - if(pelletReasoner.hasType(d, ind)){ - criticals.addAll(getNegCriticalDescriptions(ind, d)); - } - } - } - } else{ - criticals.add(desc); - } - } - - return criticals; - } - /** - * Retrieves the description parts, that might cause inconsistency - for negative examples. - * @param ind - * @param desc - * @return vector of JLabel - */ - public Collection<JLabel> descriptionToJLabelNeg(Individual ind, Description desc){ - - Collection<JLabel> criticals = new Vector<JLabel>(); - List<Description> children = desc.getChildren(); - -// try { - if(fastReasoner.hasType(desc, ind)){ - - if(children.size() >= 2){ - - if(desc instanceof Intersection){ - criticals.add(new JLabel("(")); - for(int i = 0; i<children.size()-1; i++){ - criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(i))); - criticals.add(new JLabel("and")); - - } - criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(children.size()-1))); - criticals.add(new JLabel(")")); - } else if(desc instanceof Union){ - criticals.add(new JLabel("(")); - for(int i = 0; i<children.size()-1; i++){ - if(fastReasoner.hasType(desc.getChild(i), ind)){ - criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(i))); - } else{ - criticals.add(new JLabel(desc.getChild(i).toManchesterSyntaxString(baseURI, prefixes))); - } - criticals.add(new JLabel("or")); - } - if(fastReasoner.hasType(desc.getChild(children.size()-1), ind)){ - criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(children.size()-1))); - } else{ - criticals.add(new JLabel(desc.getChild(children.size()-1).toManchesterSyntaxString(baseURI, prefixes))); - } - criticals.add(new JLabel(")")); - - - } - } else{ - - criticals.add(new DescriptionLabel(desc, "neg")); - } - } else{ - criticals.add(new JLabel(desc.toManchesterSyntaxString(baseURI, prefixes))); - } -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - - return criticals; - } - - /** - * Retrieves the description parts that might cause inconsistency - for positive examples. - * @param ind - * @param desc - * @return vector of JLabel - */ - public Collection<JLabel> descriptionToJLabelPos(Individual ind, Description desc){ - - Collection<JLabel> criticals = new Vector<JLabel>(); - List<Description> children = desc.getChildren(); - -// try { - if(!fastReasoner.hasType(desc, ind)){ - - if(children.size() >= 2){ - - if(desc instanceof Union){ - criticals.add(new JLabel("(")); - for(int i = 0; i<children.size()-1; i++){ - criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(i))); - criticals.add(new JLabel("or")); - } - criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(children.size()-1))); - criticals.add(new JLabel(")")); - } else if(desc instanceof Intersection){ - criticals.add(new JLabel("(")); - for(int i = 0; i<children.size()-1; i++){ - if(!fastReasoner.hasType(desc.getChild(i), ind)){ - criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(i))); - } else{ - criticals.add(new JLabel(desc.getChild(i).toManchesterSyntaxString(baseURI, prefixes))); - } - criticals.add(new JLabel("and")); - } - if(!fastReasoner.hasType(desc.getChild(children.size()-1), ind)){ - criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(children.size()-1))); - } else{ - criticals.add(new JLabel(desc.getChild(children.size()-1).toManchesterSyntaxString(baseURI, prefixes))); - } - criticals.add(new JLabel(")")); - } - } else{ - criticals.add(new DescriptionLabel(desc, "pos")); - } - } else{ - criticals.add(new JLabel(desc.toManchesterSyntaxString(baseURI, prefixes))); - } -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - - return criticals; - } - - /** - * Returns individuals that are in range of property. - * @param objRestr - * @param ind - */ - public Set<Individual> getIndividualsInPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ - - Set<Individual> individuals = pelletReasoner.getIndividuals(objRestr.getChild(0)); - individuals.remove(ind); - - return individuals; - } - - /** - * Returns individuals that are not in range of property. - * @param objRestr - * @param ind - */ - public Set<Individual> getIndividualsNotInPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ - - - Set<Individual> allIndividuals = new HashSet<Individual>(); - - for(Individual i : pelletReasoner.getIndividuals()){ - -// try { - if(!fastReasoner.hasType(objRestr.getChild(0), i)){ - allIndividuals.add(i); - } -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - } - - - return allIndividuals; - } - - /** - * Returns classes where individual might moved to. - * @param ind the individual - * @return set of classes - */ - public Set<NamedClass> getpossibleClassesMoveTo(Individual ind){ - Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : pelletReasoner.getNamedClasses()){ - if(!pelletReasoner.hasType(nc, ind)){ - moveClasses.add(nc); - } - } - moveClasses.remove(class2Learn); - - return moveClasses; - } - - /** - * Returns classes where individual might moved from. - * @param ind the individual - * @return set of classes - */ - public Set<NamedClass> getpossibleClassesMoveFrom(Individual ind){ - Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : pelletReasoner.getNamedClasses()){ - if(pelletReasoner.hasType(nc, ind)){ - moveClasses.add(nc); - } - } - moveClasses.remove(class2Learn); - - return moveClasses; - } - - /** - * Update reasoners ontology. - */ - public void updateReasoner(){ -// fastReasoner = cm.reasoner(FastInstanceChecker.class, new OWLAPIOntology(modifier.getOntology())); -// try { -// fastReasoner.init(); -// } catch (ComponentInitException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// -// -// try { -// pelletReasoner.init(); -// } catch (ComponentInitException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - - - setLearningAlgorithm(); - } - - /** - * Get the complement classes where individual is asserted to. - * @param desc - * @param ind - */ - public Set<NamedClass> getComplements(Description desc, Individual ind){ - - Set<NamedClass> complements = new HashSet<NamedClass>(); - System.out.println(pelletReasoner.getComplementClasses(desc)); - for(NamedClass nc : pelletReasoner.getNamedClasses()){ - if(!(nc.toString().endsWith("Thing"))){ - if(pelletReasoner.hasType(nc, ind)){ - if(modifier.isComplement(desc, nc)){ - complements.add(nc); - } - } - } - } - - - return complements; - } - - - - public static void main(String[] args){ - try{ - ComponentManager cm = ComponentManager.getInstance(); - - // create knowledge source - KnowledgeSource source = cm.knowledgeSource(OWLFile.class); - String example = "examples/ore/inconsistent.owl"; - cm.applyConfigEntry(source, "url", new File(example).toURI().toURL()); - source.init(); - - // create OWL API reasoning service with standard settings - ReasonerComponent reasoner = cm.reasoner(OWLAPIReasoner.class, source); - reasoner.init(); - - // create a learning problem and set positive and negative examples - LearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); -// cm.applyConfigEntry(lp, "type", "superClass"); - cm.applyConfigEntry(lp, "classToDescribe", "http://cohse.semanticweb.org/ontologies/people#mad+cow"); - lp.init(); - - // create the learning algorithm - LearningAlgorithm la = null; - try { - la = cm.learningAlgorithm(CELOE.class, lp, reasoner); - la.init(); - } catch (LearningProblemUnsupportedException e) { - e.printStackTrace(); - } - - // start the algorithm and print the best concept found - la.start(); - - System.out.println(la.getCurrentlyBestEvaluatedDescriptions(10, 0.8, true)); - } catch (MalformedURLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } -} - - - - - - -} - - - -// public static void main(String[] args){ -// -// final ORE test = new ORE(); -// -// File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/neg_has_all.owl"); -// -// test.setKnowledgeSource(owlFile); -// test.initReasoners(); -// -// Individual subject = new Individual("http://example.com/father#patrick"); -// Description newClass = new Intersection(new NamedClass("http://example.com/father#female"), -// new Negation(new NamedClass("http://example.com/father#bird"))); -// Description desc = new NamedClass("http://example.com/father#bird"); -// -// 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); -// System.out.println(role.toManchesterSyntaxString(test.getBaseURI(), test.getPrefixes())); -// try { -// System.out.println(test.fastReasoner.instanceCheck(role, subject)); -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// test.modifier.addObjectProperty(subject, role, new Individual("http://example.com/father#anna")); -// test.updateReasoner(); -// try { -// System.out.println(test.fastReasoner.instanceCheck(role, subject)); -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// test.modifier.saveOntology(); -// -// -// -// - -// System.out.println(test.owlReasoner.getInconsistentClasses()); -// test.getModi().reason(); - -// -// Individual subject = new Individual("http://example.com/father#anton"); -// -// 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 d = new Intersection(new NamedClass("http://example.com/father#male"), role); -// try { -// System.out.println(test.fastReasoner.instanceCheck(d, subject)); -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// System.out.println("vorher" + test.modi.ontology.getAxioms()); -// Individual object = new Individual("http://example.com/father#markus"); -// test.modi.addObjectProperty(subject, role, object); -// test.updateReasoner(); -// try { -// System.out.println(test.fastReasoner.instanceCheck(d, subject)); -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - - -// test.modi.reason(); - -// Individual ind = new Individual("http://example.com/father#heinz"); -// Description d1 = new Intersection(new NamedClass("http://example.com/father#male"), new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), new NamedClass("http://example.com/father#male"))); -// System.out.println(test.reasoner2.instanceCheck(d, ind)); - - -// test.setConcept(new NamedClass("http://example.com/father#father")); -// test.setPosNegExamples(); -// System.out.println(test.posExamples); -// System.out.println(test.negExamples); -// test.start(); -// Individual ind = new Individual("http://www.test.owl#lorenz"); - -// test.modi.addClassAssertion(ind, new NamedClass("http://www.test.owl#B")); -// System.out.println(test.reasoner2.getInconsistentClasses()); -// Description d = new Intersection(new NamedClass("http://www.test.owl#A"), new Union(new NamedClass("http://www.test.owl#B"), -// new NamedClass("http://www.test.owl#C"))); -// System.out.println(d); -// System.out.println(test.getCriticalDescriptions(ind, d)); -// JFrame testFrame = new JFrame(); -// JPanel j = new JPanel(); -// testFrame.add(j); -// testFrame.setSize(new Dimension(400, 400)); -// for(JLabel jLab : test.DescriptionToJLabel(ind, d)) -// j.add(jLab); -// testFrame.setVisible(true); -//} - - - - - - - - - - Copied: trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java (from rev 1830, trunk/src/dl-learner/org/dllearner/tools/ore/ui/RecentManager.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -0,0 +1,86 @@ +package org.dllearner.tools.ore; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.net.URI; +import java.util.ArrayList; +import java.util.List; + + +public class RecentManager { + + private static RecentManager instance; + private List<URI> uriList; + private File file; + + public RecentManager(){ + uriList = new ArrayList<URI>(); + file = new File("src/dl-learner/org/dllearner/tools/ore/recent.txt"); + } + + public static synchronized RecentManager getInstance() { + if (instance == null) { + instance = new RecentManager(); + } + return instance; + } + + public void addURI(URI uri){ + if(!uriList.contains(uri)){ + uriList.add(uri); + } + + } + + public List<URI> getURIs(){ + uriList.clear(); + deserialize(); + return uriList; + } + + public void serialize() { + try { + FileOutputStream fileStream = new FileOutputStream(file); + ObjectOutputStream outputStream = new ObjectOutputStream( + new BufferedOutputStream(fileStream)); + try { + outputStream.writeObject(uriList); + } finally { + outputStream.close(); + } + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + @SuppressWarnings("unchecked") + private void deserialize() { + try { + FileInputStream fileStream = new FileInputStream(file); + ObjectInputStream inputStream = new ObjectInputStream( + new BufferedInputStream(fileStream)); + + try { + List<URI> list = (List<URI>) inputStream.readObject(); + uriList.addAll(list); + } finally { + inputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + + } + + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -5,6 +5,7 @@ import java.util.Stack; import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChange; @@ -19,6 +20,7 @@ private OWLAxiom actual; private List<OWLAxiom> axioms2Remove; + private List<OWLAxiom> axioms2Keep; private List<RepairManagerListener> listeners; private OWLOntology ontology; private OWLOntologyManager manager; @@ -27,12 +29,14 @@ private Stack<List<OWLOntologyChange>> undoStack; private Stack<List<OWLOntologyChange>> redoStack; - private RepairManager(Reasoner reasoner) { - this.reasoner = reasoner; + private RepairManager(OREManager oreMan) { + this.reasoner = oreMan.getPelletReasoner().getReasoner(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); this.manager = reasoner.getManager(); axioms2Remove = new ArrayList<OWLAxiom>(); + axioms2Keep = new ArrayList<OWLAxiom>(); + listeners = new ArrayList<RepairManagerListener>(); undoStack = new Stack<List<OWLOntologyChange>>(); @@ -52,9 +56,9 @@ listeners.remove(listener); } - public static synchronized RepairManager getRepairManager(Reasoner reasoner) { + public static synchronized RepairManager getRepairManager(OREManager oreMan) { if (instance == null) { - instance = new RepairManager(reasoner); + instance = new RepairManager(oreMan); } return instance; } @@ -69,6 +73,16 @@ fireRepairPlanChanged(); } + public void addAxiom2Keep(OWLAxiom ax){ + axioms2Keep.add(ax); + fireRepairPlanChanged(); + } + + public void removeAxiom2Keep(OWLAxiom ax){ + axioms2Keep.remove(ax); + fireRepairPlanChanged(); + } + public boolean isSelected(OWLAxiom ax){ return axioms2Remove.contains(ax); } @@ -77,11 +91,18 @@ return axioms2Remove; } + public List<OWLAxiom> getAxioms2Keep(){ + return axioms2Keep; + } + public void executeRepairPlan(){ List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); for(OWLAxiom ax : axioms2Remove){ changes.add(new RemoveAxiom(ontology, ax)); } + for(OWLAxiom ax : axioms2Keep){ + changes.add(new AddAxiom(ontology, ax)); + } try { manager.applyChanges(changes); } catch (OWLOntologyChangeException e) { @@ -90,6 +111,7 @@ } undoStack.push(changes); axioms2Remove.clear(); + axioms2Keep.clear(); fireRepairPlanExecuted(changes); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -8,6 +8,7 @@ import java.util.Set; import java.util.Map.Entry; +import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; import org.dllearner.tools.ore.RepairManagerListener; import org.dllearner.tools.ore.explanation.laconic.LaconicExplanationGenerator; @@ -48,7 +49,7 @@ laconicExplanationCache = new HashMap<OWLAxiom, Set<Explanation>>(); lastRequestedRegularSize = new HashMap<OWLAxiom, Integer>(); lastRequestedLaconicSize = new HashMap<OWLAxiom, Integer>(); - RepairManager.getRepairManager(reasoner).addListener(this); + RepairManager.getRepairManager(OREManager.getInstance()).addListener(this); // regularExpGen = new PelletExplanation(manager, Collections.singleton(ontology)); // laconicExpGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(ontology)); @@ -144,18 +145,28 @@ @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { + Map<OWLAxiom, Set<Explanation>> copy = new HashMap<OWLAxiom, Set<Explanation>>(); for(OWLOntologyChange change : changes){ - if(change instanceof RemoveAxiom){System.out.println(changes); + if(change instanceof RemoveAxiom){ for(Entry<OWLAxiom, Set<Explanation>> entry: regularExplanationCache.entrySet()){ + Set<Explanation> explanationsCopy = new HashSet<Explanation>(); for(Explanation explanation : entry.getValue()){ if(explanation.getAxioms().contains(change.getAxiom())){ - entry.getValue().remove(explanation);System.out.println("test"); + explanationsCopy.add(explanation); } } + if(!explanationsCopy.isEmpty()){ + copy.put(entry.getKey(), explanationsCopy); + } + } } } + for(Entry<OWLAxiom, Set<Explanation>> copyEntry : copy.entrySet()){ + regularExplanationCache.get(copyEntry.getKey()).removeAll(copyEntry.getValue()); + + } } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/minus.png =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/minus.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/dl-learner/org/dllearner/tools/ore/plus.png =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/plus.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt =================================================================== (Binary files differ) Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColorListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColorListCellRenderer.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ColorListCellRenderer.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -1,79 +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; - -import java.awt.Color; -import java.awt.Component; - -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.ListCellRenderer; - -import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.tools.ore.ORE; - -/** - * List cell renderer for colored lines to provide better view on list values. - * @author Lorenz Buehmann - * - */ -public class ColorListCellRenderer extends JLabel implements ListCellRenderer { - - private static final long serialVersionUID = -7592805113197759247L; - private ORE ore; - - public ColorListCellRenderer(ORE ore) { - setOpaque(true); - this.ore = ore; - } - - public Component getListCellRendererComponent(JList list, Object value, - int index, boolean isSelected, boolean cellHasFocus) { - - if(value instanceof NamedClass){ - setText(((NamedClass) value).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); - } else if(value instanceof Individual){ - setText(((Individual) value).toManchesterSyntaxString(ore.getBaseURI(), ore.getPrefixes())); - } - Color background; - Color foreground; - - if (index % 2 == 0 && !isSelected) { - background = new Color(242, 242, 242); - foreground = Color.BLACK; - - } else if(isSelected){ - - background = Color.LIGHT_GRAY; - foreground = Color.BLACK; - }else{ - background = Color.WHITE; - foreground = Color.BLACK; - } - - setForeground(foreground); - setBackground(background); - - return this; - } - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -42,7 +42,6 @@ import org.dllearner.core.owl.ObjectCardinalityRestriction; import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.Thing; -import org.dllearner.tools.ore.ORE; import org.dllearner.tools.ore.OREManager; /** Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -20,43 +20,39 @@ import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; -import org.dllearner.tools.ore.ExplanationManager; -import org.dllearner.tools.ore.ImpactManager; +import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; import org.dllearner.tools.ore.RepairManagerListener; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.HighlighterFactory; +import org.protege.editor.core.Disposable; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLOntologyChange; -public class ExplanationTable extends JXTable implements RepairManagerListener{ +public class ExplanationTable extends JXTable implements RepairManagerListener, Disposable{ /** * */ private static final long serialVersionUID = 5580730282611559609L; - private List<OWLAxiom> explanation; private RepairManager repMan; - private ImpactManager impMan; - public ExplanationTable(List<OWLAxiom> explanation, RepairManager repMan, - ImpactManager impMan, ExplanationManager expMan, OWLClass cl) { - this.explanation = explanation; - this.repMan = repMan; - this.impMan = impMan; + public ExplanationTable(List<OWLAxiom> explanation, OWLClass cl) { + + repMan = RepairManager.getRepairManager(OREManager.getInstance()); + repMan.addListener(this); setBackground(Color.WHITE); setHighlighters(HighlighterFactory.createAlternateStriping()); setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - setModel(new ExplanationTableModel(explanation, expMan, impMan, repMan, - cl)); - getColumn(0).setCellRenderer(new OWLSyntaxTableCellRenderer(repMan)); + setModel(new ExplanationTableModel(explanation, cl)); TableColumn column4 = getColumn(3); column4.setCellRenderer(new ButtonCellRenderer()); column4.setCellEditor(new ButtonCellEditor()); column4.setResizable(false); + setRowHeight(getRowHeight() + 4); setColumnSizes(); getSelectionModel().addListSelectionListener( new ListSelectionListener() { @@ -113,10 +109,7 @@ }); } - private OWLAxiom getOWLAxiomAtRow(int rowIndex){ - return ((ExplanationTableModel)getModel()).getOWLAxiomAtRow(rowIndex); - } - + private void setColumnSizes(){ getColumn(1).setMaxWidth(30); getColumn(2).setMaxWidth(30); @@ -125,14 +118,6 @@ private void changeSelection() { -// -// if(getSelectedRow() >=0){ -// OWLAxiom rowAxiom = getOWLAxiomAtRow(getSelectedRow()); -// impMan.setActualAxiom(rowAxiom); -// } else { -// impMan.setActualAxiom(null); -// } - } class ButtonCellRenderer extends JButton implements TableCellRenderer{ @@ -211,8 +196,16 @@ repaint(); } + + @Override + public void dispose() throws Exception { + repMan.removeListener(this); + + } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-08-24 13:27:45 UTC (rev 1830) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-08-25 15:57:36 UTC (rev 1831) @@ -1,12 +1,12 @@ package org.dllearner.tools.ore.ui; -import java.util.ArrayList; import java.util.List; import javax.swing.table.AbstractTableModel; import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.ImpactManager; +import org.dllearner.... [truncated message content] |
From: <lor...@us...> - 2009-08-29 14:08:45
|
Revision: 1832 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1832&view=rev Author: lorenz_b Date: 2009-08-29 14:08:33 +0000 (Sat, 29 Aug 2009) Log Message: ----------- added graphical coverage panel made tool able to handle knowledge source change Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.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/UnsatisfiableExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.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/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/OREManagerListener.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/IndividualsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/IndividualsTableModel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -24,33 +24,32 @@ import uk.ac.manchester.cs.owl.explanation.ordering.DefaultExplanationOrderer; import uk.ac.manchester.cs.owl.explanation.ordering.ExplanationTree; -public class ExplanationManager implements OWLOntologyChangeListener, RepairManagerListener{ +public class ExplanationManager implements OWLOntologyChangeListener, RepairManagerListener, OREManagerListener{ private static ExplanationManager instance; private OWLOntologyManager manager; private OWLDataFactory dataFactory; - private PelletReasonerFactory reasonerFactory; private OWLOntology ontology; private Reasoner reasoner; private RootFinder rootFinder; - private Set<OWLClass> unsatClasses; - private Set<OWLClass> rootClasses; - boolean ontologyChanged = true; - boolean isLaconicMode = false; + private boolean ontologyChanged = true; + private boolean isLaconicMode = false; private boolean isComputeAllExplanations = false; private int maxExplantionCount = 1; + private boolean allExplanationWarningChecked = false; + private List<ExplanationManagerListener> listeners; - private boolean allExplanationWarningChecked = false; + private CachedExplanationGenerator gen; private ExplanationManager(OREManager oreMan) { - + OREManager.getInstance().addListener(this); this.reasoner = oreMan.getPelletReasoner().getReasoner(); this.manager = reasoner.getManager(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); @@ -59,13 +58,10 @@ // manager.addOntologyChangeListener(reasoner); dataFactory = manager.getOWLDataFactory(); RepairManager.getRepairManager(oreMan).addListener(this); - reasonerFactory = new PelletReasonerFactory(); + - rootFinder = new RootFinder(manager, reasoner, reasonerFactory); + rootFinder = new RootFinder(); - rootClasses = new HashSet<OWLClass>(); - unsatClasses = new HashSet<OWLClass>(); - listeners = new ArrayList<ExplanationManagerListener>(); gen = new CachedExplanationGenerator(ontology, reasoner); @@ -91,28 +87,14 @@ return instance; } - public Set<OWLClass> getUnsatisfiableClasses(){ - computeRootUnsatisfiableClasses(); - return unsatClasses; + public Set<OWLClass> getDerivedClasses(){ + return rootFinder.getDerivedClasses(); } public Set<OWLClass> getRootUnsatisfiableClasses(){ - computeRootUnsatisfiableClasses(); - return rootClasses; + return rootFinder.getRootClasses(); } - - private void computeRootUnsatisfiableClasses(){ - if(ontologyChanged){ - rootClasses.clear(); - unsatClasses.clear(); - unsatClasses.addAll(reasoner.getInconsistentClasses()); - rootClasses.addAll(rootFinder.getRootClasses()); - ontologyChanged = false; - } - - } - public Set<List<OWLAxiom>> getUnsatisfiableExplanations(OWLClass unsat) { OWLSubClassAxiom entailment = dataFactory.getOWLSubClassAxiom(unsat, @@ -173,7 +155,7 @@ @Override public void ontologiesChanged(List<? extends OWLOntologyChange> changes) throws OWLException { - ontologyChanged = true; + ontologyChanged = true; } public int getArity(OWLClass cl, OWLAxiom ax) { @@ -198,6 +180,10 @@ } + public boolean isLaconicMode(){ + return gen.isLaconicMode(); + } + public void setComputeAllExplanationsMode(boolean value){ isComputeAllExplanations = value; fireExplanationLimitChanged(); @@ -256,5 +242,20 @@ return allExplanationWarningChecked; } + public Set<OWLAxiom> getSourceAxioms(OWLAxiom ax){ + return gen.getSourceAxioms(ax); + } + public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ + return gen.getRemainingAxioms(source, part); + } + + @Override + public void activeOntologyChanged() { + ontology = OREManager.getInstance().getPelletReasoner().getOWLAPIOntologies(); + reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); + gen = new CachedExplanationGenerator(ontology, reasoner); + } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -5,11 +5,14 @@ import java.net.MalformedURLException; import java.net.URI; import java.net.URL; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; import java.util.Vector; import javax.swing.JLabel; @@ -59,17 +62,13 @@ private int maxExecutionTimeInSeconds = 10; private int maxNrOfResults = 10; - + private List<OREManagerListener> listeners; - private OntologyModifier modifier; - - private Thread currentClassificationThread; - - public OREManager(){ cm = ComponentManager.getInstance(); + listeners = new ArrayList<OREManagerListener>(); } public static synchronized OREManager getInstance() { @@ -99,6 +98,10 @@ } + public KnowledgeSource getKnowledgeSource(){ + return ks; + } + public void setLearningProblem(){ lp = cm.learningProblem(ClassLearningProblem.class, pelletReasoner); @@ -150,30 +153,22 @@ baseURI = pelletReasoner.getBaseURI(); prefixes = pelletReasoner.getPrefixes(); modifier = new OntologyModifier(pelletReasoner); + fireActiveOntologyChanged(); } public void loadOntology(){ pelletReasoner.loadOntologies(); + } - public void classifyAsynchronously(){ - currentClassificationThread = new Thread(new Runnable() { - - @Override - public void run() { - pelletReasoner.classify(); - - } - }); + public void addListener(OREManagerListener listener){ + listeners.add(listener); } - public void killCurrentClassificationThread(){ - currentClassificationThread.stop(); - + public void removeListener(OREManagerListener listener){ + listeners.remove(listener); } - - public boolean consistentOntology() throws InconsistentOntologyException{ return pelletReasoner.isConsistent(); } @@ -182,8 +177,14 @@ return pelletReasoner; } + private void fireActiveOntologyChanged(){ + for(OREManagerListener listener : listeners){ + listener.activeOntologyChanged(); + } + } + public String getInconsistencyExplanationsString(){ ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); StringWriter buffer = new StringWriter(); @@ -239,6 +240,16 @@ } + public SortedSet<Individual> getPositiveFailureExamples(){ + SortedSet<Individual> posNotCovered = pelletReasoner.getIndividuals(currentClass2Learn); + posNotCovered.removeAll(learnedClassDescription.getCoveredInstances()); + return posNotCovered; + } + + public SortedSet<Individual> getNegativeFailureExamples(){ + return new TreeSet<Individual>(learnedClassDescription.getAdditionalInstances()); + } + public void setNoisePercentage(double noisePercentage) { this.noisePercentage = noisePercentage; } @@ -533,7 +544,7 @@ public Set<NamedClass> getComplements(Description desc, Individual ind){ Set<NamedClass> complements = new HashSet<NamedClass>(); - System.out.println(pelletReasoner.getComplementClasses(desc)); + for(NamedClass nc : pelletReasoner.getNamedClasses()){ if(!(nc.toString().endsWith("Thing"))){ if(pelletReasoner.hasType(nc, ind)){ Added: trunk/src/dl-learner/org/dllearner/tools/ore/OREManagerListener.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManagerListener.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManagerListener.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -0,0 +1,6 @@ +package org.dllearner.tools.ore; + +public interface OREManagerListener { + public abstract void activeOntologyChanged(); + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Set; import java.util.Stack; import org.mindswap.pellet.owlapi.Reasoner; @@ -68,21 +69,41 @@ fireRepairPlanChanged(); } + public void addAxioms2Remove(Set<OWLAxiom> axioms){ + axioms2Remove.addAll(axioms); + fireRepairPlanChanged(); + } + public void removeAxiom2Remove(OWLAxiom ax){ axioms2Remove.remove(ax); fireRepairPlanChanged(); } + public void removeAxioms2Remove(Set<OWLAxiom> axioms){ + axioms2Remove.removeAll(axioms); + fireRepairPlanChanged(); + } + public void addAxiom2Keep(OWLAxiom ax){ axioms2Keep.add(ax); fireRepairPlanChanged(); } + public void addAxioms2Keep(Set<OWLAxiom> axioms){ + axioms2Keep.addAll(axioms); + fireRepairPlanChanged(); + } + public void removeAxiom2Keep(OWLAxiom ax){ axioms2Keep.remove(ax); fireRepairPlanChanged(); } + public void removeAxioms2Keep(Set<OWLAxiom> axioms){ + axioms2Keep.removeAll(axioms); + fireRepairPlanChanged(); + } + public boolean isSelected(OWLAxiom ax){ return axioms2Remove.contains(ax); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -58,6 +58,10 @@ public void setComputeLaconicExplanations(boolean laconic){ laconicMode = laconic; } + + public boolean isLaconicMode(){ + return laconicMode; + } @Override public Explanation getExplanation(OWLAxiom entailment){ @@ -169,4 +173,12 @@ } } + + public Set<OWLAxiom> getSourceAxioms(OWLAxiom ax){ + return laconicExpGen.getSourceAxioms(ax); + } + + public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ + return laconicExpGen.getRemainingAxioms(source, part); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -170,7 +170,7 @@ Set<Explanation> preciseJusts = expGen.getExplanations(unsatAxiom); // renderer.render(unsatAxiom, preciseJusts); renderer.endRendering(); - expGen.returnSourceAxioms(preciseJusts); + } catch (OWLOntologyCreationException e) { // TODO Auto-generated catch block Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -9,6 +9,8 @@ import java.util.Map; import java.util.Set; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.OREManagerListener; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.inference.OWLReasoner; @@ -26,6 +28,7 @@ import org.semanticweb.owl.model.OWLDescriptionVisitor; import org.semanticweb.owl.model.OWLDisjointClassesAxiom; import org.semanticweb.owl.model.OWLEntity; +import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLObjectAllRestriction; import org.semanticweb.owl.model.OWLObjectComplementOf; import org.semanticweb.owl.model.OWLObjectExactCardinalityRestriction; @@ -41,20 +44,28 @@ import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyChangeListener; import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLQuantifiedRestriction; import org.semanticweb.owl.model.RemoveAxiom; -public class RootFinder implements OWLDescriptionVisitor{ +public class RootFinder implements OWLDescriptionVisitor, OREManagerListener, OWLOntologyChangeListener{ private OWLOntologyManager manager; private OWLReasoner reasoner; private OWLReasonerFactory reasonerFactory; - private Set<OWLClass> rootClasses; + private Set<OWLClass> depend2Classes; private OWLOntology ontology; + + private Set<OWLClass> rootClasses; + private Set<OWLClass> derivedClasses; + + private boolean ontologyChanged = true; + + int depth; private Map<Integer, Set<OWLObjectAllRestriction>> depth2UniversalRestrictionPropertyMap; private Map<Integer, Set<OWLObjectPropertyExpression>> depth2ExistsRestrictionPropertyMap; @@ -62,10 +73,11 @@ private Map<OWLClass, Set<OWLClass>> child2Parents; private Map<OWLClass, Set<OWLClass>> parent2Children; - public RootFinder(OWLOntologyManager manager, OWLReasoner reasoner, OWLReasonerFactory reasonerFactory){ - this.manager = manager; - this.reasoner = reasoner; - this.reasonerFactory = reasonerFactory; + public RootFinder(){ + + this.manager = OWLManager.createOWLOntologyManager(); + this.reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); + this.reasonerFactory = new PelletReasonerFactory(); try { this.ontology = manager.createOntology(URI.create("all"), reasoner.getLoadedOntologies()); } catch (OWLOntologyCreationException e) { @@ -74,19 +86,23 @@ e.printStackTrace(); } rootClasses = new HashSet<OWLClass>(); + derivedClasses = new HashSet<OWLClass>(); depend2Classes = new HashSet<OWLClass>(); depth2UniversalRestrictionPropertyMap = new HashMap<Integer, Set<OWLObjectAllRestriction>>(); depth2ExistsRestrictionPropertyMap = new HashMap<Integer, Set<OWLObjectPropertyExpression>>(); child2Parents = new HashMap<OWLClass, Set<OWLClass>>(); parent2Children = new HashMap<OWLClass, Set<OWLClass>>(); + + OREManager.getInstance().addListener(this); + OREManager.getInstance().getPelletReasoner().getOWLOntologyManager().addOntologyChangeListener(this); } public Set<OWLClass> getRootClasses(){ - rootClasses.clear(); - computePossibleRoots(); - pruneRoots(); - rootClasses.remove(manager.getOWLDataFactory().getOWLNothing()); + if(ontologyChanged){ + computeRootDerivedClasses(); + ontologyChanged = false; + } // for(OWLClass child : child2Parents.keySet()){ // for(OWLClass par : get(child, child2Parents)){ // get(par, parent2Childs).add(child); @@ -95,9 +111,27 @@ return Collections.unmodifiableSet(rootClasses); } + public Set<OWLClass> getDerivedClasses(){ + if(ontologyChanged){ + computeRootDerivedClasses(); + ontologyChanged = false; + } + return Collections.unmodifiableSet(derivedClasses); + } + + public void computeRootDerivedClasses(){ + rootClasses.clear(); + derivedClasses.clear(); + computePossibleRoots(); + pruneRoots(); + derivedClasses.removeAll(rootClasses); + + rootClasses.remove(manager.getOWLDataFactory().getOWLNothing()); + } + private void computePossibleRoots(){ - try { - for(OWLClass cls : reasoner.getInconsistentClasses()){ + try {derivedClasses.addAll(reasoner.getInconsistentClasses()); + for(OWLClass cls : derivedClasses){ reset(); for(OWLDescription equi : cls.getEquivalentClasses(ontology)){ equi.accept(this); @@ -327,20 +361,27 @@ public void visit(OWLDataMaxCardinalityRestriction arg0) { } - public static void main(String[] args){ - try { - String file = "file:examples/ore/tambis.owl"; - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create(file)); - OWLReasonerFactory factory = new PelletReasonerFactory(); - OWLReasoner reasoner = factory.createReasoner(manager); - reasoner.loadOntologies(Collections.singleton(ontology)); - RootFinder strReasoner = new RootFinder(manager, reasoner, factory); - System.out.println(strReasoner.getRootClasses()); + @Override + public void activeOntologyChanged() { + this.manager = OWLManager.createOWLOntologyManager(); + this.reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); + this.reasonerFactory = new PelletReasonerFactory(); + try { + this.ontology = manager.createOntology(URI.create("all"), reasoner.getLoadedOntologies()); } catch (OWLOntologyCreationException e) { e.printStackTrace(); - } catch (OWLReasonerException e) { + } catch (OWLOntologyChangeException e) { e.printStackTrace(); } - } + + ontologyChanged = true; + + } + + @Override + public void ontologiesChanged(List<? extends OWLOntologyChange> arg0) + throws OWLException { + ontologyChanged = true; + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -10,10 +10,12 @@ import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.tools.ore.explanation.ExplanationException; import org.dllearner.tools.ore.explanation.PelletExplanationGenerator; +import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.inference.OWLReasonerFactory; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLLogicalAxiom; @@ -47,7 +49,7 @@ } catch (OWLOntologyChangeException e) { e.printStackTrace(); } - + oPlus = new OPlus(manager.getOWLDataFactory()); pelletExplanation = new PelletExplanationGenerator(manager, ontologies); lastRegularExplanations = new HashSet<Explanation>(); } @@ -59,7 +61,8 @@ * @return splitted axioms */ public Set<OWLAxiom> computeOPlus(Set<OWLAxiom> axioms) { - oPlus = new OPlus(manager.getOWLDataFactory()); +// oPlus = new OPlus(manager.getOWLDataFactory()); + Set<OWLAxiom> oPlusAxioms = new HashSet<OWLAxiom>(); for(OWLAxiom ax : axioms){ @@ -270,48 +273,137 @@ return reconstituedExplanations; } - - - - public Set<Explanation> getExplanations(OWLAxiom entailment) throws ExplanationException { - Set<Explanation> explanations; - try { - explanations = computePreciseJusts(entailment, 2147483647); - } catch (OWLException e) { - throw new ExplanationException(e); + + public Set<Explanation> getExplanations(OWLAxiom entailment) + throws ExplanationException { + Set<Explanation> explanations; + try { + explanations = computePreciseJusts(entailment, 2147483647); + } catch (OWLException e) { + throw new ExplanationException(e); + } + return explanations; } - return explanations; - } - - public Set<Explanation> getExplanations(OWLAxiom entailment, int limit) - throws ExplanationException { - Set<Explanation> explanations; - try { - explanations = computePreciseJusts(entailment, limit); - } catch (OWLException e) { - throw new ExplanationException(e); + + public Set<Explanation> getExplanations(OWLAxiom entailment, int limit) + throws ExplanationException { + Set<Explanation> explanations; + try { + explanations = computePreciseJusts(entailment, limit); + } catch (OWLException e) { + throw new ExplanationException(e); + } + return explanations; } - return explanations; - } public Set<Explanation> getRegularExplanations(OWLAxiom entailment) throws ExplanationException { Set<Explanation> regularJusts; regularJusts = pelletExplanation.getExplanations((OWLAxiom)entailment); lastRegularExplanations.addAll(regularJusts); return regularJusts; - } + } - public void returnSourceAxioms(Set<Explanation> explanations){ - Map<OWLAxiom, Set<OWLAxiom>> sourceMap = oPlus.getAxiomsMap(); - System.out.println(sourceMap); - for(Explanation explanation: explanations){ - for(OWLAxiom ax : explanation.getAxioms()){ - System.out.println(ax + " gehört zu " + sourceMap.get(ax)); - + public Set<OWLAxiom> getSourceAxioms(OWLAxiom axiom){ + Map<OWLAxiom, Set<OWLAxiom>> axioms2SourceMap = oPlus.getAxiomsMap(); + Set<OWLAxiom> sourceAxioms = new HashSet<OWLAxiom>(); + + for(OWLAxiom ax : axioms2SourceMap.get(axiom)){ + if(ontology.containsAxiom(ax)){ + sourceAxioms.add(ax); } } + + return sourceAxioms; } + + public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ + Set<OWLAxiom> parts = computeOPlus(Collections.singleton(source));System.out.println("Parts: " + parts); + parts.remove(part);System.out.println("removed part: " + part); + for(OWLAxiom pa : parts){ + System.out.println("Part : " + pa + "has source : " + oPlus.getAxiomsMap().get(pa)); + } + + return rebuildAxioms(parts); + } + + private Set<OWLAxiom> rebuildAxioms(Set<OWLAxiom> axioms){ + Map<OWLAxiom, Set<OWLAxiom>> sourceAxioms2OPlus = new HashMap<OWLAxiom, Set<OWLAxiom>>(); + for (OWLAxiom ax : axioms) { + if (ontology.containsAxiom(ax)) { + sourceAxioms2OPlus.put(ax, computeOPlus(Collections + .singleton(ax))); + } + } + + Map<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>> lhs2SubClassAxiom = new HashMap<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>>(); + Set<OWLAxiom> reconstituedAxioms = new HashSet<OWLAxiom>(); + for (OWLAxiom laconicAx : axioms) {System.out.println("Laconic Axiom: "+ laconicAx); + if (laconicAx instanceof OWLSubClassAxiom) { + OWLSubClassAxiom subAx = (OWLSubClassAxiom) laconicAx; + if (subAx.getSubClass().isAnonymous()) {System.out.println(" has anomymous subclass ");System.out.println("has source axioms: " +oPlus.getAxiomsMap().get(subAx)); + reconstituedAxioms.add(subAx);System.out.println("adding to rebuildet axioms"); + } else {System.out.println("has no anonymous subclass"); + Map<OWLAxiom, Set<OWLSubClassAxiom>> source2AxiomMap = lhs2SubClassAxiom.get(subAx.getSubClass().asOWLClass()); + if (source2AxiomMap == null) { + source2AxiomMap = new HashMap<OWLAxiom, Set<OWLSubClassAxiom>>(); + lhs2SubClassAxiom.put(subAx.getSubClass().asOWLClass(), source2AxiomMap); + } + + for (OWLAxiom sourceAxiom : sourceAxioms2OPlus.keySet()) {System.out.println("source axiom: " + sourceAxiom); + if ((sourceAxioms2OPlus.get(sourceAxiom)).contains(subAx)) { + Set<OWLSubClassAxiom> subClassAxioms = source2AxiomMap.get(sourceAxiom); + if (subClassAxioms == null) { + subClassAxioms = new HashSet<OWLSubClassAxiom>(); + source2AxiomMap.put(sourceAxiom, subClassAxioms); + } + subClassAxioms.add(subAx);System.out.println("-->subclass axioms: " + subClassAxioms); + } + } + } + } else { + reconstituedAxioms.add(laconicAx); + } + } + Set<OWLAxiom> consumedAxioms = new HashSet<OWLAxiom>(); + for (OWLClass lhs : lhs2SubClassAxiom.keySet()) { + Map<OWLAxiom, Set<OWLSubClassAxiom>> source2SubClassAxiom = lhs2SubClassAxiom.get(lhs); + for (OWLAxiom source : source2SubClassAxiom.keySet()) { + Set<OWLDescription> rightHandSides = new HashSet<OWLDescription>(); + for (OWLSubClassAxiom sub : source2SubClassAxiom.get(source)) { + if (!consumedAxioms.contains(sub)) { + rightHandSides.add(sub.getSuperClass()); + consumedAxioms.add(sub); + } + } + + if (rightHandSides.size() == 1) + reconstituedAxioms.add(manager.getOWLDataFactory().getOWLSubClassAxiom((OWLDescription) lhs,((OWLDescription) rightHandSides.iterator().next()))); + else if (rightHandSides.size() > 1) { + org.semanticweb.owl.model.OWLObjectIntersectionOf conjunction = manager.getOWLDataFactory().getOWLObjectIntersectionOf(rightHandSides); + reconstituedAxioms.add(manager.getOWLDataFactory().getOWLSubClassAxiom((OWLDescription) lhs,conjunction)); + } + } + } + return reconstituedAxioms; + } + + public static void main(String[] args) throws OWLOntologyCreationException, ExplanationException{ + String baseURI = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl"; + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create("file:examples/ore/koala.owl")); + OWLDataFactory factory = manager.getOWLDataFactory(); + LaconicExplanationGenerator expGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(ontology)); + OWLClass koalaWithPhD = factory.getOWLClass(URI.create(baseURI + "#KoalaWithPhD")); + OWLClass koala = factory.getOWLClass(URI.create(baseURI + "#Koala")); + + System.out.println(expGen.getExplanations(factory.getOWLSubClassAxiom(koalaWithPhD, factory.getOWLNothing()), 1)); + OWLAxiom laconicAx = factory.getOWLSubClassAxiom(koalaWithPhD, koala); + Set<OWLAxiom> sourceAxioms = expGen.getSourceAxioms(laconicAx); + System.out.println("Source axioms: " + sourceAxioms); + for(OWLAxiom sourceAx : sourceAxioms){ + System.out.println("Rebuildet: " + expGen.getRemainingAxioms(sourceAx, laconicAx)); + } + } - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -102,17 +102,23 @@ { for(OWLAxiom axiom : axioms){ - - if(!axiom.equals(source)) + Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); + if(existing == null) { - Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); - if(existing == null) - { - existing = new HashSet<OWLAxiom>(); - axiomsMap.put(axiom, existing); - } - existing.add(source); + existing = new HashSet<OWLAxiom>(); + axiomsMap.put(axiom, existing); } + existing.add(source); +// if(!axiom.equals(source)) +// { +// Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); +// if(existing == null) +// { +// existing = new HashSet<OWLAxiom>(); +// axiomsMap.put(axiom, existing); +// } +// existing.add(source); +// } } return axioms; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -1,6 +1,7 @@ package org.dllearner.tools.ore.ui; import java.awt.Color; +import java.awt.event.MouseEvent; import java.util.Set; import javax.swing.ListSelectionModel; @@ -28,6 +29,20 @@ setGridColor(Color.LIGHT_GRAY); } + @Override + public String getToolTipText(MouseEvent e){ + String tip = null; + java.awt.Point p = e.getPoint(); + int rowIndex = rowAtPoint(p); + if(rowIndex != -1){ + tip = getValueAt(rowIndex, 0).toString(); + + } else { + tip = super.getToolTipText(e); + } + return tip; + } + public void clear(){ ((ClassesTableModel)getModel()).clear(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTableModel.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTableModel.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -33,11 +33,7 @@ @Override public Object getValueAt(int rowIndex, int columnIndex) { - if(rowIndex >= 0){ return classes.get(rowIndex); - } else { - return ""; - } } public void clear(){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -53,7 +53,9 @@ column4.setCellEditor(new ButtonCellEditor()); column4.setResizable(false); setRowHeight(getRowHeight() + 4); - setColumnSizes(); + getColumn(1).setMaxWidth(30); + getColumn(2).setMaxWidth(30); + getColumn(3).setMaxWidth(80); getSelectionModel().addListSelectionListener( new ListSelectionListener() { @@ -109,13 +111,6 @@ }); } - - private void setColumnSizes(){ - getColumn(1).setMaxWidth(30); - getColumn(2).setMaxWidth(30); - getColumn(3).setMaxWidth(80); - } - private void changeSelection() { } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-08-25 15:57:36 UTC (rev 1831) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -68,7 +68,15 @@ impMan.removeAxiomFromImpactList(ax); } else { impMan.addAxiom2ImpactList(ax); - repMan.addAxiom2Remove(ax); + if(expMan.isLaconicMode()){ + for(OWLAxiom source : expMan.getSourceAxioms(ax)){ + repMan.addAxiom2Remove(source); + repMan.addAxioms2Keep(expMan.getRemainingAxioms(source, ax)); + } + } else { + repMan.addAxiom2Remove(ax); + } + } } super.setValueAt(value, rowIndex, columnIndex); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -0,0 +1,766 @@ +/** + * Copyright (C) 2007-2009, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.tools.ore.ui; + +import java.awt.AlphaComposite; +import java.awt.Color; +import java.awt.Composite; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionListener; +import java.awt.geom.Ellipse2D; +import java.util.Random; +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; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.protege.IndividualPoint; + + +/** + * This class draws the graphical coverage of a learned concept. + * + * @author Christian Koetteritzsch + * + */ +public class GraphicalCoveragePanel extends JPanel implements MouseMotionListener{ + + private static final long serialVersionUID = 855436961912515267L; + private static final int HEIGHT = 200; + private static final int WIDTH = 200; + private static final int ELLIPSE_X_AXIS = 30; + private static final int ELLIPSE_Y_AXIS = 30; + private static final int MAX_NUMBER_OF_INDIVIDUAL_POINTS = 20; + private static final int PLUS_SIZE = 5; + private static final int SUBSTRING_SIZE = 25; + private static final int SPACE_SIZE = 7; + private static final int MAX_RANDOM_NUMBER = 300; + + + private int shiftXAxis; + private int distortionOld; + private Ellipse2D oldConcept; + private Ellipse2D newConcept; + + private EvaluatedDescription eval; + + private String conceptNew; + private final Vector<IndividualPoint> posCovIndVector; + private final Vector<IndividualPoint> posNotCovIndVector; + private final Vector<IndividualPoint> additionalIndividuals; + private final Vector<IndividualPoint> points; + private final Vector<String> conceptVector; + + private int adjustment; + private int shiftOldConcept; + private int shiftNewConcept; + private int shiftNewConceptX; + private int shiftCovered; + private int coveredIndividualSize; + private int additionalIndividualSize; + private int x1; + private int x2; + private int y1; + private int y2; + private int centerX; + private int centerY; + private final Random random; + private final Color darkGreen; + private final Color darkRed; + private int notCoveredInd; + + + /** + * + * This is the constructor for the GraphicalCoveragePanel. + * + * @param desc + * EvaluatedDescription + * @param m + * DLLearnerModel + * @param concept + * String + * @param p + * MoreDetailForSuggestedConceptsPanel + */ + public GraphicalCoveragePanel( String concept) { + + + this.setPreferredSize(new Dimension(540, 260)); + + this.repaint(); + darkGreen = new Color(0, 100, 0); + darkRed = new Color(205, 0, 0); + random = new Random(); + conceptNew = concept; + conceptVector = new Vector<String>(); + posCovIndVector = new Vector<IndividualPoint>(); + posNotCovIndVector = new Vector<IndividualPoint>(); + additionalIndividuals = new Vector<IndividualPoint>(); + points = new Vector<IndividualPoint>(); + + + + oldConcept = new Ellipse2D.Double(ELLIPSE_X_AXIS, + ELLIPSE_Y_AXIS, WIDTH, HEIGHT); + newConcept = new Ellipse2D.Double(0, 0, 0, 0); + addMouseMotionListener(this); +// this.computeIndividualPoints(); + + } + + @Override + protected void paintComponent(Graphics g) { + + Graphics2D g2D; + g2D = (Graphics2D) g; + Composite original = g2D.getComposite(); + AlphaComposite ac = AlphaComposite.getInstance( + AlphaComposite.SRC_OVER, 0.5f); + g2D.setColor(Color.BLACK); + g2D.drawString(OREManager.getInstance().getCurrentClass2Learn() + .toString(), 320, 10); + g2D.setColor(Color.ORANGE); + g2D.fillOval(310, 20, 9, 9); + g2D.setColor(Color.black); + int p = 30; + + g2D.setColor(darkGreen); + Ellipse2D circlePoint = new Ellipse2D.Double(315 - 1, p - 6, 4, 4); + g2D.fill(circlePoint); + g2D.setColor(Color.BLACK); + g2D.drawString("individuals covered by", 320, p); + g2D.setColor(Color.ORANGE); + g2D.fillOval(455, p - 9, 9, 9); + g2D.setColor(Color.BLACK); + g2D.drawString("and", 485, p); + g2D.setColor(Color.YELLOW); + g2D.fillOval(525, p - 9, 9, 9); + g2D.setColor(Color.BLACK); + p = p + 20; + g2D.drawString("(OK)", 320, p); + p = p + 20; + + g2D.setColor(darkRed); + Ellipse2D circlePoint2 = new Ellipse2D.Double(315 - 1, p - 6, 4, 4); + g2D.fill(circlePoint2); + g2D.setColor(Color.BLACK); + g2D.drawString("individuals covered by", 320, p); + g2D.setColor(Color.ORANGE); + g2D.fillOval(455, p - 9, 9, 9); + g2D.setColor(Color.BLACK); + p = p + 20; + g2D.drawString("(potential problem)", 320, p); + p = p + 20; + g2D.setColor(darkRed); + Ellipse2D circlePoint3 = new Ellipse2D.Double(315 - 1, p - 6, 4, 4); + g2D.fill(circlePoint3); + g2D.setColor(Color.BLACK); + g2D.drawString("individuals covered by", 320, p); + g2D.setColor(Color.YELLOW); + g2D.fillOval(455, p - 9, 9, 9); + g2D.setColor(Color.BLACK); + p = p + 20; + g2D.drawString("(potential problem)", 320, p); + + g2D.setColor(Color.YELLOW); + g2D.fill(oldConcept); + g2D.fillOval(310, 0, 9, 9); + g2D.setColor(Color.ORANGE); + g2D.setComposite(ac); + g2D.fill(newConcept); + g2D.setColor(Color.BLACK); + for (int i = 0; i < posCovIndVector.size(); i++) { + g2D.setColor(darkGreen); + g2D.fill(posCovIndVector.get(i).getIndividualPoint()); + } + + for (int i = 0; i < posNotCovIndVector.size(); i++) { + g2D.setColor(darkRed); + g2D.fill(posNotCovIndVector.get(i).getIndividualPoint()); + } + + for (int i = 0; i < additionalIndividuals.size(); i++) { + g2D.setColor(Color.BLACK); + g2D.fill(additionalIndividuals.get(i).getIndividualPoint()); + } + + if(eval != null){ + // Plus 1 + if (coveredIndividualSize != OREManager.getInstance() + .getPelletReasoner().getIndividuals( + OREManager.getInstance().getCurrentClass2Learn()) + .size() + && notCoveredInd != 0) { + g2D.drawLine(x1 - 1 - shiftOldConcept, y1 - 1, x2 + 1 + - shiftOldConcept, y1 - 1); + g2D.drawLine(x1 - shiftOldConcept, centerY - 1, x2 + - shiftOldConcept, centerY - 1); + g2D.drawLine(x1 - shiftOldConcept, centerY, x2 + - shiftOldConcept, centerY); + g2D.drawLine(x1 - shiftOldConcept, centerY + 1, x2 + - shiftOldConcept, centerY + 1); + g2D.drawLine(x1 - 1 - shiftOldConcept, y2 + 1, x2 + 1 + - shiftOldConcept, y2 + 1); + + g2D.drawLine(x1 - 1 - shiftOldConcept, y1 - 1, x1 - 1 + - shiftOldConcept, y2 + 1); + g2D.drawLine(centerX - 1 - shiftOldConcept, y1, centerX - 1 + - shiftOldConcept, y2); + g2D.drawLine(centerX - shiftOldConcept, y1, centerX + - shiftOldConcept, y2); + g2D.drawLine(centerX + 1 - shiftOldConcept, y1, centerX + 1 + - shiftOldConcept, y2); + g2D.drawLine(x2 + 1 - shiftOldConcept, y1 - 1, x2 + 1 + - shiftOldConcept, y2 + 1); + } + // Plus 2 + + g2D.drawLine(x1 - 1 + shiftCovered, y1 - 1, x2 + 1 + shiftCovered, + y1 - 1); + g2D.drawLine(x1 + shiftCovered, centerY - 1, x2 + shiftCovered, + centerY - 1); + g2D + .drawLine(x1 + shiftCovered, centerY, x2 + shiftCovered, + centerY); + g2D.drawLine(x1 + shiftCovered, centerY + 1, x2 + shiftCovered, + centerY + 1); + g2D.drawLine(x1 - 1 + shiftCovered, y2 + 1, x2 + 1 + shiftCovered, + y2 + 1); + + g2D.drawLine(x1 - 1 + shiftCovered, y1 - 1, x1 - 1 + shiftCovered, + y2 + 1); + g2D.drawLine(centerX - 1 + shiftCovered, y1, centerX - 1 + + shiftCovered, y2); + g2D + .drawLine(centerX + shiftCovered, y1, centerX + + shiftCovered, y2); + g2D.drawLine(centerX + 1 + shiftCovered, y1, centerX + 1 + + shiftCovered, y2); + g2D.drawLine(x2 + 1 + shiftCovered, y1 - 1, x2 + 1 + shiftCovered, + y2 + 1); + + // Plus 3 + if (coveredIndividualSize != OREManager.getInstance() + .getPelletReasoner().getIndividuals( + OREManager.getInstance().getCurrentClass2Learn()) + .size() + && ((EvaluatedDescriptionClass) eval) + .getAdditionalInstances().size() != 0) { + g2D.drawLine(x1 - 1 + shiftNewConcept, y1 - 1, x2 + 1 + + shiftNewConcept, y1 - 1); + g2D.drawLine(x1 + shiftNewConcept, centerY - 1, x2 + + shiftNewConcept, centerY - 1); + g2D.drawLine(x1 + shiftNewConcept, centerY, x2 + + shiftNewConcept, centerY); + g2D.drawLine(x1 + shiftNewConcept, centerY + 1, x2 + + shiftNewConcept, centerY + 1); + g2D.drawLine(x1 - 1 + shiftNewConcept, y2 + 1, x2 + 1 + + shiftNewConcept, y2 + 1); + + g2D.drawLine(x1 - 1 + shiftNewConcept, y1 - 1, x1 - 1 + + shiftNewConcept, y2 + 1); + g2D.drawLine(centerX - 1 + shiftNewConcept, y1, centerX - 1 + + shiftNewConcept, y2); + g2D.drawLine(centerX + shiftNewConcept, y1, centerX + + shiftNewConcept, y2); + g2D.drawLine(centerX + 1 + shiftNewConcept, y1, centerX + 1 + + shiftNewConcept, y2); + g2D.drawLine(x2 + 1 + shiftNewConcept, y1 - 1, x2 + 1 + + shiftNewConcept, y2 + 1); + } + // Plus 4 + if (((EvaluatedDescriptionClass) eval).getAddition() != 1.0 + && ((EvaluatedDescriptionClass) eval).getCoverage() == 1.0) { + g2D.drawLine(x1 - 1 + shiftNewConceptX, y1 - 1 + + shiftNewConcept, x2 + 1 + shiftNewConceptX, y1 - 1 + + shiftNewConcept); + g2D.drawLine(x1 + shiftNewConceptX, centerY - 1 + + shiftNewConcept, x2 + shiftNewConceptX, centerY - 1 + + shiftNewConcept); + g2D.drawLine(x1 + shiftNewConceptX, centerY + shiftNewConcept, + x2 + shiftNewConceptX, centerY + shiftNewConcept); + g2D.drawLine(x1 + shiftNewConceptX, centerY + 1 + + shiftNewConcept, x2 + shiftNewConceptX, centerY + 1 + + shiftNewConcept); + g2D.drawLine(x1 - 1 + shiftNewConceptX, y2 + 1 + + shiftNewConcept, x2 + 1 + shiftNewConceptX, y2 + 1 + + shiftNewConcept); + + g2D.drawLine(x1 - 1 + shiftNewConceptX, y1 - 1 + + shiftNewConcept, x1 - 1 + shiftNewConceptX, y2 + 1 + + shiftNewConcept); + g2D.drawLine(centerX - 1 + shiftNewConceptX, y1 + + shiftNewConcept, centerX - 1 + shiftNewConceptX, y2 + + shiftNewConcept); + g2D.drawLine(centerX + shiftNewConceptX, y1 + shiftNewConcept, + centerX + shiftNewConceptX, y2 + shiftNewConcept); + g2D.drawLine(centerX + 1 + shiftNewConceptX, y1 + + shiftNewConcept, centerX + 1 + shiftNewConceptX, y2 + + shiftNewConcept); + g2D.drawLine(x2 + 1 + shiftNewConceptX, y1 - 1 + + shiftNewConcept, x2 + 1 + shiftNewConceptX, y2 + 1 + + shiftNewConcept); + } + } +// +// for (int i = 0; i < posCovIndVector.size(); i++) { +// g2D.setColor(darkGreen); +// g2D.fill(posCovIndVector.get(i).getIndividualPoint()); +// } +// +// for (int i = 0; i < posNotCovIndVector.size(); i++) { +// g2D.setColor(darkRed); +// g2D.fill(posNotCovIndVector.get(i).getIndividualPoint()); +// } +// +// for (int i = 0; i < additionalIndividuals.size(); i++) { +// g2D.setColor(Color.BLACK); +// g2D.fill(additionalIndividuals.get(i).getIndividualPoint()); +// } +// if (!((EvaluatedDescriptionClass) eval).isConsistent()) { +// g2D.setComposite(original); +// g2D.setColor(darkRed); +// g2D +// .drawString( +// "Adding this class expression may lead to an inconsistent ontology.", +// 0, 220); +// } +// if (eval.getAccuracy() == 1.0) { +// g2D.setComposite(original); +// g2D.setColor(Color.ORANGE); +// g2D.fillOval(0, 211, 9, 9); +// g2D.setColor(darkRed); +// g2D.drawString("and", 25, 220); +// g2D.setColor(Color.YELLOW); +// g2D.fillOval(65, 211, 9, 9); +// g2D.setColor(darkRed); +// g2D.drawString("cover the same instances.", 95, 220); +// } + +// } + getParent().repaint(); + } + + private void computeGraphics() { + if (eval != null) { + this.setVisible(true); + getParent().repaint(); + additionalIndividualSize = ((EvaluatedDescriptionClass) eval) + .getAdditionalInstances().size(); + distortionOld = 0; + adjustment = 0; + Ellipse2D old = new Ellipse2D.Double(ELLIPSE_X_AXIS, ELLIPSE_Y_AXIS, + WIDTH, HEIGHT); + x1 = (int) old.getCenterX() - PLUS_SIZE; + x2 = (int) old.getCenterX() + PLUS_SIZE; + y1 = (int) old.getCenterY() - PLUS_SIZE; + y2 = (int) old.getCenterY() + PLUS_SIZE; + centerX = (int) old.getCenterX(); + centerY = (int) old.getCenterY(); + double coverage = ((EvaluatedDescriptionClass) eval).getCoverage(); + shiftXAxis = (int) Math.round((WIDTH) * (1 - coverage)); + + if (additionalIndividualSize != 0 && ((EvaluatedDescriptionClass) eval).getCoverage() == 1.0 && ((EvaluatedDescriptionClass) eval).getAddition() < 1.0) { + distortionOld = (int) Math.round((WIDTH) * 0.3); + Ellipse2D newer = new Ellipse2D.Double(ELLIPSE_X_AXIS + shiftXAxis, + ELLIPSE_Y_AXIS, (WIDTH), HEIGHT); + adjustment = (int) Math.round(newer.getCenterY() / 4); + } + this.renderPlus(); + } + } + + private void renderPlus() { + if (eval != null) { + coveredIndividualSize = ((EvaluatedDescriptionClass) eval) + .getCoveredInstances().size(); + double newConcepts = ((EvaluatedDescriptionClass) eval) + .getAddition(); + double oldConcepts = ((EvaluatedDescriptionClass) eval) + .getCoverage(); + shiftNewConcept = 0; + shiftOldConcept = 0; + shiftNewConceptX = 0; + shiftCovered = 0; + if (coveredIndividualSize == 0) { + shiftNewConcept = (int) Math.round(((WIDTH) / 2.0) * newConcepts); + } else if (additionalIndividualSize != coveredIndividualSize) { + shiftNewConcept = (int) Math.round(((WIDTH) / 2.0) + * (1.0 + (1.0 - oldConcepts))); + shiftOldConcept = (int) Math.round(((WIDTH) / 2.0) * oldConcepts); + shiftCovered = (int) Math.round(((WIDTH) / 2.0) + * (1 - oldConcepts)); + } + if (((EvaluatedDescriptionClass) eval).getAddition() != 1.0 && ((EvaluatedDescriptionClass) eval) + .getCoverage() == 1.0) { + shiftCovered = (int) Math.round(((WIDTH) / 2.0) * 0.625); + shiftNewConceptX = shiftCovered; + shiftNewConcept = 2 * shiftNewConceptX; + } + } + + int i = conceptNew.length(); + while (i > 0) { + int sub = 0; + String subString = ""; + if(conceptNew.contains(" ")) { + sub = conceptNew.indexOf(" "); + subString = conceptNew.substring(0, sub) + " "; + conceptNew = conceptNew.replace(conceptNew.substring(0, sub + 1), + ""); + } else { + subString = conceptNew; + conceptNew = ""; + } + while (sub < SUBSTRING_SIZE) { + if (conceptNew.length() > 0 && conceptNew.contains(" ")) { + sub = conceptNew.indexOf(" "); + if (subString.length() + sub < SUBSTRING_SIZE) { + subString = subString + conceptNew.substring(0, sub) + + " "; + conceptNew = conceptNew.replace(conceptNew.substring(0, + sub + 1), ""); + sub = subString.length(); + } else { + break; + } + } else { + if (subString.length() + conceptNew.length() > SUBSTRING_SIZE + + SPACE_SIZE) { + conceptVector.add(subString); + subString = conceptNew; + conceptNew = ""; + break; + } else { + subString = subString + conceptNew; + conceptNew = ""; + break; + } + } + } + conceptVector.add(subString); + i = conceptNew.length(); + } + } + + public void setNewClassDescription(EvaluatedDescription desc) { + this.eval = desc; + + + boolean hasAdditional = !((EvaluatedDescriptionClass) eval).getAdditionalInstances().isEmpty(); + boolean allPosCovered = ((EvaluatedDescriptionClass) eval).getCoverage() == 1.0; + + if (allPosCovered && hasAdditional) { + newConcept = new Ellipse2D.Double(ELLIPSE_X_AXIS -25 + , ELLIPSE_Y_AXIS -25, WIDTH + 50, + HEIGHT + 50); + + + } else if(!allPosCovered && hasAdditional){ + newConcept = new Ellipse2D.Double(ELLIPSE_X_AXIS + 20 + , ELLIPSE_Y_AXIS, WIDTH, + HEIGHT); + } else if(allPosCovered && !hasAdditional){ + newConcept = new Ellipse2D.Double(ELLIPSE_X_AXIS + , ELLIPSE_Y_AXIS, WIDTH, + HEIGHT); + } else if(!allPosCovered && !hasAdditional){ + newConcept = new Ellipse2D.Double(ELLIPSE_X_AXIS + 20 + , ELLIPSE_Y_AXIS, WIDTH - 20, + HEIGHT); + } +// computeGraphics(); + computeIndividualPoints(); + + getParent().repaint(); + + } + + + + public void computeIndividualPoints() { + posCovIndVector.clear(); + posNotCovIndVector.clear(); + additionalIndividuals.clear(); + points.clear(); + + if (eval != null) { + Set<Individual> posInd = ((EvaluatedDescriptionClass) eval) + .getCoveredInstances(); + int i = 0; + double x = random.nextInt(MAX_RANDOM_NUMBER); + double y = random.nextInt(MAX_RANDOM_NUMBER); + boolean flag = true; + for (Individual ind : posInd) { + flag = true; + if (i < MAX_NUMBER_OF_INDIVIDUAL_POINTS) { + while (flag) { + if (newConcept.contains(x, y) + && oldConcept.contains(x, y) + && !(x >= this.getX1() + this.getShiftCovered() + && x <= this.getX2() + + this.getShiftCovered() + && y >= this.getY1() && y <= this + .getY2())) { + + posCovIndVector.add(new IndividualPoint("*", + (int) x, (int) y, ind.toString())); + + i++; + flag = false; + + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); + break; + } else { + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); + } + + } + } + } + + Set<Individual> posNotCovInd = ((EvaluatedDescriptionClass) eval) + .getAdditionalInstances(); + int j = 0; + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); + for (Individual ind : posNotCovInd) { + flag = true; + if (j < MAX_NUMBER_OF_INDIVIDUAL_POINTS) { + while (flag) { + if (!oldConcept.contains(x, y) + && newConcept.contains(x, y) + && !(x >= this.getX1() + + this.getShiftNewConcept() + && x <= this.getX2() + + this.getShiftNewConcept() + && y >= this.getY1() && y <= this + .getY2()) + && !(x >= this.getX1() + + this.getShiftNewConceptX() + && x <= this.getX2() + + this.getShiftNewConceptX() + && y >= this.getY1() + + this.getShiftNewConcept() && y <= this + .getY2() + + this.getShiftNewConcept())) { + + + posNotCovIndVector.add(new IndividualPoint("*", + (int) x, (int) y, ind.toString())); + + + j++; + flag = false; + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); + break; + } else { + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); + } + + } + } + } + + Set<Individual> notCovInd = OREManager.getInstance().getPositiveFailureExamples(); + + notCoveredInd = notCovInd.size(); + int k = 0; + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); + for (Individual ind : notCovInd) { + flag = true; + if (k < MAX_NUMBER_OF_INDIVIDUAL_POINTS) { + while (flag) { + if (oldConcept.contains(x, y) + && !newConcept.contains(x, y) + && !(x >= this.getX1() + - this.getShiftOldConcept() + && x <= this.getX2() + - this.getShiftOldConcept() + && y >= this.getY1() && y <= this + .getY2())) { + + posNotCovIndVector.add(new IndividualPoint("*", + (int) x, (int) y, ind.toString())); + + k++; + flag = false; + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); + break; + } else { + x = random.nextInt(MAX_RANDOM_NUMBER); + y = random.nextInt(MAX_RANDOM_NUMBER); + } + + } + } + } + points.addAll(posCovIndVector); + points.addAll(posNotCovIndVector); + points.addAll(additionalIndividuals); + } + } + + /** + * This method returns a Vector of all individuals that are drawn in the + * panel. + * + * @return Vector of Individuals + */ + public Vector<IndividualPoint> getIndividualVector() { + return points; + } + + /** + * This method returns the GraphicalCoveragePanel. + * + * @return GraphicalCoveragePanel + */ + public GraphicalCoveragePanel getGraphicalCoveragePanel() { + return this; + } + + + + /** + * Returns the min. x value of the plus. + * + * @return int min X Value + */ + public int getX1() { + return x1; + } + + /** + * Returns the max. x value of the plus. + * + * @return int max X Value + */ + public int getX2() { + return x2; + } + + /** + * Returns the min. y value of the plus. + * + * @return int min Y Value + */ + public int getY1() { + return y1; + } + + /** + * Returns the max. y value of the plus. + * + * @return int max Y Value + */ + public int getY2() { + return y2; + } + + /** + * This method returns how much the old concept must be shifted. + * @return shift of the old concept + */ + public int getShiftOldConcept() { + return shiftOldConcept; + } + + /** + * This method returns how much the plus in the middle must be shifted. + * @return shift of the middle plus + */ + public int getShiftCovered() { + return shiftCovered; + } + + /** + * This method returns how much the new concept must be shifted. + * @return shift of the new concept + */ + public int getShiftNewConcept() { + return shiftNewConcept; + } + + /** + * This method returns how much the new concept must be shifted. + * @return shift of the new concept + */ + public int getShiftNewConceptX() { + return shiftNewConceptX; + } + + /** + * Unsets the panel after plugin is closed. + */ + public void unsetPanel() { + this.removeAll(); + eval = null; + } + + /** + * Returns the currently selected evaluated description. + * + * @return EvaluatedDescription + */ + public EvaluatedDescription getEvaluateddescription() { + return eval; + } + + @Override + public void mouseDragged(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseMoved(MouseEvent e) { + double x = e.getPoint().getX(); + double y = e.getPoint().getY(); + String toolTip = null; + for(IndividualPoint point : points){ + if(Math.abs(point.getIndividualPoint().getCenterX() - x) <= 8 + && Math.abs(point.getIndividualPoint().getCenterY() - y) <= 8 ){ + toolTip = point.getIndividualName(); + break; + + } + + } + setToolTipText(toolTip); + + + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/IndividualsTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/IndividualsTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/IndividualsTable.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -0,0 +1,56 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.awt.event.MouseEvent; +import java.util.Set; + +import javax.swing.ListSelectionModel; + +import org.dllearner.core.owl.Individual; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; + +public class IndividualsTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 6874941283913237464L; + + public IndividualsTable(){ + super(new IndividualsTableModel()); + setBackground(Color.WHITE); + setHighlighters(HighlighterFactory.createAlternateStriping()); + setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + setEditable(false); + setTableHeader(null); + setGridColor(Color.LIGHT_GRAY); + getColumn(0).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); + } + + @Override + public String getToolTipText(MouseEvent e){ + String tip = null; + java.awt.Point p = e.getPoint(); + int rowIndex = rowAtPoint(p); + if(rowIndex != -1){ + tip = getValueAt(rowIndex, 0).toString(); + + } else { + tip = super.getToolTipText(e); + } + return tip; + } + + public void addIndividuals(Set<Individual> individuals){ + ((IndividualsTableModel)getModel()).addIndividuals(individuals); + } + + public void removeIndividual(Individual ind){ + ((IndividualsTableModel)getModel()).removeIndividual(ind); + } + + public Individual getSelectedIndividual(){ + return ((IndividualsTableModel)getModel()).getSelectedIndividual(getSelectedRow()); + } +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/IndividualsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/IndividualsTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/IndividualsTableModel.java 2009-08-29 14:08:33 UTC (rev 1832) @@ -0... [truncated message content] |
From: <lor...@us...> - 2009-09-07 13:47:52
|
Revision: 1838 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1838&view=rev Author: lorenz_b Date: 2009-09-07 13:47:42 +0000 (Mon, 07 Sep 2009) Log Message: ----------- added some informations about the current loaded ontology Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.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/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.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/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -12,9 +12,8 @@ private static TaskManager instance; private SwingWorker<?, ?> currentTask; + - private Thread currentThread; - private StatusBar statusBar; private JDialog dialog; @@ -30,6 +29,10 @@ this.statusBar = statusBar; } + public StatusBar getStatusBar(){ + return statusBar; + } + public void setDialog(JDialog dialog){ this.dialog = dialog; } @@ -42,10 +45,6 @@ this.currentTask = task; } - public void setCurrentThread(Thread t){ - this.currentThread = t; - } - public void cancelCurrentTask(){ if(currentTask != null && !currentTask.isCancelled() && !currentTask.isDone()){ currentTask.cancel(true); @@ -54,8 +53,7 @@ // dialog.setCursor(null); } - public synchronized void cancelCurrentThread(){currentThread.stop(); - } + public void setTaskStarted(String message){ dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -10,6 +10,7 @@ import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; import org.dllearner.tools.ore.RepairManagerListener; +import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.explanation.laconic.LaconicExplanationGenerator; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; @@ -128,6 +129,7 @@ } axiom2Module.put(entailment, module); regularExpGen = new PelletExplanationGenerator(manager, Collections.singleton(module)); + regularExpGen.setProgressMonitor(TaskManager.getInstance().getStatusBar()); if(limit == -1){ explanations = regularExpGen.getExplanations(entailment); } else { Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -0,0 +1,389 @@ +package org.dllearner.tools.ore.explanation; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.semanticweb.owl.inference.OWLClassReasoner; +import org.semanticweb.owl.inference.OWLReasonerFactory; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLDeclarationAxiom; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLEntity; +import org.semanticweb.owl.model.OWLException; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLRuntimeException; +import org.semanticweb.owl.util.OWLEntityCollector; + +import com.clarkparsia.explanation.MultipleExplanationGenerator; +import com.clarkparsia.explanation.TransactionAwareSingleExpGen; +import com.clarkparsia.explanation.util.ExplanationProgressMonitor; +import com.clarkparsia.explanation.util.OntologyUtils; +import com.clarkparsia.explanation.util.SilentExplanationProgressMonitor; + +/* +* Copyright (C) 2007, Clark & Parsia +* +* Modifications to the initial code base are copyright of their +* respective authors, or their employers as appropriate. Authorship +* of the modifications may be determined from the ChangeLog placed at +* the end of this file. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. + +* This library 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 +* Lesser General Public License for more details. + +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +/** + * <p/> + * Description: An implementation of MultipleExplanationGenerator interface + * using Reiter's Hitting Set Tree (HST) algorithm as described in Aditya + * Kalyanpur's thesis. This class relies on a SingleExplanationGenerator that + * can compute a minimal set of axioms that cause the unsatisfiability. The + * core of the functionality is based on Matthew Horridge's implementation. + * </p> + * <p/> + * Copyright: Copyright (c) 2007 + * </p> + * <p/> + * Company: Clark & Parsia, LLC. <http://www.clarkparsia.com> + * </p> + * @author Evren Sirin + */ +public class HSTExplanationGenerator implements MultipleExplanationGenerator { + + public static final Logger log = Logger.getLogger(HSTExplanationGenerator.class + .getName()); + + private TransactionAwareSingleExpGen singleExplanationGenerator; + + private ExplanationProgressMonitor progressMonitor = new SilentExplanationProgressMonitor(); + + private static OWLEntityCollector collector; + + public HSTExplanationGenerator(TransactionAwareSingleExpGen singleExplanationGenerator) { + this.singleExplanationGenerator = singleExplanationGenerator; + + collector = new OWLEntityCollector(); + collector.setCollectDataTypes( false ); + } + + + public void setProgressMonitor(ExplanationProgressMonitor progressMonitor) { + this.progressMonitor = progressMonitor; + } + + + public OWLOntologyManager getOntologyManager() { + return singleExplanationGenerator.getOntologyManager(); + } + + /** + * @deprecated + */ + public OWLOntology getOntology() { + return singleExplanationGenerator.getOntology(); + } + + public Set<OWLOntology> getOntologies() { + return singleExplanationGenerator.getOntologies(); + } + + public void setOntology(OWLOntology ontology) { + singleExplanationGenerator.setOntology(ontology); + } + + public void setOntologies(Set<OWLOntology> ontologies) { + singleExplanationGenerator.setOntologies(ontologies); + } + + + public OWLClassReasoner getReasoner() { + return singleExplanationGenerator.getReasoner(); + } + + + public void setReasoner(OWLClassReasoner reasoner) { + singleExplanationGenerator.setReasoner(reasoner); + } + + + public OWLReasonerFactory getReasonerFactory() { + return singleExplanationGenerator.getReasonerFactory(); + } + + + public void setReasonerFactory(OWLReasonerFactory reasonerFactory) { + singleExplanationGenerator.setReasonerFactory(reasonerFactory); + } + + + public TransactionAwareSingleExpGen getSingleExplanationGenerator() { + return singleExplanationGenerator; + } + + + public Set<OWLAxiom> getExplanation(OWLDescription unsatClass) { + return singleExplanationGenerator.getExplanation(unsatClass); + } + + + public Set<Set<OWLAxiom>> getExplanations(OWLDescription unsatClass) { + return getExplanations(unsatClass, 0); + } + + + public Set<Set<OWLAxiom>> getExplanations(OWLDescription unsatClass, int maxExplanations) { + if (maxExplanations < 0) + throw new IllegalArgumentException(); + + if (log.isLoggable(Level.CONFIG)) + log.config("Get " + (maxExplanations == 0 ? "all" : maxExplanations) + " explanation(s) for: " + unsatClass); + + try { + Set<OWLAxiom> firstMups = getExplanation(unsatClass); + if (firstMups.isEmpty()) { + return Collections.emptySet(); + } + Set<Set<OWLAxiom>> allMups = new LinkedHashSet<Set<OWLAxiom>>(); + progressMonitor.foundExplanation(firstMups); + allMups.add(firstMups); + Set<Set<OWLAxiom>> satPaths = new HashSet<Set<OWLAxiom>>(); + Set<OWLAxiom> currentPathContents = new HashSet<OWLAxiom>(); + singleExplanationGenerator.beginTransaction(); + try { + constructHittingSetTree(unsatClass, firstMups, allMups, satPaths, currentPathContents, maxExplanations); + } finally { + singleExplanationGenerator.endTransaction(); + } + progressMonitor.foundAllExplanations(); + return allMups; + } + catch (OWLException e) { + throw new OWLRuntimeException(e); + } + } + + //////////////////////////////////////////////////////////////////////////////////////////// + // + // Hitting Set Stuff + // + /////////////////////////////////////////////////////////////////////////////////////////// + + + /** + * Orders the axioms in a single MUPS by the frequency of which they appear + * in all MUPS. + * @param mups The MUPS containing the axioms to be ordered + * @param allMups The set of all MUPS which is used to calculate the ordering + */ + private static List<OWLAxiom> getOrderedMUPS(List<OWLAxiom> mups, final Set<Set<OWLAxiom>> allMups) { + Comparator<OWLAxiom> mupsComparator = new Comparator<OWLAxiom>() { + public int compare(OWLAxiom o1, OWLAxiom o2) { + // The axiom that appears in most MUPS has the lowest index + // in the list + int occ1 = getOccurrences(o1, allMups); + int occ2 = getOccurrences(o2, allMups); + return -occ1 + occ2; + } + }; + Collections.sort(mups, mupsComparator); + return mups; + } + + + /** + * Given an axiom and a set of axioms this method determines how many sets + * contain the axiom. + * @param ax The axiom that will be counted. + * @param axiomSets The sets to count from + */ + private static int getOccurrences(OWLAxiom ax, Set<Set<OWLAxiom>> axiomSets) { + int count = 0; + for (Set<OWLAxiom> axioms : axiomSets) { + if (axioms.contains(ax)) { + count++; + } + } + return count; + } + + /** + * Returns the entities referenced in an axiom. + * @param axiom axiom whose signature is being computed + * @return the entities referenced in the axiom + */ + private Set<OWLEntity> getSignature(OWLAxiom axiom) { + collector.reset(); + + axiom.accept( collector ); + + return new HashSet<OWLEntity>( collector.getObjects() ); + } + + + /** + * This is a recursive method that builds a hitting set tree to obtain all + * justifications for an unsatisfiable class. + * @param mups The current justification for the current class. This + * corresponds to a node in the hitting set tree. + * @param allMups All of the MUPS that have been found - this set gets populated + * over the course of the tree building process. Initially this + * should just contain the first justification + * @param satPaths Paths that have been completed. + * @param currentPathContents The contents of the current path. Initially this should be an + * empty set. + */ + private void constructHittingSetTree(OWLDescription unsatClass, Set<OWLAxiom> mups, Set<Set<OWLAxiom>> allMups, + Set<Set<OWLAxiom>> satPaths, Set<OWLAxiom> currentPathContents, + int maxExplanations) throws OWLException { + + if (log.isLoggable(Level.FINE)) + log.fine("MUPS " + allMups.size() + ": " + mups); + + if (progressMonitor.isCancelled()) { + return; + } + + // We go through the current mups, axiom by axiom, and extend the tree + // with edges for each axiom + List<OWLAxiom> orderedMups = getOrderedMUPS(new ArrayList<OWLAxiom>(mups), allMups); + + while (!orderedMups.isEmpty()) { + if (progressMonitor.isCancelled()) { + return; + } + OWLAxiom axiom = orderedMups.get(0); + orderedMups.remove(0); + if (allMups.size() == maxExplanations) { + if (log.isLoggable(Level.FINE)) + log.fine("Computed " + maxExplanations + "explanations"); + return; + } + + if (log.isLoggable(Level.FINE)) + log.fine("Removing axiom: " + axiom + " " + currentPathContents.size() + " more removed: " + currentPathContents); + + // Remove the current axiom from all the ontologies it is included + // in + + Set<OWLOntology> ontologies = OntologyUtils.removeAxiom(axiom, getReasoner() + .getLoadedOntologies(), getOntologyManager()); + + // Removal may have dereferenced some entities, if so declarations are added + Set<OWLEntity> sig = getSignature( axiom ); + List<OWLDeclarationAxiom> temporaryDeclarations = new ArrayList<OWLDeclarationAxiom>( + sig.size() ); + for( OWLEntity e : sig ) { + boolean referenced = false; + for( Iterator<OWLOntology> i = ontologies.iterator(); !referenced && i.hasNext(); ) { + for( Iterator<OWLAxiom> j = i.next().getReferencingAxioms( e ).iterator(); !referenced + && j.hasNext(); ) { + OWLAxiom a = j.next(); + referenced = a.isLogicalAxiom() || (a instanceof OWLDeclarationAxiom); + } + } + if( !referenced ) { + OWLDeclarationAxiom declaration = getOntologyManager().getOWLDataFactory().getOWLDeclarationAxiom( e ); + temporaryDeclarations.add( declaration ); + } + } + for( OWLDeclarationAxiom decl : temporaryDeclarations ) { + OntologyUtils.addAxiom( decl, getReasoner().getLoadedOntologies(), + getOntologyManager() ); + } + + currentPathContents.add(axiom); + + boolean earlyTermination = false; + // Early path termination. If our path contents are the superset of + // the contents of a path then we can terminate here. + for (Set<OWLAxiom> satPath : satPaths) { + if (currentPathContents.containsAll(satPath)) { + earlyTermination = true; + if (log.isLoggable(Level.FINE)) + log.fine("Stop - satisfiable (early termination)"); + break; + } + } + + if (!earlyTermination) { + Set<OWLAxiom> newMUPS = null; + for (Set<OWLAxiom> foundMUPS : allMups) { + Set<OWLAxiom> foundMUPSCopy = new HashSet<OWLAxiom>(foundMUPS); + foundMUPSCopy.retainAll(currentPathContents); + if (foundMUPSCopy.isEmpty()) { + newMUPS = foundMUPS; + break; + } + } + if (newMUPS == null) { + newMUPS = getExplanation(unsatClass); + } + // Generate a new node - i.e. a new justification set + if (newMUPS.contains(axiom)) { + // How can this be the case??? + throw new OWLRuntimeException("Explanation contains removed axiom: " + axiom); + } + + if (!newMUPS.isEmpty()) { + // Note that getting a previous justification does not mean + // we + // can stop. stopping here causes some justifications to be + // missed + allMups.add(newMUPS); + progressMonitor.foundExplanation(newMUPS); + // Recompute priority here? + constructHittingSetTree(unsatClass, + newMUPS, + allMups, + satPaths, + currentPathContents, + maxExplanations); + // We have found a new MUPS, so recalculate the ordering + // axioms in the MUPS at the current level + orderedMups = getOrderedMUPS(orderedMups, allMups); + } + else { + if (log.isLoggable(Level.FINE)) + log.fine("Stop - satisfiable"); + + // End of current path - add it to the list of paths + satPaths.add(new HashSet<OWLAxiom>(currentPathContents)); + } + } + + // Back track - go one level up the tree and run for the next axiom + currentPathContents.remove(axiom); + + if (log.isLoggable(Level.FINE)) + log.fine("Restoring axiom: " + axiom); + + // Remove any temporary declarations + for( OWLDeclarationAxiom decl : temporaryDeclarations ) { + OntologyUtils.removeAxiom( decl, getReasoner().getLoadedOntologies(), + getOntologyManager() ); + } + + // Done with the axiom that was removed. Add it back in + OntologyUtils.addAxiom(axiom, ontologies, getOntologyManager()); + } + } +} 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-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -1,7 +1,6 @@ package org.dllearner.tools.ore.explanation; import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -25,7 +24,6 @@ import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.RemoveAxiom; -import com.clarkparsia.explanation.PelletExplanation; import com.clarkparsia.modularity.IncrementalClassifier; public class LostEntailmentsChecker { @@ -227,9 +225,7 @@ } for(OWLAxiom ax : possibleLosts){ - try {System.out.println(ax + " is entailed " + reasoner.isEntailed(ax)); - PelletExplanation exp = new PelletExplanation(manager, Collections.singleton(ontology), false); - System.out.println(exp.getEntailmentExplanation(ax)); + try { manager.applyChanges(changes); if(!reasoner.isEntailed(ax)){ realLosts.add(ax); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -20,6 +20,7 @@ import com.clarkparsia.explanation.HSTExplanationGenerator; import com.clarkparsia.explanation.SatisfiabilityConverter; import com.clarkparsia.explanation.TransactionAwareSingleExpGen; +import com.clarkparsia.explanation.util.ExplanationProgressMonitor; public class PelletExplanationGenerator implements ExplanationGenerator{ static { @@ -110,6 +111,10 @@ return explanations; } + public void setProgressMonitor(ExplanationProgressMonitor progressMonitor){ + expGen.setProgressMonitor(progressMonitor); + } + public static void main(String[] args) throws OWLOntologyCreationException{ OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLDataFactory factory = manager.getOWLDataFactory(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -25,6 +25,11 @@ import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; +/* + * This class computes laconic explanations for a given entailment. The algorithm is adapted from the paper + * 'Laconic and Precise Justifications in OWL' from Matthew Horridge, Bijan Parsia and Ulrike Sattler. + * + */ public class LaconicExplanationGenerator { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -57,7 +57,10 @@ import org.semanticweb.owl.model.SWRLRule; - +/* + * This class computes the oplus closure provided in 'Laconic and Precise Justifications in OWL' from + * Matthew Horridge, Bijan Parsia and Ulrike Sattler. A set of axioms is into smaller and weaker axioms. + */ public class OPlus implements OWLAxiomVisitorEx<Set<OWLAxiom>> { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -140,7 +140,7 @@ ExplanationManager expMan = ExplanationManager.getInstance(oreMan); OWLOntologyManager man = oreMan.getReasoner().getOWLOntologyManager(); List<OWLOntologyChange>repairPlan = repMan.getRepairPlan(); - + StringBuilder sb = new StringBuilder(); sb.append(ManchesterSyntaxRenderer.renderSimple(entailment)); if(((ImpactTableModel)getModel()).isLostEntailment(entailment)){ @@ -173,7 +173,7 @@ setLayout(new BorderLayout()); explanationsPanel = new Box(1); - + int counter = 1; for(Explanation exp : explanations){ ExplanationTablePanel panel = new ExplanationTablePanel(new SimpleExplanationTable(exp), counter); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -2,39 +2,30 @@ import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Dimension; +import java.awt.Font; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.ActionEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; import java.net.URI; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Set; import javax.swing.AbstractAction; import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JDialog; import javax.swing.JFrame; -import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.border.TitledBorder; -import org.protege.editor.core.ui.util.ComponentFactory; -import org.protege.editor.owl.ui.OWLAxiomTypeFramePanel; +import org.protege.editor.core.PropertyUtil; +import org.protege.editor.core.ProtegeProperties; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.metrics.AxiomCountMetric; import org.semanticweb.owl.metrics.AxiomTypeMetric; @@ -91,6 +82,7 @@ // TODO Auto-generated catch block e.printStackTrace(); } + initialiseOWLView(); createPopupMenu(); } @@ -136,11 +128,11 @@ metricManagerMap = new LinkedHashMap<String, OWLMetricManager>(); tableModelMap = new HashMap<OWLMetricManager, MetricsTableModel>(); createBasicMetrics(); - createClassAxiomMetrics(); - createObjectPropertyAxiomMetrics(); - createDataPropertyAxiomMetrics(); - createIndividualAxiomMetrics(); - createAnnotationAxiomMetrics(); +// createClassAxiomMetrics(); +// createObjectPropertyAxiomMetrics(); +// createDataPropertyAxiomMetrics(); +// createIndividualAxiomMetrics(); +// createAnnotationAxiomMetrics(); createUI(); updateView(manager.getOntologies().iterator().next()); for(OWLMetricManager man : metricManagerMap.values()) { @@ -153,8 +145,10 @@ private void createUI() { + setLayout(new BorderLayout()); - Box box = new Box(BoxLayout.Y_AXIS); + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); for (String metricsSet : metricManagerMap.keySet()) { MetricsTableModel tableModel = new MetricsTableModel(metricManagerMap.get(metricsSet)); tableModelMap.put(metricManagerMap.get(metricsSet), tableModel); @@ -162,83 +156,23 @@ table.setGridColor(Color.LIGHT_GRAY); table.setRowHeight(table.getRowHeight() + 4); table.setShowGrid(true); + table.getColumnModel().getColumn(1).setMaxWidth(150); table.getColumnModel().setColumnMargin(2); - table.addMouseListener(new MouseAdapter() { + table.setFont(getFont().deriveFont(Font.BOLD, 12.0f)); + table.setForeground(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty(ProtegeProperties.PROPERTY_COLOR_KEY), + Color.GRAY)); - public void mousePressed(MouseEvent e) { - if(e.isPopupTrigger()) { - handleTablePopupRequest(table, e); - } - } - - - public void mouseReleased(MouseEvent e) { - if(e.isPopupTrigger()) { - handleTablePopupRequest(table, e); - } - } - - private void handleTablePopupRequest(JTable table, MouseEvent e) { - int row = table.rowAtPoint(e.getPoint()); - int col = table.columnAtPoint(e.getPoint()); - if(row == -1 || col == -1) { - return; - } - MetricsTableModel model = (MetricsTableModel) table.getModel(); - for(OWLMetricManager man : tableModelMap.keySet()) { - if(tableModelMap.get(man).equals(model)) { - OWLMetric<?> metric = man.getMetrics().get(row); - if(metric instanceof AxiomCountMetric) { - lastMetric = (AxiomCountMetric) metric; - popupMenu.show(table, e.getX(), e.getY()); - } - break; - } - } - - } - }); - final JPanel tablePanel = new JPanel(new BorderLayout()); - tablePanel.addMouseListener(new MouseAdapter() { - - public void mousePressed(MouseEvent e) { - if(e.isPopupTrigger()) { - showMenu(e); - } - } - - - public void mouseReleased(MouseEvent e) { - if(e.isPopupTrigger()) { - showMenu(e); - } - } - - private void showMenu(MouseEvent e) { - JPopupMenu menu = new JPopupMenu(); - menu.add(new AbstractAction("Copy metrics to clipboard") { - - /** - * - */ - private static final long serialVersionUID = 6638146469347852653L; - - public void actionPerformed(ActionEvent e) { - exportCSV(); - } - }); - menu.show(tablePanel, e.getX(), e.getY()); - } - }); + tablePanel.add(table); - tablePanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(2, 2, 14, 2), - ComponentFactory.createTitledBorder(metricsSet))); + tablePanel.setFont(getFont().deriveFont(Font.BOLD, 12.0f)); +// tablePanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(2, 2, 14, 2), +// ComponentFactory.createTitledBorder(metricsSet))); table.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); - box.add(tablePanel); + panel.add(tablePanel); } - JScrollPane sp = new JScrollPane(box); + JScrollPane sp = new JScrollPane(panel); sp.setOpaque(false); add(sp); } @@ -353,6 +287,11 @@ for (OWLMetricManager man : metricManagerMap.values()) { man.setOntology(activeOntology); } + TitledBorder border = new TitledBorder(activeOntology.getURI().toString()); + border.setTitleFont(getFont().deriveFont(Font.BOLD, 12.0f)); + border.setTitleColor(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty(ProtegeProperties.PROPERTY_COLOR_KEY), + Color.GRAY)); + setBorder(border); repaint(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -37,9 +37,16 @@ @Override public Object getValueAt(int rowIndex, int columnIndex) { - OWLAxiom ax = getOWLAxiomAtRow(rowIndex); - int depth2Root = expMan.getOrdering(exp).get(rowIndex).values().iterator().next(); - return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root); + OWLAxiom ax; + if(exp.getAxioms().size() > 1){ + ax = getOWLAxiomAtRow(rowIndex); + int depth2Root = expMan.getOrdering(exp).get(rowIndex).values().iterator().next(); + return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root); + } else { + ax = exp.getAxioms().iterator().next(); + return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), 0); + } + } public OWLAxiom getOWLAxiomAtRow(int rowIndex){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -12,6 +12,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Ellipse2D; +import java.util.Set; import javax.swing.Icon; import javax.swing.JButton; @@ -23,8 +24,11 @@ import org.dllearner.tools.ore.TaskManager; import org.mindswap.pellet.utils.progress.ProgressMonitor; +import org.semanticweb.owl.model.OWLAxiom; -public class StatusBar extends JPanel implements ProgressMonitor{ +import com.clarkparsia.explanation.util.ExplanationProgressMonitor; + +public class StatusBar extends JPanel implements ProgressMonitor, ExplanationProgressMonitor{ /** * */ @@ -36,6 +40,7 @@ private int progressPercent = -1; private String progressMessage; private boolean isIndeterminateMode; + private boolean isCanceled = false; public StatusBar() { infoLabel = new JLabel(""); @@ -54,8 +59,8 @@ @Override public void actionPerformed(ActionEvent e) { - TaskManager.getInstance().cancelCurrentThread(); + isCanceled = true; } }); rB.setToolTipText("Abort"); @@ -75,6 +80,7 @@ } public void showProgress(boolean b) { + isCanceled = false; isIndeterminateMode = b; SwingUtilities.invokeLater(new Runnable() { @@ -139,7 +145,7 @@ @Override public boolean isCanceled() { - return false; + return isCanceled; } @Override @@ -205,6 +211,23 @@ }); } + + @Override + public void foundAllExplanations() { + // TODO Auto-generated method stub + + } + + @Override + public void foundExplanation(Set<OWLAxiom> explanation) { + System.out.println(explanation); + + } + + @Override + public boolean isCancelled() { + return isCanceled; + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -3,7 +3,6 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; -import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; @@ -37,33 +36,33 @@ getColumn(0).setCellRenderer(new UnsatClassesTableCellRenderer(expMan)); // setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - addMouseListener(new MouseAdapter() { - public void mousePressed(MouseEvent e) { - int row = rowAtPoint(e.getPoint()); - if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { - OWLClass cl = (OWLClass) getValueAt(row, 1); - if (ExplanationManager - .getInstance(OREManager.getInstance()) - .getDerivedClasses().contains(cl)) { - showPopupMenu(e); - } - } - - } - - public void mouseReleased(MouseEvent e) { - int row = rowAtPoint(e.getPoint()); - if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { - OWLClass cl = (OWLClass) getValueAt(row, 1); - if (ExplanationManager - .getInstance(OREManager.getInstance()) - .getDerivedClasses().contains(cl)) { - showPopupMenu(e); - } - } - } - - }); +// addMouseListener(new MouseAdapter() { +// public void mousePressed(MouseEvent e) { +// int row = rowAtPoint(e.getPoint()); +// if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { +// OWLClass cl = (OWLClass) getValueAt(row, 1); +// if (ExplanationManager +// .getInstance(OREManager.getInstance()) +// .getDerivedClasses().contains(cl)) { +// showPopupMenu(e); +// } +// } +// +// } +// +// public void mouseReleased(MouseEvent e) { +// int row = rowAtPoint(e.getPoint()); +// if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { +// OWLClass cl = (OWLClass) getValueAt(row, 1); +// if (ExplanationManager +// .getInstance(OREManager.getInstance()) +// .getDerivedClasses().contains(cl)) { +// showPopupMenu(e); +// } +// } +// } +// +// }); } private void showPopupMenu(MouseEvent e){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -23,6 +23,7 @@ import java.awt.BorderLayout; import java.awt.CardLayout; +import java.awt.Color; import java.awt.Component; import java.awt.Dialog; import java.awt.Font; @@ -435,7 +436,9 @@ //setLayout(new GridBagLayout()); infoScrollPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); infoScrollPane.setViewportBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - informationsField.setBackground(UIManager.getDefaults().getColor("control")); + Color color = UIManager.getColor("Panel.background"); + informationsField.setBackground(new Color(color.getRed(), color.getGreen(), color.getBlue())); + informationsField.setOpaque(true); informationsField.setColumns(80); informationsField.setEditable(false); informationsField.setLineWrap(true); @@ -448,7 +451,7 @@ JPanel buttonInformationPanel = new JPanel(); buttonInformationPanel.setLayout(new BorderLayout()); buttonInformationPanel.add(buttonPanel, BorderLayout.SOUTH); -// buttonInformationPanel.add(informationPanel, BorderLayout.NORTH); + buttonInformationPanel.add(informationPanel, BorderLayout.NORTH); wizardDialog.getContentPane().add(buttonInformationPanel, java.awt.BorderLayout.SOUTH); wizardDialog.getContentPane().add(cardPanel, java.awt.BorderLayout.CENTER); 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-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -49,8 +49,9 @@ /** * Information string for class choose panel. */ - public static final String INFORMATION = "In this panel all atomic classes in the ontology are shown in the list above. " - + "Select one of them which should be (re)learned from, then press \"Next-Button\""; + public static final String INFORMATION = "As you can see, all atomic classes of the ontology are shown in the list above. " + + "Select one of them for which you want to learn equivalent class expressions," + + " then press <Next>"; private ClassChoosePanel owlClassPanel; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -48,8 +48,8 @@ public class KnowledgeSourcePanelDescriptor extends WizardPanelDescriptor implements ActionListener{ public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; - public static final String INFORMATION = "Select the type of knowledgesource you want to work with and then enter the URI." - + " After all press \"Next\"-button"; + public static final String INFORMATION = "Choose an OWL-ontology from file system or URI. Your are also able to extract a fragment " + + "from a SPARQL-endpoint. After all press <Next>"; private KnowledgeSourcePanel knowledgePanel; @@ -99,9 +99,11 @@ public void loadOntology(URI uri){ OREManager.getInstance().setCurrentKnowledgeSource(uri); + RecentManager.getInstance().addURI(uri); RecentManager.getInstance().serialize(); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); + } private void handleOpenFromURI() { @@ -166,7 +168,7 @@ uri); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); } - @SuppressWarnings(value = { "unused" }) + private void updateMetrics(){ knowledgePanel.updateMetrics(); } @@ -217,7 +219,7 @@ statusBar.setProgressTitle("Done"); getWizard().getDialog().setCursor(null); getWizard().setNextFinishButtonEnabled(true); -// updateMetrics(); + updateMetrics(); } } } Modified: 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-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -51,8 +51,8 @@ public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener{ public static final String IDENTIFIER = "LEARNING_PANEL"; - public static final String INFORMATION = "In this panel you can start the learning algorithm. While it is running, " - + "temporary results are shown in the list above. Select one of them and press Next"; + 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; @@ -103,7 +103,11 @@ // Description de = new NamedClass("http://example.com/father#male"); if (!e.getValueIsAdjusting() && (learningTask.isDone() || learningTask.isCancelled())){ - OREManager.getInstance().setNewClassDescription(learnPanel.getResultTable().getSelectedValue()); + 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()); } @@ -196,7 +200,7 @@ learnPanel.getResultTable().clear(); getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); getWizard().getStatusBar().showProgress(true); - getWizard().getStatusBar().setProgressTitle("learning class expressions"); + getWizard().getStatusBar().setProgressTitle("Learning equivalent class expressions"); la = OREManager.getInstance().getLa(); timer = new Timer(); @@ -231,7 +235,7 @@ } getWizard().getDialog().setCursor(null); getWizard().getStatusBar().showProgress(false); - getWizard().getStatusBar().setProgressTitle("class expressions successfully learned"); + getWizard().getStatusBar().setProgressTitle("Done"); learnPanel.getStartButton().setEnabled(true); learnPanel.getStopButton().setEnabled(false); updateList(result); 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-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -53,6 +53,7 @@ contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); add(contentPanel, BorderLayout.CENTER); + } private JPanel getContentPanel() { @@ -62,7 +63,7 @@ JScrollPane scroll = new JScrollPane(classesTable); contentPanel.add(scroll); scroll.setPreferredSize(new Dimension(400, 400)); - + return contentPanel; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -33,6 +33,7 @@ import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; +import javax.swing.JLabel; import javax.swing.JPanel; import org.dllearner.tools.ore.OREManager; @@ -61,6 +62,8 @@ private GridBagConstraints c; private MetricsPanel metricsPanel; + + private JLabel ontologyName; @@ -74,11 +77,12 @@ c.gridx = 0; c.gridy = 0; - c.gridwidth = 2; + c.gridwidth = 1; c.gridheight = 1; c.fill = GridBagConstraints.HORIZONTAL; add(contentPanel, c); // addMetricsPanel(); + } @@ -137,21 +141,27 @@ box.add(recentLinkBox); } + metricsPanel = new MetricsPanel(); + box.add(Box.createVerticalStrut(4 * strutHeight)); + box.add(metricsPanel); panel.add(box); + return panel; } public void addMetricsPanel() { - c.gridx = 2; - c.gridy = 0; + c.gridx = 0; + c.gridy = 1; c.gridwidth = 1; - c.gridheight = 2; - c.weightx = 0.1; - c.weighty = 0.8; + c.gridheight = 1; + c.weightx = 0.0; + c.weighty = 0.0; + c.fill = GridBagConstraints.NONE; + metricsPanel = new MetricsPanel(); - c.fill = GridBagConstraints.VERTICAL; + add(metricsPanel, c); } Modified: 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-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -114,6 +114,7 @@ stopButton = new JButton(); buttonPanel.add(stopButton); stopButton.setText("Stop"); + stopButton.setEnabled(false); // add(buttonPanel, c); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-08 09:30:46
|
Revision: 1839 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1839&view=rev Author: lorenz_b Date: 2009-09-08 09:30:35 +0000 (Tue, 08 Sep 2009) Log Message: ----------- some small changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -90,6 +91,13 @@ } } + public Set<OWLClass> getUnsatisfiableClasses(){ + Set<OWLClass> unsat = new HashSet<OWLClass>(); + unsat.addAll(rootFinder.getRootClasses()); + unsat.addAll(rootFinder.getDerivedClasses()); + return unsat; + } + public Set<Explanation> getUnsatisfiableExplanations(OWLClass unsat) { OWLSubClassAxiom entailment = dataFactory.getOWLSubClassAxiom(unsat, Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -326,6 +326,9 @@ parts.remove(part);System.out.println("removed part: " + part); for(OWLAxiom pa : parts){ System.out.println("Part : " + pa + "has source : " + oPlus.getAxiomsMap().get(pa)); + if(oPlus.getAxiomsMap().get(pa).size() == 1){ + System.out.println("important: " + pa); + } } return rebuildAxioms(parts); @@ -333,7 +336,7 @@ private Set<OWLAxiom> rebuildAxioms(Set<OWLAxiom> axioms){ Map<OWLAxiom, Set<OWLAxiom>> sourceAxioms2OPlus = new HashMap<OWLAxiom, Set<OWLAxiom>>(); - + for (OWLAxiom ax : axioms) { if (ontology.containsAxiom(ax)) { sourceAxioms2OPlus.put(ax, computeOPlus(Collections @@ -343,26 +346,28 @@ Map<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>> lhs2SubClassAxiom = new HashMap<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>>(); Set<OWLAxiom> reconstituedAxioms = new HashSet<OWLAxiom>(); - for (OWLAxiom laconicAx : axioms) {System.out.println("Laconic Axiom: "+ laconicAx); + for (OWLAxiom laconicAx : axioms) { + + if (laconicAx instanceof OWLSubClassAxiom) { OWLSubClassAxiom subAx = (OWLSubClassAxiom) laconicAx; - if (subAx.getSubClass().isAnonymous()) {System.out.println(" has anomymous subclass ");System.out.println("has source axioms: " +oPlus.getAxiomsMap().get(subAx)); - reconstituedAxioms.add(subAx);System.out.println("adding to rebuildet axioms"); - } else {System.out.println("has no anonymous subclass"); + if (subAx.getSubClass().isAnonymous()) { + reconstituedAxioms.add(subAx); + } else { Map<OWLAxiom, Set<OWLSubClassAxiom>> source2AxiomMap = lhs2SubClassAxiom.get(subAx.getSubClass().asOWLClass()); if (source2AxiomMap == null) { source2AxiomMap = new HashMap<OWLAxiom, Set<OWLSubClassAxiom>>(); lhs2SubClassAxiom.put(subAx.getSubClass().asOWLClass(), source2AxiomMap); } - for (OWLAxiom sourceAxiom : sourceAxioms2OPlus.keySet()) {System.out.println("source axiom: " + sourceAxiom); + for (OWLAxiom sourceAxiom : sourceAxioms2OPlus.keySet()) { if ((sourceAxioms2OPlus.get(sourceAxiom)).contains(subAx)) { Set<OWLSubClassAxiom> subClassAxioms = source2AxiomMap.get(sourceAxiom); if (subClassAxioms == null) { subClassAxioms = new HashSet<OWLSubClassAxiom>(); source2AxiomMap.put(sourceAxiom, subClassAxioms); } - subClassAxioms.add(subAx);System.out.println("-->subclass axioms: " + subClassAxioms); + subClassAxioms.add(subAx); } } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -105,23 +105,23 @@ { for(OWLAxiom axiom : axioms){ - Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); - if(existing == null) +// Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); +// if(existing == null) +// { +// existing = new HashSet<OWLAxiom>(); +// axiomsMap.put(axiom, existing); +// } +// existing.add(source); + if(!axiom.equals(source)) { - existing = new HashSet<OWLAxiom>(); - axiomsMap.put(axiom, existing); + Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); + if(existing == null) + { + existing = new HashSet<OWLAxiom>(); + axiomsMap.put(axiom, existing); + } + existing.add(source); } - existing.add(source); -// if(!axiom.equals(source)) -// { -// Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); -// if(existing == null) -// { -// existing = new HashSet<OWLAxiom>(); -// axiomsMap.put(axiom, existing); -// } -// existing.add(source); -// } } return axioms; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -17,6 +17,7 @@ import javax.swing.UIManager; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import javax.swing.table.JTableHeader; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; @@ -40,6 +41,16 @@ private RepairManager repMan; + protected String[] columnToolTips = { + null, // "First Name" assumed obvious + // "Last Name" assumed obvious + "The number of already computed explanations where the axiom occurs.", + "TODO", + "If checked, the axiom is selected to remove from the ontology.", + "Edit the axiom." + }; + + public ExplanationTable(Explanation exp, OWLClass cl) { repMan = RepairManager.getInstance(OREManager.getInstance()); @@ -54,10 +65,11 @@ column5.setCellEditor(new ButtonCellEditor()); column5.setResizable(false); setRowHeight(getRowHeight() + 4); - getColumn(1).setMaxWidth(30); - getColumn(2).setMaxWidth(30); + getColumn(1).setMaxWidth(60); + getColumn(2).setMaxWidth(60); getColumn(3).setMaxWidth(30); getColumn(4).setMaxWidth(30); + getSelectionModel().addListSelectionListener( new ListSelectionListener() { @@ -113,6 +125,26 @@ }); } + @Override + protected JTableHeader createDefaultTableHeader() { + return new JTableHeader(columnModel) { + /** + * + */ + private static final long serialVersionUID = -3386641672808329591L; + + public String getToolTipText(MouseEvent e) { + String tip = null; + java.awt.Point p = e.getPoint(); + int index = columnModel.getColumnIndexAtX(p.x); + int realIndex = + columnModel.getColumn(index).getModelIndex(); + return columnToolTips[realIndex]; + } + }; + + } + private void changeSelection() { } @@ -182,23 +214,19 @@ } } - @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { - repaint(); - + repaint(); } @Override public void repairPlanChanged() { repaint(); - } @Override public void dispose() throws Exception { repMan.removeListener(this); - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -135,6 +135,19 @@ return expMan.getOrdering(exp).get(rowIndex).keySet().iterator().next(); } + @Override + public String getColumnName(int column) { + if(column == 0){ + return "Axiom"; + } else if(column == 1){ + return "Arity"; + } else if(column == 2){ + return "Usage"; + } else { + return ""; + } + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTablePanel.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTablePanel.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -22,11 +22,11 @@ public ExplanationTablePanel(JXTable explanationTable, int explanationNumber){ this.explanationTable = explanationTable; this.explanationNumber = explanationNumber; - createGUI(); + createUI(); } - private void createGUI(){ + private void createUI(){ setLayout(new BorderLayout(2, 2)); JLabel label = new JLabel(new StringBuilder().append("Explanation ").append(explanationNumber).toString()); add(label, BorderLayout.NORTH); @@ -34,6 +34,7 @@ Border emptyBorder = BorderFactory.createEmptyBorder(0, 20, 0, 0); Border lineBorder = BorderFactory.createLineBorder(Color.LIGHT_GRAY); tablePanel.setBorder(BorderFactory.createCompoundBorder(emptyBorder, lineBorder)); + tablePanel.add(explanationTable.getTableHeader(), BorderLayout.NORTH); tablePanel.add(explanationTable); add(tablePanel); 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-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -5,9 +5,12 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.OREManager; import org.dllearner.utilities.owl.OWLAPIConverter; import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLIndividual; import org.semanticweb.owl.model.OWLObject; @@ -84,7 +87,18 @@ String token; while(st.hasMoreTokens()){ token = st.nextToken(); + boolean unsatClass = false; + for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ + if(cl.toString().equals(token)){ + unsatClass = true; + break; + } + } String color = "black"; + if(unsatClass){ + color = "red"; + } + boolean isReserved = false; for(Keyword key : Keyword.values()){ if(token.equals(key.getLabel())){ @@ -92,7 +106,7 @@ isReserved = true;break; } } - if(isReserved){ + if(isReserved || unsatClass){ bf.append("<b><font color=" + color + ">" + token + " </font></b>"); } else { bf.append(" " + token + " "); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -5,10 +5,11 @@ import javax.swing.table.DefaultTableCellRenderer; +import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.ImpactManager; import org.dllearner.tools.ore.OREManager; -import org.dllearner.tools.ore.RepairManager; import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; import com.clarkparsia.explanation.io.manchester.Keyword; import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxObjectRenderer; @@ -85,7 +86,20 @@ String token; while(st.hasMoreTokens()){ token = st.nextToken(); + + boolean unsatClass = false; + for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ + if(cl.toString().equals(token)){ + unsatClass = true; + break; + } + } String color = "black"; + if(unsatClass){ + color = "red"; + } + + boolean isReserved = false; for(Keyword key : Keyword.values()){ if(token.equals(key.getLabel())){ @@ -93,7 +107,7 @@ isReserved = true;break; } } - if(isReserved){ + if(isReserved || unsatClass){ bf.append("<b><font color=" + color + ">" + token + " </font></b>"); } else { bf.append(" " + token + " "); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -21,6 +21,7 @@ private static final long serialVersionUID = 537629900742120594L; private RepairManager repMan; private JButton undoButton; + private JButton applyButton; public RepairPlanPanel() { this.repMan = RepairManager.getInstance(OREManager.getInstance()); @@ -42,10 +43,11 @@ } }); + undoButton.setToolTipText("Undo former applied changes."); undoButton.setEnabled(false); buttonPanel.add(undoButton); - buttonPanel.add(new JButton(new AbstractAction("Apply") { + applyButton = new JButton(new AbstractAction("Apply") { /** * @@ -56,7 +58,9 @@ computeRepairPlan(); } - })); + }); + applyButton.setToolTipText("Apply changes in repairplan."); + buttonPanel.add(applyButton); JScrollPane repScr = new JScrollPane(new RepairTable()); repScr.setBackground(null); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -2,14 +2,9 @@ import java.awt.Color; import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; -import javax.swing.AbstractAction; -import javax.swing.JPopupMenu; - import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.OREManager; import org.jdesktop.swingx.JXTable; @@ -32,8 +27,9 @@ setTableHeader(null); setGridColor(Color.LIGHT_GRAY); getColumn(0).setMaxWidth(20); - + setRowHeight(getRowHeight() + 4); getColumn(0).setCellRenderer(new UnsatClassesTableCellRenderer(expMan)); + // setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // addMouseListener(new MouseAdapter() { @@ -65,20 +61,20 @@ // }); } - private void showPopupMenu(MouseEvent e){ - JPopupMenu menu = new JPopupMenu(); - menu.add(new AbstractAction("Why is derived class?") { - final UnsatisfiableClassesTable table = UnsatisfiableClassesTable.this; - - public void actionPerformed(ActionEvent e) - { - - } - - - }); - menu.show(this, e.getX(), e.getY()); - } +// private void showPopupMenu(MouseEvent e){ +// JPopupMenu menu = new JPopupMenu(); +// menu.add(new AbstractAction("Why is derived class?") { +// final UnsatisfiableClassesTable table = UnsatisfiableClassesTable.this; +// +// public void actionPerformed(ActionEvent e) +// { +// +// } +// +// +// }); +// menu.show(this, e.getX(), e.getY()); +// } @Override public Dimension getPreferredScrollableViewportSize() { @@ -99,7 +95,7 @@ List<OWLClass> selectedClasses = new ArrayList<OWLClass>(getSelectedRows().length); int[] rows = getSelectedRows(); for(int i = 0; i < rows.length; i++){ - selectedClasses.add((OWLClass)((UnsatisfiableClassesTableModel)getModel()).getValueAt(rows[i], 0)); + selectedClasses.add(((UnsatisfiableClassesTableModel)getModel()).getClassAt(rows[i])); } return selectedClasses; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -40,7 +40,11 @@ @Override public Object getValueAt(int rowIndex, int columnIndex) { - return unsatClasses.get(rowIndex); + if(columnIndex == 0){ + return unsatClasses.get(rowIndex); + } else { + return "<html><b><font color=\"red\">" + unsatClasses.get(rowIndex).toString() + " </font></b></html>"; + } } public void addUnsatClasses(List<OWLClass> unsatClasses){ @@ -53,5 +57,9 @@ this.unsatClasses.clear(); fireTableDataChanged(); } + + public OWLClass getClassAt(int rowIndex){ + return unsatClasses.get(rowIndex); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -48,7 +48,7 @@ public class KnowledgeSourcePanelDescriptor extends WizardPanelDescriptor implements ActionListener{ public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; - public static final String INFORMATION = "Choose an OWL-ontology from file system or URI. Your are also able to extract a fragment " + + public static final String INFORMATION = "Choose an OWL-ontology from filesystem or URI. Your are also able to extract a fragment " + "from a SPARQL-endpoint. After all press <Next>"; private KnowledgeSourcePanel knowledgePanel; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-10 15:19:03
|
Revision: 1841 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1841&view=rev Author: lorenz_b Date: 2009-09-10 15:18:56 +0000 (Thu, 10 Sep 2009) Log Message: ----------- fixed bug when loading from recent Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,50 @@ +package org.dllearner.tools.ore; + +import java.net.URI; +import java.util.Collections; + +import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDataProperty; +import org.semanticweb.owl.model.OWLDataPropertyDomainAxiom; +import org.semanticweb.owl.model.OWLDataRange; +import org.semanticweb.owl.model.OWLDataSomeRestriction; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLSubClassAxiom; + +import com.clarkparsia.explanation.PelletExplanation; + +public class PelletBug { + public static void main(String[] args) throws OWLOntologyCreationException { + String file = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl"; + String NS = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl"; + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLOntology ontology = manager.loadOntology(URI.create(file)); + Reasoner reasoner = new PelletReasonerFactory().createReasoner(manager); + reasoner.loadOntology(ontology); + + + OWLDataProperty property = factory.getOWLDataProperty(URI.create(NS + "#isHardWorking")); + OWLClass domain = factory.getOWLClass(URI.create(NS + "#Animal")); + OWLDataPropertyDomainAxiom axiom = factory.getOWLDataPropertyDomainAxiom(property, domain); + + PelletExplanation expGen = new PelletExplanation(manager, Collections.singleton(ontology)); + System.out.println(reasoner.isEntailed(axiom)); + +// System.out.println(expGen.getEntailmentExplanations(axiom)); +// +// OWLDataRange range = factory.getTopDataType(); +// OWLDataSomeRestriction dataSome = factory.getOWLDataSomeRestriction(property, range); +// OWLSubClassAxiom subClass = factory.getOWLSubClassAxiom(dataSome, domain); +// +// System.out.println(reasoner.isEntailed(subClass)); +// System.out.println(expGen.getEntailmentExplanations(subClass)); + + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -39,8 +39,6 @@ } public List<URI> getURIs(){ - uriList.clear(); - deserialize(); return uriList; } @@ -62,7 +60,7 @@ } @SuppressWarnings("unchecked") - private void deserialize() { + public void deserialize() { try { FileInputStream fileStream = new FileInputStream(file); ObjectInputStream inputStream = new ObjectInputStream( @@ -77,7 +75,7 @@ inputStream.close(); } } catch (IOException e) { - e.printStackTrace(); + System.err.println("Can't read recent successfully opened URIs. Starting with empty list."); } catch (ClassNotFoundException e) { e.printStackTrace(); } Added: trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,24 @@ +package org.dllearner.tools.ore; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlEndpoint; + +public class Sparql { + + /** + * @param args + * @throws MalformedURLException + */ + public static void main(String[] args) throws MalformedURLException { + URL url = new URL("http://dbpedia.org/sparql"); + SPARQLTasks task = new SPARQLTasks(SparqlEndpoint.getEndpointDBpedia());//new SparqlEndpoint(url)); + + String queryString = "SELECT DISTINCT ?class WHERE {?class rdf:type owl:Class ." + + "?class rdfs:label ?label . FILTER(regex(?label, \"City\")) }"; + System.out.println(task.queryAsSet(queryString, "class")); + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -6,9 +6,12 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.tools.ore.explanation.ExplanationException; +import org.dllearner.tools.ore.explanation.HSTExplanationGenerator; import org.dllearner.tools.ore.explanation.PelletExplanationGenerator; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.semanticweb.owl.apibinding.OWLManager; @@ -25,6 +28,9 @@ import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; +import com.clarkparsia.explanation.util.ExplanationProgressMonitor; +import com.clarkparsia.explanation.util.SilentExplanationProgressMonitor; + /* * This class computes laconic explanations for a given entailment. The algorithm is adapted from the paper * 'Laconic and Precise Justifications in OWL' from Matthew Horridge, Bijan Parsia and Ulrike Sattler. @@ -40,6 +46,11 @@ private Set<Explanation> allPreviouslyFoundExplanations; private OPlus oPlus; + public static final Logger log = Logger.getLogger(LaconicExplanationGenerator.class + .getName()); + + private ExplanationProgressMonitor progressMonitor = new SilentExplanationProgressMonitor(); + public LaconicExplanationGenerator(OWLOntologyManager manager, OWLReasonerFactory reasonerFactory, Set<OWLOntology> ontologies) { @@ -82,6 +93,11 @@ return lastRegularExplanations; } + public void setProgressMonitor(ExplanationProgressMonitor mon){ + this.progressMonitor = mon; + pelletExplanation.setProgressMonitor(progressMonitor); + } + /** * Computes the precise explanations * @param entailment @@ -89,15 +105,15 @@ * @return * @throws OWLException */ - public Set<Explanation> computePreciseJusts(OWLAxiom entailment, int limit) + private Set<Explanation> computePreciseJusts(OWLAxiom entailment, int limit) throws OWLException { Set<Explanation> regularExplanations = pelletExplanation .getExplanations((OWLAxiom) entailment); - System.out.println(new StringBuilder().append( - "Got regular justifications: ").append(regularExplanations.size()) - .toString()); + if (log.isLoggable(Level.CONFIG)){ + log.config("Found " + regularExplanations.size() + " regular explanations"); + } lastRegularExplanations.clear(); lastRegularExplanations.addAll(regularExplanations); allPreviouslyFoundExplanations = new HashSet<Explanation>(); @@ -105,11 +121,13 @@ Set<Explanation> nonLaconicExplanations = new HashSet<Explanation>(); Set<Explanation> laconicExplanations = new HashSet<Explanation>(); Set<OWLAxiom> axiomsInPreviousOntology = new HashSet<OWLAxiom>(); - long counter = 0L; + for (;;) { - counter++; - System.out.println(new StringBuilder().append("Count ").append( - counter).toString()); + if (progressMonitor.isCancelled()) { + return laconicExplanations; + } + + Set<OWLAxiom> unionOfAllExplanations = new HashSet<OWLAxiom>(); for (Explanation expl : allPreviouslyFoundExplanations) { unionOfAllExplanations.addAll(expl.getAxioms()); @@ -129,8 +147,9 @@ if (extendedOntology.getLogicalAxioms().equals( axiomsInPreviousOntology)) { - System.out - .println("\t ***** No change in ontology. Early termination."); + if (log.isLoggable(Level.CONFIG)){ + log.config(""); + } break; } // man2.saveOntology(extendedOnt, @@ -283,7 +302,7 @@ throws ExplanationException { Set<Explanation> explanations; try { - explanations = computePreciseJusts(entailment, 2147483647); + explanations = computePreciseJusts(entailment, Integer.MAX_VALUE); } catch (OWLException e) { throw new ExplanationException(e); } @@ -292,6 +311,8 @@ public Set<Explanation> getExplanations(OWLAxiom entailment, int limit) throws ExplanationException { + if (log.isLoggable(Level.CONFIG)) + log.config("Get " + (limit == Integer.MAX_VALUE ? "all" : limit) + " explanation(s) for: " + entailment); Set<Explanation> explanations; try { explanations = computePreciseJusts(entailment, limit); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt =================================================================== (Binary files differ) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -289,7 +289,7 @@ for (OWLMetricManager man : metricManagerMap.values()) { man.setOntology(activeOntology); } - TitledBorder border = new TitledBorder(activeOntology.getURI().toString()); + TitledBorder border = new TitledBorder(activeOntology.getURI().toString() + " successfully loaded"); border.setTitleFont(getFont().deriveFont(Font.BOLD, 12.0f)); border.setTitleColor(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty(ProtegeProperties.PROPERTY_COLOR_KEY), Color.GRAY)); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,191 @@ +package org.dllearner.tools.ore.ui; + +//Imports for the GUI classes. +import java.awt.*; +import javax.swing.*; +import java.awt.event.*; + +/** + * RoundButton.java - + * A custom JComponent that is a round button. The round button + * will be empty until the mouse enters the circle. When the + * mouse enters the circle it will be filled in with a specified + * color. Then when the mouse is pressed the color will change + * to a second specified color. Note that RoundButton "is a" + * MouseListener so it can handle its own MouseEvents. + * + * @author Grant William Braught + * @author Dickinson College + * @version 11/29/2000 + */ +public class RoundButton + extends JComponent + implements MouseListener { + + private Color mouseOverColor; + private Color mousePressedColor; + + private boolean mouseOver; + private boolean mousePressed; + + + /** + * Construct a new RoundButton with the specified + * colors for mouse over and mouse pressed events. + * + * @param mouseOverColor the color the button should + * be filled with when the mouse is + * over the button. + * @param mousePressedColor the color the button should be + * filled with when the mouse + * is pressed on the button. + */ + public RoundButton(Color mouseOverColor, + Color mousePressedColor) { + this.mouseOverColor = mouseOverColor; + this.mousePressedColor = mousePressedColor; + mouseOver = false; + mousePressed = false; + + // Make this object a MouseListener for itself. This + // ensures that the MouseEvents ocurring on this JComponet + // will be routed to this object. NOTE: "this" is a + // reference to a RoundButton and a RoundButton "is a" + // JComponent so it has an addMouseListener() method that + // accepts a MouseListener object. Since RoundButton + // implements MouseListener it "is a" MouseListener. + this.addMouseListener(this); + } + + /** + * Default constructor that sets the mouse over color + * to blue and the mouse pressed color to red. + */ + public RoundButton() { + this(Color.blue, Color.red); + } + + /** + * Paint the RoundButton on the screen each time the + * window is redrawn. Recall that the paint() method + * of each JComponent in the content pane is called + * automatically when the window is redrawn. This + * overrides paint() from JComponent so we have control + * over what the RoundButton will look like when it is + * painted. + * + * @param g the Graphics context on which to paint the + * button. + */ + public void paint(Graphics g) { + // Check mouse pressed first because if the mouse + // is pressed it will also be in the button. + if (mousePressed && mouseOver) { + g.setColor(mousePressedColor); + g.fillOval(0,0,100,100); + } + else if (mouseOver) { + g.setColor(mouseOverColor); + g.fillOval(0,0,100,100); + } + else { + g.setColor(Color.black); + g.drawOval(0,0,100,100); + } + } + + /** + * Return the minimum size that our button would + * like to be. This overrides getMinimumSize from + * JComponent which returns 0x0. + * + * @return the minimum size of the RoundButton. + */ + public Dimension getMinimumSize() { + return new Dimension(100,100); + } + + /** + * Return the ideal size that our button would + * like to be. This overrides the getPreferredSize + * from JComponent which returns 0x0. + * + * @return the preferred size of the RoundButton. + */ + public Dimension getPreferredSize() { + return new Dimension(100,100); + } + + // Methods from the MouseListener Interface. + /** + * Handler called when the mouse is clicked on + * the RoundButton. + * + * @param e reference to a MouseEvent object describing + * the mouse click. + */ + public void mouseClicked(MouseEvent e) {} + + /** + * Handler called when the mouse enters the + * RoundButton. This is called when the mouse + * enters the bounding rectangle of the JComponent + * not when it enters the circle! (See RoundButton2 + * for a fix.) + * + * @param e reference to a MouseEvent object describing + * the mouse entry. + */ + public void mouseEntered(MouseEvent e) { + mouseOver = true; + + // Calling repaint() causes the component to be repainted. + // repaint() makes a call to paint() but also does a few + // other things related to the maintainence of the window + // and layout. Therefore, you should never call paint() + // directly. If you want the component to be repainted, + // call repaint(). + repaint(); + } + + /** + * Handler called when the mouse exits the + * RoundButton. Again, this is called when the + * mouse exits the bounding rectangle. + * + * @param e reference to a MouseEvent object describing + * the mouse exit. + */ + public void mouseExited(MouseEvent e) { + mouseOver = false; + repaint(); + } + + /** + * Handler called when the mouse button is pressed + * over the RoundButton. Again this is called if the + * button is pressed anywhere within the bounding + * rectangle. + * + * @param e reference to a MouseEvent object describing + * the mouse press. + */ + public void mousePressed(MouseEvent e) { + mousePressed = true; + repaint(); + } + + /** + * Handler called when the mosue button is released + * over the RoundButton. Blah... Blah.. bounding + * rectangle. + * + * @param e reference to a MouseEvent object describing + * the mouse release. + */ + public void mouseReleased(MouseEvent e) { + mousePressed = false; + repaint(); + } +} + Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,126 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +import javax.swing.ImageIcon; +import javax.swing.JComponent; +import javax.swing.UIManager; + +public class RoundButton2 extends JComponent implements MouseListener{ + String title; + ImageIcon ico; + ActionListener a; + String ac; + boolean p,pressed; + public RoundButton2(String title){ + this(title,new ImageIcon()); + } + public RoundButton2(ImageIcon ico){ + this("",ico); + } + public RoundButton2(){ + this("",new ImageIcon()); + } + public RoundButton2(String title,ImageIcon ico){ + this.title=title; + this.ico=ico; + p=pressed=false; + getInsets().set(15,15,15,15); + addMouseListener(this); + } + public Dimension getPreferredSize() { + Rectangle bounds=getBounds(); + return(new Dimension(new Double(bounds.getWidth()).intValue()+ + getInsets().left+getInsets().left, + new Double(bounds.getHeight()).intValue()+ + getInsets().top+getInsets().bottom)); + } + public Dimension getMinimumSize() { + return(getPreferredSize()); + } + public Dimension getMaximumSize() { + return(getPreferredSize()); + } + boolean onbutton(MouseEvent m){ + double + a=getBounds().getWidth()/2, + b=getBounds().getHeight()/2, + x=new Integer(m.getX()).doubleValue()-a, + y=new Integer(m.getY()).doubleValue()-b, + w=b/a*Math.sqrt(( (a*a) - (x*x) )); + return( y<= w && y>=-w ); + } + public void mouseClicked(MouseEvent e){} + public void mouseEntered(MouseEvent e){ + p=true; + if(pressed)repaint(); + } + public void mouseExited(MouseEvent e){ + if(pressed)repaint(); + } + public void mousePressed(MouseEvent e){ + pressed=true;if(onbutton(e)){p=true; repaint(); } + } + public void mouseReleased(MouseEvent e){ + pressed=false; + if(onbutton(e)){repaint();} + if(ac==null)ac=""; + if(a!=null) a.actionPerformed(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,ac)); + } + protected void paintComponent(Graphics g){ + Graphics2D g2=(Graphics2D)g; + Rectangle bounds=getBounds(); + Color t=g.getColor(); + int j=0; + g.setColor(UIManager.getColor("Button.background").brighter()); + if(p){ + j=1;p=false; + g.setColor(UIManager.getColor("Button.background").darker().darker()); + } + g.fillArc( + j,j, + new Double(bounds.getWidth()).intValue()-4, + new Double(bounds.getHeight()).intValue()-4, + 0, + 360); + g.setColor(UIManager.getColor("Button.background").darker().darker()); + g.fillArc( + 3,3, + new Double(bounds.getWidth()).intValue()-4, + new Double(bounds.getHeight()).intValue()-4, + 45, + -180); + g.setColor(UIManager.getColor("Button.background")); + g.fillArc( + 2+j,2+j, + new Double(bounds.getWidth()).intValue()-6, + new Double(bounds.getHeight()).intValue()-6, + 0, + 360); + g.drawImage( + ico.getImage(), + new Double((double)bounds.getWidth()/8).intValue()+j, + new Double((double)bounds.getHeight()/8).intValue()+j, + new Double((double)bounds.getWidth()*.75).intValue(), + new Double((double)bounds.getHeight()*.75).intValue(), + ico.getImageObserver() + ); + g.setColor(UIManager.getColor("Button.background").darker().darker()); + g.drawString(title.trim(), + new Double((double)bounds.getWidth()/2).intValue()+j, + new Double((double)bounds.getHeight()/2).intValue()+j + ); + g.setColor(t); + } + public void addActionListener(ActionListener e){a=e;} + public void removeActionListener(ActionListener e){a=null;} + public void setActionCommand(String c){ac=c;} +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,75 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.geom.Ellipse2D; + +import javax.swing.Action; +import javax.swing.BorderFactory; +import javax.swing.DefaultButtonModel; +import javax.swing.Icon; +import javax.swing.JButton; + +class RoundButton3 extends JButton { + public RoundButton3() { + this(null, null); + } + public RoundButton3(Icon icon) { + this(null, icon); + } + public RoundButton3(String text) { + this(text, null); + } + public RoundButton3(Action a) { + this(); + setAction(a); + } + public RoundButton3(String text, Icon icon) { + setModel(new DefaultButtonModel()); + init(text, icon); + if(icon==null) { + return; + } + int iw = Math.max(icon.getIconWidth(), icon.getIconHeight()); + int sw = 1; + setBorder(BorderFactory.createEmptyBorder(sw,sw,sw,sw)); + Dimension dim = new Dimension(iw+sw+sw, iw+sw+sw); + setPreferredSize(dim); + setMaximumSize(dim); + setMinimumSize(dim); + setBackground(Color.BLACK); + setContentAreaFilled(false); + setFocusPainted(false); + //setVerticalAlignment(SwingConstants.TOP); + setAlignmentY(Component.TOP_ALIGNMENT); + initShape(); + } + protected Shape shape, base; + protected void initShape() { + if(!getBounds().equals(base)) { + Dimension s = getPreferredSize(); + base = getBounds(); + shape = new Ellipse2D.Float(0, 0, s.width-1, s.height-1); + } + } + @Override + protected void paintBorder(Graphics g) { + initShape(); + Graphics2D g2 = (Graphics2D)g; + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2.setColor(getBackground()); + //g2.setStroke(new BasicStroke(1.0f)); + g2.draw(shape); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); + } + @Override + public boolean contains(int x, int y) { + initShape(); + return shape.contains(x, y); + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -46,6 +46,7 @@ import javax.swing.UIManager; import javax.swing.border.EmptyBorder; +import org.dllearner.tools.ore.RecentManager; import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.ui.StatusBar; import org.dllearner.tools.ore.ui.wizard.panels.LeftPanel; @@ -462,6 +463,8 @@ TaskManager.getInstance().setDialog(wizardDialog); TaskManager.getInstance().setStatusBar(statusBar); + + RecentManager.getInstance().deserialize(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -52,8 +52,8 @@ public class KnowledgeSourcePanelDescriptor extends WizardPanelDescriptor implements ActionListener{ public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; - public static final String INFORMATION = "Choose an OWL-ontology from filesystem or URI. Your are also able to extract a fragment " + - "from a SPARQL-endpoint. After all press <Next>"; + public static final String INFORMATION = "Choose an OWL-ontology from filesystem or URI. Your can also extract a fragment " + + "from a SPARQL endpoint. When finished, press <Next>."; private KnowledgeSourcePanel knowledgePanel; @@ -172,6 +172,7 @@ } private void handleOpenFromRecent(URI uri){ + currentURI = uri; OREManager.getInstance().setCurrentKnowledgeSource( uri); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-12 09:16:44
|
Revision: 1843 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1843&view=rev Author: lorenz_b Date: 2009-09-12 09:16:36 +0000 (Sat, 12 Sep 2009) Log Message: ----------- fixed bug removed some unnecessary classes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/BaseDescriptionGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.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/IntroductionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.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/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -22,12 +22,15 @@ import java.awt.Dimension; import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; import java.util.Locale; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; +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.ClassChoosePanelDescriptor; @@ -44,6 +47,7 @@ * */ public class OREApplication { + /** * main method. @@ -51,6 +55,14 @@ */ public static void main(String[] args) { try { + PropertyConfigurator.configure(new URL("file:src/dl-learner/org/dllearner/tools/ore/log4j.properties")); + } catch (MalformedURLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + + try { // UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) { @@ -111,7 +123,7 @@ @Override public void run() { System.out.println("Starting application..."); - int ret = wizard.showModalDialog(); + wizard.showModalDialog(); System.out.println("Exited ORE application"); System.exit(0); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -37,14 +37,14 @@ PelletExplanation expGen = new PelletExplanation(manager, Collections.singleton(ontology)); System.out.println(reasoner.isEntailed(axiom)); -// System.out.println(expGen.getEntailmentExplanations(axiom)); -// -// OWLDataRange range = factory.getTopDataType(); -// OWLDataSomeRestriction dataSome = factory.getOWLDataSomeRestriction(property, range); -// OWLSubClassAxiom subClass = factory.getOWLSubClassAxiom(dataSome, domain); -// -// System.out.println(reasoner.isEntailed(subClass)); -// System.out.println(expGen.getEntailmentExplanations(subClass)); + System.out.println(expGen.getEntailmentExplanations(axiom)); + + OWLDataRange range = factory.getTopDataType(); + OWLDataSomeRestriction dataSome = factory.getOWLDataSomeRestriction(property, range); + OWLSubClassAxiom subClass = factory.getOWLSubClassAxiom(dataSome, domain); + + System.out.println(reasoner.isEntailed(subClass)); + System.out.println(expGen.getEntailmentExplanations(subClass)); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -64,11 +64,21 @@ fireRepairPlanChanged(); } + public void addToRepairPlan(List<OWLOntologyChange> changes){ + repairPlan.addAll(changes); + fireRepairPlanChanged(); + } + public void removeFromRepairPlan(OWLOntologyChange change){ repairPlan.remove(change); fireRepairPlanChanged(); } + public void removeFromRepairPlan(List<OWLOntologyChange> changes){ + repairPlan.removeAll(changes); + fireRepairPlanChanged(); + } + public List<OWLOntologyChange> getRepairPlan(){ return repairPlan; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -49,9 +49,6 @@ lastRequestedRegularSize = new HashMap<OWLAxiom, Integer>(); lastRequestedLaconicSize = new HashMap<OWLAxiom, Integer>(); RepairManager.getInstance(OREManager.getInstance()).addListener(this); -// regularExpGen = new PelletExplanation(manager, Collections.singleton(ontology)); -// laconicExpGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(ontology)); - } public void setComputeLaconicExplanations(boolean laconic){ @@ -63,14 +60,12 @@ } @Override - public Explanation getExplanation(OWLAxiom entailment){ - + public Explanation getExplanation(OWLAxiom entailment){ return getExplanations(entailment, 1).iterator().next(); } @Override - public Set<Explanation> getExplanations(OWLAxiom entailment){ - + public Set<Explanation> getExplanations(OWLAxiom entailment){ return getExplanations(entailment, -1); } @@ -105,6 +100,7 @@ } axiom2Module.put(entailment, module); laconicExpGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(module)); + laconicExpGen.setProgressMonitor(TaskManager.getInstance().getStatusBar()); if(limit == -1){ explanations = laconicExpGen.getExplanations(entailment); } else { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -8,9 +8,8 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; +import org.apache.log4j.Logger; import org.semanticweb.owl.inference.OWLClassReasoner; import org.semanticweb.owl.inference.OWLReasonerFactory; import org.semanticweb.owl.model.OWLAxiom; @@ -69,8 +68,9 @@ */ public class HSTExplanationGenerator implements MultipleExplanationGenerator { - public static final Logger log = Logger.getLogger(HSTExplanationGenerator.class - .getName()); + + + private static Logger logger = Logger.getLogger(HSTExplanationGenerator.class); private TransactionAwareSingleExpGen singleExplanationGenerator; @@ -154,8 +154,8 @@ if (maxExplanations < 0) throw new IllegalArgumentException(); - if (log.isLoggable(Level.CONFIG)) - log.config("Get " + (maxExplanations == 0 ? "all" : maxExplanations) + " explanation(s) for: " + unsatClass); + + logger.debug("Get " + (maxExplanations == 0 ? "all" : maxExplanations) + " explanation(s) for: " + unsatClass); try { Set<OWLAxiom> firstMups = getExplanation(unsatClass); @@ -255,8 +255,8 @@ Set<Set<OWLAxiom>> satPaths, Set<OWLAxiom> currentPathContents, int maxExplanations) throws OWLException { - if (log.isLoggable(Level.FINE)) - log.fine("MUPS " + allMups.size() + ": " + mups); + + logger.debug("MUPS " + allMups.size() + ": " + mups); if (progressMonitor.isCancelled()) { return; @@ -268,18 +268,19 @@ while (!orderedMups.isEmpty()) { if (progressMonitor.isCancelled()) { + logger.debug("Canceled computing explanations"); return; } OWLAxiom axiom = orderedMups.get(0); orderedMups.remove(0); if (allMups.size() == maxExplanations) { - if (log.isLoggable(Level.FINE)) - log.fine("Computed " + maxExplanations + "explanations"); + + logger.debug("Computed " + maxExplanations + " explanations"); return; } - if (log.isLoggable(Level.FINE)) - log.fine("Removing axiom: " + axiom + " " + currentPathContents.size() + " more removed: " + currentPathContents); + + logger.debug("Removing axiom: " + axiom + " " + currentPathContents.size() + " more removed: " + currentPathContents); // Remove the current axiom from all the ontologies it is included // in @@ -318,8 +319,8 @@ for (Set<OWLAxiom> satPath : satPaths) { if (currentPathContents.containsAll(satPath)) { earlyTermination = true; - if (log.isLoggable(Level.FINE)) - log.fine("Stop - satisfiable (early termination)"); + + logger.debug("Stop - satisfiable (early termination)"); break; } } @@ -362,8 +363,8 @@ orderedMups = getOrderedMUPS(orderedMups, allMups); } else { - if (log.isLoggable(Level.FINE)) - log.fine("Stop - satisfiable"); + + logger.debug("Stop - satisfiable"); // End of current path - add it to the list of paths satPaths.add(new HashSet<OWLAxiom>(currentPathContents)); @@ -373,8 +374,8 @@ // Back track - go one level up the tree and run for the next axiom currentPathContents.remove(axiom); - if (log.isLoggable(Level.FINE)) - log.fine("Restoring axiom: " + axiom); + + logger.debug("Restoring axiom: " + axiom); // Remove any temporary declarations for( OWLDeclarationAxiom decl : temporaryDeclarations ) { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -33,10 +33,10 @@ public static void main(String[] args) { -// test(); + test(); miniTest(); -// miniEconomyTest(); -// universityTest(); + miniEconomyTest(); + universityTest(); } public static void test(){ @@ -55,7 +55,6 @@ OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); - Set<OWLOntology> ontologies = new HashSet<OWLOntology>(); Reasoner reasoner = resonerFact.createReasoner(manager); reasoner.loadOntologies(Collections.singleton(ontology)); System.out.println(reasoner.getInconsistentClasses()); 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-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -92,6 +92,12 @@ } lostEntailments = SetUtils.difference(entailmentsBefore, entailmentsAfter); addedEntailents = SetUtils.difference(entailmentsAfter, entailmentsBefore); + + for(OWLOntologyChange change : changes){ + if(change instanceof RemoveAxiom){ + lostEntailments.remove(change.getAxiom()); + } + } impact.add(0, lostEntailments); impact.add(1, addedEntailents); manager.applyChanges(getInverseChanges(changes)); @@ -103,6 +109,7 @@ // TODO Auto-generated catch block e.printStackTrace(); } + return impact; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -17,7 +17,6 @@ import com.clarkparsia.explanation.BlackBoxExplanation; import com.clarkparsia.explanation.GlassBoxExplanation; -import com.clarkparsia.explanation.HSTExplanationGenerator; import com.clarkparsia.explanation.SatisfiabilityConverter; import com.clarkparsia.explanation.TransactionAwareSingleExpGen; import com.clarkparsia.explanation.util.ExplanationProgressMonitor; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/BaseDescriptionGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/BaseDescriptionGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/BaseDescriptionGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -38,6 +38,8 @@ private OWLDataFactory factory; private static TopTester topChecker = new TopTester(); private static BottomTester bottomChecker = new BottomTester(); + + public BaseDescriptionGenerator(OWLDataFactory factory) { @@ -176,10 +178,13 @@ Set<OWLDescription> descs = new HashSet<OWLDescription>(); descs.add(desc); - for(OWLDescription filler : factory.getOWLObjectOneOf(new OWLIndividual[] {(OWLIndividual)desc.getValue()}).accept(this)){ - descs.add(factory.getOWLObjectSomeRestriction((OWLObjectPropertyExpression)desc.getProperty(), filler)); +// for(OWLDescription filler : factory.getOWLObjectOneOf(new OWLIndividual[] {(OWLIndividual)desc.getValue()}).accept(this)){ +// descs.add(factory.getOWLObjectSomeRestriction((OWLObjectPropertyExpression)desc.getProperty(), filler)); +// } + OWLDescription d = factory.getOWLObjectSomeRestriction((OWLObjectPropertyExpression)desc.getProperty(), getLimit()); + if(!isNothing(d)){ + descs.add(d); } - descs.add(getLimit()); return descs; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -6,12 +6,10 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; +import org.apache.log4j.Logger; import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.tools.ore.explanation.ExplanationException; -import org.dllearner.tools.ore.explanation.HSTExplanationGenerator; import org.dllearner.tools.ore.explanation.PelletExplanationGenerator; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.semanticweb.owl.apibinding.OWLManager; @@ -46,8 +44,7 @@ private Set<Explanation> allPreviouslyFoundExplanations; private OPlus oPlus; - public static final Logger log = Logger.getLogger(LaconicExplanationGenerator.class - .getName()); + private static Logger logger = Logger.getLogger(LaconicExplanationGenerator.class); private ExplanationProgressMonitor progressMonitor = new SilentExplanationProgressMonitor(); @@ -111,9 +108,9 @@ Set<Explanation> regularExplanations = pelletExplanation .getExplanations((OWLAxiom) entailment); - if (log.isLoggable(Level.CONFIG)){ - log.config("Found " + regularExplanations.size() + " regular explanations"); - } + + logger.debug("Found " + regularExplanations.size() + " regular explanations"); + lastRegularExplanations.clear(); lastRegularExplanations.addAll(regularExplanations); allPreviouslyFoundExplanations = new HashSet<Explanation>(); @@ -147,13 +144,9 @@ if (extendedOntology.getLogicalAxioms().equals( axiomsInPreviousOntology)) { - if (log.isLoggable(Level.CONFIG)){ - log.config(""); - } + logger.debug("Ontology did not changed. Early termination."); break; } - // man2.saveOntology(extendedOnt, - // URI.create("file:/home/lorenz/neu.owl")); axiomsInPreviousOntology.clear(); axiomsInPreviousOntology .addAll(extendedOntology.getLogicalAxioms()); @@ -196,7 +189,7 @@ } } - return retrieveAxioms(explanations); + return explanations;//retrieveAxioms(explanations); } public boolean isLaconic(Explanation explanation) @@ -311,8 +304,8 @@ public Set<Explanation> getExplanations(OWLAxiom entailment, int limit) throws ExplanationException { - if (log.isLoggable(Level.CONFIG)) - log.config("Get " + (limit == Integer.MAX_VALUE ? "all" : limit) + " explanation(s) for: " + entailment); + + logger.debug("Get " + (limit == Integer.MAX_VALUE ? "all" : limit) + " explanation(s) for: " + entailment); Set<Explanation> explanations; try { explanations = computePreciseJusts(entailment, limit); @@ -332,7 +325,7 @@ public Set<OWLAxiom> getSourceAxioms(OWLAxiom axiom){ Map<OWLAxiom, Set<OWLAxiom>> axioms2SourceMap = oPlus.getAxiomsMap(); Set<OWLAxiom> sourceAxioms = new HashSet<OWLAxiom>(); - System.out.println(axiom); + System.out.println("Getting source axioms for: " + axiom); for(OWLAxiom ax : axioms2SourceMap.get(axiom)){ if(ontology.containsAxiom(ax)){ sourceAxioms.add(ax); @@ -344,19 +337,35 @@ public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ Set<OWLAxiom> parts = computeOPlus(Collections.singleton(source)); + for(OWLAxiom ax : parts){ +// System.out.println("Part: " + ax); + for(OWLAxiom a : oPlus.getAxiomsMap().get(ax)){ +// System.out.println("has source: " + a); + } + + } + for(OWLAxiom par : parts){ - System.out.println("has Part: " + par); +// System.out.println("has Part: " + par); } -// parts.remove(part);System.out.println("removed part: " + part); - for(OWLAxiom pa : parts){ - System.out.println("\nPart: " + pa); - for(OWLAxiom ax : oPlus.getAxiomsMap().get(pa)){ - System.out.println("has source : " + ax); + for(OWLAxiom ax : oPlus.getAxiomsMap().get(part)){ + parts.remove(ax); +// System.out.println("Removing: " + ax); + } + Set<OWLAxiom> remove = new HashSet<OWLAxiom>(); + for(OWLAxiom ax : parts){ + for(OWLAxiom a : computeOPlus(Collections.singleton(ax))){ + if(!a.equals(ax)){ + remove.add(a); + } } } + parts.removeAll(remove); + parts.remove(part); + return parts; - return rebuildAxioms(parts); + } private Set<OWLAxiom> rebuildAxioms(Set<OWLAxiom> axioms){ @@ -423,7 +432,7 @@ return reconstituedAxioms; } - public static void main(String[] args) throws OWLOntologyCreationException, ExplanationException{ + public static void main(String[] args) throws OWLOntologyCreationException, ExplanationException, OWLOntologyChangeException{ String baseURI = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl"; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create("file:examples/ore/koala.owl")); @@ -432,13 +441,34 @@ OWLClass koalaWithPhD = factory.getOWLClass(URI.create(baseURI + "#KoalaWithPhD")); OWLClass koala = factory.getOWLClass(URI.create(baseURI + "#Koala")); - System.out.println(expGen.getExplanations(factory.getOWLSubClassAxiom(koalaWithPhD, factory.getOWLNothing()), 1)); - OWLAxiom laconicAx = factory.getOWLSubClassAxiom(koalaWithPhD, koala); - Set<OWLAxiom> sourceAxioms = expGen.getSourceAxioms(laconicAx); +// System.out.println(expGen.getExplanations(factory.getOWLSubClassAxiom(koalaWithPhD, factory.getOWLNothing()), 1)); +// OWLAxiom laconicAx = factory.getOWLSubClassAxiom(koalaWithPhD, koala); +// Set<OWLAxiom> sourceAxioms = expGen.getSourceAxioms(laconicAx); +// System.out.println("Source axioms: " + sourceAxioms); +// for(OWLAxiom sourceAx : sourceAxioms){ +// System.out.println("\nRebuildet: " + expGen.getRemainingAxioms(sourceAx, laconicAx)); +// } + + OWLAxiom ax = factory.getOWLEquivalentClassesAxiom(factory.getOWLClass(URI.create("A")), + factory.getOWLObjectIntersectionOf(factory.getOWLClass(URI.create("C")), + factory.getOWLObjectSomeRestriction(factory.getOWLObjectProperty(URI.create("R")), + factory.getOWLClass(URI.create("F"))))); + OWLAxiom ax2 = factory.getOWLSubClassAxiom(factory.getOWLObjectSomeRestriction(factory.getOWLObjectProperty(URI.create("R")), factory.getOWLThing()), + factory.getOWLObjectComplementOf(factory.getOWLClass(URI.create("C")))); + Set<OWLAxiom> ont = new HashSet<OWLAxiom>(); + ont.add(ax); + ont.add(ax2); + OWLOntology o = manager.createOntology(ont); + expGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(o)); + System.out.println(expGen.getExplanations(factory.getOWLSubClassAxiom(factory.getOWLClass(URI.create("A")), factory.getOWLNothing()), 1)); + + OWLAxiom remove = factory.getOWLSubClassAxiom(factory.getOWLClass(URI.create("A")),factory.getOWLObjectSomeRestriction(factory.getOWLObjectProperty(URI.create("R")), factory.getOWLThing())); + Set<OWLAxiom> sourceAxioms = expGen.getSourceAxioms(remove); System.out.println("Source axioms: " + sourceAxioms); for(OWLAxiom sourceAx : sourceAxioms){ - System.out.println("\nRebuildet: " + expGen.getRemainingAxioms(sourceAx, laconicAx)); + System.out.println("\nRebuildet: " + expGen.getRemainingAxioms(sourceAx, remove)); } + } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties 2009-09-12 09:16:36 UTC (rev 1843) @@ -0,0 +1,5 @@ +log4j.rootLogger=INFO, A +log4j.logger.org.dllearner.tools.ore.explanation = DEBUG, A +log4j.appender.A=org.apache.log4j.ConsoleAppender +log4j.appender.A.layout=org.apache.log4j.PatternLayout +log4j.appender.A.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -1,5 +1,8 @@ package org.dllearner.tools.ore.ui; +import java.util.ArrayList; +import java.util.List; + import javax.swing.table.AbstractTableModel; import org.dllearner.tools.ore.ExplanationManager; @@ -11,6 +14,7 @@ import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.RemoveAxiom; public class ExplanationTableModel extends AbstractTableModel { @@ -71,36 +75,33 @@ OWLAxiom ax = getOWLAxiomAtRow(rowIndex); if(impMan.isSelected(ax)){ impMan.removeSelection(ax); - if(expMan.isLaconicMode()){ + if(expMan.isLaconicMode() && !ont.containsAxiom(ax)){ + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); for(OWLAxiom source : expMan.getSourceAxioms(ax)){ impMan.removeSelection(source); - repMan.removeFromRepairPlan(new RemoveAxiom(ont, source)); - for(OWLAxiom rem : expMan.getRemainingAxioms(source, ax)){ - repMan.removeFromRepairPlan(new AddAxiom(ont, rem)); + changes.add(new RemoveAxiom(ont, source)); + for(OWLAxiom remain : expMan.getRemainingAxioms(source, ax)){ + changes.add(new AddAxiom(ont, remain)); } - -// repMan.removeAxiom2Remove(source); -// repMan.removeAxioms2Keep(expMan.getRemainingAxioms(source, ax)); } + repMan.removeFromRepairPlan(changes); } else { -// repMan.removeAxiom2Remove(ax); repMan.removeFromRepairPlan(new RemoveAxiom(ont, ax)); } } else { impMan.addSelection(ax); - if(expMan.isLaconicMode()){ + if(expMan.isLaconicMode() && !ont.containsAxiom(ax)){ + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); for(OWLAxiom source : expMan.getSourceAxioms(ax)){ impMan.addSelection(source); - repMan.addToRepairPlan(new RemoveAxiom(ont, source)); - for(OWLAxiom rem : expMan.getRemainingAxioms(source, ax)){ - repMan.addToRepairPlan(new AddAxiom(ont, rem)); + changes.add(new RemoveAxiom(ont, source)); + for(OWLAxiom remain : expMan.getRemainingAxioms(source, ax)){ + changes.add(new AddAxiom(ont, remain)); } -// repMan.addAxiom2Remove(source); -// repMan.addAxioms2Keep(expMan.getRemainingAxioms(source, ax)); - } + } + repMan.addToRepairPlan(changes); } else { -// repMan.addAxiom2Remove(ax); repMan.addToRepairPlan(new RemoveAxiom(ont, ax)); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -66,6 +66,7 @@ private int returnCode; private JButton okButton = null; + @SuppressWarnings("unused") private JButton cancelButton = null; private JComboBox comboBox; @@ -103,15 +104,6 @@ addPredifinedEndpoints(); positionErrorDialog(owner); } - - private void positionErrorDialog(Dialog owner) { - if (owner == null || !owner.isVisible()) { - Dimension screenDimension = Toolkit.getDefaultToolkit() - .getScreenSize(); - setLocation(screenDimension.width / 2 - getSize().width / 2, - screenDimension.height / 2 - getSize().height / 2); - } - } private void createControls() { getContentPane().setLayout(new BorderLayout()); @@ -238,16 +230,19 @@ private void addPredifinedEndpoints(){ endpointToDefaultGraph = new HashMap<URL, List<String>>(); -// endpointToDefaultGraph.put(SparqlEndpoint.getEndpointDBpedia().getURL(), SparqlEndpoint.getEndpointDBpedia().getDefaultGraphURIs()); -// endpointToDefaultGraph.put(SparqlEndpoint.getEndpointDOAPspace().getURL(), SparqlEndpoint.getEndpointDOAPspace().getDefaultGraphURIs()); for(SparqlEndpoint endpoint : SparqlEndpoint.listEndpoints()){ endpointToDefaultGraph.put(endpoint.getURL(), endpoint.getDefaultGraphURIs()); - } - + } for(URL url : endpointToDefaultGraph.keySet()){ comboBox.addItem(url.toString()); + } + } + + private void positionErrorDialog(Dialog owner) { + if (owner == null || !owner.isVisible()) { + Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); + setLocation(screenDimension.width / 2 - getSize().width / 2, screenDimension.height / 2 - getSize().height / 2); } - } @@ -260,8 +255,7 @@ optionsPanel.setVisible(true); // Cause the new layout to take effect invalidate (); - validate (); - + validate (); } private void collapseOptionsPanel(){ @@ -273,8 +267,7 @@ optionsPanel.setVisible(false); // Cause the new layout to take effect invalidate (); - validate (); - + validate (); } private JButton createButton (String label, char mnemonic) { @@ -302,9 +295,7 @@ setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); return returnCode; } - - - + private void extract() { if(urlIsConnectable()){ message.setText(""); @@ -314,8 +305,7 @@ extractTask.execute(); } else { message.setText("<html><font color=\"red\">Could not connect to endpoint</html>"); - } - + } } private boolean urlIsConnectable() @@ -444,7 +434,6 @@ } } - @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("Extract")){ @@ -489,36 +478,28 @@ if(mon.isCanceled()){ extractTask.cancel(true); } - } - + } } @Override public void changedUpdate(DocumentEvent e) { - setExtractButtonEnabledToValidInput(); - + setExtractButtonEnabledToValidInput(); } @Override public void insertUpdate(DocumentEvent e) { - setExtractButtonEnabledToValidInput(); - + setExtractButtonEnabledToValidInput(); } @Override public void removeUpdate(DocumentEvent e) { - setExtractButtonEnabledToValidInput(); - + setExtractButtonEnabledToValidInput(); } - public static void main(String[] args){ ExtractFromSparqlDialog dialog = new ExtractFromSparqlDialog(null); dialog.showDialog(); - } - - - + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -3,12 +3,6 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; -import java.awt.Toolkit; -import java.awt.datatransfer.Clipboard; -import java.awt.datatransfer.StringSelection; -import java.awt.event.ActionEvent; -import java.io.FileNotFoundException; -import java.net.URI; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -16,11 +10,8 @@ import java.util.List; import java.util.Map; -import javax.swing.AbstractAction; import javax.swing.BorderFactory; -import javax.swing.JFrame; import javax.swing.JPanel; -import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.TitledBorder; @@ -28,19 +19,13 @@ import org.protege.editor.core.PropertyUtil; import org.protege.editor.core.ProtegeProperties; import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.io.UnparsableOntologyException; -import org.semanticweb.owl.metrics.AxiomCountMetric; -import org.semanticweb.owl.metrics.AxiomTypeMetric; import org.semanticweb.owl.metrics.DLExpressivity; -import org.semanticweb.owl.metrics.GCICount; -import org.semanticweb.owl.metrics.HiddenGCICount; import org.semanticweb.owl.metrics.OWLMetric; import org.semanticweb.owl.metrics.OWLMetricManager; import org.semanticweb.owl.metrics.ReferencedClassCount; import org.semanticweb.owl.metrics.ReferencedDataPropertyCount; import org.semanticweb.owl.metrics.ReferencedIndividualCount; import org.semanticweb.owl.metrics.ReferencedObjectPropertyCount; -import org.semanticweb.owl.model.AxiomType; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChangeException; @@ -68,10 +53,7 @@ private OWLOntologyManager manager; - private JPopupMenu popupMenu; - private AxiomCountMetric lastMetric; - public MetricsPanel() { this.manager = OWLManager.createOWLOntologyManager(); try { @@ -86,55 +68,12 @@ } initialiseOWLView(); - createPopupMenu(); } - - private void createPopupMenu() { - popupMenu = new JPopupMenu(); - popupMenu.add(new AbstractAction("Show axioms") { - /** - * - */ - private static final long serialVersionUID = 1L; - - public void actionPerformed(ActionEvent e) { -// showAxiomTypeDialog(); - - } - }); - } - - -// private void showAxiomTypeDialog() { -// Set<? extends OWLAxiom> axioms = lastMetric.getAxioms(); -// final OWLAxiomTypeFramePanel panel = new OWLAxiomTypeFramePanel(owlEditorKit); -// Set<OWLAxiom> axs = new HashSet<OWLAxiom>(axioms); -// panel.setRoot(axs); -// panel.setPreferredSize(new Dimension(800, 300)); -// JOptionPane op = new JOptionPane(panel, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION); -// JDialog dlg = op.createDialog(this, lastMetric.getName()); -// dlg.setResizable(true); -// dlg.addWindowListener(new WindowAdapter() { -// -// public void windowClosed(WindowEvent e) { -// panel.dispose(); -// } -// }); -// dlg.setModal(false); -// dlg.setVisible(true); -// } - - protected void initialiseOWLView() { metricManagerMap = new LinkedHashMap<String, OWLMetricManager>(); tableModelMap = new HashMap<OWLMetricManager, MetricsTableModel>(); createBasicMetrics(); -// createClassAxiomMetrics(); -// createObjectPropertyAxiomMetrics(); -// createDataPropertyAxiomMetrics(); -// createIndividualAxiomMetrics(); -// createAnnotationAxiomMetrics(); createUI(); updateView(manager.getOntologies().iterator().next()); for(OWLMetricManager man : metricManagerMap.values()) { @@ -145,7 +84,6 @@ } } - private void createUI() { setLayout(new BorderLayout()); @@ -193,98 +131,6 @@ metricManagerMap.put("Metrics", metricManager); } - - private void createClassAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.SUBCLASS)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.EQUIVALENT_CLASSES)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.DISJOINT_CLASSES)); - metrics.add(new GCICount(manager)); - metrics.add(new HiddenGCICount(manager)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Class axioms", metricManager); - } - - - private void createObjectPropertyAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.SUB_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.EQUIVALENT_OBJECT_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.INVERSE_OBJECT_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DISJOINT_OBJECT_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.FUNCTIONAL_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.INVERSE_FUNCTIONAL_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.TRANSITIVE_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.SYMMETRIC_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.ANTI_SYMMETRIC_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.REFLEXIVE_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.IRREFLEXIVE_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.OBJECT_PROPERTY_DOMAIN)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.OBJECT_PROPERTY_RANGE)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.PROPERTY_CHAIN_SUB_PROPERTY)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Object property axioms", metricManager); - } - - - private void createDataPropertyAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.SUB_DATA_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.EQUIVALENT_DATA_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DISJOINT_DATA_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.FUNCTIONAL_DATA_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DATA_PROPERTY_DOMAIN)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DATA_PROPERTY_RANGE)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Data property axioms", metricManager); - } - - - private void createIndividualAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.CLASS_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.OBJECT_PROPERTY_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DATA_PROPERTY_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.NEGATIVE_OBJECT_PROPERTY_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.NEGATIVE_DATA_PROPERTY_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.SAME_INDIVIDUAL)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.DIFFERENT_INDIVIDUALS)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Individual axioms", metricManager); - } - - - private void createAnnotationAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.ENTITY_ANNOTATION)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.AXIOM_ANNOTATION)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Annotation axioms", metricManager); - } - - public void updateView(OWLOntology activeOntology) { for (OWLMetricManager man : metricManagerMap.values()) { man.setOntology(activeOntology); @@ -296,39 +142,5 @@ setBorder(border); repaint(); } - - - - private void exportCSV() { - StringBuilder sb = new StringBuilder(); - for(OWLMetricManager man : metricManagerMap.values()) { - sb.append(man.toString()); - } - Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); - clipboard.setContents(new StringSelection(sb.toString()), null); - } - - public static void main(String[] args) { - String file = "file:examples/ore/tambis.owl"; - URI uri2 = URI.create("file:/home/lorenz/Desktop/Finance.owl"); - URI uri = URI.create("http://protege.stanford.edu/plugins/owl/owl-library/koala.ow"); - - - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - try{ - OWLOntology ontology = manager.loadOntology( uri ); - } catch (OWLOntologyCreationException e){ - System.out.println(e.getClass()); - System.out.println(e.getClass().equals(UnparsableOntologyException.class)); -// System.out.println(e.getCause()); - e.printStackTrace(); - } - JFrame test = new JFrame(); - test.setBounds(200, 200, 600, 200); - test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - test.add(new MetricsPanel()); - test.setVisible(true); - - - } + } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -1,191 +0,0 @@ -package org.dllearner.tools.ore.ui; - -//Imports for the GUI classes. -import java.awt.*; -import javax.swing.*; -import java.awt.event.*; - -/** - * RoundButton.java - - * A custom JComponent that is a round button. The round button - * will be empty until the mouse enters the circle. When the - * mouse enters the circle it will be filled in with a specified - * color. Then when the mouse is pressed the color will change - * to a second specified color. Note that RoundButton "is a" - * MouseListener so it can handle its own MouseEvents. - * - * @author Grant William Braught - * @author Dickinson College - * @version 11/29/2000 - */ -public class RoundButton - extends JComponent - implements MouseListener { - - private Color mouseOverColor; - private Color mousePressedColor; - - private boolean mouseOver; - private boolean mousePressed; - - - /** - * Construct a new RoundButton with the specified - * colors for mouse over and mouse pressed events. - * - * @param mouseOverColor the color the button should - * be filled with when the mouse is - * over the button. - * @param mousePressedColor the color the button should be - * filled with when the mouse - * is pressed on the button. - */ - public RoundButton(Color mouseOverColor, - Color mousePressedColor) { - this.mouseOverColor = mouseOverColor; - this.mousePressedColor = mousePressedColor; - mouseOver = false; - mousePressed = false; - - // Make this object a MouseListener for itself. This - // ensures that the MouseEvents ocurring on this JComponet - // will be routed to this object. NOTE: "this" is a - // reference to a RoundButton and a RoundButton "is a" - // JComponent so it has an addMouseListener() method that - // accepts a MouseListener object. Since RoundButton - // implements MouseListener it "is a" MouseListener. - this.addMouseListener(this); - } - - /** - * Default constructor that sets the mouse over color - * to blue and the mouse pressed color to red. - */ - public RoundButton() { - this(Color.blue, Color.red); - } - - /** - * Paint the RoundButton on the screen each time the - * window is redrawn. Recall that the paint() method - * of each JComponent in the content pane is called - * automatically when the window is redrawn. This - * overrides paint() from JComponent so we have control - * over what the RoundButton will look like when it is - * painted. - * - * @param g the Graphics context on which to paint the - * button. - */ - public void paint(Graphics g) { - // Check mouse pressed first because if the mouse - // is pressed it will also be in the button. - if (mousePressed && mouseOver) { - g.setColor(mousePressedColor); - g.fillOval(0,0,100,100); - } - else if (mouseOver) { - g.setColor(mouseOverColor); - g.fillOval(0,0,100,100); - } - else { - g.setColor(Color.black); - g.drawOval(0,0,100,100); - } - } - - /** - * Return the minimum size that our button would - * like to be. This overrides getMinimumSize from - * JComponent which returns 0x0. - * - * @return the minimum size of the RoundButton. - */ - public Dimension getMinimumSize() { - return new Dimension(100,100); - } - - /** - * Return the ideal size that our button would - * like to be. This overrides the getPreferredSize - * from JComponent which returns 0x0. - * - * @return the preferred size of the RoundButton. - */ - public Dimension getPreferredSize() { - return new Dimension(100,100); - } - - // Methods from the MouseListener Interface. - /** - * Handler called when the mouse is clicked on - * the RoundButton. - * - * @param e reference to a MouseEvent object describing - * the mouse click. - */ - public void mouseClicked(MouseEvent e) {} - - /** - * Handler called when the mouse enters the - * RoundButton. This is called when the mouse - * enters the bounding rectangle of the JComponent - * not when it enters the circle! (See RoundButton2 - * for a fix.) - * - * @param e reference to a MouseEvent object describing - * the mouse entry. - */ - public void mouseEntered(MouseEvent e) { - mouseOver = true; - - // Calling repaint() causes the component to be repainted. - // repaint() makes a call to paint() but also does a few - // other things related to the maintainence of the window - // and layout. Therefore, you should never call paint() - // directly. If you want the component to be repainted, - // call repaint(). - repaint(); - } - - /** - * Handler called when the mouse exits the - * RoundButton. Again, this is called when the - * mouse exits the bounding rectangle. - * - * @param e reference to a MouseEvent object describing - * the mouse exit. - */ - public void mouseExited(MouseEvent e) { - mouseOver = false; - repaint(); - } - - /** - * Handler called when the mouse button is pressed - * over the RoundButton. Again this is called if the - * button is pressed anywhere within the bounding - * rectangle. - * - * @param e reference to a MouseEvent object describing - * the mouse press. - */ - public void mousePressed(MouseEvent e) { - mousePressed = true; - repaint(); - } - - /** - * Handler called when the mosue button is released - * over the RoundButton. Blah... Blah.. bounding - * rectangle. - * - * @param e reference to a MouseEvent object describing - * the mouse release. - */ - public void mouseReleased(MouseEvent e) { - mousePressed = false; - repaint(); - } -} - Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -1,126 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Rectangle; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; - -import javax.swing.ImageIcon; -import javax.swing.JComponent; -import javax.swing.UIManager; - -public class RoundButton2 extends JComponent implements MouseListener{ - String title; - ImageIcon ico; - ActionListener a; - String ac; - boolean p,pressed; - public RoundButton2(String title){ - this(title,new ImageIcon()); - } - public RoundButton2(ImageIcon ico){ - this("",ico); - } - public RoundButton2(){ - this("",new ImageIcon()); - } - public RoundButton2(String title,ImageIcon ico){ - this.title=title; - this.ico=ico; - p=pressed=false; - getInsets().set(15,15,15,15); - addMouseListener(this); - } - public Dimension getPreferredSize() { - Rectangle bounds=getBounds(); - return(new Dimension(new Double(bounds.getWidth()).intValue()+ - getInsets().left+getInsets().left, - new Double(bounds.getHeight()).intValue()+ - getInsets().top+getInsets().bottom)); - } - public Dimension getMinimumSize() { - return(getPreferredSize()); - } - public Dimension getMaximumSize() { - return(getPreferredSize()); - } - boolean onbutton(MouseEvent m){ - double - a=getBounds().getWidth()/2, - b=getBounds().getHeight()/2, - x=new Integer(m.getX()).doubleValue()-a, - y=new Integer(m.getY()).doubleValue()-b, - w=b/a*Math.sqrt(( (a*a) - (x*x) )); - return( y<= w && y>=-w ); - } - public void mouseClicked(MouseEvent e){} - public void mouseEntered(MouseEvent e){ - p=true; - if(pressed)repaint(); - } - public void mouseExited(MouseEvent e){ - if(pressed)repaint(); - } - public void mousePressed(MouseEvent e){ - pressed=true;if(onbutton(e)){p=true; repaint(); } - } - public void mouseReleased(MouseEvent e){ - pressed=false; - if(onbutton(e)){repaint();} - if(ac==null)ac=""; - if(a!=null) a.actionPerformed(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,ac)); - } - protected void paintComponent(Graphics g){ - Graphics2D g2=(Graphics2D)g; - Rectangle bounds=getBounds(); - Color t=g.getColor(); - int j=0; - g.setColor(UIManager.getColor("Button.background").brighter()); - if(p){ - j=1;p=false; - g.setColor(UIManager.getColor("Button.background").darker().darker()); - } - g.fillArc( - j,j, - new Double(bounds.getWidth()).intValue()-4, - new Double(bounds.getHeight()).intValue()-4, - 0, - 360); - g.setColor(UIManager.getColor("Button.background").darker().darker()); - g.fillArc( - 3,3, - new Double(bounds.getWidth()).intValue()-4, - new Double(bounds.getHeight()).intValue()-4, - 45, - -180); - g.setColor(UIManager.getColor("Button.background")); - g.fillArc( - 2+j,2+j, - new Double(bounds.getWidth()).intValue()-6, - new Double(bounds.getHeight()).intValue()-6, - 0, - 360); - g.drawImage( - ico.getImage(), - new Double((double)bounds.getWidth()/8).intValue()+j, - new Double((double)bounds.getHeight()/8).intValue()+j, - new Double((double)bounds.getWidth()*.75).intValue(), - new Double((double)bounds.getHeight()*.75).intValue(), - ico.getImageObserver() - ); - g.setColor(UIManager.getColor("Button.background").darker().darker()); - g.drawString(title.trim(), - new Double((double)bounds.getWidth()/2).intValue()+j, - new Double((double)bounds.getHeight()/2).intValue()+j - ); - g.setColor(t); - } - public void addActionListener(ActionListener e){a=e;} - public void removeActionListener(ActionListener e){a=null;} - public void setActionCommand(String c){ac=c;} -} Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -1,75 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.Shape; -import java.awt.geom.Ellipse2D; - -import javax.swing.Action; -import javax.swing.BorderFactory; -import javax.swing.DefaultButtonModel; -import javax.swing.Icon; -import javax.swing.JButton; - -class RoundButton3 extends JButton { - public RoundButton3() { - this(null, null); - } - public RoundButton3(Icon icon) { - this(null, icon); - } - public RoundButton3(String text) { - this(text, null); - } - public RoundButton3(Action a) { - this(); - setAction(a); - } - public RoundButton3(String text, Icon icon) { - setModel(new DefaultButtonModel()); - init(text, icon); - if(icon==null) { - return; - } - int iw = Math.max(icon.getIconWidth(), icon.getIconHeight()); - int sw = 1; - setBorder(BorderFactory.createEmptyBorder(sw,sw,sw,sw)); - Dimension dim = new Dimension(iw+sw+sw, iw+sw+sw); - setPreferredSize(dim); - setMaximumSize(dim); - setMinimumSize(dim); - setBackground(Color.BLACK); - setContentAreaFilled(false); - setFocusPainted(false); - //setVerticalAlignment(SwingConstants.TOP); - setAlignmentY(Component.TOP_ALIGNMENT); - initShape(); - } - protected Shape shape, base; - protected void initShape() { - if(!getBounds().equals(base)) { - Dimension s = getPreferredSize(); - base = getBounds(); - shape = new Ellipse2D.Float(0, 0, s.width-1, s.height-1); - } - } - @Override - protected void paintBorder(Graphics g) { - initShape(); - Graphics2D g2 = (Graphics2D)g; - g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g2.setColor(getBackground()); - //g2.setStroke(new BasicStroke(1.0f)); - g2.draw(shape); - g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); - } - @Override - public boolean contains(int x, int y) { - initShape(); - return shape.contains(x, y); - } -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -49,6 +49,11 @@ } + @Override + public String getColumnName(int column) { + return "Axiom"; + } + public OWLAxiom getOWLAxiomAtRow(int rowIndex){ return expMan.getOrdering(exp).get(rowIndex).keySet().iterator().next(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -3,21 +3,16 @@ import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import javax.swing.Icon; -import javax.swing.ImageIcon; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; -import javax.swing.JToggleButton; import javax.swing.SpinnerNumberModel; import javax.swing.border.TitledBorder; -public class SparqlExtractOptionsPanel extends JPanel implements ActionListener { +public class SparqlExtractOptionsPanel extends JPanel{ /** * @@ -34,22 +29,10 @@ private JCheckBox getAllSuperClassesCheckBox; private JCheckBox useLitsCheckBox; - private JToggleButton advancedButton; - private JPanel advancedPanel; - - - private Icon untoggledIcon; - private Icon toggledIcon; - - public SparqlExtractOptionsPanel(){ - - untoggledIcon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/untoggled.gif"); - toggledIcon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/toggled.gif"); createUI(); setDefaults(); - setToolTips(); - + setToolTips(); } private void createUI(){ @@ -151,15 +134,6 @@ c.gridy = 8; add(useLitsCheckBox, c); - - c.gridx = 0; - c.gridy = 9; - advancedButton = new JToggleButton("Advanced settings"); - advancedButton.setActionCommand("untoggled"); - advancedButton.setIcon(untoggledIcon); - advancedButton.addActionListener(this); -// add(advancedButton, c); - } public int getRecursionDepthValue(){ @@ -222,11 +196,6 @@ useLitsCheckBox.setToolTipText("use Literals in SPARQL query"); } - private void showAdvancedPanel(){ - advancedPanel = new JPanel(); -... [truncated message content] |
From: <lor...@us...> - 2009-09-14 09:59:47
|
Revision: 1845 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1845&view=rev Author: lorenz_b Date: 2009-09-14 09:59:30 +0000 (Mon, 14 Sep 2009) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/close.png trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTableModel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt Property Changed: ---------------- trunk/src/dl-learner/org/dllearner/tools/ore/ Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore ___________________________________________________________________ Added: svn:ignore + recent.txt Added: trunk/src/dl-learner/org/dllearner/tools/ore/close.png =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/close.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -21,6 +21,7 @@ import org.semanticweb.owl.inference.OWLReasonerFactory; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.AxiomType; +import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataAllRestriction; import org.semanticweb.owl.model.OWLDataExactCardinalityRestriction; @@ -76,6 +77,8 @@ private Map<OWLClass, Set<OWLClass>> child2Parents; private Map<OWLClass, Set<OWLClass>> parent2Children; + + private Map<OWLClass, Map<OWLAxiom, Set<OWLClass>>> class2Dependency; public RootFinder(){ @@ -98,6 +101,8 @@ child2Parents = new HashMap<OWLClass, Set<OWLClass>>(); parent2Children = new HashMap<OWLClass, Set<OWLClass>>(); + class2Dependency = new HashMap<OWLClass, Map<OWLAxiom, Set<OWLClass>>>(); + OREManager.getInstance().addListener(this); RepairManager.getInstance(OREManager.getInstance()).addListener(this); // OREManager.getInstance().getPelletReasoner().getOWLOntologyManager().addOntologyChangeListener(this); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -172,7 +172,7 @@ nonLaconicExplanations.add(currentExplanation); } if (laconicExplanations.size() == limit) { - return laconicExplanations;//retrieveAxioms(laconicJusts); + return laconicExplanations;//retrieveAxioms(laconicExplanations); } } } @@ -189,7 +189,7 @@ } } - return explanations;//retrieveAxioms(explanations); + return laconicExplanations;//retrieveAxioms(explanations); } public boolean isLaconic(Explanation explanation) @@ -205,12 +205,10 @@ PelletExplanationGenerator expGen2 = new PelletExplanationGenerator(manager, Collections.singleton(justificationSigmaClosureOnt)); -// Set<Set<OWLAxiom>> exps = expGen2.getEntailmentExplanations( -// entailment, 2); - Explanation expl = expGen2.getExplanation(explanation.getEntailment()); + Set<Explanation> exps = expGen2.getExplanations( + explanation.getEntailment(), 2); -// laconic = Collections.singleton(justification).equals(exps); - laconic = explanation.equals(expl); + laconic = Collections.singleton(explanation).equals(exps); } catch (OWLOntologyCreationException e) { throw new ExplanationException(e); @@ -337,13 +335,13 @@ public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ Set<OWLAxiom> parts = computeOPlus(Collections.singleton(source)); - for(OWLAxiom ax : parts){ +// for(OWLAxiom ax : parts){ // System.out.println("Part: " + ax); - for(OWLAxiom a : oPlus.getAxiomsMap().get(ax)){ +// for(OWLAxiom a : oPlus.getAxiomsMap().get(ax)){ // System.out.println("has source: " + a); - } - - } +// } +// +// } for(OWLAxiom par : parts){ // System.out.println("has Part: " + par); Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt =================================================================== (Binary files differ) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -57,7 +57,7 @@ repMan.addListener(this); setBackground(Color.WHITE); - setHighlighters(HighlighterFactory.createAlternateStriping()); +// setHighlighters(HighlighterFactory.createAlternateStriping()); setAutoResizeMode(JTable.AUTO_RESIZE_OFF); setModel(new ExplanationTableModel(exp, cl)); TableColumn column5 = getColumn(4); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -1,14 +1,26 @@ package org.dllearner.tools.ore.ui; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Insets; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPanel; import javax.swing.table.AbstractTableModel; import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.ImpactManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; +import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.explanation.Explanation; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; @@ -89,18 +101,24 @@ repMan.removeFromRepairPlan(new RemoveAxiom(ont, ax)); } } else { - impMan.addSelection(ax); +// impMan.addSelection(ax); if(expMan.isLaconicMode() && !ont.containsAxiom(ax)){ - List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); - for(OWLAxiom source : expMan.getSourceAxioms(ax)){ - impMan.addSelection(source); - changes.add(new RemoveAxiom(ont, source)); - for(OWLAxiom remain : expMan.getRemainingAxioms(source, ax)){ - changes.add(new AddAxiom(ont, remain)); - } - +// List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); +// for(OWLAxiom source : expMan.getSourceAxioms(ax)){ +// impMan.addSelection(source); +// changes.add(new RemoveAxiom(ont, source)); +// for(OWLAxiom remain : expMan.getRemainingAxioms(source, ax)){ +// changes.add(new AddAxiom(ont, remain)); +// } +// +// } + RemainingAxiomsDialog dialog = new RemainingAxiomsDialog(ax, ont); + int ret = dialog.showDialog(); + if(ret == RemainingAxiomsDialog.OK_RETURN_CODE){ + impMan.addSelection(ax); + repMan.addToRepairPlan(dialog.getChanges()); } - repMan.addToRepairPlan(changes); + } else { repMan.addToRepairPlan(new RemoveAxiom(ont, ax)); } @@ -127,8 +145,9 @@ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { - if(columnIndex == 3 || columnIndex == 4) + if(columnIndex == 3 || columnIndex == 4){ return true; + } return false; } @@ -149,6 +168,4 @@ } } - - } 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-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -111,7 +111,7 @@ this.setPreferredSize(new Dimension(540, 260)); - this.repaint(); +// this.repaint(); darkGreen = new Color(0, 100, 0); darkRed = new Color(205, 0, 0); random = new Random(); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -0,0 +1,165 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPanel; + +import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.TaskManager; +import org.semanticweb.owl.model.AddAxiom; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.RemoveAxiom; + +public class RemainingAxiomsDialog extends JDialog implements ActionListener{ + + + /** + * + */ + private static final long serialVersionUID = 8019086232940177286L; + + private JComponent explanationsPanel; + private Set<RemainingAxiomsTable> tables; + + public static final int CANCEL_RETURN_CODE = 0; + public static final int OK_RETURN_CODE = 1; + + private int returnCode; + + @SuppressWarnings("unused") + private JButton okButton = null; + @SuppressWarnings("unused") + private JButton cancelButton = null; + + private List<OWLOntologyChange> changes; + private List<OWLAxiom> sourceAxioms; + + private ExplanationManager expMan; + + private OWLOntology ontology; + + + public RemainingAxiomsDialog(OWLAxiom laconicAxiom, OWLOntology ont){ + super(TaskManager.getInstance().getDialog(), "Selected part of axiom in ontology", true); + setLayout(new BorderLayout()); + + createControls(); + + this.ontology = ont; + + tables = new HashSet<RemainingAxiomsTable>(); + explanationsPanel = new Box(1); + + expMan = ExplanationManager.getInstance(OREManager.getInstance()); + + changes = new ArrayList<OWLOntologyChange>(); + sourceAxioms = new ArrayList<OWLAxiom>(); + + sourceAxioms.addAll(expMan.getSourceAxioms(laconicAxiom)); + + for(OWLAxiom source : sourceAxioms){ + + changes.add(new RemoveAxiom(ont, source)); + List<OWLAxiom> remainingAxioms = new ArrayList<OWLAxiom>(expMan.getRemainingAxioms(source, laconicAxiom)); + RemainingAxiomsTable table = new RemainingAxiomsTable(remainingAxioms); + tables.add(table); + explanationsPanel.add(table); + + } + + add(explanationsPanel, BorderLayout.NORTH); + + + } + + private void createControls() { + Box buttonBox = Box.createHorizontalBox(); + + // Create a panel to hold a box with the buttons in it - to give it the + // right space around them + JPanel buttonPanel = new JPanel(); + buttonPanel.add(buttonBox); + buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + + // Create the buttons and add them to the box (leading strut will give + // the dialog box its width) + buttonBox.add(okButton = createButton("Ok", 'o')); + buttonBox.add(Box.createHorizontalGlue()); + buttonBox.add(Box.createHorizontalStrut(4)); + buttonBox.add(cancelButton = createButton("Cancel", 'c')); + buttonBox.add(Box.createHorizontalStrut(10)); + + // Add the button panel to the bottom of the BorderLayout + getContentPane().add(buttonPanel, BorderLayout.SOUTH); + } + + private JButton createButton(String label, char mnemonic) { + // Create the new button object + JButton newButton = new JButton(label); + newButton.setActionCommand(label); + + newButton.setPreferredSize(new Dimension(90, 30)); + newButton.setMargin(new Insets(2, 2, 2, 2)); + + if (mnemonic != '\0') { + // Specify the button's mnemonic + newButton.setMnemonic(mnemonic); + } + + // Setup the dialog to listen to events + newButton.addActionListener(this); + + return newButton; + } + + public int showDialog(){ + setSize(700, 400); + setVisible(true); + setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + return returnCode; + } + + private void closeDialog() { + setVisible(false); + dispose(); + } + + public List<OWLOntologyChange> getChanges(){ + + for(RemainingAxiomsTable table : tables){ + for(OWLAxiom ax : table.getSelectedAxioms()){ + changes.add(new AddAxiom(ontology, ax)); + } + } + return changes; + } + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("Ok")) { + returnCode = OK_RETURN_CODE; + closeDialog(); + } else { + returnCode = CANCEL_RETURN_CODE; + closeDialog(); + + } + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTable.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -0,0 +1,29 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.util.List; + +import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLAxiom; + +public class RemainingAxiomsTable extends JXTable{ + + /** + * + */ + private static final long serialVersionUID = 8948590659747547909L; + + public RemainingAxiomsTable(List<OWLAxiom> remainingAxioms) { + + setBackground(Color.WHITE); + setModel(new RemainingAxiomsTableModel(remainingAxioms)); + setRowHeight(getRowHeight() + 5); + getColumn(0).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); + getColumn(1).setMaxWidth(30); + } + + public List<OWLAxiom> getSelectedAxioms(){ + return ((RemainingAxiomsTableModel)getModel()).getSelectedAxioms(); + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTableModel.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -0,0 +1,80 @@ +package org.dllearner.tools.ore.ui; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.semanticweb.owl.model.OWLAxiom; + +public class RemainingAxiomsTableModel extends AbstractTableModel { + + /** + * + */ + private static final long serialVersionUID = 7214659543838574629L; + private List<OWLAxiom> remainingAxioms; + private List<Boolean> selectionList; + + public RemainingAxiomsTableModel(List<OWLAxiom> remainingAxioms){ + this.remainingAxioms = remainingAxioms; + selectionList = new ArrayList<Boolean>(remainingAxioms.size()); + for(int i = 0; i < remainingAxioms.size(); i++ ){ + selectionList.add(i, Boolean.FALSE); + } + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public int getRowCount() { + return remainingAxioms.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + return remainingAxioms.get(rowIndex); + } else { + return selectionList.get(rowIndex); + } + } + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + return false; + } + return true; + } + + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + if(columnIndex == 1){ + selectionList.set(rowIndex, (Boolean)value); + } + super.setValueAt(value, rowIndex, columnIndex); + } + + @Override + public Class<?> getColumnClass(int columnIndex) { + if(columnIndex == 0) { + return OWLAxiom.class; + } else { + return Boolean.class; + } + } + + public List<OWLAxiom> getSelectedAxioms(){ + List<OWLAxiom> selectedAxioms = new ArrayList<OWLAxiom>(); + for(int i = 0; i < remainingAxioms.size(); i++){ + if(selectionList.get(i) == Boolean.TRUE){ + selectedAxioms.add(remainingAxioms.get(i)); + } + } + return selectedAxioms; + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -14,7 +14,9 @@ import java.awt.geom.Ellipse2D; import java.util.Set; +import javax.swing.BorderFactory; import javax.swing.Icon; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; @@ -23,7 +25,6 @@ import javax.swing.SwingUtilities; import org.mindswap.pellet.utils.progress.ProgressMonitor; -import org.protege.editor.core.ui.list.MListDeleteButton; import org.semanticweb.owl.model.OWLAxiom; import com.clarkparsia.explanation.util.ExplanationProgressMonitor; @@ -65,8 +66,10 @@ } }); rB.setToolTipText("Abort"); - leftPanel.add(rB); +// leftPanel.add(rB); + leftPanel.add(new Cancel()); + leftPanel.add(progressBar); leftPanel.add(new JSeparator(JSeparator.VERTICAL)); leftPanel.add(infoLabel); @@ -337,5 +340,29 @@ } return shape.contains(x, y); } + + } +class Cancel extends JButton { + + public Cancel() { + super(); + setIcon(new ImageIcon( + "src/dl-learner/org/dllearner/tools/ore/close.png")); + setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + setHorizontalAlignment(JButton.LEADING); // optional + setBorderPainted(false); + setContentAreaFilled(false); + } + + @Override + protected void paintComponent(Graphics g) { + if(getModel().isArmed()){ + g.setColor(Color.YELLOW); + } + super.paintComponent(g); + } + +} + 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-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -21,16 +21,13 @@ package org.dllearner.tools.ore.ui.wizard; -import java.awt.Cursor; import java.awt.event.ActionListener; import java.util.List; import javax.swing.JOptionPane; -import javax.swing.SwingWorker; import org.dllearner.core.owl.Description; import org.dllearner.tools.ore.OREManager; -import org.dllearner.tools.ore.ui.StatusBar; 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; @@ -348,36 +345,4 @@ } - - class ClassificationWorker extends SwingWorker<Void, Void>{ - - private StatusBar statusBar; - - public ClassificationWorker(StatusBar statusBar) { - this.statusBar = statusBar; -// OREManager.getInstance().getPelletReasoner().addProgressMonitor(new ClassificationProgressMonitor()); - - } - - @Override - public Void doInBackground() { - statusBar.showProgress(true); - wizard.getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - - statusBar.setProgressTitle("classifying ontology"); - OREManager.getInstance().getReasoner().classify(); - - return null; - } - - @Override - public void done() { - wizard.getDialog().setCursor(null); - statusBar.showProgress(false); - statusBar.setProgressTitle(""); - } - - } - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -20,7 +20,6 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; -import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; @@ -34,6 +33,7 @@ import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RecentManager; +import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.ui.ExtractFromSparqlDialog; import org.dllearner.tools.ore.ui.LinkLabel; import org.dllearner.tools.ore.ui.StatusBar; @@ -106,7 +106,7 @@ public void loadOntology(URI uri){ OREManager.getInstance().setCurrentKnowledgeSource(uri); currentURI = uri; - + TaskManager.getInstance().setTaskStarted("Loading ontology"); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); } @@ -172,10 +172,11 @@ } private void handleOpenFromRecent(URI uri){ - currentURI = uri; - OREManager.getInstance().setCurrentKnowledgeSource( - uri); - new OntologyLoadingTask(getWizard().getStatusBar()).execute(); +// currentURI = uri; +// OREManager.getInstance().setCurrentKnowledgeSource( +// uri); +// new OntologyLoadingTask(getWizard().getStatusBar()).execute(); + loadOntology(uri); } private void updateMetrics(){ @@ -199,9 +200,7 @@ @Override public Void doInBackground() { getWizard().setNextFinishButtonEnabled(false); - getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - statusBar.showProgress(true); - statusBar.setProgressTitle("Loading ontology"); + try{ oreMan.initPelletReasoner(); RecentManager.getInstance().addURI(currentURI); @@ -261,9 +260,7 @@ @Override public void done() { if(!isCancelled()){ - statusBar.showProgress(false); - statusBar.setProgressTitle("Done"); - getWizard().getDialog().setCursor(null); + TaskManager.getInstance().setTaskFinished(); getWizard().setNextFinishButtonEnabled(true); updateMetrics(); } Modified: 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-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -20,7 +20,6 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; -import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; @@ -39,6 +38,7 @@ 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; @@ -122,6 +122,7 @@ */ public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ + TaskManager.getInstance().setTaskStarted("Learning equivalent class expressions"); learnPanel.getStartButton().setEnabled(false); learnPanel.getStopButton().setEnabled(true); OREManager.getInstance().setNoisePercentage(learnPanel.getOptionsPanel().getMinAccuracy()); @@ -139,7 +140,7 @@ timer.cancel(); learnPanel.getStartButton().setEnabled(true); getWizard().getStatusBar().showProgress(false); - getWizard().getStatusBar().setProgressTitle("learning stopped"); + getWizard().getStatusBar().setProgressTitle("Learning stopped"); } @@ -199,9 +200,7 @@ @Override public List<? extends EvaluatedDescription> doInBackground() { learnPanel.getResultTable().clear(); - getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - getWizard().getStatusBar().showProgress(true); - getWizard().getStatusBar().setProgressTitle("Learning equivalent class expressions"); + la = OREManager.getInstance().getLa(); timer = new Timer(); @@ -240,6 +239,7 @@ learnPanel.getStartButton().setEnabled(true); learnPanel.getStopButton().setEnabled(false); updateList(result); + TaskManager.getInstance().setTaskFinished(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -16,6 +16,7 @@ import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JComponent; +import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -120,9 +121,9 @@ explanationsScrollPane = new JScrollPane(pan); // explanationsScrollPane.setPreferredSize(minimumSize); explanationsScrollPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); - explanationsScrollPane.getViewport().setOpaque(true); + explanationsScrollPane.getViewport().setOpaque(false); explanationsScrollPane.getViewport().setBackground(null); - explanationsScrollPane.setOpaque(true); + explanationsScrollPane.setOpaque(false); regularButton = new JRadioButton("Show regular explanations", true); regularButton.setActionCommand("regular"); @@ -262,4 +263,27 @@ public UnsatisfiableClassesTable getUnsatTable(){ return unsatClassesTable; } + + public static void main(String[] args){ + JFrame frame = new JFrame(); + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); + JSplitPane pane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + pane1.setDividerLocation(200); + JSplitPane pane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + pane2.setDividerLocation(200); + JSplitPane pane3 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + pane1.setLeftComponent(new JPanel()); + pane1.setRightComponent(pane2); + pane2.setTopComponent(new JPanel()); + pane2.setBottomComponent(pane3); + pane3.setLeftComponent(new JPanel()); + pane3.setRightComponent(new JPanel()); + panel.add(pane1); + frame.add(panel); + frame.setSize(400, 400); + frame.setVisible(true); + + + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-14 10:52:00
|
Revision: 1846 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1846&view=rev Author: lorenz_b Date: 2009-09-14 10:51:51 +0000 (Mon, 14 Sep 2009) Log Message: ----------- fixed axiom selection, when source axiom of laconic axiom is scheduled for removal Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -188,6 +188,10 @@ return arity; } + public int getGlobalArity(OWLAxiom ax){ + return gen.getArity(ax); + } + public void setLaconicMode(boolean laconic){ gen.setComputeLaconicExplanations(laconic); fireExplanationTypeChanged(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -19,7 +19,6 @@ import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; -@SuppressWarnings("unused") public class ExplanationTest { // private static final String file = "file:examples/ore/inconsistent.owl"; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -88,6 +88,10 @@ fireImpactListChanged(); } + public void addSelection(List<OWLAxiom> axioms){ + selectedAxioms.addAll(axioms); + } + public void removeSelection(OWLAxiom ax){ selectedAxioms.remove(ax); fireImpactListChanged(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -68,6 +68,24 @@ public Set<Explanation> getExplanations(OWLAxiom entailment){ return getExplanations(entailment, -1); } + + public int getArity(OWLAxiom axiom){ + int arity = 0; + Map<OWLAxiom, Set<Explanation>> cache; + if(laconicMode == true){ + cache = laconicExplanationCache; + } else { + cache = regularExplanationCache; + } + for(Set<Explanation> explanations : cache.values()){ + for(Explanation exp : explanations){ + if(exp.getAxioms().contains(axiom)){ + arity++; + } + } + } + return arity; + } @Override public Set<Explanation> getExplanations(OWLAxiom entailment, int limit){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -1,26 +1,14 @@ package org.dllearner.tools.ore.ui; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.Insets; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JPanel; import javax.swing.table.AbstractTableModel; import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.ImpactManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; -import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.explanation.Explanation; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; @@ -64,16 +52,16 @@ @Override public Object getValueAt(int rowIndex, int columnIndex) { + OWLAxiom ax = getOWLAxiomAtRow(rowIndex); if(columnIndex == 0){ - OWLAxiom ax = getOWLAxiomAtRow(rowIndex); int depth2Root = expMan.getOrdering(exp).get(rowIndex).values().iterator().next(); return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root); } else if(columnIndex == 1){ - return expMan.getArity(unsat, getOWLAxiomAtRow(rowIndex)); + return expMan.getGlobalArity(ax);//getArity(unsat, getOWLAxiomAtRow(rowIndex)); } else if(columnIndex == 2) { - return expMan.getUsage(getOWLAxiomAtRow(rowIndex)).size(); + return expMan.getUsage(ax).size(); } else if(columnIndex == 3){ - return Boolean.valueOf(impMan.isSelected(getOWLAxiomAtRow(rowIndex))); + return Boolean.valueOf(impMan.isSelected(ax)); } else { return "rewrite"; } @@ -116,7 +104,8 @@ int ret = dialog.showDialog(); if(ret == RemainingAxiomsDialog.OK_RETURN_CODE){ impMan.addSelection(ax); - repMan.addToRepairPlan(dialog.getChanges()); + List<OWLOntologyChange> changes = dialog.getChanges(); + repMan.addToRepairPlan(changes); } } else { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -15,9 +15,11 @@ import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; +import javax.swing.JLabel; import javax.swing.JPanel; import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.ImpactManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.TaskManager; import org.semanticweb.owl.model.AddAxiom; @@ -51,6 +53,7 @@ private List<OWLAxiom> sourceAxioms; private ExplanationManager expMan; + private ImpactManager impMan; private OWLOntology ontology; @@ -58,7 +61,7 @@ public RemainingAxiomsDialog(OWLAxiom laconicAxiom, OWLOntology ont){ super(TaskManager.getInstance().getDialog(), "Selected part of axiom in ontology", true); setLayout(new BorderLayout()); - + add(new JLabel("You selected an axiom which is only part of some axioms in the ontology"), BorderLayout.NORTH); createControls(); this.ontology = ont; @@ -67,6 +70,7 @@ explanationsPanel = new Box(1); expMan = ExplanationManager.getInstance(OREManager.getInstance()); + impMan = ImpactManager.getInstance(OREManager.getInstance()); changes = new ArrayList<OWLOntologyChange>(); sourceAxioms = new ArrayList<OWLAxiom>(); @@ -83,7 +87,7 @@ } - add(explanationsPanel, BorderLayout.NORTH); + add(explanationsPanel, BorderLayout.CENTER); } @@ -154,6 +158,7 @@ public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Ok")) { returnCode = OK_RETURN_CODE; + impMan.addSelection(sourceAxioms); closeDialog(); } else { returnCode = CANCEL_RETURN_CODE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-14 11:24:29
|
Revision: 1847 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1847&view=rev Author: lorenz_b Date: 2009-09-14 11:24:20 +0000 (Mon, 14 Sep 2009) Log Message: ----------- fixed missing axiom selection in explanation tables, when axiom is not laconic Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-14 10:51:51 UTC (rev 1846) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-14 11:24:20 UTC (rev 1847) @@ -135,8 +135,5 @@ fireImpactListChanged(); } - - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 10:51:51 UTC (rev 1846) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 11:24:20 UTC (rev 1847) @@ -109,6 +109,7 @@ } } else { + impMan.addSelection(ax); repMan.addToRepairPlan(new RemoveAxiom(ont, ax)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-14 12:26:17
|
Revision: 1849 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1849&view=rev Author: lorenz_b Date: 2009-09-14 12:26:04 +0000 (Mon, 14 Sep 2009) Log Message: ----------- fixed bug in explanation generator, wrong set of explanations was returned Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-14 11:43:37 UTC (rev 1848) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-14 12:26:04 UTC (rev 1849) @@ -179,7 +179,7 @@ } Set<Explanation> explanations = new HashSet<Explanation>(); - for (Explanation explanation : allPreviouslyFoundExplanations) { + for (Explanation explanation : allPreviouslyFoundExplanations) {System.out.println(explanation); if (!nonLaconicExplanations.contains(explanation)) { if (laconicExplanations.contains(explanation)) { explanations.add(explanation); @@ -189,7 +189,7 @@ } } - return laconicExplanations;//retrieveAxioms(explanations); + return explanations;//retrieveAxioms(explanations); } public boolean isLaconic(Explanation explanation) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties 2009-09-14 11:43:37 UTC (rev 1848) +++ trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties 2009-09-14 12:26:04 UTC (rev 1849) @@ -1,5 +1,6 @@ log4j.rootLogger=INFO, A log4j.logger.org.dllearner.tools.ore.explanation = DEBUG, A +log4j.logger.org.dllearner.tools.ore.explanation.HSTExplanationGenerator = INFO, A log4j.appender.A=org.apache.log4j.ConsoleAppender log4j.appender.A.layout=org.apache.log4j.PatternLayout log4j.appender.A.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java 2009-09-14 11:43:37 UTC (rev 1848) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java 2009-09-14 12:26:04 UTC (rev 1849) @@ -1,117 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.Cursor; -import java.awt.Dimension; - -import javax.swing.JPanel; -import javax.swing.JProgressBar; -import javax.swing.SwingUtilities; - -import org.mindswap.pellet.utils.progress.ProgressMonitor; - -public class ClassificationProgressMonitor extends JPanel implements ProgressMonitor{ - - /** - * - */ - private static final long serialVersionUID = -4913267621100462227L; - private javax.swing.ProgressMonitor monitor; - private JProgressBar progressBar; - private String progressMessage = ""; - private String progressTitle = ""; - private int progress = 0; - private int progressLength = 0; - private int progressPercent = -1; - private long startTime = -1; - private boolean canceled = false; - - - public ClassificationProgressMonitor(){ - super(); - monitor = new javax.swing.ProgressMonitor(this, progressTitle, progressMessage, 0 ,progressLength); - progressBar = new JProgressBar(0, progressLength); - progressBar.setValue(progress); - progressBar.setStringPainted(true); - add(progressBar); - setSize(new Dimension(200, 200)); - - } - - @Override - public int getProgress() { - return progress; - } - - @Override - public int getProgressPercent() { - return progressPercent; - } - - @Override - public void incrementProgress() { - setProgress(progress + 1); - - } - - @Override - public boolean isCanceled() { - return monitor.isCanceled(); - } - - @Override - public void setProgress(int progress) { - this.progress = progress; - updateProgress(); - - } - - @Override - public void setProgressLength(int length) { - progressLength = length; - monitor.setMaximum(length); - progressBar.setMaximum(length); - - } - - @Override - public void setProgressMessage(String message) { - progressMessage = message; - monitor.setNote(message); - - } - - @Override - public void setProgressTitle(String title) { - progressTitle = title; - - } - - @Override - public void taskFinished() { - monitor.close(); - setCursor(null); - - } - - @Override - public void taskStarted() { - setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - - } - - private void updateProgress(){ - SwingUtilities.invokeLater(new Runnable(){ - - @Override - public void run() { - monitor.setProgress(progress); - progressBar.setValue(progress); - - } - - }); - } - - - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-20 14:45:51
|
Revision: 1853 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1853&view=rev Author: lorenz_b Date: 2009-09-20 14:45:41 +0000 (Sun, 20 Sep 2009) Log Message: ----------- fixed bug in Sparql extraction - choosing predefined filter "YAGO" seems to fail into an exception when testing it for DPPEDIA endpoint Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -32,7 +32,7 @@ } public void addURI(URI uri){ - if(!uriList.contains(uri)){ + if(uri != null && !uriList.contains(uri)){ uriList.add(uri); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -96,13 +96,11 @@ SparqlKnowledgeSource ks = cm.knowledgeSource(SparqlKnowledgeSource.class); cm.applyConfigEntry(ks, "predefinedEndpoint", "DBPEDIA"); ks.getConfigurator().setInstances(instances); - ks.getConfigurator().setPredefinedFilter("YAGO"); -// ks.getConfigurator().setSaveExtractedFragment(true); +// ks.getConfigurator().setPredefinedFilter("YAGO"); ks.init(); ReasonerComponent reasoner = cm.reasoner(FastInstanceChecker.class, ks); reasoner.init(); ClassLearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); -// lp.getConfigurator().setPositiveExamples(posExamples); lp.getConfigurator().setClassToDescribe(new URL(exampleClass)); lp.init(); LearningAlgorithm la = cm.learningAlgorithm(CELOE.class, lp, reasoner); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -32,12 +32,13 @@ public static void main(String[] args) { - - test(); - miniTest(); + +// test(); +// miniTest(); miniEconomyTest(); - universityTest(); +// universityTest(); } + public static void test(){ String file = "file:/home/lorenz/neu.owl"; @@ -66,9 +67,6 @@ } catch (OWLOntologyCreationException e) { // TODO Auto-generated catch block e.printStackTrace(); - } catch (OWLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); } } @@ -78,61 +76,35 @@ try { OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); - PrintWriter pw = new PrintWriter(System.out); - renderer.startRendering(pw); - - OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); - Set<OWLOntology> ontologies = new HashSet<OWLOntology>(); - ontologies.add(ontology); + PelletReasonerFactory resonerFact = new PelletReasonerFactory(); OWLDataFactory dataFactory = manager.getOWLDataFactory(); - - ////////////////////HermiT test -// HermiTReasonerFactory f = new HermiTReasonerFactory(); -// HermitReasoner re = (HermitReasoner) f.createReasoner(manager); -// re.loadOntologies(ontologies); -// Timer t1 = new Timer("classifying"); -// t1.start(); -// re.classify(); -// t1.stop(); -// re.realise(); -// System.out.println("HermiT" + re.getInconsistentClasses()); - ////////////////////////////// Reasoner reasoner = resonerFact.createReasoner(manager); - reasoner.loadOntologies(ontologies); - SwingProgressMonitor monitor = new SwingProgressMonitor(); - reasoner.getKB().getTaxonomyBuilder().setProgressMonitor(monitor); + reasoner.loadOntology(ontology); + reasoner.classify(); System.out.println(reasoner.getInconsistentClasses()); LaconicExplanationGenerator expGen = new LaconicExplanationGenerator( - manager, resonerFact, ontologies); + manager, resonerFact, Collections.singleton(ontology)); - - - - Set<OWLClass> unsatClasses = reasoner.getInconsistentClasses(); OWLSubClassAxiom unsatAxiom; - unsatAxiom = dataFactory.getOWLSubClassAxiom(dataFactory.getOWLClass(URI.create("http://reliant.teknowledge.com/DAML/Economy.owl#Cassava")), - dataFactory.getOWLNothing()); -// for (OWLClass unsat : unsatClasses) { -// unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory -// .getOWLNothing()); -// Set<Set<OWLAxiom>> preciseJusts = expGen -// .getExplanations(unsatAxiom); -// renderer.render(unsatAxiom, preciseJusts); -// } - Set<Explanation> preciseJusts = expGen.getExplanations(unsatAxiom); -// renderer.render(unsatAxiom, preciseJusts); - renderer.endRendering(); + for (OWLClass unsat : unsatClasses) { + unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory + .getOWLNothing()); + Set<Explanation> explanations = expGen + .getExplanations(unsatAxiom); + System.out.println(explanations); + } + + } catch (OWLOntologyCreationException e) { // TODO Auto-generated catch block e.printStackTrace(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -1,6 +1,7 @@ package org.dllearner.tools.ore.ui; import java.awt.BorderLayout; +import java.awt.Cursor; import java.awt.Dialog; import java.awt.Dimension; import java.awt.GridBagConstraints; @@ -50,7 +51,6 @@ import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.utilities.datastructures.SetManipulation; -import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; public class ExtractFromSparqlDialog extends JDialog implements ActionListener, PropertyChangeListener, DocumentListener { @@ -94,7 +94,7 @@ private Map<URL, List<String>> endpointToDefaultGraph; public ExtractFromSparqlDialog(Dialog owner) { - super(owner, "Extract fragment from Sparql-endpoint", true); + super(owner, "Extract fragment from SPARQL endpoint", true); // Create the controls createControls(); @@ -143,7 +143,7 @@ JPanel endPointHolderPanel = new JPanel(); endPointHolderPanel.setLayout(new GridLayout(0, 1)); - endPointHolderPanel.setBorder(new TitledBorder("Sparql endpoint")); + endPointHolderPanel.setBorder(new TitledBorder("SPARQL endpoint")); comboBox = new JComboBox(); comboBox.setEditable(true); comboBox.setActionCommand("endpoints"); @@ -160,7 +160,7 @@ JPanel classHolderPanel = new JPanel(); classHolderPanel.setLayout(new GridLayout(0, 1)); - classHolderPanel.setBorder(new TitledBorder("Class to learn")); + classHolderPanel.setBorder(new TitledBorder("Class to investigate")); asLabelButton = new JRadioButton("label"); asURLButton = new JRadioButton("URI"); asURLButton.setSelected(true); @@ -297,21 +297,27 @@ } private void extract() { - if(urlIsConnectable()){ - message.setText(""); - mon = new ProgressMonitor(this, "Extracting fragment", "", 0, 100); - extractTask = new OntologyExtractingTask(mon); - extractTask.addPropertyChangeListener(this); - extractTask.execute(); - } else { - message.setText("<html><font color=\"red\">Could not connect to endpoint</html>"); - } + message.setText("Checking SPARQL endpoint availability"); + setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + mon = new ProgressMonitor(this, "Extracting fragment", "", 0, 100); + + extractTask = new OntologyExtractingTask(this, mon); + extractTask.addPropertyChangeListener(this); + extractTask.execute(); + } private boolean urlIsConnectable() - { + { + + URL url = null; try { +// List<String> defaultGraphURIS = new ArrayList<String>(1); +// defaultGraphURIS.add(defaultGraphField.getText()); +// SparqlEndpoint endpoint = new SparqlEndpoint(new URL(comboBox.getSelectedItem().toString()), defaultGraphURIS, Collections.<String>emptyList()); +// url = new URL(endpoint.getHTTPRequest() + "SELECT * WHERE {?s ?p ?o} LIMIT 1"); url = new URL((String)comboBox.getSelectedItem()); } catch (MalformedURLException e1) { // TODO Auto-generated catch block @@ -368,13 +374,23 @@ class OntologyExtractingTask extends SwingWorker<Void, Void>{ private ProgressMonitor mon; + private JDialog dialog; - public OntologyExtractingTask(ProgressMonitor mon) { - this.mon = mon; + public OntologyExtractingTask(JDialog dialog, ProgressMonitor mon) { + this.mon = mon; + this.dialog = dialog; } @Override public Void doInBackground() { + if(urlIsConnectable()){ + message.setText("Successfully connected to SPARQL endpoint"); + + } else { + message.setText("<html><font color=\"red\">Could not connect to SPARQL endpoint</html>"); + cancel(true); + } + ComponentManager cm = ComponentManager.getInstance(); URL endpointURL = null; try { @@ -387,27 +403,33 @@ defaultGraphURIS.add(defaultGraphField.getText()); SparqlEndpoint endpoint = new SparqlEndpoint(endpointURL, defaultGraphURIS, Collections.<String>emptyList()); task = new SPARQLTasks(endpoint); - String classKBString; + String concept; if(asLabelButton.isSelected()){ - classKBString = "\"" + getClassFromLabel() + "\""; + concept = getClassFromLabel(); } else { - classKBString = "\"" + classField.getText() +"\""; + concept = classField.getText(); } +// String classKBString; +// if(asLabelButton.isSelected()){ +// classKBString = "\"" + getClassFromLabel() + "\""; +// } else { +// classKBString = "\"" + classField.getText() +"\""; +// } - AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL( - task); - pos.makePositiveExamplesFromConcept(classKBString); +// AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL( +// task); +// pos.makePositiveExamplesFromConcept(classKBString); - SortedSet<String> allPosExamples = pos.getPosExamples(); + SortedSet<String> allPosExamples = getPosExamples(concept);//pos.getPosExamples(); SortedSet<String> posExamples = SetManipulation.stableShrink( allPosExamples, 20); - + System.out.println(posExamples); SortedSet<String> instances = new TreeSet<String>(posExamples); ks = cm.knowledgeSource(SparqlKnowledgeSource.class); - ks.getConfigurator().setUrl(SparqlEndpoint.getEndpointDBpedia().getURL()); + ks.getConfigurator().setUrl(endpoint.getURL()); ks.getConfigurator().setInstances(instances); - ks.getConfigurator().setPredefinedFilter("YAGO"); +// ks.getConfigurator().setPredefinedFilter("YAGO"); ks.getConfigurator().setBreakSuperClassRetrievalAfter(optionsPanel.getBreakSuperClassRetrievalAfterValue()); ks.getConfigurator().setRecursionDepth(optionsPanel.getRecursionDepthValue()); ks.getConfigurator().setUseCache(optionsPanel.isUseCache()); @@ -418,7 +440,7 @@ ks.getConfigurator().setGetPropertyInformation(optionsPanel.isGetPropertyInformation()); ks.getConfigurator().setCloseAfterRecursion(optionsPanel.isCloseAfterRecursion()); ks.addProgressMonitor(mon); - + ks.getConfigurator().setSaveExtractedFragment(true); ks.init(); return null; @@ -426,12 +448,25 @@ @Override public void done() { - + dialog.setCursor(null); if(!isCancelled() && ks != null){ okButton.setEnabled(true); message.setText("<html><font color=\"green\">Fragment successfully extracted</html>"); + } } + + private SortedSet<String> getPosExamples(String concept){ + SortedSet<String> examples = new TreeSet<String>(); + SortedSet<String> superClasses = task.getSuperClasses(concept, 2); + + for (String sup : superClasses) { + examples.addAll(task.retrieveInstancesForClassDescription("\"" + + sup + "\"", 20)); + + } + return examples; + } } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |