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