From: <lor...@us...> - 2010-07-21 15:26:30
|
Revision: 2209 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2209&view=rev Author: lorenz_b Date: 2010-07-21 15:26:22 +0000 (Wed, 21 Jul 2010) Log Message: ----------- Finished SPARQL debug component for now. Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/sparql/IncrementalInconsistencyFinder.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/DebugFromSparqlDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/OverrideFileChooser.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/sparql/SPARULTranslator.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2010-07-21 08:24:55 UTC (rev 2208) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2010-07-21 15:26:22 UTC (rev 2209) @@ -1,7 +1,10 @@ package org.dllearner.tools.ore; import java.awt.Color; +import java.io.BufferedWriter; import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; @@ -35,12 +38,14 @@ import org.dllearner.tools.ore.cache.DLSyntaxRenderingCache; import org.dllearner.tools.ore.cache.ManchesterSyntaxRenderingCache; import org.dllearner.tools.ore.cache.OWLEntityRenderingCache; +import org.dllearner.tools.ore.sparql.SPARULTranslator; import org.dllearner.tools.ore.ui.DescriptionLabel; import org.dllearner.tools.ore.ui.editor.OWLEntityFinder; import org.dllearner.tools.ore.ui.rendering.KeywordColorMap; import org.dllearner.tools.ore.ui.rendering.OWLEntityRenderer; import org.dllearner.utilities.owl.OWLAPIConverter; import org.mindswap.pellet.exceptions.InconsistentOntologyException; +import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.io.RDFXMLOntologyFormat; import org.semanticweb.owlapi.model.IRI; import org.semanticweb.owlapi.model.OWLAxiom; @@ -51,7 +56,9 @@ import org.semanticweb.owlapi.model.OWLObject; import org.semanticweb.owlapi.model.OWLObjectProperty; import org.semanticweb.owlapi.model.OWLOntology; +import org.semanticweb.owlapi.model.OWLOntologyChange; import org.semanticweb.owlapi.model.OWLOntologyCreationException; +import org.semanticweb.owlapi.model.OWLOntologyManager; import org.semanticweb.owlapi.model.OWLOntologyStorageException; import org.semanticweb.owlapi.model.UnknownOWLOntologyException; @@ -193,6 +200,28 @@ } + public void saveChangesAsSPARUL(File file) throws OWLOntologyStorageException{ + try { + List<OWLOntologyChange> changes = OREManager.getInstance().getModifier().getChanges(); + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLOntology ontology = manager.createOntology(IRI.create("t")); + String str = new SPARULTranslator(manager, ontology, false).translate(changes); + FileWriter writer = new FileWriter(file); + BufferedWriter out = new BufferedWriter(writer); + out.write(str); + out.close(); + writer.close(); + } catch (OWLOntologyCreationException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + + } + + + } + public void makeOWAToCWA(){ reasoner.dematerialise(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/sparql/IncrementalInconsistencyFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/sparql/IncrementalInconsistencyFinder.java 2010-07-21 08:24:55 UTC (rev 2208) +++ trunk/src/dl-learner/org/dllearner/tools/ore/sparql/IncrementalInconsistencyFinder.java 2010-07-21 15:26:22 UTC (rev 2209) @@ -15,16 +15,13 @@ import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.utilities.JamonMonitorLogger; -import org.dllearner.utilities.owl.OWLVocabulary; import org.mindswap.pellet.PelletOptions; -import org.semanticweb.HermiT.Reasoner.ReasonerFactory; import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.model.AxiomType; import org.semanticweb.owlapi.model.IRI; import org.semanticweb.owlapi.model.OWLAxiom; import org.semanticweb.owlapi.model.OWLClass; import org.semanticweb.owlapi.model.OWLClassAssertionAxiom; -import org.semanticweb.owlapi.model.OWLClassExpression; import org.semanticweb.owlapi.model.OWLDataFactory; import org.semanticweb.owlapi.model.OWLDataProperty; import org.semanticweb.owlapi.model.OWLDataPropertyDomainAxiom; @@ -39,12 +36,8 @@ import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.model.OWLOntologyManager; import org.semanticweb.owlapi.model.OWLPropertyDomainAxiom; -import org.semanticweb.owlapi.reasoner.Node; import org.semanticweb.owlapi.reasoner.OWLReasoner; -import aterm.ATermAppl; - -import com.clarkparsia.owlapi.explanation.BlackBoxExplanation; import com.clarkparsia.owlapi.explanation.PelletExplanation; import com.clarkparsia.owlapiv3.XSD; import com.clarkparsia.pellet.owlapiv3.PelletReasoner; @@ -78,14 +71,9 @@ // private static final String ENDPOINT_URL = "http://localhost:8890/sparql"; // private static String DEFAULT_GRAPH_URI = "http://opencyc2.org"; //(version 2.0) - private static int RESULT_LIMIT = 100; private static int OFFSET = 100; - private static int RECURSION_DEPTH = 100; private static int AXIOM_COUNT = 100; - //stop if algorithm founds unsatisfiable class or ontology is inconsistent - private static boolean BREAK_AFTER_ERROR_FOUND = true; - private OWLOntology ontology; private OWLOntologyManager manager; private OWLDataFactory factory; @@ -100,6 +88,8 @@ private boolean useLinkedData; private boolean useCache; + private Set<String> linkedDataNamespaces; + private PelletExplanation expGen; private SparqlEndpoint endpoint; @@ -115,17 +105,16 @@ SimpleLayout layout = new SimpleLayout(); ConsoleAppender consoleAppender = new ConsoleAppender(layout); -// DailyRollingFileAppender fileAppender = new DailyRollingFileAppender(layout, "log/incremental.log", "'.'yyyy-MM-dd_HH"); logger.removeAllAppenders(); logger.addAppender(consoleAppender); -// logger.addAppender(fileAppender); - logger.setLevel(Level.INFO); + logger.setLevel(Level.OFF); PelletOptions.USE_COMPLETION_QUEUE = true; PelletOptions.USE_INCREMENTAL_CONSISTENCY = true; PelletOptions.USE_SMART_RESTORE = false; cache = Cache.getDefaultCache(); + linkedDataNamespaces = new HashSet<String>(); } @@ -136,7 +125,6 @@ public void run(String endpointURI, String defaultGraphURI){ this.endpointURI = endpointURI; this.defaultGraphURI = defaultGraphURI; - try { this.endpoint = new SparqlEndpoint(new URL(endpointURI), Collections.singletonList(defaultGraphURI), Collections.EMPTY_LIST); } catch (MalformedURLException e) { @@ -182,7 +170,7 @@ mon.setSize(disjointWithCount + equivalentClassCount + subClassOfCount + domainCount + rangeCount + subPropertyOfCount + equivalentPropertyCount + inverseOfCount + functionalCount - + inverseFunctionalCount + transitiveCount); + + inverseFunctionalCount + transitiveCount + classAssertionCount); Set<OWLClass> visitedClasses = new HashSet<OWLClass>(); @@ -195,7 +183,6 @@ Set<OWLAxiom> subClassOfAxioms = new HashSet<OWLAxiom>(); Set<OWLClassAssertionAxiom> classAssertionAxioms = new HashSet<OWLClassAssertionAxiom>(); - boolean schemaComplete = false; int i = 0; while(true){ //first we expand the ontology schema @@ -286,10 +273,10 @@ break; } //removal due to find other inconsistencies not evolving this axiom - manager.removeAxiom(ontology, factory.getOWLDisjointClassesAxiom( - factory.getOWLClass(IRI.create("http://dbpedia.org/ontology/Organisation")), - factory.getOWLClass(IRI.create("http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing")) - )); +// manager.removeAxiom(ontology, factory.getOWLDisjointClassesAxiom( +// factory.getOWLClass(IRI.create("http://dbpedia.org/ontology/Organisation")), +// factory.getOWLClass(IRI.create("http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing")) +// )); // manager.removeAxiom(ontology, factory.getOWLObjectPropertyRangeAxiom( // factory.getOWLObjectProperty(IRI.create("http://dbpedia.org/ontology/artist")), // factory.getOWLClass(IRI.create("http://dbpedia.org/ontology/Person")))); @@ -427,14 +414,29 @@ if(mon.isCancelled()){ break; } - if(cls.toStringID().contains("#")){ - if(visitedLinkedDataResources.contains(cls)){ - continue; + if(!linkedDataNamespaces.isEmpty()){ + for(String namespace : linkedDataNamespaces){ + if(cls.toStringID().startsWith(namespace)){ + if(visitedLinkedDataResources.contains(cls)){ + continue; + } + manager.addAxioms(ontology, getAxiomsFromLinkedDataSource(cls.getIRI())); + mon.setProgress(ontology.getLogicalAxiomCount()); + visitedLinkedDataResources.add(cls); + break; + } } - manager.addAxioms(ontology, getAxiomsFromLinkedDataSource(cls.getIRI())); - mon.setProgress(ontology.getLogicalAxiomCount()); - visitedLinkedDataResources.add(cls); + } else { + if(cls.toStringID().contains("#")){ + if(visitedLinkedDataResources.contains(cls)){ + continue; + } + manager.addAxioms(ontology, getAxiomsFromLinkedDataSource(cls.getIRI())); + mon.setProgress(ontology.getLogicalAxiomCount()); + visitedLinkedDataResources.add(cls); + } } + } if(mon.isCancelled()){ break; @@ -446,13 +448,27 @@ if(mon.isCancelled()){ break; } - if(prop.toStringID().contains("#")){ - if(visitedLinkedDataResources.contains(prop)){ - continue; + if(!linkedDataNamespaces.isEmpty()){ + for(String namespace : linkedDataNamespaces){ + if(prop.toStringID().startsWith(namespace)){ + if(visitedLinkedDataResources.contains(prop)){ + continue; + } + manager.addAxioms(ontology, getAxiomsFromLinkedDataSource(prop.getIRI())); + mon.setProgress(ontology.getLogicalAxiomCount()); + visitedLinkedDataResources.add(prop); + break; + } } - manager.addAxioms(ontology, getAxiomsFromLinkedDataSource(prop.getIRI())); - mon.setProgress(ontology.getLogicalAxiomCount()); - visitedLinkedDataResources.add(prop); + } else { + if(prop.toStringID().contains("#")){ + if(visitedLinkedDataResources.contains(prop)){ + continue; + } + manager.addAxioms(ontology, getAxiomsFromLinkedDataSource(prop.getIRI())); + mon.setProgress(ontology.getLogicalAxiomCount()); + visitedLinkedDataResources.add(prop); + } } } if(mon.isCancelled()){ @@ -465,13 +481,27 @@ if(mon.isCancelled()){ break; } - if(prop.toStringID().contains("#")){ - if(visitedLinkedDataResources.contains(prop)){ - continue; + if(!linkedDataNamespaces.isEmpty()){ + for(String namespace : linkedDataNamespaces){ + if(prop.toStringID().startsWith(namespace)){ + if(visitedLinkedDataResources.contains(prop)){ + continue; + } + manager.addAxioms(ontology, getAxiomsFromLinkedDataSource(prop.getIRI())); + mon.setProgress(ontology.getLogicalAxiomCount()); + visitedLinkedDataResources.add(prop); + break; + } } - manager.addAxioms(ontology, getAxiomsFromLinkedDataSource(prop.getIRI())); - mon.setProgress(ontology.getLogicalAxiomCount()); - visitedLinkedDataResources.add(prop); + } else { + if(prop.toStringID().contains("#")){ + if(visitedLinkedDataResources.contains(prop)){ + continue; + } + manager.addAxioms(ontology, getAxiomsFromLinkedDataSource(prop.getIRI())); + mon.setProgress(ontology.getLogicalAxiomCount()); + visitedLinkedDataResources.add(prop); + } } } if(mon.isCancelled()){ @@ -497,41 +527,6 @@ showStats(); logger.info("Ontology is consistent: " + reasoner.isConsistent()); -// ((PelletReasoner)reasoner).getKB().setDoExplanation(true); -// for(ATermAppl a : ((PelletReasoner)reasoner).getKB().getExplanationSet()){ -// System.err.println(a); -// } -// for(Set<OWLAxiom> exp : expGen.getInconsistencyExplanations()){ -// for(OWLAxiom ax : exp){ -// System.out.println(ax); -// for(OWLClass cls : ax.getClassesInSignature()){ -// System.out.println(cls + " = " + getLabel(cls.toStringID())); -// } -// for(OWLObjectProperty prop : ax.getObjectPropertiesInSignature()){ -// System.out.println(prop + " = " + getLabel(prop.toStringID())); -// } -// for(OWLNamedIndividual ind : ax.getIndividualsInSignature()){ -// System.out.println(ind + " = " + getLabel(ind.toStringID())); -// } -// for(OWLDataProperty prop : ax.getDataPropertiesInSignature()){ -// System.out.println(prop + " = " + getLabel(prop.toStringID())); -// } -// } -// -// } -// try { -// ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); -// PrintWriter out = new PrintWriter( System.out ); -// renderer.startRendering( out ); -// renderer.render(expGen.getInconsistencyExplanations()); -// renderer.endRendering(); -// } catch (UnsupportedOperationException e) { -// e.printStackTrace(); -// } catch (OWLException e) { -// e.printStackTrace(); -// } catch (IOException e) { -// e.printStackTrace(); -// } } @@ -560,9 +555,11 @@ this.useCache = useCache; } + public void setLinkedDataNamespaces(Set<String> namespaces){ + this.linkedDataNamespaces = namespaces; + } - private int getAxiomCountForPredicate(Property predicate){ StringBuilder sb = new StringBuilder(); sb.append("SELECT COUNT(*) WHERE {"); Added: trunk/src/dl-learner/org/dllearner/tools/ore/sparql/SPARULTranslator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/sparql/SPARULTranslator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/sparql/SPARULTranslator.java 2010-07-21 15:26:22 UTC (rev 2209) @@ -0,0 +1,72 @@ +package org.dllearner.tools.ore.sparql; + +import java.util.List; + +import org.coode.owlapi.rdf.model.AbstractTranslator; +import org.coode.owlapi.rdf.model.RDFLiteralNode; +import org.coode.owlapi.rdf.model.RDFNode; +import org.coode.owlapi.rdf.model.RDFResourceNode; +import org.coode.owlapi.rdf.model.RDFTriple; +import org.semanticweb.owlapi.model.IRI; +import org.semanticweb.owlapi.model.OWLOntology; +import org.semanticweb.owlapi.model.OWLOntologyChange; +import org.semanticweb.owlapi.model.OWLOntologyManager; +import org.semanticweb.owlapi.model.RemoveAxiom; + +public class SPARULTranslator extends AbstractTranslator<RDFNode, RDFResourceNode, RDFResourceNode, RDFLiteralNode> { + + private StringBuilder sb; + + public SPARULTranslator(OWLOntologyManager manager, OWLOntology ontology, + boolean useStrongTyping) { + super(manager, ontology, useStrongTyping); + // TODO Auto-generated constructor stub + } + + public String translate(List<OWLOntologyChange> changes){ + sb = new StringBuilder(); + for(OWLOntologyChange change : changes){ + sb.append(change instanceof RemoveAxiom ? "DELETE DATA" : "INSERT DATA"); + sb.append("{"); + change.getAxiom().accept(this); + sb.append("}"); + sb.append("\n"); + } + + return sb.toString(); + } + + @Override + protected void addTriple(RDFResourceNode subject, RDFResourceNode pred, + RDFNode object) { + sb.append(subject).append(" ").append(pred).append(" ").append(object); + + } + + @Override + protected RDFResourceNode getAnonymousNode(Object key) { + return new RDFResourceNode(System.identityHashCode(key)); + } + + @Override + protected RDFLiteralNode getLiteralNode(String literal, IRI datatype) { + return new RDFLiteralNode(literal, datatype); + } + + @Override + protected RDFLiteralNode getLiteralNode(String literal, String lang) { + return new RDFLiteralNode(literal, lang); + } + + @Override + protected RDFResourceNode getPredicateNode(IRI iri) { + return new RDFResourceNode(iri); + } + + @Override + protected RDFResourceNode getResourceNode(IRI iri) { + return new RDFResourceNode(iri); + } + + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DebugFromSparqlDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DebugFromSparqlDialog.java 2010-07-21 08:24:55 UTC (rev 2208) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DebugFromSparqlDialog.java 2010-07-21 15:26:22 UTC (rev 2209) @@ -10,6 +10,8 @@ import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.IOException; @@ -19,13 +21,16 @@ import java.net.URL; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; +import javax.swing.AbstractAction; import javax.swing.BorderFactory; import javax.swing.Box; +import javax.swing.DefaultListModel; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; @@ -33,10 +38,14 @@ import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; +import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.JToggleButton; +import javax.swing.ListSelectionModel; import javax.swing.ProgressMonitor; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; @@ -78,6 +87,8 @@ private JTextField defaultGraphField; private JButton searchStopButton; + private JButton addNamespaceButton; + private JButton deleteNamespaceButton; private JLabel messageLabel; private String progressMessage; @@ -87,10 +98,15 @@ private JCheckBox useLinkedDataCheckBox; private JCheckBox useCacheCheckBox; + private JCheckBox restrictNamespacesCheckBox; + private JList linkedDataNamespaceslist; + private DefaultListModel linkedDataNamespaceslistModel; + + private IncrementalInconsistencyFinder inc; - private SparqlExtractOptionsPanel optionsPanel; + private JPanel optionsPanel; private JToggleButton optionsButton; private ImageIcon toggledIcon = new ImageIcon(OREApplication.class.getResource("toggled.gif")); private ImageIcon untoggledIcon = new ImageIcon(OREApplication.class.getResource("untoggled.gif")); @@ -188,31 +204,138 @@ c.fill = GridBagConstraints.NONE; panel.add(searchStopButton, c); + progressBar = new JProgressBar(); + panel.add(progressBar, c); + messageLabel = new JLabel(""); panel.add(messageLabel, c); - progressBar = new JProgressBar(); - panel.add(progressBar, 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); + optionsButton.addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + optionsButton.setBorderPainted(true); + optionsButton.setContentAreaFilled(true); + }; + @Override + public void mouseExited(MouseEvent e) { + 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 = createSPARQLOptionsPanel(); + panel.add(optionsPanel, c); + optionsPanel.setVisible(false); + JLabel padding = new JLabel(); + c.weighty = 1.0; + panel.add(padding, c); + getContentPane().add(panel, BorderLayout.CENTER); + } + + private JPanel createSPARQLOptionsPanel(){ + JPanel panel = new JPanel(); + panel.setLayout(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.HORIZONTAL; + + c.gridwidth = GridBagConstraints.REMAINDER; + useCacheCheckBox = new JCheckBox("Use cache"); panel.add(useCacheCheckBox, c); + c.gridwidth = 1; useLinkedDataCheckBox = new JCheckBox("Use linked data"); + useLinkedDataCheckBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + restrictNamespacesCheckBox.setEnabled(useLinkedDataCheckBox.isSelected()); + linkedDataNamespaceslist.setEnabled(restrictNamespacesCheckBox.isSelected() && useLinkedDataCheckBox.isSelected()); + addNamespaceButton.setEnabled(restrictNamespacesCheckBox.isSelected() && useLinkedDataCheckBox.isSelected()); + deleteNamespaceButton.setEnabled(restrictNamespacesCheckBox.isSelected() && useLinkedDataCheckBox.isSelected()); + } + }); panel.add(useLinkedDataCheckBox, c); - JLabel padding = new JLabel(); - c.weighty = 1.0; - panel.add(padding, c); - getContentPane().add(panel, BorderLayout.CENTER); + c.gridwidth = GridBagConstraints.REMAINDER; + restrictNamespacesCheckBox = new JCheckBox("Restrict namespaces to:"); + restrictNamespacesCheckBox.setEnabled(false); + restrictNamespacesCheckBox.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + linkedDataNamespaceslist.setEnabled(restrictNamespacesCheckBox.isSelected() && useLinkedDataCheckBox.isSelected()); + addNamespaceButton.setEnabled(restrictNamespacesCheckBox.isSelected() && useLinkedDataCheckBox.isSelected()); + deleteNamespaceButton.setEnabled(restrictNamespacesCheckBox.isSelected() && useLinkedDataCheckBox.isSelected()); + } + }); + panel.add(restrictNamespacesCheckBox, c); + c.weightx = 1.0; + c.gridx = 1; + linkedDataNamespaceslistModel = new DefaultListModel(); + linkedDataNamespaceslist = new JList(linkedDataNamespaceslistModel); + linkedDataNamespaceslist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + linkedDataNamespaceslist.setSelectedIndex(0); + linkedDataNamespaceslist.setVisibleRowCount(5); + linkedDataNamespaceslist.setEnabled(false); + JScrollPane listScrollPane = new JScrollPane(linkedDataNamespaceslist); + c.fill = GridBagConstraints.HORIZONTAL; + panel.add(listScrollPane, c); + + Box buttonBox = Box.createHorizontalBox(); + addNamespaceButton = createButton("Add", 'a'); + addNamespaceButton.setEnabled(false); + buttonBox.add(addNamespaceButton); + + buttonBox.add(Box.createHorizontalGlue()); + buttonBox.add(Box.createHorizontalStrut(4)); + deleteNamespaceButton = createButton("Delete", 'a'); + deleteNamespaceButton.setEnabled(false); + buttonBox.add(deleteNamespaceButton); + + JPanel buttonPanel = new JPanel(); + buttonPanel.add(buttonBox); + c.anchor = GridBagConstraints.WEST; + c.fill = GridBagConstraints.HORIZONTAL; + panel.add(buttonPanel, c); + + return panel; } - @SuppressWarnings("unused") private void addPredefinedEndpoints(){ endpointToDefaultGraph = new HashMap<URI, List<String>>(); endpointToDefaultGraph.put(URI.create("http://dbpedia-live.openlinksw.com/sparql/"), Collections.singletonList("http://dbpedia.org")); - endpointToDefaultGraph.put(URI.create("http://localhost:8890/sparql"), Collections.singletonList("http://opencyc2.org")); +// endpointToDefaultGraph.put(URI.create("http://localhost:8890/sparql"), Collections.singletonList("http://opencyc2.org")); for(URI url : endpointToDefaultGraph.keySet()){ comboBox.addItem(url.toString()); } @@ -228,26 +351,12 @@ 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) { @@ -426,12 +535,21 @@ messageLabel.setText("<html><font color=\"red\">Could not connect to SPARQL endpoint</html>"); cancel(true); } - + messageLabel.setText("Searching ..."); String endpointURI = comboBox.getSelectedItem().toString(); String defaultGraphURI = defaultGraphField.getText(); try { inc = new IncrementalInconsistencyFinder(); inc.setUseLinkedData(useLinkedDataCheckBox.isSelected()); + if(restrictNamespacesCheckBox.isSelected()){ + Set<String> namespaces = new HashSet<String>(); + for(int i = 0; i < linkedDataNamespaceslistModel.size(); i++){ + namespaces.add((String)linkedDataNamespaceslistModel.get(i)); + } + inc.setLinkedDataNamespaces(namespaces); + } else { + inc.setLinkedDataNamespaces(Collections.<String>emptySet()); + } inc.setUseCache(useCacheCheckBox.isSelected()); inc.setProgressMonitor(mon); inc.run(endpointURI, defaultGraphURI); @@ -476,6 +594,22 @@ canceled = true; returnCode = CANCEL_RETURN_CODE; closeDialog(); + } else if(e.getActionCommand().equals("Add")){ + String s = (String)JOptionPane.showInputDialog( + this, + "Enter linked data namespace", + "Enter namespace", + JOptionPane.PLAIN_MESSAGE, + null, + null, + ""); + if(s != null){ + linkedDataNamespaceslistModel.addElement(s); + } + } else if(e.getActionCommand().equals("Delete")){ + if(linkedDataNamespaceslist.getSelectedValue() != null){ + linkedDataNamespaceslistModel.removeElement(linkedDataNamespaceslist.getSelectedValue()); + } } else if(e.getActionCommand().equals("endpoints")){ messageLabel.setText(""); JComboBox cb = (JComboBox)e.getSource(); @@ -546,7 +680,7 @@ SwingUtilities.invokeLater(new Runnable() { @Override public void run() { - messageLabel.setText(progressMessage); +// messageLabel.setText(progressMessage); } }); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/OverrideFileChooser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/OverrideFileChooser.java 2010-07-21 08:24:55 UTC (rev 2208) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/OverrideFileChooser.java 2010-07-21 15:26:22 UTC (rev 2209) @@ -22,7 +22,11 @@ int ans = JOptionPane.showConfirmDialog(null, "" + f.getName() + " already exists. Overwrite?", "Confirm Overwrite", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (ans == JOptionPane.OK_OPTION) { try { - OREManager.getInstance().saveOntology(f); + if(getFileFilter().getDescription().equals("SPARUL")){ + OREManager.getInstance().saveChangesAsSPARUL(f); + } else { + OREManager.getInstance().saveOntology(f); + } super.approveSelection(); } catch (OWLOntologyStorageException e) { JOptionPane.showMessageDialog(this, "Could not save file: " + e.getCause(), "Error", JOptionPane.ERROR_MESSAGE); @@ -31,7 +35,11 @@ } } else { try { - OREManager.getInstance().saveOntology(f); + if(getFileFilter().getDescription().equals("SPARUL")){ + OREManager.getInstance().saveChangesAsSPARUL(f); + } else { + OREManager.getInstance().saveOntology(f); + } super.approveSelection(); } catch (OWLOntologyStorageException e) { JOptionPane.showMessageDialog(this, "Could not save file: " + e.getCause(), "Error", JOptionPane.ERROR_MESSAGE); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2010-07-21 08:24:55 UTC (rev 2208) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2010-07-21 15:26:22 UTC (rev 2209) @@ -23,16 +23,30 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.List; +import java.util.Set; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; +import org.coode.owlapi.rdf.model.RDFTranslator; import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.LearningManager.LearningMode; +import org.dllearner.tools.ore.sparql.SPARULTranslator; import org.dllearner.tools.ore.ui.OverrideFileChooser; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.SavePanel; +import org.semanticweb.owlapi.apibinding.OWLManager; +import org.semanticweb.owlapi.model.IRI; +import org.semanticweb.owlapi.model.OWLAxiom; +import org.semanticweb.owlapi.model.OWLOntology; +import org.semanticweb.owlapi.model.OWLOntologyChange; +import org.semanticweb.owlapi.model.OWLOntologyCreationException; +import org.semanticweb.owlapi.model.OWLOntologyFormat; +import org.semanticweb.owlapi.model.OWLOntologyManager; /** * Wizard panel descriptor that provides saving ontology and going back to class choose panel. @@ -55,6 +69,22 @@ setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(savePanel); + fc.addChoosableFileFilter(new FileFilter() { + + @Override + public String getDescription() { + return "SPARUL"; + } + + @Override + public boolean accept(File f) { + if (f.isDirectory()) { + return true; + } + return f.getName().toLowerCase().endsWith(".sparul") + || f.getName().toLowerCase().endsWith(".sparul"); + } + }); fc.setFileFilter(new FileFilter() { @Override @@ -72,6 +102,7 @@ } }); + } @Override @@ -124,6 +155,7 @@ } private boolean saveOntology(){ + int ret = fc.showSaveDialog(savePanel); if(ret == JFileChooser.APPROVE_OPTION){ 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 2010-07-21 08:24:55 UTC (rev 2208) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java 2010-07-21 15:26:22 UTC (rev 2209) @@ -91,7 +91,7 @@ box.add(Box.createVerticalStrut(strutHeight)); - debugFromSparqlEndpointLink = new LinkLabel("Debug OWL-Ontology from Sparql-Endpoint"); + debugFromSparqlEndpointLink = new LinkLabel("Search inconsistency at Sparql-Endpoint"); debugFromSparqlEndpointLink.setName("debugFromSparqlEndpointLink"); box.add(debugFromSparqlEndpointLink); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |