|
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.
|