From: <lor...@us...> - 2008-07-06 19:54:35
|
Revision: 1003 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1003&view=rev Author: lorenz_b Date: 2008-07-06 12:54:28 -0700 (Sun, 06 Jul 2008) Log Message: ----------- added some modifications to go back in wizard and undo changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.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/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.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 Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/MoveMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/Neu_006.gif Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -17,15 +17,14 @@ private static final long serialVersionUID = -7538532926820669891L; public ChangesPanel(){ - super(new GridLayout(0, 1)); + super(); + setLayout(new GridLayout(0, 1)); setBackground(Color.WHITE); setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); } - public void init(){ -// setBorder(new TitledBorder("changes")); - } + public void updatePanel(Container cont){ remove(cont); Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -1,117 +0,0 @@ -package org.dllearner.tools.ore; - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.Insets; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JList; -import javax.swing.JPanel; -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; - -public class ChooseDialog extends JDialog implements ActionListener{ - - /** - * - */ - private static final long serialVersionUID = -3554461981184458137L; - - - ORE ore; - DefaultListModel model; - JList list; - private JButton okButton; - private JButton cancelButton; - private Object selectedElement; - private Object chooseValue; - - public ChooseDialog(JDialog parent, ORE ore, Object chooseValue){ - super(parent, true); - this.ore = ore; - this.chooseValue = chooseValue; - init(); - - - } - - public void init(){ - setSize(new Dimension(400, 400)); - setLayout(new BorderLayout()); - - model = new DefaultListModel(); - System.out.println(chooseValue.getClass()); - if(chooseValue instanceof Description){ - setTitle("select object for property"); - for(Individual ind : ore.getIndividualsOfPropertyRange((ObjectQuantorRestriction)chooseValue)) - model.addElement(ind); - } - else if(chooseValue instanceof Individual){ - setTitle("choose new class"); - for(NamedClass nc : ore.getpossibleMoveClasses((Individual)chooseValue)) - model.addElement(nc); - } - - - list = new JList(model); - - okButton = new JButton("Ok"); - cancelButton = new JButton("Cancel"); - okButton.addActionListener(this); - cancelButton.addActionListener(this); - - - - JPanel buttonPanel = new JPanel(); - JSeparator separator = new JSeparator(); - Box buttonBox = new Box(BoxLayout.X_AXIS); - buttonPanel.setLayout(new BorderLayout()); - buttonPanel.add(separator, BorderLayout.NORTH); - - buttonBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10))); - buttonBox.add(okButton); - buttonBox.add(Box.createHorizontalStrut(10)); - buttonBox.add(cancelButton); - buttonPanel.add(buttonBox, java.awt.BorderLayout.EAST); - - getContentPane().add(list, BorderLayout.CENTER); - getContentPane().add(buttonPanel, BorderLayout.SOUTH); - - setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); - setModal(true); - setVisible(true); - - - } - - public Object getSelectedElement(){ - return selectedElement; - } - - - public void actionPerformed(ActionEvent e) { - if(e.getSource().equals(okButton)){ - selectedElement = list.getSelectedValue(); - setVisible(false); - dispose(); - } - else if(e.getSource().equals(cancelButton)){ - selectedElement = null; - setVisible(false); - dispose(); - } - - } - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -15,6 +15,7 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.Negation; import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.core.owl.Thing; public class DescriptionLabel extends JLabel implements MouseListener{ /** @@ -31,28 +32,8 @@ this.desc = d; setForeground(Color.red); addMouseListener(this); -// menu = new JPopupMenu(); -// if(!(desc instanceof Negation)){ -// if(desc instanceof NamedClass){ -// menu.add(new DescriptionMenuItem("remove class assertion " + desc.toString(), desc) ); -// DescriptionMenuItem dme = new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc); -// for(NamedClass nc : ore.getpossibleMoveClasses(ind)) -// dme.add(new JMenuItem(nc.getName())); -// menu.add(dme); -//// menu.add(new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc)); -// } -// else if(desc instanceof ObjectSomeRestriction) -// menu.add(new DescriptionMenuItem("remove property assertion " + desc.toString(), desc)); -// } -// else if(desc instanceof Negation){ -// if(desc.getChild(0) instanceof NamedClass) -// menu.add(new DescriptionMenuItem("add class assertion to " + desc.getChild(0).toString(), desc.getChild(0))); -// else if(desc.getChild(0) instanceof ObjectSomeRestriction) -// menu.add(new DescriptionMenuItem("add property " + d.toString(), desc.getChild(0))); -// } + - - } public void init(){ @@ -62,12 +43,24 @@ menu.add(new DescriptionMenuItem("remove class assertion " + desc.toString(), desc) ); JMenu dme = new JMenu("move class assertion " + desc.toString() + " to ..."); for(NamedClass nc : ore.getpossibleMoveClasses(ind)) - dme.add(new DescriptionMenuItem(nc.getName(), desc)); + dme.add(new MoveMenuItem((NamedClass)desc, nc)); menu.add(dme); // menu.add(new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc)); } - else if(desc instanceof ObjectSomeRestriction) - menu.add(new DescriptionMenuItem("remove property assertion " + desc.toString(), desc)); + else if(desc instanceof ObjectSomeRestriction){ + menu.add(new DescriptionMenuItem("remove property " + ((ObjectSomeRestriction)desc).getRole(), desc)); + System.out.println(desc.getChild(0).getClass()); + if (!(desc.getChild(0) instanceof Thing)) { + JMenu dme = new JMenu("add property assertion " + + ((ObjectSomeRestriction) desc).getRole() + + " with object ..."); + for (Individual i : ore.getIndividualsNotOfPropertyRange( + (ObjectSomeRestriction) desc, ind)) + dme.add(new DescriptionMenuItem(i.getName(), desc + .getChild(0))); + menu.add(dme); + } + } } else if(desc instanceof Negation){ if(desc.getChild(0) instanceof NamedClass){ @@ -78,8 +71,12 @@ item.setToolTipText("class assertion not possible because individual is still asserted to its complement"); } } - else if(desc.getChild(0) instanceof ObjectSomeRestriction) - menu.add(new DescriptionMenuItem("add property " + desc.toString(), desc.getChild(0))); + else if(desc.getChild(0) instanceof ObjectSomeRestriction){ + JMenu dme = new JMenu("add property " + desc.toString() + " with object ..."); + for(Individual i : ore.getIndividualsOfPropertyRange((ObjectSomeRestriction)desc.getChild(0), ind)) + dme.add(new DescriptionMenuItem(i.getName(), desc.getChild(0))); + menu.add(dme); + } } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -13,13 +13,17 @@ Description desc; + public DescriptionMenuItem(String text, Description d){ super(text); this.desc = d; } + public Description getDescription(){ return desc; } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -3,18 +3,19 @@ import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionListener; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; import java.awt.geom.Ellipse2D; import java.awt.geom.RoundRectangle2D; +import java.util.Dictionary; +import java.util.Hashtable; +import javax.swing.BoxLayout; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.JTextField; +import javax.swing.JSlider; import javax.swing.event.ListSelectionListener; import org.jdesktop.swingx.JXBusyLabel; @@ -36,15 +37,17 @@ private JButton startButton; private JButton stopButton; - private JTextField noiseField; + private JSlider noiseSlider; - @SuppressWarnings("unchecked") + public LearningPanel() { super(); model = new DefaultListModel(); - + JPanel eastPanel = new JPanel(); + eastPanel.setLayout(new BoxLayout(eastPanel, BoxLayout.Y_AXIS)); + JPanel buttonPanel = new JPanel(); startButton = new JButton("Start"); stopButton = new JButton("Stop"); @@ -52,12 +55,29 @@ buttonPanel.add(startButton); buttonPanel.add(stopButton); + JPanel noisePanel = new JPanel(); + noisePanel.setLayout(new BoxLayout(noisePanel, BoxLayout.Y_AXIS)); + noiseSlider = new JSlider(0, 100, 0); + noiseSlider.setPaintTicks(true); + 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 ); + noiseSlider.setPaintLabels(true); + noisePanel.add(new JLabel("noise")); + noisePanel.add(noiseSlider); - JPanel labelPanel = new JPanel(); + eastPanel.add(buttonPanel); + eastPanel.add(noisePanel); + + JPanel statusPanel = new JPanel(); statusLabel = new JLabel(); loadingLabel = new JXBusyLabel(new Dimension(15,15)); - BusyPainter painter = new BusyPainter( + 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)); painter.setTrailLength(2); @@ -66,15 +86,15 @@ loadingLabel.setPreferredSize(new Dimension(15,15)); loadingLabel.setIcon(new EmptyIcon(15,15)); loadingLabel.setBusyPainter(painter); - labelPanel.add(loadingLabel); - labelPanel.add(statusLabel); + statusPanel.add(loadingLabel); + statusPanel.add(statusLabel); contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); - add(buttonPanel, BorderLayout.EAST); + add(eastPanel, BorderLayout.EAST); add(contentPanel,BorderLayout.CENTER); - add(labelPanel, BorderLayout.SOUTH); + add(statusPanel, BorderLayout.SOUTH); } private JPanel getContentPanel() { @@ -87,31 +107,10 @@ // resultList.setCellRenderer(new ColumnListCellRenderer()); scroll.setPreferredSize(new Dimension(900, 400)); scroll.setViewportView(resultList); - - noiseField = new JTextField("noise"); - noiseField.setText("0.0"); - - - noiseField.addKeyListener(new KeyAdapter() { - @Override - public void keyTyped(KeyEvent e) { - char c = e.getKeyChar(); - if (!((Character.isDigit(c) || - (c == KeyEvent.VK_BACK_SPACE) || - (c == KeyEvent.VK_DELETE)))) { - getToolkit().beep(); - e.consume(); - } - - } - }); - + contentPanel1.add(scroll); - contentPanel1.add(noiseField); - - - - + + return contentPanel1; } @@ -152,7 +151,7 @@ } public double getNoise(){ - return Double.parseDouble(noiseField.getText()); + return noiseSlider.getValue(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -4,6 +4,7 @@ import java.awt.event.ActionListener; import java.util.List; import java.util.Timer; +import java.util.TimerTask; import java.util.concurrent.ExecutionException; import javax.swing.SwingUtilities; @@ -13,7 +14,6 @@ import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.owl.Description; -import org.dllearner.core.owl.ObjectSomeRestriction; @@ -52,11 +52,13 @@ - class ResultSwingWorker extends - SwingWorker<List<Description>, List<Description>> { - LearningAlgorithm la; - - + class ResultSwingWorker extends SwingWorker<List<Description>, List<Description>> { + + LearningAlgorithm la; + Thread t; + + + @SuppressWarnings("unchecked") @Override public List<Description> doInBackground() { @@ -65,14 +67,43 @@ panel4.getLoadingLabel().setBusy(true); panel4.getStatusLabel().setText("Learning"); getWizardModel().getOre().setNoise(panel4.getNoise()); + la = getWizardModel().getOre().getLa(); + timer = new Timer(); + timer.schedule(new TimerTask(){ + + @Override + public void run() { + if(la != null){ + + System.out.println(scheduledExecutionTime()-System.currentTimeMillis()); + publish(la.getCurrentlyBestDescriptions(10, true)); + } + } + + }, 1000, 1000); + t = new Thread(new Runnable(){ + + @Override + public void run() { + + la.start(); + } + + }); + t.setPriority(Thread.MIN_PRIORITY); + t.start(); - la = getWizardModel().getOre().start();//started endlosen Algorithmus - publish(la.getCurrentlyBestDescriptions(10)); +// publish(la.getCurrentlyBestDescriptions(10, true)); - - List<Description> result = getWizardModel().getOre().getLearningResults(100); + try { + t.join(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + List<Description> result = getWizardModel().getOre().getLearningResults(10); return result; } @@ -163,6 +194,7 @@ public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ + panel4.getModel().clear(); panel4.getStartButton().setEnabled(false); panel4.getStopButton().setEnabled(true); worker = new ResultSwingWorker(); @@ -172,9 +204,11 @@ canceled = true; panel4.getStopButton().setEnabled(false); getWizardModel().getOre().getLa().stop(); - panel4.getStartButton().setEnabled(true); + timer.cancel(); + panel4.getStartButton().setEnabled(true); panel4.getStatusLabel().setText("Algorithm aborted"); panel4.getLoadingLabel().setBusy(false); + } @@ -189,15 +223,8 @@ for(Description d: getWizardModel().getOre().getAllChildren((Description)(panel4.getResultList().getSelectedValue()))){ System.out.println(d + " : " + d.getClass()); - if(d instanceof ObjectSomeRestriction){ - - - getWizardModel().getOre().getIndividualsOfPropertyRange((ObjectSomeRestriction)d); - - - - } + } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/MoveMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/MoveMenuItem.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/MoveMenuItem.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -0,0 +1,30 @@ +package org.dllearner.tools.ore; + +import javax.swing.JMenuItem; + +import org.dllearner.core.owl.NamedClass; + +public class MoveMenuItem extends JMenuItem{ + + /** + * + */ + private static final long serialVersionUID = 7912723521355039174L; + NamedClass source; + NamedClass target; + + public MoveMenuItem(NamedClass source, NamedClass target){ + super(target.getName()); + this.source = source; + this.target = target; + } + + public NamedClass getSource(){ + return source; + } + + public NamedClass getTarget(){ + return target; + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -8,12 +8,15 @@ import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.util.HashSet; import java.util.List; +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; @@ -22,6 +25,7 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.ObjectSomeRestriction; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.RemoveAxiom; @@ -44,14 +48,14 @@ private JButton okButton; private JButton cancelButton; - - + private ORE ore; private Individual ind; // private OWLAPIReasoner reasoner; private Description actualDesc; private Description newDesc; // private Individual object; + private Set<OWLOntologyChange> allChanges; public NegExampleRepairDialog(Individual ind, JDialog dialog, ORE ore){ @@ -59,28 +63,29 @@ this.ind = ind; this.ore = ore; // this.reasoner = ore.reasoner2; + allChanges = new HashSet<OWLOntologyChange>(); init(); } public void init(){ + setSize(700, 700); setLayout(new BorderLayout()); descPanel = new DescriptionPanel(ore, ind, this); + JScrollPane descScroll = new JScrollPane(); + descScroll.setViewportView(descPanel); - statsPanel = new StatsPanel(ore, ind); statsPanel.init(); - JScrollPane scroll = new JScrollPane(); - scroll.setViewportView(statsPanel); + JScrollPane statsScroll = new JScrollPane(); + statsScroll.setViewportView(statsPanel); changesPanel = new ChangesPanel(); - changesPanel.init(); - JButton deleteButton = new JButton("delete"); - deleteButton.addActionListener(this); - changesPanel.add(deleteButton); - + JScrollPane changesScroll = new JScrollPane(); + changesScroll.setViewportView(changesPanel); + action_stats_Panel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); @@ -91,9 +96,9 @@ action_stats_Panel.setLayout(gbl); - action_stats_Panel.add(descPanel, 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(scroll, 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(changesPanel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); + 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)); JSeparator separator = new JSeparator(); @@ -103,9 +108,10 @@ ok_cancelPanel.setLayout(new BorderLayout()); ok_cancelPanel.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); @@ -128,50 +134,73 @@ if(e.getSource() instanceof DescriptionMenuItem){ actualDesc = ((DescriptionMenuItem)e.getSource()).getDescription(); - + System.out.println(e.getActionCommand()); if(e.getActionCommand().startsWith("remove class")){ //remove class List<OWLOntologyChange> changes = ore.modi.removeClassAssertion(ind, actualDesc); + allChanges.addAll(changes); descPanel.updatePanel(); + statsPanel.updatePanel("remove", actualDesc); changesPanel.add(new ChangePanel("removed class assertion to " + actualDesc, changes, this)); } else if(e.getActionCommand().startsWith("add class")){ //add class List<OWLOntologyChange> changes = ore.modi.addClassAssertion(ind, actualDesc); + allChanges.addAll(changes); descPanel.updatePanel(); changesPanel.add(new ChangePanel("added class assertion to " + actualDesc, changes, this)); - - - } - else{ //move class - - newDesc = new NamedClass(e.getActionCommand()); - List<OWLOntologyChange> changes = ore.modi.moveIndividual(ind, actualDesc, newDesc); - descPanel.updatePanel(); - changesPanel.add(new ChangePanel("moved class assertion from " + actualDesc + " to " + newDesc, changes, this)); } + else if(e.getActionCommand().startsWith("add property")){ //add property + Individual ind = new Individual(e.getActionCommand()); + List<OWLOntologyChange> changes = ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, ind); + System.out.println("ghhfhg"); + allChanges.addAll(changes); + descPanel.updatePanel(); + changesPanel.add(new ChangePanel("added property assertion " + ((ObjectSomeRestriction)actualDesc).getRole() + " to " + ind, changes, this)); + } +// else if(e.getActionCommand().startsWith("remove property")){ //delete property +// ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); +// } + }else if(e.getSource() instanceof MoveMenuItem){ + actualDesc = ((MoveMenuItem)e.getSource()).getSource(); + newDesc = new NamedClass(e.getActionCommand()); + List<OWLOntologyChange> changes = ore.modi.moveIndividual(ind, actualDesc, newDesc); + allChanges.addAll(changes); + descPanel.updatePanel(); + statsPanel.updatePanel("remove", actualDesc); + changesPanel.add(new ChangePanel("moved class assertion from " + actualDesc + " to " + newDesc, changes, this)); } + + else if(e.getActionCommand().equals("delete")){ List<OWLOntologyChange> changes = ore.modi.deleteIndividual(ind); + allChanges.addAll(changes); for(OWLOntologyChange ol : changes) System.out.println(((RemoveAxiom)ol).getAxiom()); } + else if(e.getActionCommand().equals("Ok")){ + } + else if(e.getActionCommand().equals("Cancel")){ + if (JOptionPane.showConfirmDialog(this, + "All changes will be lost!", "Warning!", + JOptionPane.YES_NO_OPTION) + == JOptionPane.YES_OPTION){ + ore.modi.undoChanges(allChanges); + allChanges.clear(); + setVisible(false); + dispose(); + } + } + + } -// else if(e.getActionCommand().equals("add property")){ //add property -// object = (Individual)new ChooseDialog(this, ore, actualDesc).getSelectedElement(); -// if(object != null) -// ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, object); -// } -// else if(e.getActionCommand().equals("remove property")){ //delete property -// ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); -// } -// } + public void mouseClicked(MouseEvent e) { if(e.getSource() instanceof UndoLabel){ @@ -201,6 +230,10 @@ // TODO Auto-generated method stub } + + public Set<OWLOntologyChange> getAllChanges() { + return allChanges; + } // if(e.getActionCommand().equals("delete instance")){ // ore.modi.deleteIndividual(ind); Added: trunk/src/dl-learner/org/dllearner/tools/ore/Neu_006.gif =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/Neu_006.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -35,7 +35,6 @@ import org.dllearner.reasoning.OWLAPIReasoner; - public class ORE { private LearningAlgorithm la; @@ -94,7 +93,7 @@ } -// rs = cm.reasoningService(reasoner); + reasoner2 = cm.reasoner(OWLAPIReasoner.class, ks); try { reasoner2.init(); @@ -102,8 +101,12 @@ // TODO Auto-generated catch block e.printStackTrace(); } + rs = cm.reasoningService(reasoner2); + modi = new OntologyModifierOWLAPI(reasoner2); - modi = new OntologyModifierOWLAPI(reasoner2); + + + } public ReasoningService getReasoningService(){ @@ -143,13 +146,13 @@ // TODO Auto-generated catch block e1.printStackTrace(); } - //la = new ROLearner(lp, rs); + Set<String> t = new TreeSet<String>(); t.add(ignoredConcept.getName()); cm.applyConfigEntry(la, "ignoredConcepts", t ); - cm.applyConfigEntry(la, "noisePercentage", noise); - cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 5); +// cm.applyConfigEntry(la, "noisePercentage", noise); + cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 10); try { la.init(); } catch (ComponentInitException e) { @@ -164,28 +167,37 @@ } - public LearningAlgorithm start(){ + public void init(){ this.setPosNegExamples(); this.setLearningProblem(); this.setLearningAlgorithm(); + } + + public LearningAlgorithm start(){ + Set<String> t = new TreeSet<String>(); + + cm.applyConfigEntry(la, "ignoredConcepts", t ); + cm.applyConfigEntry(la, "noisePercentage", noise); + try { + la.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + System.out.println(noise); la.start(); - return la; - } - public Description getLearningResult(){ - return la.getCurrentlyBestDescription(); - } - + // public List<Description> getSolutions(){ // return la.getCurrentlyBestDescriptions(); // } public List<Description> getLearningResults(int anzahl){ - return la.getCurrentlyBestDescriptions(anzahl); + return la.getCurrentlyBestDescriptions(anzahl, true); } /** @@ -372,6 +384,7 @@ try { if(reasoner.instanceCheck(desc, ind)){ + if(children.size() >= 2){ if(desc instanceof Intersection){ @@ -379,7 +392,7 @@ for(int i = 0; i<children.size()-1; i++){ criticals.addAll(DescriptionToJLabel(ind, desc.getChild(i))); criticals.add(new JLabel("AND")); - System.out.println(true); + } criticals.addAll(DescriptionToJLabel(ind, desc.getChild(children.size()-1))); criticals.add(new JLabel(")")); @@ -407,7 +420,7 @@ } } else{ - + criticals.add(new DescriptionLabel(desc)); } } @@ -421,20 +434,26 @@ return criticals; } - public Set<Individual> getIndividualsOfPropertyRange(ObjectQuantorRestriction objRestr){ + public Set<Individual> getIndividualsOfPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ - - System.out.println(objRestr.getChild(0)); - - Set<Individual> individuals = rs.retrieval(objRestr.getChild(0)); - System.out.println(objRestr.getRole()); + individuals.remove(ind); - System.out.println(individuals); - return individuals; } + public Set<Individual> getIndividualsNotOfPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ + + Set<Individual> individuals = reasoner2.retrieval(objRestr.getChild(0)); + Set<Individual> allIndividuals = reasoner2.getIndividuals(); + System.out.println("alle:" + allIndividuals); + allIndividuals.removeAll(individuals); + allIndividuals.remove(ind); + + System.out.println("range:" + individuals); + return allIndividuals; + } + public Set<NamedClass> getpossibleMoveClasses(Individual ind){ Set<NamedClass> moveClasses = rs.getAtomicConcepts(); Set<NamedClass> indClasses = new HashSet<NamedClass>(); @@ -461,6 +480,13 @@ // TODO Auto-generated catch block e.printStackTrace(); } + reasoner2 = cm.reasoner(OWLAPIReasoner.class,new OWLAPIOntology(modi.ontology)); + try { + reasoner2.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } public boolean hasComplement(Description desc, Individual ind){ @@ -480,15 +506,18 @@ final ORE test = new ORE(); - File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/inconsistent.owl"); + File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/inkohaerent.owl"); test.setKnowledgeSource(owlFile); test.detectReasoner(); -// System.out.println(test.reasoner2.getInconsistentClasses()); -// System.err.println("Concepts :" + rs.getAtomicConcepts()); +// test.modi.reason(); +// Individual ind = new Individual("http://example.com/father#heinz"); +// Description d = 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); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -1,6 +1,7 @@ package org.dllearner.tools.ore; import java.net.URI; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.LinkedList; @@ -13,6 +14,7 @@ import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; import org.dllearner.reasoning.OWLAPIReasoner; import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.io.RDFXMLOntologyFormat; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClassAssertionAxiom; @@ -80,8 +82,12 @@ */ public void saveOntology(){ + + + URI physicalURI2 = URI.create("file:/tmp/MyOnt2.owl"); + try { - manager.saveOntology(ontology); + manager.saveOntology(ontology, new RDFXMLOntologyFormat(), physicalURI2); } catch (UnknownOWLOntologyException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -89,18 +95,6 @@ // TODO Auto-generated catch block e.printStackTrace(); } - -// URI physicalURI2 = URI.create("file:/tmp/MyOnt2.owl"); -// -// try { -// manager.saveOntology(ontology, new RDFXMLOntologyFormat(), physicalURI2); -// } catch (UnknownOWLOntologyException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (OWLOntologyStorageException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } } /** @@ -223,6 +217,7 @@ try { manager.applyChanges(changes); + saveOntology(); return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block @@ -320,7 +315,7 @@ * undo changes of type {@link OWLOntologyChange} * @param changes */ - public void undoChanges(List<OWLOntologyChange> changes){ + public void undoChanges(Collection<OWLOntologyChange> changes){ for(OWLOntologyChange change : changes){ @@ -362,46 +357,18 @@ return true; } -// OWLClass owlClass1 = factory.getOWLClass(URI.create(desc1.toString())); -// OWLClass owlClass2 = factory.getOWLClass(URI.create(desc2.toString())); -// for(OWLEquivalentClassesAxiom eq :ontology.getEquivalentClassesAxioms(owlClass1)) -// for(OWLDescription d : eq.getDescriptions()) -// System.out.println(d.isAnonymous()); -// for(OWLEquivalentClassesAxiom eq :ontology.getEquivalentClassesAxioms(owlClass2)){ -// for(OWLDescription d : eq.getDescriptions()) -// System.out.println(d.getClass()); -// for(OWLEntity e : eq.getReferencedEntities()) -// System.out.println(e); -// } return false; } - +// public void reason(){ +// reasoner.getInconsistencyReasons(ontology); +// +// } -// public OWLOntology copyOntology(){ -// try{ -// OWLOntology ontologyCopy = manager.createOntology(ontology.getURI()); -// -// -// Set<OWLAxiom> axioms = ontology.getAxioms(); -// List<AddAxiom> changes = new LinkedList<AddAxiom>(); -// for(OWLAxiom a : axioms) -// changes.add(new AddAxiom(ontologyCopy, a)); -// -// manager.applyChanges(changes); -// -// return ontologyCopy; -// -// }catch(OWLException e){ -// e.printStackTrace(); -// return null; -// } -// -// -// } + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -4,11 +4,14 @@ import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.util.HashSet; +import java.util.Set; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import org.dllearner.core.owl.Individual; +import org.semanticweb.owl.model.OWLOntologyChange; @@ -18,6 +21,7 @@ public static final String IDENTIFIER = "REPAIR_PANEL"; RepairPanel panel4; + private Set<OWLOntologyChange> ontologyChanges; public RepairPanelDescriptor() { @@ -27,10 +31,10 @@ panel4.addSaveButtonListener(this); panel4.addSelectionListeners(this); panel4.addMouseListeners(this); - + setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(panel4); - + ontologyChanges = new HashSet<OWLOntologyChange>(); } @@ -56,6 +60,7 @@ } public void actionPerformed(ActionEvent event) { + System.out.println(ontologyChanges); if(event.getActionCommand().equals("save")){ getWizardModel().getOre().getModi().saveOntology(); @@ -68,7 +73,7 @@ if(e.getClickCount() == 2 && e.getSource() == panel4.getNegFailureList() ){ Individual ind = (Individual)panel4.getNegFailureList().getSelectedValue(); - new NegExampleRepairDialog(ind, getWizard().getDialog(), getWizardModel().getOre()); + ontologyChanges.addAll(new NegExampleRepairDialog(ind, getWizard().getDialog(), getWizardModel().getOre()).getAllChanges()); // System.out.println(getWizardModel().getOre().getCriticalDescriptions(ind, getWizardModel().getOre().conceptToAdd )); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -1,18 +1,23 @@ package org.dllearner.tools.ore; import java.awt.Color; +import java.awt.Component; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.Insets; +import java.util.HashSet; import java.util.Set; import javax.swing.BorderFactory; +import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.SwingUtilities; import javax.swing.border.BevelBorder; +import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; @@ -23,7 +28,10 @@ private static final long serialVersionUID = -8418286820511803278L; ORE ore; Individual ind; + Set<NamedClass> classes; + JPanel classesPanel; + public StatsPanel(ORE ore, Individual ind){ super(); this.ore = ore; @@ -36,18 +44,14 @@ setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); GridBagLayout gbl = new GridBagLayout(); - gbl.rowWeights = new double[] {0.0, 0.1, 0.1}; + gbl.rowWeights = new double[] {0.0, 0.0, 0.1}; gbl.rowHeights = new int[] {34, 7, 7}; gbl.columnWeights = new double[] {0.1}; gbl.columnWidths = new int[] {7}; setLayout(gbl); - - - - JPanel indPanel = new JPanel(); indPanel.setBackground(new Color(224, 223, 227)); indPanel.setLayout(new GridLayout(0, 1)); @@ -57,24 +61,53 @@ indPanel.add(indLb); indPanel.add(indLb1); - JPanel classesPanel = new JPanel(); + classesPanel = new JPanel(); classesPanel.setBackground(new Color(224, 223, 227)); classesPanel.setLayout(new GridLayout(0, 1)); JLabel classLb = new JLabel("Classes:"); classLb.setFont(indLb.getFont().deriveFont(Font.BOLD)); classesPanel.add(classLb); - Set<NamedClass> t = null; - - t = ore.reasoner2.getConcepts(ind); + classes = ore.reasoner2.getConcepts(ind); - for(NamedClass nc : t) + for(NamedClass nc : classes) classesPanel.add(new JLabel(nc.getName())); - add(indPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); - - add(classesPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); + add(classesPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); } + + public void updatePanel(String action, Description d){ + + + Set<NamedClass> afterUpdate = new HashSet<NamedClass>(); + + afterUpdate.addAll(ore.reasoner2.getConcepts(ind)); + + for(NamedClass nc : afterUpdate) + if(!(classes.contains(nc))){ + ImageIcon icon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/Neu_006.gif"); + JLabel lab = new JLabel(nc.getName()); + lab.setIcon(icon); + lab.setHorizontalTextPosition(JLabel.LEFT); + classesPanel.add(lab); + } + for(NamedClass nc : classes) + if(!(afterUpdate.contains(nc))) + for(Component co: classesPanel.getComponents()) + if(co instanceof JLabel) + if(((JLabel)co).getText().equals(nc.toString())) + ((JLabel)co).setText("<html><strike>" + nc + "</strike></html>"); + + +// for(Component co: classesPanel.getComponents()){ +// if(co instanceof JLabel) +// if(((JLabel)co).getText().equals(d.toString())) +// ((JLabel)co).setText("<html><strike>" + d + "</strike></html>"); +// +// } + SwingUtilities.updateComponentTreeUI(this); + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -72,6 +72,7 @@ ((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel3.getModel().clear(); new ConceptRetriever(nextPanelDescriptor).execute(); } + if( nextPanelDescriptor.equals("REPAIR_PANEL")){ ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getNegFailureModel().clear(); @@ -85,6 +86,7 @@ } if(nextPanelDescriptor.equals("LEARNING_PANEL")){ + wizard.getModel().getOre().init(); ((LearningPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getStatusLabel().setText(""); ((LearningPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getModel().clear(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |