You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(120) |
Sep
(36) |
Oct
(116) |
Nov
(17) |
Dec
(44) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(143) |
Feb
(192) |
Mar
(74) |
Apr
(84) |
May
(105) |
Jun
(64) |
Jul
(49) |
Aug
(120) |
Sep
(159) |
Oct
(156) |
Nov
(51) |
Dec
(28) |
2009 |
Jan
(17) |
Feb
(55) |
Mar
(33) |
Apr
(57) |
May
(54) |
Jun
(28) |
Jul
(6) |
Aug
(16) |
Sep
(38) |
Oct
(30) |
Nov
(26) |
Dec
(52) |
2010 |
Jan
(7) |
Feb
(91) |
Mar
(65) |
Apr
(2) |
May
(14) |
Jun
(25) |
Jul
(38) |
Aug
(48) |
Sep
(80) |
Oct
(70) |
Nov
(75) |
Dec
(77) |
2011 |
Jan
(68) |
Feb
(53) |
Mar
(51) |
Apr
(35) |
May
(65) |
Jun
(101) |
Jul
(29) |
Aug
(230) |
Sep
(95) |
Oct
(49) |
Nov
(110) |
Dec
(63) |
2012 |
Jan
(41) |
Feb
(42) |
Mar
(25) |
Apr
(46) |
May
(51) |
Jun
(44) |
Jul
(45) |
Aug
(29) |
Sep
(12) |
Oct
(9) |
Nov
(17) |
Dec
(2) |
2013 |
Jan
(12) |
Feb
(14) |
Mar
(7) |
Apr
(16) |
May
(54) |
Jun
(27) |
Jul
(11) |
Aug
(5) |
Sep
(85) |
Oct
(27) |
Nov
(37) |
Dec
(32) |
2014 |
Jan
(8) |
Feb
(29) |
Mar
(5) |
Apr
(3) |
May
(22) |
Jun
(3) |
Jul
(4) |
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <lor...@us...> - 2009-09-23 11:26:21
|
Revision: 1858 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1858&view=rev Author: lorenz_b Date: 2009-09-23 11:26:14 +0000 (Wed, 23 Sep 2009) Log Message: ----------- only showing classes that have at least one individual when selected class expression with accuracy 100%, example repair is skipped Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.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/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-23 10:48:09 UTC (rev 1857) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-23 11:26:14 UTC (rev 1858) @@ -67,6 +67,7 @@ private Set<OWLClass> rootClasses; private Set<OWLClass> derivedClasses; + private Set<OWLClass> unsatClasses; private boolean ontologyChanged = true; @@ -94,6 +95,8 @@ } rootClasses = new HashSet<OWLClass>(); derivedClasses = new HashSet<OWLClass>(); + unsatClasses = new HashSet<OWLClass>(); + depend2Classes = new HashSet<OWLClass>(); depth2UniversalRestrictionPropertyMap = new HashMap<Integer, Set<OWLObjectAllRestriction>>(); depth2ExistsRestrictionPropertyMap = new HashMap<Integer, Set<OWLObjectPropertyExpression>>(); @@ -138,6 +141,7 @@ // } catch (OWLOntologyChangeException e) { // e.printStackTrace(); // } + unsatClasses.clear(); rootClasses.clear(); derivedClasses.clear(); depend2Classes.clear(); @@ -147,14 +151,16 @@ parent2Children.clear(); computePossibleRoots(); pruneRoots(); + derivedClasses.addAll(unsatClasses); derivedClasses.removeAll(rootClasses); rootClasses.remove(manager.getOWLDataFactory().getOWLNothing()); } private void computePossibleRoots(){ - derivedClasses.addAll(reasoner.getInconsistentClasses()); - for(OWLClass cls : derivedClasses){ + unsatClasses.addAll(reasoner.getInconsistentClasses()); + + for(OWLClass cls : unsatClasses){ reset(); for(OWLDescription equi : cls.getEquivalentClasses(ontology)){ equi.accept(this); @@ -243,7 +249,7 @@ filler.accept(this); depth--; } else { - if(!reasoner.isSatisfiable(filler)){ + if(unsatClasses.contains(filler.asOWLClass())){ depend2Classes.add(filler.asOWLClass()); if(restr instanceof OWLObjectAllRestriction){ addAllRestrictionProperty((OWLObjectAllRestriction) restr); @@ -276,13 +282,10 @@ @Override - public void visit(OWLClass cls) { - - - if(!reasoner.isSatisfiable(cls)) { + public void visit(OWLClass cls) { + if(unsatClasses.contains(cls)) { depend2Classes.add(cls); } - } @Override @@ -292,7 +295,7 @@ for(OWLDescription op : and.getOperands()) { if(op.isAnonymous()){ op.accept(this); - } else if(!reasoner.isSatisfiable(op)) { + } else if(unsatClasses.contains(op.asOWLClass())) { depend2Classes.add(op.asOWLClass()); } } @@ -301,21 +304,22 @@ @Override public void visit(OWLObjectUnionOf or) { - - - for(OWLDescription op : or.getOperands()){ - if(reasoner.isSatisfiable(op)){ - return; - } + + // check whether one of the union operands is satisfiable + for (OWLDescription op : or.getOperands()) { + if (!unsatClasses.contains(op)) { + return; } - for(OWLDescription op : or.getOperands()){ - if(op.isAnonymous()){ - op.accept(this); - } else { - depend2Classes.add(op.asOWLClass()); - } + } + // all operands are unsatisfiable + for (OWLDescription op : or.getOperands()) { + if (op.isAnonymous()) { + op.accept(this); + } else { + depend2Classes.add(op.asOWLClass()); } - + } + } @Override 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-23 10:48:09 UTC (rev 1857) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-23 11:26:14 UTC (rev 1858) @@ -152,17 +152,17 @@ /** - * Returns an instance of the JDialog that this class created. This is useful in - * the event that you want to change any of the JDialog parameters manually. - * @return The JDialog instance that this class created. + * Returns an instance of the JFrame that this class created. This is useful in + * the event that you want to change any of the JFrame parameters manually. + * @return The JFrame instance that this class created. */ public JFrame getDialog() { return wizardDialog; } /** - * Returns the owner of the generated javax.swing.JDialog. - * @return The owner (java.awt.Frame or java.awt.Dialog) of the javax.swing.JDialog generated + * Returns the owner of the generated javax.swing.JFrame. + * @return The owner (java.awt.Frame or java.awt.Dialog) of the javax.swing.JFrame generated * by this class. */ public Component getOwner() { @@ -170,7 +170,7 @@ } /** - * Sets the title of the generated javax.swing.JDialog. + * Sets the title of the generated javax.swing.JFrame. * @param s The title of the dialog. */ public void setTitle(String s) { @@ -186,7 +186,7 @@ } /** - * Sets the modality of the generated javax.swing.JDialog. + * Sets the modality of the generated javax.swing.JFrame. * @param b the modality of the dialog */ public void setModal(boolean b) { @@ -195,7 +195,7 @@ /** * Returns the modality of the dialog. - * @return A boolean indicating whether or not the generated javax.swing.JDialog is modal. + * @return A boolean indicating whether or not the generated javax.swing.JFrame is modal. */ public boolean isModal() {return false; // return wizardDialog.isModal(); @@ -247,11 +247,6 @@ } - public void updatePanel(JPanel panel, Object id){ - cardPanel.remove(4); - cardPanel.add(panel, id); - } - /** * Displays the panel identified by the object passed in. This is the same Object-based * identified used when registering the panel. @@ -374,7 +369,7 @@ } /** - * This method initializes the components for the wizard dialog: it creates a JDialog + * This method initializes the components for the wizard dialog: it creates a JFrame * as a CardLayout panel surrounded by a small amount of space on each side, as well * as three buttons at the bottom. */ 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-23 10:48:09 UTC (rev 1857) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-23 11:26:14 UTC (rev 1858) @@ -22,11 +22,9 @@ import java.awt.event.ActionListener; -import java.util.List; import javax.swing.JOptionPane; -import org.dllearner.core.owl.Description; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.InconsistencyExplanationPanelDescriptor; @@ -35,7 +33,6 @@ import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.SavePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.UnsatisfiableExplanationPanelDescriptor; -import org.semanticweb.owl.model.OWLOntologyChange; /** * This class is responsible for reacting to events generated by pushing any of the @@ -118,52 +115,64 @@ UnsatisfiableExplanationPanelDescriptor.IDENTIFIER, unsatDescriptor); nextPanelDescriptor = UnsatisfiableExplanationPanelDescriptor.IDENTIFIER; + wizard.setCurrentPanel(nextPanelDescriptor); + unsatDescriptor.fillUnsatisfiableClassesList(); } else { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; ((ClassChoosePanelDescriptor) nextDescriptor).refill(); } } - } else if (currentPanelDescriptor.getPanelDescriptorIdentifier() - .equals(InconsistencyExplanationPanelDescriptor.IDENTIFIER)) { + } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(InconsistencyExplanationPanelDescriptor.IDENTIFIER)) { ore.getReasoner().classify(); if (ore.getReasoner().getInconsistentClasses().size() > 0) { - + UnsatisfiableExplanationPanelDescriptor unsatDescriptor = new UnsatisfiableExplanationPanelDescriptor(); + unsatDescriptor.init(); + wizard.registerWizardPanel( + UnsatisfiableExplanationPanelDescriptor.IDENTIFIER, + unsatDescriptor); + nextPanelDescriptor = UnsatisfiableExplanationPanelDescriptor.IDENTIFIER; } else { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; ((ClassChoosePanelDescriptor) nextDescriptor).refill(); } - } else if (currentPanelDescriptor.getPanelDescriptorIdentifier() - .equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)) { + } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)) { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; ((ClassChoosePanelDescriptor) nextDescriptor).refill(); - } else if (nextPanelDescriptor - .equals(LearningPanelDescriptor.IDENTIFIER)) { - ore.makeOWAToCWA(); + } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ClassChoosePanelDescriptor.IDENTIFIER)) { +// ore.makeOWAToCWA(); ore.setLearningProblem(); LearningPanelDescriptor learnDescriptor = ((LearningPanelDescriptor) model .getPanelHashMap().get(nextPanelDescriptor)); learnDescriptor.setPanelDefaults(); - } else if (nextPanelDescriptor.equals(RepairPanelDescriptor.IDENTIFIER)) { - RepairPanelDescriptor repair = ((RepairPanelDescriptor) model - .getPanelHashMap().get(nextPanelDescriptor)); - repair.refreshExampleLists(); - - // OWLOntologyChange change = - // model.getOre().getModi().addAxiomToOWL(model.getOre().getConceptToAdd(), - // model.getOre().getIgnoredConcept()); - // repair.getOntologyChanges().add(change); - + } +// else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(LearningPanelDescriptor.IDENTIFIER)){ +// if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ +// nextPanelDescriptor = SavePanelDescriptor.IDENTIFIER; +// } else { +// nextPanelDescriptor = RepairPanelDescriptor.IDENTIFIER; +// RepairPanelDescriptor repair = ((RepairPanelDescriptor) model +// .getPanelHashMap().get(nextPanelDescriptor)); +// repair.refreshExampleLists(); +// } + + else if(nextPanelDescriptor.equals(RepairPanelDescriptor.IDENTIFIER)){ + RepairPanelDescriptor repair = ((RepairPanelDescriptor) model + .getPanelHashMap().get(nextPanelDescriptor)); + repair.refreshExampleLists(); + + + } else if (nextPanelDescriptor.equals(SavePanelDescriptor.IDENTIFIER)) { - Description newDesc = ore.getNewClassDescription().getDescription(); - Description oldClass = ore.getCurrentClass2Learn(); +// Description newDesc = ore.getNewClassDescription().getDescription(); +// Description oldClass = ore.getCurrentClass2Learn(); +// +// List<OWLOntologyChange> changes = ore.getModifier() +// .rewriteClassDescription(newDesc, oldClass); +// ((RepairPanelDescriptor) currentPanelDescriptor) +// .getOntologyChanges().addAll(changes); - List<OWLOntologyChange> changes = ore.getModifier() - .rewriteClassDescription(newDesc, oldClass); - ((RepairPanelDescriptor) currentPanelDescriptor) - .getOntologyChanges().addAll(changes); - } if (nextPanelDescriptor instanceof WizardPanelDescriptor.FinishIdentifier) { wizard.close(Wizard.FINISH_RETURN_CODE); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-23 10:48:09 UTC (rev 1857) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-23 11:26:14 UTC (rev 1858) @@ -20,7 +20,9 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.util.Iterator; import java.util.Set; +import java.util.TreeSet; import java.util.concurrent.ExecutionException; import javax.swing.SwingWorker; @@ -49,7 +51,7 @@ /** * Information string for class choose panel. */ - public static final String INFORMATION = "As you can see, all atomic classes of the ontology are shown in the list above. " + public static final String INFORMATION = "Above all atomic classes which have at least one individual are listed. " + "Select one of them for which you want to learn equivalent class expressions," + " then press <Next>"; @@ -113,7 +115,7 @@ } public void refill(){ - TaskManager.getInstance().setTaskStarted("Retrieving atomic classes"); + TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); new ClassRetrievingTask().execute(); } @@ -125,8 +127,18 @@ class ClassRetrievingTask extends SwingWorker<Set<NamedClass>, NamedClass> { @Override - public Set<NamedClass> doInBackground() { - Set<NamedClass> classes = OREManager.getInstance().getReasoner().getNamedClasses(); + public Set<NamedClass> doInBackground() { + OREManager.getInstance().makeOWAToCWA(); + Set<NamedClass> classes = new TreeSet<NamedClass>(OREManager.getInstance().getReasoner().getNamedClasses()); + classes.remove(new NamedClass("http://www.w3.org/2002/07/owl#Thing")); + Iterator<NamedClass> iter = classes.iterator(); + while(iter.hasNext()){ + NamedClass nc = iter.next(); + int instanceCount = OREManager.getInstance().getReasoner().getIndividuals(nc).size(); + if(instanceCount == 0){ + iter.remove(); + } + } return classes; } 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-23 10:48:09 UTC (rev 1857) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-23 11:26:14 UTC (rev 1858) @@ -76,7 +76,12 @@ @Override public Object getNextPanelDescriptor() { - return RepairPanelDescriptor.IDENTIFIER; + EvaluatedDescriptionClass newClassDesc = OREManager.getInstance().getNewClassDescription(); + if(newClassDesc != null && newClassDesc.getAccuracy() == 1.0){ + return SavePanelDescriptor.IDENTIFIER; + } else { + return RepairPanelDescriptor.IDENTIFIER; + } } @Override 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 2009-09-23 10:48:09 UTC (rev 1857) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2009-09-23 11:26:14 UTC (rev 1858) @@ -62,7 +62,11 @@ @Override public Object getBackPanelDescriptor() { - return "REPAIR_PANEL"; + if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ + return LearningPanelDescriptor.IDENTIFIER; + } else { + return RepairPanelDescriptor.IDENTIFIER; + } } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-09-23 10:48:09 UTC (rev 1857) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-09-23 11:26:14 UTC (rev 1858) @@ -88,17 +88,10 @@ @Override public void aboutToDisplayPanel() { -// new RootDerivedTask(getWizard().getStatusBar()).execute(); getWizard().getInformationField().setText(INFORMATION); - } @Override - public void displayingPanel() { - new RootDerivedTask(getWizard().getStatusBar()).execute(); - } - - @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("regular")) { expMan.setLaconicMode(false); @@ -136,7 +129,9 @@ } - + public void fillUnsatisfiableClassesList(){ + new RootDerivedTask(getWizard().getStatusBar()).execute(); + } @Override public void valueChanged(ListSelectionEvent e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-09-23 10:48:16
|
Revision: 1857 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1857&view=rev Author: jenslehmann Date: 2009-09-23 10:48:09 +0000 (Wed, 23 Sep 2009) Log Message: ----------- conversion of first columns of SM2PH database Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java Modified: trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java 2009-09-23 09:35:11 UTC (rev 1856) +++ trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java 2009-09-23 10:48:09 UTC (rev 1857) @@ -20,12 +20,22 @@ package org.dllearner.examples; import java.io.File; +import java.net.URI; import java.sql.Connection; import java.sql.DriverManager; +import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Statement; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; +import org.dllearner.core.owl.ClassAssertionAxiom; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.KB; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.SubClassAxiom; +import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.utilities.Helper; import org.ini4j.IniFile; /** @@ -37,23 +47,114 @@ */ public class MonogenicDiseases { + private static URI ontologyURI = URI.create("http://dl-learner.org/mutation"); + private static File owlFile = new File("examples/mutation/mutation.owl"); + public static void main(String[] args) throws ClassNotFoundException, BackingStoreException, SQLException { // reading values for db connection from ini file - String iniFile = "mutant.ini"; + String iniFile = "src/dl-learner/org/dllearner/examples/mutation.ini"; Preferences prefs = new IniFile(new File(iniFile)); String dbServer = prefs.node("database").get("server", null); String dbName = prefs.node("database").get("db", null); String dbUser = prefs.node("database").get("user", null); String dbPass = prefs.node("database").get("pass", null); + String table = prefs.node("database").get("table", null); + // connect to database Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://"+dbServer+":3306/"+dbName; Connection conn = DriverManager.getConnection(url, dbUser, dbPass); + System.out.println("Successfully connected to database."); + + // prepare ontology + long startTime = System.nanoTime(); + KB kb = new KB(); + NamedClass mutationClass = new NamedClass(getURI("Mutation")); + + // size change + NamedClass protSizeIncClass = new NamedClass(getURI("ProteinSizeIncreasingMutation")); + NamedClass protSizeUnchangedClass = new NamedClass(getURI("ProteinSizeUnchangedMutation")); + NamedClass protSizeDecClass = new NamedClass(getURI("ProteinSizeDecreasingMutation")); + kb.addAxiom(new SubClassAxiom(protSizeIncClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protSizeUnchangedClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protSizeDecClass, mutationClass)); + + // charge + NamedClass protChargeIncClass = new NamedClass(getURI("ProteinChargeIncreasingMutation")); + NamedClass protChargeUnchangedClass = new NamedClass(getURI("ProteinChargeUnchangedMutation")); + NamedClass protChargeDecClass = new NamedClass(getURI("ProteinChargeDecreasingMutation")); + NamedClass protChargeChangedClass = new NamedClass(getURI("ProteinChargeChangedMutation")); + kb.addAxiom(new SubClassAxiom(protChargeIncClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protChargeUnchangedClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protChargeDecClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protChargeChangedClass, mutationClass)); + // TODO: maybe inc and plus are subclasses of changed + + // hydrophobicity + NamedClass protHydroIncClass = new NamedClass(getURI("ProteinHydroIncreasingMutation")); + NamedClass protHydroUnchangedClass = new NamedClass(getURI("ProteinHydroUnchangedMutation")); + NamedClass protHydroDecClass = new NamedClass(getURI("ProteinHydroDecreasingMutation")); + kb.addAxiom(new SubClassAxiom(protHydroIncClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protHydroUnchangedClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protHydroDecClass, mutationClass)); + + // select all data + Statement stmt = conn.createStatement(); + ResultSet rs = stmt.executeQuery("SELECT * FROM " + table); + + int count = 0; + while(rs.next()) { + // generate an individual for each entry in the table + int mutationID = rs.getInt("id"); + Individual mutationInd = new Individual(getURI("mutation" + mutationID)); + + // size change is represented via 3 classes + String modifSize = rs.getString("modif_size"); + convertThreeValuedColumn(kb, mutationInd, modifSize, protSizeIncClass, protSizeUnchangedClass, protSizeDecClass); + + // charge is done via 4 classes + String modifCharge = rs.getString("modif_charge"); + if(modifCharge.equals("+")) { + kb.addAxiom(new ClassAssertionAxiom(protChargeIncClass, mutationInd)); + } else if(modifCharge.equals("=")) { + kb.addAxiom(new ClassAssertionAxiom(protChargeUnchangedClass, mutationInd)); + } else if(modifCharge.equals("-")) { + kb.addAxiom(new ClassAssertionAxiom(protChargeDecClass, mutationInd)); + } else if(modifCharge.equals("!=")) { + kb.addAxiom(new ClassAssertionAxiom(protChargeChangedClass, mutationInd)); + } - // TODO converter script + // size change is represented via 3 classes + String modifHydro = rs.getString("modif_hydrophobicity"); + convertThreeValuedColumn(kb, mutationInd, modifHydro, protHydroIncClass, protHydroUnchangedClass, protHydroDecClass); + + count++; + } - System.out.println("Database successfully converted."); + // writing generated knowledge base + System.out.print("Writing OWL file ... "); + long startWriteTime = System.nanoTime(); + OWLAPIReasoner.exportKBToOWL(owlFile, kb, ontologyURI); + long writeDuration = System.nanoTime() - startWriteTime; + System.out.println("OK (time: " + Helper.prettyPrintNanoSeconds(writeDuration) + "; file size: " + owlFile.length()/1024 + " KB)."); + + long runTime = System.nanoTime() - startTime; + System.out.println("Database successfully converted in " + Helper.prettyPrintNanoSeconds(runTime) + "."); } + // a table column with values "+", "=", "-" is converted to subclasses + private static void convertThreeValuedColumn(KB kb, Individual mutationInd, String value, NamedClass plusClass, NamedClass equalClass, NamedClass minusClass) { + if(value.equals("+")) { + kb.addAxiom(new ClassAssertionAxiom(plusClass, mutationInd)); + } else if(value.equals("=")) { + kb.addAxiom(new ClassAssertionAxiom(equalClass, mutationInd)); + } else if(value.equals("-")) { + kb.addAxiom(new ClassAssertionAxiom(minusClass, mutationInd)); + } + } + + private static String getURI(String name) { + return ontologyURI + "#" + name; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-23 09:35:23
|
Revision: 1856 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1856&view=rev Author: lorenz_b Date: 2009-09-23 09:35:11 +0000 (Wed, 23 Sep 2009) Log Message: ----------- some gui fixes fixed bug Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.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/UnsatisfiableExplanationPanel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -57,7 +57,6 @@ try { PropertyConfigurator.configure(new URL("file:src/dl-learner/org/dllearner/tools/ore/log4j.properties")); } catch (MalformedURLException e1) { - // TODO Auto-generated catch block e1.printStackTrace(); } @@ -122,11 +121,7 @@ @Override public void run() { - System.out.println("Starting application..."); wizard.showModalDialog(); - System.out.println("Exited ORE application"); - System.exit(0); - } }); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -2,7 +2,7 @@ import java.awt.Cursor; -import javax.swing.JDialog; +import javax.swing.JFrame; import javax.swing.SwingWorker; import org.dllearner.tools.ore.ui.StatusBar; @@ -15,9 +15,8 @@ private StatusBar statusBar; + private JFrame dialog; - private JDialog dialog; - public static synchronized TaskManager getInstance(){ if(instance == null){ instance = new TaskManager(); @@ -33,11 +32,11 @@ return statusBar; } - public void setDialog(JDialog dialog){ + public void setDialog(JFrame dialog){ this.dialog = dialog; } - public JDialog getDialog(){ + public JFrame getDialog(){ return dialog; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -62,7 +62,7 @@ column6.setCellRenderer(new ButtonCellRenderer()); column6.setCellEditor(new ButtonCellEditor()); column6.setResizable(false); - setRowHeight(getRowHeight() + 4); +// setRowHeight(getRowHeight() + 4); setRowHeightEnabled(true); getColumn(0).setCellRenderer(new MultiLineTableCellRenderer()); getColumn(1).setMaxWidth(60); 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-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -2,7 +2,6 @@ import java.awt.BorderLayout; import java.awt.Cursor; -import java.awt.Dialog; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; @@ -32,6 +31,7 @@ import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; +import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -93,7 +93,7 @@ private Map<URL, List<String>> endpointToDefaultGraph; - public ExtractFromSparqlDialog(Dialog owner) { + public ExtractFromSparqlDialog(JFrame owner) { super(owner, "Extract fragment from SPARQL endpoint", true); // Create the controls @@ -238,7 +238,7 @@ } } - private void positionErrorDialog(Dialog owner) { + private void positionErrorDialog(JFrame owner) { if (owner == null || !owner.isVisible()) { Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); setLocation(screenDimension.width / 2 - getSize().width / 2, screenDimension.height / 2 - getSize().height / 2); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java 2009-09-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -36,6 +36,7 @@ import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; +import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; @@ -95,7 +96,7 @@ private Individual ind; - public RepairDialog(Individual ind, JDialog dialog, String mode){ + public RepairDialog(Individual ind, JFrame dialog, String mode){ super(dialog, true); final Component dialogd = this.getParent(); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java 2009-09-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -104,6 +104,23 @@ }); } + + @Override + public String getToolTipText(MouseEvent event) { + int rowIndex = rowAtPoint(event.getPoint()); + int columnIndex = columnAtPoint(event.getPoint()); + if(columnIndex == 0){ + if(getValueAt(rowIndex, 0).equals("–")){ + return "Remove from ontology"; + } else { + return "Add to ontology"; + } + } else if(columnIndex == 2){ + return "Remove from repair plan"; + } else { + return super.getToolTipText(event); + } + } private void handleKeyPressed(KeyEvent e) { int selRow = getSelectedRow(); 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-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -34,15 +34,13 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; -import javax.swing.JDialog; +import javax.swing.JFrame; import javax.swing.JPanel; -import javax.swing.JScrollPane; import javax.swing.JSeparator; -import javax.swing.JTextArea; +import javax.swing.JTextPane; import javax.swing.UIManager; import javax.swing.border.EmptyBorder; @@ -100,7 +98,7 @@ private WizardModel wizardModel; private WizardController wizardController; - private JDialog wizardDialog; + private JFrame wizardDialog; private JPanel cardPanel; private CardLayout cardLayout; @@ -108,7 +106,7 @@ private JButton backButton; private JButton nextButton; private JButton cancelButton; - private JTextArea informationsField; + private JTextPane informationsField; private StatusBar statusBar; private int returnCode; @@ -129,7 +127,7 @@ */ public Wizard(Dialog owner) { wizardModel = new WizardModel(); - wizardDialog = new JDialog(owner); + wizardDialog = new JFrame(); initComponents(); } @@ -140,7 +138,14 @@ */ public Wizard(Frame owner) { wizardModel = new WizardModel(); - wizardDialog = new JDialog(owner); + wizardDialog = new JFrame(); + wizardDialog.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.out.println("Exited application"); + wizardDialog.dispose(); + } + }); + initComponents(); } @@ -151,7 +156,7 @@ * the event that you want to change any of the JDialog parameters manually. * @return The JDialog instance that this class created. */ - public JDialog getDialog() { + public JFrame getDialog() { return wizardDialog; } @@ -185,15 +190,15 @@ * @param b the modality of the dialog */ public void setModal(boolean b) { - wizardDialog.setModal(b); +// wizardDialog.setModal(b); } /** * Returns the modality of the dialog. * @return A boolean indicating whether or not the generated javax.swing.JDialog is modal. */ - public boolean isModal() { - return wizardDialog.isModal(); + public boolean isModal() {return false; +// return wizardDialog.isModal(); } /** @@ -203,12 +208,9 @@ * constants at the beginning of the class. */ public int showModalDialog() { - - wizardDialog.setModal(true); - //wizardDialog.pack(); + System.out.println("Starting application"); wizardDialog.setVisible(true); - return returnCode; } @@ -367,6 +369,7 @@ */ public void close(int code) { returnCode = code; + System.out.println("Exited application"); wizardDialog.dispose(); } @@ -428,36 +431,23 @@ buttonBox.add(cancelButton); 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(); - - - //setLayout(new GridBagLayout()); - infoScrollPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - infoScrollPane.setViewportBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + buttonPanel.add(statusBar, BorderLayout.SOUTH); + Color color = UIManager.getColor("Panel.background"); + informationsField = new JTextPane(); informationsField.setBackground(new Color(color.getRed(), color.getGreen(), color.getBlue())); informationsField.setOpaque(true); - informationsField.setColumns(80); informationsField.setEditable(false); - informationsField.setLineWrap(true); - informationsField.setRows(3); informationsField.setFont(new Font("Serif", Font.PLAIN, 14)); - informationsField.setWrapStyleWord(true); - infoScrollPane.setViewportView(informationsField); - informationPanel.add(infoScrollPane, BorderLayout.EAST); + + wizardDialog.getContentPane().add(buttonPanel, java.awt.BorderLayout.SOUTH); - JPanel buttonInformationPanel = new JPanel(); - buttonInformationPanel.setLayout(new BorderLayout()); - buttonInformationPanel.add(buttonPanel, BorderLayout.SOUTH); - buttonInformationPanel.add(informationPanel, BorderLayout.NORTH); + JPanel infoMainHolder = new JPanel(); + infoMainHolder.setLayout(new BorderLayout()); + infoMainHolder.add(informationsField, BorderLayout.SOUTH); + infoMainHolder.add(cardPanel, BorderLayout.CENTER); + wizardDialog.getContentPane().add(infoMainHolder, java.awt.BorderLayout.CENTER); - wizardDialog.getContentPane().add(buttonInformationPanel, java.awt.BorderLayout.SOUTH); - wizardDialog.getContentPane().add(cardPanel, java.awt.BorderLayout.CENTER); - leftPanel = new LeftPanel(0); wizardDialog.getContentPane().add(leftPanel, BorderLayout.WEST); @@ -492,16 +482,14 @@ * @param i the number of the panel */ public void setLeftPanel(int i) { - ((LeftPanel) (wizardDialog.getContentPane().getComponent(2))).set(i); - - + ((LeftPanel) (wizardDialog.getContentPane().getComponent(2))).set(i); } /** * Returns the information field. - * @return JTextArea + * @return JTextPane */ - public JTextArea getInformationField(){ + public JTextPane getInformationField(){ return informationsField; } @@ -514,8 +502,4 @@ statusBar.setProgressMessage("test"); } - - - - } 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-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -103,7 +103,8 @@ // range); // Description de = new NamedClass("http://example.com/father#male"); - if (!e.getValueIsAdjusting() && (learningTask.isDone() || learningTask.isCancelled())){ + if (!e.getValueIsAdjusting() && learnPanel.getResultTable().getSelectedRow() >= 0 && + (learningTask.isDone() || learningTask.isCancelled())){ EvaluatedDescriptionClass selectedClassExpression = learnPanel.getResultTable().getSelectedValue(); // if(!selectedClassExpression.isConsistent()){ // learnPanel.add(new JLabel("Selected class expression may lead to an inconsistent knowledgebase.")); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-09-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -102,8 +102,10 @@ public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("regular")) { expMan.setLaconicMode(false); + panel.setStrikeEnabled(true); } else if (e.getActionCommand().equals("laconic")) { expMan.setLaconicMode(true); + panel.setStrikeEnabled(false); } else if (e.getActionCommand().equals("all")){ conditionalWarning("Computing all explanations might take a long time!", getWizard().getDialog()); expMan.setComputeAllExplanationsMode(true); @@ -208,7 +210,7 @@ @Override public Void doInBackground() { statusBar.showProgress(true); - statusBar.setProgressTitle("Computing explanations"); + statusBar.setProgressTitle("Computing explanations..."); getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); for(OWLClass unsat : panel.getUnsatTable().getSelectedClasses()){ expMan.getUnsatisfiableExplanations(unsat); @@ -264,7 +266,7 @@ public Void doInBackground() { statusBar.showProgress(true); - statusBar.setProgressTitle("Computing root derived class"); + statusBar.setProgressTitle("Computing root and derived classes..."); getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); expMan.getRootUnsatisfiableClasses(); expMan.getDerivedClasses(); 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-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -29,8 +29,7 @@ import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTextArea; +import javax.swing.JTextPane; import javax.swing.UIManager; /** @@ -43,57 +42,54 @@ private static final long serialVersionUID = 7184544803724152044L; - private JTextArea instructionsField; - private JScrollPane jScrollPane1; + private JTextPane instructionsField; private JLabel welcomeTitle; - private final String introductionText = "This is a tool for debugging end enriching OWL-ontologies. " - + "You are able to check ontologies for inconsistency and unsatisfiable classes. " - + "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 " - + "machine learning algorithm. TODO...Jens "; + private final String titleText = "<html>Welcome to the DL-Learner ORE (Ontology Repair and Enrichment) Tool!<br>(Version 0.1)</html>"; - + private final String introductionText = "<html>ORE is a tool for debugging and enriching OWL ontologies. It has the following features: " + + "<UL>" + + "<LI>detection of inconsistencies" + + "<LI>displaying explanations for those inconsistencies" + + "<LI>intelligent resolution of inconsistencies" + + "<LI>enrichment of an ontology by learning definitions and super class axioms" + + "<LI>guiding the user through potential consequences of adding those axioms" + + "</UL>" + + "In a later version, the tool will also support the detection of various potential modelling problems." + + "ORE uses a wizard-style concept. On the left, you can see different steps in the wizard, where the current step is in bold. " + + "Each step contains an explanation of it in the main window. The wizard may omit steps if they are not necessary, e.g. " + + "if you load a consistent ontology, then the \"Debugging\" dialogue is skipped." + + "Please read the <a href=\"http://dl-learner.org/wiki/ORE\">the ORE wiki page</a> and view the <a href=\"...\">screencast</a> to get started.</html>"; - public IntroductionPanel() { createUI(); } private void createUI(){ + setBorder(BorderFactory.createEmptyBorder(12, 6, 12, 12)); setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.gridwidth = GridBagConstraints.REMAINDER; c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 1.0; c.anchor = GridBagConstraints.NORTH; - - //setLayout(new GridBagLayout()); - setBorder(BorderFactory.createEmptyBorder(12, 6, 12, 12)); - + 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)); - welcomeTitle.setText("Welcome to the DL-Learner ORE-Tool!"); + welcomeTitle.setText(titleText); add(welcomeTitle, c); - jScrollPane1 = new JScrollPane(); - jScrollPane1.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - jScrollPane1.setViewportBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - instructionsField = new JTextArea(); + instructionsField = new JTextPane(); + instructionsField.setContentType("text/html"); 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(introductionText); - instructionsField.setWrapStyleWord(true); - jScrollPane1.setViewportView(instructionsField); - add(jScrollPane1, c); + add(instructionsField, c); c.weighty = 1.0; add(new JLabel(), c); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-23 08:49:32 UTC (rev 1855) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-23 09:35:11 UTC (rev 1856) @@ -228,6 +228,7 @@ } public void addExplanations(Set<Explanation> explanations, OWLClass unsat){ + explanationTables.clear(); Box explanationHolderPanel = new Box(1); explanationHolderPanel.setBorder(new TitledBorder(unsat + " is unsatisfiable")); @@ -259,6 +260,10 @@ table.strikeOut(strikeOut); } } + + public void setStrikeEnabled(boolean enabled){ + strikeOutBox.setEnabled(enabled); + } public void addActionListeners(ActionListener aL) { regularButton.addActionListener(aL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-09-23 08:49:40
|
Revision: 1855 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1855&view=rev Author: jenslehmann Date: 2009-09-23 08:49:32 +0000 (Wed, 23 Sep 2009) Log Message: ----------- started SM2PH database conversion script Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java Added Paths: ----------- trunk/resources/architecture_celoe.eps trunk/src/dl-learner/org/dllearner/examples/mutation.ini.dist Property Changed: ---------------- trunk/src/dl-learner/org/dllearner/examples/ Added: trunk/resources/architecture_celoe.eps =================================================================== --- trunk/resources/architecture_celoe.eps (rev 0) +++ trunk/resources/architecture_celoe.eps 2009-09-23 08:49:32 UTC (rev 1855) @@ -0,0 +1,7647 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: inkscape 0.46 +%%Pages: 1 +%%Orientation: Portrait +%%BoundingBox: 39 318 530 678 +%%HiResBoundingBox: 39.999999 318.4572 529.04331 677.77121 +%%EndComments +%%Page: 1 1 +0 842 translate +0.8 -0.8 scale +0 0 0 setrgbcolor +[] 0 setdash +1 setlinewidth +0 setlinejoin +0 setlinecap +gsave [1 0 0 1 0 0] concat +gsave [1 0 0 1 0 28] concat +gsave [1 0 0 1 0 0] concat +gsave +1 0.83137256 0.16470589 setrgbcolor +newpath +50.494846 177.64302 moveto +299.50516 177.64302 lineto +299.50516 266.65333 lineto +50.494846 266.65333 lineto +50.494846 177.64302 lineto +closepath +eofill +grestore +0 0 0 setrgbcolor +[] 0 setdash +0.98969221 setlinewidth +1 setlinejoin +0 setlinecap +newpath +50.494846 177.64302 moveto +299.50516 177.64302 lineto +299.50516 266.65333 lineto +50.494846 266.65333 lineto +50.494846 177.64302 lineto +closepath +stroke +grestore +gsave +0 0 0 setrgbcolor +newpath +80.191269 198.87767 moveto +80.19126 197.68822 79.945167 196.75658 79.452988 196.08275 curveto +78.966652 195.40307 78.295754 195.06323 77.440292 195.06322 curveto +76.584818 195.06323 75.910991 195.40307 75.418808 196.08275 curveto +74.932476 196.75658 74.689313 197.68822 74.689316 198.87767 curveto +74.689313 200.06713 74.932476 201.0017 75.418808 201.68138 curveto +75.910991 202.35521 76.584818 202.69212 77.440292 202.69212 curveto +78.295754 202.69212 78.966652 202.35521 79.452988 201.68138 curveto +79.945167 201.0017 80.19126 200.06713 80.191269 198.87767 curveto +74.689316 195.44115 moveto +75.029156 194.85522 75.45689 194.42162 75.972519 194.14037 curveto +76.493998 193.85327 77.115091 193.70971 77.8358 193.7097 curveto +79.031105 193.70971 80.000831 194.18432 80.74498 195.13353 curveto +81.49497 196.08276 81.869969 197.3308 81.86998 198.87767 curveto +81.869969 200.42455 81.49497 201.67259 80.74498 202.62181 curveto +80.000831 203.57103 79.031105 204.04564 77.8358 204.04564 curveto +77.115091 204.04564 76.493998 203.90501 75.972519 203.62376 curveto +75.45689 203.33666 75.029156 202.90013 74.689316 202.31419 curveto +74.689316 203.79076 lineto +73.063339 203.79076 lineto +73.063339 190.11497 lineto +74.689316 190.11497 lineto +74.689316 195.44115 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +89.024277 198.84251 moveto +87.717631 198.84252 86.812359 198.99193 86.308456 199.29076 curveto +85.804547 199.58959 85.552594 200.09935 85.552597 200.82005 curveto +85.552594 201.39427 85.740094 201.85131 86.115097 202.19115 curveto +86.495953 202.52513 87.011577 202.69212 87.661972 202.69212 curveto +88.558451 202.69212 89.276223 202.37572 89.815292 201.7429 curveto +90.360207 201.10424 90.632667 200.25756 90.632675 199.20287 curveto +90.632675 198.84251 lineto +89.024277 198.84251 lineto +92.249863 198.17455 moveto +92.249863 203.79076 lineto +90.632675 203.79076 lineto +90.632675 202.29662 lineto +90.263527 202.89427 89.803567 203.33666 89.252792 203.62376 curveto +88.702005 203.90501 88.028178 204.04564 87.231308 204.04564 curveto +86.223492 204.04564 85.420759 203.76439 84.823105 203.20189 curveto +84.231307 202.63353 83.935408 201.87474 83.93541 200.92552 curveto +83.935408 199.8181 84.304549 198.98314 85.042831 198.42064 curveto +85.786969 197.85814 86.89439 197.5769 88.365097 197.57689 curveto +90.632675 197.57689 lineto +90.632675 197.41869 lineto +90.632667 196.67455 90.386574 196.10033 89.894394 195.69603 curveto +89.408059 195.28588 88.722513 195.0808 87.837753 195.0808 curveto +87.275249 195.0808 86.727398 195.14819 86.194199 195.28294 curveto +85.660993 195.41772 85.148298 195.61987 84.656113 195.88939 curveto +84.656113 194.39525 lineto +85.247907 194.16674 85.822125 193.99682 86.378769 193.88548 curveto +86.935405 193.76831 87.477397 193.70971 88.004745 193.7097 curveto +89.428567 193.70971 90.492043 194.07885 91.195175 194.81712 curveto +91.898291 195.55541 92.249853 196.67455 92.249863 198.17455 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +102.67369 194.32494 moveto +102.67369 195.83665 lineto +102.21665 195.58471 101.75669 195.39721 101.29381 195.27415 curveto +100.83677 195.14526 100.37388 195.0808 99.905136 195.0808 curveto +98.856303 195.0808 98.041851 195.41479 97.461777 196.08275 curveto +96.881696 196.74486 96.591657 197.6765 96.59166 198.87767 curveto +96.591657 200.07885 96.881696 201.01342 97.461777 201.68138 curveto +98.041851 202.34349 98.856303 202.67455 99.905136 202.67455 curveto +100.37388 202.67455 100.83677 202.61302 101.29381 202.48997 curveto +101.75669 202.36107 102.21665 202.17064 102.67369 201.91869 curveto +102.67369 203.41283 lineto +102.22251 203.62376 101.75376 203.78197 101.26744 203.88744 curveto +100.78697 203.9929 100.27427 204.04564 99.729355 204.04564 curveto +98.246929 204.04564 97.069195 203.57982 96.196152 202.64818 curveto +95.323103 201.71654 94.88658 200.4597 94.886581 198.87767 curveto +94.88658 197.27221 95.326033 196.00951 96.204941 195.08958 curveto +97.089703 194.16967 98.299663 193.70971 99.834824 193.7097 curveto +100.33286 193.70971 100.81919 193.76245 101.29381 193.8679 curveto +101.76841 193.96752 102.22837 194.11987 102.67369 194.32494 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +105.44225 190.11497 moveto +107.06822 190.11497 lineto +107.06822 198.19212 lineto +111.89342 193.94701 lineto +113.95885 193.94701 lineto +108.73814 198.55247 lineto +114.17857 203.79076 lineto +112.0692 203.79076 lineto +107.06822 198.98314 lineto +107.06822 203.79076 lineto +105.44225 203.79076 lineto +105.44225 190.11497 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +122.42271 198.75462 moveto +122.42271 197.58275 122.17954 196.67455 121.69322 196.03001 curveto +121.21275 195.38549 120.53599 195.06323 119.66295 195.06322 curveto +118.79576 195.06323 118.119 195.38549 117.63268 196.03001 curveto +117.1522 196.67455 116.91197 197.58275 116.91197 198.75462 curveto +116.91197 199.92064 117.1522 200.82592 117.63268 201.47044 curveto +118.119 202.11498 118.79576 202.43724 119.66295 202.43724 curveto +120.53599 202.43724 121.21275 202.11498 121.69322 201.47044 curveto +122.17954 200.82592 122.42271 199.92064 122.42271 198.75462 curveto +124.0399 202.56908 moveto +124.03989 204.24486 123.66782 205.48997 122.92369 206.30443 curveto +122.17954 207.12474 121.03989 207.53489 119.50475 207.5349 curveto +118.93638 207.53489 118.40025 207.49095 117.89635 207.40306 curveto +117.39244 207.32103 116.90318 207.19212 116.42857 207.01634 curveto +116.42857 205.4431 lineto +116.90318 205.70091 117.37193 205.89134 117.83482 206.01439 curveto +118.29771 206.13743 118.76939 206.19896 119.24986 206.19896 curveto +120.3104 206.19896 121.10435 205.92064 121.6317 205.364 curveto +122.15903 204.81322 122.42271 203.97826 122.42271 202.85912 curveto +122.42271 202.05931 lineto +122.08872 202.63939 121.66099 203.07298 121.13951 203.36009 curveto +120.61802 203.6472 119.994 203.79076 119.26744 203.79076 curveto +118.06041 203.79076 117.08775 203.3308 116.34947 202.41087 curveto +115.61119 201.49095 115.24205 200.27221 115.24205 198.75462 curveto +115.24205 197.23119 115.61119 196.00951 116.34947 195.08958 curveto +117.08775 194.16967 118.06041 193.70971 119.26744 193.7097 curveto +119.994 193.70971 120.61802 193.85327 121.13951 194.14037 curveto +121.66099 194.42748 122.08872 194.86108 122.42271 195.44115 curveto +122.42271 193.94701 lineto +124.0399 193.94701 lineto +124.0399 202.56908 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +133.07506 195.45872 moveto +132.89341 195.35326 132.69419 195.27709 132.4774 195.23021 curveto +132.26646 195.17748 132.03208 195.15112 131.77428 195.15111 curveto +130.86021 195.15112 130.15708 195.44994 129.6649 196.04759 curveto +129.17857 196.6394 128.93541 197.49193 128.93541 198.60521 curveto +128.93541 203.79076 lineto +127.30943 203.79076 lineto +127.30943 193.94701 lineto +128.93541 193.94701 lineto +128.93541 195.4763 lineto +129.27525 194.87866 129.71763 194.43627 130.26256 194.14915 curveto +130.80747 193.8562 131.46958 193.70971 132.24889 193.7097 curveto +132.36021 193.70971 132.48325 193.7185 132.61803 193.73607 curveto +132.75279 193.7478 132.9022 193.76831 133.06627 193.79759 curveto +133.07506 195.45872 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +138.21666 195.0808 moveto +137.34947 195.0808 136.66392 195.42065 136.16002 196.10033 curveto +135.65611 196.77416 135.40416 197.69994 135.40416 198.87767 curveto +135.40416 200.05541 135.65318 200.98412 136.15123 201.6638 curveto +136.65513 202.33763 137.34361 202.67455 138.21666 202.67455 curveto +139.07798 202.67455 139.7606 202.3347 140.26451 201.65501 curveto +140.76841 200.97533 141.02036 200.04955 141.02037 198.87767 curveto +141.02036 197.71166 140.76841 196.78881 140.26451 196.10912 curveto +139.7606 195.42358 139.07798 195.0808 138.21666 195.0808 curveto +138.21666 193.7097 moveto +139.6229 193.70971 140.72739 194.16674 141.53014 195.0808 curveto +142.33286 195.99487 142.73423 197.26049 142.73424 198.87767 curveto +142.73423 200.489 142.33286 201.75463 141.53014 202.67455 curveto +140.72739 203.58861 139.6229 204.04564 138.21666 204.04564 curveto +136.80455 204.04564 135.69713 203.58861 134.89439 202.67455 curveto +134.09752 201.75463 133.69908 200.489 133.69908 198.87767 curveto +133.69908 197.26049 134.09752 195.99487 134.89439 195.0808 curveto +135.69713 194.16674 136.80455 193.70971 138.21666 193.7097 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +145.23912 199.90599 moveto +145.23912 193.94701 lineto +146.85631 193.94701 lineto +146.85631 199.84447 lineto +146.8563 200.77611 147.03795 201.47631 147.40123 201.94505 curveto +147.76451 202.40795 148.30943 202.63939 149.036 202.63939 curveto +149.90904 202.63939 150.59751 202.36107 151.10143 201.80443 curveto +151.61118 201.24779 151.86607 200.489 151.86607 199.52806 curveto +151.86607 193.94701 lineto +153.48326 193.94701 lineto +153.48326 203.79076 lineto +151.86607 203.79076 lineto +151.86607 202.27904 lineto +151.47349 202.87669 151.01646 203.32201 150.49498 203.61497 curveto +149.97935 203.90208 149.37876 204.04564 148.69322 204.04564 curveto +147.56236 204.04564 146.70396 203.69408 146.11803 202.99095 curveto +145.53209 202.28783 145.23912 201.25951 145.23912 199.90599 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +165.01451 197.84935 moveto +165.01451 203.79076 lineto +163.39732 203.79076 lineto +163.39732 197.90208 lineto +163.39732 196.97045 163.21567 196.27319 162.8524 195.81029 curveto +162.48911 195.34741 161.94419 195.11596 161.21764 195.11595 curveto +160.34458 195.11596 159.65611 195.39428 159.15221 195.95091 curveto +158.6483 196.50756 158.39634 197.26635 158.39635 198.22728 curveto +158.39635 203.79076 lineto +156.77037 203.79076 lineto +156.77037 193.94701 lineto +158.39635 193.94701 lineto +158.39635 195.4763 lineto +158.78306 194.88452 159.23716 194.44213 159.75865 194.14915 curveto +160.28599 193.8562 160.89244 193.70971 161.57799 193.7097 curveto +162.70884 193.70971 163.56431 194.06127 164.14439 194.76439 curveto +164.72446 195.46166 165.0145 196.48998 165.01451 197.84935 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +174.73521 195.44115 moveto +174.73521 190.11497 lineto +176.3524 190.11497 lineto +176.3524 203.79076 lineto +174.73521 203.79076 lineto +174.73521 202.31419 lineto +174.39536 202.90013 173.9647 203.33666 173.44322 203.62376 curveto +172.92759 203.90501 172.3065 204.04564 171.57994 204.04564 curveto +170.39048 204.04564 169.42076 203.57103 168.67076 202.62181 curveto +167.92662 201.67259 167.55455 200.42455 167.55455 198.87767 curveto +167.55455 197.3308 167.92662 196.08276 168.67076 195.13353 curveto +169.42076 194.18432 170.39048 193.70971 171.57994 193.7097 curveto +172.3065 193.70971 172.92759 193.85327 173.44322 194.14037 curveto +173.9647 194.42162 174.39536 194.85522 174.73521 195.44115 curveto +169.22447 198.87767 moveto +169.22447 200.06713 169.46763 201.0017 169.95396 201.68138 curveto +170.44615 202.35521 171.11998 202.69212 171.97545 202.69212 curveto +172.83091 202.69212 173.50474 202.35521 173.99693 201.68138 curveto +174.48911 201.0017 174.73521 200.06713 174.73521 198.87767 curveto +174.73521 197.68822 174.48911 196.75658 173.99693 196.08275 curveto +173.50474 195.40307 172.83091 195.06323 171.97545 195.06322 curveto +171.11998 195.06323 170.44615 195.40307 169.95396 196.08275 curveto +169.46763 196.75658 169.22447 197.68822 169.22447 198.87767 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +185.3524 190.11497 moveto +186.97838 190.11497 lineto +186.97838 198.19212 lineto +191.80357 193.94701 lineto +193.869 193.94701 lineto +188.6483 198.55247 lineto +194.08873 203.79076 lineto +191.97935 203.79076 lineto +186.97838 198.98314 lineto +186.97838 203.79076 lineto +185.3524 203.79076 lineto +185.3524 190.11497 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +204.03795 197.84935 moveto +204.03795 203.79076 lineto +202.42076 203.79076 lineto +202.42076 197.90208 lineto +202.42075 196.97045 202.23911 196.27319 201.87584 195.81029 curveto +201.51255 195.34741 200.96763 195.11596 200.24107 195.11595 curveto +199.36802 195.11596 198.67955 195.39428 198.17564 195.95091 curveto +197.67173 196.50756 197.41978 197.26635 197.41978 198.22728 curveto +197.41978 203.79076 lineto +195.79381 203.79076 lineto +195.79381 193.94701 lineto +197.41978 193.94701 lineto +197.41978 195.4763 lineto +197.8065 194.88452 198.2606 194.44213 198.78209 194.14915 curveto +199.30943 193.8562 199.91587 193.70971 200.60143 193.7097 curveto +201.73228 193.70971 202.58774 194.06127 203.16783 194.76439 curveto +203.7479 195.46166 204.03794 196.48998 204.03795 197.84935 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +211.09557 195.0808 moveto +210.22837 195.0808 209.54283 195.42065 209.03893 196.10033 curveto +208.53502 196.77416 208.28306 197.69994 208.28307 198.87767 curveto +208.28306 200.05541 208.53209 200.98412 209.03014 201.6638 curveto +209.53404 202.33763 210.22251 202.67455 211.09557 202.67455 curveto +211.95689 202.67455 212.6395 202.3347 213.14342 201.65501 curveto +213.64732 200.97533 213.89927 200.04955 213.89928 198.87767 curveto +213.89927 197.71166 213.64732 196.78881 213.14342 196.10912 curveto +212.6395 195.42358 211.95689 195.0808 211.09557 195.0808 curveto +211.09557 193.7097 moveto +212.50181 193.70971 213.6063 194.16674 214.40904 195.0808 curveto +215.21177 195.99487 215.61313 197.26049 215.61314 198.87767 curveto +215.61313 200.489 215.21177 201.75463 214.40904 202.67455 curveto +213.6063 203.58861 212.50181 204.04564 211.09557 204.04564 curveto +209.68345 204.04564 208.57603 203.58861 207.7733 202.67455 curveto +206.97642 201.75463 206.57799 200.489 206.57799 198.87767 curveto +206.57799 197.26049 206.97642 195.99487 207.7733 195.0808 curveto +208.57603 194.16674 209.68345 193.70971 211.09557 193.7097 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +217.34459 193.94701 moveto +218.96178 193.94701 lineto +220.98326 201.62865 lineto +222.99596 193.94701 lineto +224.90318 193.94701 lineto +226.92467 201.62865 lineto +228.93736 193.94701 lineto +230.55455 193.94701 lineto +227.97935 203.79076 lineto +226.07213 203.79076 lineto +223.95396 195.7224 lineto +221.82701 203.79076 lineto +219.91978 203.79076 lineto +217.34459 193.94701 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +233.01549 190.11497 moveto +234.63268 190.11497 lineto +234.63268 203.79076 lineto +233.01549 203.79076 lineto +233.01549 190.11497 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +246.4276 198.46458 moveto +246.4276 199.2556 lineto +238.99205 199.2556 lineto +239.06236 200.36888 239.39634 201.21849 239.994 201.80443 curveto +240.59751 202.38451 241.4354 202.67455 242.50768 202.67455 curveto +243.12876 202.67455 243.72935 202.59837 244.30943 202.44603 curveto +244.89536 202.29369 245.47544 202.06517 246.04967 201.76048 curveto +246.04967 203.28978 lineto +245.46958 203.53587 244.87485 203.72337 244.26549 203.85228 curveto +243.65611 203.98119 243.03794 204.04564 242.411 204.04564 curveto +240.84068 204.04564 239.59556 203.58861 238.67564 202.67455 curveto +237.76158 201.76048 237.30455 200.52416 237.30455 198.96556 curveto +237.30455 197.35424 237.73814 196.0769 238.60533 195.13353 curveto +239.47838 194.18432 240.65318 193.70971 242.12975 193.7097 curveto +243.45396 193.70971 244.49985 194.13745 245.26744 194.9929 curveto +246.04087 195.84252 246.42759 196.99975 246.4276 198.46458 curveto +244.81041 197.98997 moveto +244.79868 197.10522 244.54966 196.39916 244.06334 195.87181 curveto +243.58286 195.34448 242.94419 195.0808 242.14732 195.0808 curveto +241.24497 195.0808 240.52134 195.33569 239.97643 195.84544 curveto +239.43736 196.35522 239.12681 197.07299 239.04478 197.99876 curveto +244.81041 197.98997 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +255.55943 195.44115 moveto +255.55943 190.11497 lineto +257.17662 190.11497 lineto +257.17662 203.79076 lineto +255.55943 203.79076 lineto +255.55943 202.31419 lineto +255.21958 202.90013 254.78892 203.33666 254.26744 203.62376 curveto +253.75181 203.90501 253.13072 204.04564 252.40416 204.04564 curveto +251.2147 204.04564 250.24498 203.57103 249.49498 202.62181 curveto +248.75084 201.67259 248.37877 200.42455 248.37877 198.87767 curveto +248.37877 197.3308 248.75084 196.08276 249.49498 195.13353 curveto +250.24498 194.18432 251.2147 193.70971 252.40416 193.7097 curveto +253.13072 193.70971 253.75181 193.85327 254.26744 194.14037 curveto +254.78892 194.42162 255.21958 194.85522 255.55943 195.44115 curveto +250.04869 198.87767 moveto +250.04869 200.06713 250.29185 201.0017 250.77818 201.68138 curveto +251.27037 202.35521 251.94419 202.69212 252.79967 202.69212 curveto +253.65513 202.69212 254.32896 202.35521 254.82115 201.68138 curveto +255.31333 201.0017 255.55942 200.06713 255.55943 198.87767 curveto +255.55942 197.68822 255.31333 196.75658 254.82115 196.08275 curveto +254.32896 195.40307 253.65513 195.06323 252.79967 195.06322 curveto +251.94419 195.06323 251.27037 195.40307 250.77818 196.08275 curveto +250.29185 196.75658 250.04869 197.68822 250.04869 198.87767 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +266.98521 198.75462 moveto +266.98521 197.58275 266.74204 196.67455 266.25572 196.03001 curveto +265.77525 195.38549 265.09849 195.06323 264.22545 195.06322 curveto +263.35826 195.06323 262.6815 195.38549 262.19518 196.03001 curveto +261.7147 196.67455 261.47447 197.58275 261.47447 198.75462 curveto +261.47447 199.92064 261.7147 200.82592 262.19518 201.47044 curveto +262.6815 202.11498 263.35826 202.43724 264.22545 202.43724 curveto +265.09849 202.43724 265.77525 202.11498 266.25572 201.47044 curveto +266.74204 200.82592 266.98521 199.92064 266.98521 198.75462 curveto +268.6024 202.56908 moveto +268.60239 204.24486 268.23032 205.48997 267.48619 206.30443 curveto +266.74204 207.12474 265.60239 207.53489 264.06725 207.5349 curveto +263.49888 207.53489 262.96275 207.49095 262.45885 207.40306 curveto +261.95494 207.32103 261.46568 207.19212 260.99107 207.01634 curveto +260.99107 205.4431 lineto +261.46568 205.70091 261.93443 205.89134 262.39732 206.01439 curveto +262.86021 206.13743 263.33189 206.19896 263.81236 206.19896 curveto +264.8729 206.19896 265.66685 205.92064 266.1942 205.364 curveto +266.72153 204.81322 266.98521 203.97826 266.98521 202.85912 curveto +266.98521 202.05931 lineto +266.65122 202.63939 266.22349 203.07298 265.70201 203.36009 curveto +265.18052 203.6472 264.5565 203.79076 263.82994 203.79076 curveto +262.62291 203.79076 261.65025 203.3308 260.91197 202.41087 curveto +260.17369 201.49095 259.80455 200.27221 259.80455 198.75462 curveto +259.80455 197.23119 260.17369 196.00951 260.91197 195.08958 curveto +261.65025 194.16967 262.62291 193.70971 263.82994 193.7097 curveto +264.5565 193.70971 265.18052 193.85327 265.70201 194.14037 curveto +266.22349 194.42748 266.65122 194.86108 266.98521 195.44115 curveto +266.98521 193.94701 lineto +268.6024 193.94701 lineto +268.6024 202.56908 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +280.35338 198.46458 moveto +280.35338 199.2556 lineto +272.91783 199.2556 lineto +272.98814 200.36888 273.32213 201.21849 273.91978 201.80443 curveto +274.5233 202.38451 275.36119 202.67455 276.43346 202.67455 curveto +277.05454 202.67455 277.65513 202.59837 278.23521 202.44603 curveto +278.82114 202.29369 279.40122 202.06517 279.97545 201.76048 curveto +279.97545 203.28978 lineto +279.39536 203.53587 278.80064 203.72337 278.19127 203.85228 curveto +277.58189 203.98119 276.96372 204.04564 276.33678 204.04564 curveto +274.76646 204.04564 273.52134 203.58861 272.60143 202.67455 curveto +271.68736 201.76048 271.23033 200.52416 271.23033 198.96556 curveto +271.23033 197.35424 271.66392 196.0769 272.53111 195.13353 curveto +273.40416 194.18432 274.57896 193.70971 276.05553 193.7097 curveto +277.37974 193.70971 278.42564 194.13745 279.19322 194.9929 curveto +279.96665 195.84252 280.35337 196.99975 280.35338 198.46458 curveto +278.73619 197.98997 moveto +278.72446 197.10522 278.47544 196.39916 277.98912 195.87181 curveto +277.50864 195.34448 276.86997 195.0808 276.0731 195.0808 curveto +275.17076 195.0808 274.44712 195.33569 273.90221 195.84544 curveto +273.36314 196.35522 273.05259 197.07299 272.97057 197.99876 curveto +278.73619 197.98997 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +94.201035 212.63255 moveto +93.415874 213.98022 92.832866 215.31323 92.452011 216.63158 curveto +92.071148 217.94994 91.880719 219.28588 91.880722 220.63939 curveto +91.880719 221.99291 92.071148 223.3347 92.452011 224.66478 curveto +92.838726 225.989 93.421733 227.32201 94.201035 228.6638 curveto +92.794785 228.6638 lineto +91.915875 227.28685 91.256696 225.93333 90.817245 224.60326 curveto +90.38365 223.27318 90.166853 221.95189 90.166855 220.63939 curveto +90.166853 219.33276 90.38365 218.01733 90.817245 216.6931 curveto +91.250837 215.36889 91.910016 214.01538 92.794785 212.63255 curveto +94.201035 212.63255 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +102.744 214.37279 moveto +101.45493 214.3728 100.42955 214.85327 99.667831 215.81419 curveto +98.911969 216.77514 98.534039 218.08471 98.534042 219.7429 curveto +98.534039 221.39525 98.911969 222.70189 99.667831 223.66283 curveto +100.42955 224.62377 101.45493 225.10423 102.744 225.10423 curveto +104.03306 225.10423 105.05259 224.62377 105.8026 223.66283 curveto +106.55845 222.70189 106.93637 221.39525 106.93639 219.7429 curveto +106.93637 218.08471 106.55845 216.77514 105.8026 215.81419 curveto +105.05259 214.85327 104.03306 214.3728 102.744 214.37279 curveto +102.744 212.93138 moveto +104.58384 212.93139 106.05454 213.54956 107.15611 214.78587 curveto +108.25766 216.01635 108.80844 217.66869 108.80846 219.7429 curveto +108.80844 221.81127 108.25766 223.46361 107.15611 224.69994 curveto +106.05454 225.93041 104.58384 226.54564 102.744 226.54564 curveto +100.89829 226.54564 99.421734 225.93041 98.314316 224.69994 curveto +97.212752 223.46947 96.661971 221.81713 96.661972 219.7429 curveto +96.661971 217.66869 97.212752 216.01635 98.314316 214.78587 curveto +99.421734 213.54956 100.89829 212.93139 102.744 212.93138 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +110.41685 213.16869 moveto +112.20982 213.16869 lineto +114.96959 224.26048 lineto +117.72057 213.16869 lineto +119.71568 213.16869 lineto +122.47545 224.26048 lineto +125.22643 213.16869 lineto +127.02818 213.16869 lineto +123.73228 226.29076 lineto +121.49986 226.29076 lineto +118.73131 214.90013 lineto +115.93639 226.29076 lineto +113.70396 226.29076 lineto +110.41685 213.16869 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +129.37486 213.16869 moveto +131.15025 213.16869 lineto +131.15025 224.79662 lineto +137.5399 224.79662 lineto +137.5399 226.29076 lineto +129.37486 226.29076 lineto +129.37486 213.16869 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +148.869 217.5808 moveto +148.00181 217.5808 147.31626 217.92065 146.81236 218.60033 curveto +146.30845 219.27416 146.0565 220.19994 146.0565 221.37767 curveto +146.0565 222.55541 146.30552 223.48412 146.80357 224.1638 curveto +147.30748 224.83763 147.99595 225.17455 148.869 225.17455 curveto +149.73033 225.17455 150.41294 224.8347 150.91685 224.15501 curveto +151.42075 223.47533 151.67271 222.54955 151.67271 221.37767 curveto +151.67271 220.21166 151.42075 219.28881 150.91685 218.60912 curveto +150.41294 217.92358 149.73033 217.5808 148.869 217.5808 curveto +148.869 216.2097 moveto +150.27525 216.20971 151.37974 216.66674 152.18248 217.5808 curveto +152.9852 218.49487 153.38657 219.76049 153.38658 221.37767 curveto +153.38657 222.989 152.9852 224.25463 152.18248 225.17455 curveto +151.37974 226.08861 150.27525 226.54564 148.869 226.54564 curveto +147.45689 226.54564 146.34947 226.08861 145.54674 225.17455 curveto +144.74986 224.25463 144.35142 222.989 144.35143 221.37767 curveto +144.35142 219.76049 144.74986 218.49487 145.54674 217.5808 curveto +146.34947 216.66674 147.45689 216.20971 148.869 216.2097 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +164.24107 220.34935 moveto +164.24107 226.29076 lineto +162.62389 226.29076 lineto +162.62389 220.40208 lineto +162.62388 219.47045 162.44224 218.77319 162.07896 218.31029 curveto +161.71568 217.84741 161.17075 217.61596 160.4442 217.61595 curveto +159.57115 217.61596 158.88267 217.89428 158.37877 218.45091 curveto +157.87486 219.00756 157.62291 219.76635 157.62291 220.72728 curveto +157.62291 226.29076 lineto +155.99693 226.29076 lineto +155.99693 216.44701 lineto +157.62291 216.44701 lineto +157.62291 217.9763 lineto +158.00962 217.38452 158.46373 216.94213 158.98521 216.64915 curveto +159.51255 216.3562 160.119 216.20971 160.80455 216.2097 curveto +161.9354 216.20971 162.79087 216.56127 163.37096 217.26439 curveto +163.95102 217.96166 164.24106 218.98998 164.24107 220.34935 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +169.08385 213.65208 moveto +169.08385 216.44701 lineto +172.4149 216.44701 lineto +172.4149 217.70384 lineto +169.08385 217.70384 lineto +169.08385 223.04759 lineto +169.08384 223.85033 169.19224 224.36595 169.40904 224.59447 curveto +169.63169 224.82298 170.07994 224.93724 170.75377 224.93724 curveto +172.4149 224.93724 lineto +172.4149 226.29076 lineto +170.75377 226.29076 lineto +169.50572 226.29076 168.64439 226.05931 168.16978 225.59642 curveto +167.69517 225.12767 167.45787 224.27806 167.45787 223.04759 curveto +167.45787 217.70384 lineto +166.27135 217.70384 lineto +166.27135 216.44701 lineto +167.45787 216.44701 lineto +167.45787 213.65208 lineto +169.08385 213.65208 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +178.3651 217.5808 moveto +177.4979 217.5808 176.81236 217.92065 176.30846 218.60033 curveto +175.80455 219.27416 175.55259 220.19994 175.5526 221.37767 curveto +175.55259 222.55541 175.80162 223.48412 176.29967 224.1638 curveto +176.80357 224.83763 177.49205 225.17455 178.3651 225.17455 curveto +179.22642 225.17455 179.90904 224.8347 180.41295 224.15501 curveto +180.91685 223.47533 181.1688 222.54955 181.16881 221.37767 curveto +181.1688 220.21166 180.91685 219.28881 180.41295 218.60912 curveto +179.90904 217.92358 179.22642 217.5808 178.3651 217.5808 curveto +178.3651 216.2097 moveto +179.77134 216.20971 180.87583 216.66674 181.67857 217.5808 curveto +182.4813 218.49487 182.88267 219.76049 182.88268 221.37767 curveto +182.88267 222.989 182.4813 224.25463 181.67857 225.17455 curveto +180.87583 226.08861 179.77134 226.54564 178.3651 226.54564 curveto +176.95298 226.54564 175.84556 226.08861 175.04283 225.17455 curveto +174.24596 224.25463 173.84752 222.989 173.84752 221.37767 curveto +173.84752 219.76049 174.24596 218.49487 175.04283 217.5808 curveto +175.84556 216.66674 176.95298 216.20971 178.3651 216.2097 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +185.55455 212.61497 moveto +187.17174 212.61497 lineto +187.17174 226.29076 lineto +185.55455 226.29076 lineto +185.55455 212.61497 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +194.36119 217.5808 moveto +193.494 217.5808 192.80845 217.92065 192.30455 218.60033 curveto +191.80064 219.27416 191.54869 220.19994 191.54869 221.37767 curveto +191.54869 222.55541 191.79771 223.48412 192.29576 224.1638 curveto +192.79966 224.83763 193.48814 225.17455 194.36119 225.17455 curveto +195.22251 225.17455 195.90513 224.8347 196.40904 224.15501 curveto +196.91294 223.47533 197.16489 222.54955 197.1649 221.37767 curveto +197.16489 220.21166 196.91294 219.28881 196.40904 218.60912 curveto +195.90513 217.92358 195.22251 217.5808 194.36119 217.5808 curveto +194.36119 216.2097 moveto +195.76743 216.20971 196.87192 216.66674 197.67467 217.5808 curveto +198.47739 218.49487 198.87876 219.76049 198.87877 221.37767 curveto +198.87876 222.989 198.47739 224.25463 197.67467 225.17455 curveto +196.87192 226.08861 195.76743 226.54564 194.36119 226.54564 curveto +192.94908 226.54564 191.84166 226.08861 191.03893 225.17455 curveto +190.24205 224.25463 189.84361 222.989 189.84361 221.37767 curveto +189.84361 219.76049 190.24205 218.49487 191.03893 217.5808 curveto +191.84166 216.66674 192.94908 216.20971 194.36119 216.2097 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +208.02818 221.25462 moveto +208.02817 220.08275 207.78501 219.17455 207.29869 218.53001 curveto +206.81822 217.88549 206.14146 217.56323 205.26842 217.56322 curveto +204.40123 217.56323 203.72447 217.88549 203.23814 218.53001 curveto +202.75767 219.17455 202.51744 220.08275 202.51744 221.25462 curveto +202.51744 222.42064 202.75767 223.32592 203.23814 223.97044 curveto +203.72447 224.61498 204.40123 224.93724 205.26842 224.93724 curveto +206.14146 224.93724 206.81822 224.61498 207.29869 223.97044 curveto +207.78501 223.32592 208.02817 222.42064 208.02818 221.25462 curveto +209.64537 225.06908 moveto +209.64536 226.74486 209.27329 227.98997 208.52916 228.80443 curveto +207.78501 229.62474 206.64536 230.03489 205.11021 230.0349 curveto +204.54185 230.03489 204.00572 229.99095 203.50182 229.90306 curveto +202.99791 229.82103 202.50865 229.69212 202.03404 229.51634 curveto +202.03404 227.9431 lineto +202.50865 228.20091 202.9774 228.39134 203.44029 228.51439 curveto +203.90318 228.63743 204.37486 228.69896 204.85533 228.69896 curveto +205.91587 228.69896 206.70982 228.42064 207.23717 227.864 curveto +207.7645 227.31322 208.02817 226.47826 208.02818 225.35912 curveto +208.02818 224.55931 lineto +207.69419 225.13939 207.26646 225.57298 206.74498 225.86009 curveto +206.22349 226.1472 205.59947 226.29076 204.87291 226.29076 curveto +203.66587 226.29076 202.69322 225.8308 201.95494 224.91087 curveto +201.21666 223.99095 200.84752 222.77221 200.84752 221.25462 curveto +200.84752 219.73119 201.21666 218.50951 201.95494 217.58958 curveto +202.69322 216.66967 203.66587 216.20971 204.87291 216.2097 curveto +205.59947 216.20971 206.22349 216.35327 206.74498 216.64037 curveto +207.26646 216.92748 207.69419 217.36108 208.02818 217.94115 curveto +208.02818 216.44701 lineto +209.64537 216.44701 lineto +209.64537 225.06908 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +217.07213 227.20482 moveto +216.61509 228.37669 216.16978 229.14134 215.73619 229.49876 curveto +215.30259 229.85618 214.72252 230.03489 213.99596 230.0349 curveto +212.70396 230.0349 lineto +212.70396 228.68138 lineto +213.65318 228.68138 lineto +214.09849 228.68138 214.4442 228.57591 214.69029 228.36497 curveto +214.93638 228.15404 215.20884 227.65599 215.50768 226.87083 curveto +215.79771 226.13255 lineto +211.81627 216.44701 lineto +213.53014 216.44701 lineto +216.60631 224.14622 lineto +219.68248 216.44701 lineto +221.39635 216.44701 lineto +217.07213 227.20482 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +233.17369 217.5808 moveto +232.3065 217.5808 231.62095 217.92065 231.11705 218.60033 curveto +230.61314 219.27416 230.36119 220.19994 230.36119 221.37767 curveto +230.36119 222.55541 230.61021 223.48412 231.10826 224.1638 curveto +231.61216 224.83763 232.30064 225.17455 233.17369 225.17455 curveto +234.03501 225.17455 234.71763 224.8347 235.22154 224.15501 curveto +235.72544 223.47533 235.97739 222.54955 235.9774 221.37767 curveto +235.97739 220.21166 235.72544 219.28881 235.22154 218.60912 curveto +234.71763 217.92358 234.03501 217.5808 233.17369 217.5808 curveto +233.17369 216.2097 moveto +234.57993 216.20971 235.68442 216.66674 236.48717 217.5808 curveto +237.28989 218.49487 237.69126 219.76049 237.69127 221.37767 curveto +237.69126 222.989 237.28989 224.25463 236.48717 225.17455 curveto +235.68442 226.08861 234.57993 226.54564 233.17369 226.54564 curveto +231.76158 226.54564 230.65416 226.08861 229.85143 225.17455 curveto +229.05455 224.25463 228.65611 222.989 228.65611 221.37767 curveto +228.65611 219.76049 229.05455 218.49487 229.85143 217.5808 curveto +230.65416 216.66674 231.76158 216.20971 233.17369 216.2097 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +246.06725 217.95872 moveto +245.8856 217.85326 245.68638 217.77709 245.46959 217.73021 curveto +245.25865 217.67748 245.02427 217.65112 244.76646 217.65111 curveto +243.8524 217.65112 243.14927 217.94994 242.65709 218.54759 curveto +242.17076 219.1394 241.92759 219.99193 241.9276 221.10521 curveto +241.9276 226.29076 lineto +240.30162 226.29076 lineto +240.30162 216.44701 lineto +241.9276 216.44701 lineto +241.9276 217.9763 lineto +242.26744 217.37866 242.70982 216.93627 243.25475 216.64915 curveto +243.79966 216.3562 244.46177 216.20971 245.24107 216.2097 curveto +245.3524 216.20971 245.47544 216.2185 245.61021 216.23607 curveto +245.74497 216.2478 245.89439 216.26831 246.05846 216.29759 curveto +246.06725 217.95872 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +103.98326 236.09935 moveto +103.98326 237.8308 lineto +103.30942 237.50854 102.67368 237.26831 102.07603 237.11009 curveto +101.47837 236.9519 100.90122 236.8728 100.34459 236.87279 curveto +99.377787 236.8728 98.630718 237.0603 98.103378 237.43529 curveto +97.581891 237.8103 97.321149 238.3435 97.321152 239.0349 curveto +97.321149 239.61498 97.494 240.05444 97.839706 240.35326 curveto +98.191265 240.64623 98.853374 240.88354 99.826035 241.06517 curveto +100.8983 241.2849 lineto +102.22251 241.53686 103.1981 241.98217 103.82506 242.62083 curveto +104.45786 243.25365 104.77427 244.10326 104.77428 245.16966 curveto +104.77427 246.44115 104.34653 247.40502 103.49107 248.06126 curveto +102.64146 248.71751 101.39341 249.04564 99.746933 249.04564 curveto +99.125834 249.04564 98.463726 248.97533 97.760605 248.8347 curveto +97.063337 248.69408 96.339704 248.48607 95.589706 248.21068 curveto +95.589706 246.38255 lineto +96.310408 246.78685 97.016462 247.09154 97.70787 247.29662 curveto +98.399273 247.5017 99.07896 247.60423 99.746933 247.60423 curveto +100.7606 247.60423 101.54282 247.40502 102.09361 247.00658 curveto +102.64439 246.60814 102.91978 246.03978 102.91978 245.3015 curveto +102.91978 244.65697 102.72056 244.15307 102.32213 243.78978 curveto +101.92954 243.4265 101.28208 243.15404 100.37975 242.9724 curveto +99.298691 242.76146 lineto +97.974468 242.49779 97.016462 242.08471 96.424667 241.5222 curveto +95.832869 240.95971 95.536971 240.17748 95.536972 239.17552 curveto +95.536971 238.01538 95.944197 237.10131 96.758652 236.43333 curveto +97.578961 235.76538 98.70689 235.43139 100.14244 235.43138 curveto +100.75767 235.43139 101.38462 235.48706 102.0233 235.59837 curveto +102.66196 235.70971 103.31528 235.87671 103.98326 236.09935 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +109.31822 237.12767 moveto +109.31822 242.05833 lineto +111.55064 242.05833 lineto +112.37681 242.05834 113.01548 241.84447 113.46666 241.41673 curveto +113.91782 240.98901 114.14341 240.37963 114.14342 239.58861 curveto +114.14341 238.80346 113.91782 238.19702 113.46666 237.76927 curveto +113.01548 237.34155 112.37681 237.12768 111.55064 237.12767 curveto +109.31822 237.12767 lineto +107.54283 235.66869 moveto +111.55064 235.66869 lineto +113.02134 235.6687 114.13169 236.00268 114.8817 236.67064 curveto +115.63755 237.33276 116.01548 238.30542 116.01549 239.58861 curveto +116.01548 240.88354 115.63755 241.86205 114.8817 242.52415 curveto +114.13169 243.18627 113.02134 243.51732 111.55064 243.51732 curveto +109.31822 243.51732 lineto +109.31822 248.79076 lineto +107.54283 248.79076 lineto +107.54283 235.66869 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +121.6317 237.41771 moveto +119.2235 243.94798 lineto +124.04869 243.94798 lineto +121.6317 237.41771 lineto +120.62975 235.66869 moveto +122.64244 235.66869 lineto +127.64342 248.79076 lineto +125.79771 248.79076 lineto +124.6024 245.42455 lineto +118.68736 245.42455 lineto +117.49205 248.79076 lineto +115.61998 248.79076 lineto +120.62975 235.66869 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +135.7733 242.63841 moveto +136.15415 242.76732 136.52329 243.04272 136.88072 243.46458 curveto +137.24399 243.88646 137.60727 244.46654 137.97057 245.20482 curveto +139.77232 248.79076 lineto +137.8651 248.79076 lineto +136.18639 245.42455 lineto +135.75278 244.54564 135.33091 243.96264 134.92076 243.67552 curveto +134.51646 243.38842 133.96275 243.24486 133.25963 243.24486 curveto +131.32603 243.24486 lineto +131.32603 248.79076 lineto +129.55064 248.79076 lineto +129.55064 235.66869 lineto +133.55846 235.66869 lineto +135.05845 235.6687 136.17759 235.98218 136.91588 236.60912 curveto +137.65415 237.23608 138.02329 238.18237 138.0233 239.44798 curveto +138.02329 240.27416 137.82993 240.95971 137.44322 241.50462 curveto +137.06235 242.04955 136.50571 242.42748 135.7733 242.63841 curveto +131.32603 237.12767 moveto +131.32603 241.78587 lineto +133.55846 241.78587 lineto +134.41392 241.78588 135.05845 241.58959 135.49205 241.19701 curveto +135.9315 240.79858 136.15122 240.21557 136.15123 239.44798 curveto +136.15122 238.68041 135.9315 238.10327 135.49205 237.71654 curveto +135.05845 237.32397 134.41392 237.12768 133.55846 237.12767 curveto +131.32603 237.12767 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +147.39244 236.87279 moveto +146.10337 236.8728 145.07798 237.35327 144.31627 238.31419 curveto +143.56041 239.27514 143.18248 240.58471 143.18248 242.2429 curveto +143.18248 243.89525 143.56041 245.20189 144.31627 246.16283 curveto +145.07798 247.12377 146.10337 247.60423 147.39244 247.60423 curveto +148.68149 247.60423 149.70103 247.12377 150.45103 246.16283 curveto +151.20688 245.20189 151.58481 243.89525 151.58482 242.2429 curveto +151.58481 240.58471 151.20688 239.27514 150.45103 238.31419 curveto +149.70103 237.35327 148.68149 236.8728 147.39244 236.87279 curveto +149.87975 248.55345 moveto +152.21764 251.11107 lineto +150.0731 251.11107 lineto +148.13072 249.01048 lineto +147.93736 249.0222 147.78794 249.03099 147.68248 249.03685 curveto +147.58286 249.04271 147.48618 249.04564 147.39244 249.04564 curveto +145.54673 249.04564 144.07017 248.43041 142.96275 247.19994 curveto +141.86119 245.96361 141.31041 244.31127 141.31041 242.2429 curveto +141.31041 240.16869 141.86119 238.51635 142.96275 237.28587 curveto +144.07017 236.04956 145.54673 235.43139 147.39244 235.43138 curveto +149.23228 235.43139 150.70298 236.04956 151.80455 237.28587 curveto +152.9061 238.51635 153.45688 240.16869 153.45689 242.2429 curveto +153.45688 243.76635 153.14926 245.07006 152.53404 246.15404 curveto +151.92466 247.23802 151.03989 248.03783 149.87975 248.55345 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +156.23424 235.66869 moveto +158.00963 235.66869 lineto +158.00963 247.29662 lineto +164.39928 247.29662 lineto +164.39928 248.79076 lineto +156.23424 248.79076 lineto +156.23424 235.66869 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +180.33385 243.46458 moveto +180.33385 244.2556 lineto +172.8983 244.2556 lineto +172.96861 245.36888 173.30259 246.21849 173.90025 246.80443 curveto +174.50376 247.38451 175.34165 247.67455 176.41393 247.67455 curveto +177.03501 247.67455 177.6356 247.59837 178.21568 247.44603 curveto +178.80161 247.29369 179.38169 247.06517 179.95592 246.76048 curveto +179.95592 248.28978 lineto +179.37583 248.53587 178.7811 248.72337 178.17174 248.85228 curveto +177.56236 248.98119 176.94419 249.04564 176.31725 249.04564 curveto +174.74693 249.04564 173.50181 248.58861 172.58189 247.67455 curveto +171.66783 246.76048 171.2108 245.52416 171.2108 243.96556 curveto +171.2108 242.35424 171.64439 241.0769 172.51158 240.13353 curveto +173.38463 239.18432 174.55943 238.70971 176.036 238.7097 curveto +177.36021 238.70971 178.4061 239.13745 179.17369 239.9929 curveto +179.94712 240.84252 180.33384 241.99975 180.33385 243.46458 curveto +178.71666 242.98997 moveto +178.70493 242.10522 178.45591 241.39916 177.96959 240.87181 curveto +177.48911 240.34448 176.85044 240.0808 176.05357 240.0808 curveto +175.15122 240.0808 174.42759 240.33569 173.88268 240.84544 curveto +173.34361 241.35522 173.03306 242.07299 172.95103 242.99876 curveto +178.71666 242.98997 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +191.17076 242.84935 moveto +191.17076 248.79076 lineto +189.55357 248.79076 lineto +189.55357 242.90208 lineto +189.55357 241.97045 189.37192 241.27319 189.00865 240.81029 curveto +188.64536 240.34741 188.10044 240.11596 187.37389 240.11595 curveto +186.50083 240.11596 185.81236 240.39428 185.30846 240.95091 curveto +184.80455 241.50756 184.55259 242.26635 184.5526 243.22728 curveto +184.5526 248.79076 lineto +182.92662 248.79076 lineto +182.92662 238.94701 lineto +184.5526 238.94701 lineto +184.5526 240.4763 lineto +184.93931 239.88452 185.39341 239.44213 185.9149 239.14915 curveto +186.44224 238.8562 187.04869 238.70971 187.73424 238.7097 curveto +188.86509 238.70971 189.72056 239.06127 190.30064 239.76439 curveto +190.88071 240.46166 191.17075 241.48998 191.17076 242.84935 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +200.89146 240.44115 moveto +200.89146 235.11497 lineto +202.50865 235.11497 lineto +202.50865 248.79076 lineto +200.89146 248.79076 lineto +200.89146 247.31419 lineto +200.55161 247.90013 200.12095 248.33666 199.59947 248.62376 curveto +199.08384 248.90501 198.46275 249.04564 197.73619 249.04564 curveto +196.54673 249.04564 195.57701 248.57103 194.82701 247.62181 curveto +194.08287 246.67259 193.7108 245.42455 193.7108 243.87767 curveto +193.7108 242.3308 194.08287 241.08276 194.82701 240.13353 curveto +195.57701 239.18432 196.54673 238.70971 197.73619 238.7097 curveto +198.46275 238.70971 199.08384 238.85327 199.59947 239.14037 curveto +200.12095 239.42162 200.55161 239.85522 200.89146 240.44115 curveto +195.38072 243.87767 moveto +195.38072 245.06713 195.62388 246.0017 196.11021 246.68138 curveto +196.6024 247.35521 197.27623 247.69212 198.1317 247.69212 curveto +198.98716 247.69212 199.66099 247.35521 200.15318 246.68138 curveto +200.64536 246.0017 200.89146 245.06713 200.89146 243.87767 curveto +200.89146 242.68822 200.64536 241.75658 200.15318 241.08275 curveto +199.66099 240.40307 198.98716 240.06323 198.1317 240.06322 curveto +197.27623 240.06323 196.6024 240.40307 196.11021 241.08275 curveto +195.62388 241.75658 195.38072 242.68822 195.38072 243.87767 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +207.40416 247.31419 moveto +207.40416 252.5349 lineto +205.77818 252.5349 lineto +205.77818 238.94701 lineto +207.40416 238.94701 lineto +207.40416 240.44115 lineto +207.744 239.85522 208.17173 239.42162 208.68736 239.14037 curveto +209.20884 238.85327 209.82994 238.70971 210.55064 238.7097 curveto +211.74595 238.70971 212.71567 239.18432 213.45982 240.13353 curveto +214.20981 241.08276 214.58481 242.3308 214.58482 243.87767 curveto +214.58481 245.42455 214.20981 246.67259 213.45982 247.62181 curveto +212.71567 248.57103 211.74595 249.04564 210.55064 249.04564 curveto +209.82994 249.04564 209.20884 248.90501 208.68736 248.62376 curveto +208.17173 248.33666 207.744 247.90013 207.40416 247.31419 curveto +212.90611 243.87767 moveto +212.9061 242.68822 212.66001 241.75658 212.16783 241.08275 curveto +211.6815 240.40307 211.0106 240.06323 210.15514 240.06322 curveto +209.29966 240.06323 208.62583 240.40307 208.13365 241.08275 curveto +207.64732 241.75658 207.40416 242.68822 207.40416 243.87767 curveto +207.40416 245.06713 207.64732 246.0017 208.13365 246.68138 curveto +208.62583 247.35521 209.29966 247.69212 210.15514 247.69212 curveto +211.0106 247.69212 211.6815 247.35521 212.16783 246.68138 curveto +212.66001 246.0017 212.9061 245.06713 212.90611 243.87767 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +221.07994 240.0808 moveto +220.21275 240.0808 219.5272 240.42065 219.0233 241.10033 curveto +218.51939 241.77416 218.26744 242.69994 218.26744 243.87767 curveto +218.26744 245.05541 218.51646 245.98412 219.01451 246.6638 curveto +219.51841 247.33763 220.20689 247.67455 221.07994 247.67455 curveto +221.94126 247.67455 222.62388 247.3347 223.12779 246.65501 curveto +223.63169 245.97533 223.88364 245.04955 223.88365 243.87767 curveto +223.88364 242.71166 223.63169 241.78881 223.12779 241.10912 curveto +222.62388 240.42358 221.94126 240.0808 221.07994 240.0808 curveto +221.07994 238.7097 moveto +222.48618 238.70971 223.59067 239.16674 224.39342 240.0808 curveto +225.19614 240.99487 225.59751 242.26049 225.59752 243.87767 curveto +225.59751 245.489 225.19614 246.75463 224.39342 247.67455 curveto +223.59067 248.58861 222.48618 249.04564 221.07994 249.04564 curveto +219.66783 249.04564 218.56041 248.58861 217.75768 247.67455 curveto +216.9608 246.75463 216.56236 245.489 216.56236 243.87767 curveto +216.56236 242.26049 216.9608 240.99487 217.75768 240.0808 curveto +218.56041 239.16674 219.66783 238.70971 221.07994 238.7097 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +228.26939 238.94701 moveto +229.88658 238.94701 lineto +229.88658 248.79076 lineto +228.26939 248.79076 lineto +228.26939 238.94701 lineto +228.26939 235.11497 moveto +229.88658 235.11497 lineto +229.88658 237.16283 lineto +228.26939 237.16283 lineto +228.26939 235.11497 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +241.4442 242.84935 moveto +241.4442 248.79076 lineto +239.82701 248.79076 lineto +239.82701 242.90208 lineto +239.827 241.97045 239.64536 241.27319 239.28209 240.81029 curveto +238.9188 240.34741 238.37388 240.11596 237.64732 240.11595 curveto +236.77427 240.11596 236.0858 240.39428 235.58189 240.95091 curveto +235.07798 241.50756 234.82603 242.26635 234.82603 243.22728 curveto +234.82603 248.79076 lineto +233.20006 248.79076 lineto +233.20006 238.94701 lineto +234.82603 238.94701 lineto +234.82603 240.4763 lineto +235.21275 239.88452 235.66685 239.44213 236.18834 239.14915 curveto +236.71568 238.8562 237.32212 238.70971 238.00768 238.7097 curveto +239.13853 238.70971 239.99399 239.06127 240.57408 239.76439 curveto +241.15415 240.46166 241.44419 241.48998 241.4442 242.84935 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +246.28697 236.15208 moveto +246.28697 238.94701 lineto +249.61803 238.94701 lineto +249.61803 240.20384 lineto +246.28697 240.20384 lineto +246.28697 245.54759 lineto +246.28697 246.35033 246.39537 246.86595 246.61217 247.09447 curveto +246.83482 247.32298 247.28306 247.43724 247.95689 247.43724 curveto +249.61803 247.43724 lineto +249.61803 248.79076 lineto +247.95689 248.79076 lineto +246.70884 248.79076 245.84752 248.55931 245.37291 248.09642 curveto +244.8983 247.62767 244.66099 246.77806 244.661 245.54759 curveto +244.661 240.20384 lineto +243.47447 240.20384 lineto +243.47447 238.94701 lineto +244.661 238.94701 lineto +244.661 236.15208 lineto +246.28697 236.15208 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +251.49889 235.13255 moveto +252.90514 235.13255 lineto +253.78404 236.51538 254.44029 237.86889 254.87389 239.1931 curveto +255.31333 240.51733 255.53306 241.83276 255.53307 243.13939 curveto +255.53306 244.45189 255.31333 245.77318 254.87389 247.10326 curveto +254.44029 248.43333 253.78404 249.78685 252.90514 251.1638 curveto +251.49889 251.1638 lineto +252.27818 249.82201 252.85826 248.489 253.23912 247.16478 curveto +253.62584 245.8347 253.81919 244.49291 253.8192 243.13939 curveto +253.81919 241.78588 253.62584 240.44994 253.23912 239.13158 curveto +252.85826 237.81323 252.27818 236.48022 251.49889 235.13255 curveto +fill +grestore +grestore +gsave [1 0 0 1 0 0] concat +gsave +1 0.83137256 0.16470589 setrgbcolor +newpath +400.53726 369.87546 moveto +649.46272 369.87546 lineto +649.46272 458.80093 lineto +400.53726 458.80093 lineto +400.53726 369.87546 lineto +closepath +eofill +grestore +0 0 0 setrgbcolor +[] 0 setdash +1.0745348 setlinewidth +1 setlinejoin +0 setlinecap +newpath +400.53726 369.87546 moveto +649.46272 369.87546 lineto +649.46272 458.80093 lineto +400.53726 458.80093 lineto +400.53726 369.87546 lineto +closepath +stroke +grestore +gsave [1 0 0 1 0 0] concat +gsave +1 0.83137256 0.16470589 setrgbcolor +newpath +50.489872 369.06635 moveto +299.51012 369.06635 lineto +299.51012 458.0866 lineto +50.489872 458.0866 lineto +50.489872 369.06635 lineto +closepath +eofill +grestore +0 0 0 setrgbcolor +[] 0 setdash +0.97974563 setlinewidth +1 setlinejoin +0 setlinecap +newpath +50.489872 369.06635 moveto +299.51012 369.06635 lineto +299.51012 458.0866 lineto +50.489872 458.0866 lineto +50.489872 369.06635 lineto +closepath +stroke +grestore +gsave [1 0 0 1 0 0] concat +gsave +1 0.83137256 0.16470589 setrgbcolor +newpath +205.71428 556.64783 moveto +509.99998 556.64783 lineto +509.99998 653.79069 lineto +205.71428 653.79069 lineto +205.71428 556.64783 lineto +closepath +eofill +grestore +0 0 0 setrgbcolor +[] 0 setdash +1 setlinewidth +1 setlinejoin +0 setlinecap +newpath +205.71428 556.64783 moveto +509.99998 556.64783 lineto +509.99998 653.79069 lineto +205.71428 653.79069 lineto +205.71428 556.64783 lineto +closepath +stroke +grestore +gsave [1 0 0 1 0 29.442843] concat +gsave [1 0 0 1 0 0] concat +gsave +1 0.83137256 0.16470589 setrgbcolor +newpath +400.53046 176.24979 moveto +649.46956 176.24979 lineto +649.46956 265.18889 lineto +400.53046 265.18889 lineto +400.53046 176.24979 lineto +closepath +eofill +grestore +0 0 0 setrgbcolor +[] 0 setdash +1.0609013 setlinewidth +1 setlinejoin +0 setlinecap +newpath +400.53046 176.24979 moveto +649.46956 176.24979 lineto +649.46956 265.18889 lineto +400.53046 265.18889 lineto +400.53046 176.24979 lineto +closepath +stroke +grestore +gsave +0 0 0 setrgbcolor +newpath +444.55341 203.94701 moveto +446.17059 203.94701 lineto +446.17059 213.79076 lineto +444.55341 213.79076 lineto +444.55341 203.94701 lineto +444.55341 200.11497 moveto +446.17059 200.11497 lineto +446.17059 202.16283 lineto +444.55341 202.16283 lineto +444.55341 200.11497 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +457.72821 207.84935 moveto +457.72821 213.79076 lineto +456.11102 213.79076 lineto +456.11102 207.90208 lineto +456.11101 206.97045 455.92937 206.27319 455.5661 205.81029 curveto +455.20281 205.34741 454.65789 205.11596 453.93134 205.11595 curveto +453.05828 205.11596 452.36981 205.39428 451.86591 205.95091 curveto +451.362 206.50756 451.11004 207.26635 451.11005 208.22728 curveto +451.11005 213.79076 lineto +449.48407 213.79076 lineto +449.48407 203.94701 lineto +451.11005 203.94701 lineto +451.11005 205.4763 lineto +451.49676 204.88452 451.95086 204.44213 452.47235 204.14915 curveto +452.99969 203.8562 453.60613 203.70971 454.29169 203.7097 curveto +455.42254 203.70971 456.27801 204.06127 456.85809 204.76439 curveto +457.43816 205.46166 457.7282 206.48998 457.72821 207.84935 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +465.95477 200.11497 moveto +465.95477 201.4597 lineto +464.4079 201.4597 lineto +463.82782 201.45971 463.42352 201.5769 463.19501 201.81126 curveto +462.97235 202.04565 462.86102 202.46753 462.86102 203.07689 curveto +462.86102 203.94701 lineto +465.52411 203.94701 lineto +465.52411 205.20384 lineto +462.86102 205.20384 lineto +462.86102 213.79076 lineto +461.23505 213.79076 lineto +461.23505 205.20384 lineto +459.68817 205.20384 lineto +459.68817 203.94701 lineto +461.23505 203.94701 lineto +461.23505 203.26146 lineto +461.23504 202.16577 461.48993 201.36889 461.99969 200.87083 curveto +462.50946 200.36694 463.31805 200.11499 464.42548 200.11497 curveto +465.95477 200.11497 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +471.11395 205.0808 moveto +470.24676 205.0808 469.56121 205.42065 469.05731 206.10033 curveto +468.5534 206.77416 468.30145 207.69994 468.30145 208.87767 curveto +468.30145 210.05541 468.55047 210.98412 469.04852 211.6638 curveto +469.55243 212.33763 470.2409 212.67455 471.11395 212.67455 curveto +471.97527 212.67455 472.65789 212.3347 473.1618 211.65501 curveto +473.6657 210.97533 473.91766 210.04955 473.91766 208.87767 curveto +473.91766 207.71166 473.6657 206.78881 473.1618 206.10912 curveto +472.65789 205.42358 471.97527 205.0808 471.11395 205.0808 curveto +471.11395 203.7097 moveto +472.5202 203.70971 473.62469 204.16674 474.42743 205.0808 curveto +475.23015 205.99487 475.63152 207.26049 475.63153 208.87767 curveto +475.63152 210.489 475.23015 211.75463 474.42743 212.67455 curveto +473.62469 213.58861 472.5202 214.04564 471.11395 214.04564 curveto +469.70184 214.04564 468.59442 213.58861 467.79169 212.67455 curveto +466.99481 211.75463 466.59637 210.489 466.59637 208.87767 curveto +466.59637 207.26049 466.99481 205.99487 467.79169 205.0808 curveto +468.59442 204.16674 469.70184 203.70971 471.11395 203.7097 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +484.00751 205.45872 moveto +483.82586 205.35326 483.62664 205.27709 483.40985 205.23021 curveto +483.19891 205.17748 482.96453 205.15112 482.70673 205.15111 curveto +481.79266 205.15112 481.08953 205.44994 480.59735 206.04759 curveto +480.11102 206.6394 479.86786 207.49193 479.86786 208.60521 curveto +479.86786 213.79076 lineto +478.24188 213.79076 lineto +478.24188 203.94701 lineto +479.86786 203.94701 lineto +479.86786 205.4763 lineto +480.2077 204.87866 480.65008 204.43627 481.19501 204.14915 curveto +481.73992 203.8562 482.40203 203.70971 483.18134 203.7097 curveto +483.29266 203.70971 483.4157 203.7185 483.55048 203.73607 curveto +483.68523 203.7478 483.83465 203.76831 483.99872 203.79759 curveto +484.00751 205.45872 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +493.06903 205.83665 moveto +493.47332 205.1101 493.95672 204.57397 494.51923 204.22826 curveto +495.08171 203.88256 495.74382 203.70971 496.50555 203.7097 curveto +497.53093 203.70971 498.32195 204.07006 498.8786 204.79076 curveto +499.43523 205.50561 499.71355 206.52514 499.71356 207.84935 curveto +499.71356 213.79076 lineto +498.08759 213.79076 lineto +498.08759 207.90208 lineto +498.08757 206.95873 497.92058 206.25854 497.58661 205.8015 curveto +497.25261 205.34448 496.74285 205.11596 496.05731 205.11595 curveto +495.21941 205.11596 494.5573 205.39428 494.07098 205.95091 curveto +493.58465 206.50756 493.34148 207.26635 493.34149 208.22728 curveto +493.34149 213.79076 lineto +491.71552 213.79076 lineto +491.71552 207.90208 lineto +491.71551 206.95287 491.54852 206.25268 491.21454 205.8015 curveto +490.88055 205.34448 490.36492 205.11596 489.66766 205.11595 curveto +488.84149 205.11596 488.18524 205.39721 487.69891 205.9597 curveto +487.21258 206.51635 486.96942 207.27221 486.96942 208.22728 curveto +486.96942 213.79076 lineto +485.34344 213.79076 lineto +485.34344 203.94701 lineto +486.96942 203.94701 lineto +486.96942 205.4763 lineto +487.33856 204.8728 487.78094 204.42748 488.29657 204.14037 curveto +488.81219 203.85327 489.42449 203.70971 490.13348 203.7097 curveto +490.84832 203.70971 491.45477 203.89135 491.95282 204.25462 curveto +492.45672 204.61791 492.82879 205.14526 493.06903 205.83665 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +507.42157 208.84251 moveto +506.11492 208.84252 505.20965 208.99193 504.70575 209.29076 curveto +504.20184 209.58959 503.94989 210.09935 503.94989 210.82005 curveto +503.94989 211.39427 504.13739 211.85131 504.51239 212.19115 curveto +504.89325 212.52513 505.40887 212.69212 506.05927 212.69212 curveto +506.95574 212.69212 507.67352 212.37572 508.21259 211.7429 curveto +508.7575 211.10424 509.02996 210.25756 509.02997 209.20287 curveto +509.02997 208.84251 lineto +507.42157 208.84251 lineto +510.64716 208.17455 moveto +510.64716 213.79076 lineto +509.02997 213.79076 lineto +509.02997 212.29662 lineto +508.66082 212.89427 508.20086 213.33666 507.65009 213.62376 curveto +507.0993 213.90501 506.42547 214.04564 505.6286 214.04564 curveto +504.62079 214.04564 503.81805 213.76439 503.2204 213.20189 curveto +502.6286 212.63353 502.3327 211.87474 502.3327 210.92552 curveto +502.3327 209.8181 502.70184 208.98314 503.44012 208.42064 curveto +504.18426 207.85814 505.29168 207.5769 506.76239 207.57689 curveto +509.02997 207.57689 lineto +509.02997 207.41869 lineto +509.02996 206.67455 508.78387 206.10033 508.29169 205.69603 curveto +507.80535 205.28588 507.11981 205.0808 506.23505 205.0808 curveto +505.67254 205.0808 505.12469 205.14819 504.59149 205.28294 curveto +504.05829 205.41772 503.54559 205.61987 503.05341 205.88939 curveto +503.05341 204.39525 lineto +503.6452 204.16674 504.21942 203.99682 504.77606 203.88548 curveto +505.3327 203.76831 505.87469 203.70971 506.40204 203.7097 curveto +507.82586 203.70971 508.88934 204.07885 509.59247 204.81712 curveto +510.29558 205.55541 510.64715 206.67455 510.64716 208.17455 curveto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +515.58661 201.15208 moveto +515.58661 203.94701 lineto +518.91766 203.94701 lineto +518.91766 205.20384 lineto +515.58661 205.20384 lineto +515.58661 210.54759 lineto +515.58661 211.35033 515.695 211.86595 515.9118 212.09447 curveto +516.13446 212.32298 516.5827 212.43724 517.25653 212.43724 curveto +518.91766 212.43724 lineto +518.91766 213.79076 lineto +517.25653 213.79076 lineto +516.00848 213.79076 515.14715 213.55931 514.67255 213.09642 curveto +514.19794 212.62767 513.96063 211.77806 513.96063 210.54759 curveto +513.96063 205.20384 lineto +512.77411 205.20384 lineto +512.77411 203.94701 lineto +513.96063 203.94701 lineto +513.96063 201.15208 lineto +515.58661 201.15208 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +521.05341 203.94701 moveto +522.67059 203.94701 lineto +522.67059 213.79076 lineto +521.05341 213.79076 lineto +521.05341 203.94701 lineto +521.05341 200.11497 moveto +522.67059 200.11497 lineto +522.67059 202.16283 lineto +521.05341 202.16283 lineto +521.05341 200.11497 lineto +fill +grestore +gsave +0 0 0 setrgbcolor +newpath +529.86005 205.0808 moveto +528.99285 205.0808 528.30731 205.42065 527.80341 206.10033 curveto +527.2995 206.77416 527.04754 207.69994 527.04755 208.87767 curveto +527.04754 210.05541 527.29657 210.98412 527.79462 211.6638 curveto +528.29852 212.33763 528.98699 212.67455 529.86005 212.67455 curveto +530.72137 212.67455 531.40398 212.3347 531.9079 211.65501 curveto +532.4118 210.97533 532.66375 210.04955 532.66376 208.87767 curveto +532.66375 207.71166 532.4118 206.78881 531.9079 206.10912 curveto +531.40398 205.42358 530.72137 205.0808 529.86005 205.0808 curveto +529.86005 203.7097 moveto +531.26629 203.70971 532.37078 204.16674 533.17352... [truncated message content] |
From: <lor...@us...> - 2009-09-22 08:02:13
|
Revision: 1854 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1854&view=rev Author: lorenz_b Date: 2009-09-22 08:02:04 +0000 (Tue, 22 Sep 2009) Log Message: ----------- added simple inconsistency measure added multirow feature for tables Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/Explanation.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MultiLineTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ProgressBarTableCellRenderer.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -11,13 +11,19 @@ import org.dllearner.tools.ore.explanation.AxiomUsageChecker; import org.dllearner.tools.ore.explanation.CachedExplanationGenerator; import org.dllearner.tools.ore.explanation.Explanation; +import org.dllearner.tools.ore.explanation.ExplanationException; import org.dllearner.tools.ore.explanation.RootFinder; +import org.dllearner.tools.ore.explanation.laconic.LaconicExplanationGenerator; +import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLEntity; import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; @@ -159,8 +165,29 @@ return usageChecker.getUsage(axiom); } + public Explanation getLaconicExplanation(Explanation explanation){ + Explanation exp = null; + try { + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + PelletReasonerFactory reasonerFactory = new PelletReasonerFactory(); + OWLOntology ontology = manager.createOntology(explanation.getAxioms()); + LaconicExplanationGenerator gen = new LaconicExplanationGenerator(manager, reasonerFactory, Collections.singleton(ontology)); + exp = gen.getExplanations(explanation.getEntailment(), 1).iterator().next(); + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExplanationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return exp; + } + private ArrayList<Map<OWLAxiom, Integer>> getTree2List(Tree<OWLAxiom> tree){ ArrayList<Map<OWLAxiom, Integer>> ordering = new ArrayList<Map<OWLAxiom, Integer>>(); Map<OWLAxiom, Integer> axiom2Depth = new HashMap<OWLAxiom, Integer>(); @@ -192,6 +219,11 @@ return gen.getArity(ax); } + public double getInconsistencyValue(OWLAxiom ax){ + + return Math.round( gen.getInconsistencyValue(ax) * 100. ) / 100.; + } + public void setLaconicMode(boolean laconic){ gen.setComputeLaconicExplanations(laconic); fireExplanationTypeChanged(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -20,23 +20,14 @@ package org.dllearner.tools.ore; import java.net.MalformedURLException; -import java.net.URL; import java.util.SortedSet; import java.util.TreeSet; -import org.dllearner.algorithms.celoe.CELOE; -import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; -import org.dllearner.core.LearningAlgorithm; -import org.dllearner.core.LearningProblemUnsupportedException; -import org.dllearner.core.ReasonerComponent; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.learningproblems.ClassLearningProblem; -import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.utilities.datastructures.SetManipulation; -import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; /** * Test class for SPARQL mode. @@ -46,73 +37,43 @@ */ public class SPARQLTest { - @SuppressWarnings("unused") public static void main(String[] args) throws MalformedURLException { - String exampleClass = "http://dbpedia.org/ontology/HistoricPlace"; - String exampleClassKBString = "\"" + exampleClass + "\""; - + String exampleClass = "http://dbpedia.org/ontology/Place"; + ComponentManager cm = ComponentManager.getInstance(); SparqlEndpoint endPoint = SparqlEndpoint.getEndpointDBpedia(); - - - - String queryString = "SELECT DISTINCT ?class, ?label WHERE {" + - "?class rdf:type owl:Class ." + - "?class rdfs:label ?label .}" ; - //"FILTER(regex(?label, '^$deinstring')) }"; + SPARQLTasks task = new SPARQLTasks(endPoint); - System.out.println(task.queryAsSet(queryString, "label")); -// SparqlQuery query = new SparqlQuery(queryString, endPoint); -// query.send(); -// String json = query.getJson(); -// ResultSet rs = SparqlQuery.convertJSONtoResultSet(json); -// Set<String> results = SPARQLTasks.getStringSetForVariableFromResultSet -// (ResultSetFactory.makeRewindable(rs), "label"); -// -// System.out.println(results); - - AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL(task); - pos.makePositiveExamplesFromConcept(exampleClassKBString); - - SortedSet<String> allPosExamples = pos.getPosExamples(); - SortedSet<String> posExamples = SetManipulation.stableShrink(allPosExamples, 20); - System.out.println(posExamples.size()); - System.out.println(posExamples); + SortedSet<String> examples = new TreeSet<String>(); + SortedSet<String> superClasses = task.getSuperClasses(exampleClass, 2); + for (String sup : superClasses) { + examples.addAll(task.retrieveInstancesForClassDescription("\"" + + sup + "\"", 20)); - -// AutomaticNegativeExampleFinderSPARQL neg = new AutomaticNegativeExampleFinderSPARQL( -// posExamples, task, new TreeSet<String>()); -// neg.makeNegativeExamplesFromSuperClasses(exampleClass, 1000); -// SortedSet<String> negExamples = neg.getNegativeExamples(20); -// System.out.println(negExamples); + } - SortedSet<String> instances = new TreeSet<String>(posExamples); -// instances.addAll(negExamples); - - try { + SortedSet<String> posExamples = SetManipulation.stableShrink(examples, + 20); - SparqlKnowledgeSource ks = cm.knowledgeSource(SparqlKnowledgeSource.class); - cm.applyConfigEntry(ks, "predefinedEndpoint", "DBPEDIA"); - ks.getConfigurator().setInstances(instances); -// ks.getConfigurator().setPredefinedFilter("YAGO"); - ks.init(); - ReasonerComponent reasoner = cm.reasoner(FastInstanceChecker.class, ks); - reasoner.init(); - ClassLearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); - lp.getConfigurator().setClassToDescribe(new URL(exampleClass)); - lp.init(); - LearningAlgorithm la = cm.learningAlgorithm(CELOE.class, lp, reasoner); - la.init(); + SparqlKnowledgeSource ks = cm + .knowledgeSource(SparqlKnowledgeSource.class); + ks.getConfigurator().setUrl(endPoint.getURL()); + ks.getConfigurator().setInstances(posExamples); + ks.init(); + // ReasonerComponent reasoner = cm.reasoner(FastInstanceChecker.class, + // ks); + // reasoner.init(); + // ClassLearningProblem lp = + // cm.learningProblem(ClassLearningProblem.class, reasoner); + // lp.getConfigurator().setClassToDescribe(new URL(exampleClass)); + // lp.init(); + // LearningAlgorithm la = cm.learningAlgorithm(CELOE.class, lp, + // reasoner); + // la.init(); + // + // la.start(); - la.start(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (LearningProblemUnsupportedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -6,6 +6,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; @@ -25,6 +27,7 @@ import com.clarkparsia.modularity.ModularityUtils; import com.clarkparsia.owlapi.OntologyUtils; + public class CachedExplanationGenerator implements ExplanationGenerator, RepairManagerListener{ private Map<OWLAxiom, OWLOntology> axiom2Module; @@ -86,6 +89,33 @@ } return arity; } + + public double getInconsistencyValue(OWLAxiom ax){ + double value = 0; + Map<OWLAxiom, Set<Explanation>> cache; + if(laconicMode == true){ + cache = laconicExplanationCache; + } else { + cache = regularExplanationCache; + } + SortedSet<Explanation> sorted = new TreeSet<Explanation>(); + for(Set<Explanation> explanations : cache.values()){ + for(Explanation exp : explanations){ + if(exp.getAxioms().contains(ax)){ + sorted.add(exp); + } + } + } + for(Explanation exp : sorted){ + if(exp.getAxioms().size() == 1){ + return 1; + } else { + value += 1.0/exp.getAxioms().size() * (1 - value); + } + } + return Math.min(1, value); + + } @Override public Set<Explanation> getExplanations(OWLAxiom entailment, int limit){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/Explanation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/Explanation.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/Explanation.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -5,7 +5,7 @@ import org.semanticweb.owl.model.OWLAxiom; -public class Explanation { +public class Explanation implements Comparable<Explanation> { private Set<OWLAxiom> axioms; private OWLAxiom entailment; @@ -51,6 +51,17 @@ public int hashCode() { return entailment.hashCode() + axioms.hashCode(); } + + @Override + public int compareTo(Explanation o) { + if(axioms.size() == o.axioms.size()){ + return 1; + } else if(axioms.size() > o.axioms.size()){ + return 1; + } else { + return -1; + } + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -27,7 +27,6 @@ import org.dllearner.tools.ore.RepairManagerListener; import org.dllearner.tools.ore.explanation.Explanation; import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.decorator.HighlighterFactory; import org.protege.editor.core.Disposable; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLOntologyChange; @@ -42,10 +41,10 @@ private RepairManager repMan; protected String[] columnToolTips = { - null, // "First Name" assumed obvious - // "Last Name" assumed obvious + null, "The number of already computed explanations where the axiom occurs.", "TODO", + "TODO", "If checked, the axiom is selected to remove from the ontology.", "Edit the axiom." }; @@ -57,19 +56,20 @@ repMan.addListener(this); setBackground(Color.WHITE); -// setHighlighters(HighlighterFactory.createAlternateStriping()); setAutoResizeMode(JTable.AUTO_RESIZE_OFF); setModel(new ExplanationTableModel(exp, cl)); - TableColumn column5 = getColumn(4); - column5.setCellRenderer(new ButtonCellRenderer()); - column5.setCellEditor(new ButtonCellEditor()); - column5.setResizable(false); + TableColumn column6 = getColumn(5); + column6.setCellRenderer(new ButtonCellRenderer()); + column6.setCellEditor(new ButtonCellEditor()); + column6.setResizable(false); setRowHeight(getRowHeight() + 4); + setRowHeightEnabled(true); + getColumn(0).setCellRenderer(new MultiLineTableCellRenderer()); getColumn(1).setMaxWidth(60); getColumn(2).setMaxWidth(60); - getColumn(3).setMaxWidth(30); + getColumn(3).setMaxWidth(60); getColumn(4).setMaxWidth(30); - + getColumn(5).setMaxWidth(30); getSelectionModel().addListSelectionListener( new ListSelectionListener() { @@ -145,6 +145,10 @@ } + public void strikeOut(boolean strikeOut){ + ((ExplanationTableModel)getModel()).setStriked(strikeOut); + } + private void changeSelection() { } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -28,21 +28,21 @@ private ExplanationManager expMan; private ImpactManager impMan; private RepairManager repMan; - private OWLClass unsat; private OWLOntology ont; + private boolean strikeOutIrrelevantParts; + private Explanation laconicExplanation; public ExplanationTableModel(Explanation exp, OWLClass cl){ this.exp = exp; this.expMan = ExplanationManager.getInstance(OREManager.getInstance()); this.impMan = ImpactManager.getInstance(OREManager.getInstance()); this.repMan = RepairManager.getInstance(OREManager.getInstance()); - this.unsat = cl; this.ont = OREManager.getInstance().getReasoner().getOWLAPIOntologies(); } @Override public int getColumnCount() { - return 5; + return 6; } @Override @@ -55,23 +55,27 @@ OWLAxiom ax = getOWLAxiomAtRow(rowIndex); if(columnIndex == 0){ int depth2Root = expMan.getOrdering(exp).get(rowIndex).values().iterator().next(); - return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root); + if(strikeOutIrrelevantParts){ + return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root, laconicExplanation); + } else { + return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root); + } } else if(columnIndex == 1){ - return expMan.getGlobalArity(ax);//getArity(unsat, getOWLAxiomAtRow(rowIndex)); + return expMan.getGlobalArity(ax); } else if(columnIndex == 2) { return expMan.getUsage(ax).size(); } else if(columnIndex == 3){ + return expMan.getInconsistencyValue(ax); + } else if(columnIndex == 4){ return Boolean.valueOf(impMan.isSelected(ax)); } else { return "rewrite"; - } - + } } - @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { - if(columnIndex == 3){ + if(columnIndex == 4){ OWLAxiom ax = getOWLAxiomAtRow(rowIndex); if(impMan.isSelected(ax)){ impMan.removeSelection(ax); @@ -127,6 +131,8 @@ } else if(columnIndex == 2){ return int.class; } else if(columnIndex == 3){ + return double.class; + } else if(columnIndex == 4){ return Boolean.class; } else { return String.class; @@ -135,7 +141,7 @@ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { - if(columnIndex == 3 || columnIndex == 4){ + if(columnIndex == 4 || columnIndex == 5){ return true; } return false; @@ -145,6 +151,14 @@ return expMan.getOrdering(exp).get(rowIndex).keySet().iterator().next(); } + public void setStriked(boolean strikeOut){ + this.strikeOutIrrelevantParts = strikeOut; + if(strikeOut){ + laconicExplanation = expMan.getLaconicExplanation(exp); + } + fireTableDataChanged(); + } + @Override public String getColumnName(int column) { if(column == 0){ @@ -153,6 +167,8 @@ return "Arity"; } else if(column == 2){ return "Usage"; + } else if(column == 3){ + return ""; } else { return ""; } 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-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -305,7 +305,7 @@ extractTask = new OntologyExtractingTask(this, mon); extractTask.addPropertyChangeListener(this); extractTask.execute(); - + } private boolean urlIsConnectable() @@ -429,18 +429,17 @@ ks = cm.knowledgeSource(SparqlKnowledgeSource.class); 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()); ks.getConfigurator().setGetAllSuperClasses(optionsPanel.isGetAllSuperClasses()); ks.getConfigurator().setDissolveBlankNodes(optionsPanel.isDissolveBlankNodes()); ks.getConfigurator().setUseImprovedSparqlTupelAquisitor(optionsPanel.isUseImprovedSparqlTupelAquisitor()); - ks.getConfigurator().setUseLits(optionsPanel.isUseLiterals()); + ks.getConfigurator().setUseLits(false);//optionsPanel.isUseLiterals()); ks.getConfigurator().setGetPropertyInformation(optionsPanel.isGetPropertyInformation()); ks.getConfigurator().setCloseAfterRecursion(optionsPanel.isCloseAfterRecursion()); ks.addProgressMonitor(mon); - ks.getConfigurator().setSaveExtractedFragment(true); ks.init(); return null; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -41,7 +41,8 @@ setShowHorizontalLines(true); setGridColor(Color.LIGHT_GRAY); setTableHeader(null); - getColumnModel().getColumn(1).setCellRenderer(new OWLSyntaxTableCellRenderer()); + setRowHeightEnabled(true); + getColumnModel().getColumn(1).setCellRenderer(new MultiLineTableCellRenderer()); setRowHeight(getRowHeight() + 5); getColumn(0).setMaxWidth(50); getColumn(2).setMaxWidth(60); @@ -190,4 +191,7 @@ } } + + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -7,11 +7,13 @@ import org.dllearner.core.owl.Individual; import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.utilities.owl.OWLAPIConverter; import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLEntity; import org.semanticweb.owl.model.OWLIndividual; import org.semanticweb.owl.model.OWLObject; @@ -68,7 +70,7 @@ return render(ind); } - public static String render(OWLAxiom value, boolean striked, int depth){ + public static String render(OWLAxiom value, boolean removed, int depth){ value.accept(renderer); writer.flush(); String renderedString = buffer.toString(); @@ -79,7 +81,7 @@ for(int i = 0; i < depth; i++){ bf.append(" "); } - if(striked){ + if(removed){ bf.append("<strike>"); } @@ -112,7 +114,7 @@ bf.append(" " + token + " "); } } - if(striked){ + if(removed){ bf.append("</strike>"); } bf.append("</html>"); @@ -121,6 +123,82 @@ return renderedString; } + public static String render(OWLAxiom value, boolean removed, int depth, Explanation explanation){ + value.accept(renderer); + writer.flush(); + String renderedString = buffer.toString(); + StringTokenizer st = new StringTokenizer(renderedString); + StringBuffer bf = new StringBuffer(); + + bf.append("<html>"); + for(int i = 0; i < depth; i++){ + bf.append(" "); + } + if(removed){ + bf.append("<strike>"); + } + + + String token; + while(st.hasMoreTokens()){ + token = st.nextToken(); + boolean unsatClass = false; + for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ + if(cl.toString().equals(token)){ + unsatClass = true; + break; + } + } + String color = "black"; + if(unsatClass){ + color = "red"; + } + + boolean isReserved = false; + for(Keyword key : Keyword.values()){ + if(token.equals(key.getLabel())){ + color = key.getColor(); + isReserved = true;break; + } + } + boolean isRelevant = false; + if(!isReserved){ + for(OWLAxiom ax : explanation.getAxioms()){ + for(OWLEntity ent : ax.getSignature()){ + if(token.equals(ent.toString())){ + isRelevant = true;break; + } + } + + } + } else { + isRelevant = true; + } + if(isReserved || unsatClass){ + if(isRelevant){ + bf.append("<b><font color=" + color + ">" + token + " </font></b>"); + } else { + bf.append("<strike<b><font color=" + color + ">" + token + " </font></b></strike>"); + } + + } else { + if(isRelevant){ + bf.append(" " + token + " "); + } else { + bf.append("<strike> " + token + " </strike>"); + } + + } + } + if(removed){ + bf.append("</strike>"); + } + bf.append("</html>"); + renderedString = bf.toString(); + buffer.getBuffer().delete(0, buffer.toString().length()); + return renderedString; + } + private static String render(OWLObject obj){ obj.accept(renderer); writer.flush(); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MultiLineTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MultiLineTableCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MultiLineTableCellRenderer.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -0,0 +1,214 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.awt.Component; +import java.io.StringWriter; +import java.util.StringTokenizer; + +import javax.swing.JTable; +import javax.swing.JTextPane; +import javax.swing.UIManager; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; +import javax.swing.table.TableCellRenderer; +import javax.swing.text.Style; +import javax.swing.text.StyleConstants; +import javax.swing.text.StyledDocument; +import javax.swing.text.View; + +import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.ImpactManager; +import org.dllearner.tools.ore.OREManager; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; + +import com.clarkparsia.explanation.io.manchester.Keyword; +import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxObjectRenderer; +import com.clarkparsia.explanation.io.manchester.TextBlockWriter; + +public class MultiLineTableCellRenderer extends JTextPane implements TableCellRenderer{ + + /** + * + */ + private static final long serialVersionUID = -5375479462711405013L; + protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); + + private StringWriter buffer; + private TextBlockWriter writer; + private ManchesterSyntaxObjectRenderer renderer; + private ImpactManager impMan; + + private StyledDocument doc; + Style style; + public MultiLineTableCellRenderer() + { + super(); + + + setContentType("text/html"); + setBorder(noFocusBorder); + + buffer = new StringWriter(); + writer = new TextBlockWriter(buffer); + renderer = new ManchesterSyntaxObjectRenderer(writer); + renderer.setWrapLines( false ); + renderer.setSmartIndent( true ); + impMan = ImpactManager.getInstance(OREManager.getInstance()); + +// Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE); +// Style style = addStyle("regular", def); +// StyleConstants.setLeftIndent(style, 20.0f); + +// SimpleAttributeSet sas = new SimpleAttributeSet(); +// StyleConstants.setAlignment(sas, StyleConstants.ALIGN_RIGHT); +// setParagraphAttributes(sas, true); + + doc = (StyledDocument)getDocument(); + style = doc.addStyle("StyleName", null); + StyleConstants.setItalic(style, true); + + + + } + + + public Component getTableCellRendererComponent(JTable table, + Object value, + boolean isSelected, + boolean hasFocus, + int row, + int column) + { + if (isSelected) + { + super.setForeground(table.getSelectionForeground()); + super.setBackground(table.getSelectionBackground()); + } + else + { + super.setForeground(table.getForeground()); + super.setBackground(table.getBackground()); + } + + setFont(table.getFont()); + + if (hasFocus) + { + setBorder(UIManager.getBorder("Table.focusCellHighlightBorder")); + if (!isSelected && table.isCellEditable(row, column)) + { + Color col; + col = UIManager.getColor("Table.focusCellForeground"); + if (col != null) + { + super.setForeground(col); + } + col = UIManager.getColor("Table.focusCellBackground"); + if (col != null) + { + super.setBackground(col); + } + } + } + else + { + setBorder(noFocusBorder); + } + + setEnabled(table.isEnabled()); + + setValue(table, row, column, value); + + return this; + } + + protected void setValue(JTable table, int row, int column, Object value) + { + if (value != null) + { + String text = value.toString(); + setText(text); + +// try { +// doc.insertString(doc.getLength(), text, style); +// } catch (BadLocationException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } + if(value instanceof OWLAxiom){ + boolean striked = false; + if(impMan != null && impMan.isSelected((OWLAxiom)value)){ + striked = true; + } + ((OWLAxiom)value).accept(renderer); + + writer.flush(); + String newAxiom = buffer.toString(); + + StringTokenizer st = new StringTokenizer(newAxiom); + + StringBuffer bf = new StringBuffer(); + bf.append("<html>"); + if(striked){ + bf.append("<strike>"); + } + + String token; + while(st.hasMoreTokens()){ + token = st.nextToken(); + + boolean unsatClass = false; + for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ + if(cl.toString().equals(token)){ + unsatClass = true; + break; + } + } + String color = "black"; + if(unsatClass){ + color = "red"; + } + + + boolean isReserved = false; + for(Keyword key : Keyword.values()){ + if(token.equals(key.getLabel())){ + color = key.getColor(); + isReserved = true;break; + } + } + if(isReserved || unsatClass){ + bf.append("<b><font color=" + color + ">" + token + " </font></b>"); + } else { + bf.append(" " + token + " "); + } + } + if(striked){ + bf.append("</strike>"); + } + bf.append("</html>"); + newAxiom = bf.toString(); + setText(newAxiom); +// oldAxioms.add(buffer.toString()); + buffer.getBuffer().delete(0, buffer.toString().length()); + } + + + View view = getUI().getRootView(this); + view.setSize((float) table.getColumnModel().getColumn(column).getWidth() - 3, -1); + float y = view.getPreferredSpan(View.Y_AXIS); + int h = (int) Math.ceil(y + 3); + + if (table.getRowHeight(row) != h) + { + table.setRowHeight(row, h ); + } + } + else + { + setText(""); + } + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ProgressBarTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ProgressBarTableCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ProgressBarTableCellRenderer.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -0,0 +1,54 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Component; + +import javax.swing.JProgressBar; +import javax.swing.JTable; +import javax.swing.table.TableCellRenderer; + +public class ProgressBarTableCellRenderer extends JProgressBar implements TableCellRenderer { + + + /** + * + */ + private static final long serialVersionUID = 8523710265306561978L; + + + public ProgressBarTableCellRenderer() { + super(JProgressBar.HORIZONTAL); + setBorderPainted(false); + setStringPainted(true); + } + + public ProgressBarTableCellRenderer(int min, int max) { + super(JProgressBar.HORIZONTAL, 0, 100); + setBorderPainted(false); + } + + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + + int n = 0; + if (! (value instanceof Number)) { + String str; + if (value instanceof String) { + str = (String)value; + } else { + str = value.toString(); + } + try { + n = Integer.valueOf(str).intValue(); + } catch (NumberFormatException ex) { + } + } else { + n = ((Number)value).intValue(); + } + + setValue(n); + return this; + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -35,7 +35,9 @@ setGridColor(Color.LIGHT_GRAY); setTableHeader(null); setRowHeight(getRowHeight() + 5); + setRowHeightEnabled(true); getColumn(0).setMaxWidth(30); + getColumn(1).setCellRenderer(new MultiLineTableCellRenderer()); getColumn(2).setMaxWidth(40); getColumn(2).setCellRenderer(new TableCellRenderer() { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -22,6 +22,9 @@ // setAutoResizeMode(JTable.AUTO_RESIZE_OFF); setModel(new ResultTableModel()); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); +// ProgressBarTableCellRenderer renderer = new ProgressBarTableCellRenderer(); +// renderer.setBackground(getBackground()); +// getColumn(0).setCellRenderer(renderer); getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); setColumnSizes(); getColumn(0).setResizable(false); @@ -33,7 +36,7 @@ } private void setColumnSizes(){ - getColumn(0).setMaxWidth(70); + getColumn(0).setMaxWidth(100); getColumn(1).setPreferredWidth(430); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -42,7 +42,7 @@ @Override public Object getValueAt(int rowIndex, int columnIndex) { if(columnIndex == 0){ - return df.format(resultList.get(rowIndex).getAccuracy()); + return df.format(resultList.get(rowIndex).getAccuracy()); } else { return resultList.get(rowIndex).getDescription(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -124,15 +124,15 @@ c.gridy = 7; add(getAllSuperClassesCheckBox, c); - c.anchor = GridBagConstraints.LINE_START; - c.gridx = 1; - c.gridy = 8; - add(new JLabel("Use literals"), c); - useLitsCheckBox = new JCheckBox(); - c.anchor = GridBagConstraints.LINE_END; - c.gridx = 0; - c.gridy = 8; - add(useLitsCheckBox, c); +// c.anchor = GridBagConstraints.LINE_START; +// c.gridx = 1; +// c.gridy = 8; +// add(new JLabel("Use literals"), c); +// useLitsCheckBox = new JCheckBox(); +// c.anchor = GridBagConstraints.LINE_END; +// c.gridx = 0; +// c.gridy = 8; +// add(useLitsCheckBox, c); } @@ -181,7 +181,7 @@ getPropertyInformationCheckBox.setSelected(false); closeAfterRecursionCheckBox.setSelected(true); getAllSuperClassesCheckBox.setSelected(true); - useLitsCheckBox.setSelected(true); +// useLitsCheckBox.setSelected(true); } public void setToolTips(){ @@ -193,7 +193,7 @@ getPropertyInformationCheckBox.setToolTipText("gets all types for extracted ObjectProperties"); closeAfterRecursionCheckBox.setToolTipText("gets all classes for all instances"); getAllSuperClassesCheckBox.setToolTipText("If true then all superclasses are retrieved until the most general class (owl:Thing) is reached."); - useLitsCheckBox.setToolTipText("use Literals in SPARQL query"); +// useLitsCheckBox.setToolTipText("use Literals in SPARQL query"); } public static void main(String[] args){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -21,13 +21,12 @@ public UnsatisfiableClassesTable(){ ExplanationManager expMan = ExplanationManager.getInstance(OREManager.getInstance()); setBackground(Color.WHITE); - setHighlighters(HighlighterFactory.createAlternateStriping()); setModel(new UnsatisfiableClassesTableModel()); setEditable(false); setTableHeader(null); setGridColor(Color.LIGHT_GRAY); getColumn(0).setMaxWidth(20); - setRowHeight(getRowHeight() + 4); + setRowHeight(getRowHeight() + 5); getColumn(0).setCellRenderer(new UnsatClassesTableCellRenderer(expMan)); // setAutoResizeMode(JTable.AUTO_RESIZE_OFF); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -10,6 +10,7 @@ import java.util.Set; import java.util.TreeSet; +import javax.swing.AbstractButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JOptionPane; @@ -110,6 +111,10 @@ } else if (e.getActionCommand().equals("max")){ expMan.setComputeAllExplanationsMode(false); panel.setMaxExplanationsMode(true); + } else if(e.getActionCommand().equals("strike")){ + AbstractButton abstractButton = (AbstractButton) e.getSource(); + boolean selected = abstractButton.getModel().isSelected(); + panel.strikeOutIrrelevantParts(selected); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-20 14:45:41 UTC (rev 1853) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-22 08:02:04 UTC (rev 1854) @@ -15,6 +15,7 @@ import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; +import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; @@ -60,8 +61,10 @@ private JRadioButton computeAllExplanationsRadioButton; private JRadioButton computeMaxExplanationsRadioButton; private JSpinner maxExplanationsSelector; + private JCheckBox strikeOutBox; private Set<ExplanationTablePanel> explanationPanels; + private Set<ExplanationTable> explanationTables; private ExplanationManager expMan; @@ -115,6 +118,7 @@ explanationsPanel = new Box(1); explanationPanels = new HashSet<ExplanationTablePanel>(); + explanationTables = new HashSet<ExplanationTable>(); JPanel pan = new JPanel(new BorderLayout()); pan.add(explanationsPanel, BorderLayout.NORTH); @@ -149,11 +153,11 @@ maxExplanationsSelector.setModel(spinnerModel); maxExplanationsSelector.setBorder(BorderFactory.createEmptyBorder(0, 30, 0, 0)); - computeAllExplanationsRadioButton = new JRadioButton("compute all explanations"); + computeAllExplanationsRadioButton = new JRadioButton("Compute all explanations"); computeAllExplanationsRadioButton.setActionCommand("all"); - computeMaxExplanationsRadioButton = new JRadioButton("limit explanation count to:"); - computeMaxExplanationsRadioButton.setActionCommand("max"); + computeMaxExplanationsRadioButton = new JRadioButton("Limit explanation count to:"); + computeMaxExplanationsRadioButton.setActionCommand("MAX"); computeMaxExplanationsRadioButton.setSelected(true); ButtonGroup limitButtonGroup = new ButtonGroup(); @@ -164,6 +168,9 @@ buttonPanel.add(computeMaxExplanationsRadioButton, new GridBagConstraints(1, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); buttonPanel.add(maxExplanationsSelector, new GridBagConstraints(3, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); + strikeOutBox = new JCheckBox("Strike out irrelevant parts"); + strikeOutBox.setActionCommand("strike"); + buttonPanel.add(strikeOutBox, new GridBagConstraints(3, 0, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); buttonExplanationsPanel = new JPanel(); buttonExplanationsPanel.setLayout(new BorderLayout()); @@ -185,7 +192,8 @@ impRepSplit.setBorder(null); impactRepairPanel.add(impRepSplit); - JScrollPane impScr = new JScrollPane(new ImpactTable()); + ImpactTable impactTable = new ImpactTable(); + JScrollPane impScr = new JScrollPane(impactTable); JPanel impactPanel = new JPanel(); impactPanel.setLayout(new BorderLayout()); impactPanel.add(new JLabel("Impact"), BorderLayout.NORTH); @@ -226,6 +234,7 @@ int counter = 1; for(Explanation exp : explanations){ ExplanationTable expTable = new ExplanationTable(exp, unsat); + explanationTables.add(expTable); ExplanationTablePanel panel = new ExplanationTablePanel(expTable, counter); explanationHolderPanel.add(panel); explanationHolderPanel.add(Box.createVerticalStrut(5)); @@ -244,12 +253,19 @@ public void setMaxExplanationsMode(boolean value){ maxExplanationsSelector.setEnabled(value); } + + public void strikeOutIrrelevantParts(boolean strikeOut){ + for(ExplanationTable table : explanationTables){ + table.strikeOut(strikeOut); + } + } public void addActionListeners(ActionListener aL) { regularButton.addActionListener(aL); laconicButton.addActionListener(aL); computeAllExplanationsRadioButton.addActionListener(aL); computeMaxExplanationsRadioButton.addActionListener(aL); + strikeOutBox.addActionListener(aL); } public void addListSelectionListener(ListSelectionListener l){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-20 14:45:51
|
Revision: 1853 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1853&view=rev Author: lorenz_b Date: 2009-09-20 14:45:41 +0000 (Sun, 20 Sep 2009) Log Message: ----------- fixed bug in Sparql extraction - choosing predefined filter "YAGO" seems to fail into an exception when testing it for DPPEDIA endpoint Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -32,7 +32,7 @@ } public void addURI(URI uri){ - if(!uriList.contains(uri)){ + if(uri != null && !uriList.contains(uri)){ uriList.add(uri); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/SPARQLTest.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -96,13 +96,11 @@ SparqlKnowledgeSource ks = cm.knowledgeSource(SparqlKnowledgeSource.class); cm.applyConfigEntry(ks, "predefinedEndpoint", "DBPEDIA"); ks.getConfigurator().setInstances(instances); - ks.getConfigurator().setPredefinedFilter("YAGO"); -// ks.getConfigurator().setSaveExtractedFragment(true); +// ks.getConfigurator().setPredefinedFilter("YAGO"); ks.init(); ReasonerComponent reasoner = cm.reasoner(FastInstanceChecker.class, ks); reasoner.init(); ClassLearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); -// lp.getConfigurator().setPositiveExamples(posExamples); lp.getConfigurator().setClassToDescribe(new URL(exampleClass)); lp.init(); LearningAlgorithm la = cm.learningAlgorithm(CELOE.class, lp, reasoner); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -32,12 +32,13 @@ public static void main(String[] args) { - - test(); - miniTest(); + +// test(); +// miniTest(); miniEconomyTest(); - universityTest(); +// universityTest(); } + public static void test(){ String file = "file:/home/lorenz/neu.owl"; @@ -66,9 +67,6 @@ } catch (OWLOntologyCreationException e) { // TODO Auto-generated catch block e.printStackTrace(); - } catch (OWLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); } } @@ -78,61 +76,35 @@ try { OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); - PrintWriter pw = new PrintWriter(System.out); - renderer.startRendering(pw); - - OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); - Set<OWLOntology> ontologies = new HashSet<OWLOntology>(); - ontologies.add(ontology); + PelletReasonerFactory resonerFact = new PelletReasonerFactory(); OWLDataFactory dataFactory = manager.getOWLDataFactory(); - - ////////////////////HermiT test -// HermiTReasonerFactory f = new HermiTReasonerFactory(); -// HermitReasoner re = (HermitReasoner) f.createReasoner(manager); -// re.loadOntologies(ontologies); -// Timer t1 = new Timer("classifying"); -// t1.start(); -// re.classify(); -// t1.stop(); -// re.realise(); -// System.out.println("HermiT" + re.getInconsistentClasses()); - ////////////////////////////// Reasoner reasoner = resonerFact.createReasoner(manager); - reasoner.loadOntologies(ontologies); - SwingProgressMonitor monitor = new SwingProgressMonitor(); - reasoner.getKB().getTaxonomyBuilder().setProgressMonitor(monitor); + reasoner.loadOntology(ontology); + reasoner.classify(); System.out.println(reasoner.getInconsistentClasses()); LaconicExplanationGenerator expGen = new LaconicExplanationGenerator( - manager, resonerFact, ontologies); + manager, resonerFact, Collections.singleton(ontology)); - - - - Set<OWLClass> unsatClasses = reasoner.getInconsistentClasses(); OWLSubClassAxiom unsatAxiom; - unsatAxiom = dataFactory.getOWLSubClassAxiom(dataFactory.getOWLClass(URI.create("http://reliant.teknowledge.com/DAML/Economy.owl#Cassava")), - dataFactory.getOWLNothing()); -// for (OWLClass unsat : unsatClasses) { -// unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory -// .getOWLNothing()); -// Set<Set<OWLAxiom>> preciseJusts = expGen -// .getExplanations(unsatAxiom); -// renderer.render(unsatAxiom, preciseJusts); -// } - Set<Explanation> preciseJusts = expGen.getExplanations(unsatAxiom); -// renderer.render(unsatAxiom, preciseJusts); - renderer.endRendering(); + for (OWLClass unsat : unsatClasses) { + unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory + .getOWLNothing()); + Set<Explanation> explanations = expGen + .getExplanations(unsatAxiom); + System.out.println(explanations); + } + + } catch (OWLOntologyCreationException e) { // TODO Auto-generated catch block e.printStackTrace(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-14 15:15:13 UTC (rev 1852) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-20 14:45:41 UTC (rev 1853) @@ -1,6 +1,7 @@ package org.dllearner.tools.ore.ui; import java.awt.BorderLayout; +import java.awt.Cursor; import java.awt.Dialog; import java.awt.Dimension; import java.awt.GridBagConstraints; @@ -50,7 +51,6 @@ import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; import org.dllearner.utilities.datastructures.SetManipulation; -import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; public class ExtractFromSparqlDialog extends JDialog implements ActionListener, PropertyChangeListener, DocumentListener { @@ -94,7 +94,7 @@ private Map<URL, List<String>> endpointToDefaultGraph; public ExtractFromSparqlDialog(Dialog owner) { - super(owner, "Extract fragment from Sparql-endpoint", true); + super(owner, "Extract fragment from SPARQL endpoint", true); // Create the controls createControls(); @@ -143,7 +143,7 @@ JPanel endPointHolderPanel = new JPanel(); endPointHolderPanel.setLayout(new GridLayout(0, 1)); - endPointHolderPanel.setBorder(new TitledBorder("Sparql endpoint")); + endPointHolderPanel.setBorder(new TitledBorder("SPARQL endpoint")); comboBox = new JComboBox(); comboBox.setEditable(true); comboBox.setActionCommand("endpoints"); @@ -160,7 +160,7 @@ JPanel classHolderPanel = new JPanel(); classHolderPanel.setLayout(new GridLayout(0, 1)); - classHolderPanel.setBorder(new TitledBorder("Class to learn")); + classHolderPanel.setBorder(new TitledBorder("Class to investigate")); asLabelButton = new JRadioButton("label"); asURLButton = new JRadioButton("URI"); asURLButton.setSelected(true); @@ -297,21 +297,27 @@ } private void extract() { - if(urlIsConnectable()){ - message.setText(""); - mon = new ProgressMonitor(this, "Extracting fragment", "", 0, 100); - extractTask = new OntologyExtractingTask(mon); - extractTask.addPropertyChangeListener(this); - extractTask.execute(); - } else { - message.setText("<html><font color=\"red\">Could not connect to endpoint</html>"); - } + message.setText("Checking SPARQL endpoint availability"); + setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + mon = new ProgressMonitor(this, "Extracting fragment", "", 0, 100); + + extractTask = new OntologyExtractingTask(this, mon); + extractTask.addPropertyChangeListener(this); + extractTask.execute(); + } private boolean urlIsConnectable() - { + { + + URL url = null; try { +// List<String> defaultGraphURIS = new ArrayList<String>(1); +// defaultGraphURIS.add(defaultGraphField.getText()); +// SparqlEndpoint endpoint = new SparqlEndpoint(new URL(comboBox.getSelectedItem().toString()), defaultGraphURIS, Collections.<String>emptyList()); +// url = new URL(endpoint.getHTTPRequest() + "SELECT * WHERE {?s ?p ?o} LIMIT 1"); url = new URL((String)comboBox.getSelectedItem()); } catch (MalformedURLException e1) { // TODO Auto-generated catch block @@ -368,13 +374,23 @@ class OntologyExtractingTask extends SwingWorker<Void, Void>{ private ProgressMonitor mon; + private JDialog dialog; - public OntologyExtractingTask(ProgressMonitor mon) { - this.mon = mon; + public OntologyExtractingTask(JDialog dialog, ProgressMonitor mon) { + this.mon = mon; + this.dialog = dialog; } @Override public Void doInBackground() { + if(urlIsConnectable()){ + message.setText("Successfully connected to SPARQL endpoint"); + + } else { + message.setText("<html><font color=\"red\">Could not connect to SPARQL endpoint</html>"); + cancel(true); + } + ComponentManager cm = ComponentManager.getInstance(); URL endpointURL = null; try { @@ -387,27 +403,33 @@ defaultGraphURIS.add(defaultGraphField.getText()); SparqlEndpoint endpoint = new SparqlEndpoint(endpointURL, defaultGraphURIS, Collections.<String>emptyList()); task = new SPARQLTasks(endpoint); - String classKBString; + String concept; if(asLabelButton.isSelected()){ - classKBString = "\"" + getClassFromLabel() + "\""; + concept = getClassFromLabel(); } else { - classKBString = "\"" + classField.getText() +"\""; + concept = classField.getText(); } +// String classKBString; +// if(asLabelButton.isSelected()){ +// classKBString = "\"" + getClassFromLabel() + "\""; +// } else { +// classKBString = "\"" + classField.getText() +"\""; +// } - AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL( - task); - pos.makePositiveExamplesFromConcept(classKBString); +// AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL( +// task); +// pos.makePositiveExamplesFromConcept(classKBString); - SortedSet<String> allPosExamples = pos.getPosExamples(); + SortedSet<String> allPosExamples = getPosExamples(concept);//pos.getPosExamples(); SortedSet<String> posExamples = SetManipulation.stableShrink( allPosExamples, 20); - + System.out.println(posExamples); SortedSet<String> instances = new TreeSet<String>(posExamples); ks = cm.knowledgeSource(SparqlKnowledgeSource.class); - ks.getConfigurator().setUrl(SparqlEndpoint.getEndpointDBpedia().getURL()); + ks.getConfigurator().setUrl(endpoint.getURL()); ks.getConfigurator().setInstances(instances); - ks.getConfigurator().setPredefinedFilter("YAGO"); +// ks.getConfigurator().setPredefinedFilter("YAGO"); ks.getConfigurator().setBreakSuperClassRetrievalAfter(optionsPanel.getBreakSuperClassRetrievalAfterValue()); ks.getConfigurator().setRecursionDepth(optionsPanel.getRecursionDepthValue()); ks.getConfigurator().setUseCache(optionsPanel.isUseCache()); @@ -418,7 +440,7 @@ ks.getConfigurator().setGetPropertyInformation(optionsPanel.isGetPropertyInformation()); ks.getConfigurator().setCloseAfterRecursion(optionsPanel.isCloseAfterRecursion()); ks.addProgressMonitor(mon); - + ks.getConfigurator().setSaveExtractedFragment(true); ks.init(); return null; @@ -426,12 +448,25 @@ @Override public void done() { - + dialog.setCursor(null); if(!isCancelled() && ks != null){ okButton.setEnabled(true); message.setText("<html><font color=\"green\">Fragment successfully extracted</html>"); + } } + + private SortedSet<String> getPosExamples(String concept){ + SortedSet<String> examples = new TreeSet<String>(); + SortedSet<String> superClasses = task.getSuperClasses(concept, 2); + + for (String sup : superClasses) { + examples.addAll(task.retrieveInstancesForClassDescription("\"" + + sup + "\"", 20)); + + } + return examples; + } } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-09-14 15:15:24
|
Revision: 1852 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1852&view=rev Author: jenslehmann Date: 2009-09-14 15:15:13 +0000 (Mon, 14 Sep 2009) Log Message: ----------- added web service method to specify a list of tuples as component option Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java trunk/src/moosique.net/moosique/classes/DllearnerConnection.php trunk/src/moosique.net/moosique/main.wsdl Modified: trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java =================================================================== --- trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2009-09-14 14:57:55 UTC (rev 1851) +++ trunk/src/dl-learner/org/dllearner/server/DLLearnerWS.java 2009-09-14 15:15:13 UTC (rev 1852) @@ -64,6 +64,7 @@ import org.dllearner.parser.KBParser; import org.dllearner.parser.ParseException; import org.dllearner.utilities.datastructures.Datastructures; +import org.dllearner.utilities.datastructures.StringTuple; import org.dllearner.utilities.examples.AutomaticNegativeExampleFinderSPARQL; /** @@ -634,6 +635,26 @@ * @throws UnknownComponentException */ @WebMethod + public void applyConfigEntryStringTupleList(int sessionID, int componentID, String optionName, String[] keys, String[] values) throws ClientNotKnownException, UnknownComponentException { + List<StringTuple> tuples = new LinkedList<StringTuple>(); + for(int i=0; i<keys.length; i++) { + StringTuple st = new StringTuple(keys[i],values[i]); + tuples.add(st); + } +// Set<String> stringSet = new TreeSet<String>(Arrays.asList(value)); + applyConfigEntry(sessionID, componentID, optionName, tuples); + } + + /** + * + * @param sessionID The session ID. + * @param componentID The componentID. + * @param optionName The name of the configuration option. + * @param value + * @throws ClientNotKnownException Thrown if client (session ID) is not known. + * @throws UnknownComponentException + */ + @WebMethod public void applyConfigEntryBoolean(int sessionID, int componentID, String optionName, Boolean value) throws ClientNotKnownException, UnknownComponentException { applyConfigEntry(sessionID, componentID,optionName,value); } Modified: trunk/src/moosique.net/moosique/classes/DllearnerConnection.php =================================================================== --- trunk/src/moosique.net/moosique/classes/DllearnerConnection.php 2009-09-14 14:57:55 UTC (rev 1851) +++ trunk/src/moosique.net/moosique/classes/DllearnerConnection.php 2009-09-14 15:15:13 UTC (rev 1852) @@ -24,7 +24,7 @@ // load WSDL files (has to be done due to a Java web service bug) include('Utilities.php'); ini_set('soap.wsdl_cache_enabled', '0'); - Utilities::loadWSDLfiles($this->getConfigUrl('wsdl')); + // Utilities::loadWSDLfiles($this->getConfigUrl('wsdl')); $this->connect(); } @@ -135,9 +135,8 @@ $this->client->applyConfigEntryInt($id, $learnID, 'valueFrequencyThreshold', $conf['valueFrequencyThreshold']); $this->client->applyConfigEntryBoolean($id, $learnID, 'useHasValueConstructor', $conf['useHasValueConstructor']); - $this->client->applyConfigEntryStringArray($id, $this->knowledgeSourceID, 'replacePredicate', array( - "http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag", - "http://www.w3.org/1999/02/22-rdf-syntax-ns#Type") + $this->client->applyConfigEntryStringTupleList($id, $this->knowledgeSourceID, 'replacePredicate', array( + "http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag"), array("http://www.w3.org/1999/02/22-rdf-syntax-ns#type") ); $this->client->initAll($id); @@ -154,4 +153,4 @@ } -?> \ No newline at end of file +?> Modified: trunk/src/moosique.net/moosique/main.wsdl =================================================================== --- trunk/src/moosique.net/moosique/main.wsdl 2009-09-14 14:57:55 UTC (rev 1851) +++ trunk/src/moosique.net/moosique/main.wsdl 2009-09-14 15:15:13 UTC (rev 1852) @@ -206,6 +206,14 @@ <part xmlns:ns10="http://jaxb.dev.java.net/array" name="arg3" type="ns10:stringArray"></part> </message> <message name="applyConfigEntryStringArrayResponse"></message> +<message name="applyConfigEntryStringTupleList"> +<part name="arg0" type="xsd:int"></part> +<part name="arg1" type="xsd:int"></part> +<part name="arg2" type="xsd:string"></part> +<part xmlns:ns11="http://jaxb.dev.java.net/array" name="arg3" type="ns11:stringArray"></part> +<part xmlns:ns12="http://jaxb.dev.java.net/array" name="arg4" type="ns12:stringArray"></part> +</message> +<message name="applyConfigEntryStringTupleListResponse"></message> <message name="applyConfigEntryBoolean"> <part name="arg0" type="xsd:int"></part> <part name="arg1" type="xsd:int"></part> @@ -219,7 +227,7 @@ <part name="arg2" type="xsd:string"></part> </message> <message name="getConfigOptionValueStringArrayResponse"> -<part xmlns:ns11="http://jaxb.dev.java.net/array" name="return" type="ns11:stringArray"></part> +<part xmlns:ns13="http://jaxb.dev.java.net/array" name="return" type="ns13:stringArray"></part> </message> <message name="ConfigOptionTypeException"> <part name="fault" element="tns:ConfigOptionTypeException"></part> @@ -268,7 +276,7 @@ <part name="arg0" type="xsd:int"></part> </message> <message name="getAtomicConceptsResponse"> -<part xmlns:ns12="http://jaxb.dev.java.net/array" name="return" type="ns12:stringArray"></part> +<part xmlns:ns14="http://jaxb.dev.java.net/array" name="return" type="ns14:stringArray"></part> </message> <message name="getSubsumptionHierarchy"> <part name="arg0" type="xsd:int"></part> @@ -281,7 +289,7 @@ <part name="arg1" type="xsd:string"></part> </message> <message name="retrievalResponse"> -<part xmlns:ns13="http://jaxb.dev.java.net/array" name="return" type="ns13:stringArray"></part> +<part xmlns:ns15="http://jaxb.dev.java.net/array" name="return" type="ns15:stringArray"></part> </message> <message name="ParseException"> <part name="fault" element="tns:ParseException"></part> @@ -296,20 +304,20 @@ <part name="arg0" type="xsd:int"></part> </message> <message name="getAtomicRolesResponse"> -<part xmlns:ns14="http://jaxb.dev.java.net/array" name="return" type="ns14:stringArray"></part> +<part xmlns:ns16="http://jaxb.dev.java.net/array" name="return" type="ns16:stringArray"></part> </message> <message name="getInstances"> <part name="arg0" type="xsd:int"></part> </message> <message name="getInstancesResponse"> -<part xmlns:ns15="http://jaxb.dev.java.net/array" name="return" type="ns15:stringArray"></part> +<part xmlns:ns17="http://jaxb.dev.java.net/array" name="return" type="ns17:stringArray"></part> </message> <message name="getIndividualsForARole"> <part name="arg0" type="xsd:int"></part> <part name="arg1" type="xsd:string"></part> </message> <message name="getIndividualsForARoleResponse"> -<part xmlns:ns16="http://jaxb.dev.java.net/array" name="return" type="ns16:stringArray"></part> +<part xmlns:ns18="http://jaxb.dev.java.net/array" name="return" type="ns18:stringArray"></part> </message> <message name="getAsJSON"> <part name="arg0" type="xsd:int"></part> @@ -369,14 +377,14 @@ <part name="arg1" type="xsd:int"></part> </message> <message name="getConceptDepthResponse"> -<part xmlns:ns17="http://jaxb.dev.java.net/array" name="return" type="ns17:intArray"></part> +<part xmlns:ns19="http://jaxb.dev.java.net/array" name="return" type="ns19:intArray"></part> </message> <message name="getConceptArity"> <part name="arg0" type="xsd:int"></part> <part name="arg1" type="xsd:int"></part> </message> <message name="getConceptArityResponse"> -<part xmlns:ns18="http://jaxb.dev.java.net/array" name="return" type="ns18:intArray"></part> +<part xmlns:ns20="http://jaxb.dev.java.net/array" name="return" type="ns20:intArray"></part> </message> <message name="SparqlRetrieval"> <part name="arg0" type="xsd:string"></part> @@ -396,13 +404,13 @@ <message name="getNegativeExamples"> <part name="arg0" type="xsd:int"></part> <part name="arg1" type="xsd:int"></part> -<part xmlns:ns19="http://jaxb.dev.java.net/array" name="arg2" type="ns19:stringArray"></part> +<part xmlns:ns21="http://jaxb.dev.java.net/array" name="arg2" type="ns21:stringArray"></part> <part name="arg3" type="xsd:int"></part> <part name="arg4" type="xsd:string"></part> -<part xmlns:ns20="http://jaxb.dev.java.net/array" name="arg5" type="ns20:stringArray"></part> +<part xmlns:ns22="http://jaxb.dev.java.net/array" name="arg5" type="ns22:stringArray"></part> </message> <message name="getNegativeExamplesResponse"> -<part xmlns:ns21="http://jaxb.dev.java.net/array" name="return" type="ns21:stringArray"></part> +<part xmlns:ns23="http://jaxb.dev.java.net/array" name="return" type="ns23:stringArray"></part> </message> <portType name="DLLearnerWebService"> <operation name="init" parameterOrder="arg0 arg1"> @@ -571,6 +579,12 @@ <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> </operation> +<operation name="applyConfigEntryStringTupleList" parameterOrder="arg0 arg1 arg2 arg3 arg4"> +<input message="tns:applyConfigEntryStringTupleList"></input> +<output message="tns:applyConfigEntryStringTupleListResponse"></output> +<fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> +<fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> +</operation> <operation name="applyConfigEntryBoolean" parameterOrder="arg0 arg1 arg2 arg3"> <input message="tns:applyConfigEntryBoolean"></input> <output message="tns:applyConfigEntryBooleanResponse"></output> @@ -1122,6 +1136,21 @@ <soap:fault name="UnknownComponentException" use="literal"></soap:fault> </fault> </operation> +<operation name="applyConfigEntryStringTupleList"> +<soap:operation soapAction=""></soap:operation> +<input> +<soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> +</input> +<output> +<soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> +</output> +<fault name="ClientNotKnownException"> +<soap:fault name="ClientNotKnownException" use="literal"></soap:fault> +</fault> +<fault name="UnknownComponentException"> +<soap:fault name="UnknownComponentException" use="literal"></soap:fault> +</fault> +</operation> <operation name="applyConfigEntryBoolean"> <soap:operation soapAction=""></soap:operation> <input> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <neb...@us...> - 2009-09-14 14:58:10
|
Revision: 1851 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1851&view=rev Author: nebelschwade Date: 2009-09-14 14:57:55 +0000 (Mon, 14 Sep 2009) Log Message: ----------- learnTest almost working. Modified Paths: -------------- trunk/src/moosique.net/moosique/classes/DllearnerConnection.php trunk/src/moosique.net/moosique/config.ini trunk/src/moosique.net/moosique/def0.xsd trunk/src/moosique.net/moosique/def1.xsd trunk/src/moosique.net/moosique/main.wsdl trunk/src/moosique.net/moosique/testing/learnTest.php trunk/src/moosique.net/moosique/testing/main.wsdl trunk/src/moosique.net/moosique/testing/newOwl.owl Modified: trunk/src/moosique.net/moosique/classes/DllearnerConnection.php =================================================================== --- trunk/src/moosique.net/moosique/classes/DllearnerConnection.php 2009-09-14 14:21:43 UTC (rev 1850) +++ trunk/src/moosique.net/moosique/classes/DllearnerConnection.php 2009-09-14 14:57:55 UTC (rev 1851) @@ -121,8 +121,9 @@ // set the instances and pos examples $this->client->applyConfigEntryStringArray($id, $this->knowledgeSourceID, 'instances', $instances); - $this->client->setPositiveExamples($id, $positiveExamples); $this->client->setLearningProblem($id, $conf['problem']); + + $this->client->setPositiveExamples($id, $positiveExamples); // recursion-depth and fragment saving $this->client->applyConfigEntryInt($id, $this->knowledgeSourceID, 'recursionDepth', $conf['recursionDepth']); @@ -134,21 +135,19 @@ $this->client->applyConfigEntryInt($id, $learnID, 'valueFrequencyThreshold', $conf['valueFrequencyThreshold']); $this->client->applyConfigEntryBoolean($id, $learnID, 'useHasValueConstructor', $conf['useHasValueConstructor']); - // TODO replacement not working? - /* - $this->client->applyConfigEntryStringArray($id, $learnID, 'replacePredicate', array( + $this->client->applyConfigEntryStringArray($id, $this->knowledgeSourceID, 'replacePredicate', array( "http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag", "http://www.w3.org/1999/02/22-rdf-syntax-ns#Type") ); - */ + $this->client->initAll($id); $concepts = false; -/* - $concepts = $this->client->learnDescriptionsEvaluated($id, 5); + + $concepts = $this->client->learnDescriptionsEvaluated($id); $concepts = json_decode($concepts); -*/ + return $concepts; } Modified: trunk/src/moosique.net/moosique/config.ini =================================================================== --- trunk/src/moosique.net/moosique/config.ini 2009-09-14 14:21:43 UTC (rev 1850) +++ trunk/src/moosique.net/moosique/config.ini 2009-09-14 14:57:55 UTC (rev 1851) @@ -47,7 +47,7 @@ ; set the start class to the correct type (Record in this case) - not supported yet ; celoe.startClass = "http://purl.org/ontology/mo/Record"; ; let it run for a short amount of time (we only want simple expressions) -maxExecutionTimeInSeconds = 120 +maxExecutionTimeInSeconds = 2 ; use owl:hasValue if appropriate ; see: http://www.w3.org/TR/2008/WD-owl2-syntax-20081202/#Individual_Value_Restriction ; not sure whether this greatly influences the results Modified: trunk/src/moosique.net/moosique/def0.xsd =================================================================== --- trunk/src/moosique.net/moosique/def0.xsd 2009-09-14 14:21:43 UTC (rev 1850) +++ trunk/src/moosique.net/moosique/def0.xsd 2009-09-14 14:57:55 UTC (rev 1851) @@ -1,66 +1,66 @@ -<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:tns="http://server.dllearner.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://server.dllearner.org/" version="1.0"> +<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><xs:schema xmlns:tns="http://server.dllearner.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://server.dllearner.org/"> - <xs:element name="ClientNotKnownException" type="tns:ClientNotKnownException"></xs:element> +<xs:element name="ClientNotKnownException" type="tns:ClientNotKnownException"></xs:element> - <xs:element name="ComponentInitException" type="tns:ComponentInitException"></xs:element> +<xs:element name="ComponentInitException" type="tns:ComponentInitException"></xs:element> - <xs:element name="ConfigOptionTypeException" type="tns:ConfigOptionTypeException"></xs:element> +<xs:element name="ConfigOptionTypeException" type="tns:ConfigOptionTypeException"></xs:element> - <xs:element name="LearningProblemUnsupportedException" type="tns:LearningProblemUnsupportedException"></xs:element> +<xs:element name="LearningProblemUnsupportedException" type="tns:LearningProblemUnsupportedException"></xs:element> - <xs:element name="MalformedURLException" type="tns:MalformedURLException"></xs:element> +<xs:element name="MalformedURLException" type="tns:MalformedURLException"></xs:element> - <xs:element name="ParseException" type="tns:ParseException"></xs:element> +<xs:element name="ParseException" type="tns:ParseException"></xs:element> - <xs:element name="SparqlQueryException" type="tns:SparqlQueryException"></xs:element> +<xs:element name="SparqlQueryException" type="tns:SparqlQueryException"></xs:element> - <xs:element name="UnknownComponentException" type="tns:UnknownComponentException"></xs:element> +<xs:element name="UnknownComponentException" type="tns:UnknownComponentException"></xs:element> - <xs:complexType name="ParseException"> - <xs:sequence> - <xs:element name="message" type="xs:string" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="ParseException"> +<xs:sequence> +<xs:element name="message" type="xs:string" minOccurs="0"></xs:element> +</xs:sequence> +</xs:complexType> - <xs:complexType name="ClientNotKnownException"> - <xs:sequence> - <xs:element name="message" type="xs:string" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="ClientNotKnownException"> +<xs:sequence> +<xs:element name="message" type="xs:string" minOccurs="0"></xs:element> +</xs:sequence> +</xs:complexType> - <xs:complexType name="SparqlQueryException"> - <xs:sequence> - <xs:element name="message" type="xs:string" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="SparqlQueryException"> +<xs:sequence> +<xs:element name="message" type="xs:string" minOccurs="0"></xs:element> +</xs:sequence> +</xs:complexType> - <xs:complexType name="UnknownComponentException"> - <xs:sequence> - <xs:element name="message" type="xs:string" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="UnknownComponentException"> +<xs:sequence> +<xs:element name="message" type="xs:string" minOccurs="0"></xs:element> +</xs:sequence> +</xs:complexType> - <xs:complexType name="ConfigOptionTypeException"> - <xs:sequence> - <xs:element name="message" type="xs:string" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="ConfigOptionTypeException"> +<xs:sequence> +<xs:element name="message" type="xs:string" minOccurs="0"></xs:element> +</xs:sequence> +</xs:complexType> - <xs:complexType name="ComponentInitException"> - <xs:sequence> - <xs:element name="message" type="xs:string" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="ComponentInitException"> +<xs:sequence> +<xs:element name="message" type="xs:string" minOccurs="0"></xs:element> +</xs:sequence> +</xs:complexType> - <xs:complexType name="LearningProblemUnsupportedException"> - <xs:sequence> - <xs:element name="message" type="xs:string" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="LearningProblemUnsupportedException"> +<xs:sequence> +<xs:element name="message" type="xs:string" minOccurs="0"></xs:element> +</xs:sequence> +</xs:complexType> - <xs:complexType name="MalformedURLException"> - <xs:sequence> - <xs:element name="message" type="xs:string" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="MalformedURLException"> +<xs:sequence> +<xs:element name="message" type="xs:string" minOccurs="0"></xs:element> +</xs:sequence> +</xs:complexType> </xs:schema> \ No newline at end of file Modified: trunk/src/moosique.net/moosique/def1.xsd =================================================================== --- trunk/src/moosique.net/moosique/def1.xsd 2009-09-14 14:21:43 UTC (rev 1850) +++ trunk/src/moosique.net/moosique/def1.xsd 2009-09-14 14:57:55 UTC (rev 1851) @@ -1,14 +1,14 @@ -<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://jaxb.dev.java.net/array" version="1.0"> +<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. --><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://jaxb.dev.java.net/array"> - <xs:complexType final="#all" name="stringArray"> - <xs:sequence> - <xs:element nillable="true" maxOccurs="unbounded" name="item" type="xs:string" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="stringArray" final="#all"> +<xs:sequence> +<xs:element name="item" type="xs:string" minOccurs="0" maxOccurs="unbounded" nillable="true"></xs:element> +</xs:sequence> +</xs:complexType> - <xs:complexType final="#all" name="intArray"> - <xs:sequence> - <xs:element nillable="true" maxOccurs="unbounded" name="item" type="xs:int" minOccurs="0"></xs:element> - </xs:sequence> - </xs:complexType> +<xs:complexType name="intArray" final="#all"> +<xs:sequence> +<xs:element name="item" type="xs:int" minOccurs="0" maxOccurs="unbounded" nillable="true"></xs:element> +</xs:sequence> +</xs:complexType> </xs:schema> \ No newline at end of file Modified: trunk/src/moosique.net/moosique/main.wsdl =================================================================== --- trunk/src/moosique.net/moosique/main.wsdl 2009-09-14 14:21:43 UTC (rev 1850) +++ trunk/src/moosique.net/moosique/main.wsdl 2009-09-14 14:57:55 UTC (rev 1851) @@ -1,1491 +1,1491 @@ -<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://server.dllearner.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://server.dllearner.org/" name="DLLearnerWSService"> - <types> - <xsd:schema> - <xsd:import schemaLocation="def0.xsd" namespace="http://server.dllearner.org/"></xsd:import> - </xsd:schema> - <xsd:schema> - <xsd:import schemaLocation="def1.xsd" namespace="http://jaxb.dev.java.net/array"></xsd:import> - </xsd:schema> - </types> - <message name="init"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="initResponse"></message> - <message name="ClientNotKnownException"> - <part element="tns:ClientNotKnownException" name="fault"></part> - </message> - <message name="UnknownComponentException"> - <part element="tns:UnknownComponentException" name="fault"></part> - </message> - <message name="ComponentInitException"> - <part element="tns:ComponentInitException" name="fault"></part> - </message> - <message name="stop"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="stopResponse"></message> - <message name="getBuild"></message> - <message name="getBuildResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="ping"></message> - <message name="pingResponse"> - <part name="return" type="xsd:boolean"></part> - </message> - <message name="generateID"></message> - <message name="generateIDResponse"> - <part name="return" type="xsd:int"></part> - </message> - <message name="getComponents"></message> - <message name="getComponentsResponse"> - <part xmlns:ns1="http://jaxb.dev.java.net/array" name="return" type="ns1:stringArray"></part> - </message> - <message name="getKnowledgeSources"></message> - <message name="getKnowledgeSourcesResponse"> - <part xmlns:ns2="http://jaxb.dev.java.net/array" name="return" type="ns2:stringArray"></part> - </message> - <message name="getReasoners"></message> - <message name="getReasonersResponse"> - <part xmlns:ns3="http://jaxb.dev.java.net/array" name="return" type="ns3:stringArray"></part> - </message> - <message name="getLearningProblems"></message> - <message name="getLearningProblemsResponse"> - <part xmlns:ns4="http://jaxb.dev.java.net/array" name="return" type="ns4:stringArray"></part> - </message> - <message name="getLearningAlgorithms"></message> - <message name="getLearningAlgorithmsResponse"> - <part xmlns:ns5="http://jaxb.dev.java.net/array" name="return" type="ns5:stringArray"></part> - </message> - <message name="getConfigOptions"> - <part name="arg0" type="xsd:string"></part> - <part name="arg1" type="xsd:boolean"></part> - </message> - <message name="getConfigOptionsResponse"> - <part xmlns:ns6="http://jaxb.dev.java.net/array" name="return" type="ns6:stringArray"></part> - </message> - <message name="addKnowledgeSource"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:string"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="addKnowledgeSourceResponse"> - <part name="return" type="xsd:int"></part> - </message> - <message name="MalformedURLException"> - <part element="tns:MalformedURLException" name="fault"></part> - </message> - <message name="removeKnowledgeSource"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="removeKnowledgeSourceResponse"></message> - <message name="setReasoner"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:string"></part> - </message> - <message name="setReasonerResponse"> - <part name="return" type="xsd:int"></part> - </message> - <message name="setLearningProblem"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:string"></part> - </message> - <message name="setLearningProblemResponse"> - <part name="return" type="xsd:int"></part> - </message> - <message name="setLearningAlgorithm"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:string"></part> - </message> - <message name="setLearningAlgorithmResponse"> - <part name="return" type="xsd:int"></part> - </message> - <message name="LearningProblemUnsupportedException"> - <part element="tns:LearningProblemUnsupportedException" name="fault"></part> - </message> - <message name="initAll"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="initAllResponse"></message> - <message name="learn"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:string"></part> - </message> - <message name="learnResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="learnDescriptionsEvaluated"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="learnDescriptionsEvaluatedResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="getCurrentlyBestEvaluatedDescriptions"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="getCurrentlyBestEvaluatedDescriptionsResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="learnDescriptionsEvaluatedLimit"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="learnDescriptionsEvaluatedLimitResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="learnThreaded"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="learnThreadedResponse"></message> - <message name="getCurrentlyBestConcept"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="getCurrentlyBestConceptResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="getCurrentlyBestConcepts"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="getCurrentlyBestConceptsResponse"> - <part xmlns:ns7="http://jaxb.dev.java.net/array" name="return" type="ns7:stringArray"></part> - </message> - <message name="getCurrentlyBestEvaluatedDescriptionsFiltered"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:double"></part> - <part name="arg3" type="xsd:boolean"></part> - </message> - <message name="getCurrentlyBestEvaluatedDescriptionsFilteredResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="isAlgorithmRunning"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="isAlgorithmRunningResponse"> - <part name="return" type="xsd:boolean"></part> - </message> - <message name="setPositiveExamples"> - <part name="arg0" type="xsd:int"></part> - <part xmlns:ns8="http://jaxb.dev.java.net/array" name="arg1" type="ns8:stringArray"></part> - </message> - <message name="setPositiveExamplesResponse"></message> - <message name="setNegativeExamples"> - <part name="arg0" type="xsd:int"></part> - <part xmlns:ns9="http://jaxb.dev.java.net/array" name="arg1" type="ns9:stringArray"></part> - </message> - <message name="setNegativeExamplesResponse"></message> - <message name="applyConfigEntryInt"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - <part name="arg3" type="xsd:int"></part> - </message> - <message name="applyConfigEntryIntResponse"></message> - <message name="applyConfigEntryString"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - <part name="arg3" type="xsd:string"></part> - </message> - <message name="applyConfigEntryStringResponse"></message> - <message name="applyConfigEntryURL"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - <part name="arg3" type="xsd:string"></part> - </message> - <message name="applyConfigEntryURLResponse"></message> - <message name="applyConfigEntryStringArray"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - <part xmlns:ns10="http://jaxb.dev.java.net/array" name="arg3" type="ns10:stringArray"></part> - </message> - <message name="applyConfigEntryStringArrayResponse"></message> - <message name="applyConfigEntryBoolean"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - <part name="arg3" type="xsd:boolean"></part> - </message> - <message name="applyConfigEntryBooleanResponse"></message> - <message name="getConfigOptionValueStringArray"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="getConfigOptionValueStringArrayResponse"> - <part xmlns:ns11="http://jaxb.dev.java.net/array" name="return" type="ns11:stringArray"></part> - </message> - <message name="ConfigOptionTypeException"> - <part element="tns:ConfigOptionTypeException" name="fault"></part> - </message> - <message name="getConfigOptionValueString"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="getConfigOptionValueStringResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="getConfigOptionValueURL"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="getConfigOptionValueURLResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="getConfigOptionValueDouble"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="getConfigOptionValueDoubleResponse"> - <part name="return" type="xsd:double"></part> - </message> - <message name="getConfigOptionValueBoolean"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="getConfigOptionValueBooleanResponse"> - <part name="return" type="xsd:boolean"></part> - </message> - <message name="getConfigOptionValueInt"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="getConfigOptionValueIntResponse"> - <part name="return" type="xsd:int"></part> - </message> - <message name="getAtomicConcepts"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="getAtomicConceptsResponse"> - <part xmlns:ns12="http://jaxb.dev.java.net/array" name="return" type="ns12:stringArray"></part> - </message> - <message name="getSubsumptionHierarchy"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="getSubsumptionHierarchyResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="retrieval"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:string"></part> - </message> - <message name="retrievalResponse"> - <part xmlns:ns13="http://jaxb.dev.java.net/array" name="return" type="ns13:stringArray"></part> - </message> - <message name="ParseException"> - <part element="tns:ParseException" name="fault"></part> - </message> - <message name="getConceptLength"> - <part name="arg0" type="xsd:string"></part> - </message> - <message name="getConceptLengthResponse"> - <part name="return" type="xsd:int"></part> - </message> - <message name="getAtomicRoles"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="getAtomicRolesResponse"> - <part xmlns:ns14="http://jaxb.dev.java.net/array" name="return" type="ns14:stringArray"></part> - </message> - <message name="getInstances"> - <part name="arg0" type="xsd:int"></part> - </message> - <message name="getInstancesResponse"> - <part xmlns:ns15="http://jaxb.dev.java.net/array" name="return" type="ns15:stringArray"></part> - </message> - <message name="getIndividualsForARole"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:string"></part> - </message> - <message name="getIndividualsForARoleResponse"> - <part xmlns:ns16="http://jaxb.dev.java.net/array" name="return" type="ns16:stringArray"></part> - </message> - <message name="getAsJSON"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="getAsJSONResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="SparqlQueryException"> - <part element="tns:SparqlQueryException" name="fault"></part> - </message> - <message name="getAsXMLString"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="getAsXMLStringResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="sparqlQueryThreaded"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="sparqlQueryThreadedResponse"> - <part name="return" type="xsd:int"></part> - </message> - <message name="sparqlQuery"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="sparqlQueryResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="sparqlQueryPredefinedEndpoint"> - <part name="arg0" type="xsd:string"></part> - <part name="arg1" type="xsd:string"></part> - <part name="arg2" type="xsd:boolean"></part> - </message> - <message name="sparqlQueryPredefinedEndpointResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="isSparqlQueryRunning"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="isSparqlQueryRunningResponse"> - <part name="return" type="xsd:boolean"></part> - </message> - <message name="stopSparqlThread"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="stopSparqlThreadResponse"></message> - <message name="getConceptDepth"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="getConceptDepthResponse"> - <part xmlns:ns17="http://jaxb.dev.java.net/array" name="return" type="ns17:intArray"></part> - </message> - <message name="getConceptArity"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="getConceptArityResponse"> - <part xmlns:ns18="http://jaxb.dev.java.net/array" name="return" type="ns18:intArray"></part> - </message> - <message name="SparqlRetrieval"> - <part name="arg0" type="xsd:string"></part> - <part name="arg1" type="xsd:int"></part> - </message> - <message name="SparqlRetrievalResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="getNaturalDescription"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:string"></part> - <part name="arg2" type="xsd:string"></part> - </message> - <message name="getNaturalDescriptionResponse"> - <part name="return" type="xsd:string"></part> - </message> - <message name="getNegativeExamples"> - <part name="arg0" type="xsd:int"></part> - <part name="arg1" type="xsd:int"></part> - <part xmlns:ns19="http://jaxb.dev.java.net/array" name="arg2" type="ns19:stringArray"></part> - <part name="arg3" type="xsd:int"></part> - <part name="arg4" type="xsd:string"></part> - <part xmlns:ns20="http://jaxb.dev.java.net/array" name="arg5" type="ns20:stringArray"></part> - </message> - <message name="getNegativeExamplesResponse"> - <part xmlns:ns21="http://jaxb.dev.java.net/array" name="return" type="ns21:stringArray"></part> - </message> - <portType name="DLLearnerWebService"> - <operation name="init" parameterOrder="arg0 arg1"> - <input message="tns:init"></input> - <output message="tns:initResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:ComponentInitException" name="ComponentInitException"></fault> - </operation> - <operation name="stop" parameterOrder="arg0"> - <input message="tns:stop"></input> - <output message="tns:stopResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getBuild" parameterOrder=""> - <input message="tns:getBuild"></input> - <output message="tns:getBuildResponse"></output> - </operation> - <operation name="ping" parameterOrder=""> - <input message="tns:ping"></input> - <output message="tns:pingResponse"></output> - </operation> - <operation name="generateID" parameterOrder=""> - <input message="tns:generateID"></input> - <output message="tns:generateIDResponse"></output> - </operation> - <operation name="getComponents" parameterOrder=""> - <input message="tns:getComponents"></input> - <output message="tns:getComponentsResponse"></output> - </operation> - <operation name="getKnowledgeSources" parameterOrder=""> - <input message="tns:getKnowledgeSources"></input> - <output message="tns:getKnowledgeSourcesResponse"></output> - </operation> - <operation name="getReasoners" parameterOrder=""> - <input message="tns:getReasoners"></input> - <output message="tns:getReasonersResponse"></output> - </operation> - <operation name="getLearningProblems" parameterOrder=""> - <input message="tns:getLearningProblems"></input> - <output message="tns:getLearningProblemsResponse"></output> - </operation> - <operation name="getLearningAlgorithms" parameterOrder=""> - <input message="tns:getLearningAlgorithms"></input> - <output message="tns:getLearningAlgorithmsResponse"></output> - </operation> - <operation name="getConfigOptions" parameterOrder="arg0 arg1"> - <input message="tns:getConfigOptions"></input> - <output message="tns:getConfigOptionsResponse"></output> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - </operation> - <operation name="addKnowledgeSource" parameterOrder="arg0 arg1 arg2"> - <input message="tns:addKnowledgeSource"></input> - <output message="tns:addKnowledgeSourceResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:MalformedURLException" name="MalformedURLException"></fault> - </operation> - <operation name="removeKnowledgeSource" parameterOrder="arg0 arg1"> - <input message="tns:removeKnowledgeSource"></input> - <output message="tns:removeKnowledgeSourceResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="setReasoner" parameterOrder="arg0 arg1"> - <input message="tns:setReasoner"></input> - <output message="tns:setReasonerResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - </operation> - <operation name="setLearningProblem" parameterOrder="arg0 arg1"> - <input message="tns:setLearningProblem"></input> - <output message="tns:setLearningProblemResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - </operation> - <operation name="setLearningAlgorithm" parameterOrder="arg0 arg1"> - <input message="tns:setLearningAlgorithm"></input> - <output message="tns:setLearningAlgorithmResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:LearningProblemUnsupportedException" name="LearningProblemUnsupportedException"></fault> - </operation> - <operation name="initAll" parameterOrder="arg0"> - <input message="tns:initAll"></input> - <output message="tns:initAllResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:ComponentInitException" name="ComponentInitException"></fault> - </operation> - <operation name="learn" parameterOrder="arg0 arg1"> - <input message="tns:learn"></input> - <output message="tns:learnResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="learnDescriptionsEvaluated" parameterOrder="arg0"> - <input message="tns:learnDescriptionsEvaluated"></input> - <output message="tns:learnDescriptionsEvaluatedResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getCurrentlyBestEvaluatedDescriptions" parameterOrder="arg0 arg1"> - <input message="tns:getCurrentlyBestEvaluatedDescriptions"></input> - <output message="tns:getCurrentlyBestEvaluatedDescriptionsResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="learnDescriptionsEvaluatedLimit" parameterOrder="arg0 arg1"> - <input message="tns:learnDescriptionsEvaluatedLimit"></input> - <output message="tns:learnDescriptionsEvaluatedLimitResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="learnThreaded" parameterOrder="arg0"> - <input message="tns:learnThreaded"></input> - <output message="tns:learnThreadedResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getCurrentlyBestConcept" parameterOrder="arg0"> - <input message="tns:getCurrentlyBestConcept"></input> - <output message="tns:getCurrentlyBestConceptResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getCurrentlyBestConcepts" parameterOrder="arg0 arg1 arg2"> - <input message="tns:getCurrentlyBestConcepts"></input> - <output message="tns:getCurrentlyBestConceptsResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getCurrentlyBestEvaluatedDescriptionsFiltered" parameterOrder="arg0 arg1 arg2 arg3"> - <input message="tns:getCurrentlyBestEvaluatedDescriptionsFiltered"></input> - <output message="tns:getCurrentlyBestEvaluatedDescriptionsFilteredResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="isAlgorithmRunning" parameterOrder="arg0"> - <input message="tns:isAlgorithmRunning"></input> - <output message="tns:isAlgorithmRunningResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="setPositiveExamples" parameterOrder="arg0 arg1"> - <input message="tns:setPositiveExamples"></input> - <output message="tns:setPositiveExamplesResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="setNegativeExamples" parameterOrder="arg0 arg1"> - <input message="tns:setNegativeExamples"></input> - <output message="tns:setNegativeExamplesResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="applyConfigEntryInt" parameterOrder="arg0 arg1 arg2 arg3"> - <input message="tns:applyConfigEntryInt"></input> - <output message="tns:applyConfigEntryIntResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - </operation> - <operation name="applyConfigEntryString" parameterOrder="arg0 arg1 arg2 arg3"> - <input message="tns:applyConfigEntryString"></input> - <output message="tns:applyConfigEntryStringResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - </operation> - <operation name="applyConfigEntryURL" parameterOrder="arg0 arg1 arg2 arg3"> - <input message="tns:applyConfigEntryURL"></input> - <output message="tns:applyConfigEntryURLResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:MalformedURLException" name="MalformedURLException"></fault> - </operation> - <operation name="applyConfigEntryStringArray" parameterOrder="arg0 arg1 arg2 arg3"> - <input message="tns:applyConfigEntryStringArray"></input> - <output message="tns:applyConfigEntryStringArrayResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - </operation> - <operation name="applyConfigEntryBoolean" parameterOrder="arg0 arg1 arg2 arg3"> - <input message="tns:applyConfigEntryBoolean"></input> - <output message="tns:applyConfigEntryBooleanResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - </operation> - <operation name="getConfigOptionValueStringArray" parameterOrder="arg0 arg1 arg2"> - <input message="tns:getConfigOptionValueStringArray"></input> - <output message="tns:getConfigOptionValueStringArrayResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:ConfigOptionTypeException" name="ConfigOptionTypeException"></fault> - </operation> - <operation name="getConfigOptionValueString" parameterOrder="arg0 arg1 arg2"> - <input message="tns:getConfigOptionValueString"></input> - <output message="tns:getConfigOptionValueStringResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:ConfigOptionTypeException" name="ConfigOptionTypeException"></fault> - </operation> - <operation name="getConfigOptionValueURL" parameterOrder="arg0 arg1 arg2"> - <input message="tns:getConfigOptionValueURL"></input> - <output message="tns:getConfigOptionValueURLResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:ConfigOptionTypeException" name="ConfigOptionTypeException"></fault> - </operation> - <operation name="getConfigOptionValueDouble" parameterOrder="arg0 arg1 arg2"> - <input message="tns:getConfigOptionValueDouble"></input> - <output message="tns:getConfigOptionValueDoubleResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:ConfigOptionTypeException" name="ConfigOptionTypeException"></fault> - </operation> - <operation name="getConfigOptionValueBoolean" parameterOrder="arg0 arg1 arg2"> - <input message="tns:getConfigOptionValueBoolean"></input> - <output message="tns:getConfigOptionValueBooleanResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:ConfigOptionTypeException" name="ConfigOptionTypeException"></fault> - </operation> - <operation name="getConfigOptionValueInt" parameterOrder="arg0 arg1 arg2"> - <input message="tns:getConfigOptionValueInt"></input> - <output message="tns:getConfigOptionValueIntResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:UnknownComponentException" name="UnknownComponentException"></fault> - <fault message="tns:ConfigOptionTypeException" name="ConfigOptionTypeException"></fault> - </operation> - <operation name="getAtomicConcepts" parameterOrder="arg0"> - <input message="tns:getAtomicConcepts"></input> - <output message="tns:getAtomicConceptsResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getSubsumptionHierarchy" parameterOrder="arg0"> - <input message="tns:getSubsumptionHierarchy"></input> - <output message="tns:getSubsumptionHierarchyResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="retrieval" parameterOrder="arg0 arg1"> - <input message="tns:retrieval"></input> - <output message="tns:retrievalResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:ParseException" name="ParseException"></fault> - </operation> - <operation name="getConceptLength" parameterOrder="arg0"> - <input message="tns:getConceptLength"></input> - <output message="tns:getConceptLengthResponse"></output> - <fault message="tns:ParseException" name="ParseException"></fault> - </operation> - <operation name="getAtomicRoles" parameterOrder="arg0"> - <input message="tns:getAtomicRoles"></input> - <output message="tns:getAtomicRolesResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getInstances" parameterOrder="arg0"> - <input message="tns:getInstances"></input> - <output message="tns:getInstancesResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getIndividualsForARole" parameterOrder="arg0 arg1"> - <input message="tns:getIndividualsForARole"></input> - <output message="tns:getIndividualsForARoleResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getAsJSON" parameterOrder="arg0 arg1"> - <input message="tns:getAsJSON"></input> - <output message="tns:getAsJSONResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:SparqlQueryException" name="SparqlQueryException"></fault> - </operation> - <operation name="getAsXMLString" parameterOrder="arg0 arg1"> - <input message="tns:getAsXMLString"></input> - <output message="tns:getAsXMLStringResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - <fault message="tns:SparqlQueryException" name="SparqlQueryException"></fault> - </operation> - <operation name="sparqlQueryThreaded" parameterOrder="arg0 arg1 arg2"> - <input message="tns:sparqlQueryThreaded"></input> - <output message="tns:sparqlQueryThreadedResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="sparqlQuery" parameterOrder="arg0 arg1 arg2"> - <input message="tns:sparqlQuery"></input> - <output message="tns:sparqlQueryResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="sparqlQueryPredefinedEndpoint" parameterOrder="arg0 arg1 arg2"> - <input message="tns:sparqlQueryPredefinedEndpoint"></input> - <output message="tns:sparqlQueryPredefinedEndpointResponse"></output> - </operation> - <operation name="isSparqlQueryRunning" parameterOrder="arg0 arg1"> - <input message="tns:isSparqlQueryRunning"></input> - <output message="tns:isSparqlQueryRunningResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="stopSparqlThread" parameterOrder="arg0 arg1"> - <input message="tns:stopSparqlThread"></input> - <output message="tns:stopSparqlThreadResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getConceptDepth" parameterOrder="arg0 arg1"> - <input message="tns:getConceptDepth"></input> - <output message="tns:getConceptDepthResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getConceptArity" parameterOrder="arg0 arg1"> - <input message="tns:getConceptArity"></input> - <output message="tns:getConceptArityResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="SparqlRetrieval" parameterOrder="arg0 arg1"> - <input message="tns:SparqlRetrieval"></input> - <output message="tns:SparqlRetrievalResponse"></output> - <fault message="tns:ParseException" name="ParseException"></fault> - </operation> - <operation name="getNaturalDescription" parameterOrder="arg0 arg1 arg2"> - <input message="tns:getNaturalDescription"></input> - <output message="tns:getNaturalDescriptionResponse"></output> - <fault message="tns:ParseException" name="ParseException"></fault> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - <operation name="getNegativeExamples" parameterOrder="arg0 arg1 arg2 arg3 arg4 arg5"> - <input message="tns:getNegativeExamples"></input> - <output message="tns:getNegativeExamplesResponse"></output> - <fault message="tns:ClientNotKnownException" name="ClientNotKnownException"></fault> - </operation> - </portType> - <binding name="DLLearnerWebServicePortBinding" type="tns:DLLearnerWebService"> - <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"></soap:binding> - <operation name="init"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - <fault name="UnknownComponentException"> - <soap:fault name="UnknownComponentException" use="literal"></soap:fault> - </fault> - <fault name="ComponentInitException"> - <soap:fault name="ComponentInitException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="stop"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="getBuild"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - </operation> - <operation name="ping"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - </operation> - <operation name="generateID"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - </operation> - <operation name="getComponents"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - </operation> - <operation name="getKnowledgeSources"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - </operation> - <operation name="getReasoners"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - </operation> - <operation name="getLearningProblems"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - </operation> - <operation name="getLearningAlgorithms"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - </operation> - <operation name="getConfigOptions"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="UnknownComponentException"> - <soap:fault name="UnknownComponentException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="addKnowledgeSource"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - <fault name="UnknownComponentException"> - <soap:fault name="UnknownComponentException" use="literal"></soap:fault> - </fault> - <fault name="MalformedURLException"> - <soap:fault name="MalformedURLException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="removeKnowledgeSource"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="setReasoner"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - <fault name="UnknownComponentException"> - <soap:fault name="UnknownComponentException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="setLearningProblem"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - <fault name="UnknownComponentException"> - <soap:fault name="UnknownComponentException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="setLearningAlgorithm"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - <fault name="UnknownComponentException"> - <soap:fault name="UnknownComponentException" use="literal"></soap:fault> - </fault> - <fault name="LearningProblemUnsupportedException"> - <soap:fault name="LearningProblemUnsupportedException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="initAll"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - <fault name="ComponentInitException"> - <soap:fault name="ComponentInitException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="learn"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="learnDescriptionsEvaluated"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="getCurrentlyBestEvaluatedDescriptions"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="learnDescriptionsEvaluatedLimit"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="learnThreaded"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="getCurrentlyBestConcept"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="getCurrentlyBestConcepts"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="getCurrentlyBestEvaluatedDescriptionsFiltered"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="isAlgorithmRunning"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </output> - <fault name="ClientNotKnownException"> - <soap:fault name="ClientNotKnownException" use="literal"></soap:fault> - </fault> - </operation> - <operation name="setPositiveExamples"> - <soap:operation soapAction=""></soap:operation> - <input> - <soap:body use="literal" namespace="http://server.dllearner.org/"></soap:body> - </input> - <output> - <soap:bod... [truncated message content] |
From: <jen...@us...> - 2009-09-14 14:21:51
|
Revision: 1850 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1850&view=rev Author: jenslehmann Date: 2009-09-14 14:21:43 +0000 (Mon, 14 Sep 2009) Log Message: ----------- small bugfix Modified Paths: -------------- trunk/src/php-examples/LearningSimple.php Modified: trunk/src/php-examples/LearningSimple.php =================================================================== --- trunk/src/php-examples/LearningSimple.php 2009-09-14 12:26:04 UTC (rev 1849) +++ trunk/src/php-examples/LearningSimple.php 2009-09-14 14:21:43 UTC (rev 1850) @@ -67,7 +67,7 @@ // get only concept // $concept = $client->learn($id, "manchester"); // get concept and additional information in JSON syntax -$concept = $client->learnDescriptionsEvaluated($id, 5); +$concept = $client->learnDescriptionsEvaluatedLimit($id, 5); echo 'OK <br />'; echo 'solution: <pre>'; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-14 12:26:17
|
Revision: 1849 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1849&view=rev Author: lorenz_b Date: 2009-09-14 12:26:04 +0000 (Mon, 14 Sep 2009) Log Message: ----------- fixed bug in explanation generator, wrong set of explanations was returned Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-14 11:43:37 UTC (rev 1848) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-14 12:26:04 UTC (rev 1849) @@ -179,7 +179,7 @@ } Set<Explanation> explanations = new HashSet<Explanation>(); - for (Explanation explanation : allPreviouslyFoundExplanations) { + for (Explanation explanation : allPreviouslyFoundExplanations) {System.out.println(explanation); if (!nonLaconicExplanations.contains(explanation)) { if (laconicExplanations.contains(explanation)) { explanations.add(explanation); @@ -189,7 +189,7 @@ } } - return laconicExplanations;//retrieveAxioms(explanations); + return explanations;//retrieveAxioms(explanations); } public boolean isLaconic(Explanation explanation) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties 2009-09-14 11:43:37 UTC (rev 1848) +++ trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties 2009-09-14 12:26:04 UTC (rev 1849) @@ -1,5 +1,6 @@ log4j.rootLogger=INFO, A log4j.logger.org.dllearner.tools.ore.explanation = DEBUG, A +log4j.logger.org.dllearner.tools.ore.explanation.HSTExplanationGenerator = INFO, A log4j.appender.A=org.apache.log4j.ConsoleAppender log4j.appender.A.layout=org.apache.log4j.PatternLayout log4j.appender.A.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java 2009-09-14 11:43:37 UTC (rev 1848) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassificationProgressMonitor.java 2009-09-14 12:26:04 UTC (rev 1849) @@ -1,117 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.Cursor; -import java.awt.Dimension; - -import javax.swing.JPanel; -import javax.swing.JProgressBar; -import javax.swing.SwingUtilities; - -import org.mindswap.pellet.utils.progress.ProgressMonitor; - -public class ClassificationProgressMonitor extends JPanel implements ProgressMonitor{ - - /** - * - */ - private static final long serialVersionUID = -4913267621100462227L; - private javax.swing.ProgressMonitor monitor; - private JProgressBar progressBar; - private String progressMessage = ""; - private String progressTitle = ""; - private int progress = 0; - private int progressLength = 0; - private int progressPercent = -1; - private long startTime = -1; - private boolean canceled = false; - - - public ClassificationProgressMonitor(){ - super(); - monitor = new javax.swing.ProgressMonitor(this, progressTitle, progressMessage, 0 ,progressLength); - progressBar = new JProgressBar(0, progressLength); - progressBar.setValue(progress); - progressBar.setStringPainted(true); - add(progressBar); - setSize(new Dimension(200, 200)); - - } - - @Override - public int getProgress() { - return progress; - } - - @Override - public int getProgressPercent() { - return progressPercent; - } - - @Override - public void incrementProgress() { - setProgress(progress + 1); - - } - - @Override - public boolean isCanceled() { - return monitor.isCanceled(); - } - - @Override - public void setProgress(int progress) { - this.progress = progress; - updateProgress(); - - } - - @Override - public void setProgressLength(int length) { - progressLength = length; - monitor.setMaximum(length); - progressBar.setMaximum(length); - - } - - @Override - public void setProgressMessage(String message) { - progressMessage = message; - monitor.setNote(message); - - } - - @Override - public void setProgressTitle(String title) { - progressTitle = title; - - } - - @Override - public void taskFinished() { - monitor.close(); - setCursor(null); - - } - - @Override - public void taskStarted() { - setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - - } - - private void updateProgress(){ - SwingUtilities.invokeLater(new Runnable(){ - - @Override - public void run() { - monitor.setProgress(progress); - progressBar.setValue(progress); - - } - - }); - } - - - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-14 11:24:29
|
Revision: 1847 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1847&view=rev Author: lorenz_b Date: 2009-09-14 11:24:20 +0000 (Mon, 14 Sep 2009) Log Message: ----------- fixed missing axiom selection in explanation tables, when axiom is not laconic Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-14 10:51:51 UTC (rev 1846) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-14 11:24:20 UTC (rev 1847) @@ -135,8 +135,5 @@ fireImpactListChanged(); } - - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 10:51:51 UTC (rev 1846) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 11:24:20 UTC (rev 1847) @@ -109,6 +109,7 @@ } } else { + impMan.addSelection(ax); repMan.addToRepairPlan(new RemoveAxiom(ont, ax)); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-14 10:52:00
|
Revision: 1846 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1846&view=rev Author: lorenz_b Date: 2009-09-14 10:51:51 +0000 (Mon, 14 Sep 2009) Log Message: ----------- fixed axiom selection, when source axiom of laconic axiom is scheduled for removal Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -188,6 +188,10 @@ return arity; } + public int getGlobalArity(OWLAxiom ax){ + return gen.getArity(ax); + } + public void setLaconicMode(boolean laconic){ gen.setComputeLaconicExplanations(laconic); fireExplanationTypeChanged(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationTest.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -19,7 +19,6 @@ import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; -@SuppressWarnings("unused") public class ExplanationTest { // private static final String file = "file:examples/ore/inconsistent.owl"; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -88,6 +88,10 @@ fireImpactListChanged(); } + public void addSelection(List<OWLAxiom> axioms){ + selectedAxioms.addAll(axioms); + } + public void removeSelection(OWLAxiom ax){ selectedAxioms.remove(ax); fireImpactListChanged(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -68,6 +68,24 @@ public Set<Explanation> getExplanations(OWLAxiom entailment){ return getExplanations(entailment, -1); } + + public int getArity(OWLAxiom axiom){ + int arity = 0; + Map<OWLAxiom, Set<Explanation>> cache; + if(laconicMode == true){ + cache = laconicExplanationCache; + } else { + cache = regularExplanationCache; + } + for(Set<Explanation> explanations : cache.values()){ + for(Explanation exp : explanations){ + if(exp.getAxioms().contains(axiom)){ + arity++; + } + } + } + return arity; + } @Override public Set<Explanation> getExplanations(OWLAxiom entailment, int limit){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -1,26 +1,14 @@ package org.dllearner.tools.ore.ui; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.Insets; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JPanel; import javax.swing.table.AbstractTableModel; import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.ImpactManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; -import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.explanation.Explanation; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; @@ -64,16 +52,16 @@ @Override public Object getValueAt(int rowIndex, int columnIndex) { + OWLAxiom ax = getOWLAxiomAtRow(rowIndex); if(columnIndex == 0){ - OWLAxiom ax = getOWLAxiomAtRow(rowIndex); int depth2Root = expMan.getOrdering(exp).get(rowIndex).values().iterator().next(); return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root); } else if(columnIndex == 1){ - return expMan.getArity(unsat, getOWLAxiomAtRow(rowIndex)); + return expMan.getGlobalArity(ax);//getArity(unsat, getOWLAxiomAtRow(rowIndex)); } else if(columnIndex == 2) { - return expMan.getUsage(getOWLAxiomAtRow(rowIndex)).size(); + return expMan.getUsage(ax).size(); } else if(columnIndex == 3){ - return Boolean.valueOf(impMan.isSelected(getOWLAxiomAtRow(rowIndex))); + return Boolean.valueOf(impMan.isSelected(ax)); } else { return "rewrite"; } @@ -116,7 +104,8 @@ int ret = dialog.showDialog(); if(ret == RemainingAxiomsDialog.OK_RETURN_CODE){ impMan.addSelection(ax); - repMan.addToRepairPlan(dialog.getChanges()); + List<OWLOntologyChange> changes = dialog.getChanges(); + repMan.addToRepairPlan(changes); } } else { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java 2009-09-14 09:59:30 UTC (rev 1845) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java 2009-09-14 10:51:51 UTC (rev 1846) @@ -15,9 +15,11 @@ import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; +import javax.swing.JLabel; import javax.swing.JPanel; import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.ImpactManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.TaskManager; import org.semanticweb.owl.model.AddAxiom; @@ -51,6 +53,7 @@ private List<OWLAxiom> sourceAxioms; private ExplanationManager expMan; + private ImpactManager impMan; private OWLOntology ontology; @@ -58,7 +61,7 @@ public RemainingAxiomsDialog(OWLAxiom laconicAxiom, OWLOntology ont){ super(TaskManager.getInstance().getDialog(), "Selected part of axiom in ontology", true); setLayout(new BorderLayout()); - + add(new JLabel("You selected an axiom which is only part of some axioms in the ontology"), BorderLayout.NORTH); createControls(); this.ontology = ont; @@ -67,6 +70,7 @@ explanationsPanel = new Box(1); expMan = ExplanationManager.getInstance(OREManager.getInstance()); + impMan = ImpactManager.getInstance(OREManager.getInstance()); changes = new ArrayList<OWLOntologyChange>(); sourceAxioms = new ArrayList<OWLAxiom>(); @@ -83,7 +87,7 @@ } - add(explanationsPanel, BorderLayout.NORTH); + add(explanationsPanel, BorderLayout.CENTER); } @@ -154,6 +158,7 @@ public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Ok")) { returnCode = OK_RETURN_CODE; + impMan.addSelection(sourceAxioms); closeDialog(); } else { returnCode = CANCEL_RETURN_CODE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-14 09:59:47
|
Revision: 1845 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1845&view=rev Author: lorenz_b Date: 2009-09-14 09:59:30 +0000 (Mon, 14 Sep 2009) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/close.png trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTableModel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt Property Changed: ---------------- trunk/src/dl-learner/org/dllearner/tools/ore/ Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore ___________________________________________________________________ Added: svn:ignore + recent.txt Added: trunk/src/dl-learner/org/dllearner/tools/ore/close.png =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/close.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -21,6 +21,7 @@ import org.semanticweb.owl.inference.OWLReasonerFactory; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.AxiomType; +import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataAllRestriction; import org.semanticweb.owl.model.OWLDataExactCardinalityRestriction; @@ -76,6 +77,8 @@ private Map<OWLClass, Set<OWLClass>> child2Parents; private Map<OWLClass, Set<OWLClass>> parent2Children; + + private Map<OWLClass, Map<OWLAxiom, Set<OWLClass>>> class2Dependency; public RootFinder(){ @@ -98,6 +101,8 @@ child2Parents = new HashMap<OWLClass, Set<OWLClass>>(); parent2Children = new HashMap<OWLClass, Set<OWLClass>>(); + class2Dependency = new HashMap<OWLClass, Map<OWLAxiom, Set<OWLClass>>>(); + OREManager.getInstance().addListener(this); RepairManager.getInstance(OREManager.getInstance()).addListener(this); // OREManager.getInstance().getPelletReasoner().getOWLOntologyManager().addOntologyChangeListener(this); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -172,7 +172,7 @@ nonLaconicExplanations.add(currentExplanation); } if (laconicExplanations.size() == limit) { - return laconicExplanations;//retrieveAxioms(laconicJusts); + return laconicExplanations;//retrieveAxioms(laconicExplanations); } } } @@ -189,7 +189,7 @@ } } - return explanations;//retrieveAxioms(explanations); + return laconicExplanations;//retrieveAxioms(explanations); } public boolean isLaconic(Explanation explanation) @@ -205,12 +205,10 @@ PelletExplanationGenerator expGen2 = new PelletExplanationGenerator(manager, Collections.singleton(justificationSigmaClosureOnt)); -// Set<Set<OWLAxiom>> exps = expGen2.getEntailmentExplanations( -// entailment, 2); - Explanation expl = expGen2.getExplanation(explanation.getEntailment()); + Set<Explanation> exps = expGen2.getExplanations( + explanation.getEntailment(), 2); -// laconic = Collections.singleton(justification).equals(exps); - laconic = explanation.equals(expl); + laconic = Collections.singleton(explanation).equals(exps); } catch (OWLOntologyCreationException e) { throw new ExplanationException(e); @@ -337,13 +335,13 @@ public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ Set<OWLAxiom> parts = computeOPlus(Collections.singleton(source)); - for(OWLAxiom ax : parts){ +// for(OWLAxiom ax : parts){ // System.out.println("Part: " + ax); - for(OWLAxiom a : oPlus.getAxiomsMap().get(ax)){ +// for(OWLAxiom a : oPlus.getAxiomsMap().get(ax)){ // System.out.println("has source: " + a); - } - - } +// } +// +// } for(OWLAxiom par : parts){ // System.out.println("has Part: " + par); Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt =================================================================== (Binary files differ) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -57,7 +57,7 @@ repMan.addListener(this); setBackground(Color.WHITE); - setHighlighters(HighlighterFactory.createAlternateStriping()); +// setHighlighters(HighlighterFactory.createAlternateStriping()); setAutoResizeMode(JTable.AUTO_RESIZE_OFF); setModel(new ExplanationTableModel(exp, cl)); TableColumn column5 = getColumn(4); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -1,14 +1,26 @@ package org.dllearner.tools.ore.ui; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Insets; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPanel; import javax.swing.table.AbstractTableModel; import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.ImpactManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; +import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.explanation.Explanation; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; @@ -89,18 +101,24 @@ repMan.removeFromRepairPlan(new RemoveAxiom(ont, ax)); } } else { - impMan.addSelection(ax); +// impMan.addSelection(ax); if(expMan.isLaconicMode() && !ont.containsAxiom(ax)){ - List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); - for(OWLAxiom source : expMan.getSourceAxioms(ax)){ - impMan.addSelection(source); - changes.add(new RemoveAxiom(ont, source)); - for(OWLAxiom remain : expMan.getRemainingAxioms(source, ax)){ - changes.add(new AddAxiom(ont, remain)); - } - +// List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); +// for(OWLAxiom source : expMan.getSourceAxioms(ax)){ +// impMan.addSelection(source); +// changes.add(new RemoveAxiom(ont, source)); +// for(OWLAxiom remain : expMan.getRemainingAxioms(source, ax)){ +// changes.add(new AddAxiom(ont, remain)); +// } +// +// } + RemainingAxiomsDialog dialog = new RemainingAxiomsDialog(ax, ont); + int ret = dialog.showDialog(); + if(ret == RemainingAxiomsDialog.OK_RETURN_CODE){ + impMan.addSelection(ax); + repMan.addToRepairPlan(dialog.getChanges()); } - repMan.addToRepairPlan(changes); + } else { repMan.addToRepairPlan(new RemoveAxiom(ont, ax)); } @@ -127,8 +145,9 @@ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { - if(columnIndex == 3 || columnIndex == 4) + if(columnIndex == 3 || columnIndex == 4){ return true; + } return false; } @@ -149,6 +168,4 @@ } } - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -111,7 +111,7 @@ this.setPreferredSize(new Dimension(540, 260)); - this.repaint(); +// this.repaint(); darkGreen = new Color(0, 100, 0); darkRed = new Color(205, 0, 0); random = new Random(); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsDialog.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -0,0 +1,165 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPanel; + +import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.TaskManager; +import org.semanticweb.owl.model.AddAxiom; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.RemoveAxiom; + +public class RemainingAxiomsDialog extends JDialog implements ActionListener{ + + + /** + * + */ + private static final long serialVersionUID = 8019086232940177286L; + + private JComponent explanationsPanel; + private Set<RemainingAxiomsTable> tables; + + public static final int CANCEL_RETURN_CODE = 0; + public static final int OK_RETURN_CODE = 1; + + private int returnCode; + + @SuppressWarnings("unused") + private JButton okButton = null; + @SuppressWarnings("unused") + private JButton cancelButton = null; + + private List<OWLOntologyChange> changes; + private List<OWLAxiom> sourceAxioms; + + private ExplanationManager expMan; + + private OWLOntology ontology; + + + public RemainingAxiomsDialog(OWLAxiom laconicAxiom, OWLOntology ont){ + super(TaskManager.getInstance().getDialog(), "Selected part of axiom in ontology", true); + setLayout(new BorderLayout()); + + createControls(); + + this.ontology = ont; + + tables = new HashSet<RemainingAxiomsTable>(); + explanationsPanel = new Box(1); + + expMan = ExplanationManager.getInstance(OREManager.getInstance()); + + changes = new ArrayList<OWLOntologyChange>(); + sourceAxioms = new ArrayList<OWLAxiom>(); + + sourceAxioms.addAll(expMan.getSourceAxioms(laconicAxiom)); + + for(OWLAxiom source : sourceAxioms){ + + changes.add(new RemoveAxiom(ont, source)); + List<OWLAxiom> remainingAxioms = new ArrayList<OWLAxiom>(expMan.getRemainingAxioms(source, laconicAxiom)); + RemainingAxiomsTable table = new RemainingAxiomsTable(remainingAxioms); + tables.add(table); + explanationsPanel.add(table); + + } + + add(explanationsPanel, BorderLayout.NORTH); + + + } + + private void createControls() { + Box buttonBox = Box.createHorizontalBox(); + + // Create a panel to hold a box with the buttons in it - to give it the + // right space around them + JPanel buttonPanel = new JPanel(); + buttonPanel.add(buttonBox); + buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + + // Create the buttons and add them to the box (leading strut will give + // the dialog box its width) + buttonBox.add(okButton = createButton("Ok", 'o')); + buttonBox.add(Box.createHorizontalGlue()); + buttonBox.add(Box.createHorizontalStrut(4)); + buttonBox.add(cancelButton = createButton("Cancel", 'c')); + buttonBox.add(Box.createHorizontalStrut(10)); + + // Add the button panel to the bottom of the BorderLayout + getContentPane().add(buttonPanel, BorderLayout.SOUTH); + } + + private JButton createButton(String label, char mnemonic) { + // Create the new button object + JButton newButton = new JButton(label); + newButton.setActionCommand(label); + + newButton.setPreferredSize(new Dimension(90, 30)); + newButton.setMargin(new Insets(2, 2, 2, 2)); + + if (mnemonic != '\0') { + // Specify the button's mnemonic + newButton.setMnemonic(mnemonic); + } + + // Setup the dialog to listen to events + newButton.addActionListener(this); + + return newButton; + } + + public int showDialog(){ + setSize(700, 400); + setVisible(true); + setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + return returnCode; + } + + private void closeDialog() { + setVisible(false); + dispose(); + } + + public List<OWLOntologyChange> getChanges(){ + + for(RemainingAxiomsTable table : tables){ + for(OWLAxiom ax : table.getSelectedAxioms()){ + changes.add(new AddAxiom(ontology, ax)); + } + } + return changes; + } + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("Ok")) { + returnCode = OK_RETURN_CODE; + closeDialog(); + } else { + returnCode = CANCEL_RETURN_CODE; + closeDialog(); + + } + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTable.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -0,0 +1,29 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.util.List; + +import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLAxiom; + +public class RemainingAxiomsTable extends JXTable{ + + /** + * + */ + private static final long serialVersionUID = 8948590659747547909L; + + public RemainingAxiomsTable(List<OWLAxiom> remainingAxioms) { + + setBackground(Color.WHITE); + setModel(new RemainingAxiomsTableModel(remainingAxioms)); + setRowHeight(getRowHeight() + 5); + getColumn(0).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); + getColumn(1).setMaxWidth(30); + } + + public List<OWLAxiom> getSelectedAxioms(){ + return ((RemainingAxiomsTableModel)getModel()).getSelectedAxioms(); + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RemainingAxiomsTableModel.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -0,0 +1,80 @@ +package org.dllearner.tools.ore.ui; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.semanticweb.owl.model.OWLAxiom; + +public class RemainingAxiomsTableModel extends AbstractTableModel { + + /** + * + */ + private static final long serialVersionUID = 7214659543838574629L; + private List<OWLAxiom> remainingAxioms; + private List<Boolean> selectionList; + + public RemainingAxiomsTableModel(List<OWLAxiom> remainingAxioms){ + this.remainingAxioms = remainingAxioms; + selectionList = new ArrayList<Boolean>(remainingAxioms.size()); + for(int i = 0; i < remainingAxioms.size(); i++ ){ + selectionList.add(i, Boolean.FALSE); + } + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public int getRowCount() { + return remainingAxioms.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + return remainingAxioms.get(rowIndex); + } else { + return selectionList.get(rowIndex); + } + } + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + return false; + } + return true; + } + + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + if(columnIndex == 1){ + selectionList.set(rowIndex, (Boolean)value); + } + super.setValueAt(value, rowIndex, columnIndex); + } + + @Override + public Class<?> getColumnClass(int columnIndex) { + if(columnIndex == 0) { + return OWLAxiom.class; + } else { + return Boolean.class; + } + } + + public List<OWLAxiom> getSelectedAxioms(){ + List<OWLAxiom> selectedAxioms = new ArrayList<OWLAxiom>(); + for(int i = 0; i < remainingAxioms.size(); i++){ + if(selectionList.get(i) == Boolean.TRUE){ + selectedAxioms.add(remainingAxioms.get(i)); + } + } + return selectedAxioms; + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -14,7 +14,9 @@ import java.awt.geom.Ellipse2D; import java.util.Set; +import javax.swing.BorderFactory; import javax.swing.Icon; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; @@ -23,7 +25,6 @@ import javax.swing.SwingUtilities; import org.mindswap.pellet.utils.progress.ProgressMonitor; -import org.protege.editor.core.ui.list.MListDeleteButton; import org.semanticweb.owl.model.OWLAxiom; import com.clarkparsia.explanation.util.ExplanationProgressMonitor; @@ -65,8 +66,10 @@ } }); rB.setToolTipText("Abort"); - leftPanel.add(rB); +// leftPanel.add(rB); + leftPanel.add(new Cancel()); + leftPanel.add(progressBar); leftPanel.add(new JSeparator(JSeparator.VERTICAL)); leftPanel.add(infoLabel); @@ -337,5 +340,29 @@ } return shape.contains(x, y); } + + } +class Cancel extends JButton { + + public Cancel() { + super(); + setIcon(new ImageIcon( + "src/dl-learner/org/dllearner/tools/ore/close.png")); + setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + setHorizontalAlignment(JButton.LEADING); // optional + setBorderPainted(false); + setContentAreaFilled(false); + } + + @Override + protected void paintComponent(Graphics g) { + if(getModel().isArmed()){ + g.setColor(Color.YELLOW); + } + super.paintComponent(g); + } + +} + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -21,16 +21,13 @@ package org.dllearner.tools.ore.ui.wizard; -import java.awt.Cursor; import java.awt.event.ActionListener; import java.util.List; import javax.swing.JOptionPane; -import javax.swing.SwingWorker; import org.dllearner.core.owl.Description; import org.dllearner.tools.ore.OREManager; -import org.dllearner.tools.ore.ui.StatusBar; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.InconsistencyExplanationPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.KnowledgeSourcePanelDescriptor; @@ -348,36 +345,4 @@ } - - class ClassificationWorker extends SwingWorker<Void, Void>{ - - private StatusBar statusBar; - - public ClassificationWorker(StatusBar statusBar) { - this.statusBar = statusBar; -// OREManager.getInstance().getPelletReasoner().addProgressMonitor(new ClassificationProgressMonitor()); - - } - - @Override - public Void doInBackground() { - statusBar.showProgress(true); - wizard.getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - - statusBar.setProgressTitle("classifying ontology"); - OREManager.getInstance().getReasoner().classify(); - - return null; - } - - @Override - public void done() { - wizard.getDialog().setCursor(null); - statusBar.showProgress(false); - statusBar.setProgressTitle(""); - } - - } - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -20,7 +20,6 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; -import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; @@ -34,6 +33,7 @@ import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RecentManager; +import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.ui.ExtractFromSparqlDialog; import org.dllearner.tools.ore.ui.LinkLabel; import org.dllearner.tools.ore.ui.StatusBar; @@ -106,7 +106,7 @@ public void loadOntology(URI uri){ OREManager.getInstance().setCurrentKnowledgeSource(uri); currentURI = uri; - + TaskManager.getInstance().setTaskStarted("Loading ontology"); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); } @@ -172,10 +172,11 @@ } private void handleOpenFromRecent(URI uri){ - currentURI = uri; - OREManager.getInstance().setCurrentKnowledgeSource( - uri); - new OntologyLoadingTask(getWizard().getStatusBar()).execute(); +// currentURI = uri; +// OREManager.getInstance().setCurrentKnowledgeSource( +// uri); +// new OntologyLoadingTask(getWizard().getStatusBar()).execute(); + loadOntology(uri); } private void updateMetrics(){ @@ -199,9 +200,7 @@ @Override public Void doInBackground() { getWizard().setNextFinishButtonEnabled(false); - getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - statusBar.showProgress(true); - statusBar.setProgressTitle("Loading ontology"); + try{ oreMan.initPelletReasoner(); RecentManager.getInstance().addURI(currentURI); @@ -261,9 +260,7 @@ @Override public void done() { if(!isCancelled()){ - statusBar.showProgress(false); - statusBar.setProgressTitle("Done"); - getWizard().getDialog().setCursor(null); + TaskManager.getInstance().setTaskFinished(); getWizard().setNextFinishButtonEnabled(true); updateMetrics(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -20,7 +20,6 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; -import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; @@ -39,6 +38,7 @@ import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.OREManagerListener; +import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.LearningPanel; @@ -122,6 +122,7 @@ */ public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ + TaskManager.getInstance().setTaskStarted("Learning equivalent class expressions"); learnPanel.getStartButton().setEnabled(false); learnPanel.getStopButton().setEnabled(true); OREManager.getInstance().setNoisePercentage(learnPanel.getOptionsPanel().getMinAccuracy()); @@ -139,7 +140,7 @@ timer.cancel(); learnPanel.getStartButton().setEnabled(true); getWizard().getStatusBar().showProgress(false); - getWizard().getStatusBar().setProgressTitle("learning stopped"); + getWizard().getStatusBar().setProgressTitle("Learning stopped"); } @@ -199,9 +200,7 @@ @Override public List<? extends EvaluatedDescription> doInBackground() { learnPanel.getResultTable().clear(); - getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - getWizard().getStatusBar().showProgress(true); - getWizard().getStatusBar().setProgressTitle("Learning equivalent class expressions"); + la = OREManager.getInstance().getLa(); timer = new Timer(); @@ -240,6 +239,7 @@ learnPanel.getStartButton().setEnabled(true); learnPanel.getStopButton().setEnabled(false); updateList(result); + TaskManager.getInstance().setTaskFinished(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-13 15:41:13 UTC (rev 1844) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-14 09:59:30 UTC (rev 1845) @@ -16,6 +16,7 @@ import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JComponent; +import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -120,9 +121,9 @@ explanationsScrollPane = new JScrollPane(pan); // explanationsScrollPane.setPreferredSize(minimumSize); explanationsScrollPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); - explanationsScrollPane.getViewport().setOpaque(true); + explanationsScrollPane.getViewport().setOpaque(false); explanationsScrollPane.getViewport().setBackground(null); - explanationsScrollPane.setOpaque(true); + explanationsScrollPane.setOpaque(false); regularButton = new JRadioButton("Show regular explanations", true); regularButton.setActionCommand("regular"); @@ -262,4 +263,27 @@ public UnsatisfiableClassesTable getUnsatTable(){ return unsatClassesTable; } + + public static void main(String[] args){ + JFrame frame = new JFrame(); + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); + JSplitPane pane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + pane1.setDividerLocation(200); + JSplitPane pane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + pane2.setDividerLocation(200); + JSplitPane pane3 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + pane1.setLeftComponent(new JPanel()); + pane1.setRightComponent(pane2); + pane2.setTopComponent(new JPanel()); + pane2.setBottomComponent(pane3); + pane3.setLeftComponent(new JPanel()); + pane3.setRightComponent(new JPanel()); + panel.add(pane1); + frame.add(panel); + frame.setSize(400, 400); + frame.setVisible(true); + + + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <neb...@us...> - 2009-09-13 15:41:23
|
Revision: 1844 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1844&view=rev Author: nebelschwade Date: 2009-09-13 15:41:13 +0000 (Sun, 13 Sep 2009) Log Message: ----------- Major refactoring of JS-Classes and functions All-Search working Extraction of recentlyListened Songs (posExamples) working Cookie/Session fixes Modified Paths: -------------- trunk/src/moosique.net/css/style.css trunk/src/moosique.net/index.php trunk/src/moosique.net/js/index.php trunk/src/moosique.net/moosique/classes/Config.php trunk/src/moosique.net/moosique/classes/DllearnerConnection.php trunk/src/moosique.net/moosique/classes/RequestHandler.php trunk/src/moosique.net/moosique/classes/View.php trunk/src/moosique.net/moosique/config.ini trunk/src/moosique.net/moosique/jamendo.owl trunk/src/moosique.net/moosique/learnTest.php trunk/src/moosique.net/moosique/main.wsdl Added Paths: ----------- trunk/src/moosique.net/js/debug.js trunk/src/moosique.net/js/moosique.js trunk/src/moosique.net/js/mootools-1.2.3-core-nc.js trunk/src/moosique.net/js/start.js trunk/src/moosique.net/moosique/helpers/ trunk/src/moosique.net/moosique/helpers/getAllTags.php trunk/src/moosique.net/moosique/helpers/tagsToOwl.php trunk/src/moosique.net/moosique/jamendo_complete.owl trunk/src/moosique.net/moosique/moosique.conf trunk/src/moosique.net/moosique/newOwl.owl trunk/src/moosique.net/moosique/rocksubset.owl Removed Paths: ------------- trunk/src/moosique.net/js/interface.js trunk/src/moosique.net/js/player.js trunk/src/moosique.net/js/request.js trunk/src/moosique.net/moosique/getAllTags.php trunk/src/moosique.net/moosique/stonerTest.owl trunk/src/moosique.net/moosique/tagsToOwl.php Modified: trunk/src/moosique.net/css/style.css =================================================================== --- trunk/src/moosique.net/css/style.css 2009-09-12 09:16:36 UTC (rev 1843) +++ trunk/src/moosique.net/css/style.css 2009-09-13 15:41:13 UTC (rev 1844) @@ -32,9 +32,7 @@ -webkit-border-bottom-left-radius: 10px; -webkit-border-bottom-right-radius: 10px; } /* button-click-feeling for links, by offsetting top position */ -#prev:active, #next:active, -#stop:active, #mute:active -#playPause:active, { position: relative; top: 2px; } +#playerControls a:active { position: relative; top: 2px; } #playlist .delete:active, #playlist .moveUp:active, #playlist .moveDown:active { top: 6px; } Modified: trunk/src/moosique.net/index.php =================================================================== --- trunk/src/moosique.net/index.php 2009-09-12 09:16:36 UTC (rev 1843) +++ trunk/src/moosique.net/index.php 2009-09-13 15:41:13 UTC (rev 1844) @@ -25,11 +25,11 @@ <ol> <li> <select name="searchType" id="searchType"> - <?php /* <option value="allSearch">Everything</option> */ ?> + <option value="allSearch">All</option> <option value="artistSearch">Artist</option> <option value="tagSearch">Tag</option> <option value="songSearch">Song</option> - <?php /* <option value="lastfm">Last.fm-User</option> */ ?> + <?php /* TODO <option value="lastfm">Last.fm-User</option> */ ?> </select> <input id="searchValue" name="searchValue" type="text" /> <input id="searchSubmit" name="searchSubmit" value="Search" title="Search" type="submit" /> @@ -58,17 +58,39 @@ <h2>Welcome to moosique.net!</h2> <p> Want to listen to some good free music? Just enter an artist or song - name or search for music using tags <!-- or enter your last.fm username --> and let the moogic + name or search for music using tags and let the moogic happen. By listening to songs you like, the system will automatically learn about your musical taste and generate recommendations. You can find them in the tab »Recommendations«. </p> <p> - You can find information about the song currently playing in the tab »Information« and view - your Playlist and control the Player in the Tab »Player«. + You can find information about the song currently playing in the tab »Info« and edit and view + your current Playlist in the »Playlist«-Tab. </p> <p> Now get started and add something to the Playlist! </p> + + <pre> + <?php + + // recently Heard == posExamples testing + + if (!empty($_COOKIE['moosique'])) { + $recent = json_decode(stripslashes($_COOKIE['moosique']))->recentlyListened; + $posExamples = array(); + foreach($recent as $link) { + preg_match_all('#<a\s*(?:rel=[\'"]([^\'"]+)[\'"])?.*?>((?:(?!</a>).)*)</a>#i', $link, $record); + array_push($posExamples, $record[1][0]); + } + } + + print_r(array_unique($posExamples)); + + ?> + + + </pre> + </div> <div id="results"> @@ -81,11 +103,6 @@ <ol id="recommended"> <li></li> </ol> - <h2>Recently Listened to</h2> - <p>These are the songs you recently listened to. Click on a song to re-enqueue it to your current playlist. (NOT WORKING YET!)</p> - <ol id="recently"> - <li></li> - </ol> </div> <div id="information"> @@ -103,14 +120,19 @@ </div> <div id="player"> - <h3>Playlist</h3> + <h2>Playlist</h2> <p> You can delete entries from the playlist by clicking the small x on the left and change their order by clicking on the small up- and down-arrows.<br /> </p> <ol id="playlist"> <li></li> </ol> - + + <h2>Recently Listened to</h2> + <p>These are the songs you recently listened to. Click on a song to re-enqueue it to your current playlist.</p> + <ol id="recently"> + <li></li> + </ol> </div> <div id="help"> @@ -124,10 +146,22 @@ <a href="http://mediaplayer.yahoo.com/">Yahoo! Media Player</a> | <a href="http://aksw.org/Projects/DLLearner">DL-Learner</a> </div> - </div> <!-- end container --> +<?php + include('moosique/classes/Config.php'); + $c = new Config(); + if ($c->getConfig('debug') == 1) /* debugging active */ { +?> <script type="text/javascript" src="http://mediaplayer.yahoo.com/js"></script> +<script type="text/javascript" src="js/mootools-1.2.3-core-nc.js"></script> +<script type="text/javascript" src="js/moosique.js"></script> +<script type="text/javascript" src="js/debug.js"></script> +<script type="text/javascript" src="js/start.js"></script> + +<?php } else /* compress for production and dont include debugger */ { ?> +<script type="text/javascript" src="http://mediaplayer.yahoo.com/js"></script> <script type="text/javascript" src="js/"></script> +<?php } ?> </body> </html> \ No newline at end of file Added: trunk/src/moosique.net/js/debug.js =================================================================== --- trunk/src/moosique.net/js/debug.js (rev 0) +++ trunk/src/moosique.net/js/debug.js 2009-09-13 15:41:13 UTC (rev 1844) @@ -0,0 +1,6 @@ +/* activate debugging */ +if (typeof(console) !== 'undefined') { + debug = console; + debug.log("Firebug-Console for moosique.net activated."); +} + Modified: trunk/src/moosique.net/js/index.php =================================================================== --- trunk/src/moosique.net/js/index.php 2009-09-12 09:16:36 UTC (rev 1843) +++ trunk/src/moosique.net/js/index.php 2009-09-13 15:41:13 UTC (rev 1844) @@ -18,13 +18,9 @@ /* the javascript-files to include and compress */ include('mootools-1.2.3-core-yc.js'); -include('player.js'); -include('interface.js'); -include('request.js'); - - -// Since we include the IE6-Fixes with a CC, we don't -// add and compress them here +include('moosique.js'); +// include('debug.js'); /* no debugging for production */ +include('start.js'); ob_end_flush(); ?> \ No newline at end of file Deleted: trunk/src/moosique.net/js/interface.js =================================================================== --- trunk/src/moosique.net/js/interface.js 2009-09-12 09:16:36 UTC (rev 1843) +++ trunk/src/moosique.net/js/interface.js 2009-09-13 15:41:13 UTC (rev 1844) @@ -1,44 +0,0 @@ -window.addEvent('domready', function() { - -// switching between search, recommendation and information -$$('#mainMenu a').each(function(a) { - a.addEvent('click', function(e) { - e.stop(); // dont follow link - showTab(a.get('class').toString()); - }); -}); - -// update recently listened song if a cookie is set -// update the #recently ol -var rlc = Cookie.read('recentlyListened'); -var rl = JSON.decode(rlc); - -if (rl) { - if (rl.length > 0) { - var count = rl.length; - var recentlyHTML = ''; - for (var i = 0; i < count; i++ ) { - recentlyHTML += '<li>'; - recentlyHTML += rl[i] + '<br />'; - recentlyHTML += '</li>'; - } - document.id('recently').set('html', recentlyHTML); - } -} - - -}); - -/** - * - * @param {String} tabID ID of the Tab to show - */ -function showTab(tabID) { - $$('#mainMenu li').removeClass('active'); - $$('#mainMenu a.' + tabID).getParent().toggleClass('active'); - document.id('content').getChildren().setStyle('display', 'none'); - document.id(tabID).setStyle('display', 'block'); - -} - - Added: trunk/src/moosique.net/js/moosique.js =================================================================== --- trunk/src/moosique.net/js/moosique.js (rev 0) +++ trunk/src/moosique.net/js/moosique.js 2009-09-13 15:41:13 UTC (rev 1844) @@ -0,0 +1,570 @@ +// initialize an empty debugger, will be activated if firefox/firebug enabled +var debug = {}; +debug.log = function(msg) { + return false; +}; + +/** + * moosique-Player-Class + * + * + * TODO Split out functions and comment it + */ +var Moosique = new Class({ Implements: Options, + + // Some Default Options + options: { + messageFadeTime: 5000, // Time until a Status message fades out + timeToScrobble: 0.5, // factor for calculating max time a user has to listen to a track until its scrobbled + minSearchLength: 3 // minimum number of chars for a search value (tag, artist, song) + }, + + /** + * Initializes the Object and sets some default options + * + * @param {Object} options + */ + initialize: function(options) { + this.setOptions(options); + this.initVars(); + this.applyYahooMediaPlayerConfig(); + this.initInterface(); + this.updateRecently(); + this.activateSearch(); + /* + this.initPlaylist(); + */ + }, + + + initVars: function() { + this.main = document.id('content'); + this.menu = document.id('mainMenu'); + this.playPause = document.id('playPause'); + this.prev = document.id('prev'); + this.next = document.id('next'); + this.stop = document.id('stop'); + this.mute = document.id('mute'); + this.status = document.id('status'); + this.playlist = document.id('playlist'); + this.recently = document.id('recently'); + this.nowPlayingInfo = $$('#playing .info'); + this.nowPlayingTrack = $$('#playing .track'); + this.nowPlayingTime = $$('#playing .time'); + this.searchForm = document.id('searchForm'); + this.searchSubmit = document.id('searchSubmit'); + this.searchValue = document.id('searchValue'); + this.searchType = document.id('searchType'); + this.results = document.id('results'); + this.loading = document.id('loadingImg'); + this.welcome = document.id('welcome'); + this.help = document.id('help'); + + }, + + + applyYahooMediaPlayerConfig: function() { + var that = this; + + var playerConfig = function() { + // display ready-status message + that.displayStatusMessage('Player ready.'); + + /** + * progress: Change the track position and duration displayed every time, as usual in players + * + * every time the song is played for at least half it's + * playtime, we assume that the song is liked, so we add it + * to the list we create the recommendations from + * (much like last.fm scrobbling) and learn from the heard songs + * BIG TODO + */ + var progress = function() { + that.nowPlayingTime.set('text', + that.secondsToMinutesAndSeconds(YAHOO.MediaPlayer.getTrackPosition()) + ' / ' + + that.secondsToMinutesAndSeconds(YAHOO.MediaPlayer.getTrackDuration()) ); + + if (Math.ceil(YAHOO.MediaPlayer.getTrackPosition()) == + Math.ceil(YAHOO.MediaPlayer.getTrackDuration() * that.options.timeToScrobble)) { + /* This is where the main magic happens + + After havin listened to a song for half its time we save this song to the positive examples list + and then send a request to the dllearner who then calulates new recommendations. + + first, we update the cookie with the last played song and then + */ + var lastListenedListItem = YAHOO.MediaPlayer.getMetaData().anchor.getParent().clone(); + var lastListened = lastListenedListItem.getFirst(); + + // remove the buttons and ymp-classes from the child-link + lastListenedListItem.getChildren('.moveUp').destroy(); + lastListenedListItem.getChildren('.moveDown').destroy(); + lastListenedListItem.getChildren('.delete').destroy(); + lastListened.erase('class'); + lastListened.addClass('htrack'); + lastListened.getChildren('em').destroy(); // yahoo buttons + + // this is the final link item we save in the cookie + var last = lastListenedListItem.get('html'); + + // get the current cookie + var recentlyListenedCookie = Cookie.read('moosique'); + var recentlyListened = []; + + if (recentlyListenedCookie) { // does the cookie exist? + recentlyListened = JSON.decode(recentlyListenedCookie).recentlyListened; + + if (recentlyListened) { // if the cookie is not totally empty + // update recently listened and write the cookie, limit to 10 entries, + // due to cookie-max-size of 4KB + // saves the whole link-element with rel to jamendo-album-id and mp3-link + if (recentlyListened.length >= 10) { + recentlyListened.shift(); // remove first item and shift + } + } + } + // add the last played to the array + recentlyListened.push(last); + + // update the cookie + recentlyListenedObject = { 'recentlyListened' : recentlyListened }; + recentlyListenedCookie = Cookie.write( /* save for one year */ + 'moosique', JSON.encode(recentlyListenedObject), { duration: 365 } + ); + + // update the recently played list + that.updateRecently(); + + // TODO + // send ajax request and save the scrobbled song + // and retrieve and update the recommendations + var getRecommendations = new Request({ + method: 'get', + url: 'moosique/index.php', + onSuccess: function(responseText, responseXML) { + mooPlayer.displayStatusMessage('Added this song to your recently listened to songs.'); + } + }).send(YAHOO.MediaPlayer.getMetaData().title); + + + } + }; + + /** + * playlistUpdate: every time the playlist is updated + * we add the events for delete/up/down-buttons to each + * playlistitem and update the status on what happened + */ + var playlistUpdate = function() { + // delete button + $$('#playlist .delete').each(function(del) { + del.removeEvents(); + del.addEvent('click', function(e) { + e.stop(); + this.getParent().destroy(); // deletes the li-element + // and refresh the playlist if clicked + YAHOO.MediaPlayer.addTracks(that.playlist, '', true); + }); + }); + + // up-button + $$('#playlist .moveUp').each(function(up) { + up.removeEvents(); + up.addEvent('click', function(e) { + e.stop(); // don't folow link + var li = up.getParent(); + var before = li.getPrevious(); + if (before) { // it's not the first one + li.inject(before, 'before'); + // and refresh the playlist if clicked + YAHOO.MediaPlayer.addTracks(that.playlist, '', true); + } + }); + }); + + // down button + $$('#playlist .moveDown').each(function(down) { + down.removeEvents(); + down.addEvent('click', function(e) { + e.stop(); // don't folow link + var li = down.getParent(); + var after = li.getNext(); + if (after) { // it's not the first one + li.inject(after, 'after'); + // and refresh the playlist if clicked + YAHOO.MediaPlayer.addTracks(that.playlist, '', true); + } + }); + }); + + that.displayStatusMessage('Playlist updated.'); + // TODO save to current-playlist cookie? + + }; + + /** + * trackPause: we change the Pause-Button to a Play-Button + * and Update the status on #now + */ + var trackPause = function() { + that.nowPlayingInfo.set('text', 'Player paused.'); + that.playPause.setStyle('background-position', '0px 0px'); + }; + + /** + * trackStart: we change the Play-Button to a Pause-Button + * and Update the status on #now and display whats playing + */ + var trackStart = function() { + that.nowPlayingInfo.set('text', 'Currently playing:'); + that.nowPlayingTrack.set('text', YAHOO.MediaPlayer.getMetaData().title); + that.playPause.setStyle('background-position', '0px -40px'); + }; + + /** + * trackComplete: we change the Pause-Button to a Play-Button + */ + var trackComplete = function() { + that.playPause.setStyle('background-position', '0px 0px'); + }; + + // add the configuration to the events by subscribing + YAHOO.MediaPlayer.onProgress.subscribe(progress); + YAHOO.MediaPlayer.onPlaylistUpdate.subscribe(playlistUpdate); + YAHOO.MediaPlayer.onTrackPause.subscribe(trackPause); + YAHOO.MediaPlayer.onTrackStart.subscribe(trackStart); + YAHOO.MediaPlayer.onTrackComplete.subscribe(trackComplete); + }; + + // Initialize YMP if ready and apply the config + YAHOO.MediaPlayer.onAPIReady.subscribe(playerConfig); + + }, + + + + + + updateRecently: function() { + var that = this; + + // Read the Cookie and Update the recently-listened-to list + if (Cookie.read('moosique')) { + var recentSongs = JSON.decode(Cookie.read('moosique')).recentlyListened; + if (recentSongs) { + var count = recentSongs.length; + var recentlyHTML = ''; + for (var i = count-1; i >= 0; i-- ) { + recentlyHTML += '<li>'; + recentlyHTML += recentSongs[i]; + recentlyHTML += '</li>'; + } + that.recently.set('html', recentlyHTML); + that.makeAddable(that.recently.getElements('a')); + } + } + }, + + + + /** + * adding functionality for the player-GUI and the play, next etc. buttons + */ + addEventsToButtons: function() { + var that = this; + + // the previous/next-Track Buttons + that.prev.addEvent('click', function() { YAHOO.MediaPlayer.previous(); }); + that.next.addEvent('click', function() { YAHOO.MediaPlayer.next(); }); + + // the Play-Pause Button + that.playPause.addEvent('click', function() { + // STOPPED: 0, PAUSED: 1, PLAYING: 2,BUFFERING: 5, ENDED: 7 + if (YAHOO.MediaPlayer.getPlayerState() == 0 || + YAHOO.MediaPlayer.getPlayerState() == 1 || + YAHOO.MediaPlayer.getPlayerState() == 7) { + YAHOO.MediaPlayer.play(); + } else { + YAHOO.MediaPlayer.pause(); + } + }); + + // the Stop-Playing Button + that.stop.addEvent('click', function() { + that.playPause.setStyle('background-position', '0px 0px'); + that.nowPlayingInfo.set('text', 'Player stopped.'); + that.nowPlayingTrack.set('text', '...'); + that.nowPlayingTime.set('text', '0:00 / 0:00'); + YAHOO.MediaPlayer.stop(); + // and reload the playlist + that.refreshPlaylist(); + }); + + // Mute-Toggle-Switch + that.mute.addEvent('click', function() { + if (YAHOO.MediaPlayer.getVolume() > 0) { + YAHOO.MediaPlayer.setVolume(0); + that.mute.setStyle('background-position', '0px -240px'); + that.displayStatusMessage('Player muted.'); + } else { + YAHOO.MediaPlayer.setVolume(1); + that.mute.setStyle('background-position', '0px -280px'); + that.displayStatusMessage('Player unmuted.'); + } + }); + }, + + /** + * Playlist related functions + */ + initPlaylist: function() { + var that = this; + + $$('#recommended a').each(function(a) { + a.addEvent('click', function(e) { + // prevent link following + e.stop(); + a.set('class', 'htrack'); + + var liItem = a.getParent(); + // move to the playlist + liItem.inject(that.playlist); + that.refreshPlaylist(); + }); + }); + + that.refreshPlaylist(); + }, + + /** + * Refreshes the playlist by emptying the current one + * and reReading the #playlist-container + */ + refreshPlaylist: function() { + var that = this; + YAHOO.MediaPlayer.addTracks(that.playlist, '', true); + that.displayStatusMessage('Playlist updated.'); + }, + + + /** + * Displays a status message + * + * @param {Object} message + */ + displayStatusMessage: function(message) { + // Update Status and fade out + var that = this; + that.status.set({ + 'text': message, + 'tween': {duration: that.options.messageFadeTime} + }); + that.status.tween('opacity', [1, 0]); + }, + + + /** + * initializes interface-functions, clicking buttons and tabs... + */ + initInterface: function() { + var that = this; + + that.menu.getElements('a').each(function(tab) { + tab.addEvent('click', function(e) { + e.stop(); // dont follow link + that.showTab(tab.get('class').toString()); + }); + }); + + // make buttons functional + this.addEventsToButtons(); + + }, + + + /** + * adds events to the search form for retrieving results etc. + */ + activateSearch: function() { + var that = this; + + that.searchForm.addEvent('submit', function(e) { + e.stop(); // prevent form submitting the non-ajax way + this.set('send', { + + onRequest: function() { + that.searchSubmit.set('disabled', 'disabled'); + that.searchSubmit.setStyle('display', 'none'); + // show homescreen for resultdisplaying + that.showTab('home'); + + that.loading.setStyle('display', 'inline'); + that.results.set('html', '<h2>Searching...</h2><p>Please be patient, this may take a minute or two...</p>'); + }, + + onFailure: function() { + that.results.set('html', '<h2>Unable to process your search. Try again.</h2>'); + }, + + onSuccess: function(response) { + that.searchSubmit.erase('disabled'); // reenable submitbutton + that.searchSubmit.setStyle('display', 'inline'); + that.loading.setStyle('display', 'none'); + + // if the welcome-text ist present, cut & paste it to help + if (that.welcome) { + if (that.welcome.get('html').length > 100) { + that.help.set('html', that.welcome.get('html')); + that.welcome.destroy(); + } + } + // display results + that.results.set('html', response); + // addEvents to result-links + that.makeAddable($$('a.addToPlaylist')); + } + }); + + // only send form if value is at least 3 chars long + if (that.searchValue.get('value').length > 2) { + this.send(); + } + }); + + + + + + + }, + + + + + + + + /** + * For Recommendations and Search-Results + * This function searches for all links with the class addToPlaylist + * and makes them addable to the playlist, which means clicking on + * them adds them to the playlist and makes them playable. this + * is working for links to whole albums and single tracks also + */ + makeAddable: function (links) { + var that = this; + links.each(function(a) { + a.addEvent('click', function(e) { + e.stop(); // dont follow link + + // remove the class from preventing adding again, if existing + a.removeClass('addToPlaylist'); + // determine if the link is to an album or a single track + var href = a.get('href'); + var rel = a.get('rel'); + + var type = ''; + if (href.match(/jamendo\.com\/get\/track\/id\/album\//gi)) { type = 'albumPlaylist'; } + if (href.match(/jamendo\.com\/get\/track\/id\/track\//gi)) { type = 'trackPlaylist'; } + if (href.match(/\.mp3/)) { type = 'mp3File'; } + + // if the addable item is a playlist, we have to get the playlistitems + if (type == 'albumPlaylist' || type == 'trackPlaylist') { + var getPlaylist = new Request({method: 'get', url: 'moosique/index.php', + onSuccess: function(response) { + that.insertIntoPlaylist(response); + } + }).send('get=' + type + '&playlist=' + href + '&rel=' + rel); + } + if (type == 'mp3File') { + var itemHTML = '<li>' + a.getParent().get('html') + '</li>'; + that.insertIntoPlaylist(itemHTML); + } + }); + }); + }, + + + + + + + + + /** + * appends prepared html code to the playlist, empties the playlist if the first + * element is an empty li and refreshed the playlist and shows the playlist tab + */ + insertIntoPlaylist: function(newItems) { + var that = this; + + // if the first li item of the playlist is empty, kill it + if (that.playlist.getFirst()) { + if (that.playlist.getFirst().get('text') == '') { + that.playlist.empty(); + } + } + // append new html to the playlist + var oldPlaylist = that.playlist.get('html'); + that.playlist.set('html', oldPlaylist + newItems); + + // add the delete, moveUp, moveDown Buttons + that.playlist.getChildren().each(function(li) { + var children = li.getChildren(); + + // only add the buttons if they are not there yet + if (children.length == 1) { + var track = li.getFirst(); + var upButton = new Element('a', { 'href': '#', 'class': 'moveUp', 'title': 'Move up', 'html': '↑' }); + var downButton = new Element('a', { 'href': '#', 'class': 'moveDown', 'title': 'Move down', 'html': '↓' }); + var delButton = new Element('a', { 'href': '#', 'class': 'delete', 'title': 'Delete from Playlist', 'html': 'X' }); + + upButton.inject(track, 'after'); + downButton.inject(upButton, 'after'); + delButton.inject(downButton, 'after'); + } + }); + + // refresh the playlist and show the player-tab + that.refreshPlaylist(); + that.showTab('player'); + }, + + + + + + /** + * + * @param {String} tabID ID of the Tab to show + */ + showTab: function(tabID) { + var that = this; + that.menu.getElements('li').removeClass('active'); + that.menu.getElements('a.' + tabID).getParent().toggleClass('active'); + that.main.getChildren().setStyle('display', 'none'); + document.id(tabID).setStyle('display', 'block'); + + }, + + + + /** + * Converts seconds into a string formatted minutes:seconds + * with leading zeros for seconds + * + * @param {Float} seconds + * @return {String} minsec minutes:seconds + */ + secondsToMinutesAndSeconds: function(seconds) { + var min = Math.floor(seconds / 60); + var sec = Math.floor(seconds % 60); + if (sec < 10) { + sec = '0' + sec; + } + var minsec = min + ":" + sec; + return minsec; + } + + +}); \ No newline at end of file Added: trunk/src/moosique.net/js/mootools-1.2.3-core-nc.js =================================================================== --- trunk/src/moosique.net/js/mootools-1.2.3-core-nc.js (rev 0) +++ trunk/src/moosique.net/js/mootools-1.2.3-core-nc.js 2009-09-13 15:41:13 UTC (rev 1844) @@ -0,0 +1,4036 @@ +/* +Script: Core.js + MooTools - My Object Oriented JavaScript Tools. + +License: + MIT-style license. + +Copyright: + Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/). + +Code & Documentation: + [The MooTools production team](http://mootools.net/developers/). + +Inspiration: + - Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php) + - Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php) +*/ + +var MooTools = { + 'version': '1.2.3', + 'build': '4980aa0fb74d2f6eb80bcd9f5b8e1fd6fbb8f607' +}; + +var Native = function(options){ + options = options || {}; + var name = options.name; + var legacy = options.legacy; + var protect = options.protect; + var methods = options.implement; + var generics = options.generics; + var initialize = options.initialize; + var afterImplement = options.afterImplement || function(){}; + var object = initialize || legacy; + generics = generics !== false; + + object.constructor = Native; + object.$family = {name: 'native'}; + if (legacy && initialize) object.prototype = legacy.prototype; + object.prototype.constructor = object; + + if (name){ + var family = name.toLowerCase(); + object.prototype.$family = {name: family}; + Native.typize(object, family); + } + + var add = function(obj, name, method, force){ + if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method; + if (generics) Native.genericize(obj, name, protect); + afterImplement.call(obj, name, method); + return obj; + }; + + object.alias = function(a1, a2, a3){ + if (typeof a1 == 'string'){ + var pa1 = this.prototype[a1]; + if ((a1 = pa1)) return add(this, a2, a1, a3); + } + for (var a in a1) this.alias(a, a1[a], a2); + return this; + }; + + object.implement = function(a1, a2, a3){ + if (typeof a1 == 'string') return add(this, a1, a2, a3); + for (var p in a1) add(this, p, a1[p], a2); + return this; + }; + + if (methods) object.implement(methods); + + return object; +}; + +Native.genericize = function(object, property, check){ + if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){ + var args = Array.prototype.slice.call(arguments); + return object.prototype[property].apply(args.shift(), args); + }; +}; + +Native.implement = function(objects, properties){ + for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties); +}; + +Native.typize = function(object, family){ + if (!object.type) object.type = function(item){ + return ($type(item) === family); + }; +}; + +(function(){ + var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String}; + for (var n in natives) new Native({name: n, initialize: natives[n], protect: true}); + + var types = {'boolean': Boolean, 'native': Native, 'object': Object}; + for (var t in types) Native.typize(types[t], t); + + var generics = { + 'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"], + 'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"] + }; + for (var g in generics){ + for (var i = generics[g].length; i--;) Native.genericize(natives[g], generics[g][i], true); + } +})(); + +var Hash = new Native({ + + name: 'Hash', + + initialize: function(object){ + if ($type(object) == 'hash') object = $unlink(object.getClean()); + for (var key in object) this[key] = object[key]; + return this; + } + +}); + +Hash.implement({ + + forEach: function(fn, bind){ + for (var key in this){ + if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this); + } + }, + + getClean: function(){ + var clean = {}; + for (var key in this){ + if (this.hasOwnProperty(key)) clean[key] = this[key]; + } + return clean; + }, + + getLength: function(){ + var length = 0; + for (var key in this){ + if (this.hasOwnProperty(key)) length++; + } + return length; + } + +}); + +Hash.alias('forEach', 'each'); + +Array.implement({ + + forEach: function(fn, bind){ + for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this); + } + +}); + +Array.alias('forEach', 'each'); + +function $A(iterable){ + if (iterable.item){ + var l = iterable.length, array = new Array(l); + while (l--) array[l] = iterable[l]; + return array; + } + return Array.prototype.slice.call(iterable); +}; + +function $arguments(i){ + return function(){ + return arguments[i]; + }; +}; + +function $chk(obj){ + return !!(obj || obj === 0); +}; + +function $clear(timer){ + clearTimeout(timer); + clearInterval(timer); + return null; +}; + +function $defined(obj){ + return (obj != undefined); +}; + +function $each(iterable, fn, bind){ + var type = $type(iterable); + ((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind); +}; + +function $empty(){}; + +function $extend(original, extended){ + for (var key in (extended || {})) original[key] = extended[key]; + return original; +}; + +function $H(object){ + return new Hash(object); +}; + +function $lambda(value){ + return ($type(value) == 'function') ? value : function(){ + return value; + }; +}; + +function $merge(){ + var args = Array.slice(arguments); + args.unshift({}); + return $mixin.apply(null, args); +}; + +function $mixin(mix){ + for (var i = 1, l = arguments.length; i < l; i++){ + var object = arguments[i]; + if ($type(object) != 'object') continue; + for (var key in object){ + var op = object[key], mp = mix[key]; + mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $mixin(mp, op) : $unlink(op); + } + } + return mix; +}; + +function $pick(){ + for (var i = 0, l = arguments.length; i < l; i++){ + if (arguments[i] != undefined) return arguments[i]; + } + return null; +}; + +function $random(min, max){ + return Math.floor(Math.random() * (max - min + 1) + min); +}; + +function $splat(obj){ + var type = $type(obj); + return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : []; +}; + +var $time = Date.now || function(){ + return +new Date; +}; + +function $try(){ + for (var i = 0, l = arguments.length; i < l; i++){ + try { + return arguments[i](); + } catch(e){} + } + return null; +}; + +function $type(obj){ + if (obj == undefined) return false; + if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name; + if (obj.nodeName){ + switch (obj.nodeType){ + case 1: return 'element'; + case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace'; + } + } else if (typeof obj.length == 'number'){ + if (obj.callee) return 'arguments'; + else if (obj.item) return 'collection'; + } + return typeof obj; +}; + +function $unlink(object){ + var unlinked; + switch ($type(object)){ + case 'object': + unlinked = {}; + for (var p in object) unlinked[p] = $unlink(object[p]); + break; + case 'hash': + unlinked = new Hash(object); + break; + case 'array': + unlinked = []; + for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]); + break; + default: return object; + } + return unlinked; +}; + + +/* +Script: Browser.js + The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash. + +License: + MIT-style license. +*/ + +var Browser = $merge({ + + Engine: {name: 'unknown', version: 0}, + + Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()}, + + Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)}, + + Plugins: {}, + + Engines: { + + presto: function(){ + return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925)); + }, + + trident: function(){ + return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? 5 : 4); + }, + + webkit: function(){ + return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419); + }, + + gecko: function(){ + return (document.getBoxObjectFor == undefined) ? false : ((document.getElementsByClassName) ? 19 : 18); + } + + } + +}, Browser || {}); + +Browser.Platform[Browser.Platform.name] = true; + +Browser.detect = function(){ + + for (var engine in this.Engines){ + var version = this.Engines[engine](); + if (version){ + this.Engine = {name: engine, version: version}; + this.Engine[engine] = this.Engine[engine + version] = true; + break; + } + } + + return {name: engine, version: version}; + +}; + +Browser.detect(); + +Browser.Request = function(){ + return $try(function(){ + return new XMLHttpRequest(); + }, function(){ + return new ActiveXObject('MSXML2.XMLHTTP'); + }); +}; + +Browser.Features.xhr = !!(Browser.Request()); + +Browser.Plugins.Flash = (function(){ + var version = ($try(function(){ + return navigator.plugins['Shockwave Flash'].description; + }, function(){ + return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version'); + }) || '0 r0').match(/\d+/g); + return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0}; +})(); + +function $exec(text){ + if (!text) return text; + if (window.execScript){ + window.execScript(text); + } else { + var script = document.createElement('script'); + script.setAttribute('type', 'text/javascript'); + script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text; + document.head.appendChild(script); + document.head.removeChild(script); + } + return text; +}; + +Native.UID = 1; + +var $uid = (Browser.Engine.trident) ? function(item){ + return (item.uid || (item.uid = [Native.UID++]))[0]; +} : function(item){ + return item.uid || (item.uid = Native.UID++); +}; + +var Window = new Native({ + + name: 'Window', + + legacy: (Browser.Engine.trident) ? null: window.Window, + + initialize: function(win){ + $uid(win); + if (!win.Element){ + win.Element = $empty; + if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2 + win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {}; + } + win.document.window = win; + return $extend(win, Window.Prototype); + }, + + afterImplement: function(property, value){ + window[property] = Window.Prototype[property] = value; + } + +}); + +Window.Prototype = {$family: {name: 'window'}}; + +new Window(window); + +var Document = new Native({ + + name: 'Document', + + legacy: (Browser.Engine.trident) ? null: window.Document, + + initialize: function(doc){ + $uid(doc); + doc.head = doc.getElementsByTagName('head')[0]; + doc.html = doc.getElementsByTagName('html')[0]; + if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){ + doc.execCommand("BackgroundImageCache", false, true); + }); + if (Browser.Engine.trident) doc.window.attachEvent('onunload', function() { + doc.window.detachEvent('onunload', arguments.callee); + doc.head = doc.html = doc.window = null; + }); + return $extend(doc, Document.Prototype); + }, + + afterImplement: function(property, value){ + document[property] = Document.Prototype[property] = value; + } + +}); + +Document.Prototype = {$family: {name: 'document'}}; + +new Document(document); + + +/* +Script: Array.js + Contains Array Prototypes like each, contains, and erase. + +License: + MIT-style license. +*/ + +Array.implement({ + + every: function(fn, bind){ + for (var i = 0, l = this.length; i < l; i++){ + if (!fn.call(bind, this[i], i, this)) return false; + } + return true; + }, + + filter: function(fn, bind){ + var results = []; + for (var i = 0, l = this.length; i < l; i++){ + if (fn.call(bind, this[i], i, this)) results.push(this[i]); + } + return results; + }, + + clean: function() { + return this.filter($defined); + }, + + indexOf: function(item, from){ + var len = this.length; + for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){ + if (this[i] === item) return i; + } + return -1; + }, + + map: function(fn, bind){ + var results = []; + for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this); + return results; + }, + + some: function(fn, bind){ + for (var i = 0, l = this.length; i < l; i++){ + if (fn.call(bind, this[i], i, this)) return true; + } + return false; + }, + + associate: function(keys){ + var obj = {}, length = Math.min(this.length, keys.length); + for (var i = 0; i < length; i++) obj[keys[i]] = this[i]; + return obj; + }, + + link: function(object){ + var result = {}; + for (var i = 0, l = this.length; i < l; i++){ + for (var key in object){ + if (object[key](this[i])){ + result[key] = this[i]; + delete object[key]; + break; + } + } + } + return result; + }, + + contains: function(item, from){ + return this.indexOf(item, from) != -1; + }, + + extend: function(array){ + for (var i = 0, j = array.length; i < j; i++) this.push(array[i]); + return this; + }, + + getLast: function(){ + return (this.length) ? this[this.length - 1] : null; + }, + + getRandom: function(){ + return (this.length) ? this[$random(0, this.length - 1)] : null; + }, + + include: function(item){ + if (!this.contains(item)) this.push(item); + return this; + }, + + combine: function(array){ + for (var i = 0, l = array.length; i < l; i++) this.include(array[i]); + return this; + }, + + erase: function(item){ + for (var i = this.length; i--; i){ + if (this[i] === item) this.splice(i, 1); + } + return this; + }, + + empty: function(){ + this.length = 0; + return this; + }, + + flatten: function(){ + var array = []; + for (var i = 0, l = this.length; i < l; i++){ + var type = $type(this[i]); + if (!type) continue; + array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]); + } + return array; + }, + + hexToRgb: function(array){ + if (this.length != 3) return null; + var rgb = this.map(function(value){ + if (value.length == 1) value += value; + return value.toInt(16); + }); + return (array) ? rgb : 'rgb(' + rgb + ')'; + }, + + rgbToHex: function(array){ + if (this.length < 3) return null; + if (this.length == 4 && this[3] == 0 && !array) return 'transparent'; + var hex = []; + for (var i = 0; i < 3; i++){ + var bit = (this[i] - 0).toString(16); + hex.push((bit.length == 1) ? '0' + bit : bit); + } + return (array) ? hex : '#' + hex.join(''); + } + +}); + + +/* +Script: Function.js + Contains Function Prototypes like create, bind, pass, and delay. + +License: + MIT-style license. +*/ + +Function.implement({ + + extend: function(properties){ + for (var property in properties) this[property] = properties[property]; + return this; + }, + + create: function(options){ + var self = this; + options = options || {}; + return function(event){ + var args = options.arguments; + args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0); + if (options.event) args = [event || window.event].extend(args); + var returns = function(){ + return self.apply(options.bind || null, args); + }; + if (options.delay) return setTimeout(returns, options.delay); + if (options.periodical) return setInterval(returns, options.periodical); + if (options.attempt) return $try(returns); + return returns(); + }; + }, + + run: function(args, bind){ + return this.apply(bind, $splat(args)); + }, + + pass: function(args, bind){ + return this.create({bind: bind, arguments: args}); + }, + + bind: function(bind, args){ + return this.create({bind: bind, arguments: args}); + }, + + bindWithEvent: function(bind, args){ + return this.create({bind: bind, arguments: args, event: true}); + }, + + attempt: function(args, bind){ + return this.create({bind: bind, arguments: args, attempt: true})(); + }, + + delay: function(delay, bind, args){ + return this.create({bind: bind, arguments: args, delay: delay})(); + }, + + periodical: function(periodical, bind, args){ + return this.create({bind: bind, arguments: args, periodical: periodical})(); + } + +}); + + +/* +Script: Number.js + Contains Number Prototypes like limit, round, times, and ceil. + +License: + MIT-style license. +*/ + +Number.implement({ + + limit: function(min, max){ + return Math.min(max, Math.max(min, this)); + }, + + round: function(precision){ + precision = Math.pow(10, precision || 0); + return Math.round(this * precision) / precision; + }, + + times: function(fn, bind){ + for (var i = 0; i < this; i++) fn.call(bind, i, this); + }, + + toFloat: function(){ + return parseFloat(this); + }, + + toInt: function(base){ + return parseInt(this, base || 10); + } + +}); + +Number.alias('times', 'each'); + +(function(math){ + var methods = {}; + math.each(function(name){ + if (!Number[name]) methods[name] = function(){ + return Math[name].apply(null, [this].concat($A(arguments))); + }; + }); + Number.implement(methods); +})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']); + + +/* +Script: String.js + Contains String Prototypes like camelCase, capitalize, test, and toInt. + +License: + MIT-style license. +*/ + +String.implement({ + + test: function(regex, params){ + return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this); + }, + + contains: function(string, separator){ + return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1; + }, + + trim: function(){ + return this.replace(/^\s+|\s+$/g, ''); + }, + + clean: function(){ + return this.replace(/\s+/g, ' ').trim(); + }, + + camelCase: function(){ + return this.replace(/-\D/g, function(match){ + return match.charAt(1).toUpperCase(); + }); + }, + + hyphenate: function(){ + return this.replace(/[A-Z]/g, function(match){ + return ('-' + match.charAt(0).toLowerCase()); + }); + }, + + capitalize: function(){ + return this.replace(/\b[a-z]/g, function(match){ + return match.toUpperCase(); + }); + }, + + escapeRegExp: function(){ + return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1'); + }, + + toInt: function(base){ + return parseInt(this, base || 10); + }, + + toFloat: function(){ + return parseFloat(this); + }, + + hexToRgb: function(array){ + var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/); + return (hex) ? hex.slice(1).hexToRgb(array) : null; + }, + + rgbToHex: function(array){ + var rgb = this.match(/\d{1,3}/g); + return (rgb) ? rgb.rgbToHex(array) : null; + }, + + stripScripts: function(option){ + var scripts = ''; + var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){ + scripts += arguments[1] + '\n'; + return ''; + }); + if (option === true) $exec(scripts); + else if ($type(option) == 'function') option(scripts, text); + return text; + }, + + substitute: function(object, regexp){ + return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){ + if (match.charAt(0) == '\\') return match.slice(1); + return (object[name] != undefined) ? object[name] : ''; + }); + } + +}); + + +/* +Script: Hash.js + Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects. + +License: + MIT-style license. +*/ + +Hash.implement({ + + has: Object.prototype.hasOwnProperty, + + keyOf: function(value){ + for (var key in this){ + if (this.hasOwnProperty(key) && this[key] === value) return key; + } + return null; + }, + + hasValue: function(value){ + return (Hash.keyOf(this, value) !== null); + }, + + extend: function(properties){ + Hash.each(properties || {}, function(value, key){ + Hash.set(this, key, value); + }, this); + return this; + }, + + combine: function(properties){ + Hash.each(properties || {}, function(value, key){ + Hash.include(this, key, value); + }, this); + return this; + }, + + erase: function(key){ + if (this.hasOwnProperty(key)) delete this[key]; + return this; + }, + + get: function(key){ + return (this.hasOwnProperty(key)) ? this[key] : null; + }, + + set: function(key, value){ + if (!this[key] || this.hasOwnProperty(key)) this[key] = value; + return this; + }, + + empty: function(){ + Hash.each(this, function(value, key){ + delete this[key]; + }, this); + return this; + }, + + include: function(key, value){ + if (this[key] == undefined) this[key] = value; + return this; + }, + + map: function(fn, bind){ + var results = new Hash; + Hash.each(this, function(value, key){ + results.set(key, fn.call(bind, value, key, this)); + }, this); + return results; + }, + + filter: function(fn, bind){ + var results = new Hash; + Hash.each(this, function(value, key){ + if (fn.call(bind, value, key, this)) results.set(key, value); + }, this); + return results; + }, + + every: function(fn, bind){ + for (var key in this){ + if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false; + } + return true; + }, + + some: function(fn, bind){ + for (var key in this){ + if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true; + } + return false; + }, + + getKeys: function(){ + var keys = []; + Hash.each(this, function(value, key){ + keys.push(key); + }); + return keys; + }, + + getValues: function(){ + var values = []; + Hash.each(this, function(value){ + values.push(value); + }); + return values; + }, + + toQueryString: function(base){ + var queryString = []; + Hash.each(this, function(value, key){ + if (base) key = base + '[' + key + ']'; + var result; + switch ($type(value)){ + case 'object': result = Hash.toQueryString(value, key); break; + case 'array': + var qs = {}; + value.each(function(val, i){ + qs[i] = val; + }); + result = Hash.toQueryString(qs, key); + break; + default: result = key + '=' + encodeURIComponent(value); + } + if (value != undefined) queryString.push(result); + }); + + return queryString.join('&'); + } + +}); + +Hash.alias({keyOf: 'indexOf', hasValue: 'contains'}); + + +/* +Script: Event.js + Contains the Event Native, to make the event object completely crossbrowser. + +License: + MIT-style license. +*/ + +var Event = new Native({ + + name: 'Event', + + initialize: function(event, win){ + win = win || window; + var doc = win.document; + event = event || win.event; + if (event.$extended) return event; + this.$extended = true; + var type = event.type; + var target = event.target || event.srcElement; + while (target && target.nodeType == 3) target = target.parentNode; + + if (type.test(/key/)){ + var code = event.which || event.keyCode; + var key = Event.Keys.keyOf(code); + if (type == 'keydown'){ + var fKey = code - 111; + if (fKey > 0 && fKey < 13) key = 'f' + fKey; + } + key = key || String.fromCharCode(code).toLowerCase(); + } else if (type.match(/(click|mouse|menu)/i)){ + doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body; + var page = { + x: event.pageX || event.clientX + doc.scrollLeft, + y: event.pageY || event.clientY + doc.scrollTop + }; + var client = { + x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX, + y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY + }; + if (type.match(/DOMMouseScroll|mousewheel/)){ + var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3; + } + var rightClick = (event.which == 3) || (event.button == 2); + var related = null; + if (type.match(/over|out/)){ + switch (type){ + case 'mouseover': related = event.relatedTarget || event.fromElement; break; + case 'mouseout': related = event.relatedTarget || event.toElement; + } + if (!(function(){ + while (related && related.nodeType == 3) related = related.parentNode; + return true; + }).create({attempt: Browser.Engine.gecko})()) related = false; + } + } + + return $extend(this, { + event: event, + type: type, + + page: page, + client: client, + rightClick: rightClick, + + wheel: wheel, + + relatedTarget: related, + target: target, + + code: code, + key: key, + + shift: event.shiftKey, + control: event.ctrlKey, + alt: event.altKey, + meta: event.metaKey + }); + } + +}); + +Event.Keys = new Hash({ + 'enter': 13, + 'up': 38, + 'down': 40, + 'left': 37, + 'right': 39, + 'esc': 27, + 'space': 32, + 'backspace': 8, + 'tab': 9, + 'delete': 46 +}); + +Event.implement({ + + stop: function(){ + return this.stopPropagation().preventDefault(); + }, + + stopPropagation: function(){ + if (this.event.stopPropagation) this.event.stopPropagation(); + else this.event.cancelBubble = true; + return this; + }, + + preventDefault: function(){ + if (this.event.preventDefault) this.event.preventDefault(); + else this.event.returnValue = false; + return this; + } + +}); + + +/* +Script: Class.js + Contains the Class Function for easily creating, extending, and implementing reusable Classes. + +License: + MIT-style license. +*/ + +function Class(params){ + + if (params instanceof Function) params = {initialize: params}; + + var newClass = function(){ + Object.reset(this); + if (newClass._prototyping) return this; + this._current = $empty; + var value = (this.initialize) ? this.initialize.apply(this, arguments) : this; + delete this._current; delete this.caller; + return value; + }.extend(this); + + newClass.implement(params); + + newClass.constructor = Class; + newClass.prototype.constructor = newClass; + + return newClass; + +}; + +Function.prototype.protect = function(){ + this._protected = true; + return this; +}; + +Object.reset = function(object, key){ + + if (key == null){ + for (var p in object) Object.reset(object, p); + return object; + } + + delete object[key]; + + switch ($type(object[key])){ + case 'object': + var F = function(){}; + F.prototype = object[key]; + var i = new F; + object[key] = Object.reset(i); + break; + case 'array': object[key] = $unlink(object[key]); break; + } + + return object; + +}; + +new Native({name: 'Class', initialize: Class}).extend({ + + instantiate: function(F){ + F._prototyping = true; + var proto = new F; + delete F._prototyping; + return proto; + }, + + wrap: function(self, key, method){ + if (method._origin) method = method._origin; + + return function(){ + if (method._protected && this._current == null) throw new Error('The method "' + key + '" cannot be called.'); + var caller = this.caller, current = this._current; + this.caller = current; this._current = arguments.callee; + var result = method.apply(this, arguments); + this._current = current; this.caller = caller; + return result; + }.extend({_owner: self, _origin: method, _name: key}); + + } + +}); + +Class.implement({ + + implement: function(key, value){ + + if ($type(key) == 'object'){ + for (var p in key) this.implement(p, key[p]); + return this; + } + + var mutator = Class.Mutators[key]; + + if (mutator){ + value = mutator.call(this, value); + if (value == null) return this; + } + + var proto = this.prototype; + + switch ($type(value)){ + + case 'function': + if (value._hidden) return this; + proto[key] = Class.wrap(this, key, value); + break; + + case 'object': + var previous = proto[key]; + if ($type(previous) == 'object') $mixin(previous, value); + else proto[key] = $unlink(value); + break; + + case 'array': + proto[key] = $unlink(value); + break; + + default: proto[key] = value; + + } + + return this; + + } + +}); + +Class.Mutators = { + + Extends: function(parent){ + + this.parent = parent; + this.prototype = Class.instantiate(parent); + + this.implement('parent', function(){ + var name = this.caller._name, previous = this.caller._owner.parent.prototype[name]; + if (!previous) throw new Error('The method "' + name + '" has no parent.'); + return previous.apply(this, arguments); + }.protect()); + + }, + + Implements: function(items){ + $splat(items).each(function(item){ + if (item instanceof Function) item = Class.instantiate(item); + this.implement(item); + }, this); + + } + +}; + + +/* +Script: Class.Extras.js + Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks. + +License: + MIT-style license. +*/ + +var Chain = new Class({ + + $chain: [], + + chain: function(){ + this.$chain.extend(Array.flatten(arguments)); + return this; + }, + + callChain: function(){ + return (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false; + }, + + clearChain: function(){ + this.$chain.empty(); + return this; + } + +}); + +var Events = new Class({ + + $events: {}, + + addEvent: function(type, fn, internal){ + type = Events.removeOn(type); + if (fn != $empty){ + this.$events[type] = this.$events[type] || []; + this.$events[type].include(fn); + if (internal) fn.internal = true; + } + return this; + }, + + addEvents: function(events){ + for (var type in events) this.addEvent(type, events[type]); + return this; + }, + + fireEvent: function(type, args, delay){ + type = Events.removeOn(type); + if (!this.$events || !this.$events[type]) return this; + this.$events[type].each(function(fn){ + fn.create({'bind': this, 'delay': delay, 'arguments': args})(); + }, this); + return this; + }, + + removeEvent: function(type, fn){ + type = Events.removeOn(type); + if (!this.$events[type]) return this; + if (!fn.internal) this.$events[type].erase(fn); + return this; + }, + + removeEvents: function(events){ + var type; + if ($type(events) == 'object'){ + for (type in events) this.removeEvent(type, events[type]); + return this; + } + if (events) events = Events.removeOn(events); + for (type in this.$events){ + if (events && events != type) continue; + var fns = this.$events[type]; + for (var i = fns.length; i--; i) this.removeEvent(type, fns[i]); + } + return this; + } + +}); + +Events.removeOn = function(string){ + return string.replace(/^on([A-Z])/, function(full, first) { + return first.toLowerCase(); + }); +}; + +var Options = new Class({ + + setOptions: function(){ + this.options = $merge.run([this.options].extend(arguments)); + if (!this.addEvent) return this; + for (var option in this.options){ + if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue; + this.addEvent(option, this.options[option]); + delete this.options[option]; + } + return this; + } + +}); + + +/* +Script: Element.js + One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, + time-saver methods to let you easily work with HTML Elements. + +License: +... [truncated message content] |
From: <lor...@us...> - 2009-09-12 09:16:44
|
Revision: 1843 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1843&view=rev Author: lorenz_b Date: 2009-09-12 09:16:36 +0000 (Sat, 12 Sep 2009) Log Message: ----------- fixed bug removed some unnecessary classes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/BaseDescriptionGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -22,12 +22,15 @@ import java.awt.Dimension; import java.io.File; +import java.net.MalformedURLException; +import java.net.URL; import java.util.Locale; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; +import org.apache.log4j.PropertyConfigurator; import org.dllearner.tools.ore.ui.wizard.Wizard; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; @@ -44,6 +47,7 @@ * */ public class OREApplication { + /** * main method. @@ -51,6 +55,14 @@ */ public static void main(String[] args) { try { + PropertyConfigurator.configure(new URL("file:src/dl-learner/org/dllearner/tools/ore/log4j.properties")); + } catch (MalformedURLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + + try { // UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) { @@ -111,7 +123,7 @@ @Override public void run() { System.out.println("Starting application..."); - int ret = wizard.showModalDialog(); + wizard.showModalDialog(); System.out.println("Exited ORE application"); System.exit(0); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -37,14 +37,14 @@ PelletExplanation expGen = new PelletExplanation(manager, Collections.singleton(ontology)); System.out.println(reasoner.isEntailed(axiom)); -// System.out.println(expGen.getEntailmentExplanations(axiom)); -// -// OWLDataRange range = factory.getTopDataType(); -// OWLDataSomeRestriction dataSome = factory.getOWLDataSomeRestriction(property, range); -// OWLSubClassAxiom subClass = factory.getOWLSubClassAxiom(dataSome, domain); -// -// System.out.println(reasoner.isEntailed(subClass)); -// System.out.println(expGen.getEntailmentExplanations(subClass)); + System.out.println(expGen.getEntailmentExplanations(axiom)); + + OWLDataRange range = factory.getTopDataType(); + OWLDataSomeRestriction dataSome = factory.getOWLDataSomeRestriction(property, range); + OWLSubClassAxiom subClass = factory.getOWLSubClassAxiom(dataSome, domain); + + System.out.println(reasoner.isEntailed(subClass)); + System.out.println(expGen.getEntailmentExplanations(subClass)); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -64,11 +64,21 @@ fireRepairPlanChanged(); } + public void addToRepairPlan(List<OWLOntologyChange> changes){ + repairPlan.addAll(changes); + fireRepairPlanChanged(); + } + public void removeFromRepairPlan(OWLOntologyChange change){ repairPlan.remove(change); fireRepairPlanChanged(); } + public void removeFromRepairPlan(List<OWLOntologyChange> changes){ + repairPlan.removeAll(changes); + fireRepairPlanChanged(); + } + public List<OWLOntologyChange> getRepairPlan(){ return repairPlan; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -49,9 +49,6 @@ lastRequestedRegularSize = new HashMap<OWLAxiom, Integer>(); lastRequestedLaconicSize = new HashMap<OWLAxiom, Integer>(); RepairManager.getInstance(OREManager.getInstance()).addListener(this); -// regularExpGen = new PelletExplanation(manager, Collections.singleton(ontology)); -// laconicExpGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(ontology)); - } public void setComputeLaconicExplanations(boolean laconic){ @@ -63,14 +60,12 @@ } @Override - public Explanation getExplanation(OWLAxiom entailment){ - + public Explanation getExplanation(OWLAxiom entailment){ return getExplanations(entailment, 1).iterator().next(); } @Override - public Set<Explanation> getExplanations(OWLAxiom entailment){ - + public Set<Explanation> getExplanations(OWLAxiom entailment){ return getExplanations(entailment, -1); } @@ -105,6 +100,7 @@ } axiom2Module.put(entailment, module); laconicExpGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(module)); + laconicExpGen.setProgressMonitor(TaskManager.getInstance().getStatusBar()); if(limit == -1){ explanations = laconicExpGen.getExplanations(entailment); } else { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -8,9 +8,8 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; +import org.apache.log4j.Logger; import org.semanticweb.owl.inference.OWLClassReasoner; import org.semanticweb.owl.inference.OWLReasonerFactory; import org.semanticweb.owl.model.OWLAxiom; @@ -69,8 +68,9 @@ */ public class HSTExplanationGenerator implements MultipleExplanationGenerator { - public static final Logger log = Logger.getLogger(HSTExplanationGenerator.class - .getName()); + + + private static Logger logger = Logger.getLogger(HSTExplanationGenerator.class); private TransactionAwareSingleExpGen singleExplanationGenerator; @@ -154,8 +154,8 @@ if (maxExplanations < 0) throw new IllegalArgumentException(); - if (log.isLoggable(Level.CONFIG)) - log.config("Get " + (maxExplanations == 0 ? "all" : maxExplanations) + " explanation(s) for: " + unsatClass); + + logger.debug("Get " + (maxExplanations == 0 ? "all" : maxExplanations) + " explanation(s) for: " + unsatClass); try { Set<OWLAxiom> firstMups = getExplanation(unsatClass); @@ -255,8 +255,8 @@ Set<Set<OWLAxiom>> satPaths, Set<OWLAxiom> currentPathContents, int maxExplanations) throws OWLException { - if (log.isLoggable(Level.FINE)) - log.fine("MUPS " + allMups.size() + ": " + mups); + + logger.debug("MUPS " + allMups.size() + ": " + mups); if (progressMonitor.isCancelled()) { return; @@ -268,18 +268,19 @@ while (!orderedMups.isEmpty()) { if (progressMonitor.isCancelled()) { + logger.debug("Canceled computing explanations"); return; } OWLAxiom axiom = orderedMups.get(0); orderedMups.remove(0); if (allMups.size() == maxExplanations) { - if (log.isLoggable(Level.FINE)) - log.fine("Computed " + maxExplanations + "explanations"); + + logger.debug("Computed " + maxExplanations + " explanations"); return; } - if (log.isLoggable(Level.FINE)) - log.fine("Removing axiom: " + axiom + " " + currentPathContents.size() + " more removed: " + currentPathContents); + + logger.debug("Removing axiom: " + axiom + " " + currentPathContents.size() + " more removed: " + currentPathContents); // Remove the current axiom from all the ontologies it is included // in @@ -318,8 +319,8 @@ for (Set<OWLAxiom> satPath : satPaths) { if (currentPathContents.containsAll(satPath)) { earlyTermination = true; - if (log.isLoggable(Level.FINE)) - log.fine("Stop - satisfiable (early termination)"); + + logger.debug("Stop - satisfiable (early termination)"); break; } } @@ -362,8 +363,8 @@ orderedMups = getOrderedMUPS(orderedMups, allMups); } else { - if (log.isLoggable(Level.FINE)) - log.fine("Stop - satisfiable"); + + logger.debug("Stop - satisfiable"); // End of current path - add it to the list of paths satPaths.add(new HashSet<OWLAxiom>(currentPathContents)); @@ -373,8 +374,8 @@ // Back track - go one level up the tree and run for the next axiom currentPathContents.remove(axiom); - if (log.isLoggable(Level.FINE)) - log.fine("Restoring axiom: " + axiom); + + logger.debug("Restoring axiom: " + axiom); // Remove any temporary declarations for( OWLDeclarationAxiom decl : temporaryDeclarations ) { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -33,10 +33,10 @@ public static void main(String[] args) { -// test(); + test(); miniTest(); -// miniEconomyTest(); -// universityTest(); + miniEconomyTest(); + universityTest(); } public static void test(){ @@ -55,7 +55,6 @@ OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); - Set<OWLOntology> ontologies = new HashSet<OWLOntology>(); Reasoner reasoner = resonerFact.createReasoner(manager); reasoner.loadOntologies(Collections.singleton(ontology)); System.out.println(reasoner.getInconsistentClasses()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -92,6 +92,12 @@ } lostEntailments = SetUtils.difference(entailmentsBefore, entailmentsAfter); addedEntailents = SetUtils.difference(entailmentsAfter, entailmentsBefore); + + for(OWLOntologyChange change : changes){ + if(change instanceof RemoveAxiom){ + lostEntailments.remove(change.getAxiom()); + } + } impact.add(0, lostEntailments); impact.add(1, addedEntailents); manager.applyChanges(getInverseChanges(changes)); @@ -103,6 +109,7 @@ // TODO Auto-generated catch block e.printStackTrace(); } + return impact; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -17,7 +17,6 @@ import com.clarkparsia.explanation.BlackBoxExplanation; import com.clarkparsia.explanation.GlassBoxExplanation; -import com.clarkparsia.explanation.HSTExplanationGenerator; import com.clarkparsia.explanation.SatisfiabilityConverter; import com.clarkparsia.explanation.TransactionAwareSingleExpGen; import com.clarkparsia.explanation.util.ExplanationProgressMonitor; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/BaseDescriptionGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/BaseDescriptionGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/BaseDescriptionGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -38,6 +38,8 @@ private OWLDataFactory factory; private static TopTester topChecker = new TopTester(); private static BottomTester bottomChecker = new BottomTester(); + + public BaseDescriptionGenerator(OWLDataFactory factory) { @@ -176,10 +178,13 @@ Set<OWLDescription> descs = new HashSet<OWLDescription>(); descs.add(desc); - for(OWLDescription filler : factory.getOWLObjectOneOf(new OWLIndividual[] {(OWLIndividual)desc.getValue()}).accept(this)){ - descs.add(factory.getOWLObjectSomeRestriction((OWLObjectPropertyExpression)desc.getProperty(), filler)); +// for(OWLDescription filler : factory.getOWLObjectOneOf(new OWLIndividual[] {(OWLIndividual)desc.getValue()}).accept(this)){ +// descs.add(factory.getOWLObjectSomeRestriction((OWLObjectPropertyExpression)desc.getProperty(), filler)); +// } + OWLDescription d = factory.getOWLObjectSomeRestriction((OWLObjectPropertyExpression)desc.getProperty(), getLimit()); + if(!isNothing(d)){ + descs.add(d); } - descs.add(getLimit()); return descs; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -6,12 +6,10 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; +import org.apache.log4j.Logger; import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.tools.ore.explanation.ExplanationException; -import org.dllearner.tools.ore.explanation.HSTExplanationGenerator; import org.dllearner.tools.ore.explanation.PelletExplanationGenerator; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.semanticweb.owl.apibinding.OWLManager; @@ -46,8 +44,7 @@ private Set<Explanation> allPreviouslyFoundExplanations; private OPlus oPlus; - public static final Logger log = Logger.getLogger(LaconicExplanationGenerator.class - .getName()); + private static Logger logger = Logger.getLogger(LaconicExplanationGenerator.class); private ExplanationProgressMonitor progressMonitor = new SilentExplanationProgressMonitor(); @@ -111,9 +108,9 @@ Set<Explanation> regularExplanations = pelletExplanation .getExplanations((OWLAxiom) entailment); - if (log.isLoggable(Level.CONFIG)){ - log.config("Found " + regularExplanations.size() + " regular explanations"); - } + + logger.debug("Found " + regularExplanations.size() + " regular explanations"); + lastRegularExplanations.clear(); lastRegularExplanations.addAll(regularExplanations); allPreviouslyFoundExplanations = new HashSet<Explanation>(); @@ -147,13 +144,9 @@ if (extendedOntology.getLogicalAxioms().equals( axiomsInPreviousOntology)) { - if (log.isLoggable(Level.CONFIG)){ - log.config(""); - } + logger.debug("Ontology did not changed. Early termination."); break; } - // man2.saveOntology(extendedOnt, - // URI.create("file:/home/lorenz/neu.owl")); axiomsInPreviousOntology.clear(); axiomsInPreviousOntology .addAll(extendedOntology.getLogicalAxioms()); @@ -196,7 +189,7 @@ } } - return retrieveAxioms(explanations); + return explanations;//retrieveAxioms(explanations); } public boolean isLaconic(Explanation explanation) @@ -311,8 +304,8 @@ public Set<Explanation> getExplanations(OWLAxiom entailment, int limit) throws ExplanationException { - if (log.isLoggable(Level.CONFIG)) - log.config("Get " + (limit == Integer.MAX_VALUE ? "all" : limit) + " explanation(s) for: " + entailment); + + logger.debug("Get " + (limit == Integer.MAX_VALUE ? "all" : limit) + " explanation(s) for: " + entailment); Set<Explanation> explanations; try { explanations = computePreciseJusts(entailment, limit); @@ -332,7 +325,7 @@ public Set<OWLAxiom> getSourceAxioms(OWLAxiom axiom){ Map<OWLAxiom, Set<OWLAxiom>> axioms2SourceMap = oPlus.getAxiomsMap(); Set<OWLAxiom> sourceAxioms = new HashSet<OWLAxiom>(); - System.out.println(axiom); + System.out.println("Getting source axioms for: " + axiom); for(OWLAxiom ax : axioms2SourceMap.get(axiom)){ if(ontology.containsAxiom(ax)){ sourceAxioms.add(ax); @@ -344,19 +337,35 @@ public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ Set<OWLAxiom> parts = computeOPlus(Collections.singleton(source)); + for(OWLAxiom ax : parts){ +// System.out.println("Part: " + ax); + for(OWLAxiom a : oPlus.getAxiomsMap().get(ax)){ +// System.out.println("has source: " + a); + } + + } + for(OWLAxiom par : parts){ - System.out.println("has Part: " + par); +// System.out.println("has Part: " + par); } -// parts.remove(part);System.out.println("removed part: " + part); - for(OWLAxiom pa : parts){ - System.out.println("\nPart: " + pa); - for(OWLAxiom ax : oPlus.getAxiomsMap().get(pa)){ - System.out.println("has source : " + ax); + for(OWLAxiom ax : oPlus.getAxiomsMap().get(part)){ + parts.remove(ax); +// System.out.println("Removing: " + ax); + } + Set<OWLAxiom> remove = new HashSet<OWLAxiom>(); + for(OWLAxiom ax : parts){ + for(OWLAxiom a : computeOPlus(Collections.singleton(ax))){ + if(!a.equals(ax)){ + remove.add(a); + } } } + parts.removeAll(remove); + parts.remove(part); + return parts; - return rebuildAxioms(parts); + } private Set<OWLAxiom> rebuildAxioms(Set<OWLAxiom> axioms){ @@ -423,7 +432,7 @@ return reconstituedAxioms; } - public static void main(String[] args) throws OWLOntologyCreationException, ExplanationException{ + public static void main(String[] args) throws OWLOntologyCreationException, ExplanationException, OWLOntologyChangeException{ String baseURI = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl"; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create("file:examples/ore/koala.owl")); @@ -432,13 +441,34 @@ OWLClass koalaWithPhD = factory.getOWLClass(URI.create(baseURI + "#KoalaWithPhD")); OWLClass koala = factory.getOWLClass(URI.create(baseURI + "#Koala")); - System.out.println(expGen.getExplanations(factory.getOWLSubClassAxiom(koalaWithPhD, factory.getOWLNothing()), 1)); - OWLAxiom laconicAx = factory.getOWLSubClassAxiom(koalaWithPhD, koala); - Set<OWLAxiom> sourceAxioms = expGen.getSourceAxioms(laconicAx); +// System.out.println(expGen.getExplanations(factory.getOWLSubClassAxiom(koalaWithPhD, factory.getOWLNothing()), 1)); +// OWLAxiom laconicAx = factory.getOWLSubClassAxiom(koalaWithPhD, koala); +// Set<OWLAxiom> sourceAxioms = expGen.getSourceAxioms(laconicAx); +// System.out.println("Source axioms: " + sourceAxioms); +// for(OWLAxiom sourceAx : sourceAxioms){ +// System.out.println("\nRebuildet: " + expGen.getRemainingAxioms(sourceAx, laconicAx)); +// } + + OWLAxiom ax = factory.getOWLEquivalentClassesAxiom(factory.getOWLClass(URI.create("A")), + factory.getOWLObjectIntersectionOf(factory.getOWLClass(URI.create("C")), + factory.getOWLObjectSomeRestriction(factory.getOWLObjectProperty(URI.create("R")), + factory.getOWLClass(URI.create("F"))))); + OWLAxiom ax2 = factory.getOWLSubClassAxiom(factory.getOWLObjectSomeRestriction(factory.getOWLObjectProperty(URI.create("R")), factory.getOWLThing()), + factory.getOWLObjectComplementOf(factory.getOWLClass(URI.create("C")))); + Set<OWLAxiom> ont = new HashSet<OWLAxiom>(); + ont.add(ax); + ont.add(ax2); + OWLOntology o = manager.createOntology(ont); + expGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(o)); + System.out.println(expGen.getExplanations(factory.getOWLSubClassAxiom(factory.getOWLClass(URI.create("A")), factory.getOWLNothing()), 1)); + + OWLAxiom remove = factory.getOWLSubClassAxiom(factory.getOWLClass(URI.create("A")),factory.getOWLObjectSomeRestriction(factory.getOWLObjectProperty(URI.create("R")), factory.getOWLThing())); + Set<OWLAxiom> sourceAxioms = expGen.getSourceAxioms(remove); System.out.println("Source axioms: " + sourceAxioms); for(OWLAxiom sourceAx : sourceAxioms){ - System.out.println("\nRebuildet: " + expGen.getRemainingAxioms(sourceAx, laconicAx)); + System.out.println("\nRebuildet: " + expGen.getRemainingAxioms(sourceAx, remove)); } + } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/log4j.properties 2009-09-12 09:16:36 UTC (rev 1843) @@ -0,0 +1,5 @@ +log4j.rootLogger=INFO, A +log4j.logger.org.dllearner.tools.ore.explanation = DEBUG, A +log4j.appender.A=org.apache.log4j.ConsoleAppender +log4j.appender.A.layout=org.apache.log4j.PatternLayout +log4j.appender.A.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -1,5 +1,8 @@ package org.dllearner.tools.ore.ui; +import java.util.ArrayList; +import java.util.List; + import javax.swing.table.AbstractTableModel; import org.dllearner.tools.ore.ExplanationManager; @@ -11,6 +14,7 @@ import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.RemoveAxiom; public class ExplanationTableModel extends AbstractTableModel { @@ -71,36 +75,33 @@ OWLAxiom ax = getOWLAxiomAtRow(rowIndex); if(impMan.isSelected(ax)){ impMan.removeSelection(ax); - if(expMan.isLaconicMode()){ + if(expMan.isLaconicMode() && !ont.containsAxiom(ax)){ + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); for(OWLAxiom source : expMan.getSourceAxioms(ax)){ impMan.removeSelection(source); - repMan.removeFromRepairPlan(new RemoveAxiom(ont, source)); - for(OWLAxiom rem : expMan.getRemainingAxioms(source, ax)){ - repMan.removeFromRepairPlan(new AddAxiom(ont, rem)); + changes.add(new RemoveAxiom(ont, source)); + for(OWLAxiom remain : expMan.getRemainingAxioms(source, ax)){ + changes.add(new AddAxiom(ont, remain)); } - -// repMan.removeAxiom2Remove(source); -// repMan.removeAxioms2Keep(expMan.getRemainingAxioms(source, ax)); } + repMan.removeFromRepairPlan(changes); } else { -// repMan.removeAxiom2Remove(ax); repMan.removeFromRepairPlan(new RemoveAxiom(ont, ax)); } } else { impMan.addSelection(ax); - if(expMan.isLaconicMode()){ + if(expMan.isLaconicMode() && !ont.containsAxiom(ax)){ + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); for(OWLAxiom source : expMan.getSourceAxioms(ax)){ impMan.addSelection(source); - repMan.addToRepairPlan(new RemoveAxiom(ont, source)); - for(OWLAxiom rem : expMan.getRemainingAxioms(source, ax)){ - repMan.addToRepairPlan(new AddAxiom(ont, rem)); + changes.add(new RemoveAxiom(ont, source)); + for(OWLAxiom remain : expMan.getRemainingAxioms(source, ax)){ + changes.add(new AddAxiom(ont, remain)); } -// repMan.addAxiom2Remove(source); -// repMan.addAxioms2Keep(expMan.getRemainingAxioms(source, ax)); - } + } + repMan.addToRepairPlan(changes); } else { -// repMan.addAxiom2Remove(ax); repMan.addToRepairPlan(new RemoveAxiom(ont, ax)); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -66,6 +66,7 @@ private int returnCode; private JButton okButton = null; + @SuppressWarnings("unused") private JButton cancelButton = null; private JComboBox comboBox; @@ -103,15 +104,6 @@ addPredifinedEndpoints(); positionErrorDialog(owner); } - - private void positionErrorDialog(Dialog owner) { - if (owner == null || !owner.isVisible()) { - Dimension screenDimension = Toolkit.getDefaultToolkit() - .getScreenSize(); - setLocation(screenDimension.width / 2 - getSize().width / 2, - screenDimension.height / 2 - getSize().height / 2); - } - } private void createControls() { getContentPane().setLayout(new BorderLayout()); @@ -238,16 +230,19 @@ private void addPredifinedEndpoints(){ endpointToDefaultGraph = new HashMap<URL, List<String>>(); -// endpointToDefaultGraph.put(SparqlEndpoint.getEndpointDBpedia().getURL(), SparqlEndpoint.getEndpointDBpedia().getDefaultGraphURIs()); -// endpointToDefaultGraph.put(SparqlEndpoint.getEndpointDOAPspace().getURL(), SparqlEndpoint.getEndpointDOAPspace().getDefaultGraphURIs()); for(SparqlEndpoint endpoint : SparqlEndpoint.listEndpoints()){ endpointToDefaultGraph.put(endpoint.getURL(), endpoint.getDefaultGraphURIs()); - } - + } for(URL url : endpointToDefaultGraph.keySet()){ comboBox.addItem(url.toString()); + } + } + + private void positionErrorDialog(Dialog owner) { + if (owner == null || !owner.isVisible()) { + Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); + setLocation(screenDimension.width / 2 - getSize().width / 2, screenDimension.height / 2 - getSize().height / 2); } - } @@ -260,8 +255,7 @@ optionsPanel.setVisible(true); // Cause the new layout to take effect invalidate (); - validate (); - + validate (); } private void collapseOptionsPanel(){ @@ -273,8 +267,7 @@ optionsPanel.setVisible(false); // Cause the new layout to take effect invalidate (); - validate (); - + validate (); } private JButton createButton (String label, char mnemonic) { @@ -302,9 +295,7 @@ setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); return returnCode; } - - - + private void extract() { if(urlIsConnectable()){ message.setText(""); @@ -314,8 +305,7 @@ extractTask.execute(); } else { message.setText("<html><font color=\"red\">Could not connect to endpoint</html>"); - } - + } } private boolean urlIsConnectable() @@ -444,7 +434,6 @@ } } - @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("Extract")){ @@ -489,36 +478,28 @@ if(mon.isCanceled()){ extractTask.cancel(true); } - } - + } } @Override public void changedUpdate(DocumentEvent e) { - setExtractButtonEnabledToValidInput(); - + setExtractButtonEnabledToValidInput(); } @Override public void insertUpdate(DocumentEvent e) { - setExtractButtonEnabledToValidInput(); - + setExtractButtonEnabledToValidInput(); } @Override public void removeUpdate(DocumentEvent e) { - setExtractButtonEnabledToValidInput(); - + setExtractButtonEnabledToValidInput(); } - public static void main(String[] args){ ExtractFromSparqlDialog dialog = new ExtractFromSparqlDialog(null); dialog.showDialog(); - } - - - + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -3,12 +3,6 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; -import java.awt.Toolkit; -import java.awt.datatransfer.Clipboard; -import java.awt.datatransfer.StringSelection; -import java.awt.event.ActionEvent; -import java.io.FileNotFoundException; -import java.net.URI; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -16,11 +10,8 @@ import java.util.List; import java.util.Map; -import javax.swing.AbstractAction; import javax.swing.BorderFactory; -import javax.swing.JFrame; import javax.swing.JPanel; -import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.TitledBorder; @@ -28,19 +19,13 @@ import org.protege.editor.core.PropertyUtil; import org.protege.editor.core.ProtegeProperties; import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.io.UnparsableOntologyException; -import org.semanticweb.owl.metrics.AxiomCountMetric; -import org.semanticweb.owl.metrics.AxiomTypeMetric; import org.semanticweb.owl.metrics.DLExpressivity; -import org.semanticweb.owl.metrics.GCICount; -import org.semanticweb.owl.metrics.HiddenGCICount; import org.semanticweb.owl.metrics.OWLMetric; import org.semanticweb.owl.metrics.OWLMetricManager; import org.semanticweb.owl.metrics.ReferencedClassCount; import org.semanticweb.owl.metrics.ReferencedDataPropertyCount; import org.semanticweb.owl.metrics.ReferencedIndividualCount; import org.semanticweb.owl.metrics.ReferencedObjectPropertyCount; -import org.semanticweb.owl.model.AxiomType; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChangeException; @@ -68,10 +53,7 @@ private OWLOntologyManager manager; - private JPopupMenu popupMenu; - private AxiomCountMetric lastMetric; - public MetricsPanel() { this.manager = OWLManager.createOWLOntologyManager(); try { @@ -86,55 +68,12 @@ } initialiseOWLView(); - createPopupMenu(); } - - private void createPopupMenu() { - popupMenu = new JPopupMenu(); - popupMenu.add(new AbstractAction("Show axioms") { - /** - * - */ - private static final long serialVersionUID = 1L; - - public void actionPerformed(ActionEvent e) { -// showAxiomTypeDialog(); - - } - }); - } - - -// private void showAxiomTypeDialog() { -// Set<? extends OWLAxiom> axioms = lastMetric.getAxioms(); -// final OWLAxiomTypeFramePanel panel = new OWLAxiomTypeFramePanel(owlEditorKit); -// Set<OWLAxiom> axs = new HashSet<OWLAxiom>(axioms); -// panel.setRoot(axs); -// panel.setPreferredSize(new Dimension(800, 300)); -// JOptionPane op = new JOptionPane(panel, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION); -// JDialog dlg = op.createDialog(this, lastMetric.getName()); -// dlg.setResizable(true); -// dlg.addWindowListener(new WindowAdapter() { -// -// public void windowClosed(WindowEvent e) { -// panel.dispose(); -// } -// }); -// dlg.setModal(false); -// dlg.setVisible(true); -// } - - protected void initialiseOWLView() { metricManagerMap = new LinkedHashMap<String, OWLMetricManager>(); tableModelMap = new HashMap<OWLMetricManager, MetricsTableModel>(); createBasicMetrics(); -// createClassAxiomMetrics(); -// createObjectPropertyAxiomMetrics(); -// createDataPropertyAxiomMetrics(); -// createIndividualAxiomMetrics(); -// createAnnotationAxiomMetrics(); createUI(); updateView(manager.getOntologies().iterator().next()); for(OWLMetricManager man : metricManagerMap.values()) { @@ -145,7 +84,6 @@ } } - private void createUI() { setLayout(new BorderLayout()); @@ -193,98 +131,6 @@ metricManagerMap.put("Metrics", metricManager); } - - private void createClassAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.SUBCLASS)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.EQUIVALENT_CLASSES)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.DISJOINT_CLASSES)); - metrics.add(new GCICount(manager)); - metrics.add(new HiddenGCICount(manager)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Class axioms", metricManager); - } - - - private void createObjectPropertyAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.SUB_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.EQUIVALENT_OBJECT_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.INVERSE_OBJECT_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DISJOINT_OBJECT_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.FUNCTIONAL_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.INVERSE_FUNCTIONAL_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.TRANSITIVE_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.SYMMETRIC_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.ANTI_SYMMETRIC_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.REFLEXIVE_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.IRREFLEXIVE_OBJECT_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.OBJECT_PROPERTY_DOMAIN)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.OBJECT_PROPERTY_RANGE)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.PROPERTY_CHAIN_SUB_PROPERTY)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Object property axioms", metricManager); - } - - - private void createDataPropertyAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.SUB_DATA_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.EQUIVALENT_DATA_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DISJOINT_DATA_PROPERTIES)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.FUNCTIONAL_DATA_PROPERTY)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DATA_PROPERTY_DOMAIN)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DATA_PROPERTY_RANGE)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Data property axioms", metricManager); - } - - - private void createIndividualAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.CLASS_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.OBJECT_PROPERTY_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.DATA_PROPERTY_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.NEGATIVE_OBJECT_PROPERTY_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, - AxiomType.NEGATIVE_DATA_PROPERTY_ASSERTION)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.SAME_INDIVIDUAL)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.DIFFERENT_INDIVIDUALS)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Individual axioms", metricManager); - } - - - private void createAnnotationAxiomMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new AxiomTypeMetric(manager, AxiomType.ENTITY_ANNOTATION)); - metrics.add(new AxiomTypeMetric(manager, AxiomType.AXIOM_ANNOTATION)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Annotation axioms", metricManager); - } - - public void updateView(OWLOntology activeOntology) { for (OWLMetricManager man : metricManagerMap.values()) { man.setOntology(activeOntology); @@ -296,39 +142,5 @@ setBorder(border); repaint(); } - - - - private void exportCSV() { - StringBuilder sb = new StringBuilder(); - for(OWLMetricManager man : metricManagerMap.values()) { - sb.append(man.toString()); - } - Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); - clipboard.setContents(new StringSelection(sb.toString()), null); - } - - public static void main(String[] args) { - String file = "file:examples/ore/tambis.owl"; - URI uri2 = URI.create("file:/home/lorenz/Desktop/Finance.owl"); - URI uri = URI.create("http://protege.stanford.edu/plugins/owl/owl-library/koala.ow"); - - - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - try{ - OWLOntology ontology = manager.loadOntology( uri ); - } catch (OWLOntologyCreationException e){ - System.out.println(e.getClass()); - System.out.println(e.getClass().equals(UnparsableOntologyException.class)); -// System.out.println(e.getCause()); - e.printStackTrace(); - } - JFrame test = new JFrame(); - test.setBounds(200, 200, 600, 200); - test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - test.add(new MetricsPanel()); - test.setVisible(true); - - - } + } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -1,191 +0,0 @@ -package org.dllearner.tools.ore.ui; - -//Imports for the GUI classes. -import java.awt.*; -import javax.swing.*; -import java.awt.event.*; - -/** - * RoundButton.java - - * A custom JComponent that is a round button. The round button - * will be empty until the mouse enters the circle. When the - * mouse enters the circle it will be filled in with a specified - * color. Then when the mouse is pressed the color will change - * to a second specified color. Note that RoundButton "is a" - * MouseListener so it can handle its own MouseEvents. - * - * @author Grant William Braught - * @author Dickinson College - * @version 11/29/2000 - */ -public class RoundButton - extends JComponent - implements MouseListener { - - private Color mouseOverColor; - private Color mousePressedColor; - - private boolean mouseOver; - private boolean mousePressed; - - - /** - * Construct a new RoundButton with the specified - * colors for mouse over and mouse pressed events. - * - * @param mouseOverColor the color the button should - * be filled with when the mouse is - * over the button. - * @param mousePressedColor the color the button should be - * filled with when the mouse - * is pressed on the button. - */ - public RoundButton(Color mouseOverColor, - Color mousePressedColor) { - this.mouseOverColor = mouseOverColor; - this.mousePressedColor = mousePressedColor; - mouseOver = false; - mousePressed = false; - - // Make this object a MouseListener for itself. This - // ensures that the MouseEvents ocurring on this JComponet - // will be routed to this object. NOTE: "this" is a - // reference to a RoundButton and a RoundButton "is a" - // JComponent so it has an addMouseListener() method that - // accepts a MouseListener object. Since RoundButton - // implements MouseListener it "is a" MouseListener. - this.addMouseListener(this); - } - - /** - * Default constructor that sets the mouse over color - * to blue and the mouse pressed color to red. - */ - public RoundButton() { - this(Color.blue, Color.red); - } - - /** - * Paint the RoundButton on the screen each time the - * window is redrawn. Recall that the paint() method - * of each JComponent in the content pane is called - * automatically when the window is redrawn. This - * overrides paint() from JComponent so we have control - * over what the RoundButton will look like when it is - * painted. - * - * @param g the Graphics context on which to paint the - * button. - */ - public void paint(Graphics g) { - // Check mouse pressed first because if the mouse - // is pressed it will also be in the button. - if (mousePressed && mouseOver) { - g.setColor(mousePressedColor); - g.fillOval(0,0,100,100); - } - else if (mouseOver) { - g.setColor(mouseOverColor); - g.fillOval(0,0,100,100); - } - else { - g.setColor(Color.black); - g.drawOval(0,0,100,100); - } - } - - /** - * Return the minimum size that our button would - * like to be. This overrides getMinimumSize from - * JComponent which returns 0x0. - * - * @return the minimum size of the RoundButton. - */ - public Dimension getMinimumSize() { - return new Dimension(100,100); - } - - /** - * Return the ideal size that our button would - * like to be. This overrides the getPreferredSize - * from JComponent which returns 0x0. - * - * @return the preferred size of the RoundButton. - */ - public Dimension getPreferredSize() { - return new Dimension(100,100); - } - - // Methods from the MouseListener Interface. - /** - * Handler called when the mouse is clicked on - * the RoundButton. - * - * @param e reference to a MouseEvent object describing - * the mouse click. - */ - public void mouseClicked(MouseEvent e) {} - - /** - * Handler called when the mouse enters the - * RoundButton. This is called when the mouse - * enters the bounding rectangle of the JComponent - * not when it enters the circle! (See RoundButton2 - * for a fix.) - * - * @param e reference to a MouseEvent object describing - * the mouse entry. - */ - public void mouseEntered(MouseEvent e) { - mouseOver = true; - - // Calling repaint() causes the component to be repainted. - // repaint() makes a call to paint() but also does a few - // other things related to the maintainence of the window - // and layout. Therefore, you should never call paint() - // directly. If you want the component to be repainted, - // call repaint(). - repaint(); - } - - /** - * Handler called when the mouse exits the - * RoundButton. Again, this is called when the - * mouse exits the bounding rectangle. - * - * @param e reference to a MouseEvent object describing - * the mouse exit. - */ - public void mouseExited(MouseEvent e) { - mouseOver = false; - repaint(); - } - - /** - * Handler called when the mouse button is pressed - * over the RoundButton. Again this is called if the - * button is pressed anywhere within the bounding - * rectangle. - * - * @param e reference to a MouseEvent object describing - * the mouse press. - */ - public void mousePressed(MouseEvent e) { - mousePressed = true; - repaint(); - } - - /** - * Handler called when the mosue button is released - * over the RoundButton. Blah... Blah.. bounding - * rectangle. - * - * @param e reference to a MouseEvent object describing - * the mouse release. - */ - public void mouseReleased(MouseEvent e) { - mousePressed = false; - repaint(); - } -} - Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -1,126 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.Color; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Rectangle; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; - -import javax.swing.ImageIcon; -import javax.swing.JComponent; -import javax.swing.UIManager; - -public class RoundButton2 extends JComponent implements MouseListener{ - String title; - ImageIcon ico; - ActionListener a; - String ac; - boolean p,pressed; - public RoundButton2(String title){ - this(title,new ImageIcon()); - } - public RoundButton2(ImageIcon ico){ - this("",ico); - } - public RoundButton2(){ - this("",new ImageIcon()); - } - public RoundButton2(String title,ImageIcon ico){ - this.title=title; - this.ico=ico; - p=pressed=false; - getInsets().set(15,15,15,15); - addMouseListener(this); - } - public Dimension getPreferredSize() { - Rectangle bounds=getBounds(); - return(new Dimension(new Double(bounds.getWidth()).intValue()+ - getInsets().left+getInsets().left, - new Double(bounds.getHeight()).intValue()+ - getInsets().top+getInsets().bottom)); - } - public Dimension getMinimumSize() { - return(getPreferredSize()); - } - public Dimension getMaximumSize() { - return(getPreferredSize()); - } - boolean onbutton(MouseEvent m){ - double - a=getBounds().getWidth()/2, - b=getBounds().getHeight()/2, - x=new Integer(m.getX()).doubleValue()-a, - y=new Integer(m.getY()).doubleValue()-b, - w=b/a*Math.sqrt(( (a*a) - (x*x) )); - return( y<= w && y>=-w ); - } - public void mouseClicked(MouseEvent e){} - public void mouseEntered(MouseEvent e){ - p=true; - if(pressed)repaint(); - } - public void mouseExited(MouseEvent e){ - if(pressed)repaint(); - } - public void mousePressed(MouseEvent e){ - pressed=true;if(onbutton(e)){p=true; repaint(); } - } - public void mouseReleased(MouseEvent e){ - pressed=false; - if(onbutton(e)){repaint();} - if(ac==null)ac=""; - if(a!=null) a.actionPerformed(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,ac)); - } - protected void paintComponent(Graphics g){ - Graphics2D g2=(Graphics2D)g; - Rectangle bounds=getBounds(); - Color t=g.getColor(); - int j=0; - g.setColor(UIManager.getColor("Button.background").brighter()); - if(p){ - j=1;p=false; - g.setColor(UIManager.getColor("Button.background").darker().darker()); - } - g.fillArc( - j,j, - new Double(bounds.getWidth()).intValue()-4, - new Double(bounds.getHeight()).intValue()-4, - 0, - 360); - g.setColor(UIManager.getColor("Button.background").darker().darker()); - g.fillArc( - 3,3, - new Double(bounds.getWidth()).intValue()-4, - new Double(bounds.getHeight()).intValue()-4, - 45, - -180); - g.setColor(UIManager.getColor("Button.background")); - g.fillArc( - 2+j,2+j, - new Double(bounds.getWidth()).intValue()-6, - new Double(bounds.getHeight()).intValue()-6, - 0, - 360); - g.drawImage( - ico.getImage(), - new Double((double)bounds.getWidth()/8).intValue()+j, - new Double((double)bounds.getHeight()/8).intValue()+j, - new Double((double)bounds.getWidth()*.75).intValue(), - new Double((double)bounds.getHeight()*.75).intValue(), - ico.getImageObserver() - ); - g.setColor(UIManager.getColor("Button.background").darker().darker()); - g.drawString(title.trim(), - new Double((double)bounds.getWidth()/2).intValue()+j, - new Double((double)bounds.getHeight()/2).intValue()+j - ); - g.setColor(t); - } - public void addActionListener(ActionListener e){a=e;} - public void removeActionListener(ActionListener e){a=null;} - public void setActionCommand(String c){ac=c;} -} Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -1,75 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.RenderingHints; -import java.awt.Shape; -import java.awt.geom.Ellipse2D; - -import javax.swing.Action; -import javax.swing.BorderFactory; -import javax.swing.DefaultButtonModel; -import javax.swing.Icon; -import javax.swing.JButton; - -class RoundButton3 extends JButton { - public RoundButton3() { - this(null, null); - } - public RoundButton3(Icon icon) { - this(null, icon); - } - public RoundButton3(String text) { - this(text, null); - } - public RoundButton3(Action a) { - this(); - setAction(a); - } - public RoundButton3(String text, Icon icon) { - setModel(new DefaultButtonModel()); - init(text, icon); - if(icon==null) { - return; - } - int iw = Math.max(icon.getIconWidth(), icon.getIconHeight()); - int sw = 1; - setBorder(BorderFactory.createEmptyBorder(sw,sw,sw,sw)); - Dimension dim = new Dimension(iw+sw+sw, iw+sw+sw); - setPreferredSize(dim); - setMaximumSize(dim); - setMinimumSize(dim); - setBackground(Color.BLACK); - setContentAreaFilled(false); - setFocusPainted(false); - //setVerticalAlignment(SwingConstants.TOP); - setAlignmentY(Component.TOP_ALIGNMENT); - initShape(); - } - protected Shape shape, base; - protected void initShape() { - if(!getBounds().equals(base)) { - Dimension s = getPreferredSize(); - base = getBounds(); - shape = new Ellipse2D.Float(0, 0, s.width-1, s.height-1); - } - } - @Override - protected void paintBorder(Graphics g) { - initShape(); - Graphics2D g2 = (Graphics2D)g; - g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g2.setColor(getBackground()); - //g2.setStroke(new BasicStroke(1.0f)); - g2.draw(shape); - g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); - } - @Override - public boolean contains(int x, int y) { - initShape(); - return shape.contains(x, y); - } -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -49,6 +49,11 @@ } + @Override + public String getColumnName(int column) { + return "Axiom"; + } + public OWLAxiom getOWLAxiomAtRow(int rowIndex){ return expMan.getOrdering(exp).get(rowIndex).keySet().iterator().next(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java 2009-09-10 15:40:18 UTC (rev 1842) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SparqlExtractOptionsPanel.java 2009-09-12 09:16:36 UTC (rev 1843) @@ -3,21 +3,16 @@ import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import javax.swing.Icon; -import javax.swing.ImageIcon; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; -import javax.swing.JToggleButton; import javax.swing.SpinnerNumberModel; import javax.swing.border.TitledBorder; -public class SparqlExtractOptionsPanel extends JPanel implements ActionListener { +public class SparqlExtractOptionsPanel extends JPanel{ /** * @@ -34,22 +29,10 @@ private JCheckBox getAllSuperClassesCheckBox; private JCheckBox useLitsCheckBox; - private JToggleButton advancedButton; - private JPanel advancedPanel; - - - private Icon untoggledIcon; - private Icon toggledIcon; - - public SparqlExtractOptionsPanel(){ - - untoggledIcon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/untoggled.gif"); - toggledIcon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/toggled.gif"); createUI(); setDefaults(); - setToolTips(); - + setToolTips(); } private void createUI(){ @@ -151,15 +134,6 @@ c.gridy = 8; add(useLitsCheckBox, c); - - c.gridx = 0; - c.gridy = 9; - advancedButton = new JToggleButton("Advanced settings"); - advancedButton.setActionCommand("untoggled"); - advancedButton.setIcon(untoggledIcon); - advancedButton.addActionListener(this); -// add(advancedButton, c); - } public int getRecursionDepthValue(){ @@ -222,11 +196,6 @@ useLitsCheckBox.setToolTipText("use Literals in SPARQL query"); } - private void showAdvancedPanel(){ - advancedPanel = new JPanel(); -... [truncated message content] |
From: <lor...@us...> - 2009-09-10 15:40:24
|
Revision: 1842 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1842&view=rev Author: lorenz_b Date: 2009-09-10 15:40:18 +0000 (Thu, 10 Sep 2009) Log Message: ----------- fixed ugly view of left-side panel in first wizard step when starting application Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.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/LeftPanel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java 2009-09-10 15:18:56 UTC (rev 1841) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java 2009-09-10 15:40:18 UTC (rev 1842) @@ -32,7 +32,7 @@ public class IntroductionPanelDescriptor extends WizardPanelDescriptor { public static final String IDENTIFIER = "INTRODUCTION_PANEL"; - public static final String INFORMATION = "Press \"Next\" button to go on"; + public static final String INFORMATION = ""; public IntroductionPanelDescriptor() { 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-10 15:18:56 UTC (rev 1841) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-10 15:40:18 UTC (rev 1842) @@ -21,9 +21,10 @@ package org.dllearner.tools.ore.ui.wizard.panels; -import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; import javax.swing.BorderFactory; import javax.swing.JLabel; @@ -46,70 +47,51 @@ private JScrollPane jScrollPane1; private JLabel welcomeTitle; - private JPanel contentPanel; + public IntroductionPanel() { + setLayout(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + c.gridwidth = GridBagConstraints.REMAINDER; + c.fill = GridBagConstraints.HORIZONTAL; + c.weightx = 1.0; + c.anchor = GridBagConstraints.NORTH; + + + //setLayout(new GridBagLayout()); + setBorder(BorderFactory.createEmptyBorder(12, 6, 12, 12)); - contentPanel = getContentPanel(); - - setLayout(new java.awt.BorderLayout()); - - - JPanel secondaryPanel = new JPanel(); - secondaryPanel.add(contentPanel, BorderLayout.NORTH); - add(contentPanel, BorderLayout.CENTER); - } - - - private JPanel getContentPanel() { + 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)); + welcomeTitle.setText("Welcome to the DL-Learner ORE-Tool!"); + add(welcomeTitle, c); - JPanel contentPanel1 = new JPanel(); - - JPanel jPanel1 = new JPanel(); - - contentPanel1.setLayout(new java.awt.BorderLayout()); - jScrollPane1 = new JScrollPane(); - instructionsField = new JTextArea(); - - - //setLayout(new GridBagLayout()); - setBorder(BorderFactory.createEmptyBorder(12, 6, 12, 12)); jScrollPane1.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); jScrollPane1.setViewportBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + instructionsField = new JTextArea(); 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.setRows(5); instructionsField.setFont(new Font("Serif", Font.PLAIN, 14)); instructionsField.setText("This is a tool for debugging end enriching OWL-ontologies. " - + "You are able to check ontologies for inconsistency and unsatisfiable classes.\n" + + "You are able to check ontologies for inconsistency and unsatisfiable classes. " + "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" + + "Another feature is to get equivalent class expressions for atomic classes, using an intelligent and efficient " + "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)); - welcomeTitle.setText("Welcome to the DL-Learner ORE-Tool!"); - contentPanel1.add(welcomeTitle, java.awt.BorderLayout.NORTH); + add(jScrollPane1, c); - jPanel1.setLayout(new java.awt.GridLayout(0, 1, 0, 0)); - jPanel1.add(jScrollPane1); - contentPanel1.add(jPanel1, java.awt.BorderLayout.CENTER); - - - - return contentPanel1; - + c.weighty = 1.0; + add(new JLabel(), c); } } 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-10 15:18:56 UTC (rev 1841) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java 2009-09-10 15:40:18 UTC (rev 1842) @@ -48,7 +48,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)); + 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. Debugging"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-10 15:19:03
|
Revision: 1841 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1841&view=rev Author: lorenz_b Date: 2009-09-10 15:18:56 +0000 (Thu, 10 Sep 2009) Log Message: ----------- fixed bug when loading from recent Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/PelletBug.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,50 @@ +package org.dllearner.tools.ore; + +import java.net.URI; +import java.util.Collections; + +import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDataProperty; +import org.semanticweb.owl.model.OWLDataPropertyDomainAxiom; +import org.semanticweb.owl.model.OWLDataRange; +import org.semanticweb.owl.model.OWLDataSomeRestriction; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLSubClassAxiom; + +import com.clarkparsia.explanation.PelletExplanation; + +public class PelletBug { + public static void main(String[] args) throws OWLOntologyCreationException { + String file = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl"; + String NS = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl"; + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLOntology ontology = manager.loadOntology(URI.create(file)); + Reasoner reasoner = new PelletReasonerFactory().createReasoner(manager); + reasoner.loadOntology(ontology); + + + OWLDataProperty property = factory.getOWLDataProperty(URI.create(NS + "#isHardWorking")); + OWLClass domain = factory.getOWLClass(URI.create(NS + "#Animal")); + OWLDataPropertyDomainAxiom axiom = factory.getOWLDataPropertyDomainAxiom(property, domain); + + PelletExplanation expGen = new PelletExplanation(manager, Collections.singleton(ontology)); + System.out.println(reasoner.isEntailed(axiom)); + +// System.out.println(expGen.getEntailmentExplanations(axiom)); +// +// OWLDataRange range = factory.getTopDataType(); +// OWLDataSomeRestriction dataSome = factory.getOWLDataSomeRestriction(property, range); +// OWLSubClassAxiom subClass = factory.getOWLSubClassAxiom(dataSome, domain); +// +// System.out.println(reasoner.isEntailed(subClass)); +// System.out.println(expGen.getEntailmentExplanations(subClass)); + + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RecentManager.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -39,8 +39,6 @@ } public List<URI> getURIs(){ - uriList.clear(); - deserialize(); return uriList; } @@ -62,7 +60,7 @@ } @SuppressWarnings("unchecked") - private void deserialize() { + public void deserialize() { try { FileInputStream fileStream = new FileInputStream(file); ObjectInputStream inputStream = new ObjectInputStream( @@ -77,7 +75,7 @@ inputStream.close(); } } catch (IOException e) { - e.printStackTrace(); + System.err.println("Can't read recent successfully opened URIs. Starting with empty list."); } catch (ClassNotFoundException e) { e.printStackTrace(); } Added: trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,24 @@ +package org.dllearner.tools.ore; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.dllearner.kb.sparql.SPARQLTasks; +import org.dllearner.kb.sparql.SparqlEndpoint; + +public class Sparql { + + /** + * @param args + * @throws MalformedURLException + */ + public static void main(String[] args) throws MalformedURLException { + URL url = new URL("http://dbpedia.org/sparql"); + SPARQLTasks task = new SPARQLTasks(SparqlEndpoint.getEndpointDBpedia());//new SparqlEndpoint(url)); + + String queryString = "SELECT DISTINCT ?class WHERE {?class rdf:type owl:Class ." + + "?class rdfs:label ?label . FILTER(regex(?label, \"City\")) }"; + System.out.println(task.queryAsSet(queryString, "class")); + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -6,9 +6,12 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.tools.ore.explanation.ExplanationException; +import org.dllearner.tools.ore.explanation.HSTExplanationGenerator; import org.dllearner.tools.ore.explanation.PelletExplanationGenerator; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.semanticweb.owl.apibinding.OWLManager; @@ -25,6 +28,9 @@ import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; +import com.clarkparsia.explanation.util.ExplanationProgressMonitor; +import com.clarkparsia.explanation.util.SilentExplanationProgressMonitor; + /* * This class computes laconic explanations for a given entailment. The algorithm is adapted from the paper * 'Laconic and Precise Justifications in OWL' from Matthew Horridge, Bijan Parsia and Ulrike Sattler. @@ -40,6 +46,11 @@ private Set<Explanation> allPreviouslyFoundExplanations; private OPlus oPlus; + public static final Logger log = Logger.getLogger(LaconicExplanationGenerator.class + .getName()); + + private ExplanationProgressMonitor progressMonitor = new SilentExplanationProgressMonitor(); + public LaconicExplanationGenerator(OWLOntologyManager manager, OWLReasonerFactory reasonerFactory, Set<OWLOntology> ontologies) { @@ -82,6 +93,11 @@ return lastRegularExplanations; } + public void setProgressMonitor(ExplanationProgressMonitor mon){ + this.progressMonitor = mon; + pelletExplanation.setProgressMonitor(progressMonitor); + } + /** * Computes the precise explanations * @param entailment @@ -89,15 +105,15 @@ * @return * @throws OWLException */ - public Set<Explanation> computePreciseJusts(OWLAxiom entailment, int limit) + private Set<Explanation> computePreciseJusts(OWLAxiom entailment, int limit) throws OWLException { Set<Explanation> regularExplanations = pelletExplanation .getExplanations((OWLAxiom) entailment); - System.out.println(new StringBuilder().append( - "Got regular justifications: ").append(regularExplanations.size()) - .toString()); + if (log.isLoggable(Level.CONFIG)){ + log.config("Found " + regularExplanations.size() + " regular explanations"); + } lastRegularExplanations.clear(); lastRegularExplanations.addAll(regularExplanations); allPreviouslyFoundExplanations = new HashSet<Explanation>(); @@ -105,11 +121,13 @@ Set<Explanation> nonLaconicExplanations = new HashSet<Explanation>(); Set<Explanation> laconicExplanations = new HashSet<Explanation>(); Set<OWLAxiom> axiomsInPreviousOntology = new HashSet<OWLAxiom>(); - long counter = 0L; + for (;;) { - counter++; - System.out.println(new StringBuilder().append("Count ").append( - counter).toString()); + if (progressMonitor.isCancelled()) { + return laconicExplanations; + } + + Set<OWLAxiom> unionOfAllExplanations = new HashSet<OWLAxiom>(); for (Explanation expl : allPreviouslyFoundExplanations) { unionOfAllExplanations.addAll(expl.getAxioms()); @@ -129,8 +147,9 @@ if (extendedOntology.getLogicalAxioms().equals( axiomsInPreviousOntology)) { - System.out - .println("\t ***** No change in ontology. Early termination."); + if (log.isLoggable(Level.CONFIG)){ + log.config(""); + } break; } // man2.saveOntology(extendedOnt, @@ -283,7 +302,7 @@ throws ExplanationException { Set<Explanation> explanations; try { - explanations = computePreciseJusts(entailment, 2147483647); + explanations = computePreciseJusts(entailment, Integer.MAX_VALUE); } catch (OWLException e) { throw new ExplanationException(e); } @@ -292,6 +311,8 @@ public Set<Explanation> getExplanations(OWLAxiom entailment, int limit) throws ExplanationException { + if (log.isLoggable(Level.CONFIG)) + log.config("Get " + (limit == Integer.MAX_VALUE ? "all" : limit) + " explanation(s) for: " + entailment); Set<Explanation> explanations; try { explanations = computePreciseJusts(entailment, limit); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt =================================================================== (Binary files differ) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -289,7 +289,7 @@ for (OWLMetricManager man : metricManagerMap.values()) { man.setOntology(activeOntology); } - TitledBorder border = new TitledBorder(activeOntology.getURI().toString()); + TitledBorder border = new TitledBorder(activeOntology.getURI().toString() + " successfully loaded"); border.setTitleFont(getFont().deriveFont(Font.BOLD, 12.0f)); border.setTitleColor(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty(ProtegeProperties.PROPERTY_COLOR_KEY), Color.GRAY)); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,191 @@ +package org.dllearner.tools.ore.ui; + +//Imports for the GUI classes. +import java.awt.*; +import javax.swing.*; +import java.awt.event.*; + +/** + * RoundButton.java - + * A custom JComponent that is a round button. The round button + * will be empty until the mouse enters the circle. When the + * mouse enters the circle it will be filled in with a specified + * color. Then when the mouse is pressed the color will change + * to a second specified color. Note that RoundButton "is a" + * MouseListener so it can handle its own MouseEvents. + * + * @author Grant William Braught + * @author Dickinson College + * @version 11/29/2000 + */ +public class RoundButton + extends JComponent + implements MouseListener { + + private Color mouseOverColor; + private Color mousePressedColor; + + private boolean mouseOver; + private boolean mousePressed; + + + /** + * Construct a new RoundButton with the specified + * colors for mouse over and mouse pressed events. + * + * @param mouseOverColor the color the button should + * be filled with when the mouse is + * over the button. + * @param mousePressedColor the color the button should be + * filled with when the mouse + * is pressed on the button. + */ + public RoundButton(Color mouseOverColor, + Color mousePressedColor) { + this.mouseOverColor = mouseOverColor; + this.mousePressedColor = mousePressedColor; + mouseOver = false; + mousePressed = false; + + // Make this object a MouseListener for itself. This + // ensures that the MouseEvents ocurring on this JComponet + // will be routed to this object. NOTE: "this" is a + // reference to a RoundButton and a RoundButton "is a" + // JComponent so it has an addMouseListener() method that + // accepts a MouseListener object. Since RoundButton + // implements MouseListener it "is a" MouseListener. + this.addMouseListener(this); + } + + /** + * Default constructor that sets the mouse over color + * to blue and the mouse pressed color to red. + */ + public RoundButton() { + this(Color.blue, Color.red); + } + + /** + * Paint the RoundButton on the screen each time the + * window is redrawn. Recall that the paint() method + * of each JComponent in the content pane is called + * automatically when the window is redrawn. This + * overrides paint() from JComponent so we have control + * over what the RoundButton will look like when it is + * painted. + * + * @param g the Graphics context on which to paint the + * button. + */ + public void paint(Graphics g) { + // Check mouse pressed first because if the mouse + // is pressed it will also be in the button. + if (mousePressed && mouseOver) { + g.setColor(mousePressedColor); + g.fillOval(0,0,100,100); + } + else if (mouseOver) { + g.setColor(mouseOverColor); + g.fillOval(0,0,100,100); + } + else { + g.setColor(Color.black); + g.drawOval(0,0,100,100); + } + } + + /** + * Return the minimum size that our button would + * like to be. This overrides getMinimumSize from + * JComponent which returns 0x0. + * + * @return the minimum size of the RoundButton. + */ + public Dimension getMinimumSize() { + return new Dimension(100,100); + } + + /** + * Return the ideal size that our button would + * like to be. This overrides the getPreferredSize + * from JComponent which returns 0x0. + * + * @return the preferred size of the RoundButton. + */ + public Dimension getPreferredSize() { + return new Dimension(100,100); + } + + // Methods from the MouseListener Interface. + /** + * Handler called when the mouse is clicked on + * the RoundButton. + * + * @param e reference to a MouseEvent object describing + * the mouse click. + */ + public void mouseClicked(MouseEvent e) {} + + /** + * Handler called when the mouse enters the + * RoundButton. This is called when the mouse + * enters the bounding rectangle of the JComponent + * not when it enters the circle! (See RoundButton2 + * for a fix.) + * + * @param e reference to a MouseEvent object describing + * the mouse entry. + */ + public void mouseEntered(MouseEvent e) { + mouseOver = true; + + // Calling repaint() causes the component to be repainted. + // repaint() makes a call to paint() but also does a few + // other things related to the maintainence of the window + // and layout. Therefore, you should never call paint() + // directly. If you want the component to be repainted, + // call repaint(). + repaint(); + } + + /** + * Handler called when the mouse exits the + * RoundButton. Again, this is called when the + * mouse exits the bounding rectangle. + * + * @param e reference to a MouseEvent object describing + * the mouse exit. + */ + public void mouseExited(MouseEvent e) { + mouseOver = false; + repaint(); + } + + /** + * Handler called when the mouse button is pressed + * over the RoundButton. Again this is called if the + * button is pressed anywhere within the bounding + * rectangle. + * + * @param e reference to a MouseEvent object describing + * the mouse press. + */ + public void mousePressed(MouseEvent e) { + mousePressed = true; + repaint(); + } + + /** + * Handler called when the mosue button is released + * over the RoundButton. Blah... Blah.. bounding + * rectangle. + * + * @param e reference to a MouseEvent object describing + * the mouse release. + */ + public void mouseReleased(MouseEvent e) { + mousePressed = false; + repaint(); + } +} + Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton2.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,126 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +import javax.swing.ImageIcon; +import javax.swing.JComponent; +import javax.swing.UIManager; + +public class RoundButton2 extends JComponent implements MouseListener{ + String title; + ImageIcon ico; + ActionListener a; + String ac; + boolean p,pressed; + public RoundButton2(String title){ + this(title,new ImageIcon()); + } + public RoundButton2(ImageIcon ico){ + this("",ico); + } + public RoundButton2(){ + this("",new ImageIcon()); + } + public RoundButton2(String title,ImageIcon ico){ + this.title=title; + this.ico=ico; + p=pressed=false; + getInsets().set(15,15,15,15); + addMouseListener(this); + } + public Dimension getPreferredSize() { + Rectangle bounds=getBounds(); + return(new Dimension(new Double(bounds.getWidth()).intValue()+ + getInsets().left+getInsets().left, + new Double(bounds.getHeight()).intValue()+ + getInsets().top+getInsets().bottom)); + } + public Dimension getMinimumSize() { + return(getPreferredSize()); + } + public Dimension getMaximumSize() { + return(getPreferredSize()); + } + boolean onbutton(MouseEvent m){ + double + a=getBounds().getWidth()/2, + b=getBounds().getHeight()/2, + x=new Integer(m.getX()).doubleValue()-a, + y=new Integer(m.getY()).doubleValue()-b, + w=b/a*Math.sqrt(( (a*a) - (x*x) )); + return( y<= w && y>=-w ); + } + public void mouseClicked(MouseEvent e){} + public void mouseEntered(MouseEvent e){ + p=true; + if(pressed)repaint(); + } + public void mouseExited(MouseEvent e){ + if(pressed)repaint(); + } + public void mousePressed(MouseEvent e){ + pressed=true;if(onbutton(e)){p=true; repaint(); } + } + public void mouseReleased(MouseEvent e){ + pressed=false; + if(onbutton(e)){repaint();} + if(ac==null)ac=""; + if(a!=null) a.actionPerformed(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,ac)); + } + protected void paintComponent(Graphics g){ + Graphics2D g2=(Graphics2D)g; + Rectangle bounds=getBounds(); + Color t=g.getColor(); + int j=0; + g.setColor(UIManager.getColor("Button.background").brighter()); + if(p){ + j=1;p=false; + g.setColor(UIManager.getColor("Button.background").darker().darker()); + } + g.fillArc( + j,j, + new Double(bounds.getWidth()).intValue()-4, + new Double(bounds.getHeight()).intValue()-4, + 0, + 360); + g.setColor(UIManager.getColor("Button.background").darker().darker()); + g.fillArc( + 3,3, + new Double(bounds.getWidth()).intValue()-4, + new Double(bounds.getHeight()).intValue()-4, + 45, + -180); + g.setColor(UIManager.getColor("Button.background")); + g.fillArc( + 2+j,2+j, + new Double(bounds.getWidth()).intValue()-6, + new Double(bounds.getHeight()).intValue()-6, + 0, + 360); + g.drawImage( + ico.getImage(), + new Double((double)bounds.getWidth()/8).intValue()+j, + new Double((double)bounds.getHeight()/8).intValue()+j, + new Double((double)bounds.getWidth()*.75).intValue(), + new Double((double)bounds.getHeight()*.75).intValue(), + ico.getImageObserver() + ); + g.setColor(UIManager.getColor("Button.background").darker().darker()); + g.drawString(title.trim(), + new Double((double)bounds.getWidth()/2).intValue()+j, + new Double((double)bounds.getHeight()/2).intValue()+j + ); + g.setColor(t); + } + public void addActionListener(ActionListener e){a=e;} + public void removeActionListener(ActionListener e){a=null;} + public void setActionCommand(String c){ac=c;} +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RoundButton3.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -0,0 +1,75 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.geom.Ellipse2D; + +import javax.swing.Action; +import javax.swing.BorderFactory; +import javax.swing.DefaultButtonModel; +import javax.swing.Icon; +import javax.swing.JButton; + +class RoundButton3 extends JButton { + public RoundButton3() { + this(null, null); + } + public RoundButton3(Icon icon) { + this(null, icon); + } + public RoundButton3(String text) { + this(text, null); + } + public RoundButton3(Action a) { + this(); + setAction(a); + } + public RoundButton3(String text, Icon icon) { + setModel(new DefaultButtonModel()); + init(text, icon); + if(icon==null) { + return; + } + int iw = Math.max(icon.getIconWidth(), icon.getIconHeight()); + int sw = 1; + setBorder(BorderFactory.createEmptyBorder(sw,sw,sw,sw)); + Dimension dim = new Dimension(iw+sw+sw, iw+sw+sw); + setPreferredSize(dim); + setMaximumSize(dim); + setMinimumSize(dim); + setBackground(Color.BLACK); + setContentAreaFilled(false); + setFocusPainted(false); + //setVerticalAlignment(SwingConstants.TOP); + setAlignmentY(Component.TOP_ALIGNMENT); + initShape(); + } + protected Shape shape, base; + protected void initShape() { + if(!getBounds().equals(base)) { + Dimension s = getPreferredSize(); + base = getBounds(); + shape = new Ellipse2D.Float(0, 0, s.width-1, s.height-1); + } + } + @Override + protected void paintBorder(Graphics g) { + initShape(); + Graphics2D g2 = (Graphics2D)g; + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2.setColor(getBackground()); + //g2.setStroke(new BasicStroke(1.0f)); + g2.draw(shape); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); + } + @Override + public boolean contains(int x, int y) { + initShape(); + return shape.contains(x, y); + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -46,6 +46,7 @@ import javax.swing.UIManager; import javax.swing.border.EmptyBorder; +import org.dllearner.tools.ore.RecentManager; import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.ui.StatusBar; import org.dllearner.tools.ore.ui.wizard.panels.LeftPanel; @@ -462,6 +463,8 @@ TaskManager.getInstance().setDialog(wizardDialog); TaskManager.getInstance().setStatusBar(statusBar); + + RecentManager.getInstance().deserialize(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-10 11:37:40 UTC (rev 1840) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-10 15:18:56 UTC (rev 1841) @@ -52,8 +52,8 @@ public class KnowledgeSourcePanelDescriptor extends WizardPanelDescriptor implements ActionListener{ public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; - public static final String INFORMATION = "Choose an OWL-ontology from filesystem or URI. Your are also able to extract a fragment " + - "from a SPARQL-endpoint. After all press <Next>"; + public static final String INFORMATION = "Choose an OWL-ontology from filesystem or URI. Your can also extract a fragment " + + "from a SPARQL endpoint. When finished, press <Next>."; private KnowledgeSourcePanel knowledgePanel; @@ -172,6 +172,7 @@ } private void handleOpenFromRecent(URI uri){ + currentURI = uri; OREManager.getInstance().setCurrentKnowledgeSource( uri); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-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. |
From: <lor...@us...> - 2009-09-08 09:30:46
|
Revision: 1839 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1839&view=rev Author: lorenz_b Date: 2009-09-08 09:30:35 +0000 (Tue, 08 Sep 2009) Log Message: ----------- some small changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -90,6 +91,13 @@ } } + public Set<OWLClass> getUnsatisfiableClasses(){ + Set<OWLClass> unsat = new HashSet<OWLClass>(); + unsat.addAll(rootFinder.getRootClasses()); + unsat.addAll(rootFinder.getDerivedClasses()); + return unsat; + } + public Set<Explanation> getUnsatisfiableExplanations(OWLClass unsat) { OWLSubClassAxiom entailment = dataFactory.getOWLSubClassAxiom(unsat, Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -326,6 +326,9 @@ parts.remove(part);System.out.println("removed part: " + part); for(OWLAxiom pa : parts){ System.out.println("Part : " + pa + "has source : " + oPlus.getAxiomsMap().get(pa)); + if(oPlus.getAxiomsMap().get(pa).size() == 1){ + System.out.println("important: " + pa); + } } return rebuildAxioms(parts); @@ -333,7 +336,7 @@ private Set<OWLAxiom> rebuildAxioms(Set<OWLAxiom> axioms){ Map<OWLAxiom, Set<OWLAxiom>> sourceAxioms2OPlus = new HashMap<OWLAxiom, Set<OWLAxiom>>(); - + for (OWLAxiom ax : axioms) { if (ontology.containsAxiom(ax)) { sourceAxioms2OPlus.put(ax, computeOPlus(Collections @@ -343,26 +346,28 @@ Map<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>> lhs2SubClassAxiom = new HashMap<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>>(); Set<OWLAxiom> reconstituedAxioms = new HashSet<OWLAxiom>(); - for (OWLAxiom laconicAx : axioms) {System.out.println("Laconic Axiom: "+ laconicAx); + for (OWLAxiom laconicAx : axioms) { + + if (laconicAx instanceof OWLSubClassAxiom) { OWLSubClassAxiom subAx = (OWLSubClassAxiom) laconicAx; - if (subAx.getSubClass().isAnonymous()) {System.out.println(" has anomymous subclass ");System.out.println("has source axioms: " +oPlus.getAxiomsMap().get(subAx)); - reconstituedAxioms.add(subAx);System.out.println("adding to rebuildet axioms"); - } else {System.out.println("has no anonymous subclass"); + if (subAx.getSubClass().isAnonymous()) { + reconstituedAxioms.add(subAx); + } else { Map<OWLAxiom, Set<OWLSubClassAxiom>> source2AxiomMap = lhs2SubClassAxiom.get(subAx.getSubClass().asOWLClass()); if (source2AxiomMap == null) { source2AxiomMap = new HashMap<OWLAxiom, Set<OWLSubClassAxiom>>(); lhs2SubClassAxiom.put(subAx.getSubClass().asOWLClass(), source2AxiomMap); } - for (OWLAxiom sourceAxiom : sourceAxioms2OPlus.keySet()) {System.out.println("source axiom: " + sourceAxiom); + for (OWLAxiom sourceAxiom : sourceAxioms2OPlus.keySet()) { if ((sourceAxioms2OPlus.get(sourceAxiom)).contains(subAx)) { Set<OWLSubClassAxiom> subClassAxioms = source2AxiomMap.get(sourceAxiom); if (subClassAxioms == null) { subClassAxioms = new HashSet<OWLSubClassAxiom>(); source2AxiomMap.put(sourceAxiom, subClassAxioms); } - subClassAxioms.add(subAx);System.out.println("-->subclass axioms: " + subClassAxioms); + subClassAxioms.add(subAx); } } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -105,23 +105,23 @@ { for(OWLAxiom axiom : axioms){ - Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); - if(existing == null) +// Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); +// if(existing == null) +// { +// existing = new HashSet<OWLAxiom>(); +// axiomsMap.put(axiom, existing); +// } +// existing.add(source); + if(!axiom.equals(source)) { - existing = new HashSet<OWLAxiom>(); - axiomsMap.put(axiom, existing); + Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); + if(existing == null) + { + existing = new HashSet<OWLAxiom>(); + axiomsMap.put(axiom, existing); + } + existing.add(source); } - existing.add(source); -// if(!axiom.equals(source)) -// { -// Set<OWLAxiom> existing = (Set<OWLAxiom>)axiomsMap.get(axiom); -// if(existing == null) -// { -// existing = new HashSet<OWLAxiom>(); -// axiomsMap.put(axiom, existing); -// } -// existing.add(source); -// } } return axioms; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -17,6 +17,7 @@ import javax.swing.UIManager; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import javax.swing.table.JTableHeader; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; @@ -40,6 +41,16 @@ private RepairManager repMan; + protected String[] columnToolTips = { + null, // "First Name" assumed obvious + // "Last Name" assumed obvious + "The number of already computed explanations where the axiom occurs.", + "TODO", + "If checked, the axiom is selected to remove from the ontology.", + "Edit the axiom." + }; + + public ExplanationTable(Explanation exp, OWLClass cl) { repMan = RepairManager.getInstance(OREManager.getInstance()); @@ -54,10 +65,11 @@ column5.setCellEditor(new ButtonCellEditor()); column5.setResizable(false); setRowHeight(getRowHeight() + 4); - getColumn(1).setMaxWidth(30); - getColumn(2).setMaxWidth(30); + getColumn(1).setMaxWidth(60); + getColumn(2).setMaxWidth(60); getColumn(3).setMaxWidth(30); getColumn(4).setMaxWidth(30); + getSelectionModel().addListSelectionListener( new ListSelectionListener() { @@ -113,6 +125,26 @@ }); } + @Override + protected JTableHeader createDefaultTableHeader() { + return new JTableHeader(columnModel) { + /** + * + */ + private static final long serialVersionUID = -3386641672808329591L; + + public String getToolTipText(MouseEvent e) { + String tip = null; + java.awt.Point p = e.getPoint(); + int index = columnModel.getColumnIndexAtX(p.x); + int realIndex = + columnModel.getColumn(index).getModelIndex(); + return columnToolTips[realIndex]; + } + }; + + } + private void changeSelection() { } @@ -182,23 +214,19 @@ } } - @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { - repaint(); - + repaint(); } @Override public void repairPlanChanged() { repaint(); - } @Override public void dispose() throws Exception { repMan.removeListener(this); - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -135,6 +135,19 @@ return expMan.getOrdering(exp).get(rowIndex).keySet().iterator().next(); } + @Override + public String getColumnName(int column) { + if(column == 0){ + return "Axiom"; + } else if(column == 1){ + return "Arity"; + } else if(column == 2){ + return "Usage"; + } else { + return ""; + } + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTablePanel.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTablePanel.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -22,11 +22,11 @@ public ExplanationTablePanel(JXTable explanationTable, int explanationNumber){ this.explanationTable = explanationTable; this.explanationNumber = explanationNumber; - createGUI(); + createUI(); } - private void createGUI(){ + private void createUI(){ setLayout(new BorderLayout(2, 2)); JLabel label = new JLabel(new StringBuilder().append("Explanation ").append(explanationNumber).toString()); add(label, BorderLayout.NORTH); @@ -34,6 +34,7 @@ Border emptyBorder = BorderFactory.createEmptyBorder(0, 20, 0, 0); Border lineBorder = BorderFactory.createLineBorder(Color.LIGHT_GRAY); tablePanel.setBorder(BorderFactory.createCompoundBorder(emptyBorder, lineBorder)); + tablePanel.add(explanationTable.getTableHeader(), BorderLayout.NORTH); tablePanel.add(explanationTable); add(tablePanel); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -5,9 +5,12 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.OREManager; import org.dllearner.utilities.owl.OWLAPIConverter; import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLIndividual; import org.semanticweb.owl.model.OWLObject; @@ -84,7 +87,18 @@ String token; while(st.hasMoreTokens()){ token = st.nextToken(); + boolean unsatClass = false; + for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ + if(cl.toString().equals(token)){ + unsatClass = true; + break; + } + } String color = "black"; + if(unsatClass){ + color = "red"; + } + boolean isReserved = false; for(Keyword key : Keyword.values()){ if(token.equals(key.getLabel())){ @@ -92,7 +106,7 @@ isReserved = true;break; } } - if(isReserved){ + if(isReserved || unsatClass){ bf.append("<b><font color=" + color + ">" + token + " </font></b>"); } else { bf.append(" " + token + " "); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -5,10 +5,11 @@ import javax.swing.table.DefaultTableCellRenderer; +import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.ImpactManager; import org.dllearner.tools.ore.OREManager; -import org.dllearner.tools.ore.RepairManager; import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; import com.clarkparsia.explanation.io.manchester.Keyword; import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxObjectRenderer; @@ -85,7 +86,20 @@ String token; while(st.hasMoreTokens()){ token = st.nextToken(); + + boolean unsatClass = false; + for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ + if(cl.toString().equals(token)){ + unsatClass = true; + break; + } + } String color = "black"; + if(unsatClass){ + color = "red"; + } + + boolean isReserved = false; for(Keyword key : Keyword.values()){ if(token.equals(key.getLabel())){ @@ -93,7 +107,7 @@ isReserved = true;break; } } - if(isReserved){ + if(isReserved || unsatClass){ bf.append("<b><font color=" + color + ">" + token + " </font></b>"); } else { bf.append(" " + token + " "); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -21,6 +21,7 @@ private static final long serialVersionUID = 537629900742120594L; private RepairManager repMan; private JButton undoButton; + private JButton applyButton; public RepairPlanPanel() { this.repMan = RepairManager.getInstance(OREManager.getInstance()); @@ -42,10 +43,11 @@ } }); + undoButton.setToolTipText("Undo former applied changes."); undoButton.setEnabled(false); buttonPanel.add(undoButton); - buttonPanel.add(new JButton(new AbstractAction("Apply") { + applyButton = new JButton(new AbstractAction("Apply") { /** * @@ -56,7 +58,9 @@ computeRepairPlan(); } - })); + }); + applyButton.setToolTipText("Apply changes in repairplan."); + buttonPanel.add(applyButton); JScrollPane repScr = new JScrollPane(new RepairTable()); repScr.setBackground(null); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -2,14 +2,9 @@ import java.awt.Color; import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; -import javax.swing.AbstractAction; -import javax.swing.JPopupMenu; - import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.OREManager; import org.jdesktop.swingx.JXTable; @@ -32,8 +27,9 @@ setTableHeader(null); setGridColor(Color.LIGHT_GRAY); getColumn(0).setMaxWidth(20); - + setRowHeight(getRowHeight() + 4); getColumn(0).setCellRenderer(new UnsatClassesTableCellRenderer(expMan)); + // setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // addMouseListener(new MouseAdapter() { @@ -65,20 +61,20 @@ // }); } - private void showPopupMenu(MouseEvent e){ - JPopupMenu menu = new JPopupMenu(); - menu.add(new AbstractAction("Why is derived class?") { - final UnsatisfiableClassesTable table = UnsatisfiableClassesTable.this; - - public void actionPerformed(ActionEvent e) - { - - } - - - }); - menu.show(this, e.getX(), e.getY()); - } +// private void showPopupMenu(MouseEvent e){ +// JPopupMenu menu = new JPopupMenu(); +// menu.add(new AbstractAction("Why is derived class?") { +// final UnsatisfiableClassesTable table = UnsatisfiableClassesTable.this; +// +// public void actionPerformed(ActionEvent e) +// { +// +// } +// +// +// }); +// menu.show(this, e.getX(), e.getY()); +// } @Override public Dimension getPreferredScrollableViewportSize() { @@ -99,7 +95,7 @@ List<OWLClass> selectedClasses = new ArrayList<OWLClass>(getSelectedRows().length); int[] rows = getSelectedRows(); for(int i = 0; i < rows.length; i++){ - selectedClasses.add((OWLClass)((UnsatisfiableClassesTableModel)getModel()).getValueAt(rows[i], 0)); + selectedClasses.add(((UnsatisfiableClassesTableModel)getModel()).getClassAt(rows[i])); } return selectedClasses; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTableModel.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -40,7 +40,11 @@ @Override public Object getValueAt(int rowIndex, int columnIndex) { - return unsatClasses.get(rowIndex); + if(columnIndex == 0){ + return unsatClasses.get(rowIndex); + } else { + return "<html><b><font color=\"red\">" + unsatClasses.get(rowIndex).toString() + " </font></b></html>"; + } } public void addUnsatClasses(List<OWLClass> unsatClasses){ @@ -53,5 +57,9 @@ this.unsatClasses.clear(); fireTableDataChanged(); } + + public OWLClass getClassAt(int rowIndex){ + return unsatClasses.get(rowIndex); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-07 13:47:42 UTC (rev 1838) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-08 09:30:35 UTC (rev 1839) @@ -48,7 +48,7 @@ public class KnowledgeSourcePanelDescriptor extends WizardPanelDescriptor implements ActionListener{ public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; - public static final String INFORMATION = "Choose an OWL-ontology from file system or URI. Your are also able to extract a fragment " + + public static final String INFORMATION = "Choose an OWL-ontology from filesystem or URI. Your are also able to extract a fragment " + "from a SPARQL-endpoint. After all press <Next>"; private KnowledgeSourcePanel knowledgePanel; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-07 13:47:52
|
Revision: 1838 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1838&view=rev Author: lorenz_b Date: 2009-09-07 13:47:42 +0000 (Mon, 07 Sep 2009) Log Message: ----------- added some informations about the current loaded ontology Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -12,9 +12,8 @@ private static TaskManager instance; private SwingWorker<?, ?> currentTask; + - private Thread currentThread; - private StatusBar statusBar; private JDialog dialog; @@ -30,6 +29,10 @@ this.statusBar = statusBar; } + public StatusBar getStatusBar(){ + return statusBar; + } + public void setDialog(JDialog dialog){ this.dialog = dialog; } @@ -42,10 +45,6 @@ this.currentTask = task; } - public void setCurrentThread(Thread t){ - this.currentThread = t; - } - public void cancelCurrentTask(){ if(currentTask != null && !currentTask.isCancelled() && !currentTask.isDone()){ currentTask.cancel(true); @@ -54,8 +53,7 @@ // dialog.setCursor(null); } - public synchronized void cancelCurrentThread(){currentThread.stop(); - } + public void setTaskStarted(String message){ dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -10,6 +10,7 @@ import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; import org.dllearner.tools.ore.RepairManagerListener; +import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.explanation.laconic.LaconicExplanationGenerator; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; @@ -128,6 +129,7 @@ } axiom2Module.put(entailment, module); regularExpGen = new PelletExplanationGenerator(manager, Collections.singleton(module)); + regularExpGen.setProgressMonitor(TaskManager.getInstance().getStatusBar()); if(limit == -1){ explanations = regularExpGen.getExplanations(entailment); } else { Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/HSTExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -0,0 +1,389 @@ +package org.dllearner.tools.ore.explanation; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.semanticweb.owl.inference.OWLClassReasoner; +import org.semanticweb.owl.inference.OWLReasonerFactory; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLDeclarationAxiom; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLEntity; +import org.semanticweb.owl.model.OWLException; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLRuntimeException; +import org.semanticweb.owl.util.OWLEntityCollector; + +import com.clarkparsia.explanation.MultipleExplanationGenerator; +import com.clarkparsia.explanation.TransactionAwareSingleExpGen; +import com.clarkparsia.explanation.util.ExplanationProgressMonitor; +import com.clarkparsia.explanation.util.OntologyUtils; +import com.clarkparsia.explanation.util.SilentExplanationProgressMonitor; + +/* +* Copyright (C) 2007, Clark & Parsia +* +* Modifications to the initial code base are copyright of their +* respective authors, or their employers as appropriate. Authorship +* of the modifications may be determined from the ChangeLog placed at +* the end of this file. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. + +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. + +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +/** + * <p/> + * Description: An implementation of MultipleExplanationGenerator interface + * using Reiter's Hitting Set Tree (HST) algorithm as described in Aditya + * Kalyanpur's thesis. This class relies on a SingleExplanationGenerator that + * can compute a minimal set of axioms that cause the unsatisfiability. The + * core of the functionality is based on Matthew Horridge's implementation. + * </p> + * <p/> + * Copyright: Copyright (c) 2007 + * </p> + * <p/> + * Company: Clark & Parsia, LLC. <http://www.clarkparsia.com> + * </p> + * @author Evren Sirin + */ +public class HSTExplanationGenerator implements MultipleExplanationGenerator { + + public static final Logger log = Logger.getLogger(HSTExplanationGenerator.class + .getName()); + + private TransactionAwareSingleExpGen singleExplanationGenerator; + + private ExplanationProgressMonitor progressMonitor = new SilentExplanationProgressMonitor(); + + private static OWLEntityCollector collector; + + public HSTExplanationGenerator(TransactionAwareSingleExpGen singleExplanationGenerator) { + this.singleExplanationGenerator = singleExplanationGenerator; + + collector = new OWLEntityCollector(); + collector.setCollectDataTypes( false ); + } + + + public void setProgressMonitor(ExplanationProgressMonitor progressMonitor) { + this.progressMonitor = progressMonitor; + } + + + public OWLOntologyManager getOntologyManager() { + return singleExplanationGenerator.getOntologyManager(); + } + + /** + * @deprecated + */ + public OWLOntology getOntology() { + return singleExplanationGenerator.getOntology(); + } + + public Set<OWLOntology> getOntologies() { + return singleExplanationGenerator.getOntologies(); + } + + public void setOntology(OWLOntology ontology) { + singleExplanationGenerator.setOntology(ontology); + } + + public void setOntologies(Set<OWLOntology> ontologies) { + singleExplanationGenerator.setOntologies(ontologies); + } + + + public OWLClassReasoner getReasoner() { + return singleExplanationGenerator.getReasoner(); + } + + + public void setReasoner(OWLClassReasoner reasoner) { + singleExplanationGenerator.setReasoner(reasoner); + } + + + public OWLReasonerFactory getReasonerFactory() { + return singleExplanationGenerator.getReasonerFactory(); + } + + + public void setReasonerFactory(OWLReasonerFactory reasonerFactory) { + singleExplanationGenerator.setReasonerFactory(reasonerFactory); + } + + + public TransactionAwareSingleExpGen getSingleExplanationGenerator() { + return singleExplanationGenerator; + } + + + public Set<OWLAxiom> getExplanation(OWLDescription unsatClass) { + return singleExplanationGenerator.getExplanation(unsatClass); + } + + + public Set<Set<OWLAxiom>> getExplanations(OWLDescription unsatClass) { + return getExplanations(unsatClass, 0); + } + + + public Set<Set<OWLAxiom>> getExplanations(OWLDescription unsatClass, int maxExplanations) { + if (maxExplanations < 0) + throw new IllegalArgumentException(); + + if (log.isLoggable(Level.CONFIG)) + log.config("Get " + (maxExplanations == 0 ? "all" : maxExplanations) + " explanation(s) for: " + unsatClass); + + try { + Set<OWLAxiom> firstMups = getExplanation(unsatClass); + if (firstMups.isEmpty()) { + return Collections.emptySet(); + } + Set<Set<OWLAxiom>> allMups = new LinkedHashSet<Set<OWLAxiom>>(); + progressMonitor.foundExplanation(firstMups); + allMups.add(firstMups); + Set<Set<OWLAxiom>> satPaths = new HashSet<Set<OWLAxiom>>(); + Set<OWLAxiom> currentPathContents = new HashSet<OWLAxiom>(); + singleExplanationGenerator.beginTransaction(); + try { + constructHittingSetTree(unsatClass, firstMups, allMups, satPaths, currentPathContents, maxExplanations); + } finally { + singleExplanationGenerator.endTransaction(); + } + progressMonitor.foundAllExplanations(); + return allMups; + } + catch (OWLException e) { + throw new OWLRuntimeException(e); + } + } + + //////////////////////////////////////////////////////////////////////////////////////////// + // + // Hitting Set Stuff + // + /////////////////////////////////////////////////////////////////////////////////////////// + + + /** + * Orders the axioms in a single MUPS by the frequency of which they appear + * in all MUPS. + * @param mups The MUPS containing the axioms to be ordered + * @param allMups The set of all MUPS which is used to calculate the ordering + */ + private static List<OWLAxiom> getOrderedMUPS(List<OWLAxiom> mups, final Set<Set<OWLAxiom>> allMups) { + Comparator<OWLAxiom> mupsComparator = new Comparator<OWLAxiom>() { + public int compare(OWLAxiom o1, OWLAxiom o2) { + // The axiom that appears in most MUPS has the lowest index + // in the list + int occ1 = getOccurrences(o1, allMups); + int occ2 = getOccurrences(o2, allMups); + return -occ1 + occ2; + } + }; + Collections.sort(mups, mupsComparator); + return mups; + } + + + /** + * Given an axiom and a set of axioms this method determines how many sets + * contain the axiom. + * @param ax The axiom that will be counted. + * @param axiomSets The sets to count from + */ + private static int getOccurrences(OWLAxiom ax, Set<Set<OWLAxiom>> axiomSets) { + int count = 0; + for (Set<OWLAxiom> axioms : axiomSets) { + if (axioms.contains(ax)) { + count++; + } + } + return count; + } + + /** + * Returns the entities referenced in an axiom. + * @param axiom axiom whose signature is being computed + * @return the entities referenced in the axiom + */ + private Set<OWLEntity> getSignature(OWLAxiom axiom) { + collector.reset(); + + axiom.accept( collector ); + + return new HashSet<OWLEntity>( collector.getObjects() ); + } + + + /** + * This is a recursive method that builds a hitting set tree to obtain all + * justifications for an unsatisfiable class. + * @param mups The current justification for the current class. This + * corresponds to a node in the hitting set tree. + * @param allMups All of the MUPS that have been found - this set gets populated + * over the course of the tree building process. Initially this + * should just contain the first justification + * @param satPaths Paths that have been completed. + * @param currentPathContents The contents of the current path. Initially this should be an + * empty set. + */ + private void constructHittingSetTree(OWLDescription unsatClass, Set<OWLAxiom> mups, Set<Set<OWLAxiom>> allMups, + Set<Set<OWLAxiom>> satPaths, Set<OWLAxiom> currentPathContents, + int maxExplanations) throws OWLException { + + if (log.isLoggable(Level.FINE)) + log.fine("MUPS " + allMups.size() + ": " + mups); + + if (progressMonitor.isCancelled()) { + return; + } + + // We go through the current mups, axiom by axiom, and extend the tree + // with edges for each axiom + List<OWLAxiom> orderedMups = getOrderedMUPS(new ArrayList<OWLAxiom>(mups), allMups); + + while (!orderedMups.isEmpty()) { + if (progressMonitor.isCancelled()) { + return; + } + OWLAxiom axiom = orderedMups.get(0); + orderedMups.remove(0); + if (allMups.size() == maxExplanations) { + if (log.isLoggable(Level.FINE)) + log.fine("Computed " + maxExplanations + "explanations"); + return; + } + + if (log.isLoggable(Level.FINE)) + log.fine("Removing axiom: " + axiom + " " + currentPathContents.size() + " more removed: " + currentPathContents); + + // Remove the current axiom from all the ontologies it is included + // in + + Set<OWLOntology> ontologies = OntologyUtils.removeAxiom(axiom, getReasoner() + .getLoadedOntologies(), getOntologyManager()); + + // Removal may have dereferenced some entities, if so declarations are added + Set<OWLEntity> sig = getSignature( axiom ); + List<OWLDeclarationAxiom> temporaryDeclarations = new ArrayList<OWLDeclarationAxiom>( + sig.size() ); + for( OWLEntity e : sig ) { + boolean referenced = false; + for( Iterator<OWLOntology> i = ontologies.iterator(); !referenced && i.hasNext(); ) { + for( Iterator<OWLAxiom> j = i.next().getReferencingAxioms( e ).iterator(); !referenced + && j.hasNext(); ) { + OWLAxiom a = j.next(); + referenced = a.isLogicalAxiom() || (a instanceof OWLDeclarationAxiom); + } + } + if( !referenced ) { + OWLDeclarationAxiom declaration = getOntologyManager().getOWLDataFactory().getOWLDeclarationAxiom( e ); + temporaryDeclarations.add( declaration ); + } + } + for( OWLDeclarationAxiom decl : temporaryDeclarations ) { + OntologyUtils.addAxiom( decl, getReasoner().getLoadedOntologies(), + getOntologyManager() ); + } + + currentPathContents.add(axiom); + + boolean earlyTermination = false; + // Early path termination. If our path contents are the superset of + // the contents of a path then we can terminate here. + for (Set<OWLAxiom> satPath : satPaths) { + if (currentPathContents.containsAll(satPath)) { + earlyTermination = true; + if (log.isLoggable(Level.FINE)) + log.fine("Stop - satisfiable (early termination)"); + break; + } + } + + if (!earlyTermination) { + Set<OWLAxiom> newMUPS = null; + for (Set<OWLAxiom> foundMUPS : allMups) { + Set<OWLAxiom> foundMUPSCopy = new HashSet<OWLAxiom>(foundMUPS); + foundMUPSCopy.retainAll(currentPathContents); + if (foundMUPSCopy.isEmpty()) { + newMUPS = foundMUPS; + break; + } + } + if (newMUPS == null) { + newMUPS = getExplanation(unsatClass); + } + // Generate a new node - i.e. a new justification set + if (newMUPS.contains(axiom)) { + // How can this be the case??? + throw new OWLRuntimeException("Explanation contains removed axiom: " + axiom); + } + + if (!newMUPS.isEmpty()) { + // Note that getting a previous justification does not mean + // we + // can stop. stopping here causes some justifications to be + // missed + allMups.add(newMUPS); + progressMonitor.foundExplanation(newMUPS); + // Recompute priority here? + constructHittingSetTree(unsatClass, + newMUPS, + allMups, + satPaths, + currentPathContents, + maxExplanations); + // We have found a new MUPS, so recalculate the ordering + // axioms in the MUPS at the current level + orderedMups = getOrderedMUPS(orderedMups, allMups); + } + else { + if (log.isLoggable(Level.FINE)) + log.fine("Stop - satisfiable"); + + // End of current path - add it to the list of paths + satPaths.add(new HashSet<OWLAxiom>(currentPathContents)); + } + } + + // Back track - go one level up the tree and run for the next axiom + currentPathContents.remove(axiom); + + if (log.isLoggable(Level.FINE)) + log.fine("Restoring axiom: " + axiom); + + // Remove any temporary declarations + for( OWLDeclarationAxiom decl : temporaryDeclarations ) { + OntologyUtils.removeAxiom( decl, getReasoner().getLoadedOntologies(), + getOntologyManager() ); + } + + // Done with the axiom that was removed. Add it back in + OntologyUtils.addAxiom(axiom, ontologies, getOntologyManager()); + } + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -1,7 +1,6 @@ package org.dllearner.tools.ore.explanation; import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -25,7 +24,6 @@ import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.RemoveAxiom; -import com.clarkparsia.explanation.PelletExplanation; import com.clarkparsia.modularity.IncrementalClassifier; public class LostEntailmentsChecker { @@ -227,9 +225,7 @@ } for(OWLAxiom ax : possibleLosts){ - try {System.out.println(ax + " is entailed " + reasoner.isEntailed(ax)); - PelletExplanation exp = new PelletExplanation(manager, Collections.singleton(ontology), false); - System.out.println(exp.getEntailmentExplanation(ax)); + try { manager.applyChanges(changes); if(!reasoner.isEntailed(ax)){ realLosts.add(ax); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/PelletExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -20,6 +20,7 @@ import com.clarkparsia.explanation.HSTExplanationGenerator; import com.clarkparsia.explanation.SatisfiabilityConverter; import com.clarkparsia.explanation.TransactionAwareSingleExpGen; +import com.clarkparsia.explanation.util.ExplanationProgressMonitor; public class PelletExplanationGenerator implements ExplanationGenerator{ static { @@ -110,6 +111,10 @@ return explanations; } + public void setProgressMonitor(ExplanationProgressMonitor progressMonitor){ + expGen.setProgressMonitor(progressMonitor); + } + public static void main(String[] args) throws OWLOntologyCreationException{ OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLDataFactory factory = manager.getOWLDataFactory(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -25,6 +25,11 @@ import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; +/* + * This class computes laconic explanations for a given entailment. The algorithm is adapted from the paper + * 'Laconic and Precise Justifications in OWL' from Matthew Horridge, Bijan Parsia and Ulrike Sattler. + * + */ public class LaconicExplanationGenerator { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/OPlus.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -57,7 +57,10 @@ import org.semanticweb.owl.model.SWRLRule; - +/* + * This class computes the oplus closure provided in 'Laconic and Precise Justifications in OWL' from + * Matthew Horridge, Bijan Parsia and Ulrike Sattler. A set of axioms is into smaller and weaker axioms. + */ public class OPlus implements OWLAxiomVisitorEx<Set<OWLAxiom>> { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -140,7 +140,7 @@ ExplanationManager expMan = ExplanationManager.getInstance(oreMan); OWLOntologyManager man = oreMan.getReasoner().getOWLOntologyManager(); List<OWLOntologyChange>repairPlan = repMan.getRepairPlan(); - + StringBuilder sb = new StringBuilder(); sb.append(ManchesterSyntaxRenderer.renderSimple(entailment)); if(((ImpactTableModel)getModel()).isLostEntailment(entailment)){ @@ -173,7 +173,7 @@ setLayout(new BorderLayout()); explanationsPanel = new Box(1); - + int counter = 1; for(Explanation exp : explanations){ ExplanationTablePanel panel = new ExplanationTablePanel(new SimpleExplanationTable(exp), counter); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -2,39 +2,30 @@ import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Dimension; +import java.awt.Font; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.event.ActionEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; import java.net.URI; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Set; import javax.swing.AbstractAction; import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JDialog; import javax.swing.JFrame; -import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.border.TitledBorder; -import org.protege.editor.core.ui.util.ComponentFactory; -import org.protege.editor.owl.ui.OWLAxiomTypeFramePanel; +import org.protege.editor.core.PropertyUtil; +import org.protege.editor.core.ProtegeProperties; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.metrics.AxiomCountMetric; import org.semanticweb.owl.metrics.AxiomTypeMetric; @@ -91,6 +82,7 @@ // TODO Auto-generated catch block e.printStackTrace(); } + initialiseOWLView(); createPopupMenu(); } @@ -136,11 +128,11 @@ metricManagerMap = new LinkedHashMap<String, OWLMetricManager>(); tableModelMap = new HashMap<OWLMetricManager, MetricsTableModel>(); createBasicMetrics(); - createClassAxiomMetrics(); - createObjectPropertyAxiomMetrics(); - createDataPropertyAxiomMetrics(); - createIndividualAxiomMetrics(); - createAnnotationAxiomMetrics(); +// createClassAxiomMetrics(); +// createObjectPropertyAxiomMetrics(); +// createDataPropertyAxiomMetrics(); +// createIndividualAxiomMetrics(); +// createAnnotationAxiomMetrics(); createUI(); updateView(manager.getOntologies().iterator().next()); for(OWLMetricManager man : metricManagerMap.values()) { @@ -153,8 +145,10 @@ private void createUI() { + setLayout(new BorderLayout()); - Box box = new Box(BoxLayout.Y_AXIS); + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); for (String metricsSet : metricManagerMap.keySet()) { MetricsTableModel tableModel = new MetricsTableModel(metricManagerMap.get(metricsSet)); tableModelMap.put(metricManagerMap.get(metricsSet), tableModel); @@ -162,83 +156,23 @@ table.setGridColor(Color.LIGHT_GRAY); table.setRowHeight(table.getRowHeight() + 4); table.setShowGrid(true); + table.getColumnModel().getColumn(1).setMaxWidth(150); table.getColumnModel().setColumnMargin(2); - table.addMouseListener(new MouseAdapter() { + table.setFont(getFont().deriveFont(Font.BOLD, 12.0f)); + table.setForeground(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty(ProtegeProperties.PROPERTY_COLOR_KEY), + Color.GRAY)); - public void mousePressed(MouseEvent e) { - if(e.isPopupTrigger()) { - handleTablePopupRequest(table, e); - } - } - - - public void mouseReleased(MouseEvent e) { - if(e.isPopupTrigger()) { - handleTablePopupRequest(table, e); - } - } - - private void handleTablePopupRequest(JTable table, MouseEvent e) { - int row = table.rowAtPoint(e.getPoint()); - int col = table.columnAtPoint(e.getPoint()); - if(row == -1 || col == -1) { - return; - } - MetricsTableModel model = (MetricsTableModel) table.getModel(); - for(OWLMetricManager man : tableModelMap.keySet()) { - if(tableModelMap.get(man).equals(model)) { - OWLMetric<?> metric = man.getMetrics().get(row); - if(metric instanceof AxiomCountMetric) { - lastMetric = (AxiomCountMetric) metric; - popupMenu.show(table, e.getX(), e.getY()); - } - break; - } - } - - } - }); - final JPanel tablePanel = new JPanel(new BorderLayout()); - tablePanel.addMouseListener(new MouseAdapter() { - - public void mousePressed(MouseEvent e) { - if(e.isPopupTrigger()) { - showMenu(e); - } - } - - - public void mouseReleased(MouseEvent e) { - if(e.isPopupTrigger()) { - showMenu(e); - } - } - - private void showMenu(MouseEvent e) { - JPopupMenu menu = new JPopupMenu(); - menu.add(new AbstractAction("Copy metrics to clipboard") { - - /** - * - */ - private static final long serialVersionUID = 6638146469347852653L; - - public void actionPerformed(ActionEvent e) { - exportCSV(); - } - }); - menu.show(tablePanel, e.getX(), e.getY()); - } - }); + tablePanel.add(table); - tablePanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(2, 2, 14, 2), - ComponentFactory.createTitledBorder(metricsSet))); + tablePanel.setFont(getFont().deriveFont(Font.BOLD, 12.0f)); +// tablePanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(2, 2, 14, 2), +// ComponentFactory.createTitledBorder(metricsSet))); table.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); - box.add(tablePanel); + panel.add(tablePanel); } - JScrollPane sp = new JScrollPane(box); + JScrollPane sp = new JScrollPane(panel); sp.setOpaque(false); add(sp); } @@ -353,6 +287,11 @@ for (OWLMetricManager man : metricManagerMap.values()) { man.setOntology(activeOntology); } + TitledBorder border = new TitledBorder(activeOntology.getURI().toString()); + border.setTitleFont(getFont().deriveFont(Font.BOLD, 12.0f)); + border.setTitleColor(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty(ProtegeProperties.PROPERTY_COLOR_KEY), + Color.GRAY)); + setBorder(border); repaint(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -37,9 +37,16 @@ @Override public Object getValueAt(int rowIndex, int columnIndex) { - OWLAxiom ax = getOWLAxiomAtRow(rowIndex); - int depth2Root = expMan.getOrdering(exp).get(rowIndex).values().iterator().next(); - return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root); + OWLAxiom ax; + if(exp.getAxioms().size() > 1){ + ax = getOWLAxiomAtRow(rowIndex); + int depth2Root = expMan.getOrdering(exp).get(rowIndex).values().iterator().next(); + return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root); + } else { + ax = exp.getAxioms().iterator().next(); + return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), 0); + } + } public OWLAxiom getOWLAxiomAtRow(int rowIndex){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -12,6 +12,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Ellipse2D; +import java.util.Set; import javax.swing.Icon; import javax.swing.JButton; @@ -23,8 +24,11 @@ import org.dllearner.tools.ore.TaskManager; import org.mindswap.pellet.utils.progress.ProgressMonitor; +import org.semanticweb.owl.model.OWLAxiom; -public class StatusBar extends JPanel implements ProgressMonitor{ +import com.clarkparsia.explanation.util.ExplanationProgressMonitor; + +public class StatusBar extends JPanel implements ProgressMonitor, ExplanationProgressMonitor{ /** * */ @@ -36,6 +40,7 @@ private int progressPercent = -1; private String progressMessage; private boolean isIndeterminateMode; + private boolean isCanceled = false; public StatusBar() { infoLabel = new JLabel(""); @@ -54,8 +59,8 @@ @Override public void actionPerformed(ActionEvent e) { - TaskManager.getInstance().cancelCurrentThread(); + isCanceled = true; } }); rB.setToolTipText("Abort"); @@ -75,6 +80,7 @@ } public void showProgress(boolean b) { + isCanceled = false; isIndeterminateMode = b; SwingUtilities.invokeLater(new Runnable() { @@ -139,7 +145,7 @@ @Override public boolean isCanceled() { - return false; + return isCanceled; } @Override @@ -205,6 +211,23 @@ }); } + + @Override + public void foundAllExplanations() { + // TODO Auto-generated method stub + + } + + @Override + public void foundExplanation(Set<OWLAxiom> explanation) { + System.out.println(explanation); + + } + + @Override + public boolean isCancelled() { + return isCanceled; + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -3,7 +3,6 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; -import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; @@ -37,33 +36,33 @@ getColumn(0).setCellRenderer(new UnsatClassesTableCellRenderer(expMan)); // setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - addMouseListener(new MouseAdapter() { - public void mousePressed(MouseEvent e) { - int row = rowAtPoint(e.getPoint()); - if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { - OWLClass cl = (OWLClass) getValueAt(row, 1); - if (ExplanationManager - .getInstance(OREManager.getInstance()) - .getDerivedClasses().contains(cl)) { - showPopupMenu(e); - } - } - - } - - public void mouseReleased(MouseEvent e) { - int row = rowAtPoint(e.getPoint()); - if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { - OWLClass cl = (OWLClass) getValueAt(row, 1); - if (ExplanationManager - .getInstance(OREManager.getInstance()) - .getDerivedClasses().contains(cl)) { - showPopupMenu(e); - } - } - } - - }); +// addMouseListener(new MouseAdapter() { +// public void mousePressed(MouseEvent e) { +// int row = rowAtPoint(e.getPoint()); +// if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { +// OWLClass cl = (OWLClass) getValueAt(row, 1); +// if (ExplanationManager +// .getInstance(OREManager.getInstance()) +// .getDerivedClasses().contains(cl)) { +// showPopupMenu(e); +// } +// } +// +// } +// +// public void mouseReleased(MouseEvent e) { +// int row = rowAtPoint(e.getPoint()); +// if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { +// OWLClass cl = (OWLClass) getValueAt(row, 1); +// if (ExplanationManager +// .getInstance(OREManager.getInstance()) +// .getDerivedClasses().contains(cl)) { +// showPopupMenu(e); +// } +// } +// } +// +// }); } private void showPopupMenu(MouseEvent e){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -23,6 +23,7 @@ import java.awt.BorderLayout; import java.awt.CardLayout; +import java.awt.Color; import java.awt.Component; import java.awt.Dialog; import java.awt.Font; @@ -435,7 +436,9 @@ //setLayout(new GridBagLayout()); infoScrollPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); infoScrollPane.setViewportBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - informationsField.setBackground(UIManager.getDefaults().getColor("control")); + Color color = UIManager.getColor("Panel.background"); + informationsField.setBackground(new Color(color.getRed(), color.getGreen(), color.getBlue())); + informationsField.setOpaque(true); informationsField.setColumns(80); informationsField.setEditable(false); informationsField.setLineWrap(true); @@ -448,7 +451,7 @@ JPanel buttonInformationPanel = new JPanel(); buttonInformationPanel.setLayout(new BorderLayout()); buttonInformationPanel.add(buttonPanel, BorderLayout.SOUTH); -// buttonInformationPanel.add(informationPanel, BorderLayout.NORTH); + buttonInformationPanel.add(informationPanel, BorderLayout.NORTH); wizardDialog.getContentPane().add(buttonInformationPanel, java.awt.BorderLayout.SOUTH); wizardDialog.getContentPane().add(cardPanel, java.awt.BorderLayout.CENTER); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -49,8 +49,9 @@ /** * Information string for class choose panel. */ - public static final String INFORMATION = "In this panel all atomic classes in the ontology are shown in the list above. " - + "Select one of them which should be (re)learned from, then press \"Next-Button\""; + public static final String INFORMATION = "As you can see, all atomic classes of the ontology are shown in the list above. " + + "Select one of them for which you want to learn equivalent class expressions," + + " then press <Next>"; private ClassChoosePanel owlClassPanel; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -48,8 +48,8 @@ public class KnowledgeSourcePanelDescriptor extends WizardPanelDescriptor implements ActionListener{ public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; - public static final String INFORMATION = "Select the type of knowledgesource you want to work with and then enter the URI." - + " After all press \"Next\"-button"; + public static final String INFORMATION = "Choose an OWL-ontology from file system or URI. Your are also able to extract a fragment " + + "from a SPARQL-endpoint. After all press <Next>"; private KnowledgeSourcePanel knowledgePanel; @@ -99,9 +99,11 @@ public void loadOntology(URI uri){ OREManager.getInstance().setCurrentKnowledgeSource(uri); + RecentManager.getInstance().addURI(uri); RecentManager.getInstance().serialize(); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); + } private void handleOpenFromURI() { @@ -166,7 +168,7 @@ uri); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); } - @SuppressWarnings(value = { "unused" }) + private void updateMetrics(){ knowledgePanel.updateMetrics(); } @@ -217,7 +219,7 @@ statusBar.setProgressTitle("Done"); getWizard().getDialog().setCursor(null); getWizard().setNextFinishButtonEnabled(true); -// updateMetrics(); + updateMetrics(); } } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -51,8 +51,8 @@ public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener{ public static final String IDENTIFIER = "LEARNING_PANEL"; - public static final String INFORMATION = "In this panel you can start the learning algorithm. While it is running, " - + "temporary results are shown in the list above. Select one of them and press Next"; + public static final String INFORMATION = "Press <Start> to start learning. While it is running, " + + "temporary results are shown in the list above. Select one of them and press <Next>"; private LearningPanel learnPanel; private LearningTask learningTask; @@ -103,7 +103,11 @@ // Description de = new NamedClass("http://example.com/father#male"); if (!e.getValueIsAdjusting() && (learningTask.isDone() || learningTask.isCancelled())){ - OREManager.getInstance().setNewClassDescription(learnPanel.getResultTable().getSelectedValue()); + EvaluatedDescriptionClass selectedClassExpression = learnPanel.getResultTable().getSelectedValue(); +// if(!selectedClassExpression.isConsistent()){ +// learnPanel.add(new JLabel("Selected class expression may lead to an inconsistent knowledgebase.")); +// } + OREManager.getInstance().setNewClassDescription(selectedClassExpression); learnPanel.updateCurrentGraphicalCoveragePanel(OREManager.getInstance().getNewClassDescription()); } @@ -196,7 +200,7 @@ learnPanel.getResultTable().clear(); getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); getWizard().getStatusBar().showProgress(true); - getWizard().getStatusBar().setProgressTitle("learning class expressions"); + getWizard().getStatusBar().setProgressTitle("Learning equivalent class expressions"); la = OREManager.getInstance().getLa(); timer = new Timer(); @@ -231,7 +235,7 @@ } getWizard().getDialog().setCursor(null); getWizard().getStatusBar().showProgress(false); - getWizard().getStatusBar().setProgressTitle("class expressions successfully learned"); + getWizard().getStatusBar().setProgressTitle("Done"); learnPanel.getStartButton().setEnabled(true); learnPanel.getStopButton().setEnabled(false); updateList(result); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -53,6 +53,7 @@ contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); add(contentPanel, BorderLayout.CENTER); + } private JPanel getContentPanel() { @@ -62,7 +63,7 @@ JScrollPane scroll = new JScrollPane(classesTable); contentPanel.add(scroll); scroll.setPreferredSize(new Dimension(400, 400)); - + return contentPanel; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -33,6 +33,7 @@ import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; +import javax.swing.JLabel; import javax.swing.JPanel; import org.dllearner.tools.ore.OREManager; @@ -61,6 +62,8 @@ private GridBagConstraints c; private MetricsPanel metricsPanel; + + private JLabel ontologyName; @@ -74,11 +77,12 @@ c.gridx = 0; c.gridy = 0; - c.gridwidth = 2; + c.gridwidth = 1; c.gridheight = 1; c.fill = GridBagConstraints.HORIZONTAL; add(contentPanel, c); // addMetricsPanel(); + } @@ -137,21 +141,27 @@ box.add(recentLinkBox); } + metricsPanel = new MetricsPanel(); + box.add(Box.createVerticalStrut(4 * strutHeight)); + box.add(metricsPanel); panel.add(box); + return panel; } public void addMetricsPanel() { - c.gridx = 2; - c.gridy = 0; + c.gridx = 0; + c.gridy = 1; c.gridwidth = 1; - c.gridheight = 2; - c.weightx = 0.1; - c.weighty = 0.8; + c.gridheight = 1; + c.weightx = 0.0; + c.weighty = 0.0; + c.fill = GridBagConstraints.NONE; + metricsPanel = new MetricsPanel(); - c.fill = GridBagConstraints.VERTICAL; + add(metricsPanel, c); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-06 15:28:00 UTC (rev 1837) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-07 13:47:42 UTC (rev 1838) @@ -114,6 +114,7 @@ stopButton = new JButton(); buttonPanel.add(stopButton); stopButton.setText("Stop"); + stopButton.setEnabled(false); // add(buttonPanel, c); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-06 15:28:12
|
Revision: 1837 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1837&view=rev Author: lorenz_b Date: 2009-09-06 15:28:00 +0000 (Sun, 06 Sep 2009) Log Message: ----------- added simple explanation dialog for impact axioms Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBarSimulator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/ trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/AddPropertyAssertionMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/AddToClassMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/MoveFromClassToMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/MoveToClassFromMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/RemoveAllPropertyAssertionsMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/RemoveAllPropertyAssertionsNotToMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/RemoveAllPropertyAssertionsToMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/RemoveFromClassMenuItem.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java Modified: trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -310,7 +310,7 @@ } else if(change instanceof AddAxiom){ classInstancesPos.get(desc).add(ind); } - } else if(axiom instanceof OWLObjectPropertyAssertionAxiom){System.out.println(axiom); + } else if(axiom instanceof OWLObjectPropertyAssertionAxiom){ Individual obj = OWLAPIConverter.convertIndividual(((OWLObjectPropertyAssertionAxiom)axiom).getObject()); Individual sub = OWLAPIConverter.convertIndividual(((OWLObjectPropertyAssertionAxiom)axiom).getSubject()); ObjectProperty prop = OWLAPIConverter.convertObjectProperty(((OWLObjectPropertyAssertionAxiom)axiom).getProperty().asOWLObjectProperty()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -51,7 +51,7 @@ private ExplanationManager(OREManager oreMan) { OREManager.getInstance().addListener(this); - this.reasoner = oreMan.getPelletReasoner().getReasoner(); + this.reasoner = oreMan.getReasoner().getReasoner(); this.manager = reasoner.getManager(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); @@ -119,6 +119,14 @@ return explanations; } + public Set<Explanation> getEntailmentExplanations(OWLAxiom entailment){ + boolean before = gen.isLaconicMode(); + gen.setComputeLaconicExplanations(false); + Set<Explanation> explanations = gen.getExplanations(entailment); + gen.setComputeLaconicExplanations(before); + return explanations; + } + public List<Map<OWLAxiom, Integer>> getOrdering(Explanation exp){ List<Map<OWLAxiom, Integer>> orderedAxioms = orderingMap.get(exp); if(orderedAxioms == null){ @@ -238,8 +246,8 @@ @Override public void activeOntologyChanged() { - ontology = OREManager.getInstance().getPelletReasoner().getOWLAPIOntologies(); - reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); + ontology = OREManager.getInstance().getReasoner().getOWLAPIOntologies(); + reasoner = OREManager.getInstance().getReasoner().getReasoner(); gen = new CachedExplanationGenerator(ontology, reasoner); orderingMap.clear(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -28,7 +28,7 @@ private ImpactManager(OREManager oreMan) { this.oreMan = oreMan; - this.reasoner = oreMan.getPelletReasoner().getReasoner(); + this.reasoner = oreMan.getReasoner().getReasoner(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); this.manager = reasoner.getManager(); @@ -38,7 +38,7 @@ selectedAxioms = new ArrayList<OWLAxiom>(); listeners = new ArrayList<ImpactManagerListener>(); - lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getPelletReasoner().getClassifier(), manager); + lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getReasoner().getClassifier(), manager); RepairManager.getInstance(oreMan).addListener(this); oreMan.addListener(this); @@ -121,10 +121,10 @@ @Override public void activeOntologyChanged() { - this.reasoner = oreMan.getPelletReasoner().getReasoner(); + this.reasoner = oreMan.getReasoner().getReasoner(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); this.manager = reasoner.getManager(); - lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getPelletReasoner().getClassifier(), manager); + lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getReasoner().getClassifier(), manager); selectedAxioms.clear(); lostEntailments.clear(); addedEntailments.clear(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -24,7 +24,6 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.core.owl.Union; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; @@ -36,26 +35,25 @@ public class OREManager { - private static OREManager instance; - + private ComponentManager cm; - - private PelletReasoner pelletReasoner; + + private PelletReasoner reasoner; private ClassLearningProblem lp; private CELOE la; private KnowledgeSource ks; - + private String baseURI; private Map<String, String> prefixes; - + private NamedClass currentClass2Learn; private EvaluatedDescriptionClass learnedClassDescription; - + private double noisePercentage; private int maxExecutionTimeInSeconds = 10; private int maxNrOfResults = 10; - + private List<OREManagerListener> listeners; private OntologyModifier modifier; @@ -98,7 +96,7 @@ public void setLearningProblem(){ - lp = cm.learningProblem(ClassLearningProblem.class, pelletReasoner); + lp = cm.learningProblem(ClassLearningProblem.class, reasoner); try { lp.getConfigurator().setClassToDescribe(getClass2LearnAsURL()); @@ -112,7 +110,7 @@ public void setLearningAlgorithm(){ try { - la = cm.learningAlgorithm(CELOE.class, lp, pelletReasoner); + la = cm.learningAlgorithm(CELOE.class, lp, reasoner); la.getConfigurator().setMaxExecutionTimeInSeconds(maxExecutionTimeInSeconds); la.getConfigurator().setUseNegation(false); la.getConfigurator().setNoisePercentage(noisePercentage); @@ -136,25 +134,28 @@ public void initPelletReasoner(){ - pelletReasoner = cm.reasoner(PelletReasoner.class, ks); + reasoner = cm.reasoner(PelletReasoner.class, ks); try { - pelletReasoner.init(); + reasoner.init(); } catch (ComponentInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } - pelletReasoner.loadOntologies(); - baseURI = pelletReasoner.getBaseURI(); - prefixes = pelletReasoner.getPrefixes(); - modifier = new OntologyModifier(pelletReasoner); + reasoner.loadOntologies(); + baseURI = reasoner.getBaseURI(); + prefixes = reasoner.getPrefixes(); + modifier = new OntologyModifier(reasoner); fireActiveOntologyChanged(); } public void loadOntology(){ - pelletReasoner.loadOntologies(); - + reasoner.loadOntologies(); } + public void makeOWAToCWA(){ + reasoner.dematerialise(); + } + public void addListener(OREManagerListener listener){ listeners.add(listener); } @@ -164,11 +165,11 @@ } public boolean consistentOntology() throws InconsistentOntologyException{ - return pelletReasoner.isConsistent(); + return reasoner.isConsistent(); } - public PelletReasoner getPelletReasoner(){ - return pelletReasoner; + public PelletReasoner getReasoner(){ + return reasoner; } private void fireActiveOntologyChanged(){ @@ -176,18 +177,15 @@ listener.activeOntologyChanged(); } } - public OntologyModifier getModifier() { return modifier; } - public EvaluatedDescriptionClass getNewClassDescription() { return learnedClassDescription; } - public String getBaseURI() { return baseURI; } @@ -209,7 +207,7 @@ } public SortedSet<Individual> getPositiveFailureExamples(){ - SortedSet<Individual> posNotCovered = pelletReasoner.getIndividuals(currentClass2Learn); + SortedSet<Individual> posNotCovered = reasoner.getIndividuals(currentClass2Learn); posNotCovered.removeAll(learnedClassDescription.getCoveredInstances()); return posNotCovered; } @@ -233,9 +231,7 @@ public int getMaxNrOfResults(){ return maxNrOfResults; } - - - + /** * Sets the class that has to be learned. * @param oldClass class that is chosen to be (re)learned @@ -281,9 +277,6 @@ return la; } - - - /** * Retrieves description parts that might cause inconsistency - for negative examples only. * @param ind @@ -294,7 +287,7 @@ Set<Description> criticals = new HashSet<Description>(); List<Description> children = desc.getChildren(); - if(pelletReasoner.hasType(desc, ind)){ + if(reasoner.hasType(desc, ind)){ if(children.size() >= 2){ @@ -304,7 +297,7 @@ } } else if(desc instanceof Union){ for(Description d: children){ - if(pelletReasoner.hasType(d, ind)){ + if(reasoner.hasType(d, ind)){ criticals.addAll(getNegCriticalDescriptions(ind, d)); } } @@ -328,7 +321,7 @@ List<Description> children = desc.getChildren(); // try { - if(pelletReasoner.hasType(desc, ind)){ + if(reasoner.hasType(desc, ind)){ if(children.size() >= 2){ @@ -344,14 +337,14 @@ } else if(desc instanceof Union){ criticals.add(new JLabel("(")); for(int i = 0; i<children.size()-1; i++){ - if(pelletReasoner.hasType(desc.getChild(i), ind)){ + if(reasoner.hasType(desc.getChild(i), ind)){ criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(i))); } else{ criticals.add(new JLabel(desc.getChild(i).toManchesterSyntaxString(baseURI, prefixes))); } criticals.add(new JLabel("or")); } - if(pelletReasoner.hasType(desc.getChild(children.size()-1), ind)){ + if(reasoner.hasType(desc.getChild(children.size()-1), ind)){ criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(children.size()-1))); } else{ criticals.add(new JLabel(desc.getChild(children.size()-1).toManchesterSyntaxString(baseURI, prefixes))); @@ -387,7 +380,7 @@ List<Description> children = desc.getChildren(); // try { - if(!pelletReasoner.hasType(desc, ind)){ + if(!reasoner.hasType(desc, ind)){ if(children.size() >= 2){ @@ -402,14 +395,14 @@ } else if(desc instanceof Intersection){ criticals.add(new JLabel("(")); for(int i = 0; i<children.size()-1; i++){ - if(!pelletReasoner.hasType(desc.getChild(i), ind)){ + if(!reasoner.hasType(desc.getChild(i), ind)){ criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(i))); } else{ criticals.add(new JLabel(desc.getChild(i).toManchesterSyntaxString(baseURI, prefixes))); } criticals.add(new JLabel("and")); } - if(!pelletReasoner.hasType(desc.getChild(children.size()-1), ind)){ + if(!reasoner.hasType(desc.getChild(children.size()-1), ind)){ criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(children.size()-1))); } else{ criticals.add(new JLabel(desc.getChild(children.size()-1).toManchesterSyntaxString(baseURI, prefixes))); @@ -435,9 +428,9 @@ * @param objRestr * @param ind */ - public Set<Individual> getIndividualsInPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ + public Set<Individual> getIndividualsInPropertyRange(Description desc, Individual ind){ - Set<Individual> individuals = pelletReasoner.getIndividuals(objRestr.getChild(0)); + Set<Individual> individuals = reasoner.getIndividuals(desc); individuals.remove(ind); return individuals; @@ -448,23 +441,19 @@ * @param objRestr * @param ind */ - public Set<Individual> getIndividualsNotInPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ + public Set<Individual> getIndividualsNotInPropertyRange(Description desc, Individual ind){ Set<Individual> allIndividuals = new HashSet<Individual>(); - for(Individual i : pelletReasoner.getIndividuals()){ + for(Individual i : reasoner.getIndividuals()){ -// try { - if(!pelletReasoner.hasType(objRestr.getChild(0), i)){ + if(!reasoner.hasType(desc, i)){ allIndividuals.add(i); } -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } + } - + allIndividuals.remove(ind); return allIndividuals; } @@ -476,8 +465,8 @@ */ public Set<NamedClass> getpossibleClassesMoveTo(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : pelletReasoner.getNamedClasses()){ - if(!pelletReasoner.hasType(nc, ind)){ + for(NamedClass nc : reasoner.getNamedClasses()){ + if(!reasoner.hasType(nc, ind)){ moveClasses.add(nc); } } @@ -493,8 +482,8 @@ */ public Set<NamedClass> getpossibleClassesMoveFrom(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : pelletReasoner.getNamedClasses()){ - if(pelletReasoner.hasType(nc, ind)){ + for(NamedClass nc : reasoner.getNamedClasses()){ + if(reasoner.hasType(nc, ind)){ moveClasses.add(nc); } } @@ -502,8 +491,7 @@ return moveClasses; } - - + /** * Get the complement classes where individual is asserted to. * @param desc @@ -513,19 +501,16 @@ Set<NamedClass> complements = new HashSet<NamedClass>(); - for(NamedClass nc : pelletReasoner.getNamedClasses()){ + for(NamedClass nc : reasoner.getNamedClasses()){ if(!(nc.toString().endsWith("Thing"))){ - if(pelletReasoner.hasType(nc, ind)){ + if(reasoner.hasType(nc, ind)){ if(modifier.isComplement(desc, nc)){ complements.add(nc); } } } - } - - + } return complements; } - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -35,8 +35,9 @@ import org.dllearner.core.owl.Negation; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyAssertion; -import org.dllearner.core.owl.ObjectQuantorRestriction; +import org.dllearner.core.owl.ObjectPropertyExpression; import org.dllearner.reasoning.PelletReasoner; +import org.dllearner.utilities.owl.OWLAPIConverter; import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; import org.semanticweb.owl.io.RDFXMLOntologyFormat; import org.semanticweb.owl.model.AddAxiom; @@ -188,8 +189,8 @@ individualOWLAPI.accept(remover); changes.addAll(remover.getChanges()); try { + reasoner.updateCWAOntology(changes); manager.applyChanges(changes); - saveOntology(); return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block @@ -310,12 +311,12 @@ * @param objSome the property which has to be removed * @return changes that have been done */ - public List<OWLOntologyChange> deleteObjectProperty(Individual ind, ObjectQuantorRestriction objSome){ + public List<OWLOntologyChange> deleteObjectProperty(Individual ind, ObjectPropertyExpression property){ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); - OWLIndividual individualOWLAPI = factory.getOWLIndividual(URI.create(ind.getName())); - OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); + OWLIndividual individualOWLAPI = OWLAPIConverter.getOWLAPIIndividual(ind); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(property.getName())); Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(individualOWLAPI); Set<OWLInverseObjectPropertiesAxiom> invProperties = ontology.getInverseObjectPropertyAxioms(propertyOWLAPI); @@ -370,18 +371,18 @@ * @param object * @return changes that have been done */ - public List<OWLOntologyChange> removeObjectPropertyAssertion(Individual subject, ObjectQuantorRestriction objSome, Individual object){ + public List<OWLOntologyChange> removeObjectPropertyAssertion(Individual subject, ObjectPropertyExpression property, Individual object){ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); OWLIndividual subjectOWLAPI = factory.getOWLIndividual(URI.create(subject.getName())); OWLIndividual objectOWLAPI = factory.getOWLIndividual(URI.create(object.getName())); - OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(property.getName())); Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(subjectOWLAPI); - + RemoveAxiom remove = null; - for(OWLObjectPropertyAssertionAxiom o :properties){ + for(OWLObjectPropertyAssertionAxiom o :properties){System.out.println(o); if((o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(subjectOWLAPI)) && (o.getObject().equals(objectOWLAPI))){ remove = new RemoveAxiom(ontology, o); } @@ -395,9 +396,9 @@ if(remove != null){ reasoner.updateCWAOntology(changes); manager.applyChange(remove); - + return changes; } - return changes; + } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -407,6 +408,38 @@ } + public List<OWLOntologyChange> removeAllObjectPropertyAssertions(Individual subject, ObjectPropertyExpression property,Set<Individual> objects){ + List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); + + OWLIndividual subjectOWLAPI = factory.getOWLIndividual(URI.create(subject.getName())); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(property.getName())); + Set<OWLIndividual> objectsOWLAPI = new HashSet<OWLIndividual>(); + for(Individual ind : objects){ + objectsOWLAPI.add(OWLAPIConverter.getOWLAPIIndividual(ind)); + } + + + Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(subjectOWLAPI); + + for(OWLObjectPropertyAssertionAxiom o :properties){ + if((o.getProperty().equals(propertyOWLAPI)) && objectsOWLAPI.contains(o.getObject())){ + changes.add(new RemoveAxiom(ontology, o)); + } + } + + try { + reasoner.updateCWAOntology(changes); + manager.applyChanges(changes); + return changes; + + + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return changes; + } + /** * Adds an object property assertion to the ontology. * @param subInd the individual which is subject in the objectProperty @@ -414,13 +447,13 @@ * @param objInd the individual which is object in the objectProperty * @return changes that have been done */ - public List<OWLOntologyChange> addObjectProperty(Individual subInd, ObjectQuantorRestriction objSome, Individual objInd){ + public List<OWLOntologyChange> addObjectProperty(Individual subInd, ObjectPropertyExpression property, Individual objInd){ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); OWLIndividual subjectOWLAPI = factory.getOWLIndividual(URI.create(subInd.getName())); OWLIndividual objectOWLAPI = factory.getOWLIndividual(URI.create(objInd.getName())); - OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(property.getName())); OWLObjectPropertyAssertionAxiom objAssertion = factory.getOWLObjectPropertyAssertionAxiom(subjectOWLAPI, propertyOWLAPI, objectOWLAPI); AddAxiom axiom = new AddAxiom(ontology, objAssertion); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -26,7 +26,7 @@ private Stack<List<OWLOntologyChange>> redoStack; private RepairManager(OREManager oreMan){ - this.reasoner = oreMan.getPelletReasoner().getReasoner(); + this.reasoner = oreMan.getReasoner().getReasoner(); this.manager = reasoner.getManager(); listeners = new ArrayList<RepairManagerListener>(); @@ -111,7 +111,7 @@ } - private List<OWLOntologyChange> getInverseChanges(List<OWLOntologyChange> changes){ + public List<OWLOntologyChange> getInverseChanges(List<OWLOntologyChange> changes){ List<OWLOntologyChange> inverseChanges = new ArrayList<OWLOntologyChange>(changes.size()); for(OWLOntologyChange change : changes){ if(change instanceof RemoveAxiom){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -34,6 +34,10 @@ this.dialog = dialog; } + public JDialog getDialog(){ + return dialog; + } + public void setCurrentTask(SwingWorker<?, ?> task){ this.currentTask = task; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -1,6 +1,7 @@ package org.dllearner.tools.ore.explanation; import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -24,6 +25,7 @@ import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.RemoveAxiom; +import com.clarkparsia.explanation.PelletExplanation; import com.clarkparsia.modularity.IncrementalClassifier; public class LostEntailmentsChecker { @@ -62,6 +64,11 @@ entailmentsBefore.add(factory.getOWLSubClassAxiom(sub, cl)); } } + for(OWLClass equ : classifier.getEquivalentClasses(cl)){ + if(!equ.isOWLNothing() && ! inc.contains(equ)){ + entailmentsBefore.add(factory.getOWLEquivalentClassesAxiom(equ, cl)); + } + } } } @@ -79,6 +86,11 @@ } } } + for(OWLClass equ : classifier.getEquivalentClasses(cl)){ + if(!equ.isOWLNothing() && ! inc.contains(equ)){ + entailmentsAfter.add(factory.getOWLEquivalentClassesAxiom(equ, cl)); + } + } } lostEntailments = SetUtils.difference(entailmentsBefore, entailmentsAfter); addedEntailents = SetUtils.difference(entailmentsAfter, entailmentsBefore); @@ -215,7 +227,9 @@ } for(OWLAxiom ax : possibleLosts){ - try { + try {System.out.println(ax + " is entailed " + reasoner.isEntailed(ax)); + PelletExplanation exp = new PelletExplanation(manager, Collections.singleton(ontology), false); + System.out.println(exp.getEntailmentExplanation(ax)); manager.applyChanges(changes); if(!reasoner.isEntailed(ax)){ realLosts.add(ax); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -80,7 +80,7 @@ public RootFinder(){ this.manager = OWLManager.createOWLOntologyManager(); - this.reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); + this.reasoner = OREManager.getInstance().getReasoner().getReasoner(); this.reasonerFactory = new PelletReasonerFactory(); try { this.ontology = manager.createOntology(URI.create("all"), reasoner.getLoadedOntologies()); @@ -381,7 +381,7 @@ @Override public void activeOntologyChanged() { this.manager = OWLManager.createOWLOntologyManager(); - this.reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); + this.reasoner = OREManager.getInstance().getReasoner().getReasoner(); this.reasonerFactory = new PelletReasonerFactory(); try { this.ontology = manager.createOntology(URI.create("all"), reasoner.getLoadedOntologies()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt =================================================================== (Binary files differ) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -43,10 +43,6 @@ return tip; } - public void clear(){ - ((ClassesTableModel)getModel()).clear(); - } - public void addClasses(Set<NamedClass> classes){ ((ClassesTableModel)getModel()).addClasses(classes); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -31,6 +31,7 @@ import javax.swing.JLabel; import javax.swing.JMenu; +import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.ToolTipManager; @@ -43,6 +44,14 @@ import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.Thing; import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.ui.item.AddPropertyAssertionMenuItem; +import org.dllearner.tools.ore.ui.item.AddToClassMenuItem; +import org.dllearner.tools.ore.ui.item.MoveFromClassToMenuItem; +import org.dllearner.tools.ore.ui.item.MoveToClassFromMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsNotToMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsToMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveFromClassMenuItem; /** * Label that might have menu items when clicked on it. @@ -55,15 +64,6 @@ */ private static final long serialVersionUID = 1L; - private static final int MOVE_TO_CLASS = 0; - private static final int MOVE_FROM_CLASS = 1; - private static final int ADD_CLASS = 2; - private static final int REMOVE_CLASS = 3; - private static final int ADD_PROPERTY = 4; - private static final int REMOVE_RANGE_PROPERTY = 5; - private static final int DELETE_PROPERTY = 6; - private static final int REMOVE_NOT_RANGE_PROPERTY = 7; - private final Description desc; private Individual ind; private OREManager ore; @@ -104,12 +104,11 @@ if(!(desc instanceof Negation)){ if(desc instanceof NamedClass){ //1. description is a named class descriptionLabel = desc.toManchesterSyntaxString(baseURI, prefixes); - menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc)); //1.a remove class assertion - - JMenu dme = new JMenu("move class assertion " + descriptionLabel + " to ..."); //1.b move individual + + menu.add(new RemoveFromClassMenuItem(desc)); //1.a remove class assertion + JMenu dme = new JMenu("move class assertion from " + descriptionLabel + " to ..."); //1.b move individual for(NamedClass nc : ore.getpossibleClassesMoveTo(ind)){ - DescriptionMenuItem move = new DescriptionMenuItem(MOVE_TO_CLASS, nc.toManchesterSyntaxString(baseURI, prefixes), (NamedClass) desc); - move.setName(nc.toString()); + MoveFromClassToMenuItem move = new MoveFromClassToMenuItem(desc, nc); dme.add(move); Set<NamedClass> complements = ore.getComplements(nc, ind); //check for complement error if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(desc.toString())))){ @@ -129,26 +128,24 @@ } menu.add(dme); } else if(desc instanceof ObjectSomeRestriction){ //2. description is a object some restriction - String propertyName = ((ObjectSomeRestriction) desc).getRole().toString(baseURI, prefixes); - String propertyRange = ((ObjectSomeRestriction) desc).getChild(0).toManchesterSyntaxString(baseURI, prefixes); - menu.add(new DescriptionMenuItem(DELETE_PROPERTY, propertyName , desc)); //2.a remove all property assertions + menu.add(new RemoveAllPropertyAssertionsMenuItem(((ObjectSomeRestriction) desc).getRole())); //2.a remove all property assertions if (!(desc.getChild(0) instanceof Thing)){ - menu.add(new DescriptionMenuItem(REMOVE_RANGE_PROPERTY, propertyRange, desc)); //2.b remove property assertions with objects in range + menu.add(new RemoveAllPropertyAssertionsToMenuItem(((ObjectSomeRestriction) desc).getRole(), ((ObjectSomeRestriction) desc).getChild(0))); //2.b remove property assertions with objects in range } } else if(desc instanceof ObjectAllRestriction){ //3. description is a object all restriction if (!(desc.getChild(0) instanceof Thing)) { JMenu dme = new JMenu("add property assertion " + ((ObjectAllRestriction) desc).getRole().toKBSyntaxString(baseURI, prefixes) //3.a add property assertion with object not in range + " with object ..."); - for (Individual i : ore.getIndividualsNotInPropertyRange((ObjectAllRestriction) desc, ind)){ - dme.add(new DescriptionMenuItem(ADD_PROPERTY, i.toManchesterSyntaxString(baseURI, prefixes), desc)); + for (Individual i : ore.getIndividualsNotInPropertyRange(desc.getChild(0), ind)){ + dme.add(new AddPropertyAssertionMenuItem(((ObjectAllRestriction)desc).getRole(), i)); } - menu.add(dme); + menu.add(dme); } } } else if(desc instanceof Negation){ if(desc.getChild(0) instanceof NamedClass){ //4. description is a negated named class - DescriptionMenuItem addItem = new DescriptionMenuItem(ADD_CLASS, desc.getChild(0).toManchesterSyntaxString(baseURI, prefixes), desc.getChild(0)); + AddToClassMenuItem addItem = new AddToClassMenuItem(desc.getChild(0)); menu.add(addItem); //4.a add class assertion Set<NamedClass> complements = ore.getComplements(desc.getChild(0), ind); //check for complement errors if(!complements.isEmpty()){ @@ -170,7 +167,7 @@ } else if(mode.equals("pos")){//positive example solutions if(!(desc instanceof Negation)){ if(desc instanceof NamedClass){ - DescriptionMenuItem add = new DescriptionMenuItem(ADD_CLASS, desc.toManchesterSyntaxString(baseURI, prefixes), desc); + AddToClassMenuItem add = new AddToClassMenuItem(desc); Set<NamedClass> complements = ore.getComplements(desc, ind); if(!(complements.isEmpty())){ add.setEnabled(false); @@ -191,12 +188,11 @@ Set<NamedClass> moveClasses = ore.getpossibleClassesMoveFrom(ind); if(moveClasses.size() > 0){ JMenu move = new JMenu("move to " + desc.toManchesterSyntaxString(baseURI, prefixes) + " from ..."); - for (NamedClass m : moveClasses){System.out.println("hier" + m); - DescriptionMenuItem item = new DescriptionMenuItem(MOVE_FROM_CLASS, m.toManchesterSyntaxString(baseURI, prefixes), desc); - item.setName(m.toString()); + for (NamedClass source : moveClasses){ + MoveToClassFromMenuItem item = new MoveToClassFromMenuItem(desc, source); move.add(item); - if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(m.toString())))){ + if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(source.toString())))){ move.setEnabled(false); StringBuffer strBuf = new StringBuffer(); strBuf.append("<html>moving class is not possible because individual<br> " @@ -217,17 +213,16 @@ } else if(desc instanceof ObjectSomeRestriction){ - JMenu dme = new JMenu("add property assertion " + ((ObjectSomeRestriction) desc).getRole() - + " with object ..."); - for (Individual i : ore.getIndividualsInPropertyRange((ObjectSomeRestriction) desc, ind)){ - dme.add(new DescriptionMenuItem(ADD_PROPERTY, i.toManchesterSyntaxString(baseURI, prefixes), desc)); + JMenu dme = new JMenu("add property assertion with object ..."); + for (Individual i : ore.getIndividualsInPropertyRange(desc.getChild(0), ind)){ + dme.add(new AddPropertyAssertionMenuItem(((ObjectSomeRestriction) desc).getRole(), i)); } menu.add(dme); } else if(desc instanceof ObjectAllRestriction){ if (!(desc.getChild(0) instanceof Thing)) { - menu.add(new DescriptionMenuItem(REMOVE_NOT_RANGE_PROPERTY, ((ObjectAllRestriction) desc).getChild(0).toString(baseURI, prefixes), desc)); - menu.add(new DescriptionMenuItem(DELETE_PROPERTY, ((ObjectAllRestriction) desc).getRole().toString(baseURI, prefixes), desc)); + menu.add(new RemoveAllPropertyAssertionsNotToMenuItem(((ObjectAllRestriction) desc).getRole(), ((ObjectAllRestriction) desc).getChild(0))); + menu.add(new RemoveAllPropertyAssertionsMenuItem(((ObjectAllRestriction) desc).getRole())); } } @@ -237,7 +232,7 @@ } else if(desc instanceof Negation){ if(desc.getChild(0) instanceof NamedClass){ descriptionLabel = desc.toManchesterSyntaxString(baseURI, prefixes); - menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc)); + menu.add(new RemoveFromClassMenuItem(desc.getChild(0))); } } } @@ -257,13 +252,15 @@ */ public void addActionListeners(ActionListener aL){ for(Component c : menu.getComponents()){ - if(c instanceof DescriptionMenuItem){ - ((DescriptionMenuItem) c).addActionListener(aL); - } else if(c instanceof JMenu){ + if(c instanceof JMenuItem){ + ((JMenuItem) c).addActionListener(aL); + } + if(c instanceof JMenu){ for(int i = 0; i < ((JMenu) c).getItemCount(); i++){ ((JMenu) c).getItem(i).addActionListener(aL); } } + } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -1,84 +0,0 @@ -/** - * Copyright (C) 2007-2008, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -package org.dllearner.tools.ore.ui; - -import javax.swing.JMenuItem; - -import org.dllearner.core.owl.Description; - -/** - * Item for possible repair action. - * @author Lorenz Buehmann - * - */ -public class DescriptionMenuItem extends JMenuItem { - - /** - * - */ - private static final long serialVersionUID = 6784086889435854440L; - - private Description desc; - private int action; - - public DescriptionMenuItem(int action, String text, Description d){ - super(); - if(action == 3){ - setText("remove class assertion to " + text); - } else if(action == 0){ - setText(text); - } else if(action == 2){ - setText("add class assertion to " + text); - } else if(action == 4){ - setText(text); - } else if(action == 6){ - setText("delete complete property " + text); - }else if(action == 5){ - setText("remove all property assertions to " + text); - } else if(action == 7){ - setText("remove all property assertions with range not in " + text); - } else if(action == 1){ - setText(text); - } - - this.desc = d; - this.action = action; - } - - /** - * Returns the description part where item is asserted to. - * @return description - */ - public Description getDescription(){ - return desc; - } - - /** - * Returns action type represented as number.. - * @return number - */ - public int getActionID(){ - return action; - } - - - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -33,7 +33,7 @@ this.impMan = ImpactManager.getInstance(OREManager.getInstance()); this.repMan = RepairManager.getInstance(OREManager.getInstance()); this.unsat = cl; - this.ont = OREManager.getInstance().getPelletReasoner().getOWLAPIOntologies(); + this.ont = OREManager.getInstance().getReasoner().getOWLAPIOntologies(); } @Override 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-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -1,6 +1,5 @@ package org.dllearner.tools.ore.ui; -import java.awt.Cursor; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; @@ -27,7 +26,6 @@ import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.tools.ore.OREManager; import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -141,10 +141,10 @@ AlphaComposite ac = AlphaComposite.getInstance( AlphaComposite.SRC_OVER, 0.5f); g2D.setColor(Color.BLACK); - g2D.drawString(OREManager.getInstance().getCurrentClass2Learn() - .toString(), 320, 10); - g2D.setColor(Color.ORANGE); - g2D.fillOval(310, 20, 9, 9); + g2D.drawString(ManchesterSyntaxRenderer.renderSimple(OREManager.getInstance().getCurrentClass2Learn()) + , 320, 10); +// g2D.setColor(Color.ORANGE); +// g2D.fillOval(310, 20, 9, 9); g2D.setColor(Color.black); int p = 30; @@ -154,11 +154,11 @@ g2D.setColor(Color.BLACK); g2D.drawString("individuals covered by", 320, p); g2D.setColor(Color.ORANGE); - g2D.fillOval(455, p - 9, 9, 9); + g2D.fillOval(460, p - 9, 9, 9); g2D.setColor(Color.BLACK); - g2D.drawString("and", 485, p); + g2D.drawString("and", 475, p); g2D.setColor(Color.YELLOW); - g2D.fillOval(525, p - 9, 9, 9); + g2D.fillOval(505, p - 9, 9, 9); g2D.setColor(Color.BLACK); p = p + 20; g2D.drawString("(OK)", 320, p); @@ -170,7 +170,7 @@ g2D.setColor(Color.BLACK); g2D.drawString("individuals covered by", 320, p); g2D.setColor(Color.ORANGE); - g2D.fillOval(455, p - 9, 9, 9); + g2D.fillOval(460, p - 9, 9, 9); g2D.setColor(Color.BLACK); p = p + 20; g2D.drawString("(potential problem)", 320, p); @@ -181,7 +181,7 @@ g2D.setColor(Color.BLACK); g2D.drawString("individuals covered by", 320, p); g2D.setColor(Color.YELLOW); - g2D.fillOval(455, p - 9, 9, 9); + g2D.fillOval(460, p - 9, 9, 9); g2D.setColor(Color.BLACK); p = p + 20; g2D.drawString("(potential problem)", 320, p); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -1,11 +1,30 @@ package org.dllearner.tools.ore.ui; +import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; +import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.List; +import java.util.Set; +import javax.swing.AbstractAction; +import javax.swing.Box; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPopupMenu; + +import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.RepairManager; +import org.dllearner.tools.ore.TaskManager; +import org.dllearner.tools.ore.explanation.Explanation; import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyManager; public class ImpactTable extends JXTable { @@ -64,8 +83,111 @@ setCursor(null); } } + + + public void mousePressed(MouseEvent e) { + int row = rowAtPoint(e.getPoint()); + if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { + showPopupMenu(e); + + } + + } + + public void mouseReleased(MouseEvent e) { + int row = rowAtPoint(e.getPoint()); + if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { + + showPopupMenu(e); + + } + } + + + + }); } + private void showPopupMenu(MouseEvent e){ + final int row = rowAtPoint(e.getPoint()); + JPopupMenu menu = new JPopupMenu(); + menu.add(new AbstractAction("Why?") { + /** + * + */ + private static final long serialVersionUID = 950445739098337169L; + final ImpactTable table = ImpactTable.this; + + public void actionPerformed(ActionEvent e){ + + + OWLAxiom ax = (OWLAxiom)table.getValueAt(row, 1); + showWhy(ax); + + + } + + + }); + menu.show(this, e.getX(), e.getY()); + } + private void showWhy(OWLAxiom entailment){ + try { + OREManager oreMan = OREManager.getInstance(); + RepairManager repMan = RepairManager.getInstance(oreMan); + ExplanationManager expMan = ExplanationManager.getInstance(oreMan); + OWLOntologyManager man = oreMan.getReasoner().getOWLOntologyManager(); + List<OWLOntologyChange>repairPlan = repMan.getRepairPlan(); + + StringBuilder sb = new StringBuilder(); + sb.append(ManchesterSyntaxRenderer.renderSimple(entailment)); + if(((ImpactTableModel)getModel()).isLostEntailment(entailment)){ + sb.append(" is lost because"); + new ExplanationDialog(sb.toString(), expMan.getEntailmentExplanations(entailment)); + } else { + sb.append(" is added because"); + man.applyChanges(repairPlan); + new ExplanationDialog(sb.toString(), expMan.getEntailmentExplanations(entailment)); + man.applyChanges(repMan.getInverseChanges(repairPlan)); + } + + } catch (OWLOntologyChangeException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + + private class ExplanationDialog extends JDialog{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + private JComponent explanationsPanel; + + public ExplanationDialog(String title, Set<Explanation> explanations){ + super(TaskManager.getInstance().getDialog(), title, true); + setLayout(new BorderLayout()); + + explanationsPanel = new Box(1); + + int counter = 1; + for(Explanation exp : explanations){ + ExplanationTablePanel panel = new ExplanationTablePanel(new SimpleExplanationTable(exp), counter); + explanationsPanel.add(panel); + } + add(explanationsPanel, BorderLayout.NORTH); + setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + setSize(700, 400); + + setVisible(true); + + + + } + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -45,7 +45,7 @@ lostEntailments = new HashSet<OWLAxiom>(); addedEntailemnts = new HashSet<OWLAxiom>(); - ont = OREManager.getInstance().getPelletReasoner().getOWLAPIOntologies(); + ont = OREManager.getInstance().getReasoner().getOWLAPIOntologies(); repMan.addListener(this); // impMan.addListener(this); @@ -145,6 +145,10 @@ public boolean isLostEntailment(int rowIndex){ return lostEntailments.contains(getOWLAxiomAtRow(rowIndex)); } + + public boolean isLostEntailment(OWLAxiom entailment){ + return lostEntailments.contains(entailment); + } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -34,6 +34,32 @@ return render(desc); } + public static String renderSimple(OWLAxiom ax){ + ax.accept(renderer); + writer.flush(); + String renderedString = buffer.toString(); + buffer.getBuffer().delete(0, buffer.toString().length()); + return renderedString; + } + + public static String renderSimple(Description value){ + OWLDescription desc = OWLAPIDescriptionConvertVisitor.getOWLDescription((Description)value); + desc.accept(renderer); + writer.flush(); + String renderedString = buffer.toString(); + buffer.getBuffer().delete(0, buffer.toString().length()); + return renderedString; + } + + public static String renderSimple(Individual value){ + OWLIndividual ind = OWLAPIConverter.getOWLAPIIndividual(value); + ind.accept(renderer); + writer.flush(); + String renderedString = buffer.toString(); + buffer.getBuffer().delete(0, buffer.toString().length()); + return renderedString; + } + public static String render(Individual value){ OWLIndividual ind = OWLAPIConverter.getOWLAPIIndividual((Individual) value); return render(ind); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -42,12 +42,17 @@ import javax.swing.JSeparator; import javax.swing.border.EmptyBorder; -import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.OntologyModifier; +import org.dllearner.tools.ore.ui.item.AddPropertyAssertionMenuItem; +import org.dllearner.tools.ore.ui.item.AddToClassMenuItem; +import org.dllearner.tools.ore.ui.item.MoveFromClassToMenuItem; +import org.dllearner.tools.ore.ui.item.MoveToClassFromMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsNotToMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsToMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveFromClassMenuItem; import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyChangeListener; @@ -88,8 +93,6 @@ private OntologyModifier modifier; private Individual ind; - private Description actualDesc; - private Description newDesc; public RepairDialog(Individual ind, JDialog dialog, String mode){ @@ -126,7 +129,7 @@ this.modifier = OREManager.getInstance().getModifier(); this.mode = mode; - OREManager.getInstance().getPelletReasoner().getOWLOntologyManager().addOntologyChangeListener(this); + OREManager.getInstance().getReasoner().getOWLOntologyManager().addOntologyChangeListener(this); } @@ -206,48 +209,45 @@ * Method controls action events triggered by clicking on red labels in class description at the top of the dialog. */ public void actionPerformed(ActionEvent e) { + if(e.getSource() instanceof RemoveFromClassMenuItem){ + RemoveFromClassMenuItem item = (RemoveFromClassMenuItem)e.getSource(); + List<OWLOntologyChange> changes = modifier.removeClassAssertion(ind, item.getDescription()); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof MoveFromClassToMenuItem){ + MoveFromClassToMenuItem item = (MoveFromClassToMenuItem)e.getSource(); + List<OWLOntologyChange> changes = modifier.moveIndividual(ind, item.getSource(), item.getDestination()); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof AddToClassMenuItem){ + AddToClassMenuItem item = (AddToClassMenuItem)e.getSource(); + List<OWLOntologyChange> changes = modifier.addClassAssertion(ind, item.getDescription()); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof RemoveAllPropertyAssertionsMenuItem){ + RemoveAllPropertyAssertionsMenuItem item = (RemoveAllPropertyAssertionsMenuItem)e.getSource(); + List<OWLOntologyChange> changes = modifier.deleteObjectProperty(ind, item.getProperty()); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof RemoveAllPropertyAssertionsToMenuItem){ + RemoveAllPropertyAssertionsToMenuItem item = (RemoveAllPropertyAssertionsToMenuItem)e.getSource(); + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); + changes.addAll(modifier.removeAllObjectPropertyAssertions(ind, item.getProperty(), OREManager.getInstance().getIndividualsInPropertyRange(item.getDestination(), ind))); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof RemoveAllPropertyAssertionsNotToMenuItem){ + RemoveAllPropertyAssertionsNotToMenuItem item = (RemoveAllPropertyAssertionsNotToMenuItem)e.getSource(); + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); + changes.addAll(modifier.removeAllObjectPropertyAssertions(ind, item.getProperty(), OREManager.getInstance().getIndividualsNotInPropertyRange(item.getDestination(), ind))); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof MoveToClassFromMenuItem){ + MoveToClassFromMenuItem item = (MoveToClassFromMenuItem)e.getSource(); + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); + changes.addAll(modifier.moveIndividual(ind, item.getSource(), item.getDestination())); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof AddPropertyAssertionMenuItem){ + AddPropertyAssertionMenuItem item = (AddPropertyAssertionMenuItem)e.getSource(); + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); + changes.addAll(modifier.addObjectProperty(ind, item.getProperty(), item.getObject())); + changesTable.addChanges(changes); + } - if(e.getSource() instanceof DescriptionMenuItem){ - DescriptionMenuItem item =(DescriptionMenuItem) e.getSource(); - actualDesc = item.getDescription(); - int action = item.getActionID(); - if(action == 4){ - Individual obj = new Individual(e.getActionCommand()); - List<OWLOntologyChange> changes = modifier.addObjectProperty(ind, (ObjectQuantorRestriction) actualDesc, obj); - changesTable.addChanges(changes); - } else if(action == 5){ - ObjectQuantorRestriction property = (ObjectQuantorRestriction) actualDesc; - List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); - for(Individual i : OREManager.getInstance().getIndividualsInPropertyRange(property, ind)){ - changes.addAll(modifier.removeObjectPropertyAssertion(ind, property, i)); - } - changesTable.addChanges(changes); - - } else if(action == 6){ - List<OWLOntologyChange> changes = modifier.deleteObjectProperty(ind, (ObjectQuantorRestriction) actualDesc); - changesTable.addChanges(changes); - } else if(action == 0){ - newDesc = new NamedClass(item.getName()); - List<OWLOntologyChange> changes = modifier.moveIndividual(ind, actualDesc, newDesc); - changesTable.addChanges(changes); - } else if(action == 3){ - List<OWLOntologyChange> changes = modifier.removeClassAssertion(ind, actualDesc); - changesTable.addChanges(changes); - } else if(action == 2){ - List<OWLOntologyChange> changes = modifier.addClassAssertion(ind, actualDesc); - changesTable.addChanges(changes); - } else if(action == 7){ - ObjectQuantorRestriction property = (ObjectQuantorRestriction) actualDesc; - List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); - for(Individual i : OREManager.getInstance().getIndividualsNotInPropertyRange(property, ind)){ - changes.addAll(modifier.removeObjectPropertyAssertion(ind, property, i)); - } - } else if(action == 1){ - Description oldDesc = new NamedClass(item.getName()); - List<OWLOntologyChange> changes = modifier.moveIndividual(ind, oldDesc, actualDesc); - changesTable.addChanges(changes); - } - } else if(e.getActionCommand().equals("Ok")){ + else if(e.getActionCommand().equals("Ok")){ if(descPanel.isCorrect()){ returncode = VALID_RETURN_CODE; } else{ Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTable.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -0,0 +1,25 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; + +import javax.swing.JTable; + +import org.dllearner.tools.ore.explanation.Explanation; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; + +public class SimpleExplanationTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 5258296616232184974L; + + + public SimpleExplanationTable(Explanation exp){ + setBackground(Color.WHITE); + setHighlighters(HighlighterFactory.createAlternateStriping()); + setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + setModel(new SimpleExplanationTableModel(exp)); + } +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -0,0 +1,49 @@ +package org.dllearner.tools.ore.ui; + +import javax.swing.table.A... [truncated message content] |
From: <rap...@us...> - 2009-09-05 14:14:05
|
Revision: 1836 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1836&view=rev Author: rap-rabbit Date: 2009-09-05 14:13:56 +0000 (Sat, 05 Sep 2009) Log Message: ----------- TestCommit -> MonogenicDiseases -> Ontologien im med. Bereich Added Paths: ----------- trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java Added: trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java 2009-09-05 14:13:56 UTC (rev 1836) @@ -0,0 +1,11 @@ +package org.dllearner.examples; + + +/* + * TestCommit + */ + + +public class MonogenicDiseases { + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-05 08:02:49
|
Revision: 1835 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1835&view=rev Author: lorenz_b Date: 2009-09-05 08:02:35 +0000 (Sat, 05 Sep 2009) Log Message: ----------- added undo option for applied changes in repair panel removed some warnings Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/OWLSyntaxTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/Delete16.gif trunk/src/dl-learner/org/dllearner/tools/ore/Edit16.gif trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomUsageChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTableCellRenderer.java Modified: trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -103,13 +103,14 @@ import org.semanticweb.owl.util.SimpleURIMapper; import org.semanticweb.owl.vocab.NamespaceOWLOntologyFormat; -import com.clarkparsia.explanation.PelletExplanation; +import com.clarkparsia.modularity.IncrementalClassifier; public class PelletReasoner extends ReasonerComponent { private Reasoner reasoner; private OWLOntologyManager manager; private OWLOntology ontology; + private IncrementalClassifier classifier; // the data factory is used to generate OWL API objects private OWLDataFactory factory; @@ -285,8 +286,14 @@ // TODO: add method to find datatypes } } - reasoner.loadOntologies(allImports); - dematerialise(); + try { + classifier.loadOntologies(allImports); + } catch (OWLReasonerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } +// reasoner.loadOntologies(allImports); +// dematerialise(); } /* @@ -329,7 +336,7 @@ } - private void dematerialise(){ + public void dematerialise(){ long dematStartTime = System.currentTimeMillis(); logger.debug("dematerialising concepts"); @@ -379,14 +386,9 @@ } public boolean isConsistent(){ - return reasoner.isConsistent(); + return classifier.getReasoner().isConsistent(); +// return reasoner.isConsistent(); } - - public Set<Set<OWLAxiom>> getInconsistencyReasons(){ - PelletExplanation expGen = new PelletExplanation(manager, reasoner.getLoadedOntologies()); - - return expGen.getInconsistencyExplanations(); - } @Override public ReasonerType getReasonerType() { @@ -396,8 +398,15 @@ @Override public void releaseKB() { - reasoner.clearOntologies(); - reasoner.dispose(); + try { + classifier.clearOntologies(); + classifier.dispose(); + } catch (OWLReasonerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } +// reasoner.clearOntologies(); +// reasoner.dispose(); } @@ -437,23 +446,30 @@ manager = OWLManager.createOWLOntologyManager(); factory = manager.getOWLDataFactory(); //set classification output to "none", while default is "console" - PelletOptions.USE_CLASSIFICATION_MONITOR = PelletOptions.MonitorType.SWING; + PelletOptions.USE_CLASSIFICATION_MONITOR = PelletOptions.MonitorType.NONE; // change log level to WARN for Pellet, because otherwise log // output will be very large Logger pelletLogger = Logger.getLogger("org.mindswap.pellet"); pelletLogger.setLevel(Level.WARN); - reasoner = new Reasoner(manager); - manager.addOntologyChangeListener(reasoner); + classifier = new IncrementalClassifier(manager); + reasoner = classifier.getReasoner(); + } public void classify(){ - reasoner.classify(); + try { + classifier.classify(); + } catch (OWLReasonerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } public void realise(){ try { + reasoner.realise(); } catch (OWLReasonerException e) { // TODO Auto-generated catch block @@ -462,7 +478,7 @@ } public void refresh(){ - reasoner.refresh(); + classifier.getReasoner().refresh(); } public void addProgressMonitor(ProgressMonitor monitor){ @@ -1521,5 +1537,9 @@ return reasoner; } + public IncrementalClassifier getClassifier(){ + return classifier; + } + } Added: trunk/src/dl-learner/org/dllearner/tools/ore/Delete16.gif =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/Delete16.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/dl-learner/org/dllearner/tools/ore/Edit16.gif =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/Edit16.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -1,11 +1,13 @@ package org.dllearner.tools.ore; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import org.dllearner.tools.ore.explanation.AxiomUsageChecker; import org.dllearner.tools.ore.explanation.CachedExplanationGenerator; import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.tools.ore.explanation.RootFinder; @@ -13,10 +15,8 @@ import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataFactory; -import org.semanticweb.owl.model.OWLException; +import org.semanticweb.owl.model.OWLEntity; import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyChange; -import org.semanticweb.owl.model.OWLOntologyChangeListener; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLSubClassAxiom; @@ -24,7 +24,7 @@ import uk.ac.manchester.cs.owl.explanation.ordering.DefaultExplanationOrderer; import uk.ac.manchester.cs.owl.explanation.ordering.ExplanationTree; -public class ExplanationManager implements OWLOntologyChangeListener, RepairManagerListener, OREManagerListener{ +public class ExplanationManager implements OREManagerListener{ private static ExplanationManager instance; @@ -35,8 +35,6 @@ private RootFinder rootFinder; - private boolean ontologyChanged = true; - private boolean isComputeAllExplanations = false; private int maxExplantionCount = 1; private boolean allExplanationWarningChecked = false; @@ -46,8 +44,8 @@ private List<ExplanationManagerListener> listeners; + private AxiomUsageChecker usageChecker; - private CachedExplanationGenerator gen; @@ -57,14 +55,14 @@ this.manager = reasoner.getManager(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); - manager.addOntologyChangeListener(this); dataFactory = manager.getOWLDataFactory(); - RepairManager.getRepairManager(oreMan).addListener(this); explanationOrderer = new DefaultExplanationOrderer(); orderingMap = new HashMap<Explanation, List<Map<OWLAxiom, Integer>>>(); rootFinder = new RootFinder(); + + usageChecker = new AxiomUsageChecker(ontology); listeners = new ArrayList<ExplanationManagerListener>(); @@ -72,10 +70,6 @@ } - public ExplanationManager() { - // TODO Auto-generated constructor stub - } - public static synchronized ExplanationManager getInstance( OREManager oreMan) { if (instance == null) { @@ -84,19 +78,16 @@ return instance; } - public static synchronized ExplanationManager getInstance(){ - if (instance == null) { - instance = new ExplanationManager(); - } - return instance; - } - public Set<OWLClass> getDerivedClasses(){ return rootFinder.getDerivedClasses(); } public Set<OWLClass> getRootUnsatisfiableClasses(){ - return rootFinder.getRootClasses(); + if(rootFinder != null){ + return rootFinder.getRootClasses(); + } else { + return Collections.<OWLClass>emptySet(); + } } public Set<Explanation> getUnsatisfiableExplanations(OWLClass unsat) { @@ -148,8 +139,12 @@ return ordering; } + public Set<OWLEntity> getUsage(OWLAxiom axiom){ + return usageChecker.getUsage(axiom); + } + private ArrayList<Map<OWLAxiom, Integer>> getTree2List(Tree<OWLAxiom> tree){ ArrayList<Map<OWLAxiom, Integer>> ordering = new ArrayList<Map<OWLAxiom, Integer>>(); Map<OWLAxiom, Integer> axiom2Depth = new HashMap<OWLAxiom, Integer>(); @@ -160,9 +155,7 @@ } return ordering; } - - public int getArity(OWLClass cl, OWLAxiom ax) { int arity = 0; @@ -206,18 +199,6 @@ public int getMaxExplantionCount(){ return maxExplantionCount; } - - @Override - public void repairPlanExecuted(List<OWLOntologyChange> changes) { - reasoner.refresh(); - ontologyChanged = true; - } - - @Override - public void repairPlanChanged() { - // TODO Auto-generated method stub - - } public void addListener(ExplanationManagerListener l){ listeners.add(l); @@ -254,18 +235,13 @@ public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ return gen.getRemainingAxioms(source, part); } - - @Override - public void ontologiesChanged(List<? extends OWLOntologyChange> changes) - throws OWLException { - ontologyChanged = true; - } @Override public void activeOntologyChanged() { ontology = OREManager.getInstance().getPelletReasoner().getOWLAPIOntologies(); reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); gen = new CachedExplanationGenerator(ontology, reasoner); + orderingMap.clear(); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -1,40 +1,47 @@ package org.dllearner.tools.ore; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; -import org.dllearner.tools.ore.explanation.AxiomRanker; +import org.dllearner.tools.ore.explanation.LostEntailmentsChecker; import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyManager; -public class ImpactManager implements RepairManagerListener{ +public class ImpactManager implements RepairManagerListener, OREManagerListener{ private static ImpactManager instance; - private Map<OWLAxiom, Set<OWLAxiom>> impact; - private AxiomRanker ranker; - private OWLAxiom actual; + private LostEntailmentsChecker lostEntailmentsChecker; private List<OWLAxiom> selectedAxioms; private List<ImpactManagerListener> listeners; private OWLOntology ontology; private OWLOntologyManager manager; private Reasoner reasoner; + private OREManager oreMan; + + private Set<OWLAxiom> lostEntailments; + private Set<OWLAxiom> addedEntailments; private ImpactManager(OREManager oreMan) { + this.oreMan = oreMan; this.reasoner = oreMan.getPelletReasoner().getReasoner(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); this.manager = reasoner.getManager(); - impact = new HashMap<OWLAxiom, Set<OWLAxiom>>(); + + lostEntailments = new HashSet<OWLAxiom>(); + addedEntailments = new HashSet<OWLAxiom>(); + selectedAxioms = new ArrayList<OWLAxiom>(); listeners = new ArrayList<ImpactManagerListener>(); - ranker = new AxiomRanker(ontology, reasoner, manager); - RepairManager.getRepairManager(oreMan).addListener(this); + + lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getPelletReasoner().getClassifier(), manager); + RepairManager.getInstance(oreMan).addListener(this); + oreMan.addListener(this); + } @@ -57,46 +64,31 @@ return instance; } - - public Set<OWLAxiom> getImpactAxioms(OWLAxiom ax) { - - Set<OWLAxiom> imp = impact.get(ax); - if (imp == null) { - imp = new HashSet<OWLAxiom>(); - impact.put(ax, imp); - if(ax != null){ -// imp.addAll(ranker.computeImpactOnRemoval(ax)); - imp.addAll(ranker.computeImpactSOS(ax)); - } - } - return imp; + public Set<OWLAxiom> getLostEntailments(){ + return lostEntailments; } - public Set<OWLAxiom> getImpactForAxioms2Remove(){ - Set<OWLAxiom> totalImpact = new HashSet<OWLAxiom>(); - for(OWLAxiom ax : selectedAxioms){ - Set<OWLAxiom> imp = getImpactAxioms(ax); - if(imp != null){ - totalImpact.addAll(imp); - } - - - } - return totalImpact; + public Set<OWLAxiom> getAddedEntailments(){ + return addedEntailments; } - public void setActualAxiom(OWLAxiom ax){ - actual = ax; - fireImpactListChanged(); + public void computeImpactForAxiomsInRepairPlan(){ + lostEntailments.clear(); + addedEntailments.clear(); + List<OWLOntologyChange> repairPlan = RepairManager.getInstance(oreMan).getRepairPlan(); + List<Set<OWLAxiom>> classificationImpact = lostEntailmentsChecker.computeClassificationImpact(repairPlan); + lostEntailments.addAll(classificationImpact.get(0)); + addedEntailments.addAll(classificationImpact.get(1)); + Set<OWLAxiom> structuralImpact = lostEntailmentsChecker.computeStructuralImpact(repairPlan); + lostEntailments.addAll(structuralImpact); } - public void addAxiom2ImpactList(OWLAxiom ax){ - selectedAxioms.add(ax); - + public void addSelection(OWLAxiom ax){ + selectedAxioms.add(ax); fireImpactListChanged(); } - public void removeAxiomFromImpactList(OWLAxiom ax){ + public void removeSelection(OWLAxiom ax){ selectedAxioms.remove(ax); fireImpactListChanged(); } @@ -121,10 +113,26 @@ @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { selectedAxioms.clear(); - impact.clear(); + lostEntailments.clear(); + addedEntailments.clear(); fireImpactListChanged(); } + + @Override + public void activeOntologyChanged() { + this.reasoner = oreMan.getPelletReasoner().getReasoner(); + this.ontology = reasoner.getLoadedOntologies().iterator().next(); + this.manager = reasoner.getManager(); + lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getPelletReasoner().getClassifier(), manager); + selectedAxioms.clear(); + lostEntailments.clear(); + addedEntailments.clear(); + fireImpactListChanged(); + + } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -31,13 +31,11 @@ import org.dllearner.tools.ore.ui.wizard.Wizard; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; -import org.dllearner.tools.ore.ui.wizard.descriptors.InconsistencyExplanationPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.IntroductionPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.KnowledgeSourcePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.LearningPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.SavePanelDescriptor; -import org.dllearner.tools.ore.ui.wizard.descriptors.UnsatisfiableExplanationPanelDescriptor; /** @@ -68,9 +66,10 @@ // TODO Auto-generated catch block e.printStackTrace(); } + Locale.setDefault(Locale.ENGLISH); final Wizard wizard = new Wizard(); - wizard.getDialog().setTitle("DL-Learner ORE-Tool"); + wizard.getDialog().setTitle("DL-Learner Ontology Repair and Enrichment"); Dimension dim = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); wizard.getDialog().setSize(dim); @@ -101,12 +100,10 @@ if (!(args.length == 1)){ wizard.setCurrentPanel(IntroductionPanelDescriptor.IDENTIFIER); } else{ - OREManager.getInstance().setCurrentKnowledgeSource(new File(args[0]).toURI()); - OREManager.getInstance().initPelletReasoner(); -// ((KnowledgeSourcePanelDescriptor) descriptor2).getPanel().setFileURL(args[0]); wizard.setCurrentPanel(KnowledgeSourcePanelDescriptor.IDENTIFIER); - wizard.setLeftPanel(1); - + wizard.setLeftPanel(1); + ((KnowledgeSourcePanelDescriptor)wizard.getModel().getPanelHashMap().get(KnowledgeSourcePanelDescriptor.IDENTIFIER)).loadOntology(new File(args[0]).toURI()); + } SwingUtilities.invokeLater(new Runnable() { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -1,7 +1,5 @@ package org.dllearner.tools.ore; -import java.io.IOException; -import java.io.StringWriter; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; @@ -35,11 +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.OWLAxiom; -import org.semanticweb.owl.model.OWLException; -import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxExplanationRenderer; - public class OREManager { @@ -183,32 +177,6 @@ } } - - - public String getInconsistencyExplanationsString(){ - ManchesterSyntaxExplanationRenderer renderer = new ManchesterSyntaxExplanationRenderer(); - StringWriter buffer = new StringWriter(); - renderer.startRendering(buffer); - try { - renderer.render(getInconsistencyExplanations()); - } catch (UnsupportedOperationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OWLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - renderer.endRendering(); - return buffer.toString(); - } - - private Set<Set<OWLAxiom>> getInconsistencyExplanations(){ - return pelletReasoner.getInconsistencyReasons(); - } - public OntologyModifier getModifier() { return modifier; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -2,46 +2,41 @@ import java.util.ArrayList; import java.util.List; -import java.util.Set; import java.util.Stack; import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.model.AddAxiom; -import org.semanticweb.owl.model.OWLAxiom; -import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyChangeException; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.RemoveAxiom; -public class RepairManager { +public class RepairManager implements OREManagerListener{ private static RepairManager instance; - - private OWLAxiom actual; - private List<OWLAxiom> axioms2Remove; - private List<OWLAxiom> axioms2Keep; private List<RepairManagerListener> listeners; - private OWLOntology ontology; + private OWLOntologyManager manager; private Reasoner reasoner; + private List<OWLOntologyChange> repairPlan; + private Stack<List<OWLOntologyChange>> undoStack; private Stack<List<OWLOntologyChange>> redoStack; - private RepairManager(OREManager oreMan) { + private RepairManager(OREManager oreMan){ this.reasoner = oreMan.getPelletReasoner().getReasoner(); - this.ontology = reasoner.getLoadedOntologies().iterator().next(); this.manager = reasoner.getManager(); - - axioms2Remove = new ArrayList<OWLAxiom>(); - axioms2Keep = new ArrayList<OWLAxiom>(); - + listeners = new ArrayList<RepairManagerListener>(); undoStack = new Stack<List<OWLOntologyChange>>(); redoStack = new Stack<List<OWLOntologyChange>>(); + + repairPlan = new ArrayList<OWLOntologyChange>(); + + oreMan.addListener(this); } @@ -57,100 +52,77 @@ listeners.remove(listener); } - public static synchronized RepairManager getRepairManager(OREManager oreMan) { + public static synchronized RepairManager getInstance(OREManager oreMan) { if (instance == null) { instance = new RepairManager(oreMan); } return instance; } - public void addAxiom2Remove(OWLAxiom ax){ - axioms2Remove.add(ax); + public void addToRepairPlan(OWLOntologyChange change){ + repairPlan.add(change); fireRepairPlanChanged(); } - public void addAxioms2Remove(Set<OWLAxiom> axioms){ - axioms2Remove.addAll(axioms); + public void removeFromRepairPlan(OWLOntologyChange change){ + repairPlan.remove(change); fireRepairPlanChanged(); } - public void removeAxiom2Remove(OWLAxiom ax){ - axioms2Remove.remove(ax); - fireRepairPlanChanged(); + public List<OWLOntologyChange> getRepairPlan(){ + return repairPlan; } - public void removeAxioms2Remove(Set<OWLAxiom> axioms){ - axioms2Remove.removeAll(axioms); - fireRepairPlanChanged(); + public boolean isUndoable(){ + return !undoStack.isEmpty(); } - public void addAxiom2Keep(OWLAxiom ax){ - axioms2Keep.add(ax); - fireRepairPlanChanged(); - } - - public void addAxioms2Keep(Set<OWLAxiom> axioms){ - axioms2Keep.addAll(axioms); - fireRepairPlanChanged(); - } - - public void removeAxiom2Keep(OWLAxiom ax){ - axioms2Keep.remove(ax); - fireRepairPlanChanged(); - } - - public void removeAxioms2Keep(Set<OWLAxiom> axioms){ - axioms2Keep.removeAll(axioms); - fireRepairPlanChanged(); - } - - public boolean isSelected(OWLAxiom ax){ - return axioms2Remove.contains(ax); - } - - public List<OWLAxiom> getAxioms2Remove(){ - return axioms2Remove; - } - - public List<OWLAxiom> getAxioms2Keep(){ - return axioms2Keep; - } - public void executeRepairPlan(){ - List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); - for(OWLAxiom ax : axioms2Remove){ - changes.add(new RemoveAxiom(ontology, ax)); - } - for(OWLAxiom ax : axioms2Keep){ - changes.add(new AddAxiom(ontology, ax)); - } + try { - manager.applyChanges(changes); + manager.applyChanges(repairPlan); } catch (OWLOntologyChangeException e) { System.out.println("Error in Repairmanager: Couldn't apply ontology changes"); e.printStackTrace(); } - undoStack.push(changes); - axioms2Remove.clear(); - axioms2Keep.clear(); + undoStack.push(new ArrayList<OWLOntologyChange>(repairPlan)); + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(repairPlan); + + repairPlan.clear(); fireRepairPlanExecuted(changes); + } public void undo(){ List<OWLOntologyChange> changes = undoStack.pop(); redoStack.push(changes); + try { - manager.applyChanges(changes); + manager.applyChanges(getInverseChanges(changes)); } catch (OWLOntologyChangeException e) { System.out.println("Error in Repairmanager: Couldn't apply ontology changes"); e.printStackTrace(); } + + fireRepairPlanExecuted(changes); } public void redo(){ } + private List<OWLOntologyChange> getInverseChanges(List<OWLOntologyChange> changes){ + List<OWLOntologyChange> inverseChanges = new ArrayList<OWLOntologyChange>(changes.size()); + for(OWLOntologyChange change : changes){ + if(change instanceof RemoveAxiom){ + inverseChanges.add(new AddAxiom(change.getOntology(), change.getAxiom())); + } else { + inverseChanges.add(new RemoveAxiom(change.getOntology(), change.getAxiom())); + } + } + return inverseChanges; + } + private void fireRepairPlanChanged(){ for(RepairManagerListener listener : listeners){ listener.repairPlanChanged(); @@ -158,9 +130,14 @@ } private void fireRepairPlanExecuted(List<OWLOntologyChange> changes){ - for(RepairManagerListener listener : listeners){ listener.repairPlanExecuted(changes); } } + + @Override + public void activeOntologyChanged() { + repairPlan.clear(); + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -1,5 +1,7 @@ package org.dllearner.tools.ore; +import java.awt.Cursor; + import javax.swing.JDialog; import javax.swing.SwingWorker; @@ -50,4 +52,18 @@ public synchronized void cancelCurrentThread(){currentThread.stop(); } + + public void setTaskStarted(String message){ + dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + statusBar.setProgressTitle(message); + statusBar.showProgress(true); + } + + public void setTaskFinished(){ + dialog.setCursor(null); + statusBar.setProgressTitle("Done"); + statusBar.showProgress(false); + } + + } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -1,269 +0,0 @@ -package org.dllearner.tools.ore.explanation; - -import java.net.URI; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.mindswap.pellet.owlapi.PelletReasonerFactory; -import org.mindswap.pellet.owlapi.Reasoner; -import org.mindswap.pellet.utils.SetUtils; -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.inference.OWLReasonerException; -import org.semanticweb.owl.model.AxiomType; -import org.semanticweb.owl.model.OWLAxiom; -import org.semanticweb.owl.model.OWLClass; -import org.semanticweb.owl.model.OWLDataFactory; -import org.semanticweb.owl.model.OWLDataPropertyDomainAxiom; -import org.semanticweb.owl.model.OWLDescription; -import org.semanticweb.owl.model.OWLDisjointClassesAxiom; -import org.semanticweb.owl.model.OWLObjectPropertyDomainAxiom; -import org.semanticweb.owl.model.OWLObjectPropertyRangeAxiom; -import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyChangeException; -import org.semanticweb.owl.model.OWLOntologyCreationException; -import org.semanticweb.owl.model.OWLOntologyManager; -import org.semanticweb.owl.model.OWLSubClassAxiom; -import org.semanticweb.owl.model.RemoveAxiom; - -import com.clarkparsia.modularity.IncrementalClassifier; -import com.clarkparsia.modularity.ModuleExtractor; -import com.clarkparsia.modularity.ModuleExtractorFactory; - -public class AxiomRanker { - - private Map axiomSOSMap; - - private OWLOntology ontology; - private Reasoner reasoner; - private OWLOntologyManager manager; - private OWLDataFactory factory; - private IncrementalClassifier classifier; - - boolean enableImpactUnsat; - - public AxiomRanker(OWLOntology ont, Reasoner reasoner, OWLOntologyManager mng){ - this.ontology = ont; - this.reasoner = reasoner; - this.manager = mng; - this.factory = manager.getOWLDataFactory(); - ModuleExtractor extractor = ModuleExtractorFactory.createModuleExtractor(); - classifier = new IncrementalClassifier(manager, reasoner, extractor); - - } - - public Set<OWLAxiom> computeImpactOnRemoval(OWLAxiom ax){ - Set<OWLAxiom> impact = new HashSet<OWLAxiom>(); - - try { -// IncrementalClassifier classifier = new IncrementalClassifier(manager); - classifier.loadOntology(ontology); - classifier.classify(); - Set<OWLClass> inc = classifier.getInconsistentClasses(); - for(OWLDescription cl : ontology.getClassesInSignature()){ - if(!inc.contains(cl)){ - for(OWLClass sup : SetUtils.union(classifier.getAncestorClasses(cl))){ - if(!sup.equals(factory.getOWLThing())){ - for(OWLClass sub : SetUtils.union(classifier.getDescendantClasses(cl))){ - if(!sub.equals(factory.getOWLNothing())){ - impact.add(factory.getOWLSubClassAxiom(cl, sup)); - } - } - - } - } - - } - } - - - manager.applyChange(new RemoveAxiom(ontology, ax)); - - classifier.classify(); - inc = classifier.getInconsistentClasses();System.out.println(inc); - - for(OWLDescription cl : ontology.getClassesInSignature()){ - if(!inc.contains(cl)){ - for(OWLClass sup : SetUtils.union(classifier.getAncestorClasses(cl))){ - if(!sup.equals(factory.getOWLThing())){ - for(OWLClass sub : SetUtils.union(classifier.getDescendantClasses(cl))){ - if(!sub.equals(factory.getOWLNothing())){ - impact.remove(factory.getOWLSubClassAxiom(cl, sup)); - } - } - - } - } - - } - } - manager.addAxiom(ontology, ax);classifier.classify(); - - } catch (OWLReasonerException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OWLOntologyChangeException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return impact; - } - - public Set<OWLAxiom> computeImpactSOS(OWLAxiom axiom) { - Set<OWLAxiom> result = new HashSet<OWLAxiom>(); - if (axiom instanceof OWLSubClassAxiom) { - OWLSubClassAxiom subAx = (OWLSubClassAxiom) axiom; - if (subAx.getSubClass() instanceof OWLClass && subAx.getSuperClass() instanceof OWLClass) { - OWLClass sub = (OWLClass) subAx.getSubClass(); - OWLClass sup = (OWLClass) subAx.getSuperClass(); - - for (OWLClass desc : SetUtils.union(reasoner.getDescendantClasses(sub))) { - - for (OWLClass anc : SetUtils.union(reasoner.getAncestorClasses(sup))) { - - if (!anc.equals(factory.getOWLThing()) && !desc.equals(factory.getOWLNothing())) { - OWLSubClassAxiom ax = factory.getOWLSubClassAxiom(desc, anc); - result.add(ax); - } - } - } - } - }else if (axiom instanceof OWLDisjointClassesAxiom) { - Set<OWLDescription> disjointClasses = ((OWLDisjointClassesAxiom) axiom).getDescriptions(); - boolean complex = false; - for (OWLDescription dis : disjointClasses) { - if (dis.isAnonymous()) { - complex = true; - break; - } - } - if (!complex) { - - List<OWLDescription> disjoints = new ArrayList<OWLDescription>(disjointClasses); - - - - for (OWLDescription dis : new ArrayList<OWLDescription>(disjoints)) { - if (!dis.equals(factory.getOWLNothing())) { - disjoints.remove(dis); - Set<? extends OWLDescription> descendants = SetUtils.union(reasoner.getDescendantClasses(dis.asOWLClass())); - descendants.removeAll(reasoner.getEquivalentClasses(factory.getOWLNothing())); -// if (enableImpactUnsat) { -// descendants.addAll(((OWLClass) dis).getSubClasses(ontology)); -// } - for (OWLDescription desc1 : descendants) { - - if (!desc1.equals(factory.getOWLNothing())) { - if (enableImpactUnsat || !reasoner.getEquivalentClasses((desc1)).contains(factory.getOWLNothing())) { - for (OWLDescription desc2 : disjoints) { - - if (!desc2.equals(desc1)) { - Set<OWLDescription> newDis = new HashSet<OWLDescription>(); - newDis.add(desc1); - newDis.add(desc2); - OWLDisjointClassesAxiom ax = factory.getOWLDisjointClassesAxiom(newDis); - result.add(ax); - } - } - } - } - } - - disjoints.add(dis); - - - } - } -// return result; - } - } - else if (axiom instanceof OWLObjectPropertyDomainAxiom) { - OWLObjectPropertyDomainAxiom pd = (OWLObjectPropertyDomainAxiom) axiom; - - if (pd.getDomain() instanceof OWLClass) { - OWLClass dom = (OWLClass) pd.getDomain(); - Set<OWLClass> superClasses = SetUtils.union(reasoner.getSuperClasses(dom)); - for (OWLClass sup : superClasses) { - - OWLObjectPropertyDomainAxiom ax = factory.getOWLObjectPropertyDomainAxiom( pd.getProperty(), sup); - result.add(ax); - } - } - } - else if (axiom instanceof OWLDataPropertyDomainAxiom) { - OWLDataPropertyDomainAxiom pd = (OWLDataPropertyDomainAxiom) axiom; - - if (pd.getDomain() instanceof OWLClass) { - OWLClass dom = (OWLClass) pd.getDomain(); - Set<OWLClass> superClasses = SetUtils.union(reasoner.getSuperClasses(dom)); - for (OWLClass sup : superClasses) { - - OWLDataPropertyDomainAxiom ax = factory.getOWLDataPropertyDomainAxiom( pd.getProperty(), sup); - result.add(ax); - } - } - } - else if (axiom instanceof OWLObjectPropertyRangeAxiom) { - OWLObjectPropertyRangeAxiom pd = (OWLObjectPropertyRangeAxiom) axiom; - - if (pd.getRange() instanceof OWLClass) { - OWLClass ran = (OWLClass) pd.getRange(); - Set<OWLClass> superClasses = SetUtils.union(reasoner.getSuperClasses(ran)); - for (OWLClass sup : superClasses) { - - OWLObjectPropertyRangeAxiom ax = factory.getOWLObjectPropertyRangeAxiom(pd.getProperty(), sup); - result.add(ax); - } - } - } - for(OWLAxiom ax : result){ - System.out.println(reasoner.isEntailed(axiom)); - } - return result; - } - - - - - - public static void main(String[] args){ - - try { - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLDataFactory dFactory = manager.getOWLDataFactory(); - OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create("file:examples/ore/koala.owl")); - PelletReasonerFactory factory = new PelletReasonerFactory(); - Reasoner reasoner = factory.createReasoner(manager); - reasoner.loadOntology(ontology); - reasoner.classify(); - - - OWLClass cl1 = dFactory.getOWLClass(URI.create("http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#koala")); - OWLClass cl2 = dFactory.getOWLClass(URI.create("http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#person")); - OWLAxiom ax = dFactory.getOWLSubClassAxiom(cl1, dFactory.getOWLObjectComplementOf(cl2)); - Set<OWLClass> before = null; - Set<OWLClass> after = null; - - before = SetUtils.union(reasoner.getSuperClasses(cl1)); - manager.applyChange(new RemoveAxiom(ontology, ax)); - after = SetUtils.union(reasoner.getSuperClasses(cl1)); - System.out.println(SetUtils.difference(before, after)); - - System.out.println(cl1.getSuperClasses(ontology)); - System.out.println(after); - - - - } catch (OWLOntologyCreationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OWLOntologyChangeException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - -} Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomUsageChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomUsageChecker.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomUsageChecker.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -0,0 +1,43 @@ +package org.dllearner.tools.ore.explanation; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLEntity; +import org.semanticweb.owl.model.OWLOntology; + +public class AxiomUsageChecker { + + private OWLOntology ontology; + private Map<OWLAxiom, Set<OWLEntity>> axiom2UsageMap; + + public AxiomUsageChecker(OWLOntology ontology){ + this.ontology = ontology; + axiom2UsageMap = new HashMap<OWLAxiom, Set<OWLEntity>>(); + } + + private Set<OWLEntity> computeUsage(OWLAxiom axiom) { + Set<OWLEntity> usage = new HashSet<OWLEntity>(); + for(OWLEntity ent : axiom.getSignature()){ + for(OWLAxiom ax : ontology.getLogicalAxioms()){ + if(ax.getSignature().contains(ent)){ + usage.addAll(ax.getSignature()); + } + } + } + + return usage; + } + + public Set<OWLEntity> getUsage(OWLAxiom axiom){ + Set<OWLEntity> usage = axiom2UsageMap.get(axiom); + if(usage == null){ + usage = computeUsage(axiom); + axiom2UsageMap.put(axiom, usage); + } + return usage; + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -6,7 +6,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.Map.Entry; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; @@ -19,7 +18,6 @@ import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyManager; -import org.semanticweb.owl.model.RemoveAxiom; import uk.ac.manchester.cs.owl.modularity.ModuleType; @@ -49,7 +47,7 @@ laconicExplanationCache = new HashMap<OWLAxiom, Set<Explanation>>(); lastRequestedRegularSize = new HashMap<OWLAxiom, Integer>(); lastRequestedLaconicSize = new HashMap<OWLAxiom, Integer>(); - RepairManager.getRepairManager(OREManager.getInstance()).addListener(this); + RepairManager.getInstance(OREManager.getInstance()).addListener(this); // regularExpGen = new PelletExplanation(manager, Collections.singleton(ontology)); // laconicExpGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(ontology)); Copied: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java (from rev 1834, trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -0,0 +1,245 @@ +package org.dllearner.tools.ore.explanation; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.mindswap.pellet.owlapi.Reasoner; +import org.mindswap.pellet.utils.SetUtils; +import org.semanticweb.owl.inference.OWLReasonerException; +import org.semanticweb.owl.model.AddAxiom; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDataPropertyDomainAxiom; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLDisjointClassesAxiom; +import org.semanticweb.owl.model.OWLObjectPropertyDomainAxiom; +import org.semanticweb.owl.model.OWLObjectPropertyRangeAxiom; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLSubClassAxiom; +import org.semanticweb.owl.model.RemoveAxiom; + +import com.clarkparsia.modularity.IncrementalClassifier; + +public class LostEntailmentsChecker { + + + private OWLOntology ontology; + private Reasoner reasoner; + private OWLOntologyManager manager; + private OWLDataFactory factory; + private IncrementalClassifier classifier; + + boolean enableImpactUnsat; + + public LostEntailmentsChecker(OWLOntology ont, IncrementalClassifier classifier, OWLOntologyManager mng){ + this.ontology = ont; + this.classifier = classifier; + this.manager = mng; + this.factory = manager.getOWLDataFactory(); + this.reasoner = classifier.getReasoner(); + + } + + public List<Set<OWLAxiom>> computeClassificationImpact(List<OWLOntologyChange> changes){ + List<Set<OWLAxiom>> impact = new ArrayList<Set<OWLAxiom>>(2); + Set<OWLAxiom> entailmentsBefore = new HashSet<OWLAxiom>(); + Set<OWLAxiom> entailmentsAfter = new HashSet<OWLAxiom>(); + Set<OWLAxiom> lostEntailments = new HashSet<OWLAxiom>(); + Set<OWLAxiom> addedEntailents = new HashSet<OWLAxiom>(); + + try{ + Set<OWLClass> inc = classifier.getInconsistentClasses(); + for(OWLDescription cl : ontology.getClassesInSignature()){ + if(!inc.contains(cl) && !cl.isOWLThing()){ + for(OWLClass sub : SetUtils.union(classifier.getDescendantClasses(cl))){ + if(!sub.isOWLNothing() && !inc.contains(sub)){ + entailmentsBefore.add(factory.getOWLSubClassAxiom(sub, cl)); + } + } + } + } + + + manager.applyChanges(changes); + + classifier.classify(); + inc = classifier.getInconsistentClasses(); + + for(OWLDescription cl : ontology.getClassesInSignature()){ + if(!inc.contains(cl) && !cl.isOWLThing()){ + for(OWLClass sub : SetUtils.union(classifier.getDescendantClasses(cl))){ + if(!sub.isOWLNothing() && !inc.contains(sub)){ + entailmentsAfter.add(factory.getOWLSubClassAxiom(sub, cl)); + } + } + } + } + lostEntailments = SetUtils.difference(entailmentsBefore, entailmentsAfter); + addedEntailents = SetUtils.difference(entailmentsAfter, entailmentsBefore); + impact.add(0, lostEntailments); + impact.add(1, addedEntailents); + manager.applyChanges(getInverseChanges(changes)); + + } catch (OWLReasonerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return impact; + } + + public Set<OWLAxiom> computeStructuralImpact(List<OWLOntologyChange> changes) {reasoner.refresh(); + Set<OWLAxiom> possibleLosts = new HashSet<OWLAxiom>(); + Set<OWLAxiom> realLosts = new HashSet<OWLAxiom>(); + OWLAxiom axiom; + for(OWLOntologyChange change : changes){ + if(change instanceof RemoveAxiom){ + axiom = change.getAxiom(); + if (axiom instanceof OWLSubClassAxiom) { + OWLSubClassAxiom subAx = (OWLSubClassAxiom) axiom; + if (subAx.getSubClass() instanceof OWLClass && subAx.getSuperClass() instanceof OWLClass) { + OWLClass sub = (OWLClass) subAx.getSubClass(); + OWLClass sup = (OWLClass) subAx.getSuperClass(); + + for (OWLClass desc : SetUtils.union(reasoner.getDescendantClasses(sub))) { + + for (OWLClass anc : SetUtils.union(reasoner.getAncestorClasses(sup))) { + + if (!anc.equals(factory.getOWLThing()) && !desc.equals(factory.getOWLNothing())) { + OWLSubClassAxiom ax = factory.getOWLSubClassAxiom(desc, anc); + possibleLosts.add(ax); + } + } + } + } + }else if (axiom instanceof OWLDisjointClassesAxiom) { + Set<OWLDescription> disjointClasses = ((OWLDisjointClassesAxiom) axiom).getDescriptions(); + boolean complex = false; + for (OWLDescription dis : disjointClasses) { + if (dis.isAnonymous()) { + complex = true; + break; + } + } + if (!complex) { + + List<OWLDescription> disjoints = new ArrayList<OWLDescription>(disjointClasses); + + + + for (OWLDescription dis : new ArrayList<OWLDescription>(disjoints)) { + if (!dis.equals(factory.getOWLNothing())) { + disjoints.remove(dis); + Set<? extends OWLDescription> descendants = SetUtils.union(reasoner.getDescendantClasses(dis.asOWLClass())); + + descendants.removeAll(reasoner.getEquivalentClasses(factory.getOWLNothing())); +// if (enableImpactUnsat) { +// descendants.addAll(((OWLClass) dis).getSubClasses(ontology)); +// } + for (OWLDescription desc1 : descendants) { + + if (!desc1.equals(factory.getOWLNothing())) { + if (enableImpactUnsat || !reasoner.getEquivalentClasses((desc1)).contains(factory.getOWLNothing())) { + for (OWLDescription desc2 : disjoints) { + + if (!desc2.equals(desc1)) { + Set<OWLDescription> newDis = new HashSet<OWLDescription>(); + newDis.add(desc1); + newDis.add(desc2); + OWLDisjointClassesAxiom ax = factory.getOWLDisjointClassesAxiom(newDis); + possibleLosts.add(ax); + } + } + } + } + } + + disjoints.add(dis); + + + } + } +// return result; + } + } + else if (axiom instanceof OWLObjectPropertyDomainAxiom) { + OWLObjectPropertyDomainAxiom pd = (OWLObjectPropertyDomainAxiom) axiom; + + if (pd.getDomain() instanceof OWLClass) { + OWLClass dom = (OWLClass) pd.getDomain(); + Set<OWLClass> superClasses = SetUtils.union(reasoner.getSuperClasses(dom)); + for (OWLClass sup : superClasses) { + + OWLObjectPropertyDomainAxiom ax = factory.getOWLObjectPropertyDomainAxiom( pd.getProperty(), sup); + possibleLosts.add(ax); + } + } + } + else if (axiom instanceof OWLDataPropertyDomainAxiom) { + OWLDataPropertyDomainAxiom pd = (OWLDataPropertyDomainAxiom) axiom; + + if (pd.getDomain() instanceof OWLClass) { + OWLClass dom = (OWLClass) pd.getDomain(); + Set<OWLClass> superClasses = SetUtils.union(reasoner.getSuperClasses(dom)); + for (OWLClass sup : superClasses) { + + OWLDataPropertyDomainAxiom ax = factory.getOWLDataPropertyDomainAxiom( pd.getProperty(), sup); + possibleLosts.add(ax); + } + } + } + else if (axiom instanceof OWLObjectPropertyRangeAxiom) { + OWLObjectPropertyRangeAxiom pd = (OWLObjectPropertyRangeAxiom) axiom; + + if (pd.getRange() instanceof OWLClass) { + OWLClass ran = (OWLClass) pd.getRange(); + Set<OWLClass> superClasses = SetUtils.union(reasoner.getSuperClasses(ran)); + for (OWLClass sup : superClasses) { + + OWLObjectPropertyRangeAxiom ax = factory.getOWLObjectPropertyRangeAxiom(pd.getProperty(), sup); + possibleLosts.add(ax); + } + } + } + } + + } + + for(OWLAxiom ax : possibleLosts){ + try { + manager.applyChanges(changes); + if(!reasoner.isEntailed(ax)){ + realLosts.add(ax); + } + manager.applyChanges(getInverseChanges(changes)); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + return realLosts; + } + + private List<OWLOntologyChange> getInverseChanges(List<OWLOntologyChange> changes){ + List<OWLOntologyChange> inverseChanges = new ArrayList<OWLOntologyChange>(changes.size()); + for(OWLOntologyChange change : changes){ + if(change instanceof RemoveAxiom){ + inverseChanges.add(new AddAxiom(change.getOntology(), change.getAxiom())); + } else { + inverseChanges.add(new RemoveAxiom(change.getOntology(), change.getAxiom())); + } + } + return inverseChanges; + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -11,7 +11,10 @@ import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.OREManagerListener; +import org.dllearner.tools.ore.RepairManager; +import org.dllearner.tools.ore.RepairManagerListener; import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.inference.OWLReasoner; import org.semanticweb.owl.inference.OWLReasonerException; @@ -51,10 +54,10 @@ import org.semanticweb.owl.model.OWLQuantifiedRestriction; import org.semanticweb.owl.model.RemoveAxiom; -public class RootFinder implements OWLDescriptionVisitor, OREManagerListener, OWLOntologyChangeListener{ +public class RootFinder implements OWLDescriptionVisitor, OREManagerListener, OWLOntologyChangeListener, RepairManagerListener{ private OWLOntologyManager manager; - private OWLReasoner reasoner; + private Reasoner reasoner; private OWLReasonerFactory reasonerFactory; private Set<OWLClass> depend2Classes; @@ -67,7 +70,7 @@ private boolean ontologyChanged = true; - int depth; + private int depth; private Map<Integer, Set<OWLObjectAllRestriction>> depth2UniversalRestrictionPropertyMap; private Map<Integer, Set<OWLObjectPropertyExpression>> depth2ExistsRestrictionPropertyMap; @@ -96,7 +99,8 @@ parent2Children = new HashMap<OWLClass, Set<OWLClass>>(); OREManager.getInstance().addListener(this); - OREManager.getInstance().getPelletReasoner().getOWLOntologyManager().addOntologyChangeListener(this); + RepairManager.getInstance(OREManager.getInstance()).addListener(this); +// OREManager.getInstance().getPelletReasoner().getOWLOntologyManager().addOntologyChangeListener(this); } public Set<OWLClass> getRootClasses(){ @@ -121,6 +125,14 @@ } public void computeRootDerivedClasses(){ +// this.manager = OWLManager.createOWLOntologyManager(); +// try { +// this.ontology = manager.createOntology(URI.create("all"), reasoner.getLoadedOntologies()); +// } catch (OWLOntologyCreationException e) { +// e.printStackTrace(); +// } catch (OWLOntologyChangeException e) { +// e.printStackTrace(); +// } rootClasses.clear(); derivedClasses.clear(); depend2Classes.clear(); @@ -136,7 +148,7 @@ } private void computePossibleRoots(){ - try {derivedClasses.addAll(reasoner.getInconsistentClasses()); + derivedClasses.addAll(reasoner.getInconsistentClasses()); for(OWLClass cls : derivedClasses){ reset(); for(OWLDescription equi : cls.getEquivalentClasses(ontology)){ @@ -160,9 +172,7 @@ rootClasses.add(cls); } } - } catch (OWLReasonerException e) { - e.printStackTrace(); - } + } private void pruneRoots() { @@ -222,7 +232,7 @@ private void checkObjectRestriction(OWLQuantifiedRestriction<OWLObjectPropertyExpression,OWLDescription> restr){ OWLDescription filler = restr.getFiller(); - try { + if(filler.isAnonymous()){ depth++; filler.accept(this); @@ -237,10 +247,8 @@ } addExistsRestrictionProperty(restr.getProperty()); } - } catch (OWLReasonerException e) { - e.printStackTrace(); - } + } private void addExistsRestrictionProperty(OWLObjectPropertyExpression expr){ @@ -265,19 +273,17 @@ @Override public void visit(OWLClass cls) { - try { + if(!reasoner.isSatisfiable(cls)) { depend2Classes.add(cls); } - } catch (OWLReasonerException e) { - e.printStackTrace(); - } + } @Override public void visit(OWLObjectIntersectionOf and) { - try { + for(OWLDescription op : and.getOperands()) { if(op.isAnonymous()){ op.accept(this); @@ -285,15 +291,13 @@ depend2Classes.add(op.asOWLClass()); } } - } catch (OWLReasonerException e) { - e.printStackTrace(); - } + } @Override public void visit(OWLObjectUnionOf or) { - try { + for(OWLDescription op : or.getOperands()){ if(reasoner.isSatisfiable(op)){ return; @@ -306,9 +310,7 @@ depend2Classes.add(op.asOWLClass()); } } - } catch (OWLReasonerException e) { - e.printStackTrace(); - } + } @Override @@ -399,4 +401,16 @@ ontologyChanged = true; } + + @Override + public void repairPlanChanged() { + // TODO Auto-generated method stub + + } + + @Override + public void repairPlanExecuted(List<OWLOntologyChange> changes) { + ontologyChanged = true; + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -306,7 +306,7 @@ public Set<OWLAxiom> getSourceAxioms(OWLAxiom axiom){ Map<OWLAxiom, Set<OWLAxiom>> axioms2SourceMap = oPlus.getAxiomsMap(); Set<OWLAxiom> sourceAxioms = new HashSet<OWLAxiom>(); - + System.out.println(axiom); for(OWLAxiom ax : axioms2SourceMap.get(axiom)){ if(ontology.containsAxiom(ax)){ sourceAxioms.add(ax); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt =================================================================== (Binary files differ) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -11,6 +11,7 @@ import java.util.List; import javax.swing.AbstractCellEditor; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JTable; import javax.swing.UIManager; @@ -41,21 +42,22 @@ public ExplanationTable(Explanation exp, OWLClass cl) { - repMan = RepairManager.getRepairManager(OREManager.getInstance()); + repMan = RepairManager.getInstance(OREManager.getInstance()); repMan.addListener(this); setBackground(Color.WHITE); setHighlighters(HighlighterFactory.createAlternateStriping()); setAutoResizeMode(JTable.AUTO_RESIZE_OFF); setModel(new ExplanationTableModel(exp, cl)); - TableColumn column4 = getColumn(3); - column4.setCellRenderer(new ButtonCellRenderer()); - column4.setCellEditor(new ButtonCellEditor()); - column4.setResizable(false); + TableColumn column5 = getColumn(4); + column5.setCellRenderer(new ButtonCellRenderer()); + column5.setCellEditor(new ButtonCellEditor()); + column5.setResizable(false); setRowHeight(getRowHeight() + 4); getColumn(1).setMaxWidth(30); getColumn(2).setMaxWidth(30); - getColumn(3).setMaxWidth(80); + getColumn(3).setMaxWidth(30); + getColumn(4).setMaxWidth(30); getSelectionModel().addListSelectionListener( new ListSelectionListener() { @@ -133,7 +135,8 @@ setForeground(table.getForeground()); setBackground(UIManager.getColor("Button.background")); } - setText( (value ==null) ? "" : value.toString() ); + setIcon(new ImageIcon("src/dl-learner/org/dllearner/tools/ore/Edit16.gif")); + setText(""); return this; } @@ -164,7 +167,7 @@ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { text = (value == null) ? "" : value.toString(); - editButton.setText(text); + editButton.setText(""); return editButton; } @@ -182,7 +185,7 @@ @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { - // TODO Auto-generated method stub + repaint(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-02 10:19:41 UTC (rev 1834) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-05 08:02:35 UTC (rev 1835) @@ -7,8 +7,11 @@ import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; import org.dllearner.tools.ore.explanation.Explanation; +import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.RemoveAxiom; public class ExplanationTableModel extends AbstractTableModel { @@ -22,18 +25,20 @@ private ImpactManager impMan; private RepairManager repMan; private OWLClass unsat; + private OWLOntology ont; public ExplanationTableModel(Explanation exp, OWLClass cl){ this.exp = exp; this.expMan = ExplanationManager.getInstance(OREM... [truncated message content] |
From: <lor...@us...> - 2009-09-02 10:19:52
|
Revision: 1834 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1834&view=rev Author: lorenz_b Date: 2009-09-02 10:19:41 +0000 (Wed, 02 Sep 2009) Log Message: ----------- added explanation intended view added update method to pellet reasoner, updating the CWA data Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SyntacticRelevanceBasedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/IndividualsTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.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/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/RelevanceBasedGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SimpleSelectionFunction.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ChangesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ChangesTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsPanel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ChangePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ChangesPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/DescriptionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ExplanationTablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/StatsPanel.java Modified: trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-01 13:44:00 UTC (rev 1833) +++ trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -59,7 +59,6 @@ import org.dllearner.kb.OWLAPIOntology; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.tools.ore.explanation.PelletExplanationGenerator; import org.dllearner.utilities.Helper; import org.dllearner.utilities.owl.ConceptComparator; import org.dllearner.utilities.owl.ConceptTransformation; @@ -72,10 +71,12 @@ import org.mindswap.pellet.utils.SetUtils; import org.mindswap.pellet.utils.progress.ProgressMonitor; import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.inference.OWLReasonerException; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAnnotation; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLClassAssertionAxiom; import org.semanticweb.owl.model.OWLConstant; import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDataProperty; @@ -87,7 +88,9 @@ import org.semanticweb.owl.model.OWLLabelAnnotation; import org.semanticweb.owl.model.OWLNamedObject; import org.semanticweb.owl.model.OWLObjectProperty; +import org.semanticweb.owl.model.OWLObjectPropertyAssertionAxiom; import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyChangeException; import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyFormat; @@ -286,6 +289,46 @@ dematerialise(); } + /* + * Updates the CWA ontology dematerialised before + */ + public void updateCWAOntology(List<OWLOntologyChange> changes){ + for(OWLOntologyChange change : changes){ + OWLAxiom axiom = change.getAxiom(); + if(axiom instanceof OWLClassAssertionAxiom){ + Individual ind = OWLAPIConverter.convertIndividual(((OWLClassAssertionAxiom)axiom).getIndividual()); + Description desc = OWLAPIConverter.convertClass(((OWLClassAssertionAxiom)axiom).getDescription().asOWLClass()); + if(change instanceof RemoveAxiom){ + classInstancesPos.get(desc).remove(ind); + } else if(change instanceof AddAxiom){ + classInstancesPos.get(desc).add(ind); + } + } else if(axiom instanceof OWLObjectPropertyAssertionAxiom){System.out.println(axiom); + Individual obj = OWLAPIConverter.convertIndividual(((OWLObjectPropertyAssertionAxiom)axiom).getObject()); + Individual sub = OWLAPIConverter.convertIndividual(((OWLObjectPropertyAssertionAxiom)axiom).getSubject()); + ObjectProperty prop = OWLAPIConverter.convertObjectProperty(((OWLObjectPropertyAssertionAxiom)axiom).getProperty().asOWLObjectProperty()); + if(change instanceof RemoveAxiom){ + SortedSet<Individual> fillers = opPos.get(prop).get(sub); + if(fillers != null){ + fillers.remove(obj); + } + } else if(change instanceof AddAxiom){ + SortedSet<Individual> fillers = opPos.get(prop).get(sub); + if(fillers == null){ + fillers = new TreeSet<Individual>(); + fillers.add(obj); + opPos.get(prop).put(sub, fillers); + } else { + fillers.add(obj); + } + } + + + } + } + + } + private void dematerialise(){ long dematStartTime = System.currentTimeMillis(); @@ -409,6 +452,15 @@ reasoner.classify(); } + public void realise(){ + try { + reasoner.realise(); + } catch (OWLReasonerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + public void refresh(){ reasoner.refresh(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-01 13:44:00 UTC (rev 1833) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -1,14 +1,14 @@ package org.dllearner.tools.ore; import java.util.ArrayList; -import java.util.HashSet; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; import org.dllearner.tools.ore.explanation.CachedExplanationGenerator; import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.tools.ore.explanation.RootFinder; -import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClass; @@ -36,11 +36,14 @@ private RootFinder rootFinder; private boolean ontologyChanged = true; - private boolean isLaconicMode = false; + private boolean isComputeAllExplanations = false; private int maxExplantionCount = 1; private boolean allExplanationWarningChecked = false; + private Map<Explanation, List<Map<OWLAxiom, Integer>>> orderingMap; + private DefaultExplanationOrderer explanationOrderer; + private List<ExplanationManagerListener> listeners; @@ -55,10 +58,11 @@ this.ontology = reasoner.getLoadedOntologies().iterator().next(); manager.addOntologyChangeListener(this); -// manager.addOntologyChangeListener(reasoner); dataFactory = manager.getOWLDataFactory(); RepairManager.getRepairManager(oreMan).addListener(this); - + + explanationOrderer = new DefaultExplanationOrderer(); + orderingMap = new HashMap<Explanation, List<Map<OWLAxiom, Integer>>>(); rootFinder = new RootFinder(); @@ -95,7 +99,7 @@ return rootFinder.getRootClasses(); } - public Set<List<OWLAxiom>> getUnsatisfiableExplanations(OWLClass unsat) { + public Set<Explanation> getUnsatisfiableExplanations(OWLClass unsat) { OWLSubClassAxiom entailment = dataFactory.getOWLSubClassAxiom(unsat, dataFactory.getOWLNothing()); @@ -107,10 +111,10 @@ explanations = gen.getExplanations(entailment, maxExplantionCount); } - return getOrderedExplanations(explanations); + return explanations; } - public Set<List<OWLAxiom>> getInconsistencyExplanations(){ + public Set<Explanation> getInconsistencyExplanations(){ OWLSubClassAxiom entailment = dataFactory.getOWLSubClassAxiom(dataFactory.getOWLThing(), dataFactory.getOWLNothing()); @@ -121,43 +125,44 @@ explanations = gen.getExplanations(entailment, maxExplantionCount); } - return getOrderedExplanations(explanations); + return explanations; } + public List<Map<OWLAxiom, Integer>> getOrdering(Explanation exp){ + List<Map<OWLAxiom, Integer>> orderedAxioms = orderingMap.get(exp); + if(orderedAxioms == null){ + orderedAxioms = new ArrayList<Map<OWLAxiom, Integer>>(exp.getAxioms().size()); + orderedAxioms.addAll(orderExplanation(exp)); + orderingMap.put(exp, orderedAxioms); + } + return orderedAxioms; + } - - private ArrayList<OWLAxiom> getTree2List(Tree<OWLAxiom> tree){ - ArrayList<OWLAxiom> ordering = new ArrayList<OWLAxiom>(); - ordering.add((OWLAxiom)tree.getUserObject()); + private List<Map<OWLAxiom, Integer>> orderExplanation(Explanation exp){ + explanationOrderer = new DefaultExplanationOrderer(); + List<Map<OWLAxiom, Integer>> ordering = new ArrayList<Map<OWLAxiom, Integer>>(exp.getAxioms().size()); + ExplanationTree tree = explanationOrderer.getOrderedExplanation(exp.getEntailment(), exp.getAxioms()); for(Tree<OWLAxiom> child : tree.getChildren()){ ordering.addAll(getTree2List(child)); } return ordering; } - private Set<List<OWLAxiom>> getOrderedExplanations(Set<Explanation> explanations){ - DefaultExplanationOrderer orderer = new DefaultExplanationOrderer(); - Set<List<OWLAxiom>> orderedExplanations = new HashSet<List<OWLAxiom>>(); - ArrayList<OWLAxiom> ordering; - for(Explanation explanation : explanations){ - ordering = new ArrayList<OWLAxiom>(); - ExplanationTree tree = orderer.getOrderedExplanation(explanation.getEntailment(), explanation.getAxioms()); - -// ordering.add(tree.getUserObject()); - for(Tree<OWLAxiom> child : tree.getChildren()){ - ordering.addAll(getTree2List(child)); - } - orderedExplanations.add(ordering); + + + private ArrayList<Map<OWLAxiom, Integer>> getTree2List(Tree<OWLAxiom> tree){ + ArrayList<Map<OWLAxiom, Integer>> ordering = new ArrayList<Map<OWLAxiom, Integer>>(); + Map<OWLAxiom, Integer> axiom2Depth = new HashMap<OWLAxiom, Integer>(); + axiom2Depth.put((OWLAxiom)tree.getUserObject(), Integer.valueOf(tree.getUserObjectPathToRoot().size())); + ordering.add(axiom2Depth); + for(Tree<OWLAxiom> child : tree.getChildren()){ + ordering.addAll(getTree2List(child)); } - return orderedExplanations; + return ordering; } - @Override - public void ontologiesChanged(List<? extends OWLOntologyChange> changes) - throws OWLException { - ontologyChanged = true; - } + public int getArity(OWLClass cl, OWLAxiom ax) { int arity = 0; @@ -249,6 +254,12 @@ public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ return gen.getRemainingAxioms(source, part); } + + @Override + public void ontologiesChanged(List<? extends OWLOntologyChange> changes) + throws OWLException { + ontologyChanged = true; + } @Override public void activeOntologyChanged() { @@ -257,5 +268,4 @@ gen = new CachedExplanationGenerator(ontology, reasoner); } - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-01 13:44:00 UTC (rev 1833) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -31,11 +31,13 @@ import org.dllearner.tools.ore.ui.wizard.Wizard; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.descriptors.InconsistencyExplanationPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.IntroductionPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.KnowledgeSourcePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.LearningPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.SavePanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.descriptors.UnsatisfiableExplanationPanelDescriptor; /** @@ -77,18 +79,24 @@ WizardPanelDescriptor descriptor2 = new KnowledgeSourcePanelDescriptor(); wizard.registerWizardPanel(KnowledgeSourcePanelDescriptor.IDENTIFIER, descriptor2); + +// WizardPanelDescriptor descriptor3 = new InconsistencyExplanationPanelDescriptor(); +// wizard.registerWizardPanel(InconsistencyExplanationPanelDescriptor.IDENTIFIER, descriptor3); +// +// WizardPanelDescriptor descriptor4 = new UnsatisfiableExplanationPanelDescriptor(); +// wizard.registerWizardPanel(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER, descriptor4); - WizardPanelDescriptor descriptor3 = new ClassChoosePanelDescriptor(); - wizard.registerWizardPanel(ClassChoosePanelDescriptor.IDENTIFIER, descriptor3); + WizardPanelDescriptor descriptor5 = new ClassChoosePanelDescriptor(); + wizard.registerWizardPanel(ClassChoosePanelDescriptor.IDENTIFIER, descriptor5); - WizardPanelDescriptor descriptor4 = new LearningPanelDescriptor(); - wizard.registerWizardPanel(LearningPanelDescriptor.IDENTIFIER, descriptor4); + WizardPanelDescriptor descriptor6 = new LearningPanelDescriptor(); + wizard.registerWizardPanel(LearningPanelDescriptor.IDENTIFIER, descriptor6); - WizardPanelDescriptor descriptor5 = new RepairPanelDescriptor(); - wizard.registerWizardPanel(RepairPanelDescriptor.IDENTIFIER, descriptor5); + WizardPanelDescriptor descriptor7 = new RepairPanelDescriptor(); + wizard.registerWizardPanel(RepairPanelDescriptor.IDENTIFIER, descriptor7); - WizardPanelDescriptor descriptor6 = new SavePanelDescriptor(); - wizard.registerWizardPanel(SavePanelDescriptor.IDENTIFIER, descriptor6); + WizardPanelDescriptor descriptor8 = new SavePanelDescriptor(); + wizard.registerWizardPanel(SavePanelDescriptor.IDENTIFIER, descriptor8); if (!(args.length == 1)){ wizard.setCurrentPanel(IntroductionPanelDescriptor.IDENTIFIER); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-09-01 13:44:00 UTC (rev 1833) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -21,6 +21,7 @@ package org.dllearner.tools.ore; import java.net.URI; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -35,15 +36,8 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyAssertion; import org.dllearner.core.owl.ObjectQuantorRestriction; -import org.dllearner.reasoning.OWLAPIReasoner; import org.dllearner.reasoning.PelletReasoner; import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; -import org.mindswap.pellet.owlapi.Reasoner; -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.debugging.BlackBoxOWLDebugger; -import org.semanticweb.owl.debugging.OWLDebugger; -import org.semanticweb.owl.inference.OWLReasonerException; -import org.semanticweb.owl.inference.OWLSatisfiabilityChecker; import org.semanticweb.owl.io.RDFXMLOntologyFormat; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; @@ -52,7 +46,6 @@ import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLEquivalentClassesAxiom; -import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLIndividual; import org.semanticweb.owl.model.OWLInverseObjectPropertiesAxiom; import org.semanticweb.owl.model.OWLObjectProperty; @@ -226,6 +219,7 @@ RemoveAxiom rm = new RemoveAxiom(ontology, owlCl); changes.add(rm); try { + reasoner.updateCWAOntology(changes); manager.applyChange(rm); return changes; } catch (OWLOntologyChangeException e) { @@ -254,10 +248,9 @@ OWLClassAssertionAxiom owlCl = factory.getOWLClassAssertionAxiom(individualOWLAPI, owlDesc); AddAxiom am = new AddAxiom(ontology, owlCl); - - changes.add(am); try { + reasoner.updateCWAOntology(changes); manager.applyChange(am); return changes; } catch (OWLOntologyChangeException e) { @@ -299,9 +292,8 @@ try { + reasoner.updateCWAOntology(changes); manager.applyChanges(changes); - saveOntology(); - return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block @@ -358,7 +350,8 @@ changes.addAll(removeList); try { - manager.applyChanges(removeList); + reasoner.updateCWAOntology(changes); + manager.applyChanges(changes); return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block @@ -400,6 +393,7 @@ try { if(remove != null){ + reasoner.updateCWAOntology(changes); manager.applyChange(remove); } @@ -432,6 +426,7 @@ AddAxiom axiom = new AddAxiom(ontology, objAssertion); changes.add(axiom); try { + reasoner.updateCWAOntology(changes); manager.applyChange(axiom); return changes; } catch (OWLOntologyChangeException e) { @@ -450,25 +445,25 @@ */ public void undoChanges(Collection<OWLOntologyChange> changes){ - + List<OWLOntologyChange> undoChanges = new ArrayList<OWLOntologyChange>(changes.size()); for(OWLOntologyChange change : changes){ if(change instanceof RemoveAxiom){ AddAxiom add = new AddAxiom(ontology, change.getAxiom()); - try { - manager.applyChange(add); - } catch (OWLOntologyChangeException e) { - e.printStackTrace(); - } + undoChanges.add(add); } else if(change instanceof AddAxiom){ RemoveAxiom remove = new RemoveAxiom(ontology, change.getAxiom()); - try { - manager.applyChange(remove); - } catch (OWLOntologyChangeException e) { - e.printStackTrace(); - } + undoChanges.add(remove); } } + try { + reasoner.updateCWAOntology(undoChanges); + manager.applyChanges(undoChanges); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } @@ -575,50 +570,5 @@ public OWLOntology getOntology() { return ontology; } - -/** - * Prints reasons for inconsistent classes. - */ - public void reason(){ -// reasoner.getInconsistencyReasons(ontology); - - - - /* Create a satisfiability checker */ - OWLSatisfiabilityChecker checker = new Reasoner(manager); - try { - checker.loadOntologies(Collections.singleton(ontology)); - } catch (OWLReasonerException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - OWLDebugger debugger = new BlackBoxOWLDebugger(manager, ontology, checker); - - for(OWLClass owlClass : reasoner.getInconsistentOWLClasses()){ - /* Find the sets of support and print them */ - Set<Set<OWLAxiom>> allsos = null; - try { - allsos = debugger.getAllSOSForIncosistentClass(owlClass); - } catch (OWLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - for (Set<OWLAxiom> sos : allsos){ - System.out.println(sos); - } - } - - - - } - - - - - - - - } Added: trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -0,0 +1,53 @@ +package org.dllearner.tools.ore; + +import javax.swing.JDialog; +import javax.swing.SwingWorker; + +import org.dllearner.tools.ore.ui.StatusBar; + +public class TaskManager { + + private static TaskManager instance; + + private SwingWorker<?, ?> currentTask; + + private Thread currentThread; + + private StatusBar statusBar; + + private JDialog dialog; + + public static synchronized TaskManager getInstance(){ + if(instance == null){ + instance = new TaskManager(); + } + return instance; + } + + public void setStatusBar(StatusBar statusBar){ + this.statusBar = statusBar; + } + + public void setDialog(JDialog dialog){ + this.dialog = dialog; + } + + public void setCurrentTask(SwingWorker<?, ?> task){ + this.currentTask = task; + } + + public void setCurrentThread(Thread t){ + this.currentThread = t; + } + + public void cancelCurrentTask(){ + if(currentTask != null && !currentTask.isCancelled() && !currentTask.isDone()){ + currentTask.cancel(true); + } +// statusBar.setProgressTitle("Canceled"); +// dialog.setCursor(null); + } + + public synchronized void cancelCurrentThread(){currentThread.stop(); + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-09-01 13:44:00 UTC (rev 1833) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/AxiomRanker.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -51,6 +51,7 @@ this.factory = manager.getOWLDataFactory(); ModuleExtractor extractor = ModuleExtractorFactory.createModuleExtractor(); classifier = new IncrementalClassifier(manager, reasoner, extractor); + } public Set<OWLAxiom> computeImpactOnRemoval(OWLAxiom ax){ @@ -58,8 +59,8 @@ try { // IncrementalClassifier classifier = new IncrementalClassifier(manager); -// classifier.loadOntology(ontology); -// classifier.classify(); + classifier.loadOntology(ontology); + classifier.classify(); Set<OWLClass> inc = classifier.getInconsistentClasses(); for(OWLDescription cl : ontology.getClassesInSignature()){ if(!inc.contains(cl)){ @@ -79,8 +80,9 @@ manager.applyChange(new RemoveAxiom(ontology, ax)); + classifier.classify(); - inc = classifier.getInconsistentClasses(); + inc = classifier.getInconsistentClasses();System.out.println(inc); for(OWLDescription cl : ontology.getClassesInSignature()){ if(!inc.contains(cl)){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-01 13:44:00 UTC (rev 1833) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -149,29 +149,35 @@ @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { - Map<OWLAxiom, Set<Explanation>> copy = new HashMap<OWLAxiom, Set<Explanation>>(); - for(OWLOntologyChange change : changes){ - if(change instanceof RemoveAxiom){ - for(Entry<OWLAxiom, Set<Explanation>> entry: regularExplanationCache.entrySet()){ - Set<Explanation> explanationsCopy = new HashSet<Explanation>(); - for(Explanation explanation : entry.getValue()){ - if(explanation.getAxioms().contains(change.getAxiom())){ - explanationsCopy.add(explanation); - } - } - if(!explanationsCopy.isEmpty()){ - copy.put(entry.getKey(), explanationsCopy); - } - - - } - } - } - for(Entry<OWLAxiom, Set<Explanation>> copyEntry : copy.entrySet()){ - regularExplanationCache.get(copyEntry.getKey()).removeAll(copyEntry.getValue()); - - } +// Map<OWLAxiom, Set<Explanation>> copy = new HashMap<OWLAxiom, Set<Explanation>>(); +// for(OWLOntologyChange change : changes){ +// if(change instanceof RemoveAxiom){ +// for(Entry<OWLAxiom, Set<Explanation>> entry: regularExplanationCache.entrySet()){ +// Set<Explanation> explanationsCopy = new HashSet<Explanation>(); +// for(Explanation explanation : entry.getValue()){ +// if(explanation.getAxioms().contains(change.getAxiom())){ +// explanationsCopy.add(explanation); +// } +// } +// if(!explanationsCopy.isEmpty()){ +// copy.put(entry.getKey(), explanationsCopy); +// } +// +// +// } +// } +// } +// for(Entry<OWLAxiom, Set<Explanation>> copyEntry : copy.entrySet()){ +// regularExplanationCache.get(copyEntry.getKey()).removeAll(copyEntry.getValue()); +// +// } + regularExplanationCache.clear(); + laconicExplanationCache.clear(); + axiom2Module.clear(); + lastRequestedRegularSize.clear(); + lastRequestedLaconicSize.clear(); + } public Set<OWLAxiom> getSourceAxioms(OWLAxiom ax){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-01 13:44:00 UTC (rev 1833) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -16,6 +16,7 @@ import org.semanticweb.owl.inference.OWLReasoner; import org.semanticweb.owl.inference.OWLReasonerException; import org.semanticweb.owl.inference.OWLReasonerFactory; +import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.AxiomType; import org.semanticweb.owl.model.OWLClass; import org.semanticweb.owl.model.OWLDataAllRestriction; @@ -122,6 +123,11 @@ public void computeRootDerivedClasses(){ rootClasses.clear(); derivedClasses.clear(); + depend2Classes.clear(); + depth2ExistsRestrictionPropertyMap.clear(); + depth2UniversalRestrictionPropertyMap.clear(); + child2Parents.clear(); + parent2Children.clear(); computePossibleRoots(); pruneRoots(); derivedClasses.removeAll(rootClasses); @@ -181,8 +187,10 @@ } } for (OWLClass cls : roots) { - manager.addAxiom(ontology, manager.getOWLDataFactory() + OWLOntologyChange add = new AddAxiom(ontology, manager.getOWLDataFactory() .getOWLDeclarationAxiom(cls)); + manager.applyChange(add); + appliedChanges.add(add); } OWLReasoner checker = reasonerFactory.createReasoner(manager); checker.loadOntologies(Collections.singleton(ontology)); @@ -191,6 +199,13 @@ rootClasses.remove(root); } } + for(OWLOntologyChange change: appliedChanges){ + if(change instanceof RemoveAxiom){ + manager.applyChange(new AddAxiom(ontology, change.getAxiom())); + } else if(change instanceof AddAxiom){ + manager.applyChange(new RemoveAxiom(ontology, change.getAxiom())); + } + } } catch (OWLOntologyChangeException e) { e.printStackTrace(); } catch (OWLReasonerException e) { Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/RelevanceBasedGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/RelevanceBasedGenerator.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/RelevanceBasedGenerator.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -0,0 +1,400 @@ +package org.dllearner.tools.ore.explanation.relevance; + +import java.net.URI; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.mindswap.pellet.owlapi.PelletReasonerFactory; +import org.mindswap.pellet.owlapi.Reasoner; +import org.mindswap.pellet.utils.SetUtils; +import org.mindswap.pellet.utils.Timer; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.inference.OWLReasonerException; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; + +import com.clarkparsia.explanation.GlassBoxExplanation; +import com.clarkparsia.explanation.PelletExplanation; +import com.clarkparsia.explanation.TransactionAwareSingleExpGen; +import com.clarkparsia.explanation.util.OntologyUtils; + +public class RelevanceBasedGenerator { + static{ + setup(); + } + + public static void setup() { + GlassBoxExplanation.setup(); + } + + public static final Logger log = Logger.getLogger(RelevanceBasedGenerator.class); + + + private Reasoner globalReasoner; + private OWLOntology ontology; + private OWLOntologyManager manager; + private Reasoner localReasoner; + + private TransactionAwareSingleExpGen singleExpGen; + private PelletReasonerFactory reasonerFactory; + + private Set<Set<OWLAxiom>> allJusts; + private Set<HittingSet> hittingSets; + + private SimpleSelectionFunction selector; + + private PelletExplanation pellet; + + + Map<OWLAxiom, Integer> axiomMap; + + public RelevanceBasedGenerator(OWLOntologyManager manager, + OWLOntology ontology, Reasoner reasoner) { + log.setLevel(Level.DEBUG); + + this.globalReasoner = reasoner; + this.manager = manager; + this.ontology = ontology;//getExampleOntology(); + + reasonerFactory = new PelletReasonerFactory(); + + allJusts = new HashSet<Set<OWLAxiom>>(); + hittingSets = new HashSet<HittingSet>(); + + selector = new SimpleSelectionFunction(); + selector.init(ontology); + } + + private OWLOntology getExampleOntology(){ + try { + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLClass u = factory.getOWLClass(URI.create("U")); + OWLClass a = factory.getOWLClass(URI.create("A")); + OWLClass b = factory.getOWLClass(URI.create("B")); + OWLClass c = factory.getOWLClass(URI.create("C")); + OWLClass d = factory.getOWLClass(URI.create("D")); + OWLClass e = factory.getOWLClass(URI.create("E")); + OWLClass f = factory.getOWLClass(URI.create("F")); + OWLClass g = factory.getOWLClass(URI.create("G")); + OWLClass h = factory.getOWLClass(URI.create("H")); + OWLClass k = factory.getOWLClass(URI.create("K")); + List<OWLAxiom> examples = new ArrayList<OWLAxiom>(); + examples.add( factory.getOWLSubClassAxiom(u, a)); + examples.add( factory.getOWLSubClassAxiom(u, factory.getOWLObjectComplementOf(a))); + examples.add( factory.getOWLSubClassAxiom(u, c)); + examples.add( factory.getOWLSubClassAxiom(c, factory.getOWLObjectComplementOf(b))); + examples.add( factory.getOWLSubClassAxiom(a, b)); + examples.add( factory.getOWLSubClassAxiom(u, g)); + examples.add( factory.getOWLSubClassAxiom(g, e)); + examples.add( factory.getOWLSubClassAxiom(u, f)); + examples.add( factory.getOWLSubClassAxiom(f, factory.getOWLObjectComplementOf(e))); + examples.add( factory.getOWLSubClassAxiom(u, d)); + examples.add( factory.getOWLSubClassAxiom(d, e)); + examples.add( factory.getOWLSubClassAxiom(c, k)); + examples.add( factory.getOWLSubClassAxiom(k, factory.getOWLObjectComplementOf(h))); + examples.add( factory.getOWLSubClassAxiom(b, h)); + OWLOntology example = manager.createOntology(new HashSet<OWLAxiom>(examples)); + axiomMap = new HashMap<OWLAxiom, Integer >(); + for(int i = 1; i<=examples.size(); i++){ + axiomMap.put(examples.get(i - 1), Integer.valueOf(i)); + } + return example; + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + private Set<Integer> axioms2Integer(Set<OWLAxiom> axioms){ + Set<Integer> path = new HashSet<Integer>(); + for(OWLAxiom ax: axioms){ + path.add(axiomMap.get(ax)); + } + return path; + } + + public Set<Set<OWLAxiom>> getExplanations(OWLClass unsat){ + computeAllJusts(unsat); + return allJusts; + } + + private void computeAllJusts(OWLClass unsat){ + try { + allJusts.clear(); + hittingSets.clear(); + + Set<HittingSet> hittingSetsLocal = new HashSet<HittingSet>(); + + int step = 1; + + OWLOntologyManager man = OWLManager.createOWLOntologyManager(); + OWLOntology temp = man.createOntology(Collections.<OWLAxiom>emptySet()); + + localReasoner = new PelletReasonerFactory().createReasoner(man); + localReasoner.loadOntology(temp); + + singleExpGen = new GlassBoxExplanation(man); + singleExpGen.setOntology(temp); + singleExpGen.setReasoner(localReasoner); + singleExpGen.setReasonerFactory(reasonerFactory); + setup(); + + Set<OWLAxiom> selectedAxioms = selector.getRelatedAxioms(unsat); + Set<OWLAxiom> allAxioms = new HashSet<OWLAxiom>(); + allAxioms.addAll(selectedAxioms); + + while(!selectedAxioms.isEmpty()){log.debug("Step: " + step); + addAxioms(selectedAxioms); + localReasoner.refresh(); + + if(!hittingSetsLocal.isEmpty()){ + for(HittingSet hit : hittingSetsLocal){ + removeAxioms(hit, ontology, manager);globalReasoner.refresh(); + if(globalReasoner.isSatisfiable(unsat)){ + hittingSets.add(hit); + } + addAxioms(hit, ontology, manager);globalReasoner.refresh(); + } + + hittingSetsLocal.removeAll(hittingSets); + + if(hittingSetsLocal.isEmpty()){ + return; + } + + Set<HittingSet> hittingSetsTemp = new HashSet<HittingSet>(hittingSetsLocal); + for(HittingSet hit : hittingSetsTemp){ + removeAxioms(hit, temp, man); + Set<HittingSet> hittingSetsLocalTemp = expandHittingSetTree(unsat, temp, man, hit); + for(HittingSet hit2 : hittingSetsLocalTemp){ + hit2.addAll(hit); + hittingSetsLocal.add(hit2); + } + addAxioms(hit, temp, man); + } + + + } else if(!singleExpGen.getReasoner().isSatisfiable(unsat)){ + + hittingSetsLocal.addAll(expandHittingSetTree(unsat, temp, man, new HittingSet())); + + } + step++; + selectedAxioms = selector.getRelatedAxioms(selectedAxioms); + selectedAxioms.removeAll(allAxioms); + allAxioms.addAll(selectedAxioms); + + + } + + } catch (OWLOntologyCreationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLReasonerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + private Set<HittingSet> expandHittingSetTree(OWLClass unsat, OWLOntology ont, OWLOntologyManager man, HittingSet currentPath){ + Set<HittingSet> hittingSets = new HashSet<HittingSet>(); + Set<HittingSet> hittingSets1 = new HashSet<HittingSet>(); + Set<Set<OWLAxiom>> currentJusts = new HashSet<Set<OWLAxiom>>(); +// log.debug("CurrentPath: " + axioms2Integer(currentPath)); + log.debug("CurrentPath: " + currentPath); + Set<OWLAxiom> justification = null; + if(!allJusts.isEmpty()){ + for(Set<OWLAxiom> just : allJusts){ + if(!SetUtils.intersects(just, currentPath)){ + log.debug("using global ontology justification reuse:" + just); +// log.debug("using global ontology justification reuse:" + axioms2Integer(just)); + justification = just; + currentJusts.add(justification); + break; + } + } + } + if(justification == null){ +// pellet = new PelletExplanation(man, Collections.singleton(ont)); + justification = singleExpGen.getExplanation(unsat);//pellet.getUnsatisfiableExplanation(unsat); + if(!justification.isEmpty()){ +// log.debug("Found new justification: " + axioms2Integer(justification)); + log.debug("Found new justification: " + justification); + if(allJusts.isEmpty()){ + singleExpGen.beginTransaction(); + } + allJusts.add(justification); + currentJusts.add(justification); + } + } + + + for(OWLAxiom ax : justification){ + hittingSets1.add(new HittingSet(ax)); + } + + while(true){ + Set<HittingSet> hittingSets2 = new HashSet<HittingSet>(); + for(HittingSet hit : hittingSets1){ + boolean earlyPathTermination = false; + for(HittingSet h : SetUtils.union(hittingSets,this.hittingSets)){ + if(hit.containsAll(h)){ + earlyPathTermination = true; +// log.debug("early path termination:" + axioms2Integer(hit) + " contains all " + axioms2Integer(h)); + log.debug("early path termination:" + hit + " contains all " + h); + break; + } + } + if(!earlyPathTermination){ + removeAxioms(hit);localReasoner.refresh(); + if(localReasoner.isSatisfiable(unsat)){ + hittingSets.add(hit); + } else { + hittingSets2.add(hit); + } + addAxioms(hit);localReasoner.refresh(); + } + } + + if(hittingSets1.isEmpty() || hittingSets2.isEmpty()){ + return hittingSets; + } + + hittingSets1.clear(); + for(HittingSet hit : hittingSets2){ +// log.debug("CurrentPath: " + axioms2Integer(hit)); + log.debug("CurrentPath: " + hit); + + justification = null; + if(!currentJusts.isEmpty()){ + for(Set<OWLAxiom> just : allJusts){ + if(!SetUtils.intersects(just, hit)){ + log.debug("using sub ontology justification reuse: " + just); +// log.debug("using sub ontology justification reuse: " + axioms2Integer(just)); + justification = just; + break; + } + } + } + if(justification == null){ + removeAxioms(hit);System.out.println(singleExpGen.getExplanation(unsat)); +// pellet = new PelletExplanation(man, Collections.singleton(ont)); + justification = singleExpGen.getExplanation(unsat);//pellet.getUnsatisfiableExplanation(unsat); + if(!justification.isEmpty()){ +// log.debug("found new justification: " + axioms2Integer(justification)); + log.debug("found new justification: " + justification); + allJusts.add(justification); + currentJusts.add(justification); + } + } + + for(OWLAxiom ax : justification){ + HittingSet h = new HittingSet(hit); + h.add(ax); + hittingSets1.add(h); + } + + addAxioms(hit); + } + + } + } + + private void removeAxioms(Set<OWLAxiom> axioms, OWLOntology ontology, OWLOntologyManager man){ + try { + for(OWLAxiom ax : axioms){ + OntologyUtils.removeAxiom(ax, Collections.singleton(ontology), man); + } + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + private void removeAxioms(Set<OWLAxiom> axioms){ + try { + for(OWLAxiom ax : axioms){ + OntologyUtils.removeAxiom(ax, singleExpGen.getReasoner().getLoadedOntologies(), singleExpGen.getOntologyManager()); + } + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + private void addAxioms(Set<OWLAxiom> axioms, OWLOntology ontology, OWLOntologyManager man){ + try { + for(OWLAxiom ax : axioms){ + OntologyUtils.addAxiom(ax, Collections.singleton(ontology), man); + } + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private void addAxioms(Set<OWLAxiom> axioms){ + try { + for(OWLAxiom ax : axioms){ + OntologyUtils.addAxiom(ax, singleExpGen.getReasoner().getLoadedOntologies(), singleExpGen.getOntologyManager()); + } + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public static void main(String[] args) throws OWLOntologyCreationException { +// URI file = URI.create("file:examples/ore/koala.owl"); +// String base = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#"; +// URI classURI = URI.create(base + "KoalaWithPhD"); + + URI file = URI.create("file:examples/ore/tambis.owl"); + String base = "http://krono.act.uji.es/Links/ontologies/tambis.owl#"; + URI classURI = URI.create(base + "metal"); + + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLClass cl = factory.getOWLClass(classURI); + OWLOntology ontology = manager.loadOntology(file); + Reasoner reasoner = new PelletReasonerFactory().createReasoner(manager); + reasoner.loadOntology(ontology); + + PelletExplanation pellet = new PelletExplanation(manager, Collections.singleton(ontology)); + Timer t1 = new Timer("pellet"); + t1.start(); + System.out.println(pellet.getUnsatisfiableExplanations(cl).size()); + t1.stop(); + System.out.println(t1.getTotal()); + + RelevanceBasedGenerator expGen = new RelevanceBasedGenerator(manager, ontology, reasoner); + Timer t2 = new Timer("relevance"); + t2.start(); + System.out.println(expGen.getExplanations(cl).size()); + t2.stop(); + System.out.println(t2.getTotal()); + + } +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SimpleSelectionFunction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SimpleSelectionFunction.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SimpleSelectionFunction.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -0,0 +1,135 @@ +/* SimpleSelectionFunction - Decompiled by JODE + * Visit http://jode.sourceforge.net/ + */ +package org.dllearner.tools.ore.explanation.relevance; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.Vector; + +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLEntity; +import org.semanticweb.owl.model.OWLOntology; + +public class SimpleSelectionFunction { + private Set<OWLAxiom> allAxioms = new HashSet<OWLAxiom>(); + public Map<OWLAxiom, Set<OWLEntity>> axiomEntities = new HashMap<OWLAxiom, Set<OWLEntity>>(); + + + public void init(OWLOntology onto) { + allAxioms.clear(); + allAxioms = onto.getAxioms(); + + initAxiomEntities(allAxioms); + } + + public void init(HashSet<OWLAxiom> axioms) { + allAxioms.clear(); + allAxioms.addAll(axioms); + initAxiomEntities(allAxioms); + } + + public void initAxiomEntities(Set<OWLAxiom> axioms) { + axiomEntities.clear(); + for (OWLAxiom ax : axioms) { + axiomEntities.put(ax, ax.getSignature()); + } + + } + + public Set<OWLAxiom> getRelatedAxioms(OWLEntity concept) { + Set<OWLAxiom> relatedAxioms = new HashSet<OWLAxiom>(); + for (OWLAxiom ax : allAxioms) { + if (connected(concept, ax)) { + relatedAxioms.add(ax); + } + } + + return relatedAxioms; + } + + public Vector<OWLAxiom> getAllRelatedAxioms(OWLEntity concept) { + Vector<OWLAxiom> allRelated = new Vector<OWLAxiom>(); + Set<OWLAxiom> relatedAxioms = new HashSet<OWLAxiom>(); + Set<OWLAxiom> relatedAxioms_all = new HashSet<OWLAxiom>(); + for (relatedAxioms = getRelatedAxioms(concept); relatedAxioms.size() > 0; relatedAxioms = getRelatedAxioms(relatedAxioms_all)) { + allRelated + .addAll((HashSet<OWLAxiom>) ((HashSet<OWLAxiom>) relatedAxioms) + .clone()); + relatedAxioms_all + .addAll((HashSet<OWLAxiom>) ((HashSet<OWLAxiom>) relatedAxioms) + .clone()); + } + return allRelated; + } + + public Set<OWLAxiom> getRelatedAxioms(Set<OWLAxiom> originalAxioms_in) { + Set<OWLAxiom> relatedAxioms = new HashSet<OWLAxiom>(); + Set<OWLEntity> originalEntities = new HashSet<OWLEntity>(); + Set<OWLAxiom> originalAxioms = new HashSet<OWLAxiom>(originalAxioms_in); + for (OWLAxiom ax : originalAxioms) { + if (axiomEntities.containsKey(ax)) { + originalEntities.addAll(axiomEntities.get(ax)); + } + } + for (OWLEntity ent : originalEntities) { + for (OWLAxiom ax : allAxioms) { + if (!originalAxioms.contains(ax) && connected(ent, ax)) { + relatedAxioms.add(ax); + } + } + } + relatedAxioms.removeAll(originalAxioms_in); + return relatedAxioms; + } + + public Vector<OWLAxiom> getAllRelatedAxioms(Set<OWLAxiom> originalAxioms_in) { + Vector<OWLAxiom> allRelated = new Vector<OWLAxiom>(); + Set<OWLAxiom> relatedAxioms = new HashSet<OWLAxiom>(); + Set<OWLAxiom> relatedAxioms_all = new HashSet<OWLAxiom>(); + for (relatedAxioms = getRelatedAxioms(originalAxioms_in); relatedAxioms + .size() > 0; relatedAxioms = getRelatedAxioms(relatedAxioms_all)) { + allRelated + .addAll((HashSet<OWLAxiom>) ((HashSet<OWLAxiom>) relatedAxioms) + .clone()); + relatedAxioms_all + .addAll((HashSet<OWLAxiom>) ((HashSet<OWLAxiom>) relatedAxioms) + .clone()); + } + return allRelated; + } + + public boolean connected(HashSet<OWLAxiom> axioms, OWLAxiom a) { + boolean flag = false; + for (OWLAxiom ax : axioms) { + if (connected(ax, a) > 0) { + flag = true; + break; + } + } + + return flag; + } + + public int connected(OWLAxiom a1, OWLAxiom a2) { + int num = 0; + Set<OWLEntity> ents1 = axiomEntities.get(a1); + Set<OWLEntity> ents2 = axiomEntities.get(a2); + for(OWLEntity ent : ents1){ + if(ents2.contains(ent)){ + num++; + } + } + + return num; + } + + public boolean connected(OWLEntity c, OWLAxiom a) { + Set<OWLEntity> entities = axiomEntities.get(a); + if (entities.contains(c)) + return true; + return false; + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SyntacticRelevanceBasedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SyntacticRelevanceBasedExplanationGenerator.java 2009-09-01 13:44:00 UTC (rev 1833) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SyntacticRelevanceBasedExplanationGenerator.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -76,7 +76,7 @@ e.printStackTrace(); } logger.addAppender( fileAppender ); - logger.setLevel(Level.DEBUG); + logger.setLevel(Level.OFF); } @@ -509,7 +509,7 @@ public static void main(String[] args){ URI file = URI.create("http://krono.act.uji.es/Links/ontologies/tambis.owl/at_download/file"); String base = "http://krono.act.uji.es/Links/ontologies/tambis.owl#"; - URI classURI = URI.create(base + "protein"); + URI classURI = URI.create(base + "metal"); try { OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); @@ -590,22 +590,23 @@ Timer t1 = new Timer("pellet"); t1.start(); PelletExplanation exp1 = new PelletExplanation(manager, Collections.singleton(ontology)); - exp1.getUnsatisfiableExplanations(cl, 1); + exp1.getUnsatisfiableExplanations(cl); t1.stop(); Timer t3 = new Timer("module-based"); t3.start(); OWLOntology module = OntologyUtils.getOntologyFromAxioms(ModularityUtils.extractModule(ontology, cl.getSignature(), ModuleType.TOP_OF_BOT)); System.out.println(module); PelletExplanation exp2 = new PelletExplanation(manager, Collections.singleton(module)); - exp2.getUnsatisfiableExplanations(cl, 1); + System.out.println(exp2.getUnsatisfiableExplanations(cl).size()); t3.stop(); Timer t2 = new Timer("syntactic relevance"); t2.start(); Reasoner reasoner = new PelletReasonerFactory().createReasoner(manager); reasoner.loadOntologies(Collections.singleton(ontology)); - SyntacticRelevanceBasedExplanationGenerator expGen = + SyntacticRelevanceBasedExplanationGenerator exp3 = new SyntacticRelevanceBasedExplanationGenerator(reasoner, manager); + System.out.println(exp3.getUnsatisfiableExplanations(cl, Strategie.All_Just_Relevance).size()); System.out.print("J = {"); // for(Set<OWLAxiom> explanation : expGen.getUnsatisfiableExplanations(cl, Strategie.All_Just_Relevance)){ Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ChangesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ChangesTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ChangesTable.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -0,0 +1,138 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.List; + +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.table.DefaultTableCellRenderer; + +import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLOntologyChange; + +public class ChangesTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 1137642531002327026L; + + public ChangesTable(){ + setBackground(Color.WHITE); + setModel(new ChangesTableModel()); + setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + setEditable(false); + setTableHeader(null); + setGridColor(Color.LIGHT_GRAY); + setRowHeight(getRowHeight() + 5); + getColumn(0).setMaxWidth(20); + getColumn(2).setMaxWidth(40); + setShowGrid(false); + getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); + getColumn(2).setCellRenderer(new UndoCellRenderer()); + + addKeyListener(new KeyAdapter() { + + public void keyPressed(KeyEvent e) + { + handleKeyPressed(e); + } + + + }); + + addMouseMotionListener(new MouseAdapter() { + + final ChangesTable table; + { + table = ChangesTable.this; + } + + public void mouseMoved(MouseEvent e) { + int row = rowAtPoint(e.getPoint()); + int column = columnAtPoint(e.getPoint()); + + if(column == 2 && row <= table.getRowCount() && row >= 0){ + setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + + } else { + setCursor(null); + } + } + + }); + + addMouseListener(new MouseAdapter() { + final ChangesTable table; + { + table = ChangesTable.this; + } + + public void mouseClicked(MouseEvent e) { + int row = rowAtPoint(e.getPoint()); + int column = columnAtPoint(e.getPoint()); + + if(row >= 0 && row <= table.getRowCount() && column == 2){ + ((ChangesTableModel)table.getModel()).removeChange(rowAtPoint(e.getPoint())); + setCursor(null); + } + } + }); + } + + private void handleKeyPressed(KeyEvent e) + { + int selRow = getSelectedRow(); + if(e.getKeyCode() == KeyEvent.VK_DELETE){ + ((ChangesTableModel)getModel()).removeChange(selRow); + } + + getSelectionModel().clearSelection(); + } + + public void addChanges(List<OWLOntologyChange> changes){ + ((ChangesTableModel)getModel()).addChanges(changes); + } + + public void removeChanges(List<OWLOntologyChange> changes){ + ((ChangesTableModel)getModel()).removeChanges(changes); + } + + public void clear(){ + ((ChangesTableModel)getModel()).clear(); + } + + public List<OWLOntologyChange> getChanges(){ + return ((ChangesTableModel)getModel()).getChanges(); + } + + + class UndoCellRenderer extends DefaultTableCellRenderer{ + + + /** + * + */ + private static final long serialVersionUID = 6941030561135280273L; + + @Override + public Component getTableCellRendererComponent(JTable table, + Object value, boolean isSelected, boolean hasFocus, int row, + int column) { + if(value instanceof LinkLabel){ + return (LinkLabel)value; + } + + return this; + } + + } +} + + Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ChangesTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ChangesTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ChangesTableModel.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -0,0 +1,87 @@ +package org.dllearner.tools.ore.ui; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.dllearner.tools.ore.OREManager; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.RemoveAxiom; + +public class ChangesTableModel extends AbstractTableModel { + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(columnIndex == 2){ + return true; + } + return super.isCellEditable(rowIndex, columnIndex); + } + + /** + * + */ + private static final long serialVersionUID = 7573340273483900311L; + + private List<OWLOntologyChange> changes; + + public ChangesTableModel(){ + changes = new ArrayList<OWLOntologyChange>(); + } + + @Override + public int getColumnCount() { + return 3; + } + + @Override + public int getRowCount() { + return changes.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + if(changes.get(rowIndex) instanceof RemoveAxiom){ + return "–"; + } else { + return "+"; + } + } else if(columnIndex == 1){ + return changes.get(rowIndex).getAxiom(); + } + else { + return new LinkLabel("Undo"); + } + + } + + public void addChanges(List<OWLOntologyChange> changes){ + this.changes.addAll(changes); + fireTableDataChanged(); + } + + public void removeChanges(List<OWLOntologyChange> changes){ + this.changes.removeAll(changes); + fireTableDataChanged(); + } + + public void removeChange(int rowIndex){ + List<OWLOntologyChange> undoChanges = new ArrayList<OWLOntologyChange>(1); + undoChanges.add(changes.get(rowIndex)); + this.changes.remove(rowIndex); + OREManager.getInstance().getModifier().undoChanges(undoChanges); + fireTableDataChanged(); + } + + public void clear(){ + this.changes.clear(); + fireTableDataChanged(); + } + + public List<OWLOntologyChange> getChanges(){ + return changes; + } + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionPanel.java (from rev 1830, trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/DescriptionPanel.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionPanel.java 2009-09-02 10:19:41 UTC (rev 1834) @@ -0,0 +1,136 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.awt.Component; +import java.awt.event.ActionListener; + +import javax.swing.BorderFactory; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.border.BevelBorder; + +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.tools.ore.OREManager; + +/** + * Panel where learned class description is shown, and parts that might occur errors are red colored. + * @author Lorenz Buehmann + * + */ +public class DescriptionPanel extends JPanel{ + + /** + * + */ + private static final long serialVersionUID = -3684937339236885595L; + + + private Individual ind; + private ActionListener aL; + private String mode; + private boolean correct = false; + private Description newClassDescription; + + public DescriptionPanel(Individual ind, ActionListener aL, String mode){ + super(); + setBackground(Color.WHITE); + setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); + this.newClassDescription = OREManager.getInstance().getNewClassDescription().getDescription(); + this.ind = ind; + this.aL = aL; + this.mode = mode; + if(mode.equals("neg")){ + for(JLabel jL : OREManager.getInstance().descriptionToJLabelNeg(ind, newClassDescription)){ + add(jL); + if(jL instanceof DescriptionLabel){ + + ((DescriptionLabel) jL).setIndOre(ind); + ((DescriptionLabel) jL).init(); + ((DescriptionLabel) jL).addActionListeners(aL); + + } + + } + } else if(mode.equals("pos")){ + for(JLabel jL : OREManager.getInstance().descriptionToJLabelPos(ind, newClassDescription)){ + add(jL); + if(jL instanceof DescriptionLabel){ + + ((DescriptionLabel) jL).setIndOre(ind); + ((DescriptionLabel) jL).init(); + ((DescriptionLabel) jL).addActionListeners(aL); + + } + + } + } + } + + /** + * Updates the panel. + */ + public void updatePanel(){ + for(Component c : getComponents()){ + if(c instanceof JLabel){ + remove(c); + } + } +// ore.updateReasoner(); + correct = true; + if (mode.equals("neg")) { + for (JLabel jL : OREManager.getInstance().descriptionToJLabelNeg(ind, newClassDescription)) { + add(jL); + if (jL instanceof DescriptionLabel) { + ((DescriptionLabel) jL).setIndOre(ind); + ((DescriptionLabel) jL).init(); + ((DescriptionLabel) jL).addActionListeners(aL); + correct = false; + + } + } + } else if(mode.equals("pos")){ + for (JLabel jL : OREManager.getInstance().descriptionToJLabelPos(ind, newClassDescription)) { + add(jL); + if (jL instanceof DescriptionLabel) { + ((DescriptionLabe... [truncated message content] |