From: <lor...@us...> - 2009-09-10 11:37:56
|
Revision: 1840 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1840&view=rev Author: lorenz_b Date: 2009-09-10 11:37:40 +0000 (Thu, 10 Sep 2009) Log Message: ----------- fixed some bugs added a new sparql extraction dialog Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 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/ExtractFromSparqlPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 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/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/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/LeftPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBarSimulator.java Modified: trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -161,7 +161,7 @@ this.configurator = new PelletReasonerConfigurator(this); } - public void loadOntologies() { + public void loadOntologies() throws URISyntaxException, OWLOntologyCreationException { Comparator<OWLNamedObject> namedObjectComparator = new Comparator<OWLNamedObject>() { public int compare(OWLNamedObject o1, OWLNamedObject o2) { return o1.getURI().compareTo(o2.getURI()); @@ -188,7 +188,7 @@ url = ((OWLFile) source).getURL(); } - try { +// try { if (source instanceof OWLAPIOntology) { ontology = ((OWLAPIOntology) source).getOWLOntolgy(); @@ -258,11 +258,11 @@ individuals.add(new Individual(owlIndividual.getURI().toString())); } - } catch (OWLOntologyCreationException e) { - e.printStackTrace(); - } catch (URISyntaxException e) { - e.printStackTrace(); - } +// } catch (OWLOntologyCreationException e) { +// e.printStackTrace(); +// } catch (URISyntaxException e) { +// e.printStackTrace(); +// } // all other sources are converted to KB and then to an // OWL API ontology } else { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -47,12 +47,12 @@ /** * main method. - * @param args possible is to use OWL-File as parameter + * @param args possible is to use URI as parameter */ public static void main(String[] args) { try { - UIManager.setLookAndFeel( - UIManager.getSystemLookAndFeelClassName()); +// UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -110,8 +110,9 @@ @Override public void run() { + System.out.println("Starting application..."); int ret = wizard.showModalDialog(); - System.out.println("Dialog return code is (0=Finish,1=Cancel,2=Error): " + ret); + System.out.println("Exited ORE application"); System.exit(0); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -2,6 +2,7 @@ import java.net.MalformedURLException; import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.Collection; @@ -32,6 +33,7 @@ import org.dllearner.reasoning.PelletReasoner; import org.dllearner.tools.ore.ui.DescriptionLabel; import org.mindswap.pellet.exceptions.InconsistentOntologyException; +import org.semanticweb.owl.model.OWLOntologyCreationException; public class OREManager { @@ -133,7 +135,7 @@ } - public void initPelletReasoner(){ + public void initPelletReasoner() throws URISyntaxException, OWLOntologyCreationException{ reasoner = cm.reasoner(PelletReasoner.class, ks); try { reasoner.init(); @@ -148,7 +150,7 @@ fireActiveOntologyChanged(); } - public void loadOntology(){ + public void loadOntology() throws OWLOntologyCreationException, URISyntaxException{ reasoner.loadOntologies(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -70,7 +70,9 @@ try { List<URI> list = (List<URI>) inputStream.readObject(); - uriList.addAll(list); + if(list != null){ + uriList.addAll(list); + } } finally { inputStream.close(); } 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-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -322,13 +322,17 @@ } 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); + Set<OWLAxiom> parts = computeOPlus(Collections.singleton(source)); + for(OWLAxiom par : parts){ + System.out.println("has Part: " + par); + } +// 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); + System.out.println("\nPart: " + pa); + for(OWLAxiom ax : oPlus.getAxiomsMap().get(pa)){ + System.out.println("has source : " + ax); } + } return rebuildAxioms(parts); @@ -346,7 +350,7 @@ Map<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>> lhs2SubClassAxiom = new HashMap<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>>(); Set<OWLAxiom> reconstituedAxioms = new HashSet<OWLAxiom>(); - for (OWLAxiom laconicAx : axioms) { + for (OWLAxiom laconicAx : axioms) {System.out.println("\n" + laconicAx); if (laconicAx instanceof OWLSubClassAxiom) { @@ -412,7 +416,7 @@ Set<OWLAxiom> sourceAxioms = expGen.getSourceAxioms(laconicAx); System.out.println("Source axioms: " + sourceAxioms); for(OWLAxiom sourceAx : sourceAxioms){ - System.out.println("Rebuildet: " + expGen.getRemainingAxioms(sourceAx, laconicAx)); + System.out.println("\nRebuildet: " + expGen.getRemainingAxioms(sourceAx, laconicAx)); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt =================================================================== (Binary files differ) Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -0,0 +1,524 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.BorderLayout; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.GridLayout; +import java.awt.Insets; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.swing.AbstractAction; +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.ButtonGroup; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JTextField; +import javax.swing.JToggleButton; +import javax.swing.ProgressMonitor; +import javax.swing.SwingWorker; +import javax.swing.border.TitledBorder; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import javax.swing.text.JTextComponent; + +import org.dllearner.core.ComponentManager; +import org.dllearner.kb.sparql.SPARQLTasks; +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 { + + /** + * + */ + private static final long serialVersionUID = 6379950242859458507L; + + public static final int CANCEL_RETURN_CODE = 0; + public static final int OK_RETURN_CODE = 1; + + private int returnCode; + + private JButton okButton = null; + private JButton cancelButton = null; + + private JComboBox comboBox; + private JTextField classField; + private JTextField defaultGraphField; + + private JRadioButton asLabelButton; + private JRadioButton asURLButton; + + private JButton extractButton; + + private JLabel message; + + private SparqlExtractOptionsPanel optionsPanel; + private JToggleButton optionsButton; + private ImageIcon toggledIcon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/toggled.gif"); + private ImageIcon untoggledIcon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/untoggled.gif"); + + + private SPARQLTasks task; + private SparqlKnowledgeSource ks; + private OntologyExtractingTask extractTask; + private ProgressMonitor mon; + + private Map<URL, List<String>> endpointToDefaultGraph; + + public ExtractFromSparqlDialog(Dialog owner) { + super(owner, "Extract fragment from Sparql-endpoint", true); + + // Create the controls + createControls(); + //create main panel + createSparqlPanel(); + //add predifined endpoints + 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()); + + // Create the dialog buttons + // Create a box to hold the buttons - to give the right spacing between + // them + 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')); + okButton.setEnabled(false); + 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 void createSparqlPanel() { + JPanel panel = new JPanel(); + GridBagConstraints c = new GridBagConstraints(); + panel.setLayout(new GridBagLayout()); + c = new GridBagConstraints(); + c.fill = GridBagConstraints.HORIZONTAL; + c.weightx = 1.0; + c.gridwidth = GridBagConstraints.REMAINDER; + + JPanel endPointHolderPanel = new JPanel(); + endPointHolderPanel.setLayout(new GridLayout(0, 1)); + endPointHolderPanel.setBorder(new TitledBorder("Sparql endpoint")); + comboBox = new JComboBox(); + comboBox.setEditable(true); + comboBox.setActionCommand("endpoints"); + comboBox.addActionListener(this); + + ((JTextComponent)comboBox.getEditor().getEditorComponent()).getDocument().addDocumentListener(this); + AutoCompleteDecorator.decorate(this.comboBox); + endPointHolderPanel.add(new JLabel("URL")); + endPointHolderPanel.add(comboBox); + defaultGraphField = new JTextField(); + endPointHolderPanel.add(new JLabel("Default graph URI (optional)")); + endPointHolderPanel.add(defaultGraphField); + panel.add(endPointHolderPanel, c); + + JPanel classHolderPanel = new JPanel(); + classHolderPanel.setLayout(new GridLayout(0, 1)); + classHolderPanel.setBorder(new TitledBorder("Class to learn")); + asLabelButton = new JRadioButton("label"); + asURLButton = new JRadioButton("URI"); + asURLButton.setSelected(true); + ButtonGroup bG = new ButtonGroup(); + bG.add(asLabelButton); + bG.add(asURLButton); + JPanel buttonPanel = new JPanel(); + buttonPanel.add(new JLabel("input type:")); + buttonPanel.add(asURLButton); + buttonPanel.add(asLabelButton); + + classHolderPanel.add(buttonPanel); + classField = new JTextField(); + classField.getDocument().addDocumentListener(this); + classHolderPanel.add(classField); + panel.add(classHolderPanel, c); + + + + optionsButton = new JToggleButton(new AbstractAction("Advanced options") { + + /** + * + */ + private static final long serialVersionUID = -4395104616001102604L; + + @Override + public void actionPerformed(ActionEvent e) { + JToggleButton button = (JToggleButton) e.getSource(); + + if (!button.getModel().isSelected()) { + collapseOptionsPanel(); + } else { + expandOptionsPanel(); + } + + } + }); + optionsButton.setIcon(untoggledIcon); + optionsButton.setBorder(BorderFactory.createEmptyBorder(2,2,2,2)); + optionsButton.setHorizontalAlignment(JButton.LEADING); // optional + optionsButton.setBorderPainted(false); + optionsButton.setContentAreaFilled(false); + c.fill = GridBagConstraints.NONE; + c.anchor = GridBagConstraints.WEST; + panel.add(optionsButton, c); + + c.anchor = GridBagConstraints.CENTER; + c.fill = GridBagConstraints.HORIZONTAL; + optionsPanel = new SparqlExtractOptionsPanel(); + panel.add(optionsPanel, c); + optionsPanel.setVisible(false); + + extractButton = createButton("Extract", 'e'); + extractButton.setEnabled(false); + c.fill = GridBagConstraints.NONE; + panel.add(extractButton, c); + + message = new JLabel(""); + panel.add(message, c); + + JLabel padding = new JLabel(); + c.weighty = 1.0; + panel.add(padding, c); + getContentPane().add(panel, BorderLayout.CENTER); + } + + 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 expandOptionsPanel(){ + optionsButton.setIcon(toggledIcon); + Dimension dialogSize = getSize (); + Dimension detailSize = optionsPanel.getPreferredSize (); + dialogSize.height += detailSize.height; + setSize (dialogSize); + optionsPanel.setVisible(true); + // Cause the new layout to take effect + invalidate (); + validate (); + + } + + private void collapseOptionsPanel(){ + optionsButton.setIcon(untoggledIcon); + Dimension dialogSize = getSize (); + Dimension detailSize = optionsPanel.getPreferredSize (); + dialogSize.height -= detailSize.height; + setSize (dialogSize); + optionsPanel.setVisible(false); + // Cause the new layout to take effect + invalidate (); + validate (); + + } + + 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(500, 400); + setVisible(true); + setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + return returnCode; + } + + + + 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>"); + } + + } + + private boolean urlIsConnectable() + { + URL url = null; + try { + url = new URL((String)comboBox.getSelectedItem()); + } catch (MalformedURLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + try { + if(url.openConnection().getContentLength() > 0){ + return true; + } else { + return false; + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return false; + } + + private boolean urlIsValid(){ + Document urlDoc = ((JTextComponent)comboBox.getEditor().getEditorComponent()).getDocument(); + String url = ""; + try { + url = urlDoc.getText(0, urlDoc.getLength()); + } catch (BadLocationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + if(url.toLowerCase().startsWith("http://")){ + return true; + } else { + return false; + } + } + + private void setExtractButtonEnabledToValidInput(){ + extractButton.setEnabled(urlIsValid() && !classField.getText().isEmpty()); + } + + private String getClassFromLabel(){ + + String queryString = "SELECT DISTINCT ?class WHERE {" + + "?class rdf:type owl:Class ." + + "?class rdfs:label ?label . " + + "FILTER(regex(?label, '" + classField.getText() + "')) }"; + SortedSet<String> classes = task.queryAsSet(queryString, "class"); + + return classes.iterator().next(); + } + + public SparqlKnowledgeSource getKnowledgeSource(){ + return ks; + } + + class OntologyExtractingTask extends SwingWorker<Void, Void>{ + + private ProgressMonitor mon; + + public OntologyExtractingTask(ProgressMonitor mon) { + this.mon = mon; + } + + @Override + public Void doInBackground() { + ComponentManager cm = ComponentManager.getInstance(); + URL endpointURL = null; + try { + endpointURL = new URL(comboBox.getSelectedItem().toString()); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + List<String> defaultGraphURIS = new ArrayList<String>(1); + defaultGraphURIS.add(defaultGraphField.getText()); + SparqlEndpoint endpoint = new SparqlEndpoint(endpointURL, defaultGraphURIS, Collections.<String>emptyList()); + task = new SPARQLTasks(endpoint); + String classKBString; + if(asLabelButton.isSelected()){ + classKBString = "\"" + getClassFromLabel() + "\""; + } else { + classKBString = "\"" + classField.getText() +"\""; + } + + AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL( + task); + pos.makePositiveExamplesFromConcept(classKBString); + + SortedSet<String> allPosExamples = pos.getPosExamples(); + SortedSet<String> posExamples = SetManipulation.stableShrink( + allPosExamples, 20); + + SortedSet<String> instances = new TreeSet<String>(posExamples); + + ks = cm.knowledgeSource(SparqlKnowledgeSource.class); + ks.getConfigurator().setUrl(SparqlEndpoint.getEndpointDBpedia().getURL()); + ks.getConfigurator().setInstances(instances); + ks.getConfigurator().setPredefinedFilter("YAGO"); + ks.getConfigurator().setBreakSuperClassRetrievalAfter(optionsPanel.getBreakSuperClassRetrievalAfterValue()); + ks.getConfigurator().setRecursionDepth(optionsPanel.getRecursionDepthValue()); + ks.getConfigurator().setUseCache(optionsPanel.isUseCache()); + ks.getConfigurator().setGetAllSuperClasses(optionsPanel.isGetAllSuperClasses()); + ks.getConfigurator().setDissolveBlankNodes(optionsPanel.isDissolveBlankNodes()); + ks.getConfigurator().setUseImprovedSparqlTupelAquisitor(optionsPanel.isUseImprovedSparqlTupelAquisitor()); + ks.getConfigurator().setUseLits(optionsPanel.isUseLiterals()); + ks.getConfigurator().setGetPropertyInformation(optionsPanel.isGetPropertyInformation()); + ks.getConfigurator().setCloseAfterRecursion(optionsPanel.isCloseAfterRecursion()); + ks.addProgressMonitor(mon); + + ks.init(); + + return null; + } + + @Override + public void done() { + + if(!isCancelled() && ks != null){ + okButton.setEnabled(true); + message.setText("<html><font color=\"green\">Fragment successfully extracted</html>"); + } + } + } + + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getActionCommand().equals("Extract")){ + extract(); + } else if(e.getActionCommand().equals("Ok")){ + returnCode = OK_RETURN_CODE; + closeDialog(); + } else if(e.getActionCommand().equals("Cancel")){ + returnCode = CANCEL_RETURN_CODE; + closeDialog(); + } else if(e.getActionCommand().equals("endpoints")){ + message.setText(""); + JComboBox cb = (JComboBox)e.getSource(); + if(cb.getSelectedIndex() >= 0){ + URL endpointURL = null; + try { + endpointURL = new URL((String)cb.getSelectedItem()); + } catch (MalformedURLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + List<String> defaultGraphs = endpointToDefaultGraph.get(endpointURL); + if(defaultGraphs != null && !defaultGraphs.isEmpty()){ + defaultGraphField.setText(defaultGraphs.iterator().next()); + } else { + defaultGraphField.setText(""); + } + } + + } + + } + + private void closeDialog(){ + setVisible(false); + dispose(); + } + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if ("progress" == evt.getPropertyName() ) { + if(mon.isCanceled()){ + extractTask.cancel(true); + } + } + + } + + @Override + public void changedUpdate(DocumentEvent e) { + setExtractButtonEnabledToValidInput(); + + } + + @Override + public void insertUpdate(DocumentEvent e) { + setExtractButtonEnabledToValidInput(); + + } + + @Override + public void removeUpdate(DocumentEvent e) { + setExtractButtonEnabledToValidInput(); + + } + + + public static void main(String[] args){ + ExtractFromSparqlDialog dialog = new ExtractFromSparqlDialog(null); + dialog.showDialog(); + } + + + +} + + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java 2009-09-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -1,21 +1,36 @@ package org.dllearner.tools.ore.ui; +import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; +import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.net.MalformedURLException; import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.SortedSet; import java.util.TreeSet; +import javax.swing.AbstractAction; +import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; import javax.swing.JTextField; +import javax.swing.JToggleButton; import javax.swing.ProgressMonitor; import javax.swing.SwingWorker; import javax.swing.border.TitledBorder; @@ -29,7 +44,6 @@ import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; -import org.protege.editor.core.ui.util.JOptionPaneEx; public class ExtractFromSparqlPanel extends JPanel implements DocumentListener, ActionListener, PropertyChangeListener{ @@ -41,6 +55,11 @@ private JComboBox comboBox; private JTextField classField; + private JTextField defaultGraphField; + + private JRadioButton asLabelButton; + private JRadioButton asURLButton; + private JButton extractButton; private GridBagConstraints c; @@ -49,48 +68,107 @@ private SparqlKnowledgeSource ks; private OntologyExtractingTask extractTask; private ProgressMonitor mon; + private List<SparqlEndpoint> endpoints; private SparqlExtractOptionsPanel optionsPanel; public ExtractFromSparqlPanel(){ + setLayout(new GridBagLayout()); c = new GridBagConstraints(); c.fill = GridBagConstraints.HORIZONTAL; + c.weightx = 1.0; + c.gridwidth = GridBagConstraints.REMAINDER; - JPanel comboBoxHolderPanel = new JPanel(); - comboBoxHolderPanel.setBorder(new TitledBorder("Sparql endpoint URI")); - comboBox = new JComboBox(SparqlEndpoint.listEndpoints().toArray()); + JPanel endPointHolderPanel = new JPanel(); + endPointHolderPanel.setLayout(new GridLayout(0, 1)); + endPointHolderPanel.setBorder(new TitledBorder("Sparql endpoint")); + comboBox = new JComboBox(); comboBox.setEditable(true); AutoCompleteDecorator.decorate(this.comboBox); - comboBoxHolderPanel.add(comboBox); - c.gridx = 0; - c.gridy = 0; - add(comboBoxHolderPanel, c); + endPointHolderPanel.add(new JLabel("URL")); + endPointHolderPanel.add(comboBox); + defaultGraphField = new JTextField(); + endPointHolderPanel.add(new JLabel("Default graph URI")); + endPointHolderPanel.add(defaultGraphField); + add(endPointHolderPanel, c); + JPanel classHolderPanel = new JPanel(); + classHolderPanel.setLayout(new GridLayout(0, 1)); + classHolderPanel.setBorder(new TitledBorder("Class to learn")); + asLabelButton = new JRadioButton("label"); + asURLButton = new JRadioButton("URI"); + asURLButton.setSelected(true); + ButtonGroup bG = new ButtonGroup(); + bG.add(asLabelButton); + bG.add(asURLButton); + JPanel buttonPanel = new JPanel(); + buttonPanel.add(new JLabel("input type:")); + buttonPanel.add(asURLButton); + buttonPanel.add(asLabelButton); + + classHolderPanel.add(buttonPanel); classField = new JTextField(); classField.getDocument().addDocumentListener(this); - c.gridx = 0; - c.gridy = 1; - add(classField, c); + classHolderPanel.add(classField); + add(classHolderPanel, c); extractButton = new JButton("extract"); extractButton.addActionListener(this); - c.gridx = 0; - c.gridy = 2; + c.fill = GridBagConstraints.NONE; add(extractButton, c); + +// JToggleButton button = new JToggleButton(new AbstractAction("Options") { +// +// @Override +// public void actionPerformed(ActionEvent e) { +// JToggleButton button = (JToggleButton)e.getSource(); +// +// if(!button.getModel().isSelected()){ +// +// collapseOptionsPanel(); +// } else { +// expandOptionsPanel(); +// } +// +// +// } +// }); +// +// +// add(button, c); + + optionsPanel = new SparqlExtractOptionsPanel(); - c.gridx = 0; - c.gridy = 3; add(optionsPanel, c); +// optionsPanel.setVisible(false); + JLabel padding = new JLabel(); + c.weighty = 1.0; + add(padding, c); + + } + + private void expandOptionsPanel(){ + Dimension dialogSize = getSize (); + Dimension detailSize = optionsPanel.getPreferredSize (); + dialogSize.height += detailSize.height; + setSize (dialogSize); + optionsPanel.setVisible(true); + // Cause the new layout to take effect + invalidate (); + validate (); - } + private void collapseOptionsPanel(){ + optionsPanel.setVisible(false); + } + private void extract() { mon = new ProgressMonitor(this, "Extracting fragment", "", 0, 100); @@ -120,10 +198,12 @@ } public static SparqlKnowledgeSource showDialog() { + ExtractFromSparqlPanel panel = new ExtractFromSparqlPanel(); + int ret = JOptionPaneEx.showConfirmDialog(null, "Extract fragment from Sparql-Endpoint", - panel, + new JScrollPane(panel), JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION, panel.comboBox); @@ -132,6 +212,7 @@ } return null; } + @Override public void changedUpdate(DocumentEvent e) { @@ -186,10 +267,13 @@ // TODO Auto-generated catch block e.printStackTrace(); } + List<String> defaultGraphURIS = new ArrayList<String>(1); + defaultGraphURIS.add(defaultGraphField.getText()); + SparqlEndpoint endpoint = new SparqlEndpoint(endpointURL, defaultGraphURIS, Collections.<String>emptyList()); + task = new SPARQLTasks(endpoint); - task = new SPARQLTasks(new SparqlEndpoint(endpointURL)); - String exampleClassKBString = "\"" + getClassFromLabel() + "\""; + AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL( task); pos.makePositiveExamplesFromConcept(exampleClassKBString); @@ -202,7 +286,7 @@ SortedSet<String> instances = new TreeSet<String>(posExamples); ks = cm.knowledgeSource(SparqlKnowledgeSource.class); - ks.getConfigurator().setUrl(endpointURL); + ks.getConfigurator().setUrl(SparqlEndpoint.getEndpointDBpedia().getURL()); ks.getConfigurator().setInstances(instances); ks.getConfigurator().setPredefinedFilter("YAGO"); ks.getConfigurator().setBreakSuperClassRetrievalAfter(optionsPanel.getBreakSuperClassRetrievalAfterValue()); @@ -226,8 +310,39 @@ mon.setProgress(0); } } - + private static class JOptionPaneEx extends JOptionPane { + /** + * + */ + private static final long serialVersionUID = -8531422911783932819L; + public static int showConfirmDialog(JComponent parent, String title, JComponent content, int messageType, + int optionType, final JComponent defaultFocusedComponent) { + + JOptionPane optionPane = new JOptionPane(content, messageType, optionType); + JDialog dlg = optionPane.createDialog(parent, title); + dlg.addWindowListener(new WindowAdapter() { + public void windowOpened(WindowEvent e) { + if (defaultFocusedComponent != null) { + defaultFocusedComponent.requestFocusInWindow(); + } + } + }); + dlg.setSize(400, 300); + dlg.setResizable(true); + dlg.setVisible(true); + Object value = optionPane.getValue(); + return (value != null) ? (Integer) value : JOptionPane.CLOSED_OPTION; + } + } + + + public static void main(String[] args){ + ExtractFromSparqlPanel.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-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -7,6 +7,7 @@ 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; @@ -27,6 +28,7 @@ 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; @@ -306,12 +308,21 @@ clipboard.setContents(new StringSelection(sb.toString()), null); } - public static void main(String[] args) throws OWLOntologyCreationException{ + 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(); - OWLOntology ontology = manager.loadOntology( URI.create( file ) ); + 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); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsPanel.java 2009-09-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsPanel.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -156,11 +156,11 @@ Set<String> newClassesString = new HashSet<String>(); for (NamedClass nc : OREManager.getInstance().getReasoner().getTypes(ind)){ - newClassesString.add(nc.toManchesterSyntaxString(baseURI, prefixes)); + newClassesString.add(ManchesterSyntaxRenderer.renderSimple(nc)); } Set<String> oldClassesString = new HashSet<String>(); for (NamedClass nc : oldClasses){ - oldClassesString.add(nc.toManchesterSyntaxString(baseURI, prefixes)); + oldClassesString.add(ManchesterSyntaxRenderer.renderSimple(nc)); } for (String nc : oldClassesString){ if (!newClassesString.contains(nc)){ 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-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -22,8 +22,8 @@ import javax.swing.JSeparator; import javax.swing.SwingUtilities; -import org.dllearner.tools.ore.TaskManager; 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; @@ -43,18 +43,19 @@ private boolean isCanceled = false; public StatusBar() { + infoLabel = new JLabel(""); progressBar = new JProgressBar(); // progressBar.setStringPainted(true); setLayout(new BorderLayout()); - setPreferredSize(new Dimension(10, 23)); - +// setPreferredSize(new Dimension(10, 23)); + JPanel rightPanel = new JPanel(new BorderLayout()); rightPanel.add(new JLabel(new AngledLinesWindowsCornerIcon()), BorderLayout.SOUTH); rightPanel.setOpaque(false); JPanel leftPanel = new JPanel(new FlowLayout()); - CancelButton rB = new CancelButton(""); + CancelButton rB = new CancelButton("", getHeight()); rB.addActionListener(new ActionListener() { @Override @@ -65,6 +66,7 @@ }); rB.setToolTipText("Abort"); leftPanel.add(rB); + leftPanel.add(progressBar); leftPanel.add(new JSeparator(JSeparator.VERTICAL)); leftPanel.add(infoLabel); @@ -275,14 +277,16 @@ * */ private static final long serialVersionUID = -8903797519798252577L; - public CancelButton(String label) { + public CancelButton(String label, int siz) { super(label); // These statements enlarge the button so that it // becomes a circle rather than an oval. Dimension size = getPreferredSize(); - size.width = size.height = Math.max(size.width, - size.height); + size.width = size.height = Math.min(size.width, + size.height) + 5; + + setPreferredSize(size); // This call causes the JButton not to paint @@ -298,14 +302,16 @@ // a property of the RoundButton class. g.setColor(Color.YELLOW); } else { - g.setColor(Color.lightGray); + g.setColor(Color.RED);//lightGray); } g.fillOval(0, 0, getSize().width-1, getSize().height-1); - - g.setColor(Color.white); - g.drawLine(2, 2, 9 , 9); - g.drawLine(2, 9, 9 , 2); +// double height = Math.sin(45) * (getSize().width-1)/2; +// double width = Math.cos(45) * (getSize().width-1)/2; +// g.setColor(Color.white); +// g.drawLine(0, 0, (int)width, (int)height); +// g.drawLine(3, 3, getSize().width-3 , getSize().height-3); +// g.drawLine(3, 11, 11 , 3); // This call will paint the label and the // focus rectangle. Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBarSimulator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBarSimulator.java 2009-09-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBarSimulator.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -1,122 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.BorderLayout; -import java.awt.Container; -import java.awt.Cursor; -import java.net.URI; - -import javax.swing.JFrame; -import javax.swing.SwingWorker; -import javax.swing.UIManager; - -import org.dllearner.tools.ore.OREManager; -import org.mindswap.pellet.owlapi.Reasoner; -import org.mindswap.pellet.utils.Timer; -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.model.OWLDataFactory; -import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyCreationException; -import org.semanticweb.owl.model.OWLOntologyManager; - -import com.sun.java.swing.plaf.windows.WindowsLookAndFeel; - -public class StatusBarSimulator { - - private StatusBar statusBar; - private OREManager ore; - private Reasoner reasoner; - - public StatusBarSimulator(OREManager ore, Reasoner reasoner){ - this.ore = ore; - this.reasoner = reasoner; - ore.initPelletReasoner(); - - } - - public void createandShowGUI(){ - try { - UIManager.setLookAndFeel(new WindowsLookAndFeel()); - } catch (Exception e) { - - } - - JFrame frame = new JFrame(); - frame.setBounds(200, 200, 600, 200); - frame.setTitle("Status bar simulator"); - - Container contentPane = frame.getContentPane(); - contentPane.setLayout(new BorderLayout()); - - statusBar = new StatusBar(); - statusBar.setMessage("loading ontology"); -// ore.getPelletReasoner().getReasoner().getKB().getTaxonomyBuilder().setProgressMonitor(statusBar); -// reasoner.getKB().getTaxonomyBuilder().setProgressMonitor(statusBar); - - contentPane.add(statusBar, BorderLayout.SOUTH); - - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setVisible(true); - new Task(frame).execute(); - } - - class Task extends SwingWorker<Void, Void> { - - private JFrame frame; - public Task(JFrame frame){ - this.frame = frame; - } - /* - * Main task. Executed in background thread. - */ - @Override - public Void doInBackground() { - - statusBar.showProgress(true); -// statusBar.setMessage("loading ontology"); - Timer t1 = new Timer("load");t1.start(); -// reasoner.classify(); - frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - ore.loadOntology(); - ore.getReasoner().classify(); - - t1.stop(); - System.out.println(t1.getTotal()); - - return null; - } - - /* - * Executed in event dispatching thread - */ - @Override - public void done() {frame.setCursor(null); - statusBar.showProgress(false); - statusBar.setMessage("ontology classified"); - } - } - - public static void main(String[] args) throws OWLOntologyCreationException { - String file = "file:examples/ore/tambis.owl"; - OREManager ore = new OREManager(); - ore.setCurrentKnowledgeSource(URI.create(file)); - 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 ); - - new StatusBarSimulator(ore, reasoner).createandShowGUI(); - } - - - - - - - - - - -} 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-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -429,6 +429,7 @@ buttonPanel.add(buttonBox, java.awt.BorderLayout.EAST); buttonPanel.add(statusBar, BorderLayout.SOUTH); JPanel informationPanel = new JPanel(); + informationPanel.setLayout(new BorderLayout()); JScrollPane infoScrollPane = new JScrollPane(); informationsField = new JTextArea(); @@ -446,7 +447,7 @@ informationsField.setFont(new Font("Serif", Font.PLAIN, 14)); informationsField.setWrapStyleWord(true); infoScrollPane.setViewportView(informationsField); - informationPanel.add(infoScrollPane); + informationPanel.add(infoScrollPane, BorderLayout.EAST); JPanel buttonInformationPanel = new JPanel(); buttonInformationPanel.setLayout(new BorderLayout()); 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-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -257,17 +257,20 @@ wizard.setLeftPanel(1); } if(panelDescriptor.equals("CLASS_CHOOSE_OWL_PANEL") || panelDescriptor.equals("CLASS_CHOOSE_SPARQL_PANEL")){ - wizard.setLeftPanel(2); + wizard.setLeftPanel(3); } if(panelDescriptor.equals("LEARNING_PANEL")){ - wizard.setLeftPanel(3); + wizard.setLeftPanel(4); } if(panelDescriptor.equals("REPAIR_PANEL")){ - wizard.setLeftPanel(4); + wizard.setLeftPanel(5); } if(panelDescriptor.equals("SAVE_PANEL")){ - wizard.setLeftPanel(5); + wizard.setLeftPanel(6); } + if(panelDescriptor.equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)){ + wizard.setLeftPanel(2); + } 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-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -25,20 +25,24 @@ import java.awt.event.ActionListener; import java.io.File; import java.net.URI; +import java.net.URISyntaxException; import javax.swing.JFileChooser; +import javax.swing.JOptionPane; import javax.swing.SwingWorker; import javax.swing.filechooser.FileFilter; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RecentManager; -import org.dllearner.tools.ore.ui.ExtractFromSparqlPanel; +import org.dllearner.tools.ore.ui.ExtractFromSparqlDialog; import org.dllearner.tools.ore.ui.LinkLabel; import org.dllearner.tools.ore.ui.StatusBar; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.KnowledgeSourcePanel; import org.protege.editor.core.ui.OpenFromURIPanel; import org.protege.editor.core.ui.error.ErrorLogPanel; +import org.semanticweb.owl.io.UnparsableOntologyException; +import org.semanticweb.owl.model.OWLOntologyCreationException; /** * Wizard panel descriptor where knowledge source is selected. @@ -53,6 +57,8 @@ private KnowledgeSourcePanel knowledgePanel; + private URI currentURI; + public KnowledgeSourcePanelDescriptor() { knowledgePanel = new KnowledgeSourcePanel(); @@ -99,9 +105,8 @@ public void loadOntology(URI uri){ OREManager.getInstance().setCurrentKnowledgeSource(uri); + currentURI = uri; - RecentManager.getInstance().addURI(uri); - RecentManager.getInstance().serialize(); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); } @@ -157,10 +162,13 @@ } private void handleLoadFromSparqlEndpoint(){ + ExtractFromSparqlDialog dialog = new ExtractFromSparqlDialog(getWizard().getDialog()); + int ret = dialog.showDialog(); + if(ret == ExtractFromSparqlDialog.OK_RETURN_CODE){ + OREManager.getInstance().setCurrentKnowledgeSource(dialog.getKnowledgeSource()); + new OntologyLoadingTask(getWizard().getStatusBar()).execute(); + } - OREManager.getInstance().setCurrentKnowledgeSource( - ExtractFromSparqlPanel.showDialog()); - new OntologyLoadingTask(getWizard().getStatusBar()).execute(); } private void handleOpenFromRecent(URI uri){ @@ -195,31 +203,69 @@ statusBar.setProgressTitle("Loading ontology"); try{ oreMan.initPelletReasoner(); + RecentManager.getInstance().addURI(currentURI); + RecentManager.getInstance().serialize(); + if(oreMan.consistentOntology()){ + statusBar.setProgressTitle("Classifying ontology"); + oreMan.getReasoner().classify(); + statusBar.setProgressTitle("Realising ontology"); + oreMan.getReasoner().realise(); + } - } catch(Throwable e){ + } catch(URISyntaxException e){ + + cancel(true); statusBar.showProgress(false); - statusBar.setProgressTitle("Error occured"); + statusBar.setProgressTitle(""); getWizard().getDialog().setCursor(null); - ErrorLogPanel.showErrorDialog(e); + JOptionPane.showMessageDialog(getWizard().getDialog(), + "Error loading ontology. Please check URI and try again.", + "Ontology loading error", + JOptionPane.ERROR_MESSAGE); + + + +// ErrorLogPanel.showErrorDialog(e); return null; + } catch(OWLOntologyCreationException e){ + + cancel(true); + statusBar.showProgress(false); + statusBar.setProgressTitle(""); + getWizard().getDialog().setCursor(null); + if(e.getClass().equals(UnparsableOntologyException.class)){ + JOptionPane.showMessageDialog(getWizard().getDialog(), + "Error loading ontology. A syntax error in the ontology has been detected.", + "Ontology loading error", + JOptionPane.ERROR_MESSAGE); + } else {// if(e.getCause() instanceof FileNotFoundException){ + JOptionPane.showMessageDialog(getWizard().getDialog(), + "Error loading ontology. File is not existing at given URI. Please check whether you " + + "have entered the correct location and then try again.", + "Ontology loading error", + JOptionPane.ERROR_MESSAGE); + } + + + + +// ErrorLogPanel.showErrorDialog(e); +// return null; } - if(oreMan.consistentOntology()){ - statusBar.setProgressTitle("Classifying ontology"); - oreMan.getReasoner().classify(); - statusBar.setProgressTitle("Realising ontology"); - oreMan.getReasoner().realise(); - } + return null; } @Override public void done() { - statusBar.showProgress(false); - statusBar.setProgressTitle("Done"); - getWizard().getDialog().setCursor(null); - getWizard().setNextFinishButtonEnabled(true); - updateMetrics(); + if(!isCancelled()){ + statusBar.showProgress(false); + statusBar.setProgressTitle("Done"); + getWizard().getDialog().setCursor(null); + 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-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -38,6 +38,7 @@ import org.dllearner.core.LearningAlgorithm; import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.OREManagerListener; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.LearningPanel; @@ -48,7 +49,7 @@ * @author Lorenz Buehmann * */ -public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener{ +public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener, OREManagerListener{ public static final String IDENTIFIER = "LEARNING_PANEL"; public static final String INFORMATION = "Press <Start> to start learning. While it is running, " @@ -265,4 +266,11 @@ } + + + @Override + public void activeOntologyChanged() { + learnPanel.getResultTable().clear(); + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -79,20 +79,23 @@ setBorder(BorderFactory.createEmptyBorder(12, 6, 12, 12)); jScrollPane1.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); jScrollPane1.setViewportBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - instructionsField.setBackground(UIManager.getDefaults().getColor("control")); + Color color = UIManager.getColor("Panel.background"); + instructionsField.setBackground(new Color(color.getRed(), color.getGreen(), color.getBlue())); + instructionsField.setOpaque(true); instructionsField.setColumns(20); 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.setText("This is a tool for debugging end enriching OWL-ontologies. " + + "You are able to check ontologies for inconsistency and unsatisfiable classes.\n" + + "If some of that is detected, helpful explanations can be generated to find out the relevant axioms. " + + "Another feature is to get equivalent class expressions for atomic classes, using an intelligent and efficient\n" + + "machine learning algorithm. TODO...Jens "); instructionsField.setWrapStyleWord(true); jScrollPane1.setViewportView(instructionsField); - + welcomeTitle = new JLabel(); welcomeTitle.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(0, 0, 0))); welcomeTitle.setFont(new java.awt.Font("MS Sans Serif", Font.BOLD, 14)); 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-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -68,6 +68,8 @@ public KnowledgeSourcePanel() { + + openFromRecentLinks = new ArrayList<LinkLabel>(); // setBackground(Color.WHITE); new LeftPanel(1); contentPanel = getContentPanel(); @@ -129,7 +131,7 @@ getFont().deriveFont(Font.BOLD), Color.GRAY), BorderFactory.createEmptyBorder(20, 20, 20, 20))); - openFromRecentLinks = new ArrayList<LinkLabel>(); + LinkLabel link; for (final URI uri : RecentManager.getInstance().getURIs()) { link = new LinkLabel(uri.toString()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java 2009-09-08 09:30:35 UTC (rev 1839) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java 2009-09-10 11:37:40 UTC (rev 1840) @@ -44,17 +44,19 @@ */ public LeftPanel(int i){ - jLabel = new JLabel[6]; + jLabel = new JLabel[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(5, 1, 0, 10)); jLabel[0] = new JLabel("1. Introduction"); jLabel[1] = new JLabel("2. Knowledge Source"); - jLabel[2] = new JLabel("3. Choose Class"); - jLabel[3] = new JLabel("4. Learn"); - jLabel[4] = new JLabel("5. Repair"); - jLabel[5] = new JLabel("6. Save/Exit"); + jLabel[2] = new JLabel("3. Debugging"); + jLabel[3] = new JLabel("4. Choose Class"); + jLabel[4] = new JLabel("5. Learn"); + jLabel[5] = new JLabel("6. Repair"); + jLabel[6] = new JLabel("7. Save/Exit"); + jLabel[i].setFont(jLabel[i].getFont().deriveFont(Font.BOLD)); for(JLabel current : jLabel){ @@ -76,13 +78,14 @@ 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(7, 1, 0, 10)); jLabel[0] = new JLabel("1. Introduction"); jLabel[1] = new JLabel("2. Knowledge Source"); - jLabel[2] = new JLabel("3. Choose Class"); - jLabel[3] = new JLabel("4. Learning"); - jLabel[4] = new JLabel("5. Repair"); - jLabel[5] = new JLabel("6. Save/Exit"); + jLabel[2] = new JLabel("3. Debugging"); + jLabel[3] = new JLabel("4. Choose Class"); + jLabel[4] = new JLabel("5. Learn"); + jLabel[5] = new JLabel("6. Repair"); + jLabel[6] = new JLabel("7. Save/Exit"); jLabel[i].setFont(jLabel[i].getFont().deriveFont(Font.BOLD)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |