From: <lor...@us...> - 2008-03-17 10:22:07
|
Revision: 714 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=714&view=rev Author: lorenz_b Date: 2008-03-17 03:21:51 -0700 (Mon, 17 Mar 2008) Log Message: ----------- First Steps Select KnowledgeSource Select Concept Auto-Select pos/neg-Examples Start Learning-Algorithm Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java 2008-03-17 10:21:51 UTC (rev 714) @@ -0,0 +1,5 @@ +package org.dllearner.tools.ore; + +public class Enrichment { + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-16 19:03:46 UTC (rev 713) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-17 10:21:51 UTC (rev 714) @@ -19,12 +19,591 @@ */ package org.dllearner.tools.ore; +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.algorithms.BruteForceLearner; +import org.dllearner.algorithms.RandomGuesser; +import org.dllearner.algorithms.gp.GP; +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; +import org.dllearner.algorithms.refinement.ROLearner; +import org.dllearner.cli.ConfFileOption; +import org.dllearner.core.Component; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.config.BooleanConfigOption; +import org.dllearner.core.config.ConfigEntry; +import org.dllearner.core.config.ConfigOption; +import org.dllearner.core.config.DoubleConfigOption; +import org.dllearner.core.config.IntegerConfigOption; +import org.dllearner.core.config.InvalidConfigOptionValueException; +import org.dllearner.core.config.StringConfigOption; +import org.dllearner.core.config.StringSetConfigOption; +import org.dllearner.core.config.StringTupleListConfigOption; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.kb.KBFile; +import org.dllearner.kb.OWLFile; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.parser.ConfParser; +import org.dllearner.parser.KBParser; +import org.dllearner.parser.ParseException; +import org.dllearner.parser.TokenMgrError; +import org.dllearner.reasoning.DIGReasoner; +import org.dllearner.reasoning.FastInstanceChecker; +import org.dllearner.reasoning.FastRetrievalReasoner; +import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.utilities.ConceptComparator; +import org.dllearner.utilities.Datastructures; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.StringTuple; + /** * Start class for the ontology repair and enrichment tool. * - * @author Lorenz Bühmann. + * @author Lorenz Buehmann. * */ public class ORE { + private static Logger logger = Logger.getRootLogger(); + + private static LearningAlgorithm la; + private ReasoningService rs; + + /** + * Entry point for CLI interface. + * + * @param args + */ + public static void main(String[] args) throws ComponentInitException { + + File file = new File(args[args.length - 1]); + + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + + ORE ore = null; + ore = new ORE(file); + ore.start(); + } + + /** + * Initialise all components based on conf file. + * + * @param file + * Conf file to read. + * @throws ComponentInitException + */ + public ORE(File file) throws ComponentInitException { + String baseDir = file.getParentFile().getPath(); + + // create component manager instance + String message = "starting component manager ... "; + long cmStartTime = System.nanoTime(); + ComponentManager cm = ComponentManager.getInstance(); + long cmTime = System.nanoTime() - cmStartTime; + message += "OK (" + Helper.prettyPrintNanoSeconds(cmTime) + ")"; + logger.info(message); + + // create a mapping between components and prefixes in the conf file + Map<Class<? extends Component>, String> componentPrefixMapping = createComponentPrefixMapping(); + + // parse conf file + ConfParser parser = ConfParser.parseFile(file); + + // step 1: detect knowledge sources + Set<KnowledgeSource> sources = new HashSet<KnowledgeSource>(); + Map<URL, Class<? extends KnowledgeSource>> importedFiles = getImportedFiles( + parser, baseDir); + for (Map.Entry<URL, Class<? extends KnowledgeSource>> entry : importedFiles + .entrySet()) { + KnowledgeSource ks = cm.knowledgeSource(entry.getValue()); + // apply URL entry (this assumes that every knowledge source has a + // configuration option "url"), so this may need to be changed in + // the + // future + cm.applyConfigEntry(ks, "url", entry.getKey().toString()); + + sources.add(ks); + configureComponent(cm, ks, componentPrefixMapping, parser); + initComponent(cm, ks); + } + + // step 2: detect used reasoner + ConfFileOption reasonerOption = parser.getConfOptionsByName("reasoner"); + ReasonerComponent reasoner = cm.reasoner( + getReasonerClass(reasonerOption), sources); + configureComponent(cm, reasoner, componentPrefixMapping, parser); + initComponent(cm, reasoner); + rs = cm.reasoningService(reasoner); + + } + + public void start() { + processOREMode(rs); + + } + + /** + * creates a mapping from components to option prefix strings + */ + public static Map<Class<? extends Component>, String> createComponentPrefixMapping() { + Map<Class<? extends Component>, String> componentPrefixMapping = new HashMap<Class<? extends Component>, String>(); + // knowledge sources + componentPrefixMapping.put(SparqlKnowledgeSource.class, "sparql"); + // reasoners + componentPrefixMapping.put(DIGReasoner.class, "digReasoner"); + componentPrefixMapping.put(OWLAPIReasoner.class, "owlAPIReasoner"); + // learning problems - configured via + and - flags for examples + componentPrefixMapping.put(PosNegDefinitionLP.class, + "posNegDefinitionLP"); + // learning algorithms + componentPrefixMapping.put(ROLearner.class, "refinement"); + componentPrefixMapping.put(ExampleBasedROLComponent.class, + "refexamples"); + componentPrefixMapping.put(GP.class, "gp"); + return componentPrefixMapping; + } + + /** + * convenience method basically every prefix (e.g. "refinement" in + * "refinement.horizontalExpFactor) corresponds to a specific component - + * this way the CLI will automatically support any configuration options + * supported by the component + */ + public static void configureComponent(ComponentManager cm, + Component component, + Map<Class<? extends Component>, String> componentPrefixMapping, + ConfParser parser) { + String prefix = componentPrefixMapping.get(component.getClass()); + if (prefix != null) + configureComponent(cm, component, parser + .getConfOptionsByPrefix(prefix)); + } + + // convenience method - see above method + private static void configureComponent(ComponentManager cm, + Component component, List<ConfFileOption> options) { + if (options != null) + for (ConfFileOption option : options) + applyConfFileOption(cm, component, option); + } + + // applies an option to a component - checks whether the option and its + // value is valid + private static void applyConfFileOption(ComponentManager cm, + Component component, ConfFileOption option) { + // the name of the option is suboption-part (the first part refers + // to its component) + String optionName = option.getSubOption(); + + ConfigOption<?> configOption = cm.getConfigOption(component.getClass(), + optionName); + // check whether such an option exists + if (configOption != null) { + + // catch all invalid config options + try { + + // perform compatibility checks + if (configOption instanceof StringConfigOption + && option.isStringOption()) { + + ConfigEntry<String> entry = new ConfigEntry<String>( + (StringConfigOption) configOption, option + .getStringValue()); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof IntegerConfigOption + && option.isIntegerOption()) { + + ConfigEntry<Integer> entry = new ConfigEntry<Integer>( + (IntegerConfigOption) configOption, option + .getIntValue()); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof DoubleConfigOption + && (option.isIntegerOption() || option.isDoubleOption())) { + + double value; + if (option.isIntegerOption()) + value = option.getIntValue(); + else + value = option.getDoubleValue(); + + ConfigEntry<Double> entry = new ConfigEntry<Double>( + (DoubleConfigOption) configOption, value); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof BooleanConfigOption + && option.isStringOption()) { + + ConfigEntry<Boolean> entry = new ConfigEntry<Boolean>( + (BooleanConfigOption) configOption, Datastructures + .strToBool(option.getStringValue())); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof StringSetConfigOption + && option.isSetOption()) { + + ConfigEntry<Set<String>> entry = new ConfigEntry<Set<String>>( + (StringSetConfigOption) configOption, option + .getSetValues()); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof StringTupleListConfigOption + && option.isListOption()) { + + ConfigEntry<List<StringTuple>> entry = new ConfigEntry<List<StringTuple>>( + (StringTupleListConfigOption) configOption, option + .getListTuples()); + cm.applyConfigEntry(component, entry); + + } else { + handleError("The type of conf file entry \"" + + option.getFullName() + + "\" is not correct: value \"" + option.getValue() + + "\" not valid for option type \"" + + configOption.getClass().getName() + "\"."); + } + + } catch (InvalidConfigOptionValueException e) { + e.printStackTrace(); + System.exit(0); + } + + } else + handleError("Unknow option " + option + "."); + } + + /** + * detects all imported files and their format + */ + public static Map<URL, Class<? extends KnowledgeSource>> getImportedFiles( + ConfParser parser, String baseDir) { + List<List<String>> imports = parser.getFunctionCalls().get("import"); + Map<URL, Class<? extends KnowledgeSource>> importedFiles = new HashMap<URL, Class<? extends KnowledgeSource>>(); + + if (imports != null) { + for (List<String> arguments : imports) { + // step 1: detect URL + URL url = null; + try { + String fileString = arguments.get(0); + if (fileString.startsWith("http:")) { + url = new URL(fileString); + } else { + File f = new File(baseDir, arguments.get(0)); + url = f.toURI().toURL(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } + + // step 2: detect format + Class<? extends KnowledgeSource> ksClass; + if (arguments.size() == 1) { + String filename = url.getPath(); + String ending = filename.substring(filename + .lastIndexOf(".") + 1); + + if (ending.equals("rdf") || ending.equals("owl")) + ksClass = OWLFile.class; + else if (ending.equals("nt")) + ksClass = OWLFile.class; + else if (ending.equals("kb")) + ksClass = KBFile.class; + else { + System.err.println("Warning: no format given for " + + arguments.get(0) + + " and could not detect it. Chosing RDF/XML."); + ksClass = OWLFile.class; + } + + importedFiles.put(url, ksClass); + } else { + String formatString = arguments.get(1); + + if (formatString.equals("RDF/XML")) + ksClass = OWLFile.class; + else if (formatString.equals("KB")) + ksClass = KBFile.class; + else if (formatString.equals("SPARQL")) + ksClass = SparqlKnowledgeSource.class; + else if (formatString.equals("NT")) + ksClass = OWLFile.class; + else { + throw new RuntimeException( + "Unsupported knowledge source format " + + formatString + ". Exiting."); + } + + importedFiles.put(url, ksClass); + } + } + } + + return importedFiles; + } + + private static void initComponent(ComponentManager cm, Component component) + throws ComponentInitException { + String startMessage = "initialising component \"" + + cm.getComponentName(component.getClass()) + "\" ... "; + long initStartTime = System.nanoTime(); + component.init(); + // standard messsage is just "OK" but can be more detailed for certain + // components + String message = "OK"; + if (component instanceof KBFile) + message = ((KBFile) component).getURL().toString() + " read"; + else if (component instanceof DIGReasoner) { + DIGReasoner reasoner = (DIGReasoner) component; + message = "using " + reasoner.getIdentifier() + + " connected via DIG 1.1 at " + + reasoner.getReasonerURL().toString(); + } + + long initTime = System.nanoTime() - initStartTime; + logger.info(startMessage + message + " (" + + Helper.prettyPrintNanoSeconds(initTime, false, false) + ")"); + } + + private static void processOREMode(ReasoningService rs) { + System.err.println("Concepts :" + rs.getAtomicConcepts()); + + System.out.println("Individuals " + rs.getIndividuals()); + System.out + .println("Entering ORE mode. Enter a existing concept for learning(new) or q to quit"); + + String conceptStr = ""; + do { + //Step 1: choose existing concept which should be (new) learned + System.out.print("enter concept: "); + // read input string + BufferedReader input = new BufferedReader(new InputStreamReader( + System.in)); + + try { + conceptStr = input.readLine(); + } catch (IOException e) { + e.printStackTrace(); + } + + if (!conceptStr.equals("q")) { + + // parse concept + Description concept = null; + boolean parsedCorrectly = true; + + try { + concept = KBParser.parseConcept(conceptStr); + + } catch (ParseException e1) { + e1.printStackTrace(); + System.err + .println("The concept you entered could not be parsed. Please try again."); + parsedCorrectly = false; + } catch (TokenMgrError e) { + e.printStackTrace(); + System.err + .println("An error occured during parsing. Please enter a syntactically valid concept."); + parsedCorrectly = false; + } + + if (parsedCorrectly) { + + // compute atomic concepts used in concept + SortedSet<NamedClass> occurringConcepts = new TreeSet<NamedClass>( + new ConceptComparator()); + occurringConcepts.addAll(Helper.getAtomicConcepts(concept)); + + // substract existing concepts from detected + // concepts -> the resulting set should be + // empty, otherwise print a warning (the DIG reasoner + // will just treat them as concepts about which it + // has no knowledge - this makes it hard to + // detect typos + // (note that removeAll currently gives a different + // result here, because the comparator of the argument + // is used) + for (NamedClass ac : rs.getAtomicConcepts()) + occurringConcepts.remove(ac); + + boolean nonExistingConstructs = false; + if (occurringConcepts.size() != 0) { + System.out + .println("You used non-existing atomic concepts or roles. Please correct your query."); + if (occurringConcepts.size() > 0) + + System.out.println("non-existing concepts: " + + occurringConcepts); + + nonExistingConstructs = true; + } + + if (!nonExistingConstructs) { + + // Step 2_1: choose all individuals of the concept as positive examples + SortedSet<Individual> posExamples = null; + posExamples = rs.retrieval(concept); + posExamples.removeAll(posExamples); + posExamples.add(new Individual( + "http://example.com/father#stefan")); + posExamples.add(new Individual( + "http://example.com/father#markus")); + posExamples.add(new Individual( + "http://example.com/father#martin")); + + //Step 2_2: subtract positive examples from all individuals of the ontology + //->negative examples of the concepts + SortedSet<Individual> negExamples = null; + negExamples = rs.getIndividuals(); + for (Individual rem_pos : posExamples) + negExamples.remove(rem_pos); + System.out.println("+" + posExamples); + System.out.println("-" + negExamples); + + //Step 3: Start learning-algorithm + + // step 3_1: set learning problem + ComponentManager cm = ComponentManager.getInstance(); + + PosNegDefinitionLP lp = new PosNegDefinitionLP(rs, + posExamples, negExamples); + + try { + initComponent(cm, lp); + } catch (ComponentInitException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + // step 3_2: set learning algorithm + + la = new ROLearner(lp, rs); + + try { + initComponent(cm, la); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + Thread laThread = new Thread() + { + public void run(){ + la.start(); + } + }; + laThread.start(); + + + System.out.println(la.getBestSolutions(5)); + + //Step 4: Knowledge Engineer chooses one of the suggestions + + //Step 5: Enrichment + + //Step 6: Repair:-check which individuals cause inconsistency + // -problem solving + + } + } + } + + } while (!conceptStr.equals("q")); + + } + + /** + * error handling over the logger + * + * @param message + * is a string and you message for problem + */ + public static void handleError(String message) { + logger.error(message); + System.exit(0); + } + + public ReasoningService getReasoningService() { + return rs; + } + + // edit by Tilo Hielscher + + /** + * Set Reasoner class. Define here all possible reasoners. + * + * @param reasonerOption + * from config file + * @return reasonerClass reasoner class + */ + public static Class<? extends ReasonerComponent> getReasonerClass( + ConfFileOption reasonerOption) { + Class<? extends ReasonerComponent> reasonerClass = null; + if (reasonerOption == null + || reasonerOption.getStringValue().equals("dig")) + reasonerClass = DIGReasoner.class; + else if (reasonerOption.getStringValue().equals("owlAPI")) + reasonerClass = OWLAPIReasoner.class; + else if (reasonerOption.getStringValue().equals("fastRetrieval")) + reasonerClass = FastRetrievalReasoner.class; + else if (reasonerOption.getStringValue().equals("fastInstanceChecker")) + reasonerClass = FastInstanceChecker.class; + else { + handleError("Unknown value " + reasonerOption.getStringValue() + + " for option \"reasoner\"."); + } + return reasonerClass; + } + + public static Class<? extends LearningAlgorithm> getLearningAlgorithm( + ConfFileOption algorithmOption) { + Class<? extends LearningAlgorithm> laClass = null; + if (algorithmOption == null + || algorithmOption.getStringValue().equals("refinement")) + laClass = ROLearner.class; + else if (algorithmOption.getStringValue().equals("refexamples")) + laClass = ExampleBasedROLComponent.class; + else if (algorithmOption.getStringValue().equals("gp")) + laClass = GP.class; + else if (algorithmOption.getStringValue().equals("bruteForce")) + laClass = BruteForceLearner.class; + else if (algorithmOption.getStringValue().equals("randomGuesser")) + laClass = RandomGuesser.class; + else + handleError("Unknown value in " + algorithmOption); + + return laClass; + } + } Added: trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java 2008-03-17 10:21:51 UTC (rev 714) @@ -0,0 +1,5 @@ +package org.dllearner.tools.ore; + +public class Repair { + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-03-26 20:11:58
|
Revision: 728 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=728&view=rev Author: lorenz_b Date: 2008-03-26 13:11:12 -0700 (Wed, 26 Mar 2008) Log Message: ----------- Wizard for ORE Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/Main.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE_alt.java trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardModel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java trunk/src/dl-learner/org/dllearner/tools/ore/father.owl Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,101 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Color; + +import javax.swing.DefaultListModel; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.event.ListSelectionListener; + +public class ConceptPanel extends JPanel{ + + + + private javax.swing.JList conceptList; + + private JPanel contentPanel; + + private DefaultListModel model; + private BlinkLabel blink; + + public ConceptPanel() { + + super(); + model = new DefaultListModel(); + blink = new BlinkLabel(); + blink.setText("Loading Concepts"); + contentPanel = getContentPanel(); + setLayout(new java.awt.BorderLayout()); + add(contentPanel,BorderLayout.CENTER); + add(blink, BorderLayout.SOUTH); + } + + private JPanel getContentPanel() { + + JPanel contentPanel1 = new JPanel(); + JScrollPane scroll = new JScrollPane(); + + + conceptList = new JList(model); + scroll.setSize(100,100); + scroll.setViewportView(conceptList); + + contentPanel1.add(scroll); + + + + return contentPanel1; + } + + public DefaultListModel getModel(){ + return model; + } + + public void setModel(DefaultListModel dm){ + conceptList.setModel(dm); + } + + public void addSelectionListener(ListSelectionListener l){ + conceptList.addListSelectionListener(l); + } + + public JList getList(){ + return conceptList; + } + + public BlinkLabel getBlinkLabel(){ + return blink; + } + + class BlinkLabel extends JLabel implements Runnable{ + private boolean blinking = false; + + public void start(){ + blinking = true; + new Thread(this).start(); + } + public void stop(){ + blinking = false; + setText("Done! Select Concept and press 'Next'"); + } + public void run(){ + while(blinking){ + setForeground(Color.red); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + return; + } + setForeground(Color.black); + } + } + } + + + + + +} \ No newline at end of file Added: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,60 @@ +package org.dllearner.tools.ore; + +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + + + + +public class ConceptPanelDescriptor extends WizardPanelDescriptor implements ListSelectionListener{ + + public static final String IDENTIFIER = "CONCEPT_CHOOSE_PANEL"; + + ConceptPanel panel3; + + public ConceptPanelDescriptor() { + + panel3 = new ConceptPanel(); + panel3.addSelectionListener(this); + + setPanelDescriptorIdentifier(IDENTIFIER); + setPanelComponent(panel3); + + } + + public Object getNextPanelDescriptor() { + return LearningPanelDescriptor.IDENTIFIER; + } + + public Object getBackPanelDescriptor() { + return KnowledgeSourcePanelDescriptor.IDENTIFIER; + } + + public void aboutToDisplayPanel() { + setNextButtonAccordingToConceptSelected(); + } + + + @Override + public void valueChanged(ListSelectionEvent e) { + setNextButtonAccordingToConceptSelected(); + if (!e.getValueIsAdjusting()) + getWizardModel().getOre().setConcept(panel3.getList().getSelectedValue().toString()); + + } + + private void setNextButtonAccordingToConceptSelected() { + + if (panel3.getList().getSelectedValue()!= null){ + getWizard().setNextFinishButtonEnabled(true); + }else{ + getWizard().setNextFinishButtonEnabled(false); + } + + } + + + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanel.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,109 @@ +package org.dllearner.tools.ore; + + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Font; + +import javax.swing.BorderFactory; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.UIManager; + + +public class IntroductionPanel extends JPanel { + + private JTextArea instructionsField; + private JScrollPane jScrollPane1; + + + + private JLabel welcomeTitle; + private JPanel contentPanel; + + + + public IntroductionPanel() { + + + + + + contentPanel = getContentPanel(); + + + + + setLayout(new java.awt.BorderLayout()); + + + + //add(leftPanel, BorderLayout.WEST); + + JPanel secondaryPanel = new JPanel(); + secondaryPanel.add(contentPanel, BorderLayout.NORTH); + add(contentPanel, BorderLayout.CENTER); + } + + + private JPanel getContentPanel() { + + JPanel contentPanel1 = new JPanel(); + JPanel jPanel1 = new JPanel(); + + 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.setBackground(UIManager.getDefaults().getColor("control")); + 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 concept of an ontology which should be (re)learned. \n\nOn " + + "the next page, choose a JAR file that contains some components. It will find any " + + "JavaBeans listed in the manifest, and also let you add classes from the JAR file. " + + "When the resulting NetBeans plug-in is installed in NetBeans, the components you " + + "selected will be on the Component Palette, and can be dragged and dropped onto Swing " + + "forms. The library display name you enter is also the name that will be used for the " + + "category in the component palette where your components will appear."); + instructionsField.setWrapStyleWord(true); + jScrollPane1.setViewportView(instructionsField); + + + + + + welcomeTitle = new JLabel(); + welcomeTitle.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(0, 0, 0))); + + + + contentPanel1.setLayout(new java.awt.BorderLayout()); + + 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); + + jPanel1.setLayout(new java.awt.GridLayout(0, 1,0,0)); + + //jPanel1.add(blankSpace); + + + jPanel1.add(jScrollPane1); + + contentPanel1.add(jPanel1, java.awt.BorderLayout.CENTER); + + return contentPanel1; + + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,23 @@ +package org.dllearner.tools.ore; + + + +public class IntroductionPanelDescriptor extends WizardPanelDescriptor { + + public static final String IDENTIFIER = "INTRODUCTION_PANEL"; + + public IntroductionPanelDescriptor() { + super(IDENTIFIER, new IntroductionPanel()); + } + + public Object getNextPanelDescriptor() { + return KnowledgeSourcePanelDescriptor.IDENTIFIER; + } + + public Object getBackPanelDescriptor() { + return null; + } + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,127 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.event.ActionListener; +import java.io.File; + +import javax.swing.JFileChooser; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.event.DocumentListener; +import javax.swing.filechooser.FileFilter; + +public class KnowledgeSourcePanel extends JPanel{ + + + private javax.swing.JTextField fileURL; + private javax.swing.JButton browseButton; + + private JPanel contentPanel; + private LeftPanel leftPanel; + private JLabel message; + + public KnowledgeSourcePanel() { + +// super(); + leftPanel = new LeftPanel(1); + contentPanel = getContentPanel(); + + setLayout(new java.awt.BorderLayout()); + + //add(leftPanel,BorderLayout.WEST); + add(contentPanel,BorderLayout.CENTER); + + } + + private JPanel getContentPanel() { + + JPanel contentPanel1 = new JPanel(); + + message = new JLabel(); + message.setText("enter or browse OWL file"); + fileURL = new javax.swing.JTextField(40); + + browseButton = new javax.swing.JButton("browse"); + + contentPanel1.setLayout(new BorderLayout()); + + JPanel panel = new JPanel(); + panel.add(fileURL); + panel.add(browseButton); + + contentPanel1.add(panel,BorderLayout.CENTER); + contentPanel1.add(message,BorderLayout.SOUTH); + + + + return contentPanel1; + } + + public void addListeners(ActionListener l, DocumentListener d) { + browseButton.addActionListener(l); + fileURL.addActionListener(l); + fileURL.getDocument().addDocumentListener(d); + } + + + + public void openFileChooser(){ + JFileChooser filechooser = new JFileChooser(); + + filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + String choosenPath = fileURL.getText(); + if(!choosenPath.equals("") && (new File(choosenPath)).exists()) + filechooser.setCurrentDirectory(new File(fileURL.getText())); + + filechooser.addChoosableFileFilter(new FileFilter() { + public boolean accept(File f) { + if (f.isDirectory()) return true; + return f.getName().toLowerCase().endsWith(".owl"); + } + public String getDescription () { return "OWLs"; } + }); + int status = filechooser.showOpenDialog( null ); + + if ( status == JFileChooser.APPROVE_OPTION ){ + String strURL = filechooser.getSelectedFile().getAbsolutePath(); + fileURL.setText(strURL); + + + + }else{ + System.out.println( "Auswahl abgebrochen" ); + } + } + + public boolean isExistingOWLFile(){ + if(!fileURL.getText().equals("") && !getOWLFile().exists()){ + + message.setText(fileURL.getText()+" does not exist"); + return false; + } + if(!fileURL.getText().equals("") && (getOWLFile().isDirectory() || (getOWLFile().isFile() && !getOWLFile().getPath().endsWith(".owl")))){ + System.err.println(getOWLFile().getPath()); + message.setText(fileURL.getText()+" is not a OWL file"); + return false; + } + if(fileURL.getText().equals("")){ + message.setText("enter or browse OWL file"); + return false; + } + if(getOWLFile().exists() && getOWLFile().getPath().endsWith(".owl")){ + message.setText(""); + return true; + } + return true; + + + + } + + public File getOWLFile() { + return new File(fileURL.getText()); + } + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,119 @@ +package org.dllearner.tools.ore; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Set; + +import javax.swing.SwingWorker; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; + +import org.dllearner.core.owl.NamedClass; + + +public class KnowledgeSourcePanelDescriptor extends WizardPanelDescriptor implements ActionListener, DocumentListener{ + + public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; + + KnowledgeSourcePanel panel2; + + public KnowledgeSourcePanelDescriptor() { + + panel2 = new KnowledgeSourcePanel(); + + panel2.addListeners(this, this); + + setPanelDescriptorIdentifier(IDENTIFIER); + setPanelComponent(panel2); + + } + + public Object getNextPanelDescriptor() { + return ConceptPanelDescriptor.IDENTIFIER; + } + + public Object getBackPanelDescriptor() { + return IntroductionPanelDescriptor.IDENTIFIER; + } + + + public void aboutToDisplayPanel() { + setNextButtonAccordingToExistingOWLFile(); + } + + public void actionPerformed(ActionEvent e) { + String cmd = e.getActionCommand(); + if(cmd.equals("browse")){ + panel2.openFileChooser(); + } + + setNextButtonAccordingToExistingOWLFile(); + } + + + + + private void setNextButtonAccordingToExistingOWLFile() { + + if (panel2.isExistingOWLFile()){ + getWizardModel().getOre().setKnowledgeSource(panel2.getOWLFile()); + getWizard().setNextFinishButtonEnabled(true); +// new ConceptRetriever().execute(); +// System.err.println("test"); + } + + + + + + else + getWizard().setNextFinishButtonEnabled(false); + + } + + + @Override + public void changedUpdate(DocumentEvent e) { + setNextButtonAccordingToExistingOWLFile(); + + } + + @Override + public void insertUpdate(DocumentEvent e) { + setNextButtonAccordingToExistingOWLFile(); + + } + + @Override + public void removeUpdate(DocumentEvent e) { + setNextButtonAccordingToExistingOWLFile(); + + } + class ConceptRetriever extends SwingWorker<Set<NamedClass>, NamedClass> + { + @Override + public Set<NamedClass> doInBackground() + { + getWizardModel().getOre().detectReasoner(); + Set<NamedClass> ind = getWizardModel().getOre().getReasoningService().getAtomicConcepts(); + ConceptPanelDescriptor nextPanel = (ConceptPanelDescriptor)getWizardModel().getPanelHashMap().get(getNextPanelDescriptor()); + nextPanel.panel3.getModel().clear(); + + for (NamedClass cl : ind){ + publish(cl); + nextPanel.panel3.getModel().addElement(cl); + System.out.println(cl.toString()); + } + return ind; + } + + + + + } + + + + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,73 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.event.ActionListener; + +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +public class LearningPanel extends JPanel{ + + + + private javax.swing.JList conceptList; + + private JPanel contentPanel; + + private DefaultListModel model; + private JLabel result; + private JButton run; + + public LearningPanel() { + + super(); + model = new DefaultListModel(); + result = new JLabel(); + run = new JButton("Run"); + contentPanel = getContentPanel(); + setLayout(new java.awt.BorderLayout()); + add(run,BorderLayout.EAST); + add(contentPanel,BorderLayout.CENTER); + add(result, BorderLayout.SOUTH); + } + + private JPanel getContentPanel() { + + JPanel contentPanel1 = new JPanel(); + JScrollPane scroll = new JScrollPane(); + + + conceptList = new JList(model); + scroll.setSize(100,100); + scroll.setViewportView(conceptList); + + contentPanel1.add(scroll); + + + + return contentPanel1; + } + + public void addButtonListener(ActionListener a){ + run.addActionListener(a); + } + + public void setResult(String resultStr){ + result.setText(resultStr); + } + + + + + +} + + + + + + Added: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,82 @@ +package org.dllearner.tools.ore; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.concurrent.ExecutionException; + +import javax.swing.SwingWorker; + +import org.dllearner.core.owl.Description; + + + + +public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener{ + + public static final String IDENTIFIER = "LEARNING_PANEL"; + + LearningPanel panel4; + + public LearningPanelDescriptor() { + + panel4 = new LearningPanel(); + panel4.addButtonListener(this); + + setPanelDescriptorIdentifier(IDENTIFIER); + setPanelComponent(panel4); + + } + + public Object getNextPanelDescriptor() { + return LearningPanelDescriptor.IDENTIFIER; + } + + public Object getBackPanelDescriptor() { + return ConceptPanelDescriptor.IDENTIFIER; + } + + + public void displayingPanel(){ + + } + + class Result extends SwingWorker<Description, Void> + { + @Override + public Description doInBackground() + { + getWizardModel().getOre().start(); + Description result = getWizardModel().getOre().getLearningResult(); + + + return result; + } + + public void done(){ + Description result=null; + try { + result = get(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + panel4.setResult(result.toString()); + } + + + + } + + + + + + + @Override + public void actionPerformed(ActionEvent arg0) { + new Result().execute(); + + }} Added: trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,59 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GridLayout; + +import javax.swing.JLabel; +import javax.swing.JPanel; + +public class LeftPanel extends JPanel{ + + private JLabel[] jLabel; + + public LeftPanel(int i){ + + jLabel = new JLabel[5]; + 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. Concept"); + jLabel[3] = new JLabel("4. Examples"); + jLabel[4] = new JLabel("5. Learning"); + + jLabel[i].setFont(jLabel[i].getFont().deriveFont(Font.BOLD)); + + for(JLabel current : jLabel) + panel2.add(current); + setLayout(new BorderLayout()); + setPreferredSize(new Dimension(140,500)); + add(panel2, BorderLayout.NORTH); + + } + + public void set(int i){ + removeAll(); + + 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. Concept"); + jLabel[3] = new JLabel("4. Examples"); + jLabel[4] = new JLabel("5. Learning"); + + jLabel[i].setFont(jLabel[i].getFont().deriveFont(Font.BOLD)); + + for(JLabel current : jLabel) + panel2.add(current); + setLayout(new BorderLayout()); + add(panel2, BorderLayout.NORTH); + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/Main.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Main.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,54 @@ +package org.dllearner.tools.ore; + +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; + + + +public class Main { + + public static void main(String[] args) { + try { + UIManager.setLookAndFeel( + UIManager.getSystemLookAndFeelClassName()); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (UnsupportedLookAndFeelException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Wizard wizard = new Wizard(); + wizard.getDialog().setTitle("DL-Learner ORE-Tool"); + wizard.getDialog().setSize(700, 400); + + WizardPanelDescriptor descriptor1 = new IntroductionPanelDescriptor(); + wizard.registerWizardPanel(IntroductionPanelDescriptor.IDENTIFIER, descriptor1); + + WizardPanelDescriptor descriptor2 = new KnowledgeSourcePanelDescriptor(); + wizard.registerWizardPanel(KnowledgeSourcePanelDescriptor.IDENTIFIER, descriptor2); + + WizardPanelDescriptor descriptor3 = new ConceptPanelDescriptor(); + wizard.registerWizardPanel(ConceptPanelDescriptor.IDENTIFIER, descriptor3); + + WizardPanelDescriptor descriptor4 = new LearningPanelDescriptor(); + wizard.registerWizardPanel(LearningPanelDescriptor.IDENTIFIER, descriptor4); + + wizard.setCurrentPanel(IntroductionPanelDescriptor.IDENTIFIER); + + int ret = wizard.showModalDialog(); + + System.out.println("Dialog return code is (0=Finish,1=Cancel,2=Error): " + ret); + + + System.exit(0); + + } + +} Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-26 15:49:00 UTC (rev 727) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-26 20:11:12 UTC (rev 728) @@ -1,610 +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; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.apache.log4j.SimpleLayout; -import org.dllearner.algorithms.BruteForceLearner; -import org.dllearner.algorithms.RandomGuesser; -import org.dllearner.algorithms.gp.GP; -import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; -import org.dllearner.algorithms.refinement.ROLearner; -import org.dllearner.cli.ConfFileOption; -import org.dllearner.core.Component; -import org.dllearner.core.ComponentInitException; -import org.dllearner.core.ComponentManager; -import org.dllearner.core.KnowledgeSource; -import org.dllearner.core.LearningAlgorithm; -import org.dllearner.core.ReasonerComponent; -import org.dllearner.core.ReasoningService; -import org.dllearner.core.config.BooleanConfigOption; -import org.dllearner.core.config.ConfigEntry; -import org.dllearner.core.config.ConfigOption; -import org.dllearner.core.config.DoubleConfigOption; -import org.dllearner.core.config.IntegerConfigOption; -import org.dllearner.core.config.InvalidConfigOptionValueException; -import org.dllearner.core.config.StringConfigOption; -import org.dllearner.core.config.StringSetConfigOption; -import org.dllearner.core.config.StringTupleListConfigOption; -import org.dllearner.core.owl.Description; -import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.kb.KBFile; -import org.dllearner.kb.OWLFile; -import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.learningproblems.PosNegDefinitionLP; -import org.dllearner.parser.ConfParser; -import org.dllearner.parser.KBParser; -import org.dllearner.parser.ParseException; -import org.dllearner.parser.TokenMgrError; -import org.dllearner.reasoning.DIGReasoner; -import org.dllearner.reasoning.FastInstanceChecker; -import org.dllearner.reasoning.FastRetrievalReasoner; -import org.dllearner.reasoning.OWLAPIReasoner; -import org.dllearner.utilities.ConceptComparator; -import org.dllearner.utilities.Datastructures; -import org.dllearner.utilities.Helper; -import org.dllearner.utilities.StringTuple; - -/** - * Start class for the ontology repair and enrichment tool. - * - * @author Lorenz Buehmann. - * - */ -public class ORE { - - private static Logger logger = Logger.getRootLogger(); - - private static LearningAlgorithm la; - private ReasoningService rs; - - /** - * Entry point for CLI interface. - * - * @param args - */ - public static void main(String[] args) throws ComponentInitException { - - File file = new File(args[args.length - 1]); - - // create logger (a simple logger which outputs - // its messages to the console) - SimpleLayout layout = new SimpleLayout(); - ConsoleAppender consoleAppender = new ConsoleAppender(layout); - logger.removeAllAppenders(); - logger.addAppender(consoleAppender); - logger.setLevel(Level.DEBUG); - - ORE ore = null; - ore = new ORE(file); - ore.start(); - } - - /** - * Initialise all components based on conf file. - * - * @param file - * Conf file to read. - * @throws ComponentInitException - */ - public ORE(File file) throws ComponentInitException { - String baseDir = file.getParentFile().getPath(); - - // create component manager instance - String message = "starting component manager ... "; - long cmStartTime = System.nanoTime(); - ComponentManager cm = ComponentManager.getInstance(); - long cmTime = System.nanoTime() - cmStartTime; - message += "OK (" + Helper.prettyPrintNanoSeconds(cmTime) + ")"; - logger.info(message); - - // create a mapping between components and prefixes in the conf file - Map<Class<? extends Component>, String> componentPrefixMapping = createComponentPrefixMapping(); - - // parse conf file - ConfParser parser = ConfParser.parseFile(file); - - // step 1: detect knowledge sources - Set<KnowledgeSource> sources = new HashSet<KnowledgeSource>(); - Map<URL, Class<? extends KnowledgeSource>> importedFiles = getImportedFiles( - parser, baseDir); - for (Map.Entry<URL, Class<? extends KnowledgeSource>> entry : importedFiles - .entrySet()) { - KnowledgeSource ks = cm.knowledgeSource(entry.getValue()); - // apply URL entry (this assumes that every knowledge source has a - // configuration option "url"), so this may need to be changed in - // the - // future - cm.applyConfigEntry(ks, "url", entry.getKey().toString()); - - sources.add(ks); - configureComponent(cm, ks, componentPrefixMapping, parser); - initComponent(cm, ks); - } - - // step 2: detect used reasoner - ConfFileOption reasonerOption = parser.getConfOptionsByName("reasoner"); - ReasonerComponent reasoner = cm.reasoner( - getReasonerClass(reasonerOption), sources); - configureComponent(cm, reasoner, componentPrefixMapping, parser); - initComponent(cm, reasoner); - rs = cm.reasoningService(reasoner); - - } - - public void start() { - processOREMode(rs); - - } - - /** - * creates a mapping from components to option prefix strings - */ - public static Map<Class<? extends Component>, String> createComponentPrefixMapping() { - Map<Class<? extends Component>, String> componentPrefixMapping = new HashMap<Class<? extends Component>, String>(); - // knowledge sources - componentPrefixMapping.put(SparqlKnowledgeSource.class, "sparql"); - // reasoners - componentPrefixMapping.put(DIGReasoner.class, "digReasoner"); - componentPrefixMapping.put(OWLAPIReasoner.class, "owlAPIReasoner"); - // learning problems - configured via + and - flags for examples - componentPrefixMapping.put(PosNegDefinitionLP.class, - "posNegDefinitionLP"); - // learning algorithms - componentPrefixMapping.put(ROLearner.class, "refinement"); - componentPrefixMapping.put(ExampleBasedROLComponent.class, - "refexamples"); - componentPrefixMapping.put(GP.class, "gp"); - return componentPrefixMapping; - } - - /** - * convenience method basically every prefix (e.g. "refinement" in - * "refinement.horizontalExpFactor) corresponds to a specific component - - * this way the CLI will automatically support any configuration options - * supported by the component - */ - public static void configureComponent(ComponentManager cm, - Component component, - Map<Class<? extends Component>, String> componentPrefixMapping, - ConfParser parser) { - String prefix = componentPrefixMapping.get(component.getClass()); - if (prefix != null) - configureComponent(cm, component, parser - .getConfOptionsByPrefix(prefix)); - } - - // convenience method - see above method - private static void configureComponent(ComponentManager cm, - Component component, List<ConfFileOption> options) { - if (options != null) - for (ConfFileOption option : options) - applyConfFileOption(cm, component, option); - } - - // applies an option to a component - checks whether the option and its - // value is valid - private static void applyConfFileOption(ComponentManager cm, - Component component, ConfFileOption option) { - // the name of the option is suboption-part (the first part refers - // to its component) - String optionName = option.getSubOption(); - - ConfigOption<?> configOption = cm.getConfigOption(component.getClass(), - optionName); - // check whether such an option exists - if (configOption != null) { - - // catch all invalid config options - try { - - // perform compatibility checks - if (configOption instanceof StringConfigOption - && option.isStringOption()) { - - ConfigEntry<String> entry = new ConfigEntry<String>( - (StringConfigOption) configOption, option - .getStringValue()); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof IntegerConfigOption - && option.isIntegerOption()) { - - ConfigEntry<Integer> entry = new ConfigEntry<Integer>( - (IntegerConfigOption) configOption, option - .getIntValue()); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof DoubleConfigOption - && (option.isIntegerOption() || option.isDoubleOption())) { - - double value; - if (option.isIntegerOption()) - value = option.getIntValue(); - else - value = option.getDoubleValue(); - - ConfigEntry<Double> entry = new ConfigEntry<Double>( - (DoubleConfigOption) configOption, value); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof BooleanConfigOption - && option.isStringOption()) { - - ConfigEntry<Boolean> entry = new ConfigEntry<Boolean>( - (BooleanConfigOption) configOption, Datastructures - .strToBool(option.getStringValue())); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof StringSetConfigOption - && option.isSetOption()) { - - ConfigEntry<Set<String>> entry = new ConfigEntry<Set<String>>( - (StringSetConfigOption) configOption, option - .getSetValues()); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof StringTupleListConfigOption - && option.isListOption()) { - - ConfigEntry<List<StringTuple>> entry = new ConfigEntry<List<StringTuple>>( - (StringTupleListConfigOption) configOption, option - .getListTuples()); - cm.applyConfigEntry(component, entry); - - } else { - handleError("The type of conf file entry \"" - + option.getFullName() - + "\" is not correct: value \"" + option.getValue() - + "\" not valid for option type \"" - + configOption.getClass().getName() + "\"."); - } - - } catch (InvalidConfigOptionValueException e) { - e.printStackTrace(); - System.exit(0); - } - - } else - handleError("Unknow option " + option + "."); - } - - /** - * detects all imported files and their format - */ - public static Map<URL, Class<? extends KnowledgeSource>> getImportedFiles( - ConfParser parser, String baseDir) { - List<List<String>> imports = parser.getFunctionCalls().get("import"); - Map<URL, Class<? extends KnowledgeSource>> importedFiles = new HashMap<URL, Class<? extends KnowledgeSource>>(); - - if (imports != null) { - for (List<String> arguments : imports) { - // step 1: detect URL - URL url = null; - try { - String fileString = arguments.get(0); - if (fileString.startsWith("http:")) { - url = new URL(fileString); - } else { - File f = new File(baseDir, arguments.get(0)); - url = f.toURI().toURL(); - } - } catch (MalformedURLException e) { - e.printStackTrace(); - } - - // step 2: detect format - Class<? extends KnowledgeSource> ksClass; - if (arguments.size() == 1) { - String filename = url.getPath(); - String ending = filename.substring(filename - .lastIndexOf(".") + 1); - - if (ending.equals("rdf") || ending.equals("owl")) - ksClass = OWLFile.class; - else if (ending.equals("nt")) - ksClass = OWLFile.class; - else if (ending.equals("kb")) - ksClass = KBFile.class; - else { - System.err.println("Warning: no format given for " - + arguments.get(0) - + " and could not detect it. Chosing RDF/XML."); - ksClass = OWLFile.class; - } - - importedFiles.put(url, ksClass); - } else { - String formatString = arguments.get(1); - - if (formatString.equals("RDF/XML")) - ksClass = OWLFile.class; - else if (formatString.equals("KB")) - ksClass = KBFile.class; - else if (formatString.equals("SPARQL")) - ksClass = SparqlKnowledgeSource.class; - else if (formatString.equals("NT")) - ksClass = OWLFile.class; - else { - throw new RuntimeException( - "Unsupported knowledge source format " - + formatString + ". Exiting."); - } - - importedFiles.put(url, ksClass); - } - } - } - - return importedFiles; - } - - private static void initComponent(ComponentManager cm, Component component) - throws ComponentInitException { - String startMessage = "initialising component \"" - + cm.getComponentName(component.getClass()) + "\" ... "; - long initStartTime = System.nanoTime(); - component.init(); - // standard messsage is just "OK" but can be more detailed for certain - // components - String message = "OK"; - if (component instanceof KBFile) - message = ((KBFile) component).getURL().toString() + " read"; - else if (component instanceof DIGReasoner) { - DIGReasoner reasoner = (DIGReasoner) component; - message = "using " + reasoner.getIdentifier() - + " connected via DIG 1.1 at " - + reasoner.getReasonerURL().toString(); - } - - long initTime = System.nanoTime() - initStartTime; - logger.info(startMessage + message + " (" - + Helper.prettyPrintNanoSeconds(initTime, false, false) + ")"); - } - - private static void processOREMode(ReasoningService rs) { - System.err.println("Concepts :" + rs.getAtomicConcepts()); - - System.out.println("Individuals " + rs.getIndividuals()); - System.out - .println("Entering ORE mode. Enter a existing concept for learning(new) or q to quit"); - - String conceptStr = ""; - do { - //Step 1: choose existing concept which should be (new) learned - System.out.print("enter concept: "); - // read input string - BufferedReader input = new BufferedReader(new InputStreamReader( - System.in)); - - try { - conceptStr = input.readLine(); - } catch (IOException e) { - e.printStackTrace(); - } - - if (!conceptStr.equals("q")) { - - // parse concept - Description concept = null; - boolean parsedCorrectly = true; - - try { - concept = KBParser.parseConcept(conceptStr); - - } catch (ParseException e1) { - e1.printStackTrace(); - System.err - .println("The concept you entered could not be parsed. Please try again."); - parsedCorrectly = false; - } catch (TokenMgrError e) { - e.printStackTrace(); - System.err - .println("An error occured during parsing. Please enter a syntactically valid concept."); - parsedCorrectly = false; - } - - if (parsedCorrectly) { - - // compute atomic concepts used in concept - SortedSet<NamedClass> occurringConcepts = new TreeSet<NamedClass>( - new ConceptComparator()); - occurringConcepts.addAll(Helper.getAtomicConcepts(concept)); - - // substract existing concepts from detected - // concepts -> the resulting set should be - // empty, otherwise print a warning (the DIG reasoner - // will just treat them as concepts about which it - // has no knowledge - this makes it hard to - // detect typos - // (note that removeAll currently gives a different - // result here, because the comparator of the argument - // is used) - for (NamedClass ac : rs.getAtomicConcepts()) - occurringConcepts.remove(ac); - - boolean nonExistingConstructs = false; - if (occurringConcepts.size() != 0) { - System.out - .println("You used non-existing atomic concepts or roles. Please correct your query."); - if (occurringConcepts.size() > 0) - - System.out.println("non-existing concepts: " - + occurringConcepts); - - nonExistingConstructs = true; - } - - if (!nonExistingConstructs) { - - // Step 2_1: choose all individuals of the concept as positive examples - SortedSet<Individual> posExamples = null; - posExamples = rs.retrieval(concept); - posExamples.removeAll(posExamples); - posExamples.add(new Individual( - "http://example.com/father#stefan")); - posExamples.add(new Individual( - "http://example.com/father#markus")); - posExamples.add(new Individual( - "http://example.com/father#martin")); - - //Step 2_2: subtract positive examples from all individuals of the ontology - //->negative examples of the concepts - SortedSet<Individual> negExamples = null; - negExamples = rs.getIndividuals(); - for (Individual rem_pos : posExamples) - negExamples.remove(rem_pos); - System.out.println("+" + posExamples); - System.out.println("-" + negExamples); - - //Step 3: Start learning-algorithm - - // step 3_1: set learning problem - ComponentManager cm = ComponentManager.getInstance(); - - PosNegDefinitionLP lp = new PosNegDefinitionLP(rs, - posExamples, negExamples); - - try { - initComponent(cm, lp); - } catch (ComponentInitException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - - // step 3_2: set learning algorithm - - la = new ROLearner(lp, rs); - - try { - initComponent(cm, la); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - Thread laThread = new Thread() - { - @Override - public void run(){ - la.start(); - } - }; - laThread.start(); - - - System.out.println(la.getBestSolutions(5)); - - //Step 4: Knowledge Engineer chooses one of the suggestions - - //Step 5: Enrichment - - //Step 6: Repair:-check which individuals cause inconsistency - // -problem solving - - } - } - } - - } while (!conceptStr.equals("q")); - - } - - /** - * error handling over the logger - * - * @param message - * is a string and you message for problem - */ - public static void handleError(String message) { - logger.error(message); - System.exit(0); - } - - public ReasoningService getReasoningService() { - return rs; - } - - // edit by Tilo Hielscher - - /** - * Set Reasoner class. Define here all possible reasoners. - * - * @param reasonerOption - * from config file - * @return reasonerClass reasoner class - */ - public static Class<? extends ReasonerComponent> getReasonerClass( - ConfFileOption reasonerOption) { - Class<? extends ReasonerComponent> reasonerClass = null; - if (reasonerOption == null - || reasonerOption.getStringValue().equals("dig")) - reasonerClass = DIGReasoner.class; - else if (reasonerOption.getStringValue().equals("owlAPI")) - reasonerClass = OWLAPIReasoner.class; - else if (reasonerOption.getStringValue().equals("fastRetrieval")) - reasonerClass = FastRetrievalReasoner.class; - else if (reasonerOption.getStringValue().equals("fastInstanceChecker")) - reasonerClass = FastInstanceChecker.class; - else { - handleError("Unknown value " + reasonerOption.getStringValue() - + " for option \"reasoner\"."); - } - return reasonerClass; - } - - public static Class<? extends LearningAlgorithm> getLearningAlgorithm( - ConfFileOption algorithmOption) { - Class<? extends LearningAlgorithm> laClass = null; - if (algorithmOption == null - || algorithmOption.getStringValue().equals("refinement")) - laClass = ROLearner.class; - else if (algorithmOption.getStringValue().equals("refexamples")) - laClass = ExampleBasedROLComponent.class; - else if (algorithmOption.getStringValue().equals("gp")) - laClass = GP.class; - else if (algorithmOption.getStringValue().equals("bruteForce")) - laClass = BruteForceLearner.class; - else if (algorithmOption.getStringValue().equals("randomGuesser")) - laClass = RandomGuesser.class; - else - handleError("Unknown value in " + algorithmOption); - - return laClass; - } - -} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ORE_alt.java (from rev 721, trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE_alt.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE_alt.java 2008-03-26 20:11:12 UTC (rev 728) @@ -0,0 +1,619 @@ +/** + * 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; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.SimpleLayout; +import org.dllearner.algorithms.BruteForceLearner; +import org.dllearner.algorithms.RandomGuesser; +import org.dllearner.algorithms.gp.GP; +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; +import org.dllearner.algorithms.refinement.ROLearner; +import org.dllearner.cli.ConfFileOption; +import org.dllearner.core.Component; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.KnowledgeSource; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.config.BooleanConfigOption; +import org.dllearner.core.config.ConfigEntry; +import org.dllearner.core.config.ConfigOption; +import org.dllearner.core.config.DoubleConfigOption; +import org.dllearner.core.config.IntegerConfigOption; +import org.dllearner.core.config.InvalidConfigOptionValueException; +import org.dllearner.core.config.StringConfigOption; +import org.dllearner.core.config.StringSetConfigOption; +import org.dllearner.core.config.StringTupleListConfigOption; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.kb.KBFile; +import org.dllearner.kb.OWLFile; +import org.dllearner.kb.sparql.SparqlKnowledgeSource; +import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.parser.ConfParser; +import org.dllearner.parser.KBParser; +import org.dllearner.parser.ParseException; +import org.dllearner.parser.TokenMgrError; +import org.dllearner.reasoning.DIGReasoner; +import org.dllearner.reasoning.FastInstanceChecker; +import org.dllearner.reasoning.FastRetrievalReasoner; +import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.utilities.ConceptComparator; +import org.dllearner.utilities.Datastructures; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.StringTuple; + +/** + * Start class for the ontology repair and enrichment tool. + * + * @author Lorenz Buehmann. + * + */ +public class ORE_alt { + + private static Logger logger = Logger.getRootLogger(); + + private static LearningAlgorithm la; + private ReasoningService rs; + private KnowledgeSource ks; + + /** + * Entry point for CLI interface. + * + * @param args + */ + public static void main(String[] args) throws ComponentInitException { + + File file = new File(args[args.length - 1]); + + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.DEBUG); + + ORE_alt ore = null; + ore = new ORE_alt(file); + ore.start(); + } + + public ORE_alt(){ + + } + + public void setKnowledgeSource(File file){ + + } + + /** + * Initialise all components based on conf file. + * + * @param file + * Conf file to read. + * @throws ComponentInitException + */ + public ORE_alt(File file) throws ComponentInitException { + String baseDir = file.getParentFile().getPath(); + + // create component manager instance + String message = "starting component manager ... "; + long cmStartTime = System.nanoTime(); + ComponentManager cm = ComponentManager.getInstance(); + long cmTime = System.nanoTime() - cmStartTime; + message += "OK (" + Helper.prettyPrintNanoSeconds(cmTime) + ")"; + logger.info(message); + + // create a mapping between components and prefixes in the conf file + Map<Class<? extends Component>, String> componentPrefixMapping = createComponentPrefixMapping(); + + // parse conf file + ConfParser parser = ConfParser.parseFile(file); + + // step 1: detect knowledge sources + Set<KnowledgeSource> sources = new HashSet<KnowledgeSource>(); + Map<URL, Class<? extends KnowledgeSource>> importedFiles = getImportedFiles( + parser, baseDir); + for (Map.Entry<URL, Class<? extends KnowledgeSource>> entry : importedFiles + .entrySet()) { + KnowledgeSource ks = cm.knowledgeSource(entry.getValue()); + // apply URL entry (this assumes that every knowledge source has a + // configuration option "url"), so this may need to be changed in + // the + // future + cm.applyConfigEntry(ks, "url", entry.getKey().toString()); + + sources.add(ks); + configureComponent(cm, ks, componentPrefixMapping, parser); + initComponent(cm, ks); + } + + // step 2: detect used reasoner + ConfFileOption reasonerOption = parser.getConfOptionsByName("reasoner"); + ReasonerComponent reasoner = cm.reasoner( + getReasonerClass(reasonerOption), sources); + configureComponent(cm, reasoner, componentPrefixMapping, parser); + initComponent(cm, reasoner); + rs = cm.reasoningService(reasoner); + + } + + public void start() { + processOREMode(rs); + + } + + /** + * creates a mapping from components to option prefix strings + */ + public static Map<Class<? extends Component>, String> createComponentPrefixMapping() { + Map<Class<? extends Component>, String> componentPrefixMapping = new HashMap<Class<? extends Component>, String>(); + // knowledge sources + componentPrefixMapping.put(SparqlKnowledgeSource.class, "sparql"); + // reasoners + componentPrefixMapping.put(DIGReasoner.class, "digReasoner"); + componentPrefixMapping.put(OWLAPIReasoner.class, "owlAPIReasoner"); + // learning problems - configured via + and - flags for examples + componentPrefixMapping.put(PosNegDefinitionLP.class, + "posNegDefinitionLP"); + // learning algorithms + componentPrefixMapping.put(ROLearner.class, "refinement"); + componentPrefixMapping.put(ExampleBasedROLComponent.class, + "refexamples"); + componentPrefixMapping.put(GP.class, "gp"); + return componentPrefixMapping; + } + + /** + * convenience method basically every prefix (e.g. "refinement" in + * "refinement.horizontalExpFactor) corresponds to a specific component - + * this way the CLI will automatically support any configuration options + * supported by the component + */ + public static void configureComponent(ComponentManager cm, + Component component, + Map<Class<? extends Component>, String> componentPrefixMapping, + ConfParser parser) { + String prefix = componentPrefixMapping.get(component.getClass()); + if (prefix != null) + configureComponent(cm, component, parser + .getConfOptionsByPrefix(prefix)); + } + + // convenience method - see above method + private static void configureComponent(ComponentManager cm, + Component component, List<ConfFileOption> options) { + if (options != null) + for (ConfFileOption option : options) + applyConfFileOption(cm, component, option); + } + + // applies an option to a component - checks whether the option and its + // value is valid + private static void applyConfFileOption(ComponentManager cm, + Component component, ConfFileOption option) { + // the name of the option is suboption-part (the first part refers + // to its component) + String optionName = option.getSubOption(); + + ConfigOption<?> configOption = cm.getConfigOption(component.getClass(), + optionName); + // check whether such an option exists + if (configOption != null) { + + // catch all invalid config options + try { + + // perform compatibility checks + if (configOption instanceof StringConfigOption + && option.isStringOption()) { + + ConfigEntry<String> entry = new ConfigEntry<String>( + (StringConfigOption) configOption, option + .getStringValue()); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof IntegerConfigOption + && option.isIntegerOption()) { + + ConfigEntry<Integer> entry = new ConfigEntry<Integer>( + (IntegerConfigOption) configOption, option + .getIntValue()); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof DoubleConfigOption + && (option.isIntegerOption() || option.isDoubleOption())) { + + double value; + if (option.isIntegerOption()) + value = option.getIntValue(); + else + value = option.getDoubleValue(); + + ConfigEntry<Double> entry = new ConfigEntry<Double>( + (DoubleConfigOption) configOption, value); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof BooleanConfigOption + && option.isStringOption()) { + + ConfigEntry<Boolean> entry = new ConfigEntry<Boolean>( + (BooleanConfigOption) configOption, Datastructures + .strToBool(option.getStringValue())); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof StringSetConfigOption + && option.isSetOption()) { + + ConfigEntry<Set<String>> entry = new ConfigEntry<Set<String>>( + (StringSetConfigOption) configOption, option + .getSetValues()); + cm.applyConfigEntry(component, entry); + + } else if (configOption instanceof StringTupleListConfigOption + && option.isListOption()) { + + ConfigEntry<List<StringTuple>> entry = new ConfigEntry<List<StringTuple>>( + (StringTupleListConfigOption) configOption, option + .getListTuples()); + cm.applyConfigEntry(component, entry); + + } else { + handleError("The type of conf file entry \"" + + option.getFullName() + + "\" is not correct: value \"" + option.getValue() + + "\" not valid for option type \"" + + configOption.getClass().getName() + "\"."); + } + + } catch (InvalidConfigOptionValueException e) { + e.printStackTrace(); + System.exit(0); + } + + } else + handleError("Unknow option " + option + "."); + } + + /** + * detects all imported files and their format + */ + public static Map<URL, Class<? extends KnowledgeSource>> getImportedFiles( + ConfParser parser, String baseDir) { + List<List<String>> imports = parser.getFunctionCalls().get("import"); + Map<URL, Class<? extends KnowledgeSource>> importedFiles = new HashMap<URL, Class<? extends KnowledgeSource>>(); + + if (imports != null) { + for (List<String> arguments : imports) { + // step 1: detect URL + URL url = null; + try { + String fileString = arguments.get(0); + if (fileString.startsWith("http:")) { + url = new URL(fileString); + } else { + File f = new File(baseDir, arguments.get(0)); + url = f.toURI().toURL(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } + + // step 2: detect format + Class<? extends KnowledgeSource> ksClass; + if (arguments.size() == 1) { + String filename = url.getPath(); + String ending = filename.substring(filename + .lastIndexOf(".") + 1); + + if (ending.equals("rdf") || ending.equals("owl")) + ksClass = OWLFile.class; + else if (ending.equals("nt")) + ksClass = OWLFile.class; + else if (ending.equals("kb")) + ksClass = KBFile.class; + else { + System.err.println("Warning: no format given for " + + arguments.get(0) + + " and could not detect it. Chosing RDF/XML."); + ksClass = OWLFile.class; + } + + importedFiles.put(url, ksClass); + } else { + String formatString = arguments.get(1); + + if (formatString.equals("RDF/XML")) + ksClass = OWLFile.class; + else if (formatString.equals("KB")) + ksClass = KBFile.class; + else if (formatString.equals("SPARQL")) + ksClass = SparqlKnowledgeSource.class; + else if (formatString.equals("NT")) + ksClass = OWLFile.class; + else { + throw new RuntimeException( + "Unsupported knowledge source format " + + formatString + ". Exiting."); + } + + importedFiles.put(url, ksClass); + } + } + } + + return importedFiles; + } + + private static void initComponent(ComponentManager cm, Component component) + throws ComponentInitException { + String startMessage = "initialising component \"" + + cm.getComponentName(component.getClass()) + "\" ... "; + long initStartTime = System.nanoTime(); + component.init(); + // standard messsage is just "OK" but ca... [truncated message content] |
From: <lor...@us...> - 2008-03-29 17:12:11
|
Revision: 734 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=734&view=rev Author: lorenz_b Date: 2008-03-29 10:11:56 -0700 (Sat, 29 Mar 2008) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardModel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ORE_alt.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-03-28 20:22:07 UTC (rev 733) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-03-29 17:11:56 UTC (rev 734) @@ -1,7 +1,9 @@ package org.dllearner.tools.ore; import java.awt.BorderLayout; -import java.awt.Color; +import java.awt.Dimension; +import java.awt.geom.Ellipse2D; +import java.awt.geom.RoundRectangle2D; import javax.swing.DefaultListModel; import javax.swing.JLabel; @@ -10,6 +12,11 @@ import javax.swing.JScrollPane; import javax.swing.event.ListSelectionListener; +import org.jdesktop.swingx.JXBusyLabel; +import org.jdesktop.swingx.icon.EmptyIcon; +import org.jdesktop.swingx.painter.BusyPainter; + + public class ConceptPanel extends JPanel{ @@ -19,18 +26,36 @@ private JPanel contentPanel; private DefaultListModel model; - private BlinkLabel blink; + private JXBusyLabel loadingLabel; + private JLabel statusLabel; public ConceptPanel() { super(); + model = new DefaultListModel(); - blink = new BlinkLabel(); - blink.setText("Loading Concepts"); + loadingLabel = new JXBusyLabel(new Dimension(24,24)); + statusLabel = new JLabel(); + + BusyPainter<?> painter = new BusyPainter( + new RoundRectangle2D.Float(0, 0,10.0f,3.2f,10.0f,10.0f), + new Ellipse2D.Float(3.5f,3.5f,17.0f,17.0f)); + painter.setTrailLength(4); + painter.setPoints(8); + painter.setFrame(-1); + loadingLabel.setPreferredSize(new Dimension(24,24)); + loadingLabel.setIcon(new EmptyIcon(24,24)); + loadingLabel.setBusyPainter(painter); + + + JPanel labelPanel = new JPanel(); + labelPanel.add(statusLabel); + labelPanel.add(loadingLabel); + contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); add(contentPanel,BorderLayout.CENTER); - add(blink, BorderLayout.SOUTH); + add(labelPanel, BorderLayout.SOUTH); } private JPanel getContentPanel() { @@ -66,33 +91,44 @@ return conceptList; } - public BlinkLabel getBlinkLabel(){ - return blink; - } + + public JLabel getStatusLabel() { + return statusLabel; + } + + public JXBusyLabel getLoadingLabel() { + return loadingLabel; + } - class BlinkLabel extends JLabel implements Runnable{ - private boolean blinking = false; - - public void start(){ - blinking = true; - new Thread(this).start(); - } - public void stop(){ - blinking = false; - setText("Done! Select Concept and press 'Next'"); - } - public void run(){ - while(blinking){ - setForeground(Color.red); - try { - Thread.sleep(100); - } catch (InterruptedException e) { - return; - } - setForeground(Color.black); - } - } - } +// class BlinkLabel extends JLabel implements Runnable{ +// private boolean blinking = false; +// +// public void start(){ +// blinking = true; +// new Thread(this).start(); +// } +// public void stop(){ +// blinking = false; +// setForeground(Color.black); +// +// } +// public void run(){ +// while(blinking){ +// setText("Loading Concept"); +// +// //setForeground(Color.red); +// try { +// Thread.sleep(300); +// } catch (InterruptedException e) { +// return; +// } +// setText(""); +// +// } +// if(!blinking) +// setText("Done! Select Concept and press 'Next'"); +// } +// } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java 2008-03-28 20:22:07 UTC (rev 733) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java 2008-03-29 17:11:56 UTC (rev 734) @@ -3,9 +3,11 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import org.dllearner.core.owl.NamedClass; + public class ConceptPanelDescriptor extends WizardPanelDescriptor implements ListSelectionListener{ public static final String IDENTIFIER = "CONCEPT_CHOOSE_PANEL"; @@ -39,7 +41,7 @@ public void valueChanged(ListSelectionEvent e) { setNextButtonAccordingToConceptSelected(); if (!e.getValueIsAdjusting()) - getWizardModel().getOre().setConcept(panel3.getList().getSelectedValue().toString()); + getWizardModel().getOre().setConcept((NamedClass)panel3.getList().getSelectedValue()); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-03-28 20:22:07 UTC (rev 733) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-03-29 17:11:56 UTC (rev 734) @@ -17,13 +17,11 @@ private javax.swing.JButton browseButton; private JPanel contentPanel; - private LeftPanel leftPanel; private JLabel message; public KnowledgeSourcePanel() { -// super(); - leftPanel = new LeftPanel(1); +new LeftPanel(1); contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-28 20:22:07 UTC (rev 733) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-29 17:11:56 UTC (rev 734) @@ -5,7 +5,6 @@ import java.util.SortedSet; import java.util.TreeSet; -import org.dllearner.algorithms.RandomGuesser; import org.dllearner.algorithms.refinement.ROLearner; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; @@ -16,11 +15,10 @@ import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.PosNegDefinitionLP; -import org.dllearner.parser.KBParser; -import org.dllearner.parser.ParseException; -import org.dllearner.reasoning.DIGReasoner; +import org.dllearner.reasoning.OWLAPIReasoner; public class ORE { @@ -31,34 +29,30 @@ private ComponentManager cm; SortedSet<Individual> posExamples; SortedSet<Individual> negExamples; - Description concept; + NamedClass concept; - public ORE(){ - + public ORE() { + cm = ComponentManager.getInstance(); - - + } // step 1: detect knowledge sources - public void setKnowledgeSource(File f){ - + public void setKnowledgeSource(File f) { + Class<OWLFile> owl = OWLFile.class; - - - ks = cm.knowledgeSource(owl); - - cm.applyConfigEntry(ks, "url", f.toURI().toString()); - - try { - ks.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - + ks = cm.knowledgeSource(owl); + + cm.applyConfigEntry(ks, "url", f.toURI().toString()); + + try { + ks.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } @@ -66,7 +60,7 @@ public void detectReasoner(){ ReasonerComponent reasoner = cm.reasoner( - DIGReasoner.class, ks); + OWLAPIReasoner.class, ks); try { reasoner.init(); @@ -97,7 +91,7 @@ } public void setLearningProblem(){ - lp = new PosNegDefinitionLP(rs,posExamples, negExamples); + lp = new PosNegDefinitionLP(rs, posExamples, negExamples); lp.init(); } @@ -111,8 +105,8 @@ //la = new ROLearner(lp, rs); Set<String> t = new TreeSet<String>(); - t.add(concept.toString()); - //cm.applyConfigEntry(la, "ignoredConcepts", t ); + t.add(concept.getName()); + cm.applyConfigEntry(la, "ignoredConcepts", t ); try { la.init(); } catch (ComponentInitException e) { @@ -121,13 +115,12 @@ } } - public void setConcept(String conceptStr){ - try { - concept = KBParser.parseConcept(conceptStr); - } catch (ParseException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } +// public void setConcept(String conceptStr){ +// concept = new NamedClass(conceptStr); +// } + + public void setConcept(NamedClass concept){ + this.concept = concept; } @@ -170,7 +163,7 @@ - test.setConcept("http://example.com/father#father"); + test.setConcept(new NamedClass("http://example.com/father#father")); test.setPosNegExamples(); System.out.println(test.posExamples); System.out.println(test.negExamples); Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ORE_alt.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE_alt.java 2008-03-28 20:22:07 UTC (rev 733) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE_alt.java 2008-03-29 17:11:56 UTC (rev 734) @@ -1,619 +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; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.log4j.ConsoleAppender; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; -import org.apache.log4j.SimpleLayout; -import org.dllearner.algorithms.BruteForceLearner; -import org.dllearner.algorithms.RandomGuesser; -import org.dllearner.algorithms.gp.GP; -import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; -import org.dllearner.algorithms.refinement.ROLearner; -import org.dllearner.cli.ConfFileOption; -import org.dllearner.core.Component; -import org.dllearner.core.ComponentInitException; -import org.dllearner.core.ComponentManager; -import org.dllearner.core.KnowledgeSource; -import org.dllearner.core.LearningAlgorithm; -import org.dllearner.core.ReasonerComponent; -import org.dllearner.core.ReasoningService; -import org.dllearner.core.config.BooleanConfigOption; -import org.dllearner.core.config.ConfigEntry; -import org.dllearner.core.config.ConfigOption; -import org.dllearner.core.config.DoubleConfigOption; -import org.dllearner.core.config.IntegerConfigOption; -import org.dllearner.core.config.InvalidConfigOptionValueException; -import org.dllearner.core.config.StringConfigOption; -import org.dllearner.core.config.StringSetConfigOption; -import org.dllearner.core.config.StringTupleListConfigOption; -import org.dllearner.core.owl.Description; -import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.kb.KBFile; -import org.dllearner.kb.OWLFile; -import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.learningproblems.PosNegDefinitionLP; -import org.dllearner.parser.ConfParser; -import org.dllearner.parser.KBParser; -import org.dllearner.parser.ParseException; -import org.dllearner.parser.TokenMgrError; -import org.dllearner.reasoning.DIGReasoner; -import org.dllearner.reasoning.FastInstanceChecker; -import org.dllearner.reasoning.FastRetrievalReasoner; -import org.dllearner.reasoning.OWLAPIReasoner; -import org.dllearner.utilities.ConceptComparator; -import org.dllearner.utilities.Datastructures; -import org.dllearner.utilities.Helper; -import org.dllearner.utilities.StringTuple; - -/** - * Start class for the ontology repair and enrichment tool. - * - * @author Lorenz Buehmann. - * - */ -public class ORE_alt { - - private static Logger logger = Logger.getRootLogger(); - - private static LearningAlgorithm la; - private ReasoningService rs; - private KnowledgeSource ks; - - /** - * Entry point for CLI interface. - * - * @param args - */ - public static void main(String[] args) throws ComponentInitException { - - File file = new File(args[args.length - 1]); - - // create logger (a simple logger which outputs - // its messages to the console) - SimpleLayout layout = new SimpleLayout(); - ConsoleAppender consoleAppender = new ConsoleAppender(layout); - logger.removeAllAppenders(); - logger.addAppender(consoleAppender); - logger.setLevel(Level.DEBUG); - - ORE_alt ore = null; - ore = new ORE_alt(file); - ore.start(); - } - - public ORE_alt(){ - - } - - public void setKnowledgeSource(File file){ - - } - - /** - * Initialise all components based on conf file. - * - * @param file - * Conf file to read. - * @throws ComponentInitException - */ - public ORE_alt(File file) throws ComponentInitException { - String baseDir = file.getParentFile().getPath(); - - // create component manager instance - String message = "starting component manager ... "; - long cmStartTime = System.nanoTime(); - ComponentManager cm = ComponentManager.getInstance(); - long cmTime = System.nanoTime() - cmStartTime; - message += "OK (" + Helper.prettyPrintNanoSeconds(cmTime) + ")"; - logger.info(message); - - // create a mapping between components and prefixes in the conf file - Map<Class<? extends Component>, String> componentPrefixMapping = createComponentPrefixMapping(); - - // parse conf file - ConfParser parser = ConfParser.parseFile(file); - - // step 1: detect knowledge sources - Set<KnowledgeSource> sources = new HashSet<KnowledgeSource>(); - Map<URL, Class<? extends KnowledgeSource>> importedFiles = getImportedFiles( - parser, baseDir); - for (Map.Entry<URL, Class<? extends KnowledgeSource>> entry : importedFiles - .entrySet()) { - KnowledgeSource ks = cm.knowledgeSource(entry.getValue()); - // apply URL entry (this assumes that every knowledge source has a - // configuration option "url"), so this may need to be changed in - // the - // future - cm.applyConfigEntry(ks, "url", entry.getKey().toString()); - - sources.add(ks); - configureComponent(cm, ks, componentPrefixMapping, parser); - initComponent(cm, ks); - } - - // step 2: detect used reasoner - ConfFileOption reasonerOption = parser.getConfOptionsByName("reasoner"); - ReasonerComponent reasoner = cm.reasoner( - getReasonerClass(reasonerOption), sources); - configureComponent(cm, reasoner, componentPrefixMapping, parser); - initComponent(cm, reasoner); - rs = cm.reasoningService(reasoner); - - } - - public void start() { - processOREMode(rs); - - } - - /** - * creates a mapping from components to option prefix strings - */ - public static Map<Class<? extends Component>, String> createComponentPrefixMapping() { - Map<Class<? extends Component>, String> componentPrefixMapping = new HashMap<Class<? extends Component>, String>(); - // knowledge sources - componentPrefixMapping.put(SparqlKnowledgeSource.class, "sparql"); - // reasoners - componentPrefixMapping.put(DIGReasoner.class, "digReasoner"); - componentPrefixMapping.put(OWLAPIReasoner.class, "owlAPIReasoner"); - // learning problems - configured via + and - flags for examples - componentPrefixMapping.put(PosNegDefinitionLP.class, - "posNegDefinitionLP"); - // learning algorithms - componentPrefixMapping.put(ROLearner.class, "refinement"); - componentPrefixMapping.put(ExampleBasedROLComponent.class, - "refexamples"); - componentPrefixMapping.put(GP.class, "gp"); - return componentPrefixMapping; - } - - /** - * convenience method basically every prefix (e.g. "refinement" in - * "refinement.horizontalExpFactor) corresponds to a specific component - - * this way the CLI will automatically support any configuration options - * supported by the component - */ - public static void configureComponent(ComponentManager cm, - Component component, - Map<Class<? extends Component>, String> componentPrefixMapping, - ConfParser parser) { - String prefix = componentPrefixMapping.get(component.getClass()); - if (prefix != null) - configureComponent(cm, component, parser - .getConfOptionsByPrefix(prefix)); - } - - // convenience method - see above method - private static void configureComponent(ComponentManager cm, - Component component, List<ConfFileOption> options) { - if (options != null) - for (ConfFileOption option : options) - applyConfFileOption(cm, component, option); - } - - // applies an option to a component - checks whether the option and its - // value is valid - private static void applyConfFileOption(ComponentManager cm, - Component component, ConfFileOption option) { - // the name of the option is suboption-part (the first part refers - // to its component) - String optionName = option.getSubOption(); - - ConfigOption<?> configOption = cm.getConfigOption(component.getClass(), - optionName); - // check whether such an option exists - if (configOption != null) { - - // catch all invalid config options - try { - - // perform compatibility checks - if (configOption instanceof StringConfigOption - && option.isStringOption()) { - - ConfigEntry<String> entry = new ConfigEntry<String>( - (StringConfigOption) configOption, option - .getStringValue()); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof IntegerConfigOption - && option.isIntegerOption()) { - - ConfigEntry<Integer> entry = new ConfigEntry<Integer>( - (IntegerConfigOption) configOption, option - .getIntValue()); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof DoubleConfigOption - && (option.isIntegerOption() || option.isDoubleOption())) { - - double value; - if (option.isIntegerOption()) - value = option.getIntValue(); - else - value = option.getDoubleValue(); - - ConfigEntry<Double> entry = new ConfigEntry<Double>( - (DoubleConfigOption) configOption, value); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof BooleanConfigOption - && option.isStringOption()) { - - ConfigEntry<Boolean> entry = new ConfigEntry<Boolean>( - (BooleanConfigOption) configOption, Datastructures - .strToBool(option.getStringValue())); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof StringSetConfigOption - && option.isSetOption()) { - - ConfigEntry<Set<String>> entry = new ConfigEntry<Set<String>>( - (StringSetConfigOption) configOption, option - .getSetValues()); - cm.applyConfigEntry(component, entry); - - } else if (configOption instanceof StringTupleListConfigOption - && option.isListOption()) { - - ConfigEntry<List<StringTuple>> entry = new ConfigEntry<List<StringTuple>>( - (StringTupleListConfigOption) configOption, option - .getListTuples()); - cm.applyConfigEntry(component, entry); - - } else { - handleError("The type of conf file entry \"" - + option.getFullName() - + "\" is not correct: value \"" + option.getValue() - + "\" not valid for option type \"" - + configOption.getClass().getName() + "\"."); - } - - } catch (InvalidConfigOptionValueException e) { - e.printStackTrace(); - System.exit(0); - } - - } else - handleError("Unknow option " + option + "."); - } - - /** - * detects all imported files and their format - */ - public static Map<URL, Class<? extends KnowledgeSource>> getImportedFiles( - ConfParser parser, String baseDir) { - List<List<String>> imports = parser.getFunctionCalls().get("import"); - Map<URL, Class<? extends KnowledgeSource>> importedFiles = new HashMap<URL, Class<? extends KnowledgeSource>>(); - - if (imports != null) { - for (List<String> arguments : imports) { - // step 1: detect URL - URL url = null; - try { - String fileString = arguments.get(0); - if (fileString.startsWith("http:")) { - url = new URL(fileString); - } else { - File f = new File(baseDir, arguments.get(0)); - url = f.toURI().toURL(); - } - } catch (MalformedURLException e) { - e.printStackTrace(); - } - - // step 2: detect format - Class<? extends KnowledgeSource> ksClass; - if (arguments.size() == 1) { - String filename = url.getPath(); - String ending = filename.substring(filename - .lastIndexOf(".") + 1); - - if (ending.equals("rdf") || ending.equals("owl")) - ksClass = OWLFile.class; - else if (ending.equals("nt")) - ksClass = OWLFile.class; - else if (ending.equals("kb")) - ksClass = KBFile.class; - else { - System.err.println("Warning: no format given for " - + arguments.get(0) - + " and could not detect it. Chosing RDF/XML."); - ksClass = OWLFile.class; - } - - importedFiles.put(url, ksClass); - } else { - String formatString = arguments.get(1); - - if (formatString.equals("RDF/XML")) - ksClass = OWLFile.class; - else if (formatString.equals("KB")) - ksClass = KBFile.class; - else if (formatString.equals("SPARQL")) - ksClass = SparqlKnowledgeSource.class; - else if (formatString.equals("NT")) - ksClass = OWLFile.class; - else { - throw new RuntimeException( - "Unsupported knowledge source format " - + formatString + ". Exiting."); - } - - importedFiles.put(url, ksClass); - } - } - } - - return importedFiles; - } - - private static void initComponent(ComponentManager cm, Component component) - throws ComponentInitException { - String startMessage = "initialising component \"" - + cm.getComponentName(component.getClass()) + "\" ... "; - long initStartTime = System.nanoTime(); - component.init(); - // standard messsage is just "OK" but can be more detailed for certain - // components - String message = "OK"; - if (component instanceof KBFile) - message = ((KBFile) component).getURL().toString() + " read"; - else if (component instanceof DIGReasoner) { - DIGReasoner reasoner = (DIGReasoner) component; - message = "using " + reasoner.getIdentifier() - + " connected via DIG 1.1 at " - + reasoner.getReasonerURL().toString(); - } - - long initTime = System.nanoTime() - initStartTime; - logger.info(startMessage + message + " (" - + Helper.prettyPrintNanoSeconds(initTime, false, false) + ")"); - } - - private static void processOREMode(ReasoningService rs) { - System.err.println("Concepts :" + rs.getAtomicConcepts()); - - System.out.println("Individuals " + rs.getIndividuals()); - System.out - .println("Entering ORE mode. Enter a existing concept for learning(new) or q to quit"); - - String conceptStr = ""; - do { - //Step 1: choose existing concept which should be (new) learned - System.out.print("enter concept: "); - // read input string - BufferedReader input = new BufferedReader(new InputStreamReader( - System.in)); - - try { - conceptStr = input.readLine(); - } catch (IOException e) { - e.printStackTrace(); - } - - if (!conceptStr.equals("q")) { - - // parse concept - Description concept = null; - boolean parsedCorrectly = true; - - try { - concept = KBParser.parseConcept(conceptStr); - - } catch (ParseException e1) { - e1.printStackTrace(); - System.err - .println("The concept you entered could not be parsed. Please try again."); - parsedCorrectly = false; - } catch (TokenMgrError e) { - e.printStackTrace(); - System.err - .println("An error occured during parsing. Please enter a syntactically valid concept."); - parsedCorrectly = false; - } - - if (parsedCorrectly) { - - // compute atomic concepts used in concept - SortedSet<NamedClass> occurringConcepts = new TreeSet<NamedClass>( - new ConceptComparator()); - occurringConcepts.addAll(Helper.getAtomicConcepts(concept)); - - // substract existing concepts from detected - // concepts -> the resulting set should be - // empty, otherwise print a warning (the DIG reasoner - // will just treat them as concepts about which it - // has no knowledge - this makes it hard to - // detect typos - // (note that removeAll currently gives a different - // result here, because the comparator of the argument - // is used) - for (NamedClass ac : rs.getAtomicConcepts()) - occurringConcepts.remove(ac); - - boolean nonExistingConstructs = false; - if (occurringConcepts.size() != 0) { - System.out - .println("You used non-existing atomic concepts or roles. Please correct your query."); - if (occurringConcepts.size() > 0) - - System.out.println("non-existing concepts: " - + occurringConcepts); - - nonExistingConstructs = true; - } - - if (!nonExistingConstructs) { - - // Step 2_1: choose all individuals of the concept as positive examples - SortedSet<Individual> posExamples = null; - posExamples = rs.retrieval(concept); - posExamples.removeAll(posExamples); - posExamples.add(new Individual( - "http://example.com/father#stefan")); - posExamples.add(new Individual( - "http://example.com/father#markus")); - posExamples.add(new Individual( - "http://example.com/father#martin")); - - //Step 2_2: subtract positive examples from all individuals of the ontology - //->negative examples of the concepts - SortedSet<Individual> negExamples = null; - negExamples = rs.getIndividuals(); - for (Individual rem_pos : posExamples) - negExamples.remove(rem_pos); - System.out.println("+" + posExamples); - System.out.println("-" + negExamples); - - //Step 3: Start learning-algorithm - - // step 3_1: set learning problem - ComponentManager cm = ComponentManager.getInstance(); - - PosNegDefinitionLP lp = new PosNegDefinitionLP(rs, - posExamples, negExamples); - - try { - initComponent(cm, lp); - } catch (ComponentInitException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - - // step 3_2: set learning algorithm - - la = new ROLearner(lp, rs); - - try { - initComponent(cm, la); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - Thread laThread = new Thread() - { - @Override - public void run(){ - la.start(); - } - }; - laThread.start(); - - - System.out.println(la.getBestSolutions(5)); - - //Step 4: Knowledge Engineer chooses one of the suggestions - - //Step 5: Enrichment - - //Step 6: Repair:-check which individuals cause inconsistency - // -problem solving - - } - } - } - - } while (!conceptStr.equals("q")); - - } - - /** - * error handling over the logger - * - * @param message - * is a string and you message for problem - */ - public static void handleError(String message) { - logger.error(message); - System.exit(0); - } - - public ReasoningService getReasoningService() { - return rs; - } - - // edit by Tilo Hielscher - - /** - * Set Reasoner class. Define here all possible reasoners. - * - * @param reasonerOption - * from config file - * @return reasonerClass reasoner class - */ - public static Class<? extends ReasonerComponent> getReasonerClass( - ConfFileOption reasonerOption) { - Class<? extends ReasonerComponent> reasonerClass = null; - if (reasonerOption == null - || reasonerOption.getStringValue().equals("dig")) - reasonerClass = DIGReasoner.class; - else if (reasonerOption.getStringValue().equals("owlAPI")) - reasonerClass = OWLAPIReasoner.class; - else if (reasonerOption.getStringValue().equals("fastRetrieval")) - reasonerClass = FastRetrievalReasoner.class; - else if (reasonerOption.getStringValue().equals("fastInstanceChecker")) - reasonerClass = FastInstanceChecker.class; - else { - handleError("Unknown value " + reasonerOption.getStringValue() - + " for option \"reasoner\"."); - } - return reasonerClass; - } - - public static Class<? extends LearningAlgorithm> getLearningAlgorithm( - ConfFileOption algorithmOption) { - Class<? extends LearningAlgorithm> laClass = null; - if (algorithmOption == null - || algorithmOption.getStringValue().equals("refinement")) - laClass = ROLearner.class; - else if (algorithmOption.getStringValue().equals("refexamples")) - laClass = ExampleBasedROLComponent.class; - else if (algorithmOption.getStringValue().equals("gp")) - laClass = GP.class; - else if (algorithmOption.getStringValue().equals("bruteForce")) - laClass = BruteForceLearner.class; - else if (algorithmOption.getStringValue().equals("randomGuesser")) - laClass = RandomGuesser.class; - else - handleError("Unknown value in " + algorithmOption); - - return laClass; - } - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java 2008-03-28 20:22:07 UTC (rev 733) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java 2008-03-29 17:11:56 UTC (rev 734) @@ -174,9 +174,9 @@ wizardDialog.setModal(true); //wizardDialog.pack(); - - wizardDialog.show(); + wizardDialog.setVisible(true); + return returnCode; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-03-28 20:22:07 UTC (rev 733) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-03-29 17:11:56 UTC (rev 734) @@ -65,10 +65,11 @@ Object nextPanelDescriptor = descriptor.getNextPanelDescriptor(); //TODO nochmal \xFCberdenken - if(nextPanelDescriptor.equals("CONCEPT_CHOOSE_PANEL")) + if(nextPanelDescriptor.equals("CONCEPT_CHOOSE_PANEL")){ + //((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel3.getModel().clear(); new ConceptRetriever(nextPanelDescriptor).execute(); + } - if (nextPanelDescriptor instanceof WizardPanelDescriptor.FinishIdentifier) { wizard.close(Wizard.FINISH_RETURN_CODE); } else { @@ -169,22 +170,23 @@ nextPanelID = nextPanelDescriptor; } - @Override - public Set<NamedClass> doInBackground() - { - ((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelID)).panel3.getBlinkLabel().start(); - System.out.println("test1"); - wizard.getModel().getOre().detectReasoner(); - System.out.println("test2"); - Set<NamedClass> ind = wizard.getModel().getOre().getReasoningService().getAtomicConcepts(); - System.out.println("test3"); - - System.out.println("test4"); - - - return ind; - } + public Set<NamedClass> doInBackground() { + + ((ConceptPanelDescriptor) wizard.getModel().getPanelHashMap().get( + nextPanelID)).panel3.getStatusLabel().setText( + "Loading concepts"); + ((ConceptPanelDescriptor) wizard.getModel().getPanelHashMap().get( + nextPanelID)).panel3.getLoadingLabel().setBusy(true); + + wizard.getModel().getOre().detectReasoner(); + + Set<NamedClass> ind = wizard.getModel().getOre() + .getReasoningService().getAtomicConcepts(); + + return ind; + } + public void done(){ Set<NamedClass> ind = null; try { @@ -202,10 +204,13 @@ for (NamedClass cl : ind){ dm.addElement(cl); //nextPanel.panel3.getModel().addElement(cl); - System.out.println(cl.toString()); + System.out.println(cl.getName()); } nextPanel.panel3.getList().setModel(dm); - ((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelID)).panel3.getBlinkLabel().stop(); + ((ConceptPanelDescriptor) wizard.getModel().getPanelHashMap().get( + nextPanelID)).panel3.getStatusLabel().setText( + "Concepts loaded"); + ((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelID)).panel3.getLoadingLabel().setBusy(false); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardModel.java 2008-03-28 20:22:07 UTC (rev 733) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardModel.java 2008-03-29 17:11:56 UTC (rev 734) @@ -51,10 +51,10 @@ private WizardPanelDescriptor currentPanel; - private HashMap panelHashmap; + private HashMap<Object, WizardPanelDescriptor> panelHashmap; - private HashMap buttonTextHashmap; - private HashMap buttonEnabledHashmap; + private HashMap<String, Object> buttonTextHashmap; + private HashMap<String, Boolean> buttonEnabledHashmap; private PropertyChangeSupport propertyChangeSupport; @@ -65,10 +65,10 @@ */ public WizardModel() { - panelHashmap = new HashMap(); + panelHashmap = new HashMap<Object, WizardPanelDescriptor>(); - buttonTextHashmap = new HashMap(); - buttonEnabledHashmap = new HashMap(); + buttonTextHashmap = new HashMap<String, Object>(); + buttonEnabledHashmap = new HashMap<String, Boolean>(); propertyChangeSupport = new PropertyChangeSupport(this); ore = new ORE(); @@ -107,8 +107,7 @@ // First, get the hashtable reference to the panel that should // be displayed. - WizardPanelDescriptor nextPanel = - (WizardPanelDescriptor)panelHashmap.get(id); + WizardPanelDescriptor nextPanel = panelHashmap.get(id); // If we couldn't find the panel that should be displayed, return // false. @@ -168,7 +167,7 @@ Boolean getBackButtonEnabled() { - return (Boolean)buttonEnabledHashmap.get(BACK_BUTTON_ENABLED_PROPERTY); + return buttonEnabledHashmap.get(BACK_BUTTON_ENABLED_PROPERTY); } void setBackButtonEnabled(Boolean newValue) { @@ -181,7 +180,7 @@ } Boolean getNextFinishButtonEnabled() { - return (Boolean)buttonEnabledHashmap.get(NEXT_FINISH_BUTTON_ENABLED_PROPERTY); + return buttonEnabledHashmap.get(NEXT_FINISH_BUTTON_ENABLED_PROPERTY); } void setNextFinishButtonEnabled(Boolean newValue) { @@ -194,7 +193,7 @@ } Boolean getCancelButtonEnabled() { - return (Boolean)buttonEnabledHashmap.get(CANCEL_BUTTON_ENABLED_PROPERTY); + return buttonEnabledHashmap.get(CANCEL_BUTTON_ENABLED_PROPERTY); } void setCancelButtonEnabled(Boolean newValue) { @@ -228,7 +227,7 @@ this.ore = ore; } - public HashMap getPanelHashMap(){ + public HashMap<Object, WizardPanelDescriptor> getPanelHashMap(){ return panelHashmap; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java 2008-03-28 20:22:07 UTC (rev 733) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardPanelNotFoundException.java 2008-03-29 17:11:56 UTC (rev 734) @@ -1,7 +1,6 @@ package org.dllearner.tools.ore; -import java.io.*; public class WizardPanelNotFoundException extends RuntimeException { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-03-29 20:37:57
|
Revision: 736 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=736&view=rev Author: lorenz_b Date: 2008-03-29 13:37:54 -0700 (Sat, 29 Mar 2008) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-03-29 17:13:15 UTC (rev 735) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-03-29 20:37:54 UTC (rev 736) @@ -65,9 +65,8 @@ conceptList = new JList(model); - scroll.setSize(100,100); + scroll.setPreferredSize(new Dimension(200,200)); scroll.setViewportView(conceptList); - contentPanel1.add(scroll); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-03-29 17:13:15 UTC (rev 735) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-03-29 20:37:54 UTC (rev 736) @@ -20,17 +20,26 @@ private DefaultListModel model; private JLabel result; - private JButton run; + private JButton startButton; + private JButton stopButton; public LearningPanel() { super(); model = new DefaultListModel(); result = new JLabel(); - run = new JButton("Run"); + JPanel buttonPanel = new JPanel(); + startButton = new JButton("Start"); + + stopButton = new JButton("Stop"); + stopButton.setEnabled(false); + + buttonPanel.add(startButton); + buttonPanel.add(stopButton); contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); - add(run,BorderLayout.EAST); + + add(buttonPanel, BorderLayout.EAST); add(contentPanel,BorderLayout.CENTER); add(result, BorderLayout.SOUTH); } @@ -52,13 +61,25 @@ return contentPanel1; } - public void addButtonListener(ActionListener a){ - run.addActionListener(a); + public void addStartButtonListener(ActionListener a){ + startButton.addActionListener(a); } + public void addStopButtonListener(ActionListener a){ + stopButton.addActionListener(a); + } + public void setResult(String resultStr){ result.setText(resultStr); } + + public JButton getStartButton() { + return startButton; + } + + public JButton getStopButton() { + return stopButton; + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-03-29 17:13:15 UTC (rev 735) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-03-29 20:37:54 UTC (rev 736) @@ -2,6 +2,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.Timer; +import java.util.TimerTask; import java.util.concurrent.ExecutionException; import javax.swing.SwingWorker; @@ -16,12 +18,15 @@ public static final String IDENTIFIER = "LEARNING_PANEL"; LearningPanel panel4; + ResultSwingWorker worker; + Timer timer; public LearningPanelDescriptor() { panel4 = new LearningPanel(); - panel4.addButtonListener(this); - + panel4.addStartButtonListener(this); + panel4.addStopButtonListener(this); + setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(panel4); @@ -40,43 +45,64 @@ } - class Result extends SwingWorker<Description, Void> + class ResultSwingWorker extends SwingWorker<Description, Description> { @Override - public Description doInBackground() - { - getWizardModel().getOre().start(); - Description result = getWizardModel().getOre().getLearningResult(); - - - return result; - } + public Description doInBackground() { + + getWizardModel().getOre().start(); + timer = new Timer(); + timer.schedule(new TimerTask(){ + + public void run() { + System.err.println(getWizardModel().getOre() + .getLearningResults(3)); + } + + }, 0, 1000); - public void done(){ - Description result=null; - try { - result = get(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ExecutionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + + Description result = getWizardModel().getOre().getLearningResult(); + + return result; } - panel4.setResult(result.toString()); - } + public void done() { + timer.cancel(); + Description result = null; + try { + result = get(); + } catch (InterruptedException e) { + + e.printStackTrace(); + } catch (ExecutionException e) { + + e.printStackTrace(); + } + panel4.getStartButton().setEnabled(true); + panel4.getStopButton().setEnabled(false); + + panel4.setResult(result.toString()); + } + } - - - - - @Override - public void actionPerformed(ActionEvent arg0) { - new Result().execute(); + public void actionPerformed(ActionEvent event) { + if(event.getActionCommand().equals("Start")){ + panel4.getStartButton().setEnabled(false); + panel4.getStopButton().setEnabled(true); + worker = new ResultSwingWorker(); + worker.execute(); + } + else{ + panel4.getStopButton().setEnabled(false); + worker.cancel(true); + panel4.getStartButton().setEnabled(true); + } + + }} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-29 17:13:15 UTC (rev 735) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-29 20:37:54 UTC (rev 736) @@ -20,6 +20,8 @@ import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.reasoning.OWLAPIReasoner; +import java.util.List; + public class ORE { private LearningAlgorithm la; @@ -125,15 +127,11 @@ public void startLearningThread(){ - Thread laThread = new Thread() - { - @Override - public void run(){ + + la.start(); - } - }; - laThread.start(); + } public void start(){ @@ -147,6 +145,10 @@ public Description getLearningResult(){ return la.getBestSolution(); } + + public List<Description> getLearningResults(int anzahl){ + return la.getBestSolutions(anzahl); + } public static void main(String[] args){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-03-29 17:13:15 UTC (rev 735) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-03-29 20:37:54 UTC (rev 736) @@ -66,7 +66,7 @@ //TODO nochmal \xFCberdenken if(nextPanelDescriptor.equals("CONCEPT_CHOOSE_PANEL")){ - //((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel3.getModel().clear(); + ((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel3.getModel().clear(); new ConceptRetriever(nextPanelDescriptor).execute(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-03-29 21:05:35
|
Revision: 737 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=737&view=rev Author: lorenz_b Date: 2008-03-29 14:05:25 -0700 (Sat, 29 Mar 2008) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-03-29 20:37:54 UTC (rev 736) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-03-29 21:05:25 UTC (rev 737) @@ -1,6 +1,7 @@ package org.dllearner.tools.ore; import java.awt.BorderLayout; +import java.awt.Dimension; import java.awt.event.ActionListener; import javax.swing.DefaultListModel; @@ -51,7 +52,7 @@ conceptList = new JList(model); - scroll.setSize(100,100); + scroll.setPreferredSize(new Dimension(300, 300)); scroll.setViewportView(conceptList); contentPanel1.add(scroll); @@ -80,6 +81,10 @@ public JButton getStopButton() { return stopButton; } + + public DefaultListModel getModel() { + return model; + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-03-29 20:37:54 UTC (rev 736) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-03-29 21:05:25 UTC (rev 737) @@ -2,12 +2,14 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.List; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ExecutionException; import javax.swing.SwingWorker; +import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.owl.Description; @@ -45,50 +47,64 @@ } - class ResultSwingWorker extends SwingWorker<Description, Description> - { - @Override - public Description doInBackground() { - - getWizardModel().getOre().start(); + class ResultSwingWorker extends + SwingWorker<List<Description>, List<Description>> { + LearningAlgorithm la; + + @Override + public List<Description> doInBackground() { + + la = getWizardModel().getOre().start(); timer = new Timer(); - timer.schedule(new TimerTask(){ + timer.schedule(new TimerTask() { public void run() { - System.err.println(getWizardModel().getOre() - .getLearningResults(3)); + publish(getWizardModel().getOre().getLearningResults(5)); } - + }, 0, 1000); - - - Description result = getWizardModel().getOre().getLearningResult(); + List<Description> result = getWizardModel().getOre() + .getLearningResults(5); + return result; } - - public void done() { - timer.cancel(); - Description result = null; + + public void done() { + timer.cancel(); + List<Description> result = null; try { result = get(); } catch (InterruptedException e) { - + e.printStackTrace(); } catch (ExecutionException e) { - + e.printStackTrace(); } panel4.getStartButton().setEnabled(true); panel4.getStopButton().setEnabled(false); - panel4.setResult(result.toString()); + for (Description d : result) + panel4.getModel().addElement(d); + } - - - - } + @Override + protected void process(List<List<Description>> resultLists) { + panel4.getModel().clear(); + for (List<Description> list : resultLists) { + for (Description d : list) + panel4.getModel().addElement(d); + } + } + + public LearningAlgorithm getLa() { + return la; + } + + } + public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ @@ -99,7 +115,7 @@ } else{ panel4.getStopButton().setEnabled(false); - worker.cancel(true); + worker.getLa().stop(); panel4.getStartButton().setEnabled(true); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-29 20:37:54 UTC (rev 736) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-03-29 21:05:25 UTC (rev 737) @@ -126,20 +126,14 @@ } - public void startLearningThread(){ - - - la.start(); - - - } - - public void start(){ + public LearningAlgorithm start(){ this.setPosNegExamples(); this.setLearningProblem(); this.setLearningAlgorithm(); la.start(); - this.startLearningThread(); + + return la; + } public Description getLearningResult(){ @@ -171,7 +165,7 @@ System.out.println(test.negExamples); test.setLearningProblem(); test.setLearningAlgorithm(); - test.startLearningThread(); + test.start(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-03-30 11:19:05
|
Revision: 738 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=738&view=rev Author: lorenz_b Date: 2008-03-30 04:19:02 -0700 (Sun, 30 Mar 2008) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-03-29 21:05:25 UTC (rev 737) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-03-30 11:19:02 UTC (rev 738) @@ -15,7 +15,7 @@ - private javax.swing.JList conceptList; + private javax.swing.JList resultList; private JPanel contentPanel; @@ -51,9 +51,9 @@ JScrollPane scroll = new JScrollPane(); - conceptList = new JList(model); + resultList = new JList(model); scroll.setPreferredSize(new Dimension(300, 300)); - scroll.setViewportView(conceptList); + scroll.setViewportView(resultList); contentPanel1.add(scroll); @@ -85,6 +85,10 @@ public DefaultListModel getModel() { return model; } + + public javax.swing.JList getResultList() { + return resultList; + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-03-29 21:05:25 UTC (rev 737) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-03-30 11:19:02 UTC (rev 738) @@ -7,6 +7,7 @@ import java.util.TimerTask; import java.util.concurrent.ExecutionException; +import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import org.dllearner.core.LearningAlgorithm; @@ -42,10 +43,7 @@ return ConceptPanelDescriptor.IDENTIFIER; } - - public void displayingPanel(){ - - } + class ResultSwingWorker extends SwingWorker<List<Description>, List<Description>> { @@ -76,29 +74,42 @@ try { result = get(); } catch (InterruptedException e) { - e.printStackTrace(); } catch (ExecutionException e) { - e.printStackTrace(); } panel4.getStartButton().setEnabled(true); panel4.getStopButton().setEnabled(false); + updateList(result); - for (Description d : result) - panel4.getModel().addElement(d); - } @Override protected void process(List<List<Description>> resultLists) { panel4.getModel().clear(); for (List<Description> list : resultLists) { - for (Description d : list) - panel4.getModel().addElement(d); + for( Description d : list) + System.out.println(d); + updateList(list); } } + + void updateList(final List<Description> result) { + Runnable doUpdateList = new Runnable() { + @Override + public void run() { + panel4.getModel().clear(); + for (Description d : result) { + panel4.getModel().addElement(d); + } + + } + }; + SwingUtilities.invokeLater(doUpdateList); + + } + public LearningAlgorithm getLa() { return la; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-04-10 06:42:35
|
Revision: 781 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=781&view=rev Author: lorenz_b Date: 2008-04-09 23:42:27 -0700 (Wed, 09 Apr 2008) Log Message: ----------- added ListRenderers added method getCorrectness to ORE to get Correctness of learned Concept added correctness in view of JList in LearningPanel Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/Main.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-04-10 06:42:27 UTC (rev 781) @@ -0,0 +1,42 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; +import java.awt.Component; + +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +public class ColorListCellRenderer extends JLabel implements ListCellRenderer { + + public ColorListCellRenderer() { + setOpaque(true); + } + + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + setText(value.toString()); + Color background; + Color foreground; + + if (index % 2 == 0 && !isSelected) { + background = new Color(242, 242, 242); + foreground = Color.BLACK; + + } else if(isSelected){ + + background = Color.BLUE; + foreground = Color.WHITE; + }else{ + background = Color.WHITE; + foreground = Color.BLACK; + } + + setForeground(foreground); + setBackground(background); + + return this; + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-04-10 06:42:27 UTC (rev 781) @@ -0,0 +1,60 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; + +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.ListCellRenderer; + +import org.dllearner.core.owl.Description; + +public class ColumnListCellRenderer extends JPanel implements ListCellRenderer { + + private ORE ore; + + + public ColumnListCellRenderer(ORE ore) { + this.ore = ore; + setOpaque(true); + } + + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + removeAll(); + JLabel cor = new JLabel(); + JLabel desc = new JLabel(); + setLayout(new BorderLayout()); + + + desc.setText(value.toString()); + cor.setText( (ore.getCorrectness((Description)value)).toString()); + + add(cor, BorderLayout.WEST); + add(desc, BorderLayout.EAST); + + Color background; + Color foreground; + + if (index % 2 == 0 && !isSelected) { + background = new Color(242, 242, 242); + foreground = Color.BLACK; + + } else if(isSelected){ + + background = Color.BLUE; + foreground = Color.WHITE; + }else{ + background = Color.WHITE; + foreground = Color.BLACK; + } + + setForeground(foreground); + setBackground(background); + + return this; + } + +} \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-04-10 06:42:27 UTC (rev 781) @@ -29,29 +29,33 @@ private JXBusyLabel loadingLabel; private JLabel statusLabel; + @SuppressWarnings("unchecked") public ConceptPanel() { super(); model = new DefaultListModel(); - loadingLabel = new JXBusyLabel(new Dimension(24,24)); + loadingLabel = new JXBusyLabel(new Dimension(15,15)); statusLabel = new JLabel(); - BusyPainter<?> painter = new BusyPainter( - new RoundRectangle2D.Float(0, 0,10.0f,3.2f,10.0f,10.0f), - new Ellipse2D.Float(3.5f,3.5f,17.0f,17.0f)); - painter.setTrailLength(4); - painter.setPoints(8); + + BusyPainter painter = new BusyPainter( + new RoundRectangle2D.Float(0, 0,6.0f,2.6f,10.0f,10.0f), + new Ellipse2D.Float(2.0f,2.0f,11.0f,11.0f)); + painter.setTrailLength(2); + painter.setPoints(7); painter.setFrame(-1); - loadingLabel.setPreferredSize(new Dimension(24,24)); - loadingLabel.setIcon(new EmptyIcon(24,24)); + loadingLabel.setPreferredSize(new Dimension(15,15)); + loadingLabel.setIcon(new EmptyIcon(15,15)); loadingLabel.setBusyPainter(painter); - + + JPanel labelPanel = new JPanel(); + labelPanel.add(loadingLabel); labelPanel.add(statusLabel); - labelPanel.add(loadingLabel); + contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); add(contentPanel,BorderLayout.CENTER); @@ -65,7 +69,8 @@ conceptList = new JList(model); - scroll.setPreferredSize(new Dimension(200,200)); + conceptList.setCellRenderer(new ColorListCellRenderer()); + scroll.setPreferredSize(new Dimension(400,400)); scroll.setViewportView(conceptList); contentPanel1.add(scroll); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java 2008-04-10 06:42:27 UTC (rev 781) @@ -24,15 +24,18 @@ } - public Object getNextPanelDescriptor() { + @Override + public Object getNextPanelDescriptor() { return LearningPanelDescriptor.IDENTIFIER; } - public Object getBackPanelDescriptor() { + @Override + public Object getBackPanelDescriptor() { return KnowledgeSourcePanelDescriptor.IDENTIFIER; } - public void aboutToDisplayPanel() { + @Override + public void aboutToDisplayPanel() { setNextButtonAccordingToConceptSelected(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/IntroductionPanelDescriptor.java 2008-04-10 06:42:27 UTC (rev 781) @@ -10,11 +10,13 @@ super(IDENTIFIER, new IntroductionPanel()); } - public Object getNextPanelDescriptor() { + @Override + public Object getNextPanelDescriptor() { return KnowledgeSourcePanelDescriptor.IDENTIFIER; } - public Object getBackPanelDescriptor() { + @Override + public Object getBackPanelDescriptor() { return null; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanel.java 2008-04-10 06:42:27 UTC (rev 781) @@ -21,7 +21,7 @@ public KnowledgeSourcePanel() { -new LeftPanel(1); + new LeftPanel(1); contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); @@ -72,11 +72,13 @@ filechooser.setCurrentDirectory(new File(fileURL.getText())); filechooser.addChoosableFileFilter(new FileFilter() { - public boolean accept(File f) { + @Override + public boolean accept(File f) { if (f.isDirectory()) return true; return f.getName().toLowerCase().endsWith(".owl"); } - public String getDescription () { return "OWLs"; } + @Override + public String getDescription () { return "OWLs"; } }); int status = filechooser.showOpenDialog( null ); @@ -119,7 +121,10 @@ public File getOWLFile() { return new File(fileURL.getText()); } - + public void setFileURL(String fileURL){ + this.fileURL.setText(fileURL); + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2008-04-10 06:42:27 UTC (rev 781) @@ -15,7 +15,7 @@ public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; - KnowledgeSourcePanel panel2; + private KnowledgeSourcePanel panel2; public KnowledgeSourcePanelDescriptor() { @@ -28,16 +28,19 @@ } - public Object getNextPanelDescriptor() { + @Override + public Object getNextPanelDescriptor() { return ConceptPanelDescriptor.IDENTIFIER; } - public Object getBackPanelDescriptor() { + @Override + public Object getBackPanelDescriptor() { return IntroductionPanelDescriptor.IDENTIFIER; } - public void aboutToDisplayPanel() { + @Override + public void aboutToDisplayPanel() { setNextButtonAccordingToExistingOWLFile(); } @@ -108,6 +111,9 @@ } +public KnowledgeSourcePanel getPanel() { + return panel2; +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-04-10 06:42:27 UTC (rev 781) @@ -3,6 +3,8 @@ import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionListener; +import java.awt.geom.Ellipse2D; +import java.awt.geom.RoundRectangle2D; import javax.swing.DefaultListModel; import javax.swing.JButton; @@ -10,39 +12,73 @@ import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; +import javax.swing.table.DefaultTableModel; +import org.jdesktop.swingx.JXBusyLabel; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; +import org.jdesktop.swingx.icon.EmptyIcon; +import org.jdesktop.swingx.painter.BusyPainter; + public class LearningPanel extends JPanel{ - + private JPanel contentPanel; + private javax.swing.JList resultList; + private DefaultListModel model; - private JPanel contentPanel; + private JXTable resultTable; + private DefaultTableModel model1; - private DefaultListModel model; - private JLabel result; + private JLabel statusLabel; + private JXBusyLabel loadingLabel; + private JButton startButton; private JButton stopButton; + @SuppressWarnings("unchecked") public LearningPanel() { super(); model = new DefaultListModel(); - result = new JLabel(); + + model1 = new DefaultTableModel(); + model1.addColumn("Description"); + model1.addColumn("Correctness"); + + JPanel buttonPanel = new JPanel(); startButton = new JButton("Start"); - stopButton = new JButton("Stop"); stopButton.setEnabled(false); - buttonPanel.add(startButton); buttonPanel.add(stopButton); + + + JPanel labelPanel = new JPanel(); + statusLabel = new JLabel(); + + loadingLabel = new JXBusyLabel(new Dimension(15,15)); + BusyPainter painter = new BusyPainter( + new RoundRectangle2D.Float(0, 0,6.0f,2.6f,10.0f,10.0f), + new Ellipse2D.Float(2.0f,2.0f,11.0f,11.0f)); + painter.setTrailLength(2); + painter.setPoints(7); + painter.setFrame(-1); + loadingLabel.setPreferredSize(new Dimension(15,15)); + loadingLabel.setIcon(new EmptyIcon(15,15)); + loadingLabel.setBusyPainter(painter); + labelPanel.add(loadingLabel); + labelPanel.add(statusLabel); + contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); add(buttonPanel, BorderLayout.EAST); add(contentPanel,BorderLayout.CENTER); - add(result, BorderLayout.SOUTH); + add(labelPanel, BorderLayout.SOUTH); } private JPanel getContentPanel() { @@ -50,9 +86,16 @@ JPanel contentPanel1 = new JPanel(); JScrollPane scroll = new JScrollPane(); - + resultTable = new JXTable(model1 ); + + resultTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + resultTable.setHighlighters(HighlighterFactory.createSimpleStriping()); + + resultList = new JList(model); - scroll.setPreferredSize(new Dimension(300, 300)); +// resultList.setCellRenderer(new ColumnListCellRenderer()); + scroll.setPreferredSize(new Dimension(400, 400)); + scroll.setViewportView(resultList); contentPanel1.add(scroll); @@ -70,10 +113,14 @@ stopButton.addActionListener(a); } - public void setResult(String resultStr){ - result.setText(resultStr); + public JLabel getStatusLabel() { + return statusLabel; } + public JXBusyLabel getLoadingLabel() { + return loadingLabel; + } + public JButton getStartButton() { return startButton; } @@ -85,6 +132,10 @@ public DefaultListModel getModel() { return model; } + +// public DefaultTableModel getModel() { +// return model1; +// } public javax.swing.JList getResultList() { return resultList; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-04-10 06:42:27 UTC (rev 781) @@ -5,6 +5,7 @@ import java.util.List; import java.util.Timer; import java.util.TimerTask; +import java.util.Vector; import java.util.concurrent.ExecutionException; import javax.swing.SwingUtilities; @@ -32,14 +33,17 @@ setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(panel4); + } - public Object getNextPanelDescriptor() { + @Override + public Object getNextPanelDescriptor() { return LearningPanelDescriptor.IDENTIFIER; } - public Object getBackPanelDescriptor() { + @Override + public Object getBackPanelDescriptor() { return ConceptPanelDescriptor.IDENTIFIER; } @@ -51,11 +55,15 @@ @Override public List<Description> doInBackground() { - + panel4.getResultList().setCellRenderer(new ColumnListCellRenderer(getWizardModel().getOre())); + panel4.getLoadingLabel().setBusy(true); + panel4.getStatusLabel().setText("Learning"); la = getWizardModel().getOre().start(); timer = new Timer(); timer.schedule(new TimerTask() { + @SuppressWarnings("unchecked") + @Override public void run() { publish(getWizardModel().getOre().getLearningResults(5)); } @@ -68,7 +76,10 @@ return result; } + @Override public void done() { + + timer.cancel(); List<Description> result = null; try { @@ -78,10 +89,12 @@ } catch (ExecutionException e) { e.printStackTrace(); } + panel4.getStartButton().setEnabled(true); panel4.getStopButton().setEnabled(false); updateList(result); - + panel4.getLoadingLabel().setBusy(false); + panel4.getStatusLabel().setText("Algorithm terminated successfully."); } @Override @@ -100,6 +113,8 @@ public void run() { panel4.getModel().clear(); for (Description d : result) { + System.err.println(d+"=="+getWizardModel().getOre().getCorrectness(d)); + panel4.getModel().addElement(d); } @@ -108,6 +123,37 @@ SwingUtilities.invokeLater(doUpdateList); } + +// void updateList(final List<Description> result) { +// Runnable doUpdateList = new Runnable() { +// +// public void run() { +// +// +// int i = panel4.getModel().getRowCount(); +// if(!(i == 0)) +// for(int j = panel4.getModel().getRowCount(); j >= 0 ; j--){ +// System.out.println(panel4.getModel().getRowCount()); +// panel4.getModel().removeRow(j); +// } +// +// +// +// +// for (Description d : result) { +// Object[] rowData = new Object[2]; +// rowData[0] = d; +// rowData[1] = getWizardModel().getOre().getCorrectness(d); +// System.err.println(d+"=="+rowData[1]); +// +// panel4.getModel().addRow(rowData ); +// } +// +// } +// }; +// SwingUtilities.invokeLater(doUpdateList); +// +// } public LearningAlgorithm getLa() { return la; @@ -126,7 +172,8 @@ else{ panel4.getStopButton().setEnabled(false); worker.getLa().stop(); - panel4.getStartButton().setEnabled(true); + panel4.getStartButton().setEnabled(true); + panel4.getStatusLabel().setText("Algorithm aborted"); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Main.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-04-10 06:42:27 UTC (rev 781) @@ -26,7 +26,7 @@ } Wizard wizard = new Wizard(); wizard.getDialog().setTitle("DL-Learner ORE-Tool"); - wizard.getDialog().setSize(700, 400); + wizard.getDialog().setSize(800, 500); WizardPanelDescriptor descriptor1 = new IntroductionPanelDescriptor(); wizard.registerWizardPanel(IntroductionPanelDescriptor.IDENTIFIER, descriptor1); @@ -40,9 +40,17 @@ WizardPanelDescriptor descriptor4 = new LearningPanelDescriptor(); wizard.registerWizardPanel(LearningPanelDescriptor.IDENTIFIER, descriptor4); - wizard.setCurrentPanel(IntroductionPanelDescriptor.IDENTIFIER); - + if ( !(args.length == 1)){ + wizard.setCurrentPanel(IntroductionPanelDescriptor.IDENTIFIER); + }else{ + ((KnowledgeSourcePanelDescriptor)descriptor2).getPanel().setFileURL(args[0]); + wizard.setCurrentPanel(KnowledgeSourcePanelDescriptor.IDENTIFIER); + + } + + int ret = wizard.showModalDialog(); + System.out.println("Dialog return code is (0=Finish,1=Cancel,2=Error): " + ret); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-04-10 06:42:27 UTC (rev 781) @@ -1,6 +1,8 @@ package org.dllearner.tools.ore; import java.io.File; +import java.math.BigDecimal; +import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -20,8 +22,6 @@ import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.reasoning.OWLAPIReasoner; -import java.util.List; - public class ORE { private LearningAlgorithm la; @@ -63,7 +63,6 @@ ReasonerComponent reasoner = cm.reasoner( OWLAPIReasoner.class, ks); - try { reasoner.init(); } catch (ComponentInitException e) { @@ -117,9 +116,6 @@ } } -// public void setConcept(String conceptStr){ -// concept = new NamedClass(conceptStr); -// } public void setConcept(NamedClass concept){ this.concept = concept; @@ -143,8 +139,38 @@ public List<Description> getLearningResults(int anzahl){ return la.getBestSolutions(anzahl); } + + public BigDecimal getCorrectness(Description d){ + int numberPosExamples = 0; + int numberNegExamples = 0; + double result_tmp = 0.0f; + + for(Individual ind : posExamples){ + rs.instanceCheck(d, ind); + if(rs.instanceCheck(d, ind)) + numberPosExamples++; + } + for(Individual ind : negExamples){ + rs.instanceCheck(d, ind); + if(!rs.instanceCheck(d, ind)) + numberNegExamples++; + } + + result_tmp = ((float)(numberPosExamples) + (float)(numberNegExamples))/((float)(posExamples.size())+(float)(negExamples.size())) * 100; + BigDecimal result = new BigDecimal( result_tmp ); + result = result.setScale( 2, BigDecimal.ROUND_HALF_UP ); + return result; + + + } + public void addAxiomToOWL(Description desc){ +// OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); + + + } + public static void main(String[] args){ ORE test = new ORE(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java 2008-04-10 06:42:27 UTC (rev 781) @@ -405,7 +405,8 @@ * @param WindowEvent The event passed in from AWT. */ - public void windowClosing(WindowEvent e) { + @Override + public void windowClosing(WindowEvent e) { returnCode = CANCEL_RETURN_CODE; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-04-09 18:35:28 UTC (rev 780) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-04-10 06:42:27 UTC (rev 781) @@ -161,18 +161,17 @@ } } - class ConceptRetriever extends SwingWorker<Set<NamedClass>, NamedClass> - { - Object nextPanelID; - - public ConceptRetriever(Object nextPanelDescriptor) { - - nextPanelID = nextPanelDescriptor; - } - - - public Set<NamedClass> doInBackground() { + class ConceptRetriever extends SwingWorker<Set<NamedClass>, NamedClass> { + Object nextPanelID; + public ConceptRetriever(Object nextPanelDescriptor) { + + nextPanelID = nextPanelDescriptor; + } + + @Override + public Set<NamedClass> doInBackground() { + ((ConceptPanelDescriptor) wizard.getModel().getPanelHashMap().get( nextPanelID)).panel3.getStatusLabel().setText( "Loading concepts"); @@ -186,36 +185,38 @@ return ind; } - - public void done(){ - Set<NamedClass> ind = null; - try { - ind = get(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ExecutionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - ConceptPanelDescriptor nextPanel = (ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelID); - DefaultListModel dm = new DefaultListModel(); - - for (NamedClass cl : ind){ - dm.addElement(cl); - //nextPanel.panel3.getModel().addElement(cl); - System.out.println(cl.getName()); - } - nextPanel.panel3.getList().setModel(dm); - ((ConceptPanelDescriptor) wizard.getModel().getPanelHashMap().get( + + @Override + public void done() { + Set<NamedClass> ind = null; + try { + ind = get(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + ConceptPanelDescriptor nextPanel = (ConceptPanelDescriptor) wizard + .getModel().getPanelHashMap().get(nextPanelID); + DefaultListModel dm = new DefaultListModel(); + + for (NamedClass cl : ind) { + dm.addElement(cl); + //nextPanel.panel3.getModel().addElement(cl); + System.out.println(cl.getName()); + } + nextPanel.panel3.getList().setModel(dm); + ((ConceptPanelDescriptor) wizard.getModel().getPanelHashMap().get( nextPanelID)).panel3.getStatusLabel().setText( "Concepts loaded"); - ((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelID)).panel3.getLoadingLabel().setBusy(false); - } - - - } + ((ConceptPanelDescriptor) wizard.getModel().getPanelHashMap().get( + nextPanelID)).panel3.getLoadingLabel().setBusy(false); + } + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-04-10 10:55:42
|
Revision: 782 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=782&view=rev Author: lorenz_b Date: 2008-04-10 03:55:38 -0700 (Thu, 10 Apr 2008) Log Message: ----------- added ListSelectionEvent to LearningPanel Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-04-10 06:42:27 UTC (rev 781) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-04-10 10:55:38 UTC (rev 782) @@ -13,6 +13,7 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableModel; import org.jdesktop.swingx.JXBusyLabel; @@ -141,10 +142,12 @@ return resultList; } + public void addSelectionListener(ListSelectionListener l){ + resultList.addListSelectionListener(l); + } - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-04-10 06:42:27 UTC (rev 781) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-04-10 10:55:38 UTC (rev 782) @@ -5,11 +5,12 @@ import java.util.List; import java.util.Timer; import java.util.TimerTask; -import java.util.Vector; import java.util.concurrent.ExecutionException; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.owl.Description; @@ -17,7 +18,7 @@ -public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener{ +public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener{ public static final String IDENTIFIER = "LEARNING_PANEL"; @@ -30,6 +31,7 @@ panel4 = new LearningPanel(); panel4.addStartButtonListener(this); panel4.addStopButtonListener(this); + panel4.addSelectionListener(this); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(panel4); @@ -65,7 +67,7 @@ @SuppressWarnings("unchecked") @Override public void run() { - publish(getWizardModel().getOre().getLearningResults(5)); + publish(getWizardModel().getOre().getLearningResults(10)); } }, 0, 1000); @@ -178,4 +180,11 @@ + } + + @Override + public void valueChanged(ListSelectionEvent e) { + if (!e.getValueIsAdjusting()) + System.out.println(panel4.getResultList().getSelectedValue()); + }} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2008-04-16 06:07:34
|
Revision: 790 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=790&view=rev Author: jenslehmann Date: 2008-04-15 23:07:17 -0700 (Tue, 15 Apr 2008) Log Message: ----------- removed ore/ore/ directory and small error fix Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ore/ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-04-15 10:21:10 UTC (rev 789) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-04-16 06:07:17 UTC (rev 790) @@ -182,7 +182,6 @@ } - @Override public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) System.out.println(panel4.getResultList().getSelectedValue()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-05-21 05:05:30
|
Revision: 910 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=910&view=rev Author: lorenz_b Date: 2008-05-20 22:05:20 -0700 (Tue, 20 May 2008) Log Message: ----------- added repair panel exported OWLAPI modifying code in extra class Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/Main.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-05-21 05:05:20 UTC (rev 910) @@ -29,7 +29,7 @@ } else if(isSelected){ background = Color.BLUE; - foreground = Color.WHITE; + foreground = Color.BLACK; }else{ background = Color.WHITE; foreground = Color.BLACK; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-05-21 05:05:20 UTC (rev 910) @@ -46,7 +46,7 @@ } else if(isSelected){ background = Color.BLUE; - foreground = Color.WHITE; + foreground = Color.BLACK; }else{ background = Color.WHITE; foreground = Color.BLACK; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java 2008-05-21 05:05:20 UTC (rev 910) @@ -55,7 +55,7 @@ getWizard().setNextFinishButtonEnabled(false); } - } + } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Enrichment.java 2008-05-21 05:05:20 UTC (rev 910) @@ -1,5 +0,0 @@ -package org.dllearner.tools.ore; - -public class Enrichment { - -} Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-05-21 05:05:20 UTC (rev 910) @@ -1,158 +0,0 @@ -package org.dllearner.tools.ore; - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.event.ActionListener; -import java.awt.geom.Ellipse2D; -import java.awt.geom.RoundRectangle2D; - -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.ListSelectionModel; -import javax.swing.event.ListSelectionListener; -import javax.swing.table.DefaultTableModel; - -import org.jdesktop.swingx.JXBusyLabel; -import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.decorator.HighlighterFactory; -import org.jdesktop.swingx.icon.EmptyIcon; -import org.jdesktop.swingx.painter.BusyPainter; - -public class LearningPanel extends JPanel{ - - private static final long serialVersionUID = -7411197973240429632L; - - private JPanel contentPanel; - - private javax.swing.JList resultList; - private DefaultListModel model; - - private JXTable resultTable; - private DefaultTableModel model1; - - private JLabel statusLabel; - private JXBusyLabel loadingLabel; - - private JButton startButton; - private JButton stopButton; - - @SuppressWarnings("unchecked") - public LearningPanel() { - - super(); - model = new DefaultListModel(); - - model1 = new DefaultTableModel(); - model1.addColumn("Description"); - model1.addColumn("Correctness"); - - - JPanel buttonPanel = new JPanel(); - startButton = new JButton("Start"); - stopButton = new JButton("Stop"); - stopButton.setEnabled(false); - buttonPanel.add(startButton); - buttonPanel.add(stopButton); - - - JPanel labelPanel = new JPanel(); - statusLabel = new JLabel(); - - loadingLabel = new JXBusyLabel(new Dimension(15,15)); - BusyPainter painter = new BusyPainter( - new RoundRectangle2D.Float(0, 0,6.0f,2.6f,10.0f,10.0f), - new Ellipse2D.Float(2.0f,2.0f,11.0f,11.0f)); - painter.setTrailLength(2); - painter.setPoints(7); - painter.setFrame(-1); - loadingLabel.setPreferredSize(new Dimension(15,15)); - loadingLabel.setIcon(new EmptyIcon(15,15)); - loadingLabel.setBusyPainter(painter); - labelPanel.add(loadingLabel); - labelPanel.add(statusLabel); - - contentPanel = getContentPanel(); - setLayout(new java.awt.BorderLayout()); - - add(buttonPanel, BorderLayout.EAST); - add(contentPanel,BorderLayout.CENTER); - add(labelPanel, BorderLayout.SOUTH); - } - - private JPanel getContentPanel() { - - JPanel contentPanel1 = new JPanel(); - JScrollPane scroll = new JScrollPane(); - - resultTable = new JXTable(model1 ); - - resultTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - resultTable.setHighlighters(HighlighterFactory.createSimpleStriping()); - - - resultList = new JList(model); -// resultList.setCellRenderer(new ColumnListCellRenderer()); - scroll.setPreferredSize(new Dimension(400, 400)); - - scroll.setViewportView(resultList); - - contentPanel1.add(scroll); - - - - return contentPanel1; - } - - public void addStartButtonListener(ActionListener a){ - startButton.addActionListener(a); - } - - public void addStopButtonListener(ActionListener a){ - stopButton.addActionListener(a); - } - - public JLabel getStatusLabel() { - return statusLabel; - } - - public JXBusyLabel getLoadingLabel() { - return loadingLabel; - } - - public JButton getStartButton() { - return startButton; - } - - public JButton getStopButton() { - return stopButton; - } - - public DefaultListModel getModel() { - return model; - } - -// public DefaultTableModel getModel() { -// return model1; -// } - - public javax.swing.JList getResultList() { - return resultList; - } - - public void addSelectionListener(ListSelectionListener l){ - resultList.addListSelectionListener(l); - } - - - -} - - - - - - Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-05-21 05:05:20 UTC (rev 910) @@ -41,7 +41,7 @@ @Override public Object getNextPanelDescriptor() { - return LearningPanelDescriptor.IDENTIFIER; + return RepairPanelDescriptor.IDENTIFIER; } @Override @@ -173,7 +173,7 @@ } else{ panel4.getStopButton().setEnabled(false); - worker.getLa().stop(); + getWizardModel().getOre().getLa().stop(); panel4.getStartButton().setEnabled(true); panel4.getStatusLabel().setText("Algorithm aborted"); } @@ -183,7 +183,25 @@ } public void valueChanged(ListSelectionEvent e) { + setNextButtonAccordingToConceptSelected(); if (!e.getValueIsAdjusting()) - System.out.println(panel4.getResultList().getSelectedValue()); + getWizardModel().getOre().setConceptToAdd((Description)(panel4.getResultList().getSelectedValue())); + System.out.println(panel4.getResultList().getSelectedValue()); - }} + } + + @Override + public void aboutToDisplayPanel() { + setNextButtonAccordingToConceptSelected(); + } + + private void setNextButtonAccordingToConceptSelected() { + + if (panel4.getResultList().getSelectedValue()!= null){ + getWizard().setNextFinishButtonEnabled(true); + }else{ + getWizard().setNextFinishButtonEnabled(false); + } + + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LeftPanel.java 2008-05-21 05:05:20 UTC (rev 910) @@ -23,8 +23,8 @@ jLabel[0] = new JLabel("1. Introduction"); jLabel[1] = new JLabel("2. Knowledge Source"); jLabel[2] = new JLabel("3. Concept"); - jLabel[3] = new JLabel("4. Examples"); - jLabel[4] = new JLabel("5. Learning"); + jLabel[3] = new JLabel("4. Learning"); + jLabel[4] = new JLabel("5. Repair"); jLabel[i].setFont(jLabel[i].getFont().deriveFont(Font.BOLD)); @@ -46,8 +46,8 @@ jLabel[0] = new JLabel("1. Introduction"); jLabel[1] = new JLabel("2. Knowledge Source"); jLabel[2] = new JLabel("3. Concept"); - jLabel[3] = new JLabel("4. Examples"); - jLabel[4] = new JLabel("5. Learning"); + jLabel[3] = new JLabel("4. Learning"); + jLabel[4] = new JLabel("5. Repair"); jLabel[i].setFont(jLabel[i].getFont().deriveFont(Font.BOLD)); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Main.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-05-21 05:05:20 UTC (rev 910) @@ -40,11 +40,15 @@ WizardPanelDescriptor descriptor4 = new LearningPanelDescriptor(); wizard.registerWizardPanel(LearningPanelDescriptor.IDENTIFIER, descriptor4); + WizardPanelDescriptor descriptor5 = new RepairPanelDescriptor(); + wizard.registerWizardPanel(RepairPanelDescriptor.IDENTIFIER, descriptor5); + if ( !(args.length == 1)){ wizard.setCurrentPanel(IntroductionPanelDescriptor.IDENTIFIER); }else{ ((KnowledgeSourcePanelDescriptor)descriptor2).getPanel().setFileURL(args[0]); wizard.setCurrentPanel(KnowledgeSourcePanelDescriptor.IDENTIFIER); + wizard.setLeftPanel(1); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-05-21 05:05:20 UTC (rev 910) @@ -2,10 +2,6 @@ import java.io.File; import java.math.BigDecimal; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.Collections; -import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.SortedSet; @@ -23,20 +19,7 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.PosNegDefinitionLP; -import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; import org.dllearner.reasoning.OWLAPIReasoner; -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.model.AddAxiom; -import org.semanticweb.owl.model.OWLAxiom; -import org.semanticweb.owl.model.OWLDataFactory; -import org.semanticweb.owl.model.OWLDescription; -import org.semanticweb.owl.model.OWLIndividual; -import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyChangeException; -import org.semanticweb.owl.model.OWLOntologyManager; -import org.semanticweb.owl.model.OWLOntologyStorageException; -import org.semanticweb.owl.model.UnknownOWLOntologyException; -import org.semanticweb.owl.util.OWLEntityRemover; public class ORE { @@ -49,7 +32,11 @@ SortedSet<Individual> posExamples; SortedSet<Individual> negExamples; NamedClass concept; + Description conceptToAdd; + OntologyModifierOWLAPI modi; + Set<NamedClass> allAtomicConcepts; + public ORE() { cm = ComponentManager.getInstance(); @@ -82,6 +69,7 @@ reasoner.init(); rs = cm.reasoningService(reasoner); + modi = new OntologyModifierOWLAPI(reasoner); } public ReasoningService getReasoningService(){ @@ -95,6 +83,7 @@ public void setPosNegExamples(){ posExamples = rs.retrieval(concept); negExamples = rs.getIndividuals(); + for (Individual rem_pos : posExamples) negExamples.remove(rem_pos); } @@ -176,118 +165,35 @@ } - public void addAxiomToOWL(Description desc){ - OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); - OWLDescription oldConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(concept); - - - OWLOntology ontology = reasoner.getOWLAPIOntologies().get(0); - - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - - OWLDataFactory factory = manager.getOWLDataFactory(); - - Set<OWLDescription> ds = new HashSet<OWLDescription>(); - ds.add(newConceptOWLAPI); - ds.add(oldConceptOWLAPI); - - OWLAxiom axiomOWLAPI = factory.getOWLEquivalentClassesAxiom(ds); - - AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); - try { - manager.applyChange(axiom); - } catch (OWLOntologyChangeException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - manager.saveOntology(ontology); - } catch (UnknownOWLOntologyException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OWLOntologyStorageException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - public void deleteIndividual(Individual ind){ - OWLOntology ontology = reasoner.getOWLAPIOntologies().get(0); - - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLDataFactory factory = manager.getOWLDataFactory(); - OWLIndividual individualOWLAPI = null; - - try { - individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); - } catch (URISyntaxException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - - OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); - - - individualOWLAPI.accept(remover); - - try { - manager.applyChanges(remover.getChanges()); - } catch (OWLOntologyChangeException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - remover.reset(); - - try { - manager.saveOntology(ontology); - } catch (UnknownOWLOntologyException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OWLOntologyStorageException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - public void moveIndividual(Individual ind, Description oldDescription, Description newDescription){ - - - OWLOntology ontology = reasoner.getOWLAPIOntologies().get(0); - - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLDataFactory factory = manager.getOWLDataFactory(); - OWLIndividual individualOWLAPI = null; - - - try { - individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); - } catch (URISyntaxException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - //Loeschen - OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); - individualOWLAPI.accept(remover); - - try { - manager.applyChanges(remover.getChanges()); - } catch (OWLOntologyChangeException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - remover.reset(); - - //Hinzufuegen - - + + public Description getConceptToAdd() { + return conceptToAdd; } + + public void setConceptToAdd(Description conceptToAdd) { + this.conceptToAdd = conceptToAdd; + } + + public LearningAlgorithm getLa() { + return la; + } + + public OntologyModifierOWLAPI getModi() { + return modi; + } + + public NamedClass getConcept() { + return concept; + } + + public void setAllAtomicConcepts(Set<NamedClass> allAtomicConcepts) { + this.allAtomicConcepts = allAtomicConcepts; + } - - public static void main(String[] args){ ORE test = new ORE(); Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Repair.java 2008-05-21 05:05:20 UTC (rev 910) @@ -1,5 +0,0 @@ -package org.dllearner.tools.ore; - -public class Repair { - -} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java (from rev 828, trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java 2008-05-21 05:05:20 UTC (rev 910) @@ -0,0 +1,163 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionListener; +import java.awt.geom.Ellipse2D; +import java.awt.geom.RoundRectangle2D; + +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.event.ListSelectionListener; + +import org.jdesktop.swingx.JXBusyLabel; +import org.jdesktop.swingx.icon.EmptyIcon; +import org.jdesktop.swingx.painter.BusyPainter; + +public class RepairPanel extends JPanel{ + + private static final long serialVersionUID = -7411197973240429632L; + + private JPanel contentPanel; + + private javax.swing.JList resultList; + private DefaultListModel model; + + + + private JLabel statusLabel; + private JXBusyLabel loadingLabel; + + private JButton deleteButton; + private JButton moveButton; + private JButton addButton; + private JButton saveButton; + + + @SuppressWarnings("unchecked") + public RepairPanel() { + + super(); + model = new DefaultListModel(); + + + JPanel buttonPanel = new JPanel(); + deleteButton = new JButton("delete"); + moveButton = new JButton("move"); + addButton = new JButton("add property"); + saveButton = new JButton("save"); + + buttonPanel.add(deleteButton); + buttonPanel.add(moveButton); + buttonPanel.add(addButton); + buttonPanel.add(saveButton); + buttonPanel.setLayout(new GridLayout(5,1,0,10)); + + + JPanel labelPanel = new JPanel(); + statusLabel = new JLabel(); + + loadingLabel = new JXBusyLabel(new Dimension(15,15)); + BusyPainter painter = new BusyPainter( + new RoundRectangle2D.Float(0, 0,6.0f,2.6f,10.0f,10.0f), + new Ellipse2D.Float(2.0f,2.0f,11.0f,11.0f)); + painter.setTrailLength(2); + painter.setPoints(7); + painter.setFrame(-1); + loadingLabel.setPreferredSize(new Dimension(15,15)); + loadingLabel.setIcon(new EmptyIcon(15,15)); + loadingLabel.setBusyPainter(painter); + labelPanel.add(loadingLabel); + labelPanel.add(statusLabel); + + contentPanel = getContentPanel(); + setLayout(new java.awt.BorderLayout()); + + add(buttonPanel, BorderLayout.EAST); + add(contentPanel,BorderLayout.CENTER); + add(labelPanel, BorderLayout.SOUTH); + } + + private JPanel getContentPanel() { + + JPanel contentPanel1 = new JPanel(); + JScrollPane scroll = new JScrollPane(); + + + + + resultList = new JList(model); + + scroll.setPreferredSize(new Dimension(400, 400)); + + scroll.setViewportView(resultList); + + contentPanel1.add(scroll); + + + + return contentPanel1; + } + + public void addDeleteButtonListener(ActionListener a){ + deleteButton.addActionListener(a); + } + + public void addMoveButtonListener(ActionListener a){ + moveButton.addActionListener(a); + } + + public void addAddButtonListener(ActionListener a){ + addButton.addActionListener(a); + } + + public void addSaveButtonListener(ActionListener a){ + saveButton.addActionListener(a); + } + + public JLabel getStatusLabel() { + return statusLabel; + } + + public JXBusyLabel getLoadingLabel() { + return loadingLabel; + } + + public JButton getDeleteButton() { + return deleteButton; + } + + public JButton getMoveButton() { + return moveButton; + } + + public JButton getAddButton() { + return addButton; + } + + public DefaultListModel getModel() { + return model; + } + + public javax.swing.JList getResultList() { + return resultList; + } + + public void addSelectionListener(ListSelectionListener l){ + resultList.addListSelectionListener(l); + } + + + +} + + + + + + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Wizard.java 2008-05-21 05:05:20 UTC (rev 910) @@ -419,7 +419,7 @@ } - - + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-05-20 18:32:00 UTC (rev 909) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-05-21 05:05:20 UTC (rev 910) @@ -3,11 +3,13 @@ import java.awt.event.ActionListener; import java.util.Set; +import java.util.SortedSet; import java.util.concurrent.ExecutionException; import javax.swing.DefaultListModel; import javax.swing.SwingWorker; +import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; /** @@ -70,6 +72,12 @@ new ConceptRetriever(nextPanelDescriptor).execute(); } + if( nextPanelDescriptor.equals("REPAIR_PANEL")){ + ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getModel().clear(); + wizard.getModel().getOre().getModi().addAxiomToOWL(wizard.getModel().getOre().getConceptToAdd(), wizard.getModel().getOre().getConcept()); + new FailInstancesRetriever(nextPanelDescriptor).execute(); + } + if (nextPanelDescriptor instanceof WizardPanelDescriptor.FinishIdentifier) { wizard.close(Wizard.FINISH_RETURN_CODE); } else { @@ -111,9 +119,13 @@ wizard.setLeftPanel(2); } if(PanelDescriptor.equals("LEARNING_PANEL")){ + wizard.setLeftPanel(3); + } + if(PanelDescriptor.equals("REPAIR_PANEL")){ wizard.setLeftPanel(4); } + } @@ -204,9 +216,11 @@ for (NamedClass cl : ind) { dm.addElement(cl); + //nextPanel.panel3.getModel().addElement(cl); System.out.println(cl.getName()); } + wizard.getModel().getOre().setAllAtomicConcepts(ind); nextPanel.panel3.getList().setModel(dm); ((ConceptPanelDescriptor) wizard.getModel().getPanelHashMap().get( nextPanelID)).panel3.getStatusLabel().setText( @@ -216,7 +230,63 @@ } } + class FailInstancesRetriever extends SwingWorker<SortedSet<Individual>, Individual> { + Object nextPanelID; + public FailInstancesRetriever(Object nextPanelDescriptor) { + + nextPanelID = nextPanelDescriptor; + } + + @Override + public SortedSet<Individual> doInBackground() { + + ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( + nextPanelID)).panel4.getStatusLabel().setText( + "Loading instances"); + ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( + nextPanelID)).panel4.getLoadingLabel().setBusy(true); + + + + SortedSet<Individual> ind = wizard.getModel().getOre() + .getReasoningService().getIndividuals(); + + return ind; + } + + @Override + public void done() { + SortedSet<Individual> ind = null; + try { + ind = get(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + RepairPanelDescriptor nextPanel = (RepairPanelDescriptor) wizard + .getModel().getPanelHashMap().get(nextPanelID); + DefaultListModel dm = ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( + nextPanelID)).panel4.getModel(); + + for (Individual cl : ind) { + dm.addElement(cl); + //nextPanel.panel3.getModel().addElement(cl); + System.out.println(cl.getName()); + } + nextPanel.panel4.getResultList().setModel(dm); + ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( + nextPanelID)).panel4.getStatusLabel().setText( + "Instances loaded"); + ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( + nextPanelID)).panel4.getLoadingLabel().setBusy(false); + } + + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-05-22 11:23:25
|
Revision: 919 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=919&view=rev Author: lorenz_b Date: 2008-05-22 04:23:19 -0700 (Thu, 22 May 2008) Log Message: ----------- Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/MoveDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-05-22 11:09:53 UTC (rev 918) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColorListCellRenderer.java 2008-05-22 11:23:19 UTC (rev 919) @@ -29,7 +29,7 @@ } else if(isSelected){ background = Color.BLUE; - foreground = Color.BLACK; + foreground = Color.WHITE; }else{ background = Color.WHITE; foreground = Color.BLACK; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-05-22 11:09:53 UTC (rev 918) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ColumnListCellRenderer.java 2008-05-22 11:23:19 UTC (rev 919) @@ -46,7 +46,7 @@ } else if(isSelected){ background = Color.BLUE; - foreground = Color.BLACK; + foreground = Color.WHITE; }else{ background = Color.WHITE; foreground = Color.BLACK; Added: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-05-22 11:23:19 UTC (rev 919) @@ -0,0 +1,158 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionListener; +import java.awt.geom.Ellipse2D; +import java.awt.geom.RoundRectangle2D; + +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.DefaultTableModel; + +import org.jdesktop.swingx.JXBusyLabel; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; +import org.jdesktop.swingx.icon.EmptyIcon; +import org.jdesktop.swingx.painter.BusyPainter; + +public class LearningPanel extends JPanel{ + + private static final long serialVersionUID = -7411197973240429632L; + + private JPanel contentPanel; + + private javax.swing.JList resultList; + private DefaultListModel model; + + private JXTable resultTable; + private DefaultTableModel model1; + + private JLabel statusLabel; + private JXBusyLabel loadingLabel; + + private JButton startButton; + private JButton stopButton; + + @SuppressWarnings("unchecked") + public LearningPanel() { + + super(); + model = new DefaultListModel(); + + model1 = new DefaultTableModel(); + model1.addColumn("Description"); + model1.addColumn("Correctness"); + + + JPanel buttonPanel = new JPanel(); + startButton = new JButton("Start"); + stopButton = new JButton("Stop"); + stopButton.setEnabled(false); + buttonPanel.add(startButton); + buttonPanel.add(stopButton); + + + JPanel labelPanel = new JPanel(); + statusLabel = new JLabel(); + + loadingLabel = new JXBusyLabel(new Dimension(15,15)); + BusyPainter painter = new BusyPainter( + new RoundRectangle2D.Float(0, 0,6.0f,2.6f,10.0f,10.0f), + new Ellipse2D.Float(2.0f,2.0f,11.0f,11.0f)); + painter.setTrailLength(2); + painter.setPoints(7); + painter.setFrame(-1); + loadingLabel.setPreferredSize(new Dimension(15,15)); + loadingLabel.setIcon(new EmptyIcon(15,15)); + loadingLabel.setBusyPainter(painter); + labelPanel.add(loadingLabel); + labelPanel.add(statusLabel); + + contentPanel = getContentPanel(); + setLayout(new java.awt.BorderLayout()); + + add(buttonPanel, BorderLayout.EAST); + add(contentPanel,BorderLayout.CENTER); + add(labelPanel, BorderLayout.SOUTH); + } + + private JPanel getContentPanel() { + + JPanel contentPanel1 = new JPanel(); + JScrollPane scroll = new JScrollPane(); + + resultTable = new JXTable(model1 ); + + resultTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + resultTable.setHighlighters(HighlighterFactory.createSimpleStriping()); + + + resultList = new JList(model); +// resultList.setCellRenderer(new ColumnListCellRenderer()); + scroll.setPreferredSize(new Dimension(400, 400)); + + scroll.setViewportView(resultList); + + contentPanel1.add(scroll); + + + + return contentPanel1; + } + + public void addStartButtonListener(ActionListener a){ + startButton.addActionListener(a); + } + + public void addStopButtonListener(ActionListener a){ + stopButton.addActionListener(a); + } + + public JLabel getStatusLabel() { + return statusLabel; + } + + public JXBusyLabel getLoadingLabel() { + return loadingLabel; + } + + public JButton getStartButton() { + return startButton; + } + + public JButton getStopButton() { + return stopButton; + } + + public DefaultListModel getModel() { + return model; + } + +// public DefaultTableModel getModel() { +// return model1; +// } + + public javax.swing.JList getResultList() { + return resultList; + } + + public void addSelectionListener(ListSelectionListener l){ + resultList.addListSelectionListener(l); + } + + + +} + + + + + + Added: trunk/src/dl-learner/org/dllearner/tools/ore/MoveDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/MoveDialog.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/MoveDialog.java 2008-05-22 11:23:19 UTC (rev 919) @@ -0,0 +1,108 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Set; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import org.dllearner.core.owl.NamedClass; + +public class MoveDialog extends JDialog{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + Box buttonBox; + JButton okButton; + JButton cancelButton; + JPanel buttonPanel; + JPanel listPanel; + JScrollPane scroll; + JList conceptList; + Set<NamedClass> allConcepts; + NamedClass selectedValue;; + + + public MoveDialog(Set<NamedClass> allConcepts, JDialog dialog){ + super(dialog, "Auswahl", true); + this.allConcepts = allConcepts; + + } + + public void init(){ + setSize(500, 500); + buttonBox = new Box(BoxLayout.X_AXIS); + + okButton = new JButton("Ok"); + okButton.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getActionCommand().equals("Ok")){ + + selectedValue = (NamedClass)conceptList.getSelectedValue(); + + dispose(); + } + + } + }); + cancelButton = new JButton("Cancel"); + cancelButton.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getActionCommand().equals("Cancel")){ + + + dispose(); + } + + } + }); + + buttonBox.add(okButton); + buttonBox.add(Box.createHorizontalStrut(30)); + buttonBox.add(cancelButton); + + buttonPanel = new JPanel(); + buttonPanel.setLayout(new BorderLayout()); + buttonPanel.add(buttonBox, java.awt.BorderLayout.EAST); + + listPanel = new JPanel(); + DefaultListModel model = new DefaultListModel(); + for (NamedClass cl : allConcepts) { + model.addElement(cl); + + } + + scroll = new JScrollPane(); + conceptList = new JList(model); + scroll.setPreferredSize(new Dimension(400, 400)); + scroll.setViewportView(conceptList); + listPanel.add(scroll); + + getContentPane().add(buttonPanel, java.awt.BorderLayout.SOUTH); + getContentPane().add(listPanel, java.awt.BorderLayout.CENTER); + + setVisible(true); + + } + + public NamedClass getSelectedValue(){ + return selectedValue; + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-05-22 11:23:19 UTC (rev 919) @@ -0,0 +1,148 @@ +package org.dllearner.tools.ore; + +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; +import org.dllearner.reasoning.OWLAPIReasoner; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.io.RDFXMLOntologyFormat; +import org.semanticweb.owl.model.AddAxiom; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLIndividual; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLOntologyStorageException; +import org.semanticweb.owl.model.UnknownOWLOntologyException; +import org.semanticweb.owl.util.OWLEntityRemover; + +public class OntologyModifierOWLAPI { + + OWLOntology ontology; + OWLAPIReasoner reasoner; + OWLDataFactory factory; + OWLOntologyManager manager; + + + public OntologyModifierOWLAPI(OWLAPIReasoner reasoner){ + this.reasoner = reasoner; + this.manager = OWLManager.createOWLOntologyManager(); + this.factory = manager.getOWLDataFactory(); + this.ontology = reasoner.getOWLAPIOntologies().get(0); + } + + public void addAxiomToOWL(Description newDesc, Description oldDesc){ + OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newDesc); + OWLDescription oldConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(oldDesc); + + + Set<OWLDescription> ds = new HashSet<OWLDescription>(); + ds.add(newConceptOWLAPI); + ds.add(oldConceptOWLAPI); + + OWLAxiom axiomOWLAPI = factory.getOWLEquivalentClassesAxiom(ds); + + + AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); + try { + manager.applyChange(axiom); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + public void saveOntology(){ + URI physicalURI2 = URI.create("file:/tmp/MyOnt2.owl"); + + try { + manager.saveOntology(ontology, new RDFXMLOntologyFormat(), physicalURI2); + } catch (UnknownOWLOntologyException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (OWLOntologyStorageException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + public void deleteIndividual(Individual ind){ + + OWLIndividual individualOWLAPI = null; + + try { + individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); + + individualOWLAPI.accept(remover); + + try { + manager.applyChanges(remover.getChanges()); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + remover.reset(); + + + } + + public void moveIndividual(Individual ind, Description oldConcept, Description newConcept){ + + + OWLIndividual individualOWLAPI = null; + + + try { + individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + //Loeschen + OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); + individualOWLAPI.accept(remover); + + try { + manager.applyChanges(remover.getChanges()); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + remover.reset(); + + //Hinzufuegen + + OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newConcept); + + OWLAxiom axiomOWLAPI = factory.getOWLClassAssertionAxiom(individualOWLAPI, newConceptOWLAPI); + + AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); + try { + manager.applyChange(axiom); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-05-22 11:23:19 UTC (rev 919) @@ -0,0 +1,96 @@ +package org.dllearner.tools.ore; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import org.dllearner.core.owl.Individual; + + + + +public class RepairPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener{ + + public static final String IDENTIFIER = "REPAIR_PANEL"; + + RepairPanel panel4; + + + public RepairPanelDescriptor() { + + panel4 = new RepairPanel(); + panel4.addDeleteButtonListener(this); + panel4.addMoveButtonListener(this); + panel4.addAddButtonListener(this); + panel4.addSaveButtonListener(this); + panel4.addSelectionListener(this); + + setPanelDescriptorIdentifier(IDENTIFIER); + setPanelComponent(panel4); + + + } + + @Override + public Object getNextPanelDescriptor() { + return RepairPanelDescriptor.IDENTIFIER; + } + + @Override + public Object getBackPanelDescriptor() { + return LearningPanelDescriptor.IDENTIFIER; + } + + + + + + public void valueChanged(ListSelectionEvent e) { + if (!e.getValueIsAdjusting()) + System.out.println(panel4.getResultList().getSelectedValue()); + + } + + @Override + public void actionPerformed(ActionEvent event) { + if(event.getActionCommand().equals("save")){ + getWizardModel().getOre().getModi().saveOntology(); + + } + if(event.getActionCommand().equals("delete")){ + + int idx = panel4.getResultList().getSelectedIndex(); + if (-1 == idx) { + //No item selected + return; + } + System.out.println("Index: " +idx); + + + + getWizardModel().getOre().getModi().deleteIndividual((Individual)panel4.getResultList().getSelectedValue()); + panel4.getModel().removeElementAt(idx); + + + } + if(event.getActionCommand().equals("move")){ + + int idx = panel4.getResultList().getSelectedIndex(); + if (-1 == idx) { + //No item selected + return; + } + System.out.println(getWizardModel().getOre().allAtomicConcepts); + + MoveDialog dialog = new MoveDialog(getWizardModel().getOre().allAtomicConcepts, getWizard().getDialog()); + dialog.init(); + System.err.println("Verschiebe " +(Individual)panel4.getResultList().getSelectedValue()+ + " von " + "......." + " nach " +dialog.getSelectedValue()); + + + } + + }} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-05-26 17:00:20
|
Revision: 930 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=930&view=rev Author: lorenz_b Date: 2008-05-26 10:00:14 -0700 (Mon, 26 May 2008) Log Message: ----------- added second list for repair panel Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/Main.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-05-26 14:48:00 UTC (rev 929) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-05-26 17:00:14 UTC (rev 930) @@ -12,13 +12,10 @@ import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.ListSelectionModel; +import javax.swing.JSlider; import javax.swing.event.ListSelectionListener; -import javax.swing.table.DefaultTableModel; import org.jdesktop.swingx.JXBusyLabel; -import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.decorator.HighlighterFactory; import org.jdesktop.swingx.icon.EmptyIcon; import org.jdesktop.swingx.painter.BusyPainter; @@ -31,9 +28,6 @@ private javax.swing.JList resultList; private DefaultListModel model; - private JXTable resultTable; - private DefaultTableModel model1; - private JLabel statusLabel; private JXBusyLabel loadingLabel; @@ -46,11 +40,7 @@ super(); model = new DefaultListModel(); - model1 = new DefaultTableModel(); - model1.addColumn("Description"); - model1.addColumn("Correctness"); - - + JPanel buttonPanel = new JPanel(); startButton = new JButton("Start"); stopButton = new JButton("Stop"); @@ -88,21 +78,23 @@ JPanel contentPanel1 = new JPanel(); JScrollPane scroll = new JScrollPane(); - resultTable = new JXTable(model1 ); - resultTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - resultTable.setHighlighters(HighlighterFactory.createSimpleStriping()); - - resultList = new JList(model); // resultList.setCellRenderer(new ColumnListCellRenderer()); scroll.setPreferredSize(new Dimension(400, 400)); - scroll.setViewportView(resultList); + JSlider noise = new JSlider(JSlider.HORIZONTAL, 0, 100, 0); + noise.setMajorTickSpacing(50); + noise.setMinorTickSpacing(25); + noise.setPaintTicks(true); + noise.setPaintLabels(true); + contentPanel1.add(scroll); + contentPanel1.add(noise); + return contentPanel1; } @@ -135,10 +127,6 @@ return model; } -// public DefaultTableModel getModel() { -// return model1; -// } - public javax.swing.JList getResultList() { return resultList; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Main.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-05-26 14:48:00 UTC (rev 929) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Main.java 2008-05-26 17:00:14 UTC (rev 930) @@ -26,7 +26,7 @@ } Wizard wizard = new Wizard(); wizard.getDialog().setTitle("DL-Learner ORE-Tool"); - wizard.getDialog().setSize(800, 500); + wizard.getDialog().setSize(1300, 600); WizardPanelDescriptor descriptor1 = new IntroductionPanelDescriptor(); wizard.registerWizardPanel(IntroductionPanelDescriptor.IDENTIFIER, descriptor1); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-05-26 14:48:00 UTC (rev 929) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-05-26 17:00:14 UTC (rev 930) @@ -2,12 +2,13 @@ import java.io.File; import java.math.BigDecimal; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; -import org.dllearner.algorithms.refinement.ROLearner; +import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; import org.dllearner.core.KnowledgeSource; @@ -99,7 +100,7 @@ public void setLearningAlgorithm(){ try { - la = cm.learningAlgorithm(ROLearner.class, lp, rs); + la = cm.learningAlgorithm(ExampleBasedROLComponent.class, lp, rs); } catch (LearningProblemUnsupportedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); @@ -147,12 +148,10 @@ double result_tmp = 0.0f; for(Individual ind : posExamples){ - rs.instanceCheck(d, ind); if(rs.instanceCheck(d, ind)) numberPosExamples++; } for(Individual ind : negExamples){ - rs.instanceCheck(d, ind); if(!rs.instanceCheck(d, ind)) numberNegExamples++; } @@ -164,6 +163,31 @@ } + + public HashSet<Individual> getNegFailureExamples(){ + HashSet<Individual> negFailureExamples = new HashSet<Individual>() ; + + for(Individual ind : negExamples){ + if(rs.instanceCheck(conceptToAdd, ind)) + negFailureExamples.add(ind); + + } + + return negFailureExamples; + } + + public SortedSet<Individual> getPosFailureExamples(){ + + SortedSet<Individual> posFailureExamples = null ; + + for(Individual ind : posExamples){ + if(!rs.instanceCheck(conceptToAdd, ind)) + posFailureExamples.add(ind); + + } + + return posFailureExamples; + } @@ -196,24 +220,24 @@ public static void main(String[] args){ - ORE test = new ORE(); - //File owlFile = new File("examples/family/father.owl"); - File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/father.owl"); - - test.setKnowledgeSource(owlFile); - - test.detectReasoner(); - ReasoningService rs = test.getReasoningService(); - System.err.println("Concepts :" + rs.getAtomicConcepts()); - - - test.setConcept(new NamedClass("http://example.com/father#father")); - test.setPosNegExamples(); - System.out.println(test.posExamples); - System.out.println(test.negExamples); - test.setLearningProblem(); - test.setLearningAlgorithm(); - test.start(); +// ORE test = new ORE(); +// +// File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/father.owl"); +// +// test.setKnowledgeSource(owlFile); +// +// test.detectReasoner(); +// ReasoningService rs = test.getReasoningService(); +// System.err.println("Concepts :" + rs.getAtomicConcepts()); +// +// +// test.setConcept(new NamedClass("http://example.com/father#father")); +// test.setPosNegExamples(); +// System.out.println(test.posExamples); +// System.out.println(test.negExamples); +// test.setLearningProblem(); +// test.setLearningAlgorithm(); +// test.start(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-05-26 14:48:00 UTC (rev 929) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-05-26 17:00:14 UTC (rev 930) @@ -131,7 +131,7 @@ //Hinzufuegen OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newConcept); - + OWLAxiom axiomOWLAPI = factory.getOWLClassAssertionAxiom(individualOWLAPI, newConceptOWLAPI); AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java 2008-05-26 14:48:00 UTC (rev 929) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java 2008-05-26 17:00:14 UTC (rev 930) @@ -4,6 +4,7 @@ import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionListener; +import java.awt.event.MouseListener; import java.awt.geom.Ellipse2D; import java.awt.geom.RoundRectangle2D; @@ -25,17 +26,16 @@ private JPanel contentPanel; - private javax.swing.JList resultList; - private DefaultListModel model; + private JList posFailureList; + private JList negFailureList; + private DefaultListModel posFailureModel; + private DefaultListModel negFailureModel; private JLabel statusLabel; private JXBusyLabel loadingLabel; - private JButton deleteButton; - private JButton moveButton; - private JButton addButton; private JButton saveButton; @@ -43,18 +43,14 @@ public RepairPanel() { super(); - model = new DefaultListModel(); - + posFailureModel = new DefaultListModel(); + negFailureModel = new DefaultListModel(); JPanel buttonPanel = new JPanel(); - deleteButton = new JButton("delete"); - moveButton = new JButton("move"); - addButton = new JButton("add property"); + saveButton = new JButton("save"); - buttonPanel.add(deleteButton); - buttonPanel.add(moveButton); - buttonPanel.add(addButton); + buttonPanel.add(saveButton); buttonPanel.setLayout(new GridLayout(5,1,0,10)); @@ -86,36 +82,27 @@ private JPanel getContentPanel() { JPanel contentPanel1 = new JPanel(); - JScrollPane scroll = new JScrollPane(); + JScrollPane posScroll = new JScrollPane(); + posFailureList = new JList(posFailureModel); + posScroll.setPreferredSize(new Dimension(400, 400)); + posScroll.setViewportView(posFailureList); + JScrollPane negScroll = new JScrollPane(); + negFailureList = new JList(negFailureModel); + negScroll.setPreferredSize(new Dimension(400, 400)); + negScroll.setViewportView(negFailureList); - resultList = new JList(model); - - scroll.setPreferredSize(new Dimension(400, 400)); + contentPanel1.add(posScroll); + contentPanel1.add(negScroll); - scroll.setViewportView(resultList); - - contentPanel1.add(scroll); - return contentPanel1; } - public void addDeleteButtonListener(ActionListener a){ - deleteButton.addActionListener(a); - } - - public void addMoveButtonListener(ActionListener a){ - moveButton.addActionListener(a); - } - - public void addAddButtonListener(ActionListener a){ - addButton.addActionListener(a); - } - + public void addSaveButtonListener(ActionListener a){ saveButton.addActionListener(a); } @@ -128,32 +115,34 @@ return loadingLabel; } - public JButton getDeleteButton() { - return deleteButton; + public DefaultListModel getPosFailureModel() { + return posFailureModel; } - - public JButton getMoveButton() { - return moveButton; + + public DefaultListModel getNegFailureModel() { + return negFailureModel; } - public JButton getAddButton() { - return addButton; + public javax.swing.JList getPosFailureList() { + return posFailureList; } - - public DefaultListModel getModel() { - return model; - } - public javax.swing.JList getResultList() { - return resultList; + public javax.swing.JList getNegFailureList() { + return negFailureList; } public void addSelectionListener(ListSelectionListener l){ - resultList.addListSelectionListener(l); + posFailureList.addListSelectionListener(l); + negFailureList.addListSelectionListener(l); } + public void addMouseListener(MouseListener m){ + posFailureList.addMouseListener(m); + negFailureList.addMouseListener(m); + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-05-26 14:48:00 UTC (rev 929) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-05-26 17:00:14 UTC (rev 930) @@ -2,6 +2,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -11,7 +13,7 @@ -public class RepairPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener{ +public class RepairPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener, MouseListener{ public static final String IDENTIFIER = "REPAIR_PANEL"; @@ -21,11 +23,10 @@ public RepairPanelDescriptor() { panel4 = new RepairPanel(); - panel4.addDeleteButtonListener(this); - panel4.addMoveButtonListener(this); - panel4.addAddButtonListener(this); + panel4.addSaveButtonListener(this); panel4.addSelectionListener(this); + panel4.addMouseListener(this); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(panel4); @@ -48,9 +49,10 @@ public void valueChanged(ListSelectionEvent e) { - if (!e.getValueIsAdjusting()) - System.out.println(panel4.getResultList().getSelectedValue()); +// if (!e.getValueIsAdjusting()) +// System.err.println(panel4.getNegFailureList().getSelectedValue()); + } public void actionPerformed(ActionEvent event) { @@ -58,38 +60,40 @@ getWizardModel().getOre().getModi().saveOntology(); } - if(event.getActionCommand().equals("delete")){ - - int idx = panel4.getResultList().getSelectedIndex(); - if (-1 == idx) { - //No item selected - return; - } - System.out.println("Index: " +idx); - - - getWizardModel().getOre().getModi().deleteIndividual((Individual)panel4.getResultList().getSelectedValue()); - panel4.getModel().removeElementAt(idx); - - } - if(event.getActionCommand().equals("move")){ - - int idx = panel4.getResultList().getSelectedIndex(); - if (-1 == idx) { - //No item selected - return; - } - System.out.println(getWizardModel().getOre().allAtomicConcepts); - - MoveDialog dialog = new MoveDialog(getWizardModel().getOre().allAtomicConcepts, getWizard().getDialog()); - dialog.init(); - System.err.println("Verschiebe " +(Individual)panel4.getResultList().getSelectedValue()+ - " von " + "......." + " nach " +dialog.getSelectedValue()); + } + + @Override + public void mouseClicked(MouseEvent e) { - + if(e.getClickCount() == 2 && e.getSource() == panel4.getNegFailureList() ){ + System.out.println(panel4.getNegFailureList().getSelectedValue()); } + } + + @Override + public void mouseEntered(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseExited(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mousePressed(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseReleased(MouseEvent e) { + // TODO Auto-generated method stub + }} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-05-26 14:48:00 UTC (rev 929) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-05-26 17:00:14 UTC (rev 930) @@ -2,6 +2,7 @@ import java.awt.event.ActionListener; +import java.util.HashSet; import java.util.Set; import java.util.SortedSet; import java.util.concurrent.ExecutionException; @@ -73,7 +74,7 @@ } if( nextPanelDescriptor.equals("REPAIR_PANEL")){ - ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getModel().clear(); + ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getNegFailureModel().clear(); wizard.getModel().getOre().getModi().addAxiomToOWL(wizard.getModel().getOre().getConceptToAdd(), wizard.getModel().getOre().getConcept()); new FailInstancesRetriever(nextPanelDescriptor).execute(); } @@ -230,7 +231,7 @@ } } - class FailInstancesRetriever extends SwingWorker<SortedSet<Individual>, Individual> { + class FailInstancesRetriever extends SwingWorker<HashSet<Individual>, Individual> { Object nextPanelID; public FailInstancesRetriever(Object nextPanelDescriptor) { @@ -239,25 +240,25 @@ } @Override - public SortedSet<Individual> doInBackground() { + public HashSet<Individual> doInBackground() { ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( nextPanelID)).panel4.getStatusLabel().setText( - "Loading instances"); + "Loading conflicting instances"); ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( nextPanelID)).panel4.getLoadingLabel().setBusy(true); - SortedSet<Individual> ind = wizard.getModel().getOre() - .getReasoningService().getIndividuals(); + HashSet<Individual> ind = wizard.getModel().getOre() + .getNegFailureExamples(); return ind; } @Override public void done() { - SortedSet<Individual> ind = null; + HashSet<Individual> ind = null; try { ind = get(); } catch (InterruptedException e) { @@ -269,20 +270,16 @@ } RepairPanelDescriptor nextPanel = (RepairPanelDescriptor) wizard .getModel().getPanelHashMap().get(nextPanelID); - DefaultListModel dm = ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( - nextPanelID)).panel4.getModel(); + DefaultListModel dm = nextPanel.panel4.getNegFailureModel(); for (Individual cl : ind) { dm.addElement(cl); - //nextPanel.panel3.getModel().addElement(cl); System.out.println(cl.getName()); } - nextPanel.panel4.getResultList().setModel(dm); - ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( - nextPanelID)).panel4.getStatusLabel().setText( + + nextPanel.panel4.getStatusLabel().setText( "Instances loaded"); - ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( - nextPanelID)).panel4.getLoadingLabel().setBusy(false); + nextPanel.panel4.getLoadingLabel().setBusy(false); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-06-04 17:02:47
|
Revision: 939 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=939&view=rev Author: lorenz_b Date: 2008-06-04 10:02:14 -0700 (Wed, 04 Jun 2008) Log Message: ----------- added noisePercentage TextField in LearningPanel added deleteInstance added removeClassAssertion added moveInstance Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/MoveDialog.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanel.java 2008-06-04 17:02:14 UTC (rev 939) @@ -104,35 +104,7 @@ return loadingLabel; } -// class BlinkLabel extends JLabel implements Runnable{ -// private boolean blinking = false; -// -// public void start(){ -// blinking = true; -// new Thread(this).start(); -// } -// public void stop(){ -// blinking = false; -// setForeground(Color.black); -// -// } -// public void run(){ -// while(blinking){ -// setText("Loading Concept"); -// -// //setForeground(Color.red); -// try { -// Thread.sleep(300); -// } catch (InterruptedException e) { -// return; -// } -// setText(""); -// -// } -// if(!blinking) -// setText("Done! Select Concept and press 'Next'"); -// } -// } + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/KnowledgeSourcePanelDescriptor.java 2008-06-04 17:02:14 UTC (rev 939) @@ -102,7 +102,7 @@ for (NamedClass cl : ind){ publish(cl); nextPanel.panel3.getModel().addElement(cl); - System.out.println(cl.toString()); + } return ind; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-06-04 17:02:14 UTC (rev 939) @@ -3,6 +3,8 @@ import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; import java.awt.geom.Ellipse2D; import java.awt.geom.RoundRectangle2D; @@ -12,7 +14,7 @@ import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.JSlider; +import javax.swing.JTextField; import javax.swing.event.ListSelectionListener; import org.jdesktop.swingx.JXBusyLabel; @@ -34,6 +36,8 @@ private JButton startButton; private JButton stopButton; + private JTextField noiseField; + @SuppressWarnings("unchecked") public LearningPanel() { @@ -81,17 +85,29 @@ resultList = new JList(model); // resultList.setCellRenderer(new ColumnListCellRenderer()); - scroll.setPreferredSize(new Dimension(400, 400)); + scroll.setPreferredSize(new Dimension(900, 400)); scroll.setViewportView(resultList); - JSlider noise = new JSlider(JSlider.HORIZONTAL, 0, 100, 0); - noise.setMajorTickSpacing(50); - noise.setMinorTickSpacing(25); - noise.setPaintTicks(true); - noise.setPaintLabels(true); + noiseField = new JTextField("noise"); + noiseField.setText("0.0"); + + noiseField.addKeyListener(new KeyAdapter() { + @Override + public void keyTyped(KeyEvent e) { + char c = e.getKeyChar(); + if (!((Character.isDigit(c) || + (c == KeyEvent.VK_BACK_SPACE) || + (c == KeyEvent.VK_DELETE)))) { + getToolkit().beep(); + e.consume(); + } + + } + }); + contentPanel1.add(scroll); - contentPanel1.add(noise); + contentPanel1.add(noiseField); @@ -135,6 +151,9 @@ resultList.addListSelectionListener(l); } + public double getNoise(){ + return Double.parseDouble(noiseField.getText()); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-06-04 17:02:14 UTC (rev 939) @@ -54,26 +54,35 @@ class ResultSwingWorker extends SwingWorker<List<Description>, List<Description>> { LearningAlgorithm la; + @Override public List<Description> doInBackground() { panel4.getResultList().setCellRenderer(new ColumnListCellRenderer(getWizardModel().getOre())); panel4.getLoadingLabel().setBusy(true); panel4.getStatusLabel().setText("Learning"); - la = getWizardModel().getOre().start(); + + getWizardModel().getOre().setNoise(panel4.getNoise()); + + la = getWizardModel().getOre().start(); + + + + timer = new Timer(); timer.schedule(new TimerTask() { @SuppressWarnings("unchecked") @Override public void run() { + publish(getWizardModel().getOre().getLearningResults(10)); + } }, 0, 1000); - List<Description> result = getWizardModel().getOre() - .getLearningResults(5); + List<Description> result = getWizardModel().getOre().getLearningResults(10); return result; } @@ -103,8 +112,6 @@ protected void process(List<List<Description>> resultLists) { panel4.getModel().clear(); for (List<Description> list : resultLists) { - for( Description d : list) - System.out.println(d); updateList(list); } } @@ -115,8 +122,6 @@ public void run() { panel4.getModel().clear(); for (Description d : result) { - System.err.println(d+"=="+getWizardModel().getOre().getCorrectness(d)); - panel4.getModel().addElement(d); } @@ -176,6 +181,7 @@ getWizardModel().getOre().getLa().stop(); panel4.getStartButton().setEnabled(true); panel4.getStatusLabel().setText("Algorithm aborted"); + panel4.getLoadingLabel().setBusy(false); } @@ -186,7 +192,7 @@ setNextButtonAccordingToConceptSelected(); if (!e.getValueIsAdjusting()) getWizardModel().getOre().setConceptToAdd((Description)(panel4.getResultList().getSelectedValue())); - System.out.println(panel4.getResultList().getSelectedValue()); + } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/MoveDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/MoveDialog.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/MoveDialog.java 2008-06-04 17:02:14 UTC (rev 939) @@ -1,106 +0,0 @@ -package org.dllearner.tools.ore; - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.Set; - -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JScrollPane; - -import org.dllearner.core.owl.NamedClass; - -public class MoveDialog extends JDialog{ - - /** - * - */ - private static final long serialVersionUID = 1L; - - Box buttonBox; - JButton okButton; - JButton cancelButton; - JPanel buttonPanel; - JPanel listPanel; - JScrollPane scroll; - JList conceptList; - Set<NamedClass> allConcepts; - NamedClass selectedValue;; - - - public MoveDialog(Set<NamedClass> allConcepts, JDialog dialog){ - super(dialog, "Auswahl", true); - this.allConcepts = allConcepts; - - } - - public void init(){ - setSize(500, 500); - buttonBox = new Box(BoxLayout.X_AXIS); - - okButton = new JButton("Ok"); - okButton.addActionListener(new ActionListener(){ - - public void actionPerformed(ActionEvent e) { - if(e.getActionCommand().equals("Ok")){ - - selectedValue = (NamedClass)conceptList.getSelectedValue(); - - dispose(); - } - - } - }); - cancelButton = new JButton("Cancel"); - cancelButton.addActionListener(new ActionListener(){ - - public void actionPerformed(ActionEvent e) { - if(e.getActionCommand().equals("Cancel")){ - - - dispose(); - } - - } - }); - - buttonBox.add(okButton); - buttonBox.add(Box.createHorizontalStrut(30)); - buttonBox.add(cancelButton); - - buttonPanel = new JPanel(); - buttonPanel.setLayout(new BorderLayout()); - buttonPanel.add(buttonBox, java.awt.BorderLayout.EAST); - - listPanel = new JPanel(); - DefaultListModel model = new DefaultListModel(); - for (NamedClass cl : allConcepts) { - model.addElement(cl); - - } - - scroll = new JScrollPane(); - conceptList = new JList(model); - scroll.setPreferredSize(new Dimension(400, 400)); - scroll.setViewportView(conceptList); - listPanel.add(scroll); - - getContentPane().add(buttonPanel, java.awt.BorderLayout.SOUTH); - getContentPane().add(listPanel, java.awt.BorderLayout.CENTER); - - setVisible(true); - - } - - public NamedClass getSelectedValue(){ - return selectedValue; - } - -} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java (from rev 928, trunk/src/dl-learner/org/dllearner/tools/ore/MoveDialog.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-06-04 17:02:14 UTC (rev 939) @@ -0,0 +1,223 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.GridLayout; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Set; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSeparator; +import javax.swing.JTextArea; +import javax.swing.UIManager; +import javax.swing.border.EmptyBorder; +import javax.swing.border.TitledBorder; + +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.reasoning.OWLAPIReasoner; + +public class NegExampleRepairDialog extends JDialog implements ActionListener{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + + private JPanel statsPanel; + private JPanel actionsPanel; + private JPanel ok_cancelPanel; + + private JButton okButton; + private JButton cancelButton; + + + private JTextArea classesField; + private JScrollPane scrollPane; + + private ORE ore; + private Individual ind; + private OWLAPIReasoner reasoner; + + public NegExampleRepairDialog(Individual ind, JDialog dialog, ORE ore){ + super(dialog, "Auswahl", true); + this.ind = ind; + this.ore = ore; + this.reasoner = ore.reasoner; + init(); + } + + public void init(){ + setSize(700, 700); + setLayout(new GridLayout(3, 0)); + + statsPanel = new JPanel(); + statsPanel.setBorder(new TitledBorder("stats")); + + getContentPane().add(statsPanel); + + GridBagLayout gbl = new GridBagLayout(); + statsPanel.setLayout(gbl); + + + GridBagConstraints gbc = new GridBagConstraints(); + JLabel descLb = new JLabel("Description:"); + JLabel indLb = new JLabel("Individual:"); + JLabel classLb = new JLabel("Classes:"); + + + JLabel descLb1 = new JLabel(ore.conceptToAdd.toString()); + JLabel indLb1 = new JLabel(ind.getName()); + Set<NamedClass> t = reasoner.getConcepts(ind); + classesField = new JTextArea(); + String classes = new String(); + for(NamedClass nc : t) + classes += nc.getName() +"\n"; + classesField.setText(classes); + + scrollPane = new JScrollPane(); + scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + scrollPane.setViewportBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); + scrollPane.setPreferredSize(new Dimension(150,100)); + classesField.setBackground(UIManager.getDefaults().getColor("control")); + classesField.setColumns(20); + classesField.setEditable(false); + classesField.setLineWrap(true); + classesField.setRows(5); + classesField.setWrapStyleWord(true); + scrollPane.setViewportView(classesField); + + gbc.gridx = 0; // first column + gbc.gridy = 0; // first row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 20; // relative horizontal size - first column + gbc.weighty = 10; // relative vertical size - first row + gbc.fill = GridBagConstraints.NONE; // stay as small as possible + // suite for labels + gbc.anchor = GridBagConstraints.CENTER; // center aligning + //inform the layout about the control to be added and its constraints: + gbl.setConstraints(descLb, gbc); + statsPanel.add(descLb); //add the JLabel to the JPanel object + + gbc.gridx = 0; // first column + gbc.gridy = 1; // second row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 0; // !!! horizontal size for the column is defined already! + gbc.weighty = 10; // relative vertical size - second row + gbc.fill = GridBagConstraints.NONE; // stay as small as possible, suites for labels + gbc.anchor = GridBagConstraints.CENTER; // center aligning + //inform the layout about the control to be added and its constraints: + gbl.setConstraints(indLb, gbc); + statsPanel.add(indLb); + + gbc.gridx = 0; // first column + gbc.gridy = 2; // third row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 0; // !!! horizontal size for the column is defined already! + gbc.weighty = 10; // relative vertical size - second row + gbc.fill = GridBagConstraints.NONE; // stay as small as possible, suites for labels + gbc.anchor = GridBagConstraints.CENTER; // center aligning + //inform the layout about the control to be added and its constraints: + gbl.setConstraints(classLb, gbc); + statsPanel.add(classLb); + + gbc.gridx = 1; // second column + gbc.gridy = 0; // first row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 100; // horizontal size - second column + gbc.weighty = 0; // !!! vertical size for the row is defined already! + gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell + gbc.anchor = GridBagConstraints.CENTER; // center aligning + + gbl.setConstraints(descLb1, gbc); + statsPanel.add(descLb1); + + gbc.gridx = 1; // second column + gbc.gridy = 1; // second row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 0; // horizontal size for the column is defined already! + gbc.weighty = 0; // vertical size for the row is defined already! + gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell + gbc.anchor = GridBagConstraints.CENTER; // center aligning + + gbl.setConstraints(indLb1, gbc); + statsPanel.add(indLb1); + + gbc.gridx = 2; // third column + gbc.gridy = 2; // third row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 0; // horizontal size for the column is defined already! + gbc.weighty = 0; // vertical size for the row is defined already! + gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell + gbc.anchor = GridBagConstraints.WEST; // west aligning + + gbl.setConstraints(scrollPane, gbc); + statsPanel.add(scrollPane); + + actionsPanel = new JPanel(); + actionsPanel.setBorder(new TitledBorder("actions")); + JButton delete = new JButton("delete instance"); + delete.addActionListener(this); + actionsPanel.add(delete); + JButton save = new JButton("save"); + save.addActionListener(this); + actionsPanel.add(save); + getContentPane().add(actionsPanel, java.awt.BorderLayout.EAST); + + JSeparator separator = new JSeparator(); + Box buttonBox = new Box(BoxLayout.X_AXIS); + ok_cancelPanel = new JPanel(); + ok_cancelPanel.setLayout(new BorderLayout()); + ok_cancelPanel.add(separator, BorderLayout.NORTH); + okButton = new JButton("Ok"); + cancelButton = new JButton("Cancel"); + + buttonBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10))); + buttonBox.add(okButton); + buttonBox.add(Box.createHorizontalStrut(10)); + buttonBox.add(cancelButton); + ok_cancelPanel.add(buttonBox, BorderLayout.EAST); + + getContentPane().add(ok_cancelPanel); + + + setModal(true); + setVisible(true); + + } + + @Override + public void actionPerformed(ActionEvent e) { + System.out.println(e.getActionCommand()); + if(e.getActionCommand().equals("delete instance")){ + ore.modi.deleteIndividual(ind); + + } + if(e.getActionCommand().equals("save")){ + ore.modi.saveOntology(); + } + + + } + + + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-04 17:02:14 UTC (rev 939) @@ -2,6 +2,7 @@ import java.io.File; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -17,11 +18,16 @@ import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Union; import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.PosNegDefinitionLP; +import org.dllearner.reasoning.FastInstanceChecker; import org.dllearner.reasoning.OWLAPIReasoner; + + public class ORE { private LearningAlgorithm la; @@ -29,6 +35,7 @@ private KnowledgeSource ks; private PosNegDefinitionLP lp; private ComponentManager cm; + OWLAPIReasoner reasoner; SortedSet<Individual> posExamples; SortedSet<Individual> negExamples; @@ -36,12 +43,13 @@ Description conceptToAdd; OntologyModifierOWLAPI modi; Set<NamedClass> allAtomicConcepts; + private double noise; public ORE() { cm = ComponentManager.getInstance(); - + } // step 1: detect knowledge sources @@ -98,6 +106,11 @@ lp.init(); } + public void setNoise(double noise){ + + this.noise = noise; + } + public void setLearningAlgorithm(){ try { la = cm.learningAlgorithm(ExampleBasedROLComponent.class, lp, rs); @@ -110,6 +123,7 @@ Set<String> t = new TreeSet<String>(); t.add(concept.getName()); cm.applyConfigEntry(la, "ignoredConcepts", t ); + cm.applyConfigEntry(la, "noisePercentage", noise); try { la.init(); } catch (ComponentInitException e) { @@ -125,11 +139,13 @@ public LearningAlgorithm start(){ + this.setPosNegExamples(); this.setLearningProblem(); this.setLearningAlgorithm(); + la.start(); - + return la; } @@ -138,6 +154,10 @@ return la.getBestSolution(); } + public List<Description> getSolutions(){ + return la.getGoodSolutions(); + } + public List<Description> getLearningResults(int anzahl){ return la.getBestSolutions(anzahl); } @@ -165,10 +185,20 @@ } public HashSet<Individual> getNegFailureExamples(){ + FastInstanceChecker instanceReasoner = cm.reasoner(FastInstanceChecker.class, ks); + try { + instanceReasoner.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + ReasoningService instanceRs = cm.reasoningService(instanceReasoner); + HashSet<Individual> negFailureExamples = new HashSet<Individual>() ; for(Individual ind : negExamples){ - if(rs.instanceCheck(conceptToAdd, ind)) + if(instanceRs.instanceCheck(conceptToAdd, ind)) negFailureExamples.add(ind); } @@ -176,13 +206,56 @@ return negFailureExamples; } - public SortedSet<Individual> getPosFailureExamples(){ + public List<HashSet<Individual>> getFailureExamples(){ + List<HashSet<Individual>> list = new ArrayList<HashSet<Individual>>(); - SortedSet<Individual> posFailureExamples = null ; + FastInstanceChecker instanceReasoner = cm.reasoner(FastInstanceChecker.class, ks); + try { + instanceReasoner.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + ReasoningService instanceRs = cm.reasoningService(instanceReasoner); + HashSet<Individual> posFailureExamples = new HashSet<Individual>() ; for(Individual ind : posExamples){ - if(!rs.instanceCheck(conceptToAdd, ind)) + if(!instanceRs.instanceCheck(conceptToAdd, ind)) posFailureExamples.add(ind); + } + + HashSet<Individual> negFailureExamples = new HashSet<Individual>() ; + for(Individual ind : negExamples){ + if(instanceRs.instanceCheck(conceptToAdd, ind)) + negFailureExamples.add(ind); + } + + list.add(posFailureExamples); + list.add(negFailureExamples); + + + + return list; + + } + public HashSet<Individual> getPosFailureExamples(){ + FastInstanceChecker instanceReasoner = cm.reasoner(FastInstanceChecker.class, ks); + try { + instanceReasoner.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + ReasoningService instanceRs = cm.reasoningService(instanceReasoner); + + HashSet<Individual> posFailureExamples = new HashSet<Individual>() ; + + + for(Individual ind : posExamples){ + if(!instanceRs.instanceCheck(conceptToAdd, ind)) + posFailureExamples.add(ind); } @@ -218,26 +291,51 @@ this.allAtomicConcepts = allAtomicConcepts; } + public void getAllChildren(Description desc){ + + if(desc.getNumberOfNodes() >= 2) + for(Description d: desc.getChildren()) + getAllChildren(d); + System.out.println(desc); + } + + public Set<Description> getCriticalDescriptions(Individual ind, Description desc){ + + Set<Description> criticals = new HashSet<Description>(); + List<Description> children = desc.getChildren(); + + if(desc instanceof Intersection){ + criticals.addAll(children); + } + if(desc instanceof Union){ + for(Description d: children) + if(reasoner.instanceCheck(d, ind)) + criticals.add(d); + } + + + return criticals; + } + public static void main(String[] args){ -// ORE test = new ORE(); -// -// File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/father.owl"); -// -// test.setKnowledgeSource(owlFile); -// -// test.detectReasoner(); -// ReasoningService rs = test.getReasoningService(); -// System.err.println("Concepts :" + rs.getAtomicConcepts()); -// -// -// test.setConcept(new NamedClass("http://example.com/father#father")); -// test.setPosNegExamples(); -// System.out.println(test.posExamples); -// System.out.println(test.negExamples); -// test.setLearningProblem(); -// test.setLearningAlgorithm(); -// test.start(); + ORE test = new ORE(); + + File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/father.owl"); + + test.setKnowledgeSource(owlFile); + + test.detectReasoner(); + ReasoningService rs = test.getReasoningService(); + System.err.println("Concepts :" + rs.getAtomicConcepts()); + + + test.setConcept(new NamedClass("http://example.com/father#father")); + test.setPosNegExamples(); + System.out.println(test.posExamples); + System.out.println(test.negExamples); + test.start(); + test.la.start();//Bug? } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-06-04 17:02:14 UTC (rev 939) @@ -14,6 +14,7 @@ import org.semanticweb.owl.io.RDFXMLOntologyFormat; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLClassAssertionAxiom; import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLIndividual; @@ -21,6 +22,7 @@ import org.semanticweb.owl.model.OWLOntologyChangeException; import org.semanticweb.owl.model.OWLOntologyManager; import org.semanticweb.owl.model.OWLOntologyStorageException; +import org.semanticweb.owl.model.RemoveAxiom; import org.semanticweb.owl.model.UnknownOWLOntologyException; import org.semanticweb.owl.util.OWLEntityRemover; @@ -50,7 +52,7 @@ OWLAxiom axiomOWLAPI = factory.getOWLEquivalentClassesAxiom(ds); - + AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); try { manager.applyChange(axiom); @@ -103,12 +105,11 @@ } - public void moveIndividual(Individual ind, Description oldConcept, Description newConcept){ + public void removeClassAssertion(Individual ind, Description desc){ - OWLIndividual individualOWLAPI = null; + OWLDescription owlDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); - try { individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); } catch (URISyntaxException e) { @@ -116,18 +117,40 @@ e.printStackTrace(); } - //Loeschen - OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); - individualOWLAPI.accept(remover); + OWLClassAssertionAxiom owlCl = factory.getOWLClassAssertionAxiom(individualOWLAPI, owlDesc); + + + RemoveAxiom rm = new RemoveAxiom(ontology, owlCl); + + + try { - manager.applyChanges(remover.getChanges()); + manager.applyChange(rm); } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } - remover.reset(); + } + + public void moveIndividual(Individual ind, Description oldConcept, Description newConcept){ + + + OWLIndividual individualOWLAPI = null; + + + try { + individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); + } catch (URISyntaxException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + //Loeschen + removeClassAssertion(ind, oldConcept); + + //Hinzufuegen OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newConcept); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanel.java 2008-06-04 17:02:14 UTC (rev 939) @@ -131,12 +131,13 @@ return negFailureList; } - public void addSelectionListener(ListSelectionListener l){ + public void addSelectionListeners(ListSelectionListener l){ posFailureList.addListSelectionListener(l); negFailureList.addListSelectionListener(l); } - public void addMouseListener(MouseListener m){ + + public void addMouseListeners(MouseListener m){ posFailureList.addMouseListener(m); negFailureList.addMouseListener(m); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-06-04 17:02:14 UTC (rev 939) @@ -25,8 +25,8 @@ panel4 = new RepairPanel(); panel4.addSaveButtonListener(this); - panel4.addSelectionListener(this); - panel4.addMouseListener(this); + panel4.addSelectionListeners(this); + panel4.addMouseListeners(this); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(panel4); @@ -67,7 +67,7 @@ public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2 && e.getSource() == panel4.getNegFailureList() ){ - System.out.println(panel4.getNegFailureList().getSelectedValue()); + new NegExampleRepairDialog((Individual)panel4.getNegFailureList().getSelectedValue(), getWizard().getDialog(), getWizardModel().getOre() ); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-06-04 12:07:48 UTC (rev 938) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-06-04 17:02:14 UTC (rev 939) @@ -3,8 +3,8 @@ import java.awt.event.ActionListener; import java.util.HashSet; +import java.util.List; import java.util.Set; -import java.util.SortedSet; import java.util.concurrent.ExecutionException; import javax.swing.DefaultListModel; @@ -75,8 +75,15 @@ if( nextPanelDescriptor.equals("REPAIR_PANEL")){ ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getNegFailureModel().clear(); - wizard.getModel().getOre().getModi().addAxiomToOWL(wizard.getModel().getOre().getConceptToAdd(), wizard.getModel().getOre().getConcept()); + ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getPosFailureModel().clear(); +// wizard.getModel().getOre().getModi().addAxiomToOWL(wizard.getModel().getOre().getConceptToAdd(), wizard.getModel().getOre().getConcept()); new FailInstancesRetriever(nextPanelDescriptor).execute(); + +// for(Description desc : wizard.getModel().getOre().getConceptToAdd().getChildren()) +// System.out.println(desc); + + + } if (nextPanelDescriptor instanceof WizardPanelDescriptor.FinishIdentifier) { @@ -93,7 +100,8 @@ } - + + private void backButtonPressed() { WizardModel model = wizard.getModel(); @@ -219,7 +227,7 @@ dm.addElement(cl); //nextPanel.panel3.getModel().addElement(cl); - System.out.println(cl.getName()); + } wizard.getModel().getOre().setAllAtomicConcepts(ind); nextPanel.panel3.getList().setModel(dm); @@ -231,7 +239,7 @@ } } - class FailInstancesRetriever extends SwingWorker<HashSet<Individual>, Individual> { + class FailInstancesRetriever extends SwingWorker<List<HashSet<Individual>>, HashSet<Individual>> { Object nextPanelID; public FailInstancesRetriever(Object nextPanelDescriptor) { @@ -240,7 +248,7 @@ } @Override - public HashSet<Individual> doInBackground() { + public List<HashSet<Individual>> doInBackground() { ((RepairPanelDescriptor) wizard.getModel().getPanelHashMap().get( nextPanelID)).panel4.getStatusLabel().setText( @@ -250,17 +258,17 @@ - HashSet<Individual> ind = wizard.getModel().getOre() - .getNegFailureExamples(); + List<HashSet<Individual>> indList = wizard.getModel().getOre() + .getFailureExamples(); - return ind; + return indList; } @Override public void done() { - HashSet<Individual> ind = null; + List<HashSet<Individual>> indList = null; try { - ind = get(); + indList = get(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -270,12 +278,17 @@ } RepairPanelDescriptor nextPanel = (RepairPanelDescriptor) wizard .getModel().getPanelHashMap().get(nextPanelID); - DefaultListModel dm = nextPanel.panel4.getNegFailureModel(); - - for (Individual cl : ind) { - dm.addElement(cl); - System.out.println(cl.getName()); + DefaultListModel posDm = nextPanel.panel4.getPosFailureModel(); + DefaultListModel negDm = nextPanel.panel4.getNegFailureModel(); + + for (Individual posInd : indList.get(0)) { + posDm.addElement(posInd); + System.out.println(posInd.getName()); } + for (Individual negInd : indList.get(1)) { + negDm.addElement(negInd); + System.out.println(negInd.getName()); + } nextPanel.panel4.getStatusLabel().setText( "Instances loaded"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-06-17 10:56:44
|
Revision: 964 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=964&view=rev Author: lorenz_b Date: 2008-06-17 03:56:39 -0700 (Tue, 17 Jun 2008) Log Message: ----------- added some repair-methods and integrated in GUI Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java 2008-06-17 10:53:42 UTC (rev 963) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConceptPanelDescriptor.java 2008-06-17 10:56:39 UTC (rev 964) @@ -37,9 +37,10 @@ @Override public void aboutToDisplayPanel() { setNextButtonAccordingToConceptSelected(); - } + } + + - public void valueChanged(ListSelectionEvent e) { setNextButtonAccordingToConceptSelected(); if (!e.getValueIsAdjusting()) @@ -56,6 +57,10 @@ } } + + + + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-06-17 10:53:42 UTC (rev 963) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-06-17 10:56:39 UTC (rev 964) @@ -4,7 +4,6 @@ import java.awt.event.ActionListener; import java.util.List; import java.util.Timer; -import java.util.TimerTask; import java.util.concurrent.ExecutionException; import javax.swing.SwingUtilities; @@ -14,6 +13,7 @@ import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.ObjectSomeRestriction; @@ -25,6 +25,7 @@ LearningPanel panel4; ResultSwingWorker worker; Timer timer; + Boolean canceled = false; public LearningPanelDescriptor() { @@ -56,32 +57,19 @@ LearningAlgorithm la; + @SuppressWarnings("unchecked") @Override public List<Description> doInBackground() { panel4.getResultList().setCellRenderer(new ColumnListCellRenderer(getWizardModel().getOre())); panel4.getLoadingLabel().setBusy(true); panel4.getStatusLabel().setText("Learning"); - getWizardModel().getOre().setNoise(panel4.getNoise()); - la = getWizardModel().getOre().start(); - - + la = getWizardModel().getOre().start();//started endlosen Algorithmus - timer = new Timer(); - timer.schedule(new TimerTask() { - - @SuppressWarnings("unchecked") - @Override - public void run() { - - publish(getWizardModel().getOre().getLearningResults(10)); + publish(la.getBestSolutions(10)); - } - - }, 0, 1000); - List<Description> result = getWizardModel().getOre().getLearningResults(10); return result; @@ -91,7 +79,6 @@ public void done() { - timer.cancel(); List<Description> result = null; try { result = get(); @@ -111,6 +98,7 @@ @Override protected void process(List<List<Description>> resultLists) { panel4.getModel().clear(); + for (List<Description> list : resultLists) { updateList(list); } @@ -123,6 +111,7 @@ panel4.getModel().clear(); for (Description d : result) { panel4.getModel().addElement(d); + } } @@ -177,6 +166,7 @@ worker.execute(); } else{ + canceled = true; panel4.getStopButton().setEnabled(false); getWizardModel().getOre().getLa().stop(); panel4.getStartButton().setEnabled(true); @@ -190,10 +180,25 @@ public void valueChanged(ListSelectionEvent e) { setNextButtonAccordingToConceptSelected(); - if (!e.getValueIsAdjusting()) + if (!e.getValueIsAdjusting()){ getWizardModel().getOre().setConceptToAdd((Description)(panel4.getResultList().getSelectedValue())); + for(Description d: getWizardModel().getOre().getAllChildren((Description)(panel4.getResultList().getSelectedValue()))){ + System.out.println(d + " : " + d.getClass()); + + if(d instanceof ObjectSomeRestriction){ + + + getWizardModel().getOre().getIndividualsOfPropertyRange((ObjectSomeRestriction)d); + + + + } + + } + } + } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-06-17 10:53:42 UTC (rev 963) +++ trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-06-17 10:56:39 UTC (rev 964) @@ -1,7 +1,6 @@ package org.dllearner.tools.ore; import java.awt.BorderLayout; -import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; @@ -10,7 +9,6 @@ import java.awt.event.ActionListener; import java.util.Set; -import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; @@ -19,13 +17,15 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSeparator; -import javax.swing.JTextArea; -import javax.swing.UIManager; +import javax.swing.SwingUtilities; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; +import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.reasoning.OWLAPIReasoner; public class NegExampleRepairDialog extends JDialog implements ActionListener{ @@ -39,34 +39,41 @@ private JPanel statsPanel; private JPanel actionsPanel; private JPanel ok_cancelPanel; - + private JPanel action_stats_Panel; + + private JButton okButton; private JButton cancelButton; - private JTextArea classesField; - private JScrollPane scrollPane; private ORE ore; private Individual ind; private OWLAPIReasoner reasoner; + private Description actualDesc; + private Description newDesc; + private Individual object; + public NegExampleRepairDialog(Individual ind, JDialog dialog, ORE ore){ - super(dialog, "Auswahl", true); + super(dialog, "Repair negative example", true); this.ind = ind; this.ore = ore; - this.reasoner = ore.reasoner; + this.reasoner = ore.reasoner2; init(); } public void init(){ setSize(700, 700); - setLayout(new GridLayout(3, 0)); + setLayout(new BorderLayout()); + action_stats_Panel = new JPanel(); + action_stats_Panel.setLayout(new GridLayout(2,0)); + statsPanel = new JPanel(); statsPanel.setBorder(new TitledBorder("stats")); - getContentPane().add(statsPanel); + GridBagLayout gbl = new GridBagLayout(); statsPanel.setLayout(gbl); @@ -80,25 +87,18 @@ JLabel descLb1 = new JLabel(ore.conceptToAdd.toString()); JLabel indLb1 = new JLabel(ind.getName()); - Set<NamedClass> t = reasoner.getConcepts(ind); - classesField = new JTextArea(); - String classes = new String(); - for(NamedClass nc : t) - classes += nc.getName() +"\n"; - classesField.setText(classes); - - scrollPane = new JScrollPane(); - scrollPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - scrollPane.setViewportBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - scrollPane.setPreferredSize(new Dimension(150,100)); - classesField.setBackground(UIManager.getDefaults().getColor("control")); - classesField.setColumns(20); - classesField.setEditable(false); - classesField.setLineWrap(true); - classesField.setRows(5); - classesField.setWrapStyleWord(true); - scrollPane.setViewportView(classesField); + Set<NamedClass> t = null; + + JPanel classesPanel = new JPanel(new GridLayout(0, 1)); + + t = reasoner.getConcepts(ind); + t.add(ore.getConcept()); + for(NamedClass nc : t) + classesPanel.add(new JLabel(nc.getName())); + + + gbc.gridx = 0; // first column gbc.gridy = 0; // first row gbc.gridwidth = 1; // occupies only one column @@ -160,43 +160,73 @@ gbl.setConstraints(indLb1, gbc); statsPanel.add(indLb1); - gbc.gridx = 2; // third column + gbc.gridx = 1; // second column gbc.gridy = 2; // third row gbc.gridwidth = 1; // occupies only one column gbc.gridheight = 1; // occupies only one row gbc.weightx = 0; // horizontal size for the column is defined already! gbc.weighty = 0; // vertical size for the row is defined already! gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell - gbc.anchor = GridBagConstraints.WEST; // west aligning + gbc.anchor = GridBagConstraints.CENTER; // center aligning - gbl.setConstraints(scrollPane, gbc); - statsPanel.add(scrollPane); +// gbl.setConstraints(scrollPane, gbc); +// statsPanel.add(scrollPane); + gbl.setConstraints(classesPanel, gbc); + statsPanel.add(classesPanel); + - actionsPanel = new JPanel(); + actionsPanel = new JPanel(new GridLayout(0, 1)); + + + actionsPanel.setBorder(new TitledBorder("actions")); JButton delete = new JButton("delete instance"); delete.addActionListener(this); actionsPanel.add(delete); - JButton save = new JButton("save"); - save.addActionListener(this); - actionsPanel.add(save); - getContentPane().add(actionsPanel, java.awt.BorderLayout.EAST); + for(Description d :ore.getCriticalDescriptions(ind, ore.getConceptToAdd())){ + + if(!(d instanceof Negation)){ + if(d instanceof NamedClass){ + actionsPanel.add(new DescriptionButton("remove class assertion to " + d.toString(), d ,this)); + actionsPanel.add(new DescriptionButton("move class assertion " + d.toString() + " to ...", d, this)); + } + else if(d instanceof ObjectSomeRestriction) + actionsPanel.add(new DescriptionButton("remove property assertion " + d.toString(), d, this)); + } + else if(d instanceof Negation){ + if(d.getChild(0) instanceof NamedClass) + actionsPanel.add(new DescriptionButton("add class assertion to " + d.getChild(0).toString(), d, this)); + else if(d.getChild(0) instanceof ObjectSomeRestriction) + actionsPanel.add(new DescriptionButton("add property " + d.toString(), d, this)); + } + } + JScrollPane scroll = new JScrollPane(); + scroll.setViewportView(statsPanel); + action_stats_Panel.add(scroll); + action_stats_Panel.add(actionsPanel); + JSeparator separator = new JSeparator(); Box buttonBox = new Box(BoxLayout.X_AXIS); + ok_cancelPanel = new JPanel(); ok_cancelPanel.setLayout(new BorderLayout()); ok_cancelPanel.add(separator, BorderLayout.NORTH); okButton = new JButton("Ok"); cancelButton = new JButton("Cancel"); + + getContentPane().add(ok_cancelPanel, java.awt.BorderLayout.SOUTH); + getContentPane().add(action_stats_Panel, java.awt.BorderLayout.CENTER); + + buttonBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10))); buttonBox.add(okButton); buttonBox.add(Box.createHorizontalStrut(10)); buttonBox.add(cancelButton); ok_cancelPanel.add(buttonBox, BorderLayout.EAST); - getContentPane().add(ok_cancelPanel); + getContentPane().add(ok_cancelPanel, BorderLayout.SOUTH); setModal(true); @@ -205,18 +235,52 @@ } public void actionPerformed(ActionEvent e) { - System.out.println(e.getActionCommand()); + + if(e.getActionCommand().equals("delete instance")){ ore.modi.deleteIndividual(ind); + } + else{ + actualDesc = ((DescriptionButton)e.getSource()).getDescription(); + if(e.getActionCommand().startsWith("remove class")){ + ore.modi.removeClassAssertion(ind, actualDesc); + } + else if(e.getActionCommand().startsWith("move class")){ + SwingUtilities.invokeLater(new Runnable(){ + + @Override + public void run() { + newDesc = (Description)new ChooseDialog(ore, ind).getSelectedElement(); + } + + }); + if(newDesc != null) + ore.modi.moveIndividual(ind, actualDesc, newDesc); + + } + else if(e.getActionCommand().equals("add property")){ + SwingUtilities.invokeLater(new Runnable(){ + + @Override + public void run() { + object = (Individual)new ChooseDialog(ore, actualDesc).getSelectedElement(); + } + + }); + if(newDesc != null) + + ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, object); + } } - if(e.getActionCommand().equals("save")){ - ore.modi.saveOntology(); - } - - } + + + + + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-17 10:53:42 UTC (rev 963) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-17 10:56:39 UTC (rev 964) @@ -15,11 +15,14 @@ import org.dllearner.core.KnowledgeSource; import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.LearningProblemUnsupportedException; +import org.dllearner.core.ReasoningMethodUnsupportedException; import org.dllearner.core.ReasoningService; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.core.owl.Union; import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.PosNegDefinitionLP; @@ -36,16 +39,19 @@ private PosNegDefinitionLP lp; private ComponentManager cm; - OWLAPIReasoner reasoner; + FastInstanceChecker reasoner; + OWLAPIReasoner reasoner2; SortedSet<Individual> posExamples; SortedSet<Individual> negExamples; NamedClass concept; Description conceptToAdd; OntologyModifierOWLAPI modi; Set<NamedClass> allAtomicConcepts; - private double noise; + private double noise = 0.0; + Thread t; + public ORE() { cm = ComponentManager.getInstance(); @@ -60,7 +66,7 @@ ks = cm.knowledgeSource(owl); cm.applyConfigEntry(ks, "url", f.toURI().toString()); - + try { ks.init(); } catch (ComponentInitException e) { @@ -74,11 +80,20 @@ public void detectReasoner(){ - reasoner = cm.reasoner(OWLAPIReasoner.class, ks); - reasoner.init(); - + reasoner = cm.reasoner(FastInstanceChecker.class, ks); + try { + reasoner.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + rs = cm.reasoningService(reasoner); - modi = new OntologyModifierOWLAPI(reasoner); + reasoner2 = cm.reasoner(OWLAPIReasoner.class, ks); + reasoner2.init(); + + modi = new OntologyModifierOWLAPI(reasoner2); } public ReasoningService getReasoningService(){ @@ -124,6 +139,7 @@ t.add(concept.getName()); cm.applyConfigEntry(la, "ignoredConcepts", t ); cm.applyConfigEntry(la, "noisePercentage", noise); + cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 5); try { la.init(); } catch (ComponentInitException e) { @@ -145,7 +161,7 @@ this.setLearningAlgorithm(); la.start(); - + return la; } @@ -291,52 +307,160 @@ this.allAtomicConcepts = allAtomicConcepts; } - public void getAllChildren(Description desc){ - - if(desc.getNumberOfNodes() >= 2) - for(Description d: desc.getChildren()) - getAllChildren(d); - System.out.println(desc); - } - + public Set<Description> getAllChildren(Description desc){ + Set<Description> allChildren = new HashSet<Description>(); + List<Description> children = desc.getChildren(); + + if(children.size() >= 2) + for(Description d : children) + allChildren.addAll(getAllChildren(d)); + else + allChildren.add(desc); + + return allChildren; + } + public Set<Description> getCriticalDescriptions(Individual ind, Description desc){ + Set<Description> criticals = new HashSet<Description>(); List<Description> children = desc.getChildren(); - if(desc instanceof Intersection){ - criticals.addAll(children); - } - if(desc instanceof Union){ - for(Description d: children) - if(reasoner.instanceCheck(d, ind)) - criticals.add(d); - } +// if(desc instanceof Negation){ +// if(!(desc.getChild(0) instanceof NamedClass) &&!(desc.getChild(0) instanceof ObjectQuantorRestriction)){ +// negation = !negation; +// criticals.addAll(getCriticalDescriptions(ind, desc.getChild(0))); +// } +// else{ +// if(negation) +// criticals.add(desc.getChild(0)); +// else +// criticals.add(desc); +// +// } +// +// } +// else{ +// +// if(children.size() >= 2){ +// +// if(desc instanceof Intersection){ +// for(Description d: children) +// criticals.addAll(getCriticalDescriptions(ind, d)); +// +// } +// else if(desc instanceof Union){ +// for(Description d: children) +// try { +// if(reasoner.instanceCheck(d, ind)) +// criticals.addAll(getCriticalDescriptions(ind, d)); +// } catch (ReasoningMethodUnsupportedException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// } +// } +// else{ +// +// if(negation) +// criticals.add(new Negation(desc)); +// else +// criticals.add(desc); +// +// } +// +// +// +// } + if(children.size() >= 2){ + + if(desc instanceof Intersection){ + for(Description d: children) + criticals.addAll(getCriticalDescriptions(ind, d)); + + } + else if(desc instanceof Union){ + for(Description d: children) + try { + if(reasoner.instanceCheck(d, ind)) + criticals.addAll(getCriticalDescriptions(ind, d)); + } catch (ReasoningMethodUnsupportedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + else + criticals.add(desc); + return criticals; } + public Set<Individual> getIndividualsOfPropertyRange(ObjectQuantorRestriction objRestr){ + + + System.out.println(objRestr.getChild(0)); + + + Set<Individual> individuals = rs.retrieval(objRestr.getChild(0)); + System.out.println(objRestr.getRole()); + + System.out.println(individuals); + + return individuals; + } + + public Set<NamedClass> getpossibleMoveClasses(Individual ind){ + Set<NamedClass> classes = rs.getAtomicConcepts(); + for(NamedClass nc : classes) + if(rs.instanceCheck(nc, ind)) + classes.remove(nc); + + return classes; + } + + + public static void main(String[] args){ - ORE test = new ORE(); + final ORE test = new ORE(); - File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/father.owl"); + File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/test.owl"); test.setKnowledgeSource(owlFile); test.detectReasoner(); ReasoningService rs = test.getReasoningService(); - System.err.println("Concepts :" + rs.getAtomicConcepts()); +// System.err.println("Concepts :" + rs.getAtomicConcepts()); - test.setConcept(new NamedClass("http://example.com/father#father")); - test.setPosNegExamples(); - System.out.println(test.posExamples); - System.out.println(test.negExamples); - test.start(); - test.la.start();//Bug? +// test.setConcept(new NamedClass("http://example.com/father#father")); +// test.setPosNegExamples(); +// System.out.println(test.posExamples); +// System.out.println(test.negExamples); +// test.start(); + Individual ind = new Individual("http://www.test.owl#lorenz"); + System.out.println(rs.getIndividuals()); + Description d = new Intersection(new NamedClass("http://www.test.owl#A"), new Negation(new Union(new NamedClass("http://www.test.owl#B"), + new Negation(new Intersection(new NamedClass("http://www.test.owl#C"),new Negation(new NamedClass("http://www.test.owl#D"))))))); + System.out.println(d); + System.out.println(test.getCriticalDescriptions(ind, d)); + + + + + + } + + + + +} -} + + + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-06-17 10:53:42 UTC (rev 963) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-06-17 10:56:39 UTC (rev 964) @@ -1,13 +1,15 @@ package org.dllearner.tools.ore; import java.net.URI; -import java.net.URISyntaxException; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; import java.util.Set; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; import org.dllearner.reasoning.OWLAPIReasoner; import org.semanticweb.owl.apibinding.OWLManager; @@ -18,6 +20,10 @@ import org.semanticweb.owl.model.OWLDataFactory; import org.semanticweb.owl.model.OWLDescription; import org.semanticweb.owl.model.OWLIndividual; +import org.semanticweb.owl.model.OWLInverseObjectPropertiesAxiom; +import org.semanticweb.owl.model.OWLObjectProperty; +import org.semanticweb.owl.model.OWLObjectPropertyAssertionAxiom; +import org.semanticweb.owl.model.OWLObjectPropertyExpression; import org.semanticweb.owl.model.OWLOntology; import org.semanticweb.owl.model.OWLOntologyChangeException; import org.semanticweb.owl.model.OWLOntologyManager; @@ -40,7 +46,8 @@ this.factory = manager.getOWLDataFactory(); this.ontology = reasoner.getOWLAPIOntologies().get(0); } - + + public void addAxiomToOWL(Description newDesc, Description oldDesc){ OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newDesc); OWLDescription oldConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(oldDesc); @@ -61,6 +68,7 @@ e.printStackTrace(); } + } public void saveOntology(){ @@ -77,19 +85,14 @@ } } - + /** + * Deletes the complete individual from the ontology + * @param ind + */ public void deleteIndividual(Individual ind){ - OWLIndividual individualOWLAPI = null; + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); - try { - individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); - } catch (URISyntaxException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); individualOWLAPI.accept(remover); @@ -104,29 +107,50 @@ } - + /** + * Removes a classAssertion + * @param ind + * @param desc + */ public void removeClassAssertion(Individual ind, Description desc){ - OWLIndividual individualOWLAPI = null; + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); OWLDescription owlDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); + OWLClassAssertionAxiom owlCl = factory.getOWLClassAssertionAxiom(individualOWLAPI, owlDesc); + + RemoveAxiom rm = new RemoveAxiom(ontology, owlCl); + try { - individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); - } catch (URISyntaxException e) { + manager.applyChange(rm); + } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } + } + /** + * removes classAssertion between individual to a old class, and creates a new classAssertion + * @param ind individual which has to be moved + * @param oldClass class where individual is asserted before + * @param newClass class where individual is moved to + */ + public void moveIndividual(Individual ind, Description oldClass, Description newClass){ - OWLClassAssertionAxiom owlCl = factory.getOWLClassAssertionAxiom(individualOWLAPI, owlDesc); + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); + //Loeschen + removeClassAssertion(ind, oldClass); - RemoveAxiom rm = new RemoveAxiom(ontology, owlCl); + //Hinzufuegen + OWLDescription newClassOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newClass); + + OWLAxiom axiomOWLAPI = factory.getOWLClassAssertionAxiom(individualOWLAPI, newClassOWLAPI); - + AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); try { - manager.applyChange(rm); + manager.applyChange(axiom); } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -134,38 +158,87 @@ } - public void moveIndividual(Individual ind, Description oldConcept, Description newConcept){ + public void deleteObjectProperty(Individual ind, ObjectSomeRestriction objSome){ - - OWLIndividual individualOWLAPI = null; + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); + Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(individualOWLAPI); + Set<OWLInverseObjectPropertiesAxiom> invProperties = ontology.getInverseObjectPropertyAxioms(propertyOWLAPI); + OWLObjectPropertyExpression invProperty = null; + + for(OWLInverseObjectPropertiesAxiom inv : invProperties) + if(propertyOWLAPI.equals(inv.getSecondProperty())) + invProperty = inv.getFirstProperty(); + else + invProperty = inv.getSecondProperty(); + + + List<RemoveAxiom> removeList = new LinkedList<RemoveAxiom>(); + + for(OWLObjectPropertyAssertionAxiom o :properties){ + if( (o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(individualOWLAPI))) + removeList.add(new RemoveAxiom(ontology, o)); + if(invProperty != null) + for(OWLObjectPropertyAssertionAxiom ob :ontology.getObjectPropertyAssertionAxioms(o.getObject())) + if(ob.getProperty().equals(invProperty) && ob.getObject().equals(individualOWLAPI)) + removeList.add(new RemoveAxiom(ontology, ob)); + + + } + try { - individualOWLAPI = factory.getOWLIndividual( new URI(ind.getName())); - } catch (URISyntaxException e) { + manager.applyChanges(removeList); + } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } - //Loeschen - removeClassAssertion(ind, oldConcept); + } + + + public void addObjectProperty(Individual subInd, ObjectSomeRestriction objSome, Individual objInd){ + OWLIndividual subIndividualOWLAPI = factory.getOWLIndividual( URI.create(subInd.getName())); + OWLIndividual objIndividualOWLAPI = factory.getOWLIndividual( URI.create(objInd.getName())); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); - //Hinzufuegen + OWLObjectPropertyAssertionAxiom objAssertion = factory.getOWLObjectPropertyAssertionAxiom(subIndividualOWLAPI, propertyOWLAPI, objIndividualOWLAPI); - OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newConcept); - - OWLAxiom axiomOWLAPI = factory.getOWLClassAssertionAxiom(individualOWLAPI, newConceptOWLAPI); - - AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); + AddAxiom axiom = new AddAxiom(ontology, objAssertion); try { manager.applyChange(axiom); } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } - } +// public OWLOntology copyOntology(){ +// try{ +// OWLOntology ontologyCopy = manager.createOntology(ontology.getURI()); +// +// +// Set<OWLAxiom> axioms = ontology.getAxioms(); +// List<AddAxiom> changes = new LinkedList<AddAxiom>(); +// for(OWLAxiom a : axioms) +// changes.add(new AddAxiom(ontologyCopy, a)); +// +// manager.applyChanges(changes); +// +// return ontologyCopy; +// +// }catch(OWLException e){ +// e.printStackTrace(); +// return null; +// } +// +// +// } + + + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-06-17 10:53:42 UTC (rev 963) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-06-17 10:56:39 UTC (rev 964) @@ -67,7 +67,9 @@ public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2 && e.getSource() == panel4.getNegFailureList() ){ - new NegExampleRepairDialog((Individual)panel4.getNegFailureList().getSelectedValue(), getWizard().getDialog(), getWizardModel().getOre() ); + Individual ind = (Individual)panel4.getNegFailureList().getSelectedValue(); + new NegExampleRepairDialog(ind, getWizard().getDialog(), getWizardModel().getOre()); +// System.out.println(getWizardModel().getOre().getCriticalDescriptions(ind, getWizardModel().getOre().conceptToAdd )); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-06-17 10:53:42 UTC (rev 963) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-06-17 10:56:39 UTC (rev 964) @@ -76,7 +76,7 @@ if( nextPanelDescriptor.equals("REPAIR_PANEL")){ ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getNegFailureModel().clear(); ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getPosFailureModel().clear(); -// wizard.getModel().getOre().getModi().addAxiomToOWL(wizard.getModel().getOre().getConceptToAdd(), wizard.getModel().getOre().getConcept()); + wizard.getModel().getOre().getModi().addAxiomToOWL(wizard.getModel().getOre().getConceptToAdd(), wizard.getModel().getOre().getConcept()); new FailInstancesRetriever(nextPanelDescriptor).execute(); // for(Description desc : wizard.getModel().getOre().getConceptToAdd().getChildren()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-06-22 10:35:03
|
Revision: 974 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=974&view=rev Author: lorenz_b Date: 2008-06-21 07:27:17 -0700 (Sat, 21 Jun 2008) Log Message: ----------- changes in the repair view Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ActionsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionButton.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/ActionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ActionsPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ActionsPanel.java 2008-06-21 14:27:17 UTC (rev 974) @@ -0,0 +1,120 @@ +package org.dllearner.tools.ore; + +import java.awt.Component; +import java.awt.GridLayout; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.border.TitledBorder; + +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.reasoning.OWLAPIReasoner; + +public class ActionsPanel extends JPanel{ + /** + * + */ + private static final long serialVersionUID = -3761077097231343915L; + ORE ore; + Individual ind; + OWLAPIReasoner reasoner; + ActionListener al; + + + public ActionsPanel(ORE ore, Individual ind, ActionListener al){ + super(new GridLayout(0, 1)); + this.ore = ore; + this.ind = ind; + this.reasoner = ore.modi.reasoner; + this.al = al; + } + + public void init(){ + setBorder(new TitledBorder("actions")); + JButton delete = new JButton("delete instance"); + add(delete); + updatePanel(); + +// for(Description d :ore.getCriticalDescriptions(ind, ore.getConceptToAdd())){ +// +// if(!(d instanceof Negation)){ +// if(d instanceof NamedClass){ +// add(new DescriptionButton("remove class assertion to " + d.toString(), d )); +// add(new DescriptionButton("move class assertion " + d.toString() + " to ...", d)); +// } +// else if(d instanceof ObjectSomeRestriction) +// add(new DescriptionButton("remove property assertion " + d.toString(), d)); +// } +// else if(d instanceof Negation){ +// if(d.getChild(0) instanceof NamedClass) +// add(new DescriptionButton("add class assertion to " + d.getChild(0).toString(), d)); +// else if(d.getChild(0) instanceof ObjectSomeRestriction) +// add(new DescriptionButton("add property " + d.toString(), d)); +// } +// } + } + + + public void addActionListeners(ActionListener al){ + for(Component c : getComponents()) + if(c instanceof JButton) + ((JButton)c).addActionListener(al); + } + + public void updatePanel(){//DescriptionButton descBut, Description desc){ + for(Component c : getComponents()) + if(c instanceof DescriptionButton) + remove(c); + + ore.modi.refreshReasoner(); + for(Description d :ore.getCriticalDescriptions(ind, ore.getConceptToAdd())){ + System.out.println(d + " " + ore.modi.reasoner.instanceCheck(d, ind)); + if(ore.modi.reasoner.instanceCheck(d, ind)){ + if(!(d instanceof Negation)){ + if(d instanceof NamedClass){ + add(new DescriptionButton("remove class assertion to " + d.toString(), d )); + add(new DescriptionButton("move class assertion " + d.toString() + " to ...", d)); + } + else if(d instanceof ObjectSomeRestriction) + add(new DescriptionButton("remove property assertion " + d.toString(), d)); + } + else if(d instanceof Negation){ + if(d.getChild(0) instanceof NamedClass) + add(new DescriptionButton("add class assertion to " + d.getChild(0).toString(), d.getChild(0))); + else if(d.getChild(0) instanceof ObjectSomeRestriction) + add(new DescriptionButton("add property " + d.toString(), d)); + } + } + } + addActionListeners(al); + + + + + +// String command = descBut.getActionCommand(); +// if(command.startsWith("remove class")){ +// for(Component c : getComponents()) +// if(c instanceof DescriptionButton && ((DescriptionButton)c).getDescription().equals(desc) && ((DescriptionButton)c).getActionCommand().startsWith("move class")) +// remove(c); +// } +// else if(command.startsWith("move class")){ +// for(Component c : getComponents()) +// if(c instanceof DescriptionButton && ((DescriptionButton)c).getDescription().equals(desc) && ((DescriptionButton)c).getActionCommand().startsWith("remove class")) +// remove(c); +// } +// +// remove(descBut); +// + SwingUtilities.updateComponentTreeUI(this); + + } + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-06-21 14:27:17 UTC (rev 974) @@ -0,0 +1,25 @@ +package org.dllearner.tools.ore; + +import java.awt.GridLayout; + +import javax.swing.JPanel; +import javax.swing.border.TitledBorder; + +public class ChangesPanel extends JPanel{ + + /** + * + */ + private static final long serialVersionUID = -7538532926820669891L; + + public ChangesPanel(){ + super(new GridLayout(0, 1)); + + } + + public void init(){ + setBorder(new TitledBorder("changes")); + } + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java 2008-06-21 14:27:17 UTC (rev 974) @@ -0,0 +1,117 @@ +package org.dllearner.tools.ore; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.DefaultListModel; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JList; +import javax.swing.JPanel; +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; + +public class ChooseDialog extends JDialog implements ActionListener{ + + /** + * + */ + private static final long serialVersionUID = -3554461981184458137L; + + + ORE ore; + DefaultListModel model; + JList list; + private JButton okButton; + private JButton cancelButton; + private Object selectedElement; + private Object chooseValue; + + public ChooseDialog(JDialog parent, ORE ore, Object chooseValue){ + super(parent, true); + this.ore = ore; + this.chooseValue = chooseValue; + init(); + + + } + + public void init(){ + setSize(new Dimension(400, 400)); + setLayout(new BorderLayout()); + + model = new DefaultListModel(); + System.out.println(chooseValue.getClass()); + if(chooseValue instanceof Description){ + setTitle("select object for property"); + for(Individual ind : ore.getIndividualsOfPropertyRange((ObjectQuantorRestriction)chooseValue)) + model.addElement(ind); + } + else if(chooseValue instanceof Individual){ + setTitle("choose new class"); + for(NamedClass nc : ore.getpossibleMoveClasses((Individual)chooseValue)) + model.addElement(nc); + } + + + list = new JList(model); + + okButton = new JButton("Ok"); + cancelButton = new JButton("Cancel"); + okButton.addActionListener(this); + cancelButton.addActionListener(this); + + + + JPanel buttonPanel = new JPanel(); + JSeparator separator = new JSeparator(); + Box buttonBox = new Box(BoxLayout.X_AXIS); + buttonPanel.setLayout(new BorderLayout()); + buttonPanel.add(separator, BorderLayout.NORTH); + + buttonBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10))); + buttonBox.add(okButton); + buttonBox.add(Box.createHorizontalStrut(10)); + buttonBox.add(cancelButton); + buttonPanel.add(buttonBox, java.awt.BorderLayout.EAST); + + getContentPane().add(list, BorderLayout.CENTER); + getContentPane().add(buttonPanel, BorderLayout.SOUTH); + + setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); + setModal(true); + setVisible(true); + + + } + + public Object getSelectedElement(){ + return selectedElement; + } + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getSource().equals(okButton)){ + selectedElement = list.getSelectedValue(); + setVisible(false); + dispose(); + } + else if(e.getSource().equals(cancelButton)){ + selectedElement = null; + setVisible(false); + dispose(); + } + + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionButton.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionButton.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionButton.java 2008-06-21 14:27:17 UTC (rev 974) @@ -0,0 +1,25 @@ +package org.dllearner.tools.ore; + +import javax.swing.JButton; + +import org.dllearner.core.owl.Description; + +public class DescriptionButton extends JButton { + /** + * + */ + private static final long serialVersionUID = 1L; + private Description desc; + + public DescriptionButton(String name, Description desc){ + super(name); + this.desc = desc; + + } + + public Description getDescription(){ + return desc; + } + + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-06-21 14:27:17 UTC (rev 974) @@ -0,0 +1,90 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; +import java.awt.Component; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + +import javax.swing.JLabel; +import javax.swing.JPopupMenu; + +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.ObjectSomeRestriction; + +public class DescriptionLabel extends JLabel implements MouseListener{ + /** + * + */ + private static final long serialVersionUID = 1L; + private final Description desc; + private JPopupMenu menu; + + public DescriptionLabel(Description d){ + super(d.toString()); + this.desc = d; + setForeground(Color.red); + addMouseListener(this); + menu = new JPopupMenu(); + if(!(desc instanceof Negation)){ + if(desc instanceof NamedClass){ + menu.add(new DescriptionMenuItem("remove class assertion " + desc.toString(), desc) ); + menu.add(new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc)); + } + else if(desc instanceof ObjectSomeRestriction) + menu.add(new DescriptionMenuItem("remove property assertion " + desc.toString(), desc)); + } + else if(desc instanceof Negation){ + if(desc.getChild(0) instanceof NamedClass) + menu.add(new DescriptionMenuItem("add class assertion to " + desc.getChild(0).toString(), desc.getChild(0))); + else if(desc.getChild(0) instanceof ObjectSomeRestriction) + menu.add(new DescriptionMenuItem("add property " + d.toString(), desc.getChild(0))); + } + + + + } + + public Description getDescription(){ + return desc; + } + + public void addActionListeners(ActionListener aL){ + for(Component c : menu.getComponents()) + ((DescriptionMenuItem)c).addActionListener(aL); + + + } + + @Override + public void mouseClicked(MouseEvent e) { + menu.show(this.getParent(),getLocation().x ,getLocation().y+50); + + } + + @Override + public void mouseEntered(MouseEvent e) { + setText("<html><u>" + desc.toString() + "</u></html>"); + + } + + @Override + public void mouseExited(MouseEvent e) { + setText(desc.toString()); + + } + + @Override + public void mousePressed(MouseEvent e) { + // TODO Auto-generated method stub + + } + + @Override + public void mouseReleased(MouseEvent e) { + // TODO Auto-generated method stub + + } +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java 2008-06-21 14:27:17 UTC (rev 974) @@ -0,0 +1,25 @@ +package org.dllearner.tools.ore; + +import javax.swing.JMenuItem; + +import org.dllearner.core.owl.Description; + +public class DescriptionMenuItem extends JMenuItem { + + /** + * + */ + private static final long serialVersionUID = 6784086889435854440L; + + Description desc; + + public DescriptionMenuItem(String text, Description d){ + super(text); + this.desc = d; + } + + public Description getDescription(){ + return desc; + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java 2008-06-21 14:27:17 UTC (rev 974) @@ -0,0 +1,50 @@ +package org.dllearner.tools.ore; + +import java.awt.Component; +import java.awt.event.ActionListener; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; + +import org.dllearner.core.owl.Individual; + +public class DescriptionPanel extends JPanel{ + + /** + * + */ + private static final long serialVersionUID = -3684937339236885595L; + ORE ore; + Individual ind; + ActionListener aL; + + public DescriptionPanel(ORE ore, Individual ind, ActionListener aL){ + + super(); + this.ore = ore; + this.ind = ind; + this.aL = aL; + for(JLabel jL : ore.DescriptionToJLabel(ind, ore.conceptToAdd)){ + add(jL); + if(jL instanceof DescriptionLabel) + ((DescriptionLabel)jL).addActionListeners(aL); + } + } + + public void updatePanel(){//DescriptionButton descBut, Description desc){ + for(Component c : getComponents()) + if(c instanceof JLabel) + remove(c); + + ore.updateReasoner(); + for(JLabel jL : ore.DescriptionToJLabel(ind, ore.conceptToAdd)){ + add(jL); + if(jL instanceof DescriptionLabel) + ((DescriptionLabel)jL).addActionListeners(aL); + } + SwingUtilities.updateComponentTreeUI(this); + + + } +} \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-06-20 16:06:47 UTC (rev 973) +++ trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-06-21 14:27:17 UTC (rev 974) @@ -1,13 +1,10 @@ package org.dllearner.tools.ore; import java.awt.BorderLayout; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.Set; import javax.swing.Box; import javax.swing.BoxLayout; @@ -15,11 +12,10 @@ import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSeparator; -import javax.swing.SwingUtilities; import javax.swing.border.EmptyBorder; -import javax.swing.border.TitledBorder; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; @@ -36,12 +32,14 @@ private static final long serialVersionUID = 1L; - private JPanel statsPanel; - private JPanel actionsPanel; + private StatsPanel statsPanel; + private DescriptionPanel descPanel; + private ChangesPanel changesPanel; private JPanel ok_cancelPanel; private JPanel action_stats_Panel; + private JButton okButton; private JButton cancelButton; @@ -67,143 +65,27 @@ setSize(700, 700); setLayout(new BorderLayout()); - action_stats_Panel = new JPanel(); - action_stats_Panel.setLayout(new GridLayout(2,0)); + descPanel = new DescriptionPanel(ore, ind, this); - statsPanel = new JPanel(); - statsPanel.setBorder(new TitledBorder("stats")); - - - GridBagLayout gbl = new GridBagLayout(); - statsPanel.setLayout(gbl); - + statsPanel = new StatsPanel(ore, ind); + statsPanel.init(); + JScrollPane scroll = new JScrollPane(); + scroll.setViewportView(statsPanel); - GridBagConstraints gbc = new GridBagConstraints(); - JLabel descLb = new JLabel("Description:"); - JLabel indLb = new JLabel("Individual:"); - JLabel classLb = new JLabel("Classes:"); - - - JLabel descLb1 = new JLabel(ore.conceptToAdd.toString()); - JLabel indLb1 = new JLabel(ind.getName()); - Set<NamedClass> t = null; + + changesPanel = new ChangesPanel(); + changesPanel.init(); + + + action_stats_Panel = new JPanel(); + action_stats_Panel.setLayout(new GridLayout(4,0)); + - JPanel classesPanel = new JPanel(new GridLayout(0, 1)); - t = reasoner.getConcepts(ind); - t.add(ore.getConcept()); - for(NamedClass nc : t) - classesPanel.add(new JLabel(nc.getName())); - - - - - gbc.gridx = 0; // first column - gbc.gridy = 0; // first row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 20; // relative horizontal size - first column - gbc.weighty = 10; // relative vertical size - first row - gbc.fill = GridBagConstraints.NONE; // stay as small as possible - // suite for labels - gbc.anchor = GridBagConstraints.CENTER; // center aligning - //inform the layout about the control to be added and its constraints: - gbl.setConstraints(descLb, gbc); - statsPanel.add(descLb); //add the JLabel to the JPanel object - - gbc.gridx = 0; // first column - gbc.gridy = 1; // second row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 0; // !!! horizontal size for the column is defined already! - gbc.weighty = 10; // relative vertical size - second row - gbc.fill = GridBagConstraints.NONE; // stay as small as possible, suites for labels - gbc.anchor = GridBagConstraints.CENTER; // center aligning - //inform the layout about the control to be added and its constraints: - gbl.setConstraints(indLb, gbc); - statsPanel.add(indLb); - - gbc.gridx = 0; // first column - gbc.gridy = 2; // third row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 0; // !!! horizontal size for the column is defined already! - gbc.weighty = 10; // relative vertical size - second row - gbc.fill = GridBagConstraints.NONE; // stay as small as possible, suites for labels - gbc.anchor = GridBagConstraints.CENTER; // center aligning - //inform the layout about the control to be added and its constraints: - gbl.setConstraints(classLb, gbc); - statsPanel.add(classLb); - - gbc.gridx = 1; // second column - gbc.gridy = 0; // first row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 100; // horizontal size - second column - gbc.weighty = 0; // !!! vertical size for the row is defined already! - gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell - gbc.anchor = GridBagConstraints.CENTER; // center aligning - - gbl.setConstraints(descLb1, gbc); - statsPanel.add(descLb1); - - gbc.gridx = 1; // second column - gbc.gridy = 1; // second row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 0; // horizontal size for the column is defined already! - gbc.weighty = 0; // vertical size for the row is defined already! - gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell - gbc.anchor = GridBagConstraints.CENTER; // center aligning - - gbl.setConstraints(indLb1, gbc); - statsPanel.add(indLb1); - - gbc.gridx = 1; // second column - gbc.gridy = 2; // third row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 0; // horizontal size for the column is defined already! - gbc.weighty = 0; // vertical size for the row is defined already! - gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell - gbc.anchor = GridBagConstraints.CENTER; // center aligning - -// gbl.setConstraints(scrollPane, gbc); -// statsPanel.add(scrollPane); - gbl.setConstraints(classesPanel, gbc); - statsPanel.add(classesPanel); - - - actionsPanel = new JPanel(new GridLayout(0, 1)); - - - - actionsPanel.setBorder(new TitledBorder("actions")); - JButton delete = new JButton("delete instance"); - delete.addActionListener(this); - actionsPanel.add(delete); - for(Description d :ore.getCriticalDescriptions(ind, ore.getConceptToAdd())){ - - if(!(d instanceof Negation)){ - if(d instanceof NamedClass){ - actionsPanel.add(new DescriptionButton("remove class assertion to " + d.toString(), d ,this)); - actionsPanel.add(new DescriptionButton("move class assertion " + d.toString() + " to ...", d, this)); - } - else if(d instanceof ObjectSomeRestriction) - actionsPanel.add(new DescriptionButton("remove property assertion " + d.toString(), d, this)); - } - else if(d instanceof Negation){ - if(d.getChild(0) instanceof NamedClass) - actionsPanel.add(new DescriptionButton("add class assertion to " + d.getChild(0).toString(), d, this)); - else if(d.getChild(0) instanceof ObjectSomeRestriction) - actionsPanel.add(new DescriptionButton("add property " + d.toString(), d, this)); - } - } - JScrollPane scroll = new JScrollPane(); - scroll.setViewportView(statsPanel); + action_stats_Panel.add(descPanel); action_stats_Panel.add(scroll); - action_stats_Panel.add(actionsPanel); + action_stats_Panel.add(changesPanel); JSeparator separator = new JSeparator(); @@ -216,7 +98,7 @@ cancelButton = new JButton("Cancel"); - getContentPane().add(ok_cancelPanel, java.awt.BorderLayout.SOUTH); + getContentPane().add(action_stats_Panel, java.awt.BorderLayout.CENTER); @@ -235,49 +117,98 @@ } public void actionPerformed(ActionEvent e) { - - - if(e.getActionCommand().equals("delete instance")){ - ore.modi.deleteIndividual(ind); - } - else{ - actualDesc = ((DescriptionButton)e.getSource()).getDescription(); - if(e.getActionCommand().startsWith("remove class")){ - ore.modi.removeClassAssertion(ind, actualDesc); - } - else if(e.getActionCommand().startsWith("move class")){ + System.out.println(e.getSource()); + if(e.getSource() instanceof DescriptionMenuItem){ + actualDesc = ((DescriptionMenuItem)e.getSource()).getDescription(); - SwingUtilities.invokeLater(new Runnable(){ - - @Override - public void run() { - newDesc = (Description)new ChooseDialog(ore, ind).getSelectedElement(); - } + if(e.getActionCommand().startsWith("remove class")){ //remove class + System.err.println("vorher: " + ore.modi.checkInstanceNewOntology(ore.getConceptToAdd() ,ind)); + System.err.println("vorher: " + ore.modi.getCriticalDescriptions(ind, ore.conceptToAdd)); + ore.modi.removeClassAssertion(ind, actualDesc); - }); - if(newDesc != null) - ore.modi.moveIndividual(ind, actualDesc, newDesc); - + descPanel.updatePanel(); + changesPanel.add(new JLabel("removed class assertion to " + actualDesc)); + changesPanel.add(new JButton("Undo")); + System.err.println("nachher: " + ore.modi.checkInstanceNewOntology(ore.conceptToAdd, ind)); + System.err.println("nachher: " + ore.modi.getCriticalDescriptions(ind, ore.conceptToAdd)); } - else if(e.getActionCommand().equals("add property")){ - SwingUtilities.invokeLater(new Runnable(){ - - @Override - public void run() { - object = (Individual)new ChooseDialog(ore, actualDesc).getSelectedElement(); - } - - }); - if(newDesc != null) - - ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, object); - } - } +// else if(e.getActionCommand().startsWith("add class")){ //add class +// System.err.println(actualDesc); +// ore.modi.addClassAssertion(ind, actualDesc); +// actionsPanel.updatePanel(); +// changes.add(new JLabel("added class assertion to " + actualDesc)); +// +// } +// else if(e.getActionCommand().startsWith("move class")){ //move class +// +// newDesc = (Description)new ChooseDialog(this, ore, ind).getSelectedElement(); +// System.err.println(newDesc); +// if(newDesc != null){ +// System.out.print(ind + " from " + actualDesc + " to " + newDesc); +// ore.modi.moveIndividual(ind, actualDesc, newDesc); +// } +// +// } +// else if(e.getActionCommand().equals("add property")){ //add property +// object = (Individual)new ChooseDialog(this, ore, actualDesc).getSelectedElement(); +// if(object != null) +// ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, object); +// } +// else if(e.getActionCommand().equals("remove property")){ //delete property +// ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); +// } +// } + +// if(e.getActionCommand().equals("delete instance")){ +// ore.modi.deleteIndividual(ind); +// +// } +// else{ +// actualDesc = ((DescriptionButton)e.getSource()).getDescription(); +// +// if(e.getActionCommand().startsWith("remove class")){ //remove class +// System.out.println(ore.reasoner2.instanceCheck(ore.getConceptToAdd() ,ind)); +// ore.modi.removeClassAssertion(ind, actualDesc); +// +// actionsPanel.updatePanel(); +// changes.add(new JLabel("removed class assertion to " + actualDesc)); +// changes.add(new JButton("Undo")); +// System.err.println(ore.modi.checkInstanceNewOntology(ore.conceptToAdd, ind)); +// +// } +// else if(e.getActionCommand().startsWith("add class")){ //add class +// System.err.println(actualDesc); +// ore.modi.addClassAssertion(ind, actualDesc); +// actionsPanel.updatePanel(); +// changes.add(new JLabel("added class assertion to " + actualDesc)); +// +// } +// else if(e.getActionCommand().startsWith("move class")){ //move class +// +// newDesc = (Description)new ChooseDialog(this, ore, ind).getSelectedElement(); +// System.err.println(newDesc); +// if(newDesc != null){ +// System.out.print(ind + " from " + actualDesc + " to " + newDesc); +// ore.modi.moveIndividual(ind, actualDesc, newDesc); +// } +// +// } +// else if(e.getActionCommand().equals("add property")){ //add property +// object = (Individual)new ChooseDialog(this, ore, actualDesc).getSelectedElement(); +// if(object != null) +// ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, object); +// } +// else if(e.getActionCommand().equals("remove property")){ //delete property +// ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); +// } +// } } + } + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-20 16:06:47 UTC (rev 973) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-21 14:27:17 UTC (rev 974) @@ -1,14 +1,21 @@ package org.dllearner.tools.ore; +import java.awt.Dimension; import java.io.File; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; +import java.util.Vector; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; + import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; import org.dllearner.core.ComponentInitException; import org.dllearner.core.ComponentManager; @@ -21,9 +28,9 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.Negation; import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.core.owl.Union; +import org.dllearner.kb.OWLAPIOntology; import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.PosNegDefinitionLP; import org.dllearner.reasoning.FastInstanceChecker; @@ -326,52 +333,7 @@ Set<Description> criticals = new HashSet<Description>(); List<Description> children = desc.getChildren(); -// if(desc instanceof Negation){ -// if(!(desc.getChild(0) instanceof NamedClass) &&!(desc.getChild(0) instanceof ObjectQuantorRestriction)){ -// negation = !negation; -// criticals.addAll(getCriticalDescriptions(ind, desc.getChild(0))); -// } -// else{ -// if(negation) -// criticals.add(desc.getChild(0)); -// else -// criticals.add(desc); -// -// } -// -// } -// else{ -// -// if(children.size() >= 2){ -// -// if(desc instanceof Intersection){ -// for(Description d: children) -// criticals.addAll(getCriticalDescriptions(ind, d)); -// -// } -// else if(desc instanceof Union){ -// for(Description d: children) -// try { -// if(reasoner.instanceCheck(d, ind)) -// criticals.addAll(getCriticalDescriptions(ind, d)); -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// } -// } -// else{ -// -// if(negation) -// criticals.add(new Negation(desc)); -// else -// criticals.add(desc); -// -// } -// -// -// -// } + if(children.size() >= 2){ @@ -398,6 +360,62 @@ return criticals; } + public Collection<JLabel> DescriptionToJLabel(Individual ind, Description desc){ +// Set<JLabel> criticals = new HashSet<JLabel>(); + Collection<JLabel> criticals = new Vector<JLabel>(); + List<Description> children = desc.getChildren(); + + try { + if(reasoner.instanceCheck(desc, ind)){ + if(children.size() >= 2){ + + if(desc instanceof Intersection){ + criticals.add(new JLabel("(")); + for(int i = 0; i<children.size()-1; i++){ + criticals.addAll(DescriptionToJLabel(ind, desc.getChild(i))); + criticals.add(new JLabel("AND")); + System.out.println(true); + } + criticals.addAll(DescriptionToJLabel(ind, desc.getChild(children.size()-1))); + criticals.add(new JLabel(")")); + } + else if(desc instanceof Union){ + criticals.add(new JLabel("(")); + for(int i = 0; i<children.size()-1; i++){ + if(reasoner.instanceCheck(desc.getChild(i), ind)){ + criticals.addAll(DescriptionToJLabel(ind, desc.getChild(i))); + } + else{ + criticals.add(new JLabel(desc.getChild(i).toString())); + } + criticals.add(new JLabel("OR")); + } + if(reasoner.instanceCheck(desc.getChild(children.size()-1), ind)){ + criticals.addAll(DescriptionToJLabel(ind, desc.getChild(children.size()-1))); + } + else{ + criticals.add(new JLabel(desc.getChild(children.size()-1).toString())); + } + criticals.add(new JLabel(")")); + + + } + } + else{ + + criticals.add(new DescriptionLabel(desc)); + } + } + else + criticals.add(new JLabel(desc.toString())); + } catch (ReasoningMethodUnsupportedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return criticals; + } + public Set<Individual> getIndividualsOfPropertyRange(ObjectQuantorRestriction objRestr){ @@ -421,8 +439,19 @@ return classes; } + public void updateReasoner(){ + reasoner = cm.reasoner(FastInstanceChecker.class, new OWLAPIOntology(modi.ontology)); + try { + reasoner.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public static void main(String[] args){ final ORE test = new ORE(); @@ -443,12 +472,20 @@ // test.start(); Individual ind = new Individual("http://www.test.owl#lorenz"); System.out.println(rs.getIndividuals()); - Description d = new Intersection(new NamedClass("http://www.test.owl#A"), new Negation(new Union(new NamedClass("http://www.test.owl#B"), - new Negation(new Intersection(new NamedClass("http://www.test.owl#C"),new Negation(new NamedClass("http://www.test.owl#D"))))))); + Description d = new Intersection(new NamedClass("http://www.test.owl#A"), new Union(new NamedClass("http://www.test.owl#B"), + new NamedClass("http://www.test.owl#C"))); System.out.println(d); System.out.println(test.getCriticalDescriptions(ind, d)); + JFrame testFrame = new JFrame(); + JPanel j = new JPanel(); + testFrame.add(j); + testFrame.setSize(new Dimension(400, 400)); + for(JLabel jLab : test.DescriptionToJLabel(ind, d)) + j.add(jLab); + testFrame.setVisible(true); + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-06-20 16:06:47 UTC (rev 973) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-06-21 14:27:17 UTC (rev 974) @@ -7,9 +7,13 @@ import java.util.List; import java.util.Set; +import org.dllearner.core.KnowledgeSource; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.core.owl.Union; +import org.dllearner.kb.OWLAPIOntology; import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; import org.dllearner.reasoning.OWLAPIReasoner; import org.semanticweb.owl.apibinding.OWLManager; @@ -52,7 +56,6 @@ OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newDesc); OWLDescription oldConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(oldDesc); - Set<OWLDescription> ds = new HashSet<OWLDescription>(); ds.add(newConceptOWLAPI); ds.add(oldConceptOWLAPI); @@ -128,8 +131,33 @@ e.printStackTrace(); } + } + /** + * adds a classAssertion + * @param ind + * @param desc + */ + public void addClassAssertion(Individual ind, Description desc){ + + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); + OWLDescription owlDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); + + OWLClassAssertionAxiom owlCl = factory.getOWLClassAssertionAxiom(individualOWLAPI, owlDesc); + + AddAxiom am = new AddAxiom(ontology, owlCl); + + try { + manager.applyChange(am); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + /** * removes classAssertion between individual to a old class, and creates a new classAssertion * @param ind individual which has to be moved * @param oldClass class where individual is asserted before @@ -155,6 +183,7 @@ // TODO Auto-generated catch block e.printStackTrace(); } + saveOntology(); } @@ -215,6 +244,60 @@ } } + public void refreshReasoner(){ + Set<KnowledgeSource> s = new HashSet<KnowledgeSource>(); + s.add(new OWLAPIOntology(ontology)); + this.reasoner = new OWLAPIReasoner(s); + reasoner.init(); + } + + public boolean checkInstanceNewOntology(Description desc, Individual ind){ + Set<KnowledgeSource> s = new HashSet<KnowledgeSource>(); + s.add(new OWLAPIOntology(ontology)); + OWLAPIReasoner r = new OWLAPIReasoner(s); + r.init(); + boolean check = r.instanceCheck(desc, ind); + + + + return check; + } + + public Set<Description> getCriticalDescriptions(Individual ind, Description desc){ + Set<KnowledgeSource> s = new HashSet<KnowledgeSource>(); + s.add(new OWLAPIOntology(ontology)); + OWLAPIReasoner r = new OWLAPIReasoner(s); + r.init(); + + Set<Description> criticals = new HashSet<Description>(); + List<Description> children = desc.getChildren(); + + if(r.instanceCheck(desc, ind)){ + System.out.println("wahr"); + if(children.size() >= 2){ + + if(desc instanceof Intersection){ + for(Description d: children) + criticals.addAll(getCriticalDescriptions(ind, d)); + + } + else if(desc instanceof Union){ + for(Description d: children) + if(reasoner.instanceCheck(d, ind)) + criticals.addAll(getCriticalDescriptions(ind, d)); + } + } + else + criticals.add(desc); + } + + + return criticals; +} + + + + // public OWLOntology copyOntology(){ // try{ // OWLOntology ontologyCopy = manager.createOntology(ontology.getURI()); Added: trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-06-21 14:27:17 UTC (rev 974) @@ -0,0 +1,134 @@ +package org.dllearner.tools.ore; + +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.GridLayout; +import java.util.Set; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.border.TitledBorder; + +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; + +public class StatsPanel extends JPanel{ + /** + * + */ + private static final long serialVersionUID = -8418286820511803278L; + ORE ore; + Individual ind; + + public StatsPanel(ORE ore, Individual ind){ + super(); + this.ore = ore; + this.ind = ind; + } + + public void init(){ + + setBorder(new TitledBorder("stats")); + + + + GridBagLayout gbl = new GridBagLayout(); + setLayout(gbl); + + + GridBagConstraints gbc = new GridBagConstraints(); + JLabel descLb = new JLabel("Description:"); + JLabel indLb = new JLabel("Individual:"); + JLabel classLb = new JLabel("Classes:"); + + + JLabel descLb1 = new JLabel(ore.conceptToAdd.toString()); + JLabel indLb1 = new JLabel(ind.getName()); + Set<NamedClass> t = null; + + JPanel classesPanel = new JPanel(new GridLayout(0, 1)); + + t = ore.reasoner2.getConcepts(ind); + t.add(ore.getConcept()); + for(NamedClass nc : t) + classesPanel.add(new JLabel(nc.getName())); + + + + + gbc.gridx = 0; // first column + gbc.gridy = 0; // first row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 20; // relative horizontal size - first column + gbc.weighty = 10; // relative vertical size - first row + gbc.fill = GridBagConstraints.NONE; // stay as small as possible + // suite for labels + gbc.anchor = GridBagConstraints.CENTER; // center aligning + //inform the layout about the control to be added and its constraints: + gbl.setConstraints(descLb, gbc); + add(descLb); //add the JLabel to the JPanel object + + gbc.gridx = 0; // first column + gbc.gridy = 1; // second row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 0; // !!! horizontal size for the column is defined already! + gbc.weighty = 10; // relative vertical size - second row + gbc.fill = GridBagConstraints.NONE; // stay as small as possible, suites for labels + gbc.anchor = GridBagConstraints.CENTER; // center aligning + //inform the layout about the control to be added and its constraints: + gbl.setConstraints(indLb, gbc); + add(indLb); + + gbc.gridx = 0; // first column + gbc.gridy = 2; // third row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 0; // !!! horizontal size for the column is defined already! + gbc.weighty = 10; // relative vertical size - second row + gbc.fill = GridBagConstraints.NONE; // stay as small as possible, suites for labels + gbc.anchor = GridBagConstraints.CENTER; // center aligning + //inform the layout about the control to be added and its constraints: + gbl.setConstraints(classLb, gbc); + add(classLb); + + gbc.gridx = 1; // second column + gbc.gridy = 0; // first row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 100; // horizontal size - second column + gbc.weighty = 0; // !!! vertical size for the row is defined already! + gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell + gbc.anchor = GridBagConstraints.CENTER; // center aligning + + gbl.setConstraints(descLb1, gbc); + add(descLb1); + + gbc.gridx = 1; // second column + gbc.gridy = 1; // second row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 0; // horizontal size for the column is defined already! + gbc.weighty = 0; // vertical size for the row is defined already! + gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell + gbc.anchor = GridBagConstraints.CENTER; // center aligning + + gbl.setConstraints(indLb1, gbc); + add(indLb1); + + gbc.gridx = 1; // second column + gbc.gridy = 2; // third row + gbc.gridwidth = 1; // occupies only one column + gbc.gridheight = 1; // occupies only one row + gbc.weightx = 0; // horizontal size for the column is defined already! + gbc.weighty = 0; // vertical size for the row is defined already! + gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell + gbc.anchor = GridBagConstraints.CENTER; // center aligning + +// gbl.setConstraints(scrollPane, gbc); +// statsPanel.add(scrollPane); + gbl.setConstraints(classesPanel, gbc); + add(classesPanel); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-06-25 20:34:47
|
Revision: 981 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=981&view=rev Author: lorenz_b Date: 2008-06-25 13:34:43 -0700 (Wed, 25 Jun 2008) Log Message: ----------- changed some repair options Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/UndoLabel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ActionsPanel.java Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ActionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ActionsPanel.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ActionsPanel.java 2008-06-25 20:34:43 UTC (rev 981) @@ -1,120 +0,0 @@ -package org.dllearner.tools.ore; - -import java.awt.Component; -import java.awt.GridLayout; -import java.awt.event.ActionListener; - -import javax.swing.JButton; -import javax.swing.JPanel; -import javax.swing.SwingUtilities; -import javax.swing.border.TitledBorder; - -import org.dllearner.core.owl.Description; -import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.Negation; -import org.dllearner.core.owl.ObjectSomeRestriction; -import org.dllearner.reasoning.OWLAPIReasoner; - -public class ActionsPanel extends JPanel{ - /** - * - */ - private static final long serialVersionUID = -3761077097231343915L; - ORE ore; - Individual ind; - OWLAPIReasoner reasoner; - ActionListener al; - - - public ActionsPanel(ORE ore, Individual ind, ActionListener al){ - super(new GridLayout(0, 1)); - this.ore = ore; - this.ind = ind; - this.reasoner = ore.modi.reasoner; - this.al = al; - } - - public void init(){ - setBorder(new TitledBorder("actions")); - JButton delete = new JButton("delete instance"); - add(delete); - updatePanel(); - -// for(Description d :ore.getCriticalDescriptions(ind, ore.getConceptToAdd())){ -// -// if(!(d instanceof Negation)){ -// if(d instanceof NamedClass){ -// add(new DescriptionButton("remove class assertion to " + d.toString(), d )); -// add(new DescriptionButton("move class assertion " + d.toString() + " to ...", d)); -// } -// else if(d instanceof ObjectSomeRestriction) -// add(new DescriptionButton("remove property assertion " + d.toString(), d)); -// } -// else if(d instanceof Negation){ -// if(d.getChild(0) instanceof NamedClass) -// add(new DescriptionButton("add class assertion to " + d.getChild(0).toString(), d)); -// else if(d.getChild(0) instanceof ObjectSomeRestriction) -// add(new DescriptionButton("add property " + d.toString(), d)); -// } -// } - } - - - public void addActionListeners(ActionListener al){ - for(Component c : getComponents()) - if(c instanceof JButton) - ((JButton)c).addActionListener(al); - } - - public void updatePanel(){//DescriptionButton descBut, Description desc){ - for(Component c : getComponents()) - if(c instanceof DescriptionButton) - remove(c); - - ore.modi.refreshReasoner(); - for(Description d :ore.getCriticalDescriptions(ind, ore.getConceptToAdd())){ - System.out.println(d + " " + ore.modi.reasoner.instanceCheck(d, ind)); - if(ore.modi.reasoner.instanceCheck(d, ind)){ - if(!(d instanceof Negation)){ - if(d instanceof NamedClass){ - add(new DescriptionButton("remove class assertion to " + d.toString(), d )); - add(new DescriptionButton("move class assertion " + d.toString() + " to ...", d)); - } - else if(d instanceof ObjectSomeRestriction) - add(new DescriptionButton("remove property assertion " + d.toString(), d)); - } - else if(d instanceof Negation){ - if(d.getChild(0) instanceof NamedClass) - add(new DescriptionButton("add class assertion to " + d.getChild(0).toString(), d.getChild(0))); - else if(d.getChild(0) instanceof ObjectSomeRestriction) - add(new DescriptionButton("add property " + d.toString(), d)); - } - } - } - addActionListeners(al); - - - - - -// String command = descBut.getActionCommand(); -// if(command.startsWith("remove class")){ -// for(Component c : getComponents()) -// if(c instanceof DescriptionButton && ((DescriptionButton)c).getDescription().equals(desc) && ((DescriptionButton)c).getActionCommand().startsWith("move class")) -// remove(c); -// } -// else if(command.startsWith("move class")){ -// for(Component c : getComponents()) -// if(c instanceof DescriptionButton && ((DescriptionButton)c).getDescription().equals(desc) && ((DescriptionButton)c).getActionCommand().startsWith("remove class")) -// remove(c); -// } -// -// remove(descBut); -// - SwingUtilities.updateComponentTreeUI(this); - - } - - -} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChangePanel.java 2008-06-25 20:34:43 UTC (rev 981) @@ -0,0 +1,29 @@ +package org.dllearner.tools.ore; + + +import java.awt.Color; +import java.awt.event.MouseListener; +import java.util.List; + +import javax.swing.JLabel; +import javax.swing.JPanel; + +import org.semanticweb.owl.model.OWLOntologyChange; + +public class ChangePanel extends JPanel{ + + /** + * + */ + private static final long serialVersionUID = -934113184795465461L; + + + public ChangePanel(String label, List<OWLOntologyChange> changes, MouseListener mL){ + super(); + add(new JLabel(label)); + add(new UndoLabel(changes, mL)); + setBackground(Color.WHITE); + + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-06-25 20:34:43 UTC (rev 981) @@ -1,9 +1,13 @@ package org.dllearner.tools.ore; +import java.awt.Color; +import java.awt.Container; import java.awt.GridLayout; +import javax.swing.BorderFactory; import javax.swing.JPanel; -import javax.swing.border.TitledBorder; +import javax.swing.SwingUtilities; +import javax.swing.border.BevelBorder; public class ChangesPanel extends JPanel{ @@ -14,12 +18,19 @@ public ChangesPanel(){ super(new GridLayout(0, 1)); + setBackground(Color.WHITE); + setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); } public void init(){ - setBorder(new TitledBorder("changes")); +// setBorder(new TitledBorder("changes")); } + public void updatePanel(Container cont){ + remove(cont); + SwingUtilities.updateComponentTreeUI(this); + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java 2008-06-25 20:34:43 UTC (rev 981) @@ -99,7 +99,7 @@ return selectedElement; } - @Override + public void actionPerformed(ActionEvent e) { if(e.getSource().equals(okButton)){ selectedElement = list.getSelectedValue(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-06-25 20:34:43 UTC (rev 981) @@ -7,9 +7,11 @@ import java.awt.event.MouseListener; import javax.swing.JLabel; +import javax.swing.JMenu; import javax.swing.JPopupMenu; import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.Negation; import org.dllearner.core.owl.ObjectSomeRestriction; @@ -20,6 +22,8 @@ */ private static final long serialVersionUID = 1L; private final Description desc; + private Individual ind; + private ORE ore; private JPopupMenu menu; public DescriptionLabel(Description d){ @@ -27,24 +31,56 @@ this.desc = d; setForeground(Color.red); addMouseListener(this); +// menu = new JPopupMenu(); +// if(!(desc instanceof Negation)){ +// if(desc instanceof NamedClass){ +// menu.add(new DescriptionMenuItem("remove class assertion " + desc.toString(), desc) ); +// DescriptionMenuItem dme = new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc); +// for(NamedClass nc : ore.getpossibleMoveClasses(ind)) +// dme.add(new JMenuItem(nc.getName())); +// menu.add(dme); +//// menu.add(new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc)); +// } +// else if(desc instanceof ObjectSomeRestriction) +// menu.add(new DescriptionMenuItem("remove property assertion " + desc.toString(), desc)); +// } +// else if(desc instanceof Negation){ +// if(desc.getChild(0) instanceof NamedClass) +// menu.add(new DescriptionMenuItem("add class assertion to " + desc.getChild(0).toString(), desc.getChild(0))); +// else if(desc.getChild(0) instanceof ObjectSomeRestriction) +// menu.add(new DescriptionMenuItem("add property " + d.toString(), desc.getChild(0))); +// } + + + + } + + public void init(){ menu = new JPopupMenu(); if(!(desc instanceof Negation)){ if(desc instanceof NamedClass){ menu.add(new DescriptionMenuItem("remove class assertion " + desc.toString(), desc) ); - menu.add(new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc)); + JMenu dme = new JMenu("move class assertion " + desc.toString() + " to ..."); + for(NamedClass nc : ore.getpossibleMoveClasses(ind)) + dme.add(new DescriptionMenuItem(nc.getName(), desc)); + menu.add(dme); +// menu.add(new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc)); } else if(desc instanceof ObjectSomeRestriction) menu.add(new DescriptionMenuItem("remove property assertion " + desc.toString(), desc)); } else if(desc instanceof Negation){ - if(desc.getChild(0) instanceof NamedClass) - menu.add(new DescriptionMenuItem("add class assertion to " + desc.getChild(0).toString(), desc.getChild(0))); + if(desc.getChild(0) instanceof NamedClass){ + DescriptionMenuItem item = new DescriptionMenuItem("add class assertion to " + desc.getChild(0).toString(), desc.getChild(0)); + menu.add(item); + if(ore.hasComplement(desc, ind)){ + item.setEnabled(false); + item.setToolTipText("class assertion not possible because individual is still asserted to its complement"); + } + } else if(desc.getChild(0) instanceof ObjectSomeRestriction) - menu.add(new DescriptionMenuItem("add property " + d.toString(), desc.getChild(0))); + menu.add(new DescriptionMenuItem("add property " + desc.toString(), desc.getChild(0))); } - - - } public Description getDescription(){ @@ -52,37 +88,49 @@ } public void addActionListeners(ActionListener aL){ - for(Component c : menu.getComponents()) - ((DescriptionMenuItem)c).addActionListener(aL); + for(Component c : menu.getComponents()){ + if(c instanceof DescriptionMenuItem) + ((DescriptionMenuItem)c).addActionListener(aL); + else if(c instanceof JMenu) + for( int i = 0; i < ((JMenu)c).getItemCount(); i++) + ((JMenu)c).getItem(i).addActionListener(aL); + + + } } + + public void setIndOre(ORE ore, Individual ind){ + this.ore = ore; + this.ind = ind; + } - @Override + public void mouseClicked(MouseEvent e) { menu.show(this.getParent(),getLocation().x ,getLocation().y+50); } - @Override + public void mouseEntered(MouseEvent e) { setText("<html><u>" + desc.toString() + "</u></html>"); } - @Override + public void mouseExited(MouseEvent e) { setText(desc.toString()); } - @Override + public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } - @Override + public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionPanel.java 2008-06-25 20:34:43 UTC (rev 981) @@ -1,11 +1,14 @@ package org.dllearner.tools.ore; +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.Individual; @@ -22,13 +25,19 @@ public DescriptionPanel(ORE ore, Individual ind, ActionListener aL){ super(); + setBackground(Color.WHITE); + setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); this.ore = ore; this.ind = ind; this.aL = aL; for(JLabel jL : ore.DescriptionToJLabel(ind, ore.conceptToAdd)){ add(jL); - if(jL instanceof DescriptionLabel) + if(jL instanceof DescriptionLabel){ + + ((DescriptionLabel)jL).setIndOre(ore, ind); + ((DescriptionLabel)jL).init(); ((DescriptionLabel)jL).addActionListeners(aL); + } } } @@ -40,8 +49,13 @@ ore.updateReasoner(); for(JLabel jL : ore.DescriptionToJLabel(ind, ore.conceptToAdd)){ add(jL); - if(jL instanceof DescriptionLabel) + if(jL instanceof DescriptionLabel){ + ((DescriptionLabel)jL).setIndOre(ore, ind); + ((DescriptionLabel)jL).init(); ((DescriptionLabel)jL).addActionListeners(aL); + + + } } SwingUtilities.updateComponentTreeUI(this); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-06-25 20:34:43 UTC (rev 981) @@ -60,17 +60,19 @@ @SuppressWarnings("unchecked") @Override public List<Description> doInBackground() { + panel4.getResultList().setCellRenderer(new ColumnListCellRenderer(getWizardModel().getOre())); panel4.getLoadingLabel().setBusy(true); panel4.getStatusLabel().setText("Learning"); getWizardModel().getOre().setNoise(panel4.getNoise()); - la = getWizardModel().getOre().start();//started endlosen Algorithmus + la = getWizardModel().getOre().start();//started endlosen Algorithmus publish(la.getBestSolutions(10)); + - List<Description> result = getWizardModel().getOre().getLearningResults(10); + List<Description> result = getWizardModel().getOre().getLearningResults(100); return result; } @@ -97,6 +99,7 @@ @Override protected void process(List<List<Description>> resultLists) { + panel4.getModel().clear(); for (List<Description> list : resultLists) { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-06-25 20:34:43 UTC (rev 981) @@ -1,18 +1,20 @@ package org.dllearner.tools.ore; import java.awt.BorderLayout; -import java.awt.GridLayout; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.List; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; -import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.border.EmptyBorder; @@ -20,11 +22,11 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.Negation; -import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.reasoning.OWLAPIReasoner; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.RemoveAxiom; -public class NegExampleRepairDialog extends JDialog implements ActionListener{ +public class NegExampleRepairDialog extends JDialog implements ActionListener, MouseListener{ /** * @@ -76,18 +78,25 @@ changesPanel = new ChangesPanel(); changesPanel.init(); + JButton deleteButton = new JButton("delete"); + deleteButton.addActionListener(this); + changesPanel.add(deleteButton); - action_stats_Panel = new JPanel(); - action_stats_Panel.setLayout(new GridLayout(4,0)); - + GridBagLayout gbl = new GridBagLayout(); + gbl.rowWeights = new double[] {0.0, 0.1, 0.1}; + gbl.rowHeights = new int[] {34, 7, 7}; + gbl.columnWeights = new double[] {0.1}; + gbl.columnWidths = new int[] {7}; + action_stats_Panel.setLayout(gbl); - action_stats_Panel.add(descPanel); - action_stats_Panel.add(scroll); - action_stats_Panel.add(changesPanel); + action_stats_Panel.add(descPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); + action_stats_Panel.add(scroll, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); + action_stats_Panel.add(changesPanel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); + JSeparator separator = new JSeparator(); Box buttonBox = new Box(BoxLayout.X_AXIS); @@ -117,38 +126,44 @@ } public void actionPerformed(ActionEvent e) { - System.out.println(e.getSource()); + if(e.getSource() instanceof DescriptionMenuItem){ actualDesc = ((DescriptionMenuItem)e.getSource()).getDescription(); - + if(e.getActionCommand().startsWith("remove class")){ //remove class - System.err.println("vorher: " + ore.modi.checkInstanceNewOntology(ore.getConceptToAdd() ,ind)); - System.err.println("vorher: " + ore.modi.getCriticalDescriptions(ind, ore.conceptToAdd)); - ore.modi.removeClassAssertion(ind, actualDesc); + List<OWLOntologyChange> changes = ore.modi.removeClassAssertion(ind, actualDesc); descPanel.updatePanel(); - changesPanel.add(new JLabel("removed class assertion to " + actualDesc)); - changesPanel.add(new JButton("Undo")); - System.err.println("nachher: " + ore.modi.checkInstanceNewOntology(ore.conceptToAdd, ind)); - System.err.println("nachher: " + ore.modi.getCriticalDescriptions(ind, ore.conceptToAdd)); + changesPanel.add(new ChangePanel("removed class assertion to " + actualDesc, changes, this)); + + } -// else if(e.getActionCommand().startsWith("add class")){ //add class -// System.err.println(actualDesc); -// ore.modi.addClassAssertion(ind, actualDesc); -// actionsPanel.updatePanel(); -// changes.add(new JLabel("added class assertion to " + actualDesc)); -// -// } -// else if(e.getActionCommand().startsWith("move class")){ //move class -// -// newDesc = (Description)new ChooseDialog(this, ore, ind).getSelectedElement(); -// System.err.println(newDesc); -// if(newDesc != null){ -// System.out.print(ind + " from " + actualDesc + " to " + newDesc); -// ore.modi.moveIndividual(ind, actualDesc, newDesc); -// } -// -// } + else if(e.getActionCommand().startsWith("add class")){ //add class + List<OWLOntologyChange> changes = ore.modi.addClassAssertion(ind, actualDesc); + descPanel.updatePanel(); + changesPanel.add(new ChangePanel("added class assertion to " + actualDesc, changes, this)); + + + } + else{ //move class + + newDesc = new NamedClass(e.getActionCommand()); + List<OWLOntologyChange> changes = ore.modi.moveIndividual(ind, actualDesc, newDesc); + + descPanel.updatePanel(); + changesPanel.add(new ChangePanel("moved class assertion from " + actualDesc + " to " + newDesc, changes, this)); + + } + + } + else if(e.getActionCommand().equals("delete")){ + List<OWLOntologyChange> changes = ore.modi.deleteIndividual(ind); + for(OWLOntologyChange ol : changes) + System.out.println(((RemoveAxiom)ol).getAxiom()); + } + + + } // else if(e.getActionCommand().equals("add property")){ //add property // object = (Individual)new ChooseDialog(this, ore, actualDesc).getSelectedElement(); // if(object != null) @@ -158,7 +173,36 @@ // ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); // } // } + + public void mouseClicked(MouseEvent e) { + if(e.getSource() instanceof UndoLabel){ + List<OWLOntologyChange> changes = ((UndoLabel)e.getSource()).getChanges(); + ore.modi.undoChanges(changes); + descPanel.updatePanel(); + changesPanel.updatePanel(((UndoLabel)e.getSource()).getParent()); + } + } + + public void mouseEntered(MouseEvent e) { + // TODO Auto-generated method stub + } + + public void mouseExited(MouseEvent e) { + // TODO Auto-generated method stub + + } + + public void mousePressed(MouseEvent e) { + // TODO Auto-generated method stub + + } + + public void mouseReleased(MouseEvent e) { + // TODO Auto-generated method stub + + } + // if(e.getActionCommand().equals("delete instance")){ // ore.modi.deleteIndividual(ind); // @@ -202,13 +246,12 @@ // ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); // } // } - } - } + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-25 20:34:43 UTC (rev 981) @@ -1,6 +1,5 @@ package org.dllearner.tools.ore; -import java.awt.Dimension; import java.io.File; import java.math.BigDecimal; import java.util.ArrayList; @@ -12,9 +11,7 @@ import java.util.TreeSet; import java.util.Vector; -import javax.swing.JFrame; import javax.swing.JLabel; -import javax.swing.JPanel; import org.dllearner.algorithms.refexamples.ExampleBasedROLComponent; import org.dllearner.core.ComponentInitException; @@ -28,6 +25,7 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Nothing; import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.core.owl.Union; import org.dllearner.kb.OWLAPIOntology; @@ -50,7 +48,7 @@ OWLAPIReasoner reasoner2; SortedSet<Individual> posExamples; SortedSet<Individual> negExamples; - NamedClass concept; + NamedClass ignoredConcept; Description conceptToAdd; OntologyModifierOWLAPI modi; Set<NamedClass> allAtomicConcepts; @@ -87,16 +85,16 @@ public void detectReasoner(){ - reasoner = cm.reasoner(FastInstanceChecker.class, ks); - try { - reasoner.init(); - } catch (ComponentInitException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - - rs = cm.reasoningService(reasoner); +// reasoner = cm.reasoner(FastInstanceChecker.class, ks); +// try { +// reasoner.init(); +// } catch (ComponentInitException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// +// rs = cm.reasoningService(reasoner); reasoner2 = cm.reasoner(OWLAPIReasoner.class, ks); reasoner2.init(); @@ -112,7 +110,7 @@ } public void setPosNegExamples(){ - posExamples = rs.retrieval(concept); + posExamples = rs.retrieval(ignoredConcept); negExamples = rs.getIndividuals(); for (Individual rem_pos : posExamples) @@ -143,7 +141,7 @@ //la = new ROLearner(lp, rs); Set<String> t = new TreeSet<String>(); - t.add(concept.getName()); + t.add(ignoredConcept.getName()); cm.applyConfigEntry(la, "ignoredConcepts", t ); cm.applyConfigEntry(la, "noisePercentage", noise); cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 5); @@ -157,7 +155,7 @@ } public void setConcept(NamedClass concept){ - this.concept = concept; + this.ignoredConcept = concept; } @@ -185,6 +183,11 @@ return la.getBestSolutions(anzahl); } + /** + * + * @param d + * @return + */ public BigDecimal getCorrectness(Description d){ int numberPosExamples = 0; int numberNegExamples = 0; @@ -306,8 +309,8 @@ return modi; } - public NamedClass getConcept() { - return concept; + public NamedClass getIgnoredConcept() { + return ignoredConcept; } public void setAllAtomicConcepts(Set<NamedClass> allAtomicConcepts) { @@ -333,10 +336,11 @@ Set<Description> criticals = new HashSet<Description>(); List<Description> children = desc.getChildren(); - - + + if(reasoner2.instanceCheck(desc, ind)){ + if(children.size() >= 2){ - + if(desc instanceof Intersection){ for(Description d: children) criticals.addAll(getCriticalDescriptions(ind, d)); @@ -344,17 +348,13 @@ } else if(desc instanceof Union){ for(Description d: children) - try { - if(reasoner.instanceCheck(d, ind)) - criticals.addAll(getCriticalDescriptions(ind, d)); - } catch (ReasoningMethodUnsupportedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + if(reasoner2.instanceCheck(d, ind)) + criticals.addAll(getCriticalDescriptions(ind, d)); } } else criticals.add(desc); + } return criticals; @@ -431,12 +431,21 @@ } public Set<NamedClass> getpossibleMoveClasses(Individual ind){ - Set<NamedClass> classes = rs.getAtomicConcepts(); - for(NamedClass nc : classes) - if(rs.instanceCheck(nc, ind)) - classes.remove(nc); + Set<NamedClass> moveClasses = rs.getAtomicConcepts(); + Set<NamedClass> indClasses = new HashSet<NamedClass>(); - return classes; + for(NamedClass moveNc : moveClasses) + if(rs.instanceCheck(moveNc, ind)){ + indClasses.add(moveNc); + } + moveClasses.removeAll(indClasses); + + for(NamedClass moveNc : moveClasses) + for(NamedClass indNc : indClasses ) + if(new Intersection(moveNc, indNc).equals(new Nothing())) + moveClasses.remove(moveNc); + + return moveClasses; } public void updateReasoner(){ @@ -449,19 +458,29 @@ } } + public boolean hasComplement(Description desc, Individual ind){ + for(NamedClass nc : reasoner2.getAtomicConcepts()) + if(reasoner2.instanceCheck(nc, ind)) + if(modi.isComplement(desc, nc)) + return true; + + return false; + } + + public static void main(String[] args){ final ORE test = new ORE(); - File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/test.owl"); + File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/inkohaerent.owl"); test.setKnowledgeSource(owlFile); test.detectReasoner(); - ReasoningService rs = test.getReasoningService(); + System.out.println(test.reasoner2.getInconsistentClasses()); // System.err.println("Concepts :" + rs.getAtomicConcepts()); @@ -470,21 +489,23 @@ // System.out.println(test.posExamples); // System.out.println(test.negExamples); // test.start(); - Individual ind = new Individual("http://www.test.owl#lorenz"); - System.out.println(rs.getIndividuals()); - Description d = new Intersection(new NamedClass("http://www.test.owl#A"), new Union(new NamedClass("http://www.test.owl#B"), - new NamedClass("http://www.test.owl#C"))); - System.out.println(d); - System.out.println(test.getCriticalDescriptions(ind, d)); - JFrame testFrame = new JFrame(); - JPanel j = new JPanel(); - testFrame.add(j); - testFrame.setSize(new Dimension(400, 400)); - for(JLabel jLab : test.DescriptionToJLabel(ind, d)) - j.add(jLab); - testFrame.setVisible(true); +// Individual ind = new Individual("http://www.test.owl#lorenz"); +// test.modi.addClassAssertion(ind, new NamedClass("http://www.test.owl#B")); +// System.out.println(test.reasoner2.getInconsistentClasses()); +// Description d = new Intersection(new NamedClass("http://www.test.owl#A"), new Union(new NamedClass("http://www.test.owl#B"), +// new NamedClass("http://www.test.owl#C"))); +// System.out.println(d); +// System.out.println(test.getCriticalDescriptions(ind, d)); +// JFrame testFrame = new JFrame(); +// JPanel j = new JPanel(); +// testFrame.add(j); +// testFrame.setSize(new Dimension(400, 400)); +// for(JLabel jLab : test.DescriptionToJLabel(ind, d)) +// j.add(jLab); +// testFrame.setVisible(true); + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-06-25 20:34:43 UTC (rev 981) @@ -7,17 +7,12 @@ import java.util.List; import java.util.Set; -import org.dllearner.core.KnowledgeSource; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.ObjectSomeRestriction; -import org.dllearner.core.owl.Union; -import org.dllearner.kb.OWLAPIOntology; import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; import org.dllearner.reasoning.OWLAPIReasoner; import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.io.RDFXMLOntologyFormat; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClassAssertionAxiom; @@ -29,6 +24,7 @@ import org.semanticweb.owl.model.OWLObjectPropertyAssertionAxiom; import org.semanticweb.owl.model.OWLObjectPropertyExpression; 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.OWLOntologyStorageException; @@ -51,7 +47,12 @@ this.ontology = reasoner.getOWLAPIOntologies().get(0); } - + /** + * Adds an axiom to the ontology, using an EquivalentClassesAxiom + * @param newDesc new axiom to add + * @param oldDesc old description + * @return + */ public void addAxiomToOWL(Description newDesc, Description oldDesc){ OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newDesc); OWLDescription oldConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(oldDesc); @@ -74,11 +75,13 @@ } + /** + * saves the ontology as RDF-file + */ public void saveOntology(){ - URI physicalURI2 = URI.create("file:/tmp/MyOnt2.owl"); try { - manager.saveOntology(ontology, new RDFXMLOntologyFormat(), physicalURI2); + manager.saveOntology(ontology); } catch (UnknownOWLOntologyException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -86,61 +89,88 @@ // TODO Auto-generated catch block e.printStackTrace(); } + +// URI physicalURI2 = URI.create("file:/tmp/MyOnt2.owl"); +// +// try { +// manager.saveOntology(ontology, new RDFXMLOntologyFormat(), physicalURI2); +// } catch (UnknownOWLOntologyException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (OWLOntologyStorageException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } } /** * Deletes the complete individual from the ontology - * @param ind + * @param ind the individual to delete */ - public void deleteIndividual(Individual ind){ + public List<OWLOntologyChange> deleteIndividual(Individual ind){ + List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); OWLEntityRemover remover = new OWLEntityRemover(manager, Collections.singleton(ontology)); individualOWLAPI.accept(remover); - + changes.addAll(remover.getChanges()); try { - manager.applyChanges(remover.getChanges()); + manager.applyChanges(changes); + saveOntology(); + return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } - remover.reset(); + + return null; + } /** * Removes a classAssertion - * @param ind - * @param desc + * @param ind the individual which has to removed from class + * @param desc the class to which the individual is asserted + * @return changes that have been done */ - public void removeClassAssertion(Individual ind, Description desc){ + public List<OWLOntologyChange> removeClassAssertion(Individual ind, Description desc){ + List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); OWLDescription owlDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); OWLClassAssertionAxiom owlCl = factory.getOWLClassAssertionAxiom(individualOWLAPI, owlDesc); RemoveAxiom rm = new RemoveAxiom(ontology, owlCl); - + changes.add(rm); try { manager.applyChange(rm); + return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } + + return null; } /** * adds a classAssertion - * @param ind - * @param desc + * @param ind the individual which has to be asserted to class + * @param desc the class to which the individual has to be asserted + * @return changes that have been done */ - public void addClassAssertion(Individual ind, Description desc){ + public List<OWLOntologyChange> addClassAssertion(Individual ind, Description desc){ + List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); OWLDescription owlDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc); @@ -148,13 +178,20 @@ AddAxiom am = new AddAxiom(ontology, owlCl); + + changes.add(am); try { manager.applyChange(am); + return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } + + + return null; + } /** @@ -162,33 +199,50 @@ * @param ind individual which has to be moved * @param oldClass class where individual is asserted before * @param newClass class where individual is moved to + * @return changes that have been done */ - public void moveIndividual(Individual ind, Description oldClass, Description newClass){ + public List<OWLOntologyChange> moveIndividual(Individual ind, Description oldClass, Description newClass){ + List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); //Loeschen - removeClassAssertion(ind, oldClass); + OWLDescription oldDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(oldClass); + OWLClassAssertionAxiom owlCl = factory.getOWLClassAssertionAxiom(individualOWLAPI, oldDesc); + RemoveAxiom rem = new RemoveAxiom(ontology, owlCl); + changes.add(rem); //Hinzufuegen - OWLDescription newClassOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newClass); - - OWLAxiom axiomOWLAPI = factory.getOWLClassAssertionAxiom(individualOWLAPI, newClassOWLAPI); + OWLDescription newDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(newClass); + OWLAxiom axiomOWLAPI = factory.getOWLClassAssertionAxiom(individualOWLAPI, newDesc); + AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); + changes.add(axiom); - AddAxiom axiom = new AddAxiom(ontology, axiomOWLAPI); + try { - manager.applyChange(axiom); + manager.applyChanges(changes); + return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } - saveOntology(); + return null; + } - public void deleteObjectProperty(Individual ind, ObjectSomeRestriction objSome){ + /** + * + * @param ind the individual which property has to be removed + * @param objSome the property which has to be removed + * @return changes that have been done + */ + public List<OWLOntologyChange> deleteObjectProperty(Individual ind, ObjectSomeRestriction objSome){ + List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); @@ -216,19 +270,31 @@ } + changes.addAll(removeList); try { manager.applyChanges(removeList); + return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } + return null; + } - - public void addObjectProperty(Individual subInd, ObjectSomeRestriction objSome, Individual objInd){ + /** + * + * @param subInd the individual which is subject in the objectProperty + * @param objSome the property which has to be added to subject + * @param objInd the individual which is object in the objectProperty + * @return changes that have been done + */ + public List<OWLOntologyChange> addObjectProperty(Individual subInd, ObjectSomeRestriction objSome, Individual objInd){ + List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); + OWLIndividual subIndividualOWLAPI = factory.getOWLIndividual( URI.create(subInd.getName())); OWLIndividual objIndividualOWLAPI = factory.getOWLIndividual( URI.create(objInd.getName())); OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); @@ -236,66 +302,83 @@ OWLObjectPropertyAssertionAxiom objAssertion = factory.getOWLObjectPropertyAssertionAxiom(subIndividualOWLAPI, propertyOWLAPI, objIndividualOWLAPI); AddAxiom axiom = new AddAxiom(ontology, objAssertion); + changes.add(axiom); try { manager.applyChange(axiom); + return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); } + + return null; } - public void refreshReasoner(){ - Set<KnowledgeSource> s = new HashSet<KnowledgeSource>(); - s.add(new OWLAPIOntology(ontology)); - this.reasoner = new OWLAPIReasoner(s); - reasoner.init(); - } - - public boolean checkInstanceNewOntology(Description desc, Individual ind){ - Set<KnowledgeSource> s = new HashSet<KnowledgeSource>(); - s.add(new OWLAPIOntology(ontology)); - OWLAPIReasoner r = new OWLAPIReasoner(s); - r.init(); - boolean check = r.instanceCheck(desc, ind); + + /** + * undo changes of type {@link OWLOntologyChange} + * @param changes + */ + public void undoChanges(List<OWLOntologyChange> changes){ - return check; - } - - public Set<Description> getCriticalDescriptions(Individual ind, Description desc){ - Set<KnowledgeSource> s = new HashSet<KnowledgeSource>(); - s.add(new OWLAPIOntology(ontology)); - OWLAPIReasoner r = new OWLAPIReasoner(s); - r.init(); - - Set<Description> criticals = new HashSet<Description>(); - List<Description> children = desc.getChildren(); - - if(r.instanceCheck(desc, ind)){ - System.out.println("wahr"); - if(children.size() >= 2){ - - if(desc instanceof Intersection){ - for(Description d: children) - criticals.addAll(getCriticalDescriptions(ind, d)); - + for(OWLOntologyChange change : changes){ + if(change instanceof RemoveAxiom){ + OWLAxiom axiom = ((RemoveAxiom)change).getAxiom(); + AddAxiom add = new AddAxiom(ontology, axiom); + try { + manager.applyChange(add); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } - else if(desc instanceof Union){ - for(Description d: children) - if(reasoner.instanceCheck(d, ind)) - criticals.addAll(getCriticalDescriptions(ind, d)); + } + else if(change instanceof AddAxiom){ + OWLClassAssertionAxiom cl = (OWLClassAssertionAxiom)((AddAxiom)change).getAxiom(); + RemoveAxiom rem = new RemoveAxiom(ontology, cl); + try { + manager.applyChange(rem); + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } - else - criticals.add(desc); + } + } - - return criticals; -} + public boolean isComplement(Description desc1, Description desc2){ + + OWLDescription d1 = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc1); + OWLDescription d2 = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc2); + OWLDescription d3 = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc1.getChild(0)); + + for(OWLAxiom ax : ontology.getAxioms()){ + if(ax.equals(factory.getOWLEquivalentClassesAxiom(d1, d2))) + return true; + if(ax.equals(factory.getOWLDisjointClassesAxiom(d3, d2))) + return true; + } + +// OWLClass owlClass1 = factory.getOWLClass(URI.create(desc1.toString())); +// OWLClass owlClass2 = factory.getOWLClass(URI.create(desc2.toString())); +// for(OWLEquivalentClassesAxiom eq :ontology.getEquivalentClassesAxioms(owlClass1)) +// for(OWLDescription d : eq.getDescriptions()) +// System.out.println(d.isAnonymous()); +// for(OWLEquivalentClassesAxiom eq :ontology.getEquivalentClassesAxioms(owlClass2)){ +// for(OWLDescription d : eq.getDescriptions()) +// System.out.println(d.getClass()); +// for(OWLEntity e : eq.getReferencedEntities()) +// System.out.println(e); +// } + + return false; + + } + // public OWLOntology copyOntology(){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-06-25 20:34:43 UTC (rev 981) @@ -1,13 +1,17 @@ package org.dllearner.tools.ore; +import java.awt.Color; +import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; +import java.awt.Insets; import java.util.Set; +import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.border.TitledBorder; +import javax.swing.border.BevelBorder; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; @@ -28,107 +32,49 @@ public void init(){ - setBorder(new TitledBorder("stats")); + setBackground(Color.WHITE); + setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); - - GridBagLayout gbl = new GridBagLayout(); + gbl.rowWeights = new double[] {0.0, 0.1, 0.1}; + gbl.rowHeights = new int[] {34, 7, 7}; + gbl.columnWeights = new double[] {0.1}; + gbl.columnWidths = new int[] {7}; setLayout(gbl); + + + - GridBagConstraints gbc = new GridBagConstraints(); - JLabel descLb = new JLabel("Description:"); - JLabel indLb = new JLabel("Individual:"); - JLabel classLb = new JLabel("Classes:"); - JLabel descLb1 = new JLabel(ore.conceptToAdd.toString()); + JPanel indPanel = new JPanel(); + indPanel.setBackground(new Color(224, 223, 227)); + indPanel.setLayout(new GridLayout(0, 1)); + JLabel indLb = new JLabel("Individual:"); + indLb.setFont(indLb.getFont().deriveFont(Font.BOLD)); JLabel indLb1 = new JLabel(ind.getName()); + indPanel.add(indLb); + indPanel.add(indLb1); + + JPanel classesPanel = new JPanel(); + classesPanel.setBackground(new Color(224, 223, 227)); + classesPanel.setLayout(new GridLayout(0, 1)); + JLabel classLb = new JLabel("Classes:"); + classLb.setFont(indLb.getFont().deriveFont(Font.BOLD)); + classesPanel.add(classLb); + Set<NamedClass> t = null; - - JPanel classesPanel = new JPanel(new GridLayout(0, 1)); - + t = ore.reasoner2.getConcepts(ind); - t.add(ore.getConcept()); + for(NamedClass nc : t) classesPanel.add(new JLabel(nc.getName())); - - gbc.gridx = 0; // first column - gbc.gridy = 0; // first row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 20; // relative horizontal size - first column - gbc.weighty = 10; // relative vertical size - first row - gbc.fill = GridBagConstraints.NONE; // stay as small as possible - // suite for labels - gbc.anchor = GridBagConstraints.CENTER; // center aligning - //inform the layout about the control to be added and its constraints: - gbl.setConstraints(descLb, gbc); - add(descLb); //add the JLabel to the JPanel object - - gbc.gridx = 0; // first column - gbc.gridy = 1; // second row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 0; // !!! horizontal size for the column is defined already! - gbc.weighty = 10; // relative vertical size - second row - gbc.fill = GridBagConstraints.NONE; // stay as small as possible, suites for labels - gbc.anchor = GridBagConstraints.CENTER; // center aligning - //inform the layout about the control to be added and its constraints: - gbl.setConstraints(indLb, gbc); - add(indLb); - - gbc.gridx = 0; // first column - gbc.gridy = 2; // third row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 0; // !!! horizontal size for the column is defined already! - gbc.weighty = 10; // relative vertical size - second row - gbc.fill = GridBagConstraints.NONE; // stay as small as possible, suites for labels - gbc.anchor = GridBagConstraints.CENTER; // center aligning - //inform the layout about the control to be added and its constraints: - gbl.setConstraints(classLb, gbc); - add(classLb); - - gbc.gridx = 1; // second column - gbc.gridy = 0; // first row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 100; // horizontal size - second column - gbc.weighty = 0; // !!! vertical size for the row is defined already! - gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell - gbc.anchor = GridBagConstraints.CENTER; // center aligning - - gbl.setConstraints(descLb1, gbc); - add(descLb1); - - gbc.gridx = 1; // second column - gbc.gridy = 1; // second row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 0; // horizontal size for the column is defined already! - gbc.weighty = 0; // vertical size for the row is defined already! - gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell - gbc.anchor = GridBagConstraints.CENTER; // center aligning - - gbl.setConstraints(indLb1, gbc); - add(indLb1); - - gbc.gridx = 1; // second column - gbc.gridy = 2; // third row - gbc.gridwidth = 1; // occupies only one column - gbc.gridheight = 1; // occupies only one row - gbc.weightx = 0; // horizontal size for the column is defined already! - gbc.weighty = 0; // vertical size for the row is defined already! - gbc.fill = GridBagConstraints.HORIZONTAL; // fill horizontally entire cell - gbc.anchor = GridBagConstraints.CENTER; // center aligning - -// gbl.setConstraints(scrollPane, gbc); -// statsPanel.add(scrollPane); - gbl.setConstraints(classesPanel, gbc); - add(classesPanel); + add(indPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); + + add(classesPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/UndoLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/UndoLabel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/UndoLabel.java 2008-06-25 20:34:43 UTC (rev 981) @@ -0,0 +1,30 @@ +package org.dllearner.tools.ore; + +import java.awt.Color; +import java.awt.event.MouseListener; +import java.util.List; + +import javax.swing.JLabel; + +import org.semanticweb.owl.model.OWLOntologyChange; + +public class UndoLabel extends JLabel { + + /** + * + */ + private static final long serialVersionUID = 2058081574518973309L; + + private List<OWLOntologyChange> owlChanges; + + public UndoLabel(List<OWLOntologyChange> changes, MouseListener mL){ + super("<html><u>Undo</u></html>"); + setForeground(Color.RED); + this.owlChanges = changes; + addMouseListener(mL); + } + + public List<OWLOntologyChange> getChanges(){ + return owlChanges; + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-06-25 20:33:25 UTC (rev 980) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-06-25 20:34:43 UTC (rev 981) @@ -76,16 +76,22 @@ if( nextPanelDescriptor.equals("REPAIR_PANEL")){ ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getNegFailureModel().clear(); ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getPosFailureModel().clear(); - wizard.getModel().getOre().getModi().addAxiomToOWL(wizard.getModel().getOre().getConceptToAdd(), wizard.getModel().getOre().getConcept()); + wizard.getModel().getOre().getModi().addAxiomToOWL(wizard.getModel().getOre().getConceptToAdd(), wizard.getModel().getOre().getIgnoredConcept()); new FailInstancesRetriever(nextPanelDescriptor).execute(); // for(Description desc : wizard.getModel().getOre().getConceptToAdd().getChildren()) // System.out.println(desc); + + } + if(nextPanelDescriptor.equals("LEARNING_PANEL")){ + ((LearningPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getStatusLabel().setText(""); + ((LearningPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getModel().clear(); - } + + if (nextPanelDescriptor instanceof WizardPanelDescriptor.FinishIdentifier) { wizard.close(Wizard.FINISH_RETURN_CODE); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-06-26 06:52:51
|
Revision: 982 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=982&view=rev Author: lorenz_b Date: 2008-06-25 23:52:48 -0700 (Wed, 25 Jun 2008) Log Message: ----------- test cases for inconsistency Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/inconsistent.owl trunk/src/dl-learner/org/dllearner/tools/ore/inkohaerent.owl Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-25 20:34:43 UTC (rev 981) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-06-26 06:52:48 UTC (rev 982) @@ -85,16 +85,16 @@ public void detectReasoner(){ -// reasoner = cm.reasoner(FastInstanceChecker.class, ks); -// try { -// reasoner.init(); -// } catch (ComponentInitException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// -// -// rs = cm.reasoningService(reasoner); + reasoner = cm.reasoner(FastInstanceChecker.class, ks); + try { + reasoner.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + rs = cm.reasoningService(reasoner); reasoner2 = cm.reasoner(OWLAPIReasoner.class, ks); reasoner2.init(); Added: trunk/src/dl-learner/org/dllearner/tools/ore/inconsistent.owl =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/inconsistent.owl (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/inconsistent.owl 2008-06-26 06:52:48 UTC (rev 982) @@ -0,0 +1,95 @@ +<?xml version="1.0"?> + + +<!DOCTYPE rdf:RDF [ + <!ENTITY www "http://www.test.owl#" > + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY owl2 "http://www.w3.org/2006/12/owl2#" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > +]> + + +<rdf:RDF xmlns="http://www.test.owl#" + xml:base="http://www.test.owl" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#" + xmlns:www="http://www.test.owl#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:owl2="http://www.w3.org/2006/12/owl2#"> + <owl:Ontology rdf:about=""/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Classes + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.test.owl#A --> + + <owl:Class rdf:about="#A"> + <rdfs:subClassOf rdf:resource="&owl;Thing"/> + </owl:Class> + + + + <!-- http://www.test.owl#B --> + + <owl:Class rdf:about="#B"> + <rdfs:subClassOf rdf:resource="&owl;Thing"/> + <owl:disjointWith rdf:resource="#C"/> + </owl:Class> + + + + <!-- http://www.test.owl#C --> + + <owl:Class rdf:about="#C"> + <rdfs:subClassOf rdf:resource="&owl;Thing"/> + </owl:Class> + + + + <!-- http://www.test.owl#D --> + + <owl:Class rdf:about="#D"> + <rdfs:subClassOf rdf:resource="&owl;Thing"/> + </owl:Class> + + + + <!-- http://www.w3.org/2002/07/owl#Thing --> + + <owl:Class rdf:about="&owl;Thing"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Individuals + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.test.owl#lorenz --> + + <C rdf:about="#lorenz"> + <rdf:type rdf:resource="#A"/> + <rdf:type rdf:resource="#B"/> + </C> +</rdf:RDF> Added: trunk/src/dl-learner/org/dllearner/tools/ore/inkohaerent.owl =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/inkohaerent.owl (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/inkohaerent.owl 2008-06-26 06:52:48 UTC (rev 982) @@ -0,0 +1,101 @@ +<?xml version="1.0"?> + + +<!DOCTYPE rdf:RDF [ + <!ENTITY www "http://www.test.owl#" > + <!ENTITY owl "http://www.w3.org/2002/07/owl#" > + <!ENTITY owl2 "http://www.w3.org/2006/12/owl2#" > + <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > + <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" > + <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > + <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > +]> + + +<rdf:RDF xmlns="http://www.test.owl#" + xml:base="http://www.test.owl" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#" + xmlns:www="http://www.test.owl#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + xmlns:xsd="http://www.w3.org/2001/XMLSchema#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:owl2="http://www.w3.org/2006/12/owl2#"> + <owl:Ontology rdf:about=""/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Classes + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.test.owl#A --> + + <owl:Class rdf:about="#A"> + <rdfs:subClassOf rdf:resource="&owl;Thing"/> + </owl:Class> + + + + <!-- http://www.test.owl#B --> + + <owl:Class rdf:about="#B"> + <rdfs:subClassOf rdf:resource="&owl;Thing"/> + <owl:disjointWith rdf:resource="#C"/> + </owl:Class> + + + + <!-- http://www.test.owl#C --> + + <owl:Class rdf:about="#C"> + <rdfs:subClassOf rdf:resource="&owl;Thing"/> + </owl:Class> + + + + <!-- http://www.test.owl#D --> + + <owl:Class rdf:about="#D"> + <rdfs:subClassOf rdf:resource="#B"/> + <rdfs:subClassOf rdf:resource="#C"/> + </owl:Class> + + + + <!-- http://www.w3.org/2002/07/owl#Thing --> + + <owl:Class rdf:about="&owl;Thing"/> + + + + <!-- + /////////////////////////////////////////////////////////////////////////////////////// + // + // Individuals + // + /////////////////////////////////////////////////////////////////////////////////////// + --> + + + + + <!-- http://www.test.owl#frank --> + + <B rdf:about="#frank"/> + + + + <!-- http://www.test.owl#lorenz --> + + <C rdf:about="#lorenz"> + <rdf:type rdf:resource="#A"/> + </C> +</rdf:RDF> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-07-06 19:54:35
|
Revision: 1003 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1003&view=rev Author: lorenz_b Date: 2008-07-06 12:54:28 -0700 (Sun, 06 Jul 2008) Log Message: ----------- added some modifications to go back in wizard and undo changes Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/MoveMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/Neu_006.gif Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChangesPanel.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -17,15 +17,14 @@ private static final long serialVersionUID = -7538532926820669891L; public ChangesPanel(){ - super(new GridLayout(0, 1)); + super(); + setLayout(new GridLayout(0, 1)); setBackground(Color.WHITE); setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); } - public void init(){ -// setBorder(new TitledBorder("changes")); - } + public void updatePanel(Container cont){ remove(cont); Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ChooseDialog.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -1,117 +0,0 @@ -package org.dllearner.tools.ore; - -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.Insets; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.DefaultListModel; -import javax.swing.JButton; -import javax.swing.JDialog; -import javax.swing.JList; -import javax.swing.JPanel; -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; - -public class ChooseDialog extends JDialog implements ActionListener{ - - /** - * - */ - private static final long serialVersionUID = -3554461981184458137L; - - - ORE ore; - DefaultListModel model; - JList list; - private JButton okButton; - private JButton cancelButton; - private Object selectedElement; - private Object chooseValue; - - public ChooseDialog(JDialog parent, ORE ore, Object chooseValue){ - super(parent, true); - this.ore = ore; - this.chooseValue = chooseValue; - init(); - - - } - - public void init(){ - setSize(new Dimension(400, 400)); - setLayout(new BorderLayout()); - - model = new DefaultListModel(); - System.out.println(chooseValue.getClass()); - if(chooseValue instanceof Description){ - setTitle("select object for property"); - for(Individual ind : ore.getIndividualsOfPropertyRange((ObjectQuantorRestriction)chooseValue)) - model.addElement(ind); - } - else if(chooseValue instanceof Individual){ - setTitle("choose new class"); - for(NamedClass nc : ore.getpossibleMoveClasses((Individual)chooseValue)) - model.addElement(nc); - } - - - list = new JList(model); - - okButton = new JButton("Ok"); - cancelButton = new JButton("Cancel"); - okButton.addActionListener(this); - cancelButton.addActionListener(this); - - - - JPanel buttonPanel = new JPanel(); - JSeparator separator = new JSeparator(); - Box buttonBox = new Box(BoxLayout.X_AXIS); - buttonPanel.setLayout(new BorderLayout()); - buttonPanel.add(separator, BorderLayout.NORTH); - - buttonBox.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10))); - buttonBox.add(okButton); - buttonBox.add(Box.createHorizontalStrut(10)); - buttonBox.add(cancelButton); - buttonPanel.add(buttonBox, java.awt.BorderLayout.EAST); - - getContentPane().add(list, BorderLayout.CENTER); - getContentPane().add(buttonPanel, BorderLayout.SOUTH); - - setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); - setModal(true); - setVisible(true); - - - } - - public Object getSelectedElement(){ - return selectedElement; - } - - - public void actionPerformed(ActionEvent e) { - if(e.getSource().equals(okButton)){ - selectedElement = list.getSelectedValue(); - setVisible(false); - dispose(); - } - else if(e.getSource().equals(cancelButton)){ - selectedElement = null; - setVisible(false); - dispose(); - } - - } - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -15,6 +15,7 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.Negation; import org.dllearner.core.owl.ObjectSomeRestriction; +import org.dllearner.core.owl.Thing; public class DescriptionLabel extends JLabel implements MouseListener{ /** @@ -31,28 +32,8 @@ this.desc = d; setForeground(Color.red); addMouseListener(this); -// menu = new JPopupMenu(); -// if(!(desc instanceof Negation)){ -// if(desc instanceof NamedClass){ -// menu.add(new DescriptionMenuItem("remove class assertion " + desc.toString(), desc) ); -// DescriptionMenuItem dme = new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc); -// for(NamedClass nc : ore.getpossibleMoveClasses(ind)) -// dme.add(new JMenuItem(nc.getName())); -// menu.add(dme); -//// menu.add(new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc)); -// } -// else if(desc instanceof ObjectSomeRestriction) -// menu.add(new DescriptionMenuItem("remove property assertion " + desc.toString(), desc)); -// } -// else if(desc instanceof Negation){ -// if(desc.getChild(0) instanceof NamedClass) -// menu.add(new DescriptionMenuItem("add class assertion to " + desc.getChild(0).toString(), desc.getChild(0))); -// else if(desc.getChild(0) instanceof ObjectSomeRestriction) -// menu.add(new DescriptionMenuItem("add property " + d.toString(), desc.getChild(0))); -// } + - - } public void init(){ @@ -62,12 +43,24 @@ menu.add(new DescriptionMenuItem("remove class assertion " + desc.toString(), desc) ); JMenu dme = new JMenu("move class assertion " + desc.toString() + " to ..."); for(NamedClass nc : ore.getpossibleMoveClasses(ind)) - dme.add(new DescriptionMenuItem(nc.getName(), desc)); + dme.add(new MoveMenuItem((NamedClass)desc, nc)); menu.add(dme); // menu.add(new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc)); } - else if(desc instanceof ObjectSomeRestriction) - menu.add(new DescriptionMenuItem("remove property assertion " + desc.toString(), desc)); + else if(desc instanceof ObjectSomeRestriction){ + menu.add(new DescriptionMenuItem("remove property " + ((ObjectSomeRestriction)desc).getRole(), desc)); + System.out.println(desc.getChild(0).getClass()); + if (!(desc.getChild(0) instanceof Thing)) { + JMenu dme = new JMenu("add property assertion " + + ((ObjectSomeRestriction) desc).getRole() + + " with object ..."); + for (Individual i : ore.getIndividualsNotOfPropertyRange( + (ObjectSomeRestriction) desc, ind)) + dme.add(new DescriptionMenuItem(i.getName(), desc + .getChild(0))); + menu.add(dme); + } + } } else if(desc instanceof Negation){ if(desc.getChild(0) instanceof NamedClass){ @@ -78,8 +71,12 @@ item.setToolTipText("class assertion not possible because individual is still asserted to its complement"); } } - else if(desc.getChild(0) instanceof ObjectSomeRestriction) - menu.add(new DescriptionMenuItem("add property " + desc.toString(), desc.getChild(0))); + else if(desc.getChild(0) instanceof ObjectSomeRestriction){ + JMenu dme = new JMenu("add property " + desc.toString() + " with object ..."); + for(Individual i : ore.getIndividualsOfPropertyRange((ObjectSomeRestriction)desc.getChild(0), ind)) + dme.add(new DescriptionMenuItem(i.getName(), desc.getChild(0))); + menu.add(dme); + } } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionMenuItem.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -13,13 +13,17 @@ Description desc; + public DescriptionMenuItem(String text, Description d){ super(text); this.desc = d; } + public Description getDescription(){ return desc; } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanel.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -3,18 +3,19 @@ import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionListener; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; import java.awt.geom.Ellipse2D; import java.awt.geom.RoundRectangle2D; +import java.util.Dictionary; +import java.util.Hashtable; +import javax.swing.BoxLayout; import javax.swing.DefaultListModel; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.JTextField; +import javax.swing.JSlider; import javax.swing.event.ListSelectionListener; import org.jdesktop.swingx.JXBusyLabel; @@ -36,15 +37,17 @@ private JButton startButton; private JButton stopButton; - private JTextField noiseField; + private JSlider noiseSlider; - @SuppressWarnings("unchecked") + public LearningPanel() { super(); model = new DefaultListModel(); - + JPanel eastPanel = new JPanel(); + eastPanel.setLayout(new BoxLayout(eastPanel, BoxLayout.Y_AXIS)); + JPanel buttonPanel = new JPanel(); startButton = new JButton("Start"); stopButton = new JButton("Stop"); @@ -52,12 +55,29 @@ buttonPanel.add(startButton); buttonPanel.add(stopButton); + JPanel noisePanel = new JPanel(); + noisePanel.setLayout(new BoxLayout(noisePanel, BoxLayout.Y_AXIS)); + noiseSlider = new JSlider(0, 100, 0); + noiseSlider.setPaintTicks(true); + noiseSlider.setMajorTickSpacing(10); + noiseSlider.setMinorTickSpacing(5); + Dictionary<Integer, JLabel> map = new Hashtable<Integer, JLabel>(); + map.put( new Integer(0), new JLabel("0%") ); + map.put( new Integer(50), new JLabel("50%") ); + map.put( new Integer(100),new JLabel("100%") ); + noiseSlider.setLabelTable( map ); + noiseSlider.setPaintLabels(true); + noisePanel.add(new JLabel("noise")); + noisePanel.add(noiseSlider); - JPanel labelPanel = new JPanel(); + eastPanel.add(buttonPanel); + eastPanel.add(noisePanel); + + JPanel statusPanel = new JPanel(); statusLabel = new JLabel(); loadingLabel = new JXBusyLabel(new Dimension(15,15)); - BusyPainter painter = new BusyPainter( + BusyPainter<Object> painter = new BusyPainter<Object>( new RoundRectangle2D.Float(0, 0,6.0f,2.6f,10.0f,10.0f), new Ellipse2D.Float(2.0f,2.0f,11.0f,11.0f)); painter.setTrailLength(2); @@ -66,15 +86,15 @@ loadingLabel.setPreferredSize(new Dimension(15,15)); loadingLabel.setIcon(new EmptyIcon(15,15)); loadingLabel.setBusyPainter(painter); - labelPanel.add(loadingLabel); - labelPanel.add(statusLabel); + statusPanel.add(loadingLabel); + statusPanel.add(statusLabel); contentPanel = getContentPanel(); setLayout(new java.awt.BorderLayout()); - add(buttonPanel, BorderLayout.EAST); + add(eastPanel, BorderLayout.EAST); add(contentPanel,BorderLayout.CENTER); - add(labelPanel, BorderLayout.SOUTH); + add(statusPanel, BorderLayout.SOUTH); } private JPanel getContentPanel() { @@ -87,31 +107,10 @@ // resultList.setCellRenderer(new ColumnListCellRenderer()); scroll.setPreferredSize(new Dimension(900, 400)); scroll.setViewportView(resultList); - - noiseField = new JTextField("noise"); - noiseField.setText("0.0"); - - - noiseField.addKeyListener(new KeyAdapter() { - @Override - public void keyTyped(KeyEvent e) { - char c = e.getKeyChar(); - if (!((Character.isDigit(c) || - (c == KeyEvent.VK_BACK_SPACE) || - (c == KeyEvent.VK_DELETE)))) { - getToolkit().beep(); - e.consume(); - } - - } - }); - + contentPanel1.add(scroll); - contentPanel1.add(noiseField); - - - - + + return contentPanel1; } @@ -152,7 +151,7 @@ } public double getNoise(){ - return Double.parseDouble(noiseField.getText()); + return noiseSlider.getValue(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -4,6 +4,7 @@ import java.awt.event.ActionListener; import java.util.List; import java.util.Timer; +import java.util.TimerTask; import java.util.concurrent.ExecutionException; import javax.swing.SwingUtilities; @@ -13,7 +14,6 @@ import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.owl.Description; -import org.dllearner.core.owl.ObjectSomeRestriction; @@ -52,11 +52,13 @@ - class ResultSwingWorker extends - SwingWorker<List<Description>, List<Description>> { - LearningAlgorithm la; - - + class ResultSwingWorker extends SwingWorker<List<Description>, List<Description>> { + + LearningAlgorithm la; + Thread t; + + + @SuppressWarnings("unchecked") @Override public List<Description> doInBackground() { @@ -65,14 +67,43 @@ panel4.getLoadingLabel().setBusy(true); panel4.getStatusLabel().setText("Learning"); getWizardModel().getOre().setNoise(panel4.getNoise()); + la = getWizardModel().getOre().getLa(); + timer = new Timer(); + timer.schedule(new TimerTask(){ + + @Override + public void run() { + if(la != null){ + + System.out.println(scheduledExecutionTime()-System.currentTimeMillis()); + publish(la.getCurrentlyBestDescriptions(10, true)); + } + } + + }, 1000, 1000); + t = new Thread(new Runnable(){ + + @Override + public void run() { + + la.start(); + } + + }); + t.setPriority(Thread.MIN_PRIORITY); + t.start(); - la = getWizardModel().getOre().start();//started endlosen Algorithmus - publish(la.getCurrentlyBestDescriptions(10)); +// publish(la.getCurrentlyBestDescriptions(10, true)); - - List<Description> result = getWizardModel().getOre().getLearningResults(100); + try { + t.join(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + List<Description> result = getWizardModel().getOre().getLearningResults(10); return result; } @@ -163,6 +194,7 @@ public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ + panel4.getModel().clear(); panel4.getStartButton().setEnabled(false); panel4.getStopButton().setEnabled(true); worker = new ResultSwingWorker(); @@ -172,9 +204,11 @@ canceled = true; panel4.getStopButton().setEnabled(false); getWizardModel().getOre().getLa().stop(); - panel4.getStartButton().setEnabled(true); + timer.cancel(); + panel4.getStartButton().setEnabled(true); panel4.getStatusLabel().setText("Algorithm aborted"); panel4.getLoadingLabel().setBusy(false); + } @@ -189,15 +223,8 @@ for(Description d: getWizardModel().getOre().getAllChildren((Description)(panel4.getResultList().getSelectedValue()))){ System.out.println(d + " : " + d.getClass()); - if(d instanceof ObjectSomeRestriction){ - - - getWizardModel().getOre().getIndividualsOfPropertyRange((ObjectSomeRestriction)d); - - - - } + } } Added: trunk/src/dl-learner/org/dllearner/tools/ore/MoveMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/MoveMenuItem.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/MoveMenuItem.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -0,0 +1,30 @@ +package org.dllearner.tools.ore; + +import javax.swing.JMenuItem; + +import org.dllearner.core.owl.NamedClass; + +public class MoveMenuItem extends JMenuItem{ + + /** + * + */ + private static final long serialVersionUID = 7912723521355039174L; + NamedClass source; + NamedClass target; + + public MoveMenuItem(NamedClass source, NamedClass target){ + super(target.getName()); + this.source = source; + this.target = target; + } + + public NamedClass getSource(){ + return source; + } + + public NamedClass getTarget(){ + return target; + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -8,12 +8,15 @@ import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.util.HashSet; import java.util.List; +import java.util.Set; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSeparator; @@ -22,6 +25,7 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.ObjectSomeRestriction; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.RemoveAxiom; @@ -44,14 +48,14 @@ private JButton okButton; private JButton cancelButton; - - + private ORE ore; private Individual ind; // private OWLAPIReasoner reasoner; private Description actualDesc; private Description newDesc; // private Individual object; + private Set<OWLOntologyChange> allChanges; public NegExampleRepairDialog(Individual ind, JDialog dialog, ORE ore){ @@ -59,28 +63,29 @@ this.ind = ind; this.ore = ore; // this.reasoner = ore.reasoner2; + allChanges = new HashSet<OWLOntologyChange>(); init(); } public void init(){ + setSize(700, 700); setLayout(new BorderLayout()); descPanel = new DescriptionPanel(ore, ind, this); + JScrollPane descScroll = new JScrollPane(); + descScroll.setViewportView(descPanel); - statsPanel = new StatsPanel(ore, ind); statsPanel.init(); - JScrollPane scroll = new JScrollPane(); - scroll.setViewportView(statsPanel); + JScrollPane statsScroll = new JScrollPane(); + statsScroll.setViewportView(statsPanel); changesPanel = new ChangesPanel(); - changesPanel.init(); - JButton deleteButton = new JButton("delete"); - deleteButton.addActionListener(this); - changesPanel.add(deleteButton); - + JScrollPane changesScroll = new JScrollPane(); + changesScroll.setViewportView(changesPanel); + action_stats_Panel = new JPanel(); GridBagLayout gbl = new GridBagLayout(); @@ -91,9 +96,9 @@ action_stats_Panel.setLayout(gbl); - action_stats_Panel.add(descPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); - action_stats_Panel.add(scroll, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); - action_stats_Panel.add(changesPanel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); + action_stats_Panel.add(descScroll, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); + action_stats_Panel.add(statsScroll, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); + action_stats_Panel.add(changesScroll, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 0, 5), 0, 0)); JSeparator separator = new JSeparator(); @@ -103,9 +108,10 @@ ok_cancelPanel.setLayout(new BorderLayout()); ok_cancelPanel.add(separator, BorderLayout.NORTH); okButton = new JButton("Ok"); + okButton.addActionListener(this); cancelButton = new JButton("Cancel"); + cancelButton.addActionListener(this); - getContentPane().add(action_stats_Panel, java.awt.BorderLayout.CENTER); @@ -128,50 +134,73 @@ if(e.getSource() instanceof DescriptionMenuItem){ actualDesc = ((DescriptionMenuItem)e.getSource()).getDescription(); - + System.out.println(e.getActionCommand()); if(e.getActionCommand().startsWith("remove class")){ //remove class List<OWLOntologyChange> changes = ore.modi.removeClassAssertion(ind, actualDesc); + allChanges.addAll(changes); descPanel.updatePanel(); + statsPanel.updatePanel("remove", actualDesc); changesPanel.add(new ChangePanel("removed class assertion to " + actualDesc, changes, this)); } else if(e.getActionCommand().startsWith("add class")){ //add class List<OWLOntologyChange> changes = ore.modi.addClassAssertion(ind, actualDesc); + allChanges.addAll(changes); descPanel.updatePanel(); changesPanel.add(new ChangePanel("added class assertion to " + actualDesc, changes, this)); - - - } - else{ //move class - - newDesc = new NamedClass(e.getActionCommand()); - List<OWLOntologyChange> changes = ore.modi.moveIndividual(ind, actualDesc, newDesc); - descPanel.updatePanel(); - changesPanel.add(new ChangePanel("moved class assertion from " + actualDesc + " to " + newDesc, changes, this)); } + else if(e.getActionCommand().startsWith("add property")){ //add property + Individual ind = new Individual(e.getActionCommand()); + List<OWLOntologyChange> changes = ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, ind); + System.out.println("ghhfhg"); + allChanges.addAll(changes); + descPanel.updatePanel(); + changesPanel.add(new ChangePanel("added property assertion " + ((ObjectSomeRestriction)actualDesc).getRole() + " to " + ind, changes, this)); + } +// else if(e.getActionCommand().startsWith("remove property")){ //delete property +// ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); +// } + }else if(e.getSource() instanceof MoveMenuItem){ + actualDesc = ((MoveMenuItem)e.getSource()).getSource(); + newDesc = new NamedClass(e.getActionCommand()); + List<OWLOntologyChange> changes = ore.modi.moveIndividual(ind, actualDesc, newDesc); + allChanges.addAll(changes); + descPanel.updatePanel(); + statsPanel.updatePanel("remove", actualDesc); + changesPanel.add(new ChangePanel("moved class assertion from " + actualDesc + " to " + newDesc, changes, this)); } + + else if(e.getActionCommand().equals("delete")){ List<OWLOntologyChange> changes = ore.modi.deleteIndividual(ind); + allChanges.addAll(changes); for(OWLOntologyChange ol : changes) System.out.println(((RemoveAxiom)ol).getAxiom()); } + else if(e.getActionCommand().equals("Ok")){ + } + else if(e.getActionCommand().equals("Cancel")){ + if (JOptionPane.showConfirmDialog(this, + "All changes will be lost!", "Warning!", + JOptionPane.YES_NO_OPTION) + == JOptionPane.YES_OPTION){ + ore.modi.undoChanges(allChanges); + allChanges.clear(); + setVisible(false); + dispose(); + } + } + + } -// else if(e.getActionCommand().equals("add property")){ //add property -// object = (Individual)new ChooseDialog(this, ore, actualDesc).getSelectedElement(); -// if(object != null) -// ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, object); -// } -// else if(e.getActionCommand().equals("remove property")){ //delete property -// ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); -// } -// } + public void mouseClicked(MouseEvent e) { if(e.getSource() instanceof UndoLabel){ @@ -201,6 +230,10 @@ // TODO Auto-generated method stub } + + public Set<OWLOntologyChange> getAllChanges() { + return allChanges; + } // if(e.getActionCommand().equals("delete instance")){ // ore.modi.deleteIndividual(ind); Added: trunk/src/dl-learner/org/dllearner/tools/ore/Neu_006.gif =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/Neu_006.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -35,7 +35,6 @@ import org.dllearner.reasoning.OWLAPIReasoner; - public class ORE { private LearningAlgorithm la; @@ -94,7 +93,7 @@ } -// rs = cm.reasoningService(reasoner); + reasoner2 = cm.reasoner(OWLAPIReasoner.class, ks); try { reasoner2.init(); @@ -102,8 +101,12 @@ // TODO Auto-generated catch block e.printStackTrace(); } + rs = cm.reasoningService(reasoner2); + modi = new OntologyModifierOWLAPI(reasoner2); - modi = new OntologyModifierOWLAPI(reasoner2); + + + } public ReasoningService getReasoningService(){ @@ -143,13 +146,13 @@ // TODO Auto-generated catch block e1.printStackTrace(); } - //la = new ROLearner(lp, rs); + Set<String> t = new TreeSet<String>(); t.add(ignoredConcept.getName()); cm.applyConfigEntry(la, "ignoredConcepts", t ); - cm.applyConfigEntry(la, "noisePercentage", noise); - cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 5); +// cm.applyConfigEntry(la, "noisePercentage", noise); + cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 10); try { la.init(); } catch (ComponentInitException e) { @@ -164,28 +167,37 @@ } - public LearningAlgorithm start(){ + public void init(){ this.setPosNegExamples(); this.setLearningProblem(); this.setLearningAlgorithm(); + } + + public LearningAlgorithm start(){ + Set<String> t = new TreeSet<String>(); + + cm.applyConfigEntry(la, "ignoredConcepts", t ); + cm.applyConfigEntry(la, "noisePercentage", noise); + try { + la.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + System.out.println(noise); la.start(); - return la; - } - public Description getLearningResult(){ - return la.getCurrentlyBestDescription(); - } - + // public List<Description> getSolutions(){ // return la.getCurrentlyBestDescriptions(); // } public List<Description> getLearningResults(int anzahl){ - return la.getCurrentlyBestDescriptions(anzahl); + return la.getCurrentlyBestDescriptions(anzahl, true); } /** @@ -372,6 +384,7 @@ try { if(reasoner.instanceCheck(desc, ind)){ + if(children.size() >= 2){ if(desc instanceof Intersection){ @@ -379,7 +392,7 @@ for(int i = 0; i<children.size()-1; i++){ criticals.addAll(DescriptionToJLabel(ind, desc.getChild(i))); criticals.add(new JLabel("AND")); - System.out.println(true); + } criticals.addAll(DescriptionToJLabel(ind, desc.getChild(children.size()-1))); criticals.add(new JLabel(")")); @@ -407,7 +420,7 @@ } } else{ - + criticals.add(new DescriptionLabel(desc)); } } @@ -421,20 +434,26 @@ return criticals; } - public Set<Individual> getIndividualsOfPropertyRange(ObjectQuantorRestriction objRestr){ + public Set<Individual> getIndividualsOfPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ - - System.out.println(objRestr.getChild(0)); - - Set<Individual> individuals = rs.retrieval(objRestr.getChild(0)); - System.out.println(objRestr.getRole()); + individuals.remove(ind); - System.out.println(individuals); - return individuals; } + public Set<Individual> getIndividualsNotOfPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ + + Set<Individual> individuals = reasoner2.retrieval(objRestr.getChild(0)); + Set<Individual> allIndividuals = reasoner2.getIndividuals(); + System.out.println("alle:" + allIndividuals); + allIndividuals.removeAll(individuals); + allIndividuals.remove(ind); + + System.out.println("range:" + individuals); + return allIndividuals; + } + public Set<NamedClass> getpossibleMoveClasses(Individual ind){ Set<NamedClass> moveClasses = rs.getAtomicConcepts(); Set<NamedClass> indClasses = new HashSet<NamedClass>(); @@ -461,6 +480,13 @@ // TODO Auto-generated catch block e.printStackTrace(); } + reasoner2 = cm.reasoner(OWLAPIReasoner.class,new OWLAPIOntology(modi.ontology)); + try { + reasoner2.init(); + } catch (ComponentInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } public boolean hasComplement(Description desc, Individual ind){ @@ -480,15 +506,18 @@ final ORE test = new ORE(); - File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/inconsistent.owl"); + File owlFile = new File("src/dl-learner/org/dllearner/tools/ore/inkohaerent.owl"); test.setKnowledgeSource(owlFile); test.detectReasoner(); -// System.out.println(test.reasoner2.getInconsistentClasses()); -// System.err.println("Concepts :" + rs.getAtomicConcepts()); +// test.modi.reason(); +// Individual ind = new Individual("http://example.com/father#heinz"); +// Description d = new Intersection(new NamedClass("http://example.com/father#male"), new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), new NamedClass("http://example.com/father#male"))); +// System.out.println(test.reasoner2.instanceCheck(d, ind)); + // test.setConcept(new NamedClass("http://example.com/father#father")); // test.setPosNegExamples(); // System.out.println(test.posExamples); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -1,6 +1,7 @@ package org.dllearner.tools.ore; import java.net.URI; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.LinkedList; @@ -13,6 +14,7 @@ import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; import org.dllearner.reasoning.OWLAPIReasoner; import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.io.RDFXMLOntologyFormat; import org.semanticweb.owl.model.AddAxiom; import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLClassAssertionAxiom; @@ -80,8 +82,12 @@ */ public void saveOntology(){ + + + URI physicalURI2 = URI.create("file:/tmp/MyOnt2.owl"); + try { - manager.saveOntology(ontology); + manager.saveOntology(ontology, new RDFXMLOntologyFormat(), physicalURI2); } catch (UnknownOWLOntologyException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -89,18 +95,6 @@ // TODO Auto-generated catch block e.printStackTrace(); } - -// URI physicalURI2 = URI.create("file:/tmp/MyOnt2.owl"); -// -// try { -// manager.saveOntology(ontology, new RDFXMLOntologyFormat(), physicalURI2); -// } catch (UnknownOWLOntologyException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (OWLOntologyStorageException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } } /** @@ -223,6 +217,7 @@ try { manager.applyChanges(changes); + saveOntology(); return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block @@ -320,7 +315,7 @@ * undo changes of type {@link OWLOntologyChange} * @param changes */ - public void undoChanges(List<OWLOntologyChange> changes){ + public void undoChanges(Collection<OWLOntologyChange> changes){ for(OWLOntologyChange change : changes){ @@ -362,46 +357,18 @@ return true; } -// OWLClass owlClass1 = factory.getOWLClass(URI.create(desc1.toString())); -// OWLClass owlClass2 = factory.getOWLClass(URI.create(desc2.toString())); -// for(OWLEquivalentClassesAxiom eq :ontology.getEquivalentClassesAxioms(owlClass1)) -// for(OWLDescription d : eq.getDescriptions()) -// System.out.println(d.isAnonymous()); -// for(OWLEquivalentClassesAxiom eq :ontology.getEquivalentClassesAxioms(owlClass2)){ -// for(OWLDescription d : eq.getDescriptions()) -// System.out.println(d.getClass()); -// for(OWLEntity e : eq.getReferencedEntities()) -// System.out.println(e); -// } return false; } - +// public void reason(){ +// reasoner.getInconsistencyReasons(ontology); +// +// } -// public OWLOntology copyOntology(){ -// try{ -// OWLOntology ontologyCopy = manager.createOntology(ontology.getURI()); -// -// -// Set<OWLAxiom> axioms = ontology.getAxioms(); -// List<AddAxiom> changes = new LinkedList<AddAxiom>(); -// for(OWLAxiom a : axioms) -// changes.add(new AddAxiom(ontologyCopy, a)); -// -// manager.applyChanges(changes); -// -// return ontologyCopy; -// -// }catch(OWLException e){ -// e.printStackTrace(); -// return null; -// } -// -// -// } + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -4,11 +4,14 @@ import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.util.HashSet; +import java.util.Set; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import org.dllearner.core.owl.Individual; +import org.semanticweb.owl.model.OWLOntologyChange; @@ -18,6 +21,7 @@ public static final String IDENTIFIER = "REPAIR_PANEL"; RepairPanel panel4; + private Set<OWLOntologyChange> ontologyChanges; public RepairPanelDescriptor() { @@ -27,10 +31,10 @@ panel4.addSaveButtonListener(this); panel4.addSelectionListeners(this); panel4.addMouseListeners(this); - + setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(panel4); - + ontologyChanges = new HashSet<OWLOntologyChange>(); } @@ -56,6 +60,7 @@ } public void actionPerformed(ActionEvent event) { + System.out.println(ontologyChanges); if(event.getActionCommand().equals("save")){ getWizardModel().getOre().getModi().saveOntology(); @@ -68,7 +73,7 @@ if(e.getClickCount() == 2 && e.getSource() == panel4.getNegFailureList() ){ Individual ind = (Individual)panel4.getNegFailureList().getSelectedValue(); - new NegExampleRepairDialog(ind, getWizard().getDialog(), getWizardModel().getOre()); + ontologyChanges.addAll(new NegExampleRepairDialog(ind, getWizard().getDialog(), getWizardModel().getOre()).getAllChanges()); // System.out.println(getWizardModel().getOre().getCriticalDescriptions(ind, getWizardModel().getOre().conceptToAdd )); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -1,18 +1,23 @@ package org.dllearner.tools.ore; import java.awt.Color; +import java.awt.Component; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.Insets; +import java.util.HashSet; import java.util.Set; import javax.swing.BorderFactory; +import javax.swing.ImageIcon; 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.core.owl.NamedClass; @@ -23,7 +28,10 @@ private static final long serialVersionUID = -8418286820511803278L; ORE ore; Individual ind; + Set<NamedClass> classes; + JPanel classesPanel; + public StatsPanel(ORE ore, Individual ind){ super(); this.ore = ore; @@ -36,18 +44,14 @@ setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED)); GridBagLayout gbl = new GridBagLayout(); - gbl.rowWeights = new double[] {0.0, 0.1, 0.1}; + gbl.rowWeights = new double[] {0.0, 0.0, 0.1}; gbl.rowHeights = new int[] {34, 7, 7}; gbl.columnWeights = new double[] {0.1}; gbl.columnWidths = new int[] {7}; setLayout(gbl); - - - - JPanel indPanel = new JPanel(); indPanel.setBackground(new Color(224, 223, 227)); indPanel.setLayout(new GridLayout(0, 1)); @@ -57,24 +61,53 @@ indPanel.add(indLb); indPanel.add(indLb1); - JPanel classesPanel = new JPanel(); + classesPanel = new JPanel(); classesPanel.setBackground(new Color(224, 223, 227)); classesPanel.setLayout(new GridLayout(0, 1)); JLabel classLb = new JLabel("Classes:"); classLb.setFont(indLb.getFont().deriveFont(Font.BOLD)); classesPanel.add(classLb); - Set<NamedClass> t = null; - - t = ore.reasoner2.getConcepts(ind); + classes = ore.reasoner2.getConcepts(ind); - for(NamedClass nc : t) + for(NamedClass nc : classes) classesPanel.add(new JLabel(nc.getName())); - add(indPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); - - add(classesPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); + add(classesPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(5, 5, 5, 5), 0, 0)); } + + public void updatePanel(String action, Description d){ + + + Set<NamedClass> afterUpdate = new HashSet<NamedClass>(); + + afterUpdate.addAll(ore.reasoner2.getConcepts(ind)); + + for(NamedClass nc : afterUpdate) + if(!(classes.contains(nc))){ + ImageIcon icon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/Neu_006.gif"); + JLabel lab = new JLabel(nc.getName()); + lab.setIcon(icon); + lab.setHorizontalTextPosition(JLabel.LEFT); + classesPanel.add(lab); + } + for(NamedClass nc : classes) + if(!(afterUpdate.contains(nc))) + for(Component co: classesPanel.getComponents()) + if(co instanceof JLabel) + if(((JLabel)co).getText().equals(nc.toString())) + ((JLabel)co).setText("<html><strike>" + nc + "</strike></html>"); + + +// for(Component co: classesPanel.getComponents()){ +// if(co instanceof JLabel) +// if(((JLabel)co).getText().equals(d.toString())) +// ((JLabel)co).setText("<html><strike>" + d + "</strike></html>"); +// +// } + SwingUtilities.updateComponentTreeUI(this); + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-07-06 17:07:09 UTC (rev 1002) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-07-06 19:54:28 UTC (rev 1003) @@ -72,6 +72,7 @@ ((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel3.getModel().clear(); new ConceptRetriever(nextPanelDescriptor).execute(); } + if( nextPanelDescriptor.equals("REPAIR_PANEL")){ ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getNegFailureModel().clear(); @@ -85,6 +86,7 @@ } if(nextPanelDescriptor.equals("LEARNING_PANEL")){ + wizard.getModel().getOre().init(); ((LearningPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getStatusLabel().setText(""); ((LearningPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getModel().clear(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2008-07-10 09:43:53
|
Revision: 1006 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1006&view=rev Author: lorenz_b Date: 2008-07-10 02:43:45 -0700 (Thu, 10 Jul 2008) Log Message: ----------- fixed some repair bugs Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/new.gif Modified: trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-07-10 09:41:14 UTC (rev 1005) +++ trunk/src/dl-learner/org/dllearner/tools/ore/DescriptionLabel.java 2008-07-10 09:43:45 UTC (rev 1006) @@ -5,6 +5,7 @@ import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; +import java.util.Set; import javax.swing.JLabel; import javax.swing.JMenu; @@ -14,6 +15,7 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.ObjectAllRestriction; import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.Thing; @@ -42,33 +44,52 @@ if(desc instanceof NamedClass){ menu.add(new DescriptionMenuItem("remove class assertion " + desc.toString(), desc) ); JMenu dme = new JMenu("move class assertion " + desc.toString() + " to ..."); - for(NamedClass nc : ore.getpossibleMoveClasses(ind)) - dme.add(new MoveMenuItem((NamedClass)desc, nc)); + + for(NamedClass nc : ore.getpossibleMoveClasses(ind)){ + MoveMenuItem move = new MoveMenuItem((NamedClass)desc, nc); + dme.add(move); + Set<NamedClass> complements = ore.getComplements(nc, ind); + System.out.println("Gr\xF6\xDFe" + complements.size()); + if(!(complements.size() <=1)){ + move.setEnabled(false); + StringBuffer strBuf = new StringBuffer(); + strBuf.append("<html>class assertion not possible because individual<br> " + + "is still asserted to its complements:<br><BLOCKQUOTE>"); + + for(NamedClass n: complements) + strBuf.append("<br><b>" + n + "</b>"); + strBuf.append("</BLOCKQUOTE></html>"); + + + move.setToolTipText(strBuf.toString()); + } + } menu.add(dme); -// menu.add(new DescriptionMenuItem("move class assertion " + desc.toString() + " to ...", desc)); } else if(desc instanceof ObjectSomeRestriction){ - menu.add(new DescriptionMenuItem("remove property " + ((ObjectSomeRestriction)desc).getRole(), desc)); - System.out.println(desc.getChild(0).getClass()); + menu.add(new DescriptionMenuItem("remove complete property " + ((ObjectSomeRestriction)desc).getRole(), desc)); + if (!(desc.getChild(0) instanceof Thing)) + menu.add(new DescriptionMenuItem("remove all property assertions to " + ((ObjectSomeRestriction)desc).getChild(0), desc)); + + } + else if(desc instanceof ObjectAllRestriction){ if (!(desc.getChild(0) instanceof Thing)) { - JMenu dme = new JMenu("add property assertion " - + ((ObjectSomeRestriction) desc).getRole() + JMenu dme = new JMenu("add property assertion " + ((ObjectAllRestriction) desc).getRole() + " with object ..."); - for (Individual i : ore.getIndividualsNotOfPropertyRange( - (ObjectSomeRestriction) desc, ind)) - dme.add(new DescriptionMenuItem(i.getName(), desc - .getChild(0))); + for (Individual i : ore.getIndividualsNotOfPropertyRange((ObjectAllRestriction) desc, ind)) + dme.add(new DescriptionMenuItem(i.getName(), desc.getChild(0))); menu.add(dme); } } + } else if(desc instanceof Negation){ if(desc.getChild(0) instanceof NamedClass){ DescriptionMenuItem item = new DescriptionMenuItem("add class assertion to " + desc.getChild(0).toString(), desc.getChild(0)); menu.add(item); - if(ore.hasComplement(desc, ind)){ + if(!ore.getComplements(desc, ind).isEmpty()){ item.setEnabled(false); - item.setToolTipText("class assertion not possible because individual is still asserted to its complement"); + item.setToolTipText("<html>class assertion not possible because individual<br> is still asserted to its complement</html>"); } } else if(desc.getChild(0) instanceof ObjectSomeRestriction){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-07-10 09:41:14 UTC (rev 1005) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningPanelDescriptor.java 2008-07-10 09:43:45 UTC (rev 1006) @@ -24,6 +24,7 @@ LearningPanel panel4; ResultSwingWorker worker; + LearningAlgorithm la; Timer timer; Boolean canceled = false; @@ -54,7 +55,7 @@ class ResultSwingWorker extends SwingWorker<List<Description>, List<Description>> { - LearningAlgorithm la; + Thread t; @@ -75,8 +76,7 @@ public void run() { if(la != null){ - System.out.println(scheduledExecutionTime()-System.currentTimeMillis()); - publish(la.getCurrentlyBestDescriptions(10, true)); + publish(la.getCurrentlyBestDescriptions(30, true)); } } @@ -88,14 +88,13 @@ @Override public void run() { - la.start(); + getWizardModel().getOre().start(); } }); t.setPriority(Thread.MIN_PRIORITY); t.start(); -// publish(la.getCurrentlyBestDescriptions(10, true)); try { t.join(); @@ -103,15 +102,15 @@ // TODO Auto-generated catch block e.printStackTrace(); } - List<Description> result = getWizardModel().getOre().getLearningResults(10); - + List<Description> result = getWizardModel().getOre().getLearningResults(30); + return result; } @Override public void done() { - + timer.cancel(); List<Description> result = null; try { result = get(); @@ -203,7 +202,7 @@ else{ canceled = true; panel4.getStopButton().setEnabled(false); - getWizardModel().getOre().getLa().stop(); + la.stop(); timer.cancel(); panel4.getStartButton().setEnabled(true); panel4.getStatusLabel().setText("Algorithm aborted"); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-07-10 09:41:14 UTC (rev 1005) +++ trunk/src/dl-learner/org/dllearner/tools/ore/NegExampleRepairDialog.java 2008-07-10 09:43:45 UTC (rev 1006) @@ -51,10 +51,8 @@ private ORE ore; private Individual ind; -// private OWLAPIReasoner reasoner; private Description actualDesc; private Description newDesc; -// private Individual object; private Set<OWLOntologyChange> allChanges; @@ -62,7 +60,6 @@ super(dialog, "Repair negative example", true); this.ind = ind; this.ore = ore; -// this.reasoner = ore.reasoner2; allChanges = new HashSet<OWLOntologyChange>(); init(); } @@ -90,7 +87,7 @@ GridBagLayout gbl = new GridBagLayout(); gbl.rowWeights = new double[] {0.0, 0.1, 0.1}; - gbl.rowHeights = new int[] {34, 7, 7}; + gbl.rowHeights = new int[] {64, 7, 7}; gbl.columnWeights = new double[] {0.1}; gbl.columnWidths = new int[] {7}; action_stats_Panel.setLayout(gbl); @@ -156,22 +153,31 @@ else if(e.getActionCommand().startsWith("add property")){ //add property Individual ind = new Individual(e.getActionCommand()); List<OWLOntologyChange> changes = ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, ind); - System.out.println("ghhfhg"); allChanges.addAll(changes); descPanel.updatePanel(); changesPanel.add(new ChangePanel("added property assertion " + ((ObjectSomeRestriction)actualDesc).getRole() + " to " + ind, changes, this)); } -// else if(e.getActionCommand().startsWith("remove property")){ //delete property -// ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); -// } + else if(e.getActionCommand().startsWith("remove complete property")){ //delete property + List<OWLOntologyChange> changes = ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); + allChanges.addAll(changes); + descPanel.updatePanel(); + changesPanel.add(new ChangePanel("removed property " + ((ObjectSomeRestriction)actualDesc).getRole(), changes, this)); + } + else if(e.getActionCommand().startsWith("remove all property")){ //remove property assertions + List<OWLOntologyChange> changes = ore.modi.deleteObjectPropertyAssertions(ind, (ObjectSomeRestriction)actualDesc); + allChanges.addAll(changes); + descPanel.updatePanel(); + changesPanel.add(new ChangePanel("added property assertion " + ((ObjectSomeRestriction)actualDesc).getRole() + " to " + ind, changes, this)); + } + }else if(e.getSource() instanceof MoveMenuItem){ actualDesc = ((MoveMenuItem)e.getSource()).getSource(); newDesc = new NamedClass(e.getActionCommand()); List<OWLOntologyChange> changes = ore.modi.moveIndividual(ind, actualDesc, newDesc); allChanges.addAll(changes); descPanel.updatePanel(); - statsPanel.updatePanel("remove", actualDesc); + statsPanel.updatePanel("move", actualDesc); changesPanel.add(new ChangePanel("moved class assertion from " + actualDesc + " to " + newDesc, changes, this)); } @@ -183,7 +189,8 @@ System.out.println(((RemoveAxiom)ol).getAxiom()); } else if(e.getActionCommand().equals("Ok")){ - + setVisible(false); + dispose(); } else if(e.getActionCommand().equals("Cancel")){ if (JOptionPane.showConfirmDialog(this, @@ -235,58 +242,6 @@ return allChanges; } -// if(e.getActionCommand().equals("delete instance")){ -// ore.modi.deleteIndividual(ind); -// -// } -// else{ -// actualDesc = ((DescriptionButton)e.getSource()).getDescription(); -// -// if(e.getActionCommand().startsWith("remove class")){ //remove class -// System.out.println(ore.reasoner2.instanceCheck(ore.getConceptToAdd() ,ind)); -// ore.modi.removeClassAssertion(ind, actualDesc); -// -// actionsPanel.updatePanel(); -// changes.add(new JLabel("removed class assertion to " + actualDesc)); -// changes.add(new JButton("Undo")); -// System.err.println(ore.modi.checkInstanceNewOntology(ore.conceptToAdd, ind)); -// -// } -// else if(e.getActionCommand().startsWith("add class")){ //add class -// System.err.println(actualDesc); -// ore.modi.addClassAssertion(ind, actualDesc); -// actionsPanel.updatePanel(); -// changes.add(new JLabel("added class assertion to " + actualDesc)); -// -// } -// else if(e.getActionCommand().startsWith("move class")){ //move class -// -// newDesc = (Description)new ChooseDialog(this, ore, ind).getSelectedElement(); -// System.err.println(newDesc); -// if(newDesc != null){ -// System.out.print(ind + " from " + actualDesc + " to " + newDesc); -// ore.modi.moveIndividual(ind, actualDesc, newDesc); -// } -// -// } -// else if(e.getActionCommand().equals("add property")){ //add property -// object = (Individual)new ChooseDialog(this, ore, actualDesc).getSelectedElement(); -// if(object != null) -// ore.modi.addObjectProperty(ind, (ObjectSomeRestriction)actualDesc, object); -// } -// else if(e.getActionCommand().equals("remove property")){ //delete property -// ore.modi.deleteObjectProperty(ind, (ObjectSomeRestriction)actualDesc); -// } -// } - - - - - - - - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-07-10 09:41:14 UTC (rev 1005) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ORE.java 2008-07-10 09:43:45 UTC (rev 1006) @@ -25,7 +25,6 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.Nothing; import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.core.owl.Union; import org.dllearner.kb.OWLAPIOntology; @@ -50,7 +49,7 @@ NamedClass ignoredConcept; Description conceptToAdd; OntologyModifierOWLAPI modi; - Set<NamedClass> allAtomicConcepts; + public Set<NamedClass> allAtomicConcepts; private double noise = 0.0; Thread t; @@ -147,11 +146,11 @@ e1.printStackTrace(); } + Set<String> t = new TreeSet<String>(); - Set<String> t = new TreeSet<String>(); + t.add(ignoredConcept.getName()); cm.applyConfigEntry(la, "ignoredConcepts", t ); -// cm.applyConfigEntry(la, "noisePercentage", noise); cm.applyConfigEntry(la, "guaranteeXgoodDescriptions", 10); try { la.init(); @@ -173,6 +172,7 @@ this.setLearningProblem(); this.setLearningAlgorithm(); + } public LearningAlgorithm start(){ @@ -186,16 +186,15 @@ // TODO Auto-generated catch block e.printStackTrace(); } - System.out.println(noise); + la.start(); return la; } + + -// public List<Description> getSolutions(){ -// return la.getCurrentlyBestDescriptions(); -// } - + public List<Description> getLearningResults(int anzahl){ return la.getCurrentlyBestDescriptions(anzahl, true); } @@ -443,7 +442,7 @@ } public Set<Individual> getIndividualsNotOfPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ - + System.out.println(rs.getAtomicConcepts()); Set<Individual> individuals = reasoner2.retrieval(objRestr.getChild(0)); Set<Individual> allIndividuals = reasoner2.getIndividuals(); System.out.println("alle:" + allIndividuals); @@ -455,19 +454,23 @@ } public Set<NamedClass> getpossibleMoveClasses(Individual ind){ - Set<NamedClass> moveClasses = rs.getAtomicConcepts(); - Set<NamedClass> indClasses = new HashSet<NamedClass>(); + Set<NamedClass> moveClasses = new HashSet<NamedClass>(); + for(NamedClass nc : rs.getAtomicConcepts()) + if(!rs.instanceCheck(nc, ind)) + moveClasses.add(nc); + - for(NamedClass moveNc : moveClasses) - if(rs.instanceCheck(moveNc, ind)){ - indClasses.add(moveNc); - } - moveClasses.removeAll(indClasses); - for(NamedClass moveNc : moveClasses) - for(NamedClass indNc : indClasses ) - if(new Intersection(moveNc, indNc).equals(new Nothing())) - moveClasses.remove(moveNc); +// for(NamedClass moveNc : moveClasses) +// if(rs.instanceCheck(moveNc, ind)){ +// indClasses.add(moveNc); +// } +// moveClasses.removeAll(indClasses); +// System.out.println("hier?" + allAtomicConcepts); +// for(NamedClass moveNc : moveClasses) +// for(NamedClass indNc : indClasses ) +// if(new Intersection(moveNc, indNc).equals(new Nothing())) +// moveClasses.remove(moveNc); return moveClasses; } @@ -481,22 +484,25 @@ e.printStackTrace(); } reasoner2 = cm.reasoner(OWLAPIReasoner.class,new OWLAPIOntology(modi.ontology)); + try { reasoner2.init(); } catch (ComponentInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } + rs = cm.reasoningService(reasoner2); + setLearningAlgorithm(); } - public boolean hasComplement(Description desc, Individual ind){ + public Set<NamedClass> getComplements(Description desc, Individual ind){ + Set<NamedClass> complements = new HashSet<NamedClass>(); - for(NamedClass nc : reasoner2.getAtomicConcepts()) - if(reasoner2.instanceCheck(nc, ind)) - if(modi.isComplement(desc, nc)) - return true; - - return false; + for(NamedClass nc : reasoner2.getConcepts(ind)){ + if(modi.isComplement(desc, nc)) + complements.add(nc); + } + return complements; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-07-10 09:41:14 UTC (rev 1005) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifierOWLAPI.java 2008-07-10 09:43:45 UTC (rev 1006) @@ -7,9 +7,12 @@ import java.util.LinkedList; import java.util.List; import java.util.Set; +import java.util.SortedSet; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.Negation; +import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.reasoning.OWLAPIDescriptionConvertVisitor; import org.dllearner.reasoning.OWLAPIReasoner; @@ -55,7 +58,9 @@ * @param oldDesc old description * @return */ - public void addAxiomToOWL(Description newDesc, Description oldDesc){ + public OWLOntologyChange addAxiomToOWL(Description newDesc, Description oldDesc){ + + OWLDescription newConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(newDesc); OWLDescription oldConceptOWLAPI = OWLAPIDescriptionConvertVisitor.getOWLDescription(oldDesc); @@ -73,8 +78,8 @@ // TODO Auto-generated catch block e.printStackTrace(); } + return axiom; - } /** @@ -217,7 +222,7 @@ try { manager.applyChanges(changes); - saveOntology(); + return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block @@ -281,6 +286,48 @@ /** * + * @param ind the individual which property has to be removed + * @param objSome the property which has to be removed + * @return changes that have been done + */ + public List<OWLOntologyChange> deleteObjectPropertyAssertions(Individual ind, ObjectSomeRestriction objSome){ + + List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); + + OWLIndividual individualOWLAPI = factory.getOWLIndividual( URI.create(ind.getName())); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); + + Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(individualOWLAPI); + + + List<RemoveAxiom> removeList = new LinkedList<RemoveAxiom>(); + SortedSet<Individual> allObjects = reasoner.getRoleMembers((ObjectProperty) objSome.getRole()).get(ind); + + for(OWLObjectPropertyAssertionAxiom o :properties){ + if( (o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(individualOWLAPI))) + for(Individual i : allObjects) + if(o.getObject().equals(factory.getOWLIndividual( URI.create(i.getName())))) + removeList.add(new RemoveAxiom(ontology, o)); + + + + } + changes.addAll(removeList); + + try { + manager.applyChanges(removeList); + return changes; + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return null; + + } + + /** + * * @param subInd the individual which is subject in the objectProperty * @param objSome the property which has to be added to subject * @param objInd the individual which is object in the objectProperty @@ -320,8 +367,7 @@ for(OWLOntologyChange change : changes){ if(change instanceof RemoveAxiom){ - OWLAxiom axiom = ((RemoveAxiom)change).getAxiom(); - AddAxiom add = new AddAxiom(ontology, axiom); + AddAxiom add = new AddAxiom(ontology, change.getAxiom()); try { manager.applyChange(add); } catch (OWLOntologyChangeException e) { @@ -330,8 +376,7 @@ } } else if(change instanceof AddAxiom){ - OWLClassAssertionAxiom cl = (OWLClassAssertionAxiom)((AddAxiom)change).getAxiom(); - RemoveAxiom rem = new RemoveAxiom(ontology, cl); + RemoveAxiom rem = new RemoveAxiom(ontology, change.getAxiom()); try { manager.applyChange(rem); } catch (OWLOntologyChangeException e) { @@ -341,23 +386,40 @@ } } + + } public boolean isComplement(Description desc1, Description desc2){ - OWLDescription d1 = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc1); OWLDescription d2 = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc2); - OWLDescription d3 = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc1.getChild(0)); - + OWLDescription negChild = null; + OWLDescription negDesc = null; + if(desc1 instanceof Negation){ + negChild = OWLAPIDescriptionConvertVisitor.getOWLDescription(desc1.getChild(0)); + } + else{ + negDesc = OWLAPIDescriptionConvertVisitor.getOWLDescription(new Negation(desc1)); + } + for(OWLAxiom ax : ontology.getAxioms()){ - if(ax.equals(factory.getOWLEquivalentClassesAxiom(d1, d2))) - return true; - if(ax.equals(factory.getOWLDisjointClassesAxiom(d3, d2))) - return true; + + if(desc1 instanceof Negation){ + if(ax.equals(factory.getOWLEquivalentClassesAxiom(d1, d2))) + return true; + if(ax.equals(factory.getOWLDisjointClassesAxiom(negChild, d2))) + return true; + } + else{ + if(ax.equals(factory.getOWLDisjointClassesAxiom(d1, d2))) + return true; + if(ax.equals(factory.getOWLEquivalentClassesAxiom(negDesc, d2))) + return true; + } + } - - + return false; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-07-10 09:41:14 UTC (rev 1005) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairPanelDescriptor.java 2008-07-10 09:43:45 UTC (rev 1006) @@ -60,7 +60,7 @@ } public void actionPerformed(ActionEvent event) { - System.out.println(ontologyChanges); + System.out.println(getOntologyChanges()); if(event.getActionCommand().equals("save")){ getWizardModel().getOre().getModi().saveOntology(); @@ -74,14 +74,13 @@ if(e.getClickCount() == 2 && e.getSource() == panel4.getNegFailureList() ){ Individual ind = (Individual)panel4.getNegFailureList().getSelectedValue(); ontologyChanges.addAll(new NegExampleRepairDialog(ind, getWizard().getDialog(), getWizardModel().getOre()).getAllChanges()); -// System.out.println(getWizardModel().getOre().getCriticalDescriptions(ind, getWizardModel().getOre().conceptToAdd )); + getWizardModel().getOre().getModi().saveOntology(); } } public void mouseEntered(MouseEvent e) { - // TODO Auto-generated method stub - + } public void mouseExited(MouseEvent e) { @@ -97,5 +96,13 @@ public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub - }} + } + + public Set<OWLOntologyChange> getOntologyChanges() { + return ontologyChanges; + } + +} + + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-07-10 09:41:14 UTC (rev 1005) +++ trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-07-10 09:43:45 UTC (rev 1006) @@ -29,6 +29,7 @@ ORE ore; Individual ind; Set<NamedClass> classes; + Set<String> newClasses; JPanel classesPanel; @@ -69,6 +70,7 @@ classesPanel.add(classLb); classes = ore.reasoner2.getConcepts(ind); + newClasses = new HashSet<String>(); for(NamedClass nc : classes) classesPanel.add(new JLabel(nc.getName())); @@ -81,32 +83,42 @@ public void updatePanel(String action, Description d){ - Set<NamedClass> afterUpdate = new HashSet<NamedClass>(); - afterUpdate.addAll(ore.reasoner2.getConcepts(ind)); + if(action.equals("undo")){ +// Set<String> afterUpdate = new HashSet<String>(); +// for(NamedClass nc : ore.reasoner2.getConcepts(ind)) +// afterUpdate.add(nc.toString()); +// Set<String> oldClasses = new HashSet<String>(); +// for(NamedClass nc : newClasses) +// oldClasses.add(nc.toString()); + }else{ + Set<String> afterUpdate = new HashSet<String>(); + for(NamedClass nc : ore.reasoner2.getConcepts(ind)) + afterUpdate.add(nc.toString()); + Set<String> oldClasses = new HashSet<String>(); + for(NamedClass nc : classes) + oldClasses.add(nc.toString()); + for(String nc : afterUpdate) + if(!oldClasses.contains(nc)){ + + ImageIcon icon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/new.gif"); + JLabel lab = new JLabel(nc); + lab.setIcon(icon); + lab.setHorizontalTextPosition(JLabel.LEFT); + classesPanel.add(lab); + } + + + for(NamedClass nc : classes) + + if(!afterUpdate.contains(nc.toString())) + for(Component co: classesPanel.getComponents()) + if(co instanceof JLabel) + if(((JLabel)co).getText().equals(nc.toString())) + ((JLabel)co).setText("<html><strike>" + nc + "</strike></html>"); + newClasses.addAll(afterUpdate); + } - for(NamedClass nc : afterUpdate) - if(!(classes.contains(nc))){ - ImageIcon icon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/Neu_006.gif"); - JLabel lab = new JLabel(nc.getName()); - lab.setIcon(icon); - lab.setHorizontalTextPosition(JLabel.LEFT); - classesPanel.add(lab); - } - for(NamedClass nc : classes) - if(!(afterUpdate.contains(nc))) - for(Component co: classesPanel.getComponents()) - if(co instanceof JLabel) - if(((JLabel)co).getText().equals(nc.toString())) - ((JLabel)co).setText("<html><strike>" + nc + "</strike></html>"); - - -// for(Component co: classesPanel.getComponents()){ -// if(co instanceof JLabel) -// if(((JLabel)co).getText().equals(d.toString())) -// ((JLabel)co).setText("<html><strike>" + d + "</strike></html>"); -// -// } SwingUtilities.updateComponentTreeUI(this); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-07-10 09:41:14 UTC (rev 1005) +++ trunk/src/dl-learner/org/dllearner/tools/ore/WizardController.java 2008-07-10 09:43:45 UTC (rev 1006) @@ -8,6 +8,7 @@ import java.util.concurrent.ExecutionException; import javax.swing.DefaultListModel; +import javax.swing.JOptionPane; import javax.swing.SwingWorker; import org.dllearner.core.owl.Individual; @@ -69,26 +70,25 @@ //TODO nochmal \xFCberdenken if(nextPanelDescriptor.equals("CONCEPT_CHOOSE_PANEL")){ - ((ConceptPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel3.getModel().clear(); + ((ConceptPanelDescriptor)model.getPanelHashMap().get(nextPanelDescriptor)).panel3.getModel().clear(); new ConceptRetriever(nextPanelDescriptor).execute(); } if( nextPanelDescriptor.equals("REPAIR_PANEL")){ - ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getNegFailureModel().clear(); - ((RepairPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getPosFailureModel().clear(); - wizard.getModel().getOre().getModi().addAxiomToOWL(wizard.getModel().getOre().getConceptToAdd(), wizard.getModel().getOre().getIgnoredConcept()); + RepairPanelDescriptor repair = ((RepairPanelDescriptor)model.getPanelHashMap().get(nextPanelDescriptor)); + repair.panel4.getNegFailureModel().clear(); + repair.panel4.getPosFailureModel().clear(); +// OWLOntologyChange change = model.getOre().getModi().addAxiomToOWL(model.getOre().getConceptToAdd(), model.getOre().getIgnoredConcept()); +// repair.getOntologyChanges().add(change); new FailInstancesRetriever(nextPanelDescriptor).execute(); -// for(Description desc : wizard.getModel().getOre().getConceptToAdd().getChildren()) -// System.out.println(desc); - } if(nextPanelDescriptor.equals("LEARNING_PANEL")){ wizard.getModel().getOre().init(); - ((LearningPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getStatusLabel().setText(""); - ((LearningPanelDescriptor)wizard.getModel().getPanelHashMap().get(nextPanelDescriptor)).panel4.getModel().clear(); + ((LearningPanelDescriptor)model.getPanelHashMap().get(nextPanelDescriptor)).panel4.getStatusLabel().setText(""); + ((LearningPanelDescriptor)model.getPanelHashMap().get(nextPanelDescriptor)).panel4.getModel().clear(); } @@ -119,9 +119,27 @@ // panel, and display it. Object backPanelDescriptor = descriptor.getBackPanelDescriptor(); - wizard.setCurrentPanel(backPanelDescriptor); - refreshLeftPanel(backPanelDescriptor); + + if(backPanelDescriptor.equals("LEARNING_PANEL")){ + if (JOptionPane.showConfirmDialog(wizard.getDialog(), + "All changes will be lost!", "Warning!", + JOptionPane.YES_NO_OPTION) + == JOptionPane.YES_OPTION){ + + wizard.getModel().getOre().getModi().undoChanges(((RepairPanelDescriptor)descriptor).getOntologyChanges()); + ((RepairPanelDescriptor)descriptor).getOntologyChanges().clear(); + wizard.setCurrentPanel(backPanelDescriptor); + refreshLeftPanel(backPanelDescriptor); + } + + + }else{ + wizard.setCurrentPanel(backPanelDescriptor); + refreshLeftPanel(backPanelDescriptor); + } + + } void refreshLeftPanel(Object PanelDescriptor){ @@ -230,7 +248,7 @@ ConceptPanelDescriptor nextPanel = (ConceptPanelDescriptor) wizard .getModel().getPanelHashMap().get(nextPanelID); DefaultListModel dm = new DefaultListModel(); - + for (NamedClass cl : ind) { dm.addElement(cl); Added: trunk/src/dl-learner/org/dllearner/tools/ore/new.gif =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/new.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |