From: <lor...@us...> - 2009-09-20 14:45:51
|
Revision: 1853 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1853&view=rev Author: lorenz_b Date: 2009-09-20 14:45:41 +0000 (Sun, 20 Sep 2009) Log Message: ----------- fixed bug in Sparql extraction - choosing predefined filter "YAGO" seems to fail into an exception when testing it for DPPEDIA endpoint Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -32,7 +32,7 @@ } public void addURI(URI uri){ - if(!uriList.contains(uri)){ + if(uri != null && !uriList.contains(uri)){ uriList.add(uri); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -96,13 +96,11 @@ SparqlKnowledgeSource ks = cm.knowledgeSource(SparqlKnowledgeSource.class); cm.applyConfigEntry(ks, "predefinedEndpoint", "DBPEDIA"); ks.getConfigurator().setInstances(instances); - ks.getConfigurator().setPredefinedFilter("YAGO"); -// ks.getConfigurator().setSaveExtractedFragment(true); +// ks.getConfigurator().setPredefinedFilter("YAGO"); ks.init(); ReasonerComponent reasoner = cm.reasoner(FastInstanceChecker.class, ks); reasoner.init(); ClassLearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); -// lp.getConfigurator().setPositiveExamples(posExamples); lp.getConfigurator().setClassToDescribe(new URL(exampleClass)); lp.init(); LearningAlgorithm la = cm.learningAlgorithm(CELOE.class, lp, reasoner); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -32,12 +32,13 @@ public static void main(String[] args) { - - test(); - miniTest(); + +// test(); +// miniTest(); miniEconomyTest(); - universityTest(); +// universityTest(); } + public static void test(){ String file = "file:/home/lorenz/neu.owl"; @@ -66,9 +67,6 @@ } catch (OWLOntologyCreationException e) { // TODO Auto-generated catch block e.printStackTrace(); - } catch (OWLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); } } @@ -78,61 +76,35 @@ try { OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); - PrintWriter pw = new PrintWriter(System.out); - renderer.startRendering(pw); - - OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); - Set<OWLOntology> ontologies = new HashSet<OWLOntology>(); - ontologies.add(ontology); + PelletReasonerFactory resonerFact = new PelletReasonerFactory(); OWLDataFactory dataFactory = manager.getOWLDataFactory(); - - ////////////////////HermiT test -// HermiTReasonerFactory f = new HermiTReasonerFactory(); -// HermitReasoner re = (HermitReasoner) f.createReasoner(manager); -// re.loadOntologies(ontologies); -// Timer t1 = new Timer("classifying"); -// t1.start(); -// re.classify(); -// t1.stop(); -// re.realise(); -// System.out.println("HermiT" + re.getInconsistentClasses()); - ////////////////////////////// Reasoner reasoner = resonerFact.createReasoner(manager); - reasoner.loadOntologies(ontologies); - SwingProgressMonitor monitor = new SwingProgressMonitor(); - reasoner.getKB().getTaxonomyBuilder().setProgressMonitor(monitor); + reasoner.loadOntology(ontology); + reasoner.classify(); System.out.println(reasoner.getInconsistentClasses()); LaconicExplanationGenerator expGen = new LaconicExplanationGenerator( - manager, resonerFact, ontologies); + manager, resonerFact, Collections.singleton(ontology)); - - - - Set<OWLClass> unsatClasses = reasoner.getInconsistentClasses(); OWLSubClassAxiom unsatAxiom; - unsatAxiom = dataFactory.getOWLSubClassAxiom(dataFactory.getOWLClass(URI.create("http://reliant.teknowledge.com/DAML/Economy.owl#Cassava")), - dataFactory.getOWLNothing()); -// for (OWLClass unsat : unsatClasses) { -// unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory -// .getOWLNothing()); -// Set<Set<OWLAxiom>> preciseJusts = expGen -// .getExplanations(unsatAxiom); -// renderer.render(unsatAxiom, preciseJusts); -// } - Set<Explanation> preciseJusts = expGen.getExplanations(unsatAxiom); -// renderer.render(unsatAxiom, preciseJusts); - renderer.endRendering(); + for (OWLClass unsat : unsatClasses) { + unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory + .getOWLNothing()); + Set<Explanation> explanations = expGen + .getExplanations(unsatAxiom); + System.out.println(explanations); + } + + } catch (OWLOntologyCreationException e) { // TODO Auto-generated catch block e.printStackTrace(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -1,6 +1,7 @@ package org.dllearner.tools.ore.ui; import java.awt.BorderLayout; +import java.awt.Cursor; import java.awt.Dialog; import java.awt.Dimension; import java.awt.GridBagConstraints; @@ -50,7 +51,6 @@ import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.utilities.datastructures.SetManipulation; -import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; public class ExtractFromSparqlDialog extends JDialog implements ActionListener, PropertyChangeListener, DocumentListener { @@ -94,7 +94,7 @@ private Map<URL, List<String>> endpointToDefaultGraph; public ExtractFromSparqlDialog(Dialog owner) { - super(owner, "Extract fragment from Sparql-endpoint", true); + super(owner, "Extract fragment from SPARQL endpoint", true); // Create the controls createControls(); @@ -143,7 +143,7 @@ JPanel endPointHolderPanel = new JPanel(); endPointHolderPanel.setLayout(new GridLayout(0, 1)); - endPointHolderPanel.setBorder(new TitledBorder("Sparql endpoint")); + endPointHolderPanel.setBorder(new TitledBorder("SPARQL endpoint")); comboBox = new JComboBox(); comboBox.setEditable(true); comboBox.setActionCommand("endpoints"); @@ -160,7 +160,7 @@ JPanel classHolderPanel = new JPanel(); classHolderPanel.setLayout(new GridLayout(0, 1)); - classHolderPanel.setBorder(new TitledBorder("Class to learn")); + classHolderPanel.setBorder(new TitledBorder("Class to investigate")); asLabelButton = new JRadioButton("label"); asURLButton = new JRadioButton("URI"); asURLButton.setSelected(true); @@ -297,21 +297,27 @@ } private void extract() { - if(urlIsConnectable()){ - message.setText(""); - mon = new ProgressMonitor(this, "Extracting fragment", "", 0, 100); - extractTask = new OntologyExtractingTask(mon); - extractTask.addPropertyChangeListener(this); - extractTask.execute(); - } else { - message.setText("<html><font color=\"red\">Could not connect to endpoint</html>"); - } + message.setText("Checking SPARQL endpoint availability"); + setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + mon = new ProgressMonitor(this, "Extracting fragment", "", 0, 100); + + extractTask = new OntologyExtractingTask(this, mon); + extractTask.addPropertyChangeListener(this); + extractTask.execute(); + } private boolean urlIsConnectable() - { + { + + URL url = null; try { +// List<String> defaultGraphURIS = new ArrayList<String>(1); +// defaultGraphURIS.add(defaultGraphField.getText()); +// SparqlEndpoint endpoint = new SparqlEndpoint(new URL(comboBox.getSelectedItem().toString()), defaultGraphURIS, Collections.<String>emptyList()); +// url = new URL(endpoint.getHTTPRequest() + "SELECT * WHERE {?s ?p ?o} LIMIT 1"); url = new URL((String)comboBox.getSelectedItem()); } catch (MalformedURLException e1) { // TODO Auto-generated catch block @@ -368,13 +374,23 @@ class OntologyExtractingTask extends SwingWorker<Void, Void>{ private ProgressMonitor mon; + private JDialog dialog; - public OntologyExtractingTask(ProgressMonitor mon) { - this.mon = mon; + public OntologyExtractingTask(JDialog dialog, ProgressMonitor mon) { + this.mon = mon; + this.dialog = dialog; } @Override public Void doInBackground() { + if(urlIsConnectable()){ + message.setText("Successfully connected to SPARQL endpoint"); + + } else { + message.setText("<html><font color=\"red\">Could not connect to SPARQL endpoint</html>"); + cancel(true); + } + ComponentManager cm = ComponentManager.getInstance(); URL endpointURL = null; try { @@ -387,27 +403,33 @@ defaultGraphURIS.add(defaultGraphField.getText()); SparqlEndpoint endpoint = new SparqlEndpoint(endpointURL, defaultGraphURIS, Collections.<String>emptyList()); task = new SPARQLTasks(endpoint); - String classKBString; + String concept; if(asLabelButton.isSelected()){ - classKBString = "\"" + getClassFromLabel() + "\""; + concept = getClassFromLabel(); } else { - classKBString = "\"" + classField.getText() +"\""; + concept = classField.getText(); } +// String classKBString; +// if(asLabelButton.isSelected()){ +// classKBString = "\"" + getClassFromLabel() + "\""; +// } else { +// classKBString = "\"" + classField.getText() +"\""; +// } - AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL( - task); - pos.makePositiveExamplesFromConcept(classKBString); +// AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL( +// task); +// pos.makePositiveExamplesFromConcept(classKBString); - SortedSet<String> allPosExamples = pos.getPosExamples(); + SortedSet<String> allPosExamples = getPosExamples(concept);//pos.getPosExamples(); SortedSet<String> posExamples = SetManipulation.stableShrink( allPosExamples, 20); - + System.out.println(posExamples); SortedSet<String> instances = new TreeSet<String>(posExamples); ks = cm.knowledgeSource(SparqlKnowledgeSource.class); - ks.getConfigurator().setUrl(SparqlEndpoint.getEndpointDBpedia().getURL()); + ks.getConfigurator().setUrl(endpoint.getURL()); ks.getConfigurator().setInstances(instances); - ks.getConfigurator().setPredefinedFilter("YAGO"); +// ks.getConfigurator().setPredefinedFilter("YAGO"); ks.getConfigurator().setBreakSuperClassRetrievalAfter(optionsPanel.getBreakSuperClassRetrievalAfterValue()); ks.getConfigurator().setRecursionDepth(optionsPanel.getRecursionDepthValue()); ks.getConfigurator().setUseCache(optionsPanel.isUseCache()); @@ -418,7 +440,7 @@ ks.getConfigurator().setGetPropertyInformation(optionsPanel.isGetPropertyInformation()); ks.getConfigurator().setCloseAfterRecursion(optionsPanel.isCloseAfterRecursion()); ks.addProgressMonitor(mon); - + ks.getConfigurator().setSaveExtractedFragment(true); ks.init(); return null; @@ -426,12 +448,25 @@ @Override public void done() { - + dialog.setCursor(null); if(!isCancelled() && ks != null){ okButton.setEnabled(true); message.setText("<html><font color=\"green\">Fragment successfully extracted</html>"); + } } + + private SortedSet<String> getPosExamples(String concept){ + SortedSet<String> examples = new TreeSet<String>(); + SortedSet<String> superClasses = task.getSuperClasses(concept, 2); + + for (String sup : superClasses) { + examples.addAll(task.retrieveInstancesForClassDescription("\"" + + sup + "\"", 20)); + + } + return examples; + } } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |