You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(120) |
Sep
(36) |
Oct
(116) |
Nov
(17) |
Dec
(44) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(143) |
Feb
(192) |
Mar
(74) |
Apr
(84) |
May
(105) |
Jun
(64) |
Jul
(49) |
Aug
(120) |
Sep
(159) |
Oct
(156) |
Nov
(51) |
Dec
(28) |
2009 |
Jan
(17) |
Feb
(55) |
Mar
(33) |
Apr
(57) |
May
(54) |
Jun
(28) |
Jul
(6) |
Aug
(16) |
Sep
(38) |
Oct
(30) |
Nov
(26) |
Dec
(52) |
2010 |
Jan
(7) |
Feb
(91) |
Mar
(65) |
Apr
(2) |
May
(14) |
Jun
(25) |
Jul
(38) |
Aug
(48) |
Sep
(80) |
Oct
(70) |
Nov
(75) |
Dec
(77) |
2011 |
Jan
(68) |
Feb
(53) |
Mar
(51) |
Apr
(35) |
May
(65) |
Jun
(101) |
Jul
(29) |
Aug
(230) |
Sep
(95) |
Oct
(49) |
Nov
(110) |
Dec
(63) |
2012 |
Jan
(41) |
Feb
(42) |
Mar
(25) |
Apr
(46) |
May
(51) |
Jun
(44) |
Jul
(45) |
Aug
(29) |
Sep
(12) |
Oct
(9) |
Nov
(17) |
Dec
(2) |
2013 |
Jan
(12) |
Feb
(14) |
Mar
(7) |
Apr
(16) |
May
(54) |
Jun
(27) |
Jul
(11) |
Aug
(5) |
Sep
(85) |
Oct
(27) |
Nov
(37) |
Dec
(32) |
2014 |
Jan
(8) |
Feb
(29) |
Mar
(5) |
Apr
(3) |
May
(22) |
Jun
(3) |
Jul
(4) |
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <hee...@us...> - 2009-10-08 09:48:33
|
Revision: 1883 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1883&view=rev Author: heeroyuy Date: 2009-10-08 09:48:07 +0000 (Thu, 08 Oct 2009) Log Message: ----------- -added a handler for the option panel -removed unnecessary methods in the option panel Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanelHandler.java Modified: trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java 2009-10-08 09:13:46 UTC (rev 1882) +++ trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java 2009-10-08 09:48:07 UTC (rev 1883) @@ -41,14 +41,6 @@ private final JLabel minAccuracyLabel; private final JLabel maxExecutionTimeLabel; private final JLabel nrOfConceptsLabel; - private JLabel owlRadioButtonLabel; - private JLabel elProfileButtonLabel; - private JLabel allBoxLabel; - private JLabel someBoxLabel; - private JLabel notBoxLabel; - private JLabel valueBoxLabel; - private JLabel moreBoxLabel; - private JLabel lessBoxLabel; private final JSlider minAccuracy; private final JSlider maxExecutionTime; @@ -73,12 +65,15 @@ private JPanel labelPanel; private JPanel sliderPanel; + private OptionPanelHandler optionHandler; private double accuracy; + /** * Constructor for the Option Panel. */ public OptionPanel() { setLayout(new BorderLayout()); + optionHandler = new OptionPanelHandler(this); labelPanel = new JPanel(); labelPanel.setLayout(new GridLayout(0, 1)); sliderPanel = new JPanel(); @@ -86,21 +81,13 @@ profilePanel = new JPanel(); profilePanel.setLayout(new GridLayout(0, 1)); radioBoxPanel = new JPanel(); - radioBoxPanel.setLayout(new GridLayout(1, 4)); + radioBoxPanel.setLayout(new GridLayout(1, 3)); checkBoxPanel = new JPanel(); - checkBoxPanel.setLayout(new GridLayout(1, 14)); + checkBoxPanel.setLayout(new GridLayout(1, 8)); minAccuracyLabel = new JLabel("noise in %: "); maxExecutionTimeLabel = new JLabel("maximum execution time: "); nrOfConceptsLabel = new JLabel("max. number of results: "); - owlRadioButtonLabel = new JLabel("OWL 2"); - elProfileButtonLabel = new JLabel("EL Profile"); - allBoxLabel = new JLabel("all"); - someBoxLabel = new JLabel("some"); - notBoxLabel = new JLabel("not"); - valueBoxLabel = new JLabel("value"); - lessBoxLabel = new JLabel("<=x with max.:"); - moreBoxLabel = new JLabel(">=x with max.:"); minAccuracy = new JSlider(0, 50, 5); minAccuracy.setPaintTicks(true); @@ -122,42 +109,66 @@ nrOfConcepts.setMinorTickSpacing(1); nrOfConcepts.setPaintLabels(true); - owlRadioButton = new JRadioButton(); - elProfileButton = new JRadioButton(); + owlRadioButton = new JRadioButton("OWL 2", true); + elProfileButton = new JRadioButton("EL Profile", false); owlRadioButton.setEnabled(true); + owlRadioButton.addItemListener(optionHandler); + elProfileButton.addItemListener(optionHandler); - allBox = new JCheckBox(); - someBox = new JCheckBox(); - notBox = new JCheckBox(); - valueBox = new JCheckBox(); - lessBox = new JCheckBox(); - moreBox = new JCheckBox(); + allBox = new JCheckBox("all", true); + allBox.addItemListener(optionHandler); + someBox = new JCheckBox("some", true); + someBox.addItemListener(optionHandler); + notBox = new JCheckBox("not", true); + notBox.addItemListener(optionHandler); + valueBox = new JCheckBox("value", true); + valueBox.addItemListener(optionHandler); + lessBox = new JCheckBox("<=x with max.:", true); + lessBox.addItemListener(optionHandler); + moreBox = new JCheckBox(">=x with max.:", true); + moreBox.addItemListener(optionHandler); countLessBox = new JComboBox(); + countLessBox.addItem("1"); + + countLessBox.addItem("2"); + countLessBox.addItem("3"); + countLessBox.addItem("4"); + countLessBox.addItem("5"); + countLessBox.addItem("6"); + countLessBox.addItem("7"); + countLessBox.addItem("8"); + countLessBox.addItem("9"); + countLessBox.addItem("10"); + countLessBox.setSelectedItem("3"); countLessBox.setEditable(false); + countMoreBox = new JComboBox(); + countMoreBox.addItem("1"); + countMoreBox.addItem("2"); + countMoreBox.addItem("3"); + countMoreBox.addItem("4"); + countMoreBox.addItem("5"); + countMoreBox.addItem("6"); + countMoreBox.addItem("7"); + countMoreBox.addItem("8"); + countMoreBox.addItem("9"); + countMoreBox.addItem("10"); + countMoreBox.setSelectedItem("3"); countMoreBox.setEditable(false); checkBoxPanel.add(allBox); - checkBoxPanel.add(allBoxLabel); checkBoxPanel.add(someBox); - checkBoxPanel.add(someBoxLabel); checkBoxPanel.add(notBox); - checkBoxPanel.add(notBoxLabel); checkBoxPanel.add(valueBox); - checkBoxPanel.add(valueBoxLabel); checkBoxPanel.add(lessBox); - checkBoxPanel.add(lessBoxLabel); checkBoxPanel.add(countLessBox); checkBoxPanel.add(moreBox); - checkBoxPanel.add(moreBoxLabel); checkBoxPanel.add(countMoreBox); radioBoxPanel.add(owlRadioButton); - radioBoxPanel.add(owlRadioButtonLabel); radioBoxPanel.add(elProfileButton); - radioBoxPanel.add(elProfileButtonLabel); profilePanel.add(radioBoxPanel); profilePanel.add(checkBoxPanel); @@ -201,58 +212,30 @@ return nrOfConcepts.getValue(); } - public void setOwlRadioButton(JRadioButton owlRadioButton) { - this.owlRadioButton = owlRadioButton; - } - public JRadioButton getOwlRadioButton() { return owlRadioButton; } - public void setElProfileButton(JRadioButton elProfileButton) { - this.elProfileButton = elProfileButton; - } - public JRadioButton getElProfileButton() { return elProfileButton; } - public void setAllBox(JCheckBox allBox) { - this.allBox = allBox; - } - public JCheckBox getAllBox() { return allBox; } - public void setSomeBox(JCheckBox someBox) { - this.someBox = someBox; - } - public JCheckBox getSomeBox() { return someBox; } - public void setNotBox(JCheckBox notBox) { - this.notBox = notBox; - } - public JCheckBox getNotBox() { return notBox; } - public void setValueBox(JCheckBox valueBox) { - this.valueBox = valueBox; - } - public JCheckBox getValueBox() { return valueBox; } - public void setLessBox(JCheckBox lessBox) { - this.lessBox = lessBox; - } - public JCheckBox getLessBox() { return lessBox; } @@ -261,28 +244,24 @@ return profilePanel; } - public void setCountLessBox(JComboBox countLessBox) { - this.countLessBox = countLessBox; - } - public JComboBox getCountLessBox() { return countLessBox; } - public void setCountMoreBox(JComboBox countMoreBox) { - this.countMoreBox = countMoreBox; - } - public JComboBox getCountMoreBox() { return countMoreBox; } - public void setMoreBox(JCheckBox moreBox) { - this.moreBox = moreBox; - } - public JCheckBox getMoreBox() { return moreBox; } + public JPanel getRadioBoxPanel() { + return radioBoxPanel; + } + + public JPanel getCheckBoxPanel() { + return checkBoxPanel; + } + } Added: trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanelHandler.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanelHandler.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanelHandler.java 2009-10-08 09:48:07 UTC (rev 1883) @@ -0,0 +1,63 @@ +package org.dllearner.tools.protege; + +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; + +public class OptionPanelHandler implements ItemListener { + + private static final String OWL_RADIO_STRING = "OWL 2"; + private static final String EL_RADIO_STRING = "EL Profile"; + + private OptionPanel option; + + public OptionPanelHandler(OptionPanel o) { + this.option = o; + + } + + @Override + public void itemStateChanged(ItemEvent e) { + if (e.toString().contains(OWL_RADIO_STRING)) { + if (option.getOwlRadioButton().isSelected()) { + this.setToOWLProfile(); + } else { + this.setToELProfile(); + } + + } else if (e.toString().contains(EL_RADIO_STRING)) { + if (option.getElProfileButton().isSelected()) { + this.setToELProfile(); + } else { + this.setToOWLProfile(); + } + + } + } + + private void setToOWLProfile() { + option.getOwlRadioButton().setSelected(true); + option.getElProfileButton().setSelected(false); + option.getAllBox().setSelected(true); + option.getSomeBox().setSelected(true); + option.getNotBox().setSelected(true); + option.getValueBox().setSelected(true); + option.getLessBox().setSelected(true); + option.getCountLessBox().setEnabled(true); + option.getMoreBox().setSelected(true); + option.getCountMoreBox().setEnabled(true); + } + + private void setToELProfile() { + option.getOwlRadioButton().setSelected(false); + option.getElProfileButton().setSelected(true); + option.getAllBox().setSelected(false); + option.getSomeBox().setSelected(true); + option.getNotBox().setSelected(false); + option.getValueBox().setSelected(false); + option.getLessBox().setSelected(false); + option.getCountLessBox().setEnabled(false); + option.getMoreBox().setSelected(false); + option.getCountMoreBox().setEnabled(false); + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-10-08 09:14:01
|
Revision: 1882 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1882&view=rev Author: lorenz_b Date: 2009-10-08 09:13:46 +0000 (Thu, 08 Oct 2009) Log Message: ----------- fixed bug changed some ui parts fixed manchestersyntax rendering Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterRenderer.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -294,6 +294,7 @@ reasoner = OREManager.getInstance().getReasoner().getReasoner(); gen = new CachedExplanationGenerator(ontology, reasoner); orderingMap.clear(); + usageChecker = new AxiomUsageChecker(ontology); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; +import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.EvaluatedDescriptionClass; public class LearningManager { @@ -16,8 +17,13 @@ private int learnMode = 0; + private NamedClass currentClass2Describe; + private List<EvaluatedDescriptionClass> newDescriptions; + private List<EvaluatedDescriptionClass> equivalentDescriptions; + private List<EvaluatedDescriptionClass> superDescriptions; + private int currentDescriptionIndex = 0; public static LearningManager getInstance(){ @@ -29,6 +35,7 @@ public LearningManager(){ listeners = new ArrayList<LearningManagerListener>(); + newDescriptions = new ArrayList<EvaluatedDescriptionClass>(); } public void setLearningMode(int learningMode){ @@ -42,13 +49,41 @@ public List<EvaluatedDescriptionClass> getNewDescriptions() { return newDescriptions; } + + public void setCurrentClass2Describe(NamedClass nc){ + currentClass2Describe = nc; + } + + public NamedClass getCurrentClass2Describe(){ + return currentClass2Describe; + } - public void setNewDescriptions(List<EvaluatedDescriptionClass> newDescriptions) { - this.newDescriptions = newDescriptions; + public void setNewDescriptions(List<List<EvaluatedDescriptionClass>> descriptions) { + newDescriptions.clear(); + newDescriptions.addAll(descriptions.get(0)); + newDescriptions.addAll(descriptions.get(1)); + equivalentDescriptions = descriptions.get(0); + superDescriptions = descriptions.get(1); currentDescriptionIndex = 0; fireNewDescriptionsAdded(newDescriptions); setNextDescription(); } + + public void addEquivalentDescriptions(List<EvaluatedDescriptionClass> descriptions){ + equivalentDescriptions = descriptions; + } + + public void addSuperDescriptions(List<EvaluatedDescriptionClass> descriptions){ + superDescriptions = descriptions; + } + + public boolean isEquivalentDescription(EvaluatedDescriptionClass desc){ + return equivalentDescriptions.contains(desc); + } + + public boolean isSuperDescription(EvaluatedDescriptionClass desc){ + return superDescriptions.contains(desc); + } public int getCurrentDescriptionIndex() { return currentDescriptionIndex; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -70,6 +70,8 @@ private List<OREManagerListener> listeners; private OntologyModifier modifier; + + private boolean consistentOntology; public OREManager(){ cm = ComponentManager.getInstance(); @@ -160,6 +162,7 @@ prefixes = reasoner.getPrefixes(); modifier = new OntologyModifier(reasoner); fireActiveOntologyChanged(); + consistentOntology = reasoner.isConsistent(); } public void loadOntology() throws OWLOntologyCreationException, URISyntaxException{ @@ -179,7 +182,7 @@ } public boolean consistentOntology() throws InconsistentOntologyException{ - return reasoner.isConsistent(); + return consistentOntology; } public PelletReasoner getReasoner(){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -24,10 +24,7 @@ import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.RemoveAxiom; -import uk.ac.manchester.cs.owl.modularity.ModuleType; - import com.clarkparsia.modularity.IncrementalClassifier; -import com.clarkparsia.modularity.ModularityUtils; public class LostEntailmentsChecker { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -58,6 +58,7 @@ if(strikeOutIrrelevantParts){ return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root, laconicExplanation); } else { +// return new ManchesterRenderer(OREManager.getInstance().getReasoner().getOWLOntologyManager()).render(ax, null); return ManchesterSyntaxRenderer.render(ax, impMan.isSelected(ax), depth2Root); } } else if(columnIndex == 1){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -44,7 +44,7 @@ setRowHeightEnabled(true); getColumnModel().getColumn(1).setCellRenderer(new MultiLineTableCellRenderer()); setRowHeight(getRowHeight() + 5); - getColumn(0).setMaxWidth(50); + getColumn(0).setMaxWidth(60); getColumn(2).setMaxWidth(60); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -85,7 +85,7 @@ return "Lost"; } else { - return "Added"; + return "Retained"; } } else if(columnIndex == 1){ Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterRenderer.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterRenderer.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -0,0 +1,1268 @@ +package org.dllearner.tools.ore.ui; + +import java.net.URI; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.log4j.Logger; +import org.protege.editor.owl.model.OWLModelManager; +import org.protege.editor.owl.ui.renderer.OWLEntityRenderer; +import org.protege.editor.owl.ui.renderer.OWLObjectRendererImpl; +import org.protege.editor.owl.ui.renderer.OWLRendererPreferences; +import org.semanticweb.owl.model.OWLAntiSymmetricObjectPropertyAxiom; +import org.semanticweb.owl.model.OWLAxiomAnnotationAxiom; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLClassAssertionAxiom; +import org.semanticweb.owl.model.OWLConstant; +import org.semanticweb.owl.model.OWLConstantAnnotation; +import org.semanticweb.owl.model.OWLDataAllRestriction; +import org.semanticweb.owl.model.OWLDataCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataComplementOf; +import org.semanticweb.owl.model.OWLDataExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLDataOneOf; +import org.semanticweb.owl.model.OWLDataProperty; +import org.semanticweb.owl.model.OWLDataPropertyAssertionAxiom; +import org.semanticweb.owl.model.OWLDataPropertyDomainAxiom; +import org.semanticweb.owl.model.OWLDataPropertyExpression; +import org.semanticweb.owl.model.OWLDataPropertyRangeAxiom; +import org.semanticweb.owl.model.OWLDataRange; +import org.semanticweb.owl.model.OWLDataRangeFacetRestriction; +import org.semanticweb.owl.model.OWLDataRangeRestriction; +import org.semanticweb.owl.model.OWLDataSomeRestriction; +import org.semanticweb.owl.model.OWLDataSubPropertyAxiom; +import org.semanticweb.owl.model.OWLDataType; +import org.semanticweb.owl.model.OWLDataValueRestriction; +import org.semanticweb.owl.model.OWLDataVisitor; +import org.semanticweb.owl.model.OWLDeclarationAxiom; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLDifferentIndividualsAxiom; +import org.semanticweb.owl.model.OWLDisjointClassesAxiom; +import org.semanticweb.owl.model.OWLDisjointDataPropertiesAxiom; +import org.semanticweb.owl.model.OWLDisjointObjectPropertiesAxiom; +import org.semanticweb.owl.model.OWLDisjointUnionAxiom; +import org.semanticweb.owl.model.OWLEntity; +import org.semanticweb.owl.model.OWLEntityAnnotationAxiom; +import org.semanticweb.owl.model.OWLEquivalentClassesAxiom; +import org.semanticweb.owl.model.OWLEquivalentDataPropertiesAxiom; +import org.semanticweb.owl.model.OWLEquivalentObjectPropertiesAxiom; +import org.semanticweb.owl.model.OWLFunctionalDataPropertyAxiom; +import org.semanticweb.owl.model.OWLFunctionalObjectPropertyAxiom; +import org.semanticweb.owl.model.OWLImportsDeclaration; +import org.semanticweb.owl.model.OWLIndividual; +import org.semanticweb.owl.model.OWLInverseFunctionalObjectPropertyAxiom; +import org.semanticweb.owl.model.OWLInverseObjectPropertiesAxiom; +import org.semanticweb.owl.model.OWLIrreflexiveObjectPropertyAxiom; +import org.semanticweb.owl.model.OWLNegativeDataPropertyAssertionAxiom; +import org.semanticweb.owl.model.OWLNegativeObjectPropertyAssertionAxiom; +import org.semanticweb.owl.model.OWLObject; +import org.semanticweb.owl.model.OWLObjectAllRestriction; +import org.semanticweb.owl.model.OWLObjectAnnotation; +import org.semanticweb.owl.model.OWLObjectCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectComplementOf; +import org.semanticweb.owl.model.OWLObjectExactCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectIntersectionOf; +import org.semanticweb.owl.model.OWLObjectMaxCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectMinCardinalityRestriction; +import org.semanticweb.owl.model.OWLObjectOneOf; +import org.semanticweb.owl.model.OWLObjectProperty; +import org.semanticweb.owl.model.OWLObjectPropertyAssertionAxiom; +import org.semanticweb.owl.model.OWLObjectPropertyChainSubPropertyAxiom; +import org.semanticweb.owl.model.OWLObjectPropertyDomainAxiom; +import org.semanticweb.owl.model.OWLObjectPropertyExpression; +import org.semanticweb.owl.model.OWLObjectPropertyInverse; +import org.semanticweb.owl.model.OWLObjectPropertyRangeAxiom; +import org.semanticweb.owl.model.OWLObjectSelfRestriction; +import org.semanticweb.owl.model.OWLObjectSomeRestriction; +import org.semanticweb.owl.model.OWLObjectSubPropertyAxiom; +import org.semanticweb.owl.model.OWLObjectUnionOf; +import org.semanticweb.owl.model.OWLObjectValueRestriction; +import org.semanticweb.owl.model.OWLObjectVisitor; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyAnnotationAxiom; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLReflexiveObjectPropertyAxiom; +import org.semanticweb.owl.model.OWLRestriction; +import org.semanticweb.owl.model.OWLSameIndividualsAxiom; +import org.semanticweb.owl.model.OWLSubClassAxiom; +import org.semanticweb.owl.model.OWLSymmetricObjectPropertyAxiom; +import org.semanticweb.owl.model.OWLTransitiveObjectPropertyAxiom; +import org.semanticweb.owl.model.OWLTypedConstant; +import org.semanticweb.owl.model.OWLUntypedConstant; +import org.semanticweb.owl.model.SWRLAtom; +import org.semanticweb.owl.model.SWRLAtomConstantObject; +import org.semanticweb.owl.model.SWRLAtomDObject; +import org.semanticweb.owl.model.SWRLAtomDVariable; +import org.semanticweb.owl.model.SWRLAtomIVariable; +import org.semanticweb.owl.model.SWRLAtomIndividualObject; +import org.semanticweb.owl.model.SWRLBuiltInAtom; +import org.semanticweb.owl.model.SWRLClassAtom; +import org.semanticweb.owl.model.SWRLDataRangeAtom; +import org.semanticweb.owl.model.SWRLDataValuedPropertyAtom; +import org.semanticweb.owl.model.SWRLDifferentFromAtom; +import org.semanticweb.owl.model.SWRLObjectPropertyAtom; +import org.semanticweb.owl.model.SWRLRule; +import org.semanticweb.owl.model.SWRLSameAsAtom; +import org.semanticweb.owl.util.OWLDescriptionComparator; +import org.semanticweb.owl.util.OWLDescriptionVisitorAdapter; +import org.semanticweb.owl.util.ShortFormProvider; +import org.semanticweb.owl.util.SimpleShortFormProvider; +import org.semanticweb.owl.vocab.OWLRestrictedDataRangeFacetVocabulary; +import org.semanticweb.owl.vocab.XSDVocabulary; + +public class ManchesterRenderer implements OWLObjectVisitor{ + private static final Logger logger = Logger.getLogger(OWLObjectRendererImpl.class); + + private OWLOntologyManager owlModelManager; + + private StringBuilder buffer; + + private BracketWriter bracketWriter; + + private Map<OWLRestrictedDataRangeFacetVocabulary, String> facetMap; + + private Map<URI, Boolean> simpleRenderDatatypes; + + private OWLObject focusedObject; + + private OWLEntityRenderer entityRenderer; + + private ShortFormProvider shortFomProvider; + + private OWLDescriptionComparator comparator = new OWLDescriptionComparator(shortFomProvider); + + + public ManchesterRenderer(OWLOntologyManager manager) { + this.owlModelManager = manager; + buffer = new StringBuilder(); + bracketWriter = new BracketWriter(); + facetMap = new HashMap<OWLRestrictedDataRangeFacetVocabulary, String>(); + facetMap.put(OWLRestrictedDataRangeFacetVocabulary.MIN_EXCLUSIVE, ">"); + facetMap.put(OWLRestrictedDataRangeFacetVocabulary.MAX_EXCLUSIVE, "<"); + facetMap.put(OWLRestrictedDataRangeFacetVocabulary.MIN_INCLUSIVE, ">="); + facetMap.put(OWLRestrictedDataRangeFacetVocabulary.MAX_INCLUSIVE, "<="); + simpleRenderDatatypes = new HashMap<URI, Boolean>(); + simpleRenderDatatypes.put(XSDVocabulary.INT.getURI(), false); + simpleRenderDatatypes.put(XSDVocabulary.FLOAT.getURI(), false); + simpleRenderDatatypes.put(XSDVocabulary.DOUBLE.getURI(), false); + simpleRenderDatatypes.put(XSDVocabulary.STRING.getURI(), true); + simpleRenderDatatypes.put(XSDVocabulary.BOOLEAN.getURI(), false); + + shortFomProvider = new SimpleShortFormProvider(); + } + + + public void setup(OWLModelManager owlModelManager) { + } + + + public void initialise() { + } + + + public void dispose() { + } + + + public OWLObject getFocusedObject() { + return focusedObject; + } + + +// public void setFocusedObject(OWLObject focusedObject) { +// this.focusedObject = focusedObject; +// if(focusedObject instanceof OWLDescription) { +// comparator.setFocusedDescription((OWLDescription) focusedObject); +// } +// } + + + protected String getAndKeyWord() { + return "and"; + } + + + protected String getOrKeyWord() { + return "or"; + } + + + protected String getNotKeyWord() { + return " not"; + } + + + protected String getSomeKeyWord() { + return "some"; + } + + + protected String getAllKeyWord() { + return "only"; + } + + + protected String getValueKeyWord() { + return "value"; + } + + + protected String getMinKeyWord() { + return "min"; + } + + + protected String getMaxKeyWord() { + return "max"; + } + + + protected String getExactlyKeyWord() { + return "exactly"; + } + + + public String render(OWLObject object, OWLEntityRenderer entityRenderer) { + reset(); + this.entityRenderer = entityRenderer; + try { + object.accept(this); + return buffer.toString(); + } + catch (Exception e) {e.printStackTrace(); + return "<Error! " + e.getMessage() + ">"; + } + } + + + protected String getRendering(OWLEntity entity) { + if (entityRenderer != null){ + return entityRenderer.render(entity); + } + return shortFomProvider.getShortForm(entity); + } + + + int lastNewLineIndex = 0; + + int currentIndex = 0; + + + protected void write(String s) { + int index = s.indexOf('\n'); + if (index != -1) { + lastNewLineIndex = currentIndex + index; + } + currentIndex = currentIndex + s.length(); + buffer.append(s); + } + + + protected int getIndent() { + return currentIndex - lastNewLineIndex; + } + + + protected void insertIndent(int indent) { + for (int i = 0; i < indent; i++) { + write(" "); + } + } + + + protected void writeAndKeyword() { + write(getAndKeyWord()); + write(" "); + } + + + public void reset() { + lastNewLineIndex = 0; + currentIndex = 0; + buffer = new StringBuilder(); + } + + + public String getText() { + return buffer.toString(); + } + + + + + + private List<OWLDescription> sort(Set<OWLDescription> descriptions) { + List<OWLDescription> sortedDescs = new ArrayList<OWLDescription>(descriptions); + Collections.sort(sortedDescs); + return sortedDescs; + } + + + public void visit(OWLObjectIntersectionOf node) { + + int indent = getIndent(); + List<OWLDescription> ops = sort(node.getOperands()); + for (int i = 0; i < ops.size(); i++) { + OWLDescription curOp = ops.get(i); + curOp.accept(this); + if (i < ops.size() - 1) { + write("\n"); + insertIndent(indent); + if (curOp instanceof OWLClass && ops.get(i + 1) instanceof OWLRestriction && OWLRendererPreferences.getInstance().isUseThatKeyword()) { + write("that "); + } + else { + writeAndKeyword(); + } + } + } + } + + + public void visit(OWLTypedConstant node) { + if (simpleRenderDatatypes.containsKey(node.getDataType().getURI())) { + boolean renderQuotes = simpleRenderDatatypes.get(node.getDataType().getURI()); + if (renderQuotes) { + write("\""); + } + write(node.getLiteral()); + if (renderQuotes) { + write("\""); + } + } + else { + write("\""); + write(node.getLiteral()); + write("\"^^"); + node.getDataType().accept(this); + } + } + + + public void visit(OWLUntypedConstant node) { + write("\""); + write(node.getLiteral()); + write("\""); + if (node.hasLang()) { + write("@"); + write(node.getLang()); + } + } + + + public void visit(OWLDataType node) { + write(getRendering(node)); + } + + + public void visit(OWLDataOneOf node) { + write("{"); + for (Iterator<OWLConstant> it = node.getValues().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(", "); + } + } + write("}"); + } + + + public void visit(OWLDataRangeRestriction node) { +// writeOpenBracket(node); + node.getDataRange().accept(this); + write("["); + for (Iterator<OWLDataRangeFacetRestriction> it = node.getFacetRestrictions().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(", "); + } + } + write("]"); +// writeCloseBracket(node); + } + + + public void visit(OWLDataComplementOf owlDataComplementOf) { + write("not("); + owlDataComplementOf.getDataRange().accept(this); + write(")"); + } + + + public void visit(OWLDataRangeFacetRestriction node) { + String rendering = facetMap.get(node.getFacet()); + if (rendering == null) { + rendering = node.getFacet().getShortName(); + } + write(rendering); + write(" "); + node.getFacetValue().accept(this); + } + + + public void visit(OWLObjectSelfRestriction desc) { + desc.getProperty().accept(this); + write(" "); + write(getSomeKeyWord()); + write(" Self"); + } + + + public void visit(OWLDataAllRestriction node) { + node.getProperty().accept(this); + write(" "); + write(getAllKeyWord()); + write(" "); + node.getFiller().accept(this); + } + + + public void visit(OWLDataProperty node) { + write(getRendering(node)); + } + + + public void visit(OWLDataSomeRestriction node) { + node.getProperty().accept(this); + write(" "); + write(getSomeKeyWord()); + write(" "); + node.getFiller().accept(this); + } + + + public void visit(OWLDataValueRestriction node) { + node.getProperty().accept(this); + write(" "); + write(getValueKeyWord()); + write(" "); + node.getValue().accept(this); + } + + + public void visit(OWLIndividual node) { + if (node.isAnonymous()) { + write("Anonymous : ["); + for (OWLOntology ont : owlModelManager.getOntologies()) { + for (OWLDescription desc : node.getTypes(ont)) { + write(" "); + desc.accept(this); + } + } + write(" ]"); + } + else { + write(getRendering(node)); + } + } + + + public void visit(OWLObjectAllRestriction node) { + node.getProperty().accept(this); + write(" "); + write(getAllKeyWord()); + write(" "); + writeOpenBracket(node.getFiller()); + node.getFiller().accept(this); + writeCloseBracket(node.getFiller()); + } + + + public void visit(OWLObjectMinCardinalityRestriction desc) { + writeCardinality(desc, getMinKeyWord()); + } + + + public void visit(OWLObjectExactCardinalityRestriction desc) { + writeCardinality(desc, getExactlyKeyWord()); + } + + + public void visit(OWLObjectMaxCardinalityRestriction desc) { + writeCardinality(desc, getMaxKeyWord()); + } + + + private void writeCardinality(OWLObjectCardinalityRestriction desc, String keyword) { + desc.getProperty().accept(this); + write(" "); + write(keyword); + write(" "); + write(Integer.toString(desc.getCardinality())); + write(" "); + writeOpenBracket(desc.getFiller()); + desc.getFiller().accept(this); + writeCloseBracket(desc.getFiller()); + } + + + public void visit(OWLDataMinCardinalityRestriction desc) { + writeCardinality(desc, getMinKeyWord()); + } + + + public void visit(OWLDataExactCardinalityRestriction desc) { + writeCardinality(desc, getExactlyKeyWord()); + } + + + public void visit(OWLDataMaxCardinalityRestriction desc) { + writeCardinality(desc, getMaxKeyWord()); + } + + + private void writeCardinality(OWLDataCardinalityRestriction desc, String keyword) { + desc.getProperty().accept(this); + write(" "); + write(keyword); + write(" "); + write(Integer.toString(desc.getCardinality())); + write(" "); + writeOpenBracket(desc.getFiller()); + desc.getFiller().accept(this); + writeCloseBracket(desc.getFiller()); + } + + + public void visit(OWLObjectProperty node) { + write(getRendering(node)); + } + + + public void visit(OWLObjectSomeRestriction node) { + node.getProperty().accept(this); + write(" "); + write(getSomeKeyWord()); + write(" "); + writeOpenBracket(node.getFiller()); + node.getFiller().accept(this); + writeCloseBracket(node.getFiller()); + } + + + public void visit(OWLObjectValueRestriction node) { + node.getProperty().accept(this); + write(" "); + write(getValueKeyWord()); + write(" "); + node.getValue().accept(this); + } + + + public void visit(OWLObjectComplementOf node) { + writeNotKeyword(); + write(" "); + writeOpenBracket(node.getOperand()); + node.getOperand().accept(this); + writeCloseBracket(node.getOperand()); + } + + + protected void writeNotKeyword() { + write(getNotKeyWord()); + } + + + public void visit(OWLObjectUnionOf node) { + int indent = getIndent(); + for (Iterator<OWLDescription> it = sort(node.getOperands()).iterator(); it.hasNext();) { + OWLDescription curOp = it.next(); + writeOpenBracket(curOp); + curOp.accept(this); + writeCloseBracket(curOp); + if (it.hasNext()) { + write("\n"); + insertIndent(indent); + writeOrKeyword(); + } + } + } + + + private void writeOrKeyword() { + write(getOrKeyWord()); + write(" "); + } + + + public void visit(OWLClass node) { + write(getRendering(node)); + } + + + public void visit(OWLObjectPropertyInverse property) { + write("inv("); + property.getInverse().accept(this); + write(")"); + } + + + public void visit(OWLObjectOneOf node) { + write("{"); + for (Iterator<OWLIndividual> it = node.getIndividuals().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(", "); + } + } + write("}"); + } + + + public void visit(OWLDisjointClassesAxiom node) { + for (Iterator<OWLDescription> it = sort(node.getDescriptions()).iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(" disjointWith "); + } + } + } + + + public void visit(OWLEquivalentClassesAxiom node) { + List<OWLDescription> orderedDescs = sort(node.getDescriptions()); + for(Iterator<OWLDescription> it = orderedDescs.iterator(); it.hasNext(); ) { + OWLDescription desc = it.next(); + if(orderedDescs.get(0).isOWLNothing()) { + it.remove(); + orderedDescs.add(desc); + break; + } + } + + for (Iterator<OWLDescription> it = orderedDescs.iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(" equivalentTo "); + } + } + } + + + public void visit(OWLSubClassAxiom node) { + node.getSubClass().accept(this); + write(" subClassOf "); + node.getSuperClass().accept(this); + } + + + public void visit(OWLFunctionalObjectPropertyAxiom axiom) { + write("Functional: "); + axiom.getProperty().accept(this); + } + + + public void visit(OWLInverseFunctionalObjectPropertyAxiom axiom) { + write("InverseFunctional: "); + axiom.getProperty().accept(this); + } + + + public void visit(OWLIrreflexiveObjectPropertyAxiom axiom) { + write("Irreflexive: "); + axiom.getProperty().accept(this); + } + + + public void visit(OWLDataSubPropertyAxiom axiom) { + axiom.getSubProperty().accept(this); + write(" subPropertyOf "); + axiom.getSuperProperty().accept(this); + } + + + public void visit(OWLReflexiveObjectPropertyAxiom axiom) { + write("Reflexive: "); + axiom.getProperty().accept(this); + } + + + public void visit(OWLSymmetricObjectPropertyAxiom axiom) { + write("Symmetric: "); + axiom.getProperty().accept(this); + } + + + public void visit(OWLTransitiveObjectPropertyAxiom axiom) { + write("Transitive: "); + axiom.getProperty().accept(this); + } + + + public void visit(OWLObjectPropertyDomainAxiom axiom) { + if (!OWLRendererPreferences.getInstance().isRenderDomainAxiomsAsGCIs()) { + axiom.getProperty().accept(this); + write(" domain "); + axiom.getDomain().accept(this); + } + else { + axiom.getProperty().accept(this); + write(" some "); + owlModelManager.getOWLDataFactory().getOWLThing().accept(this); + write(" subClassOf "); + axiom.getDomain().accept(this); + } + } + + + public void visit(OWLEquivalentObjectPropertiesAxiom node) { + for (Iterator<OWLObjectPropertyExpression> it = node.getProperties().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(" equivalentTo "); + } + } + } + + + public void visit(OWLObjectPropertyRangeAxiom axiom) { + axiom.getProperty().accept(this); + write(" range "); + axiom.getRange().accept(this); + } + + + public void visit(OWLClassAssertionAxiom axiom) { + axiom.getIndividual().accept(this); + write(" types "); + axiom.getDescription().accept(this); + } + + + public void visit(OWLFunctionalDataPropertyAxiom axiom) { + write("Functional: "); + axiom.getProperty().accept(this); + } + + + public void visit(OWLEquivalentDataPropertiesAxiom node) { + for (Iterator<OWLDataPropertyExpression> it = node.getProperties().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(" equivalentTo "); + } + } + } + + + public void visit(OWLSameIndividualsAxiom axiom) { + write("SameIndividuals: ["); + for (Iterator<OWLIndividual> it = axiom.getIndividuals().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(", "); + } + } + write("]"); + } + + + public void visit(OWLDifferentIndividualsAxiom axiom) { + write("DifferentIndividuals: ["); + for (Iterator<OWLIndividual> it = axiom.getIndividuals().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(", "); + } + } + write("]"); + } + + + public void visit(OWLDisjointDataPropertiesAxiom axiom) { + for (Iterator<OWLDataPropertyExpression> it = axiom.getProperties().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(" disjointWith "); + } + } + } + + + public void visit(OWLDisjointObjectPropertiesAxiom axiom) { + for (Iterator<OWLObjectPropertyExpression> it = axiom.getProperties().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(" disjointWith "); + } + } + } + + + public void visit(OWLObjectPropertyAssertionAxiom axiom) { + axiom.getSubject().accept(this); + write(" "); + axiom.getProperty().accept(this); + write(" "); + axiom.getObject().accept(this); + } + + + public void visit(OWLDataPropertyAssertionAxiom axiom) { + axiom.getSubject().accept(this); + write(" "); + axiom.getProperty().accept(this); + write(" "); + axiom.getObject().accept(this); + } + + + public void visit(OWLNegativeDataPropertyAssertionAxiom axiom) { + write("not("); + axiom.getSubject().accept(this); + write(" "); + axiom.getProperty().accept(this); + write(" "); + axiom.getObject().accept(this); + write(")"); + } + + + public void visit(OWLNegativeObjectPropertyAssertionAxiom axiom) { + write("not("); + axiom.getSubject().accept(this); + write(" "); + axiom.getProperty().accept(this); + write(" "); + axiom.getObject().accept(this); + write(")"); + } + + + public void visit(OWLInverseObjectPropertiesAxiom axiom) { + axiom.getFirstProperty().accept(this); + write(" inverseOf "); + axiom.getSecondProperty().accept(this); + } + + + public void visit(OWLAntiSymmetricObjectPropertyAxiom axiom) { + write("AntiSymmetric: "); + axiom.getProperty().accept(this); + } + + + public void visit(OWLDataPropertyDomainAxiom axiom) { + axiom.getProperty().accept(this); + write(" domain "); + axiom.getDomain().accept(this); + } + + + public void visit(OWLDataPropertyRangeAxiom axiom) { + axiom.getProperty().accept(this); + write(" range "); + axiom.getRange().accept(this); + } + + + public void visit(OWLObjectSubPropertyAxiom axiom) { + axiom.getSubProperty().accept(this); + write(" subPropertyOf "); + axiom.getSuperProperty().accept(this); + } + + + public void visit(OWLDisjointUnionAxiom axiom) { + axiom.getOWLClass().accept(this); + write(" disjointUnionOf "); + write("["); + int indent = getIndent(); + for (Iterator<OWLDescription> it = axiom.getDescriptions().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write("\n"); + insertIndent(indent); + } + } + write("]"); + } + + + public void visit(OWLDeclarationAxiom axiom) { + OWLEntity entity = axiom.getEntity(); + if (entity.isOWLClass()){ + write("Class("); + } + else if (entity.isOWLObjectProperty()){ + write("Object property("); + } + else if (entity.isOWLDataProperty()){ + write("Data property("); + } + else if (entity.isOWLIndividual()){ + write("Individual("); + } + else{ + write("("); + } + entity.accept(this); + write(")"); + } + + + public void visit(OWLImportsDeclaration axiom) { + writeOntologyURI(axiom.getImportedOntologyURI()); + if (owlModelManager.getImportedOntology(axiom) == null) { + write(" (Not Loaded)"); + } + } + + + public void visit(OWLAxiomAnnotationAxiom axiom) { + axiom.getSubject().accept(this); + write(" "); + axiom.getAnnotation().accept(this); + } + + + private void writeOpenBracket(OWLDescription description) { + description.accept(bracketWriter); + if (bracketWriter.writeBrackets()) { + write("("); + } + } + + + private void writeOpenBracket(OWLDataRange dataRange) { + dataRange.accept(bracketWriter); + if (bracketWriter.writeBrackets()) { + write("("); + } + } + + + private void writeCloseBracket(OWLDescription description) { + description.accept(bracketWriter); + if (bracketWriter.writeBrackets()) { + write(")"); + } + } + + + private void writeCloseBracket(OWLDataRange dataRange) { + dataRange.accept(bracketWriter); + if (bracketWriter.writeBrackets()) { + write(")"); + } + } + + + public void visit(OWLOntology ontology) { + writeOntologyURI(ontology.getURI()); + } + + + public void visit(OWLObjectPropertyChainSubPropertyAxiom axiom) { + for (Iterator<OWLObjectPropertyExpression> it = axiom.getPropertyChain().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(" o "); + } + } + write(" \u279E "); + axiom.getSuperProperty().accept(this); + } + + + public void visit(OWLConstantAnnotation annotation) { + write(annotation.getAnnotationURI().getFragment()); + write(" "); + write(annotation.getAnnotationValue().toString()); + } + + + public void visit(SWRLRule swrlRule) { + for (Iterator<SWRLAtom> it = swrlRule.getBody().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(" , "); + } + } + write(" -> "); + for (Iterator<SWRLAtom> it = swrlRule.getHead().iterator(); it.hasNext();) { + it.next().accept(this); + if (it.hasNext()) { + write(" \u2227 "); + } + } + } + + + public void visit(OWLEntityAnnotationAxiom owlEntityAnnotationAxiom) { + owlEntityAnnotationAxiom.getSubject().accept(this); + write(" "); + owlEntityAnnotationAxiom.getAnnotation().accept(this); + } + + + public void visit(OWLOntologyAnnotationAxiom axiom) { + axiom.getSubject().accept(this); + write(" "); + axiom.getAnnotation().accept(this); + } + + + public void visit(OWLObjectAnnotation owlObjectAnnotation) { + write(owlObjectAnnotation.getAnnotationURI().getFragment()); + write(" "); + owlObjectAnnotation.getAnnotationValue().accept(this); + } + + + public void visit(SWRLClassAtom swrlClassAtom) { + OWLDescription desc = swrlClassAtom.getPredicate(); + if (desc.isAnonymous()) { + write("("); + } + desc.accept(this); + if (desc.isAnonymous()) { + write(")"); + } + write("("); + swrlClassAtom.getArgument().accept(this); + write(")"); + } + + + public void visit(SWRLDataRangeAtom swrlDataRangeAtom) { + swrlDataRangeAtom.getPredicate().accept(this); + write("("); + swrlDataRangeAtom.getArgument().accept(this); + write(")"); + } + + + public void visit(SWRLObjectPropertyAtom swrlObjectPropertyAtom) { + swrlObjectPropertyAtom.getPredicate().accept(this); + write("("); + swrlObjectPropertyAtom.getFirstArgument().accept(this); + write(", "); + swrlObjectPropertyAtom.getSecondArgument().accept(this); + write(")"); + } + + + public void visit(SWRLDataValuedPropertyAtom swrlDataValuedPropertyAtom) { + swrlDataValuedPropertyAtom.getPredicate().accept(this); + write("("); + swrlDataValuedPropertyAtom.getFirstArgument().accept(this); + write(", "); + swrlDataValuedPropertyAtom.getSecondArgument().accept(this); + write(")"); + } + + + public void visit(SWRLBuiltInAtom swrlBuiltInAtom) { + write(swrlBuiltInAtom.getPredicate().getShortName()); + write("("); + Iterator<SWRLAtomDObject> it = swrlBuiltInAtom.getArguments().iterator(); + while (it.hasNext()) { + SWRLAtomDObject argument = it.next(); + argument.accept(this); + if (it.hasNext()) { + write(", "); + } + } + write(")"); + } + + + public void visit(SWRLAtomDVariable swrlAtomDVariable) { + write("?"); + write(swrlAtomDVariable.getURI().getFragment()); + } + + + public void visit(SWRLAtomIVariable swrlAtomIVariable) { + write("?"); + write(swrlAtomIVariable.getURI().getFragment()); + } + + + public void visit(SWRLAtomIndividualObject swrlAtomIndividualObject) { + swrlAtomIndividualObject.getIndividual().accept(this); + } + + + public void visit(SWRLAtomConstantObject swrlAtomConstantObject) { + swrlAtomConstantObject.getConstant().accept(this); + } + + + public void visit(SWRLDifferentFromAtom swrlDifferentFromAtom) { + swrlDifferentFromAtom.getPredicate().accept(this); + write("("); + swrlDifferentFromAtom.getFirstArgument().accept(this); + write(", "); + swrlDifferentFromAtom.getSecondArgument().accept(this); + write(")"); + } + + + public void visit(SWRLSameAsAtom swrlSameAsAtom) { + swrlSameAsAtom.getPredicate().accept(this); + write("("); + swrlSameAsAtom.getFirstArgument().accept(this); + write(", "); + swrlSameAsAtom.getSecondArgument().accept(this); + write(")"); + } + + + private void writeOntologyURI(URI uri) { + String shortName = uri.getFragment();//owlModelManager.getURIRendering(uri); + if (shortName != null) { + write(shortName); + write(" ("); + write(uri.toString()); + write(")"); + } + else { + write(uri.toString()); + } + } + + + private class BracketWriter extends OWLDescriptionVisitorAdapter implements OWLDataVisitor { + + boolean nested = false; + + + public boolean writeBrackets() { + return nested; + } + + + public void visit(OWLObjectIntersectionOf owlAnd) { + nested = true; + } + + + public void visit(OWLDataAllRestriction owlDataAllRestriction) { + nested = true; + } + + + public void visit(OWLDataSomeRestriction owlDataSomeRestriction) { + nested = true; + } + + + public void visit(OWLDataValueRestriction owlDataValueRestriction) { + nested = true; + } + + + public void visit(OWLObjectAllRestriction owlObjectAllRestriction) { + nested = true; + } + + + public void visit(OWLObjectSomeRestriction owlObjectSomeRestriction) { + nested = true; + } + + + public void visit(OWLObjectValueRestriction owlObjectValueRestriction) { + nested = true; + } + + + public void visit(OWLObjectComplementOf owlNot) { + nested = true; + } + + + public void visit(OWLObjectUnionOf owlOr) { + nested = true; + } + + + public void visit(OWLClass owlClass) { + nested = false; + } + + + public void visit(OWLObjectOneOf owlObjectOneOf) { + nested = false; + } + + + public void visit(OWLObjectMinCardinalityRestriction desc) { + nested = true; + } + + + public void visit(OWLObjectExactCardinalityRestriction desc) { + nested = true; + } + + + public void visit(OWLObjectMaxCardinalityRestriction desc) { + nested = true; + } + + + public void visit(OWLObjectSelfRestriction desc) { + nested = true; + } + + + public void visit(OWLDataMinCardinalityRestriction desc) { + nested = true; + } + + + public void visit(OWLDataExactCardinalityRestriction desc) { + nested = true; + } + + + public void visit(OWLDataMaxCardinalityRestriction desc) { + nested = true; + } + + + public void visit(OWLDataType node) { + nested = false; + } + + + public void visit(OWLDataComplementOf node) { + nested = false; + } + + + public void visit(OWLDataOneOf node) { + nested = false; + } + + + public void visit(OWLDataRangeRestriction node) { + nested = true; + } + + + public void visit(OWLTypedConstant node) { + nested = false; + } + + + public void visit(OWLUntypedConstant node) { + nested = false; + } + + + public void visit(OWLDataRangeFacetRestriction node) { + nested = false; + } + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -25,12 +25,12 @@ static private StringWriter buffer = new StringWriter(); static private TextBlockWriter writer = new TextBlockWriter(buffer); - static private ManchesterSyntaxObjectRenderer renderer = new ManchesterSyntaxObjectRenderer(writer); - +// static private ManchesterSyntaxObjectRenderer renderer = new ManchesterSyntaxObjectRenderer(writer); + static private ManchesterRenderer renderer = new ManchesterRenderer(OREManager.getInstance().getReasoner().getOWLOntologyManager()); public ManchesterSyntaxRenderer(){ - renderer.setWrapLines( false ); - renderer.setSmartIndent( true ); +// renderer.setWrapLines( false ); +// renderer.setSmartIndent( true ); } @@ -73,7 +73,7 @@ public static String render(OWLAxiom value, boolean removed, int depth){ value.accept(renderer); writer.flush(); - String renderedString = buffer.toString(); + String renderedString = renderer.render(value, null);//buffer.toString(); StringTokenizer st = new StringTokenizer(renderedString); StringBuffer bf = new StringBuffer(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTable.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTable.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -20,7 +20,7 @@ public MarkableClassExpressionsTable(){ super(new MarkableClassExpressionsTableModel()); - getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); +// getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); getColumn(0).setMaxWidth(30); setTableHeader(null); setBorder(null); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -8,6 +8,10 @@ import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.LearningManagerListener; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; public class MarkableClassExpressionsTableModel extends AbstractTableModel implements LearningManagerListener{ /** @@ -42,7 +46,17 @@ return ""; } } else { - return descriptions.get(rowIndex).getDescription(); + + OWLDataFactory factory = OREManager.getInstance().getReasoner().getOWLOntologyManager().getOWLDataFactory(); + OWLClass cl = factory.getOWLClass( + OREManager.getInstance().getCurrentClass2Learn().getURI()); + if(LearningManager.getInstance().isEquivalentDescription(descriptions.get(rowIndex))){ + return ManchesterSyntaxRenderer.render(factory.getOWLEquivalentClassesAxiom(cl, + OWLAPIDescriptionConvertVisitor.getOWLDescription(descriptions.get(rowIndex).getDescription())), false, 0); + } else { + return ManchesterSyntaxRenderer.render(factory.getOWLSubClassAxiom(cl, + OWLAPIDescriptionConvertVisitor.getOWLDescription(descriptions.get(rowIndex).getDescription())), false, 0); + } } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -38,6 +38,7 @@ import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.SavePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.UnsatisfiableExplanationPanelDescriptor; +import org.mindswap.pellet.utils.SetUtils; /** * This class is responsible for reacting to events generated by pushing any of the @@ -172,8 +173,8 @@ } else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(AutoLearnPanelDescriptor.IDENTIFIER)){ AutoLearnPanelDescriptor descriptor = (AutoLearnPanelDescriptor)currentPanelDescriptor; - List<EvaluatedDescriptionClass> descriptions = descriptor.getSelectedDescriptions(); - if(!descriptions.isEmpty()){ + List<List<EvaluatedDescriptionClass>> descriptions = descriptor.getSelectedDescriptions(); + if(!SetUtils.union(descriptions.get(0), descriptions.get(1)).isEmpty()){ LearningManager.getInstance().setNewDescriptions(descriptions); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -25,7 +25,9 @@ import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.AutoLearnPanel; +import org.mindswap.pellet.utils.SetUtils; + public class AutoLearnPanelDescriptor extends WizardPanelDescriptor implements ActionListener{ /** * Identification string for class choose panel. @@ -65,7 +67,9 @@ @Override public Object getNextPanelDescriptor() { - if(getSelectedDescriptions().isEmpty()){ + List<List<EvaluatedDescriptionClass>> selectedDescriptions = getSelectedDescriptions(); + if(SetUtils.union(selectedDescriptions.get(0), + selectedDescriptions.get(1)).isEmpty()){ return SavePanelDescriptor.IDENTIFIER; } else { return RepairPanelDescriptor.IDENTIFIER; @@ -86,6 +90,7 @@ public void fillClassesTable(){ TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); new ClassRetrievingTask().execute(); + autoLearnPanel.setNextButtonEnabled(true); } public void learnEquivalentClassExpressions(){ @@ -113,9 +118,12 @@ OREManager.getInstance().setCurrentClass2Learn(classes.get(currentClassIndex)); learnEquivalentClassExpressions(); currentClassIndex++; + if(currentClassIndex >= classes.size()){ + autoLearnPanel.setNextButtonEnabled(false); + } } - public List<EvaluatedDescriptionClass> getSelectedDescriptions(){ + public List<List<EvaluatedDescriptionClass>> getSelectedDescriptions(){ return autoLearnPanel.getSelectedDescriptions(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -79,21 +79,31 @@ } private JComponent createResultPanel(){ - JPanel resultPanel = new JPanel(new BorderLayout()); + JPanel resultPanel = new JPanel(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + JSplitPane equivSubSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); equivSubSplitPane.setOneTouchExpandable(true); equivSubSplitPane.setDividerLocation(0.5); + equivSubSplitPane.setResizeWeight(0.5); equivSubSplitPane.setTopComponent(createEquivalentPanel()); equivSubSplitPane.setBottomComponent(createSuperPanel()); - + addTableSelectionListeners(); - skipButton = new JButton("Skip"); + skipButton = new JButton("Next class"); skipButton.setActionCommand("skip"); - resultPanel.add(equivSubSplitPane, BorderLayout.CENTER); - resultPanel.add(skipButton, BorderLayout.SOUTH); + c.fill = GridBagConstraints.BOTH; + c.gridwidth = GridBagConstraints.REMAINDER; + c.weightx = 1.0; + c.weighty = 1.0; + resultPanel.add(equivSubSplitPane,c); + c.fill = GridBagConstraints.NONE; + c.weightx = 0.0; + c.weighty = 0.0; + resultPanel.add(skipButton, c); return resultPanel; } @@ -117,7 +127,7 @@ c.gridx = 1; c.gridy = 0; equivalentClassCoveragePanel = new GraphicalCoveragePanel(""); - equivalentPanel.add(equivalentClassCoveragePanel, c); + equivalentPanel.add(new JScrollPane(equivalentClassCoveragePanel), c); equivalentPanel.setBorder(BorderFactory.createTitledBorder("Equivalent class expressions")); c.gridx = 0; @@ -147,7 +157,7 @@ c.gridx = 1; c.gridy = 0; superClassCoveragePanel = new GraphicalCoveragePanel(""); - superPanel.add(superClassCoveragePanel, c); + superPanel.add(new JScrollPane(superClassCoveragePanel), c); superPanel.setBorder(BorderFactory.createTitledBorder("Superclass expressions")); c.gridx = 0; @@ -187,10 +197,15 @@ classesTable.clear(); } - public List<EvaluatedDescriptionClass> getSelectedDescriptions(){ - List<EvaluatedDescriptionClass> selected = new ArrayList<EvaluatedDescriptionClass>(); - selected.addAll(equivalentClassResultsTable.getSelectedDescriptions()); - selected.addAll(superClassResultsTable.getSelectedDescriptions()); + public void setNextButtonEnabled(boolean enabled){ + skipButton.setEnabled(enabled); + } + + public List<List<EvaluatedDescriptionClass>> getSelectedDescriptions(){ + List<List<EvaluatedDescriptionClass>> selected = new ArrayList<List<EvaluatedDescriptionClass>>(); + selected.add(equivalentClassResultsTable.getSelectedDescriptions()); + selected.add(superClassResultsTable.getSelectedDescriptions()); + return selected; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -32,6 +32,7 @@ import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.border.MatteBorder; import javax.swing.border.TitledBorder; import javax.swing.event.ListSelectionListener; @@ -69,11 +70,21 @@ private void createAutoUI(){ GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; + c.weighty = 0.3; + c.weightx = 1.0; c.gridx = 0; c.gridy = 0; - c.gridwidth = GridBagConstraints.REMAINDER; +// c.gridwidth = GridBagConstraints.REMAINDER; add(createDescriptionsPanel(), c); + c.fill = GridBagConstraints.NONE; + c.gridx = 1; + c.gridy = 0; + nextButton = new JButton("Next suggestion"); + nextButton.setActionCommand("next"); + add(nextButton, c); + + c.fill = GridBagConstraints.BOTH; c.gridwidth = 1; c.gridy = 1; c.gridx = 0; @@ -83,10 +94,7 @@ c.gridx = 1; add(createNegPanel(), c); - c.gridy = 2; - nextButton = new JButton("Next"); - nextButton.setActionCommand("next"); - add(nextButton, c); + } private void createManualUI(){ @@ -116,7 +124,7 @@ JPanel panel = new JPanel(new BorderLayout()); descriptionsTable = new MarkableClassExpressionsTable(); JScrollPane scroll = new JScrollPane(descriptionsTable); - scroll.setBorder(null); + scroll.setBorder(new MatteBorder(null)); panel.add(scroll); return panel; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-10-08 08:00:41 UTC (rev 1881) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-10-08 09:13:46 UTC (rev 1882) @@ -221,6 +221,7 @@ impRepSplit.setOneTouchExpandable(true); impRepSplit.setDividerLocation(600); impRepSplit.setBorder(null); + impRepSplit.setResizeWeight(0.5); impactRepairPanel.add(impRepSplit); ImpactTable impactTable = new ImpactTable(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hee...@us...> - 2009-10-08 08:00:58
|
Revision: 1881 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1881&view=rev Author: heeroyuy Date: 2009-10-08 08:00:41 +0000 (Thu, 08 Oct 2009) Log Message: ----------- -started to implement new options in option panel Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java Modified: trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java 2009-10-07 15:21:39 UTC (rev 1880) +++ trunk/src/dl-learner/org/dllearner/tools/protege/OptionPanel.java 2009-10-08 08:00:41 UTC (rev 1881) @@ -22,8 +22,11 @@ import java.awt.BorderLayout; import java.awt.GridLayout; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JRadioButton; import javax.swing.JSlider; /** * This Class is responsible for the Options of the DL-Learner. @@ -34,14 +37,42 @@ private static final long serialVersionUID = 2190682281812478244L; + private final JLabel minAccuracyLabel; private final JLabel maxExecutionTimeLabel; private final JLabel nrOfConceptsLabel; + private JLabel owlRadioButtonLabel; + private JLabel elProfileButtonLabel; + private JLabel allBoxLabel; + private JLabel someBoxLabel; + private JLabel notBoxLabel; + private JLabel valueBoxLabel; + private JLabel moreBoxLabel; + private JLabel lessBoxLabel; + private final JSlider minAccuracy; private final JSlider maxExecutionTime; private final JSlider nrOfConcepts; + + private JRadioButton owlRadioButton; + private JRadioButton elProfileButton; + + private JCheckBox allBox; + private JCheckBox someBox; + private JCheckBox notBox; + private JCheckBox valueBox; + private JCheckBox lessBox; + private JCheckBox moreBox; + + private JComboBox countLessBox; + private JComboBox countMoreBox; + + private JPanel profilePanel; + private JPanel radioBoxPanel; + private JPanel checkBoxPanel; private JPanel labelPanel; private JPanel sliderPanel; + private double accuracy; /** * Constructor for the Option Panel. @@ -52,9 +83,24 @@ labelPanel.setLayout(new GridLayout(0, 1)); sliderPanel = new JPanel(); sliderPanel.setLayout(new GridLayout(0, 1)); + profilePanel = new JPanel(); + profilePanel.setLayout(new GridLayout(0, 1)); + radioBoxPanel = new JPanel(); + radioBoxPanel.setLayout(new GridLayout(1, 4)); + checkBoxPanel = new JPanel(); + checkBoxPanel.setLayout(new GridLayout(1, 14)); + minAccuracyLabel = new JLabel("noise in %: "); maxExecutionTimeLabel = new JLabel("maximum execution time: "); nrOfConceptsLabel = new JLabel("max. number of results: "); + owlRadioButtonLabel = new JLabel("OWL 2"); + elProfileButtonLabel = new JLabel("EL Profile"); + allBoxLabel = new JLabel("all"); + someBoxLabel = new JLabel("some"); + notBoxLabel = new JLabel("not"); + valueBoxLabel = new JLabel("value"); + lessBoxLabel = new JLabel("<=x with max.:"); + moreBoxLabel = new JLabel(">=x with max.:"); minAccuracy = new JSlider(0, 50, 5); minAccuracy.setPaintTicks(true); @@ -75,7 +121,47 @@ nrOfConcepts.setMajorTickSpacing(2); nrOfConcepts.setMinorTickSpacing(1); nrOfConcepts.setPaintLabels(true); - + + owlRadioButton = new JRadioButton(); + elProfileButton = new JRadioButton(); + owlRadioButton.setEnabled(true); + + allBox = new JCheckBox(); + someBox = new JCheckBox(); + notBox = new JCheckBox(); + valueBox = new JCheckBox(); + lessBox = new JCheckBox(); + moreBox = new JCheckBox(); + + countLessBox = new JComboBox(); + countLessBox.setEditable(false); + countMoreBox = new JComboBox(); + countMoreBox.setEditable(false); + + checkBoxPanel.add(allBox); + checkBoxPanel.add(allBoxLabel); + checkBoxPanel.add(someBox); + checkBoxPanel.add(someBoxLabel); + checkBoxPanel.add(notBox); + checkBoxPanel.add(notBoxLabel); + checkBoxPanel.add(valueBox); + checkBoxPanel.add(valueBoxLabel); + checkBoxPanel.add(lessBox); + checkBoxPanel.add(lessBoxLabel); + checkBoxPanel.add(countLessBox); + checkBoxPanel.add(moreBox); + checkBoxPanel.add(moreBoxLabel); + checkBoxPanel.add(countMoreBox); + + + radioBoxPanel.add(owlRadioButton); + radioBoxPanel.add(owlRadioButtonLabel); + radioBoxPanel.add(elProfileButton); + radioBoxPanel.add(elProfileButtonLabel); + + profilePanel.add(radioBoxPanel); + profilePanel.add(checkBoxPanel); + labelPanel.add(minAccuracyLabel); labelPanel.add(maxExecutionTimeLabel); labelPanel.add(nrOfConceptsLabel); @@ -83,6 +169,8 @@ sliderPanel.add(minAccuracy); sliderPanel.add(maxExecutionTime); sliderPanel.add(nrOfConcepts); + + add(BorderLayout.SOUTH, profilePanel); add(BorderLayout.WEST, labelPanel); add(BorderLayout.CENTER, sliderPanel); } @@ -112,5 +200,89 @@ public int getNrOfConcepts() { return nrOfConcepts.getValue(); } + + public void setOwlRadioButton(JRadioButton owlRadioButton) { + this.owlRadioButton = owlRadioButton; + } + + public JRadioButton getOwlRadioButton() { + return owlRadioButton; + } + + public void setElProfileButton(JRadioButton elProfileButton) { + this.elProfileButton = elProfileButton; + } + + public JRadioButton getElProfileButton() { + return elProfileButton; + } + + public void setAllBox(JCheckBox allBox) { + this.allBox = allBox; + } + + public JCheckBox getAllBox() { + return allBox; + } + + public void setSomeBox(JCheckBox someBox) { + this.someBox = someBox; + } + + public JCheckBox getSomeBox() { + return someBox; + } + + public void setNotBox(JCheckBox notBox) { + this.notBox = notBox; + } + + public JCheckBox getNotBox() { + return notBox; + } + + public void setValueBox(JCheckBox valueBox) { + this.valueBox = valueBox; + } + + public JCheckBox getValueBox() { + return valueBox; + } + + public void setLessBox(JCheckBox lessBox) { + this.lessBox = lessBox; + } + + public JCheckBox getLessBox() { + return lessBox; + } + + public JPanel getProfilePanel() { + return profilePanel; + } + + public void setCountLessBox(JComboBox countLessBox) { + this.countLessBox = countLessBox; + } + + public JComboBox getCountLessBox() { + return countLessBox; + } + + public void setCountMoreBox(JComboBox countMoreBox) { + this.countMoreBox = countMoreBox; + } + + public JComboBox getCountMoreBox() { + return countMoreBox; + } + + public void setMoreBox(JCheckBox moreBox) { + this.moreBox = moreBox; + } + + public JCheckBox getMoreBox() { + return moreBox; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <neb...@us...> - 2009-10-07 15:21:57
|
Revision: 1880 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1880&view=rev Author: nebelschwade Date: 2009-10-07 15:21:39 +0000 (Wed, 07 Oct 2009) Log Message: ----------- - Added last.fm-Support - View/RequestHandler Refactoring - Prepared Recommendation-Fetching and display using ajax - Prepared multi-tag searching using a better SPARQL-Query for tags like "stoner doom drone metal" - Enhanced OWL Modified Paths: -------------- trunk/src/moosique.net/css/style.css trunk/src/moosique.net/index.php trunk/src/moosique.net/js/debug.js trunk/src/moosique.net/js/index.php trunk/src/moosique.net/js/moosique.js trunk/src/moosique.net/js/start.js trunk/src/moosique.net/moosique/classes/Config.php trunk/src/moosique.net/moosique/classes/DllearnerConnection.php trunk/src/moosique.net/moosique/classes/LastFM.php trunk/src/moosique.net/moosique/classes/RequestHandler.php trunk/src/moosique.net/moosique/classes/SparqlQueryBuilder.php trunk/src/moosique.net/moosique/classes/View.php trunk/src/moosique.net/moosique/config.ini trunk/src/moosique.net/moosique/data/allTagsByPopularity.txt trunk/src/moosique.net/moosique/def0.xsd trunk/src/moosique.net/moosique/def1.xsd trunk/src/moosique.net/moosique/index.php trunk/src/moosique.net/moosique/main.wsdl trunk/src/moosique.net/moosique/testing/learnTest.php trunk/src/moosique.net/moosique/testing/main.wsdl trunk/src/moosique.net/moosique/testing/moreThan80.owl Added Paths: ----------- trunk/src/moosique.net/moosique/testing/nodeExtractionBug.conf Modified: trunk/src/moosique.net/css/style.css =================================================================== --- trunk/src/moosique.net/css/style.css 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/css/style.css 2009-10-07 15:21:39 UTC (rev 1880) @@ -1,7 +1,6 @@ -/* moosique.net - a jamendo radio with recommendations! */ @media screen { /*=============== Default Styling ===============*/ -body { font: normal 12px/16px Verdana, Arial, sans-serif; color: #f1f7e4; +body { font: normal 12px/18px Verdana, Arial, sans-serif; color: #f1f7e4; background: url('../img/bg.png') top left repeat #3a3a3a; border-top: 5px solid #1fd611; } input, textarea, select { background: #292929; border: 1px solid #5a5a5a; outline: none; padding: 5px; } input[type=submit] { padding: 5px 10px; } @@ -17,7 +16,7 @@ pre { font: normal 10px/14px Monaco, Courier, monospace; } p, h1, h2, h3, h4, h5, h6, table, ul, ol, blockquote, -pre, form { margin-bottom: 16px; } +pre, form { margin-bottom: 18px; } /* Initial hiding */ #recommendations, #player, @@ -25,11 +24,12 @@ #loadingImg, #header h1 { display: none; } /* Rounded Corners */ -input, textarea, select { -moz-border-radius: 5px; -webkit-border-radius: 5px; } +input, textarea, select { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } #content, #status, #playing, -#playerControls, #results li { -moz-border-radius: 10px; -webkit-border-radius: 10px; } +#playerControls, #results li { -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; } #mainMenu a { -moz-border-radius-bottomleft: 10px; -moz-border-radius-bottomright: 10px; - -webkit-border-bottom-left-radius: 10px; -webkit-border-bottom-right-radius: 10px; } + -webkit-border-bottom-left-radius: 10px; -webkit-border-bottom-right-radius: 10px; + border-bottom-left-radius: 10px; border-top-left-radius: 10px; } /* button-click-feeling for links, by offsetting top position */ #playerControls a:active { position: relative; top: 2px; } @@ -75,7 +75,7 @@ #loadingImg { cursor: wait; } -/*=============== Menu ===============*/ +/*=============== Menu & Footer ===============*/ #mainMenu ul { position: absolute; top: 0; right: 0; } #mainMenu li { float: left; } #mainMenu a { display: block; margin-left: 10px; line-height: 30px; height: 30px; @@ -84,23 +84,23 @@ #mainMenu .active a:hover { background: #1fd611; } #mainMenu a:hover { text-decoration: none; background: #5a5a5a; } +#footer a { padding: 0 10px; } /*=============== Search Results ===============*/ #results li h3 a { font-weight: normal; } -#results li img { border: 2px solid #545454; margin-bottom: 16px; } -#results li { display: block; border: 1px solid #545454; padding: 16px; margin-bottom: 16px; - float: left; width: 318px; } -#results li.odd { margin-right: 16px; clear: both; } +#results li img { border: 2px solid #545454; } +#results li { float: left; width: 312px; border: 1px solid #545454; padding: 18px; margin-bottom: 18px; } +#results li.odd { margin-right: 18px; clear: both; } #results ul ul { list-style: disc; } /* This is for the list of found albums etc */ #results li li, #results .artistSearch li li, -#results .tagSearch li li { border: none; display: list-item; padding: 0; margin: 0 0 0 32px; +#results .tagSearch li li { border: none; display: list-item; padding: 0; margin: 0 0 0 36px; width: auto; height: auto; float: none; } #results .tagSearch ul ul { clear: both; } -#results .artistImage { text-align: center; } -#results .cover { margin-right: 16px; width: 110px; float: left; } +#results .artistImage { text-align: center; margin-bottom: 18px;} +#results .cover { margin: 0 18px 18px 0; width: 104px; height: 104px; float: left; } #results .tagSearch h4 { display: inline; } @@ -128,6 +128,4 @@ - - } /* end @media screen */ \ No newline at end of file Modified: trunk/src/moosique.net/index.php =================================================================== --- trunk/src/moosique.net/index.php 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/index.php 2009-10-07 15:21:39 UTC (rev 1880) @@ -22,20 +22,18 @@ </ul> </div> <form id="searchForm" method="get" action="moosique/"> - <ol> - <li> - <select name="searchType" id="searchType"> - <option value="allSearch">All</option> - <option value="artistSearch">Artist</option> - <option value="tagSearch">Tag</option> - <option value="songSearch">Song</option> - <?php /* TODO <option value="lastfm">Last.fm-User</option> */ ?> - </select> - <input id="searchValue" name="searchValue" type="text" /> - <input id="searchSubmit" name="searchSubmit" value="Search" title="Search" type="submit" /> - <img id="loadingImg" src="img/loading.gif" alt="Loading..." /> - </li> - </ol> + <div> + <select name="searchType" id="searchType"> + <option value="allSearch">All</option> + <option value="artistSearch">Artist</option> + <option value="tagSearch">Tag</option> + <option value="songSearch">Song</option> + <option value="lastFM">last.fm</option> + </select> + <input id="searchValue" name="searchValue" type="text" /> + <input id="searchSubmit" name="searchSubmit" value="Search" title="Search" type="submit" /> + <img id="loadingImg" src="img/loading.gif" alt="Loading..." /> + </div> </form> <div id="playerControls"> <a href="#" id="playPause" title="Play/Pause">Play / Pause</a> @@ -44,7 +42,7 @@ <a href="#" id="next" title="Play next Track in Playlist">Next Track</a> <a href="#" id="mute" title="Sound on/off">Mute</a> </div> - <h4 id="status"> </h4> + <div id="status"> </div> <div id="playing"> <span class="info">Player stopped</span> <span class="track">...</span> @@ -63,32 +61,16 @@ your musical taste and generate recommendations. You can find them in the tab »Recommendations«. </p> <p> + You can also enter your <a href="http://last.fm">last.fm</a>-username to automatically use your + most-used tags to generate a initial list of recommendations. + </p> + <p> You can find information about the song currently playing in the tab »Info« and edit and view your current Playlist in the »Playlist«-Tab. </p> <p> Now get started and add something to the Playlist! </p> - - <pre> - <?php - - // recently Heard == posExamples testing - /* - if (!empty($_COOKIE['moosique'])) { - $recent = json_decode(stripslashes($_COOKIE['moosique']))->recentlyListened; - $posExamples = array(); - foreach($recent as $link) { - preg_match_all('#<a\s*(?:rel=[\'"]([^\'"]+)[\'"])?.*?>((?:(?!</a>).)*)</a>#i', $link, $record); - array_push($posExamples, $record[1][0]); - } - } - - print_r(array_unique($posExamples)); - */ - ?> - </pre> - </div> <div id="results"> @@ -97,30 +79,32 @@ <div id="recommendations"> <h2>Recommended Songs</h2> - <p>These are the automatically generated recommendations. Click on a song to add it to your playlist.</p> - <ol id="recommended"> - <li></li> - </ol> + <p> + These recommendations are generated every time you listen to a song + for at least half it's length, assuming that you liked it. + </p> + + <div id="recommendationResults"> + + + </div> + <p> + <a href="#" id="generateRecommendations">Nothing showing up here? You can also + generate your list of recommendations by clicking here.</a> + </p> </div> <div id="information"> <div id="moreInfo"> - <h2>About the Artist</h2> - <img src="http://imgjam.com/albums/8654/covers/1.200.jpg" alt="Cover" /> - <p> - Iusto odio dignissim qui blandit praesent. Nisl ut aliquip ex ea commodo, consequat - duis autem vel eum. Nam liber tempor cum soluta nobis eleifend option congue nihil - imperdiet doming id. In hendrerit eu feugiat nulla luptatum zzril delenit augue duis - dolore te feugait. Quod ii legunt saepius claritas est etiam processus dynamicus - qui nobis videntur parum. - </p> + </div> </div> <div id="player"> <h2>Playlist</h2> <p> - You can delete entries from the playlist by clicking the small x on the left and change their order by clicking on the small up- and down-arrows.<br /> + You can delete entries from the playlist by clicking the small x on the right and + change their order by clicking on the small up- and down-arrows.<br /> </p> <ol id="playlist"> <li></li> @@ -131,6 +115,7 @@ <ol id="recently"> <li></li> </ol> + <p><a href="#" id="reset">Click here to reset your »recently listened to«-list.</a></p> </div> <div id="help"> @@ -140,9 +125,9 @@ </div> <!-- end content --> <div id="footer"> + <a href="http://aksw.org/Projects/DLLearner">DL-Learner</a> | <a href="http://jamendo.com">Jamendo</a> | - <a href="http://mediaplayer.yahoo.com/">Yahoo! Media Player</a> | - <a href="http://aksw.org/Projects/DLLearner">DL-Learner</a> + <a href="http://mediaplayer.yahoo.com/">Yahoo! Media Player</a> </div> </div> <!-- end container --> Modified: trunk/src/moosique.net/js/debug.js =================================================================== --- trunk/src/moosique.net/js/debug.js 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/js/debug.js 2009-10-07 15:21:39 UTC (rev 1880) @@ -1,4 +1,4 @@ -/* activate debugging */ +/* activate debugging if firebug is avaiable */ if (typeof(console) !== 'undefined') { debug = console; debug.log("Firebug-Console for moosique.net activated."); Modified: trunk/src/moosique.net/js/index.php =================================================================== --- trunk/src/moosique.net/js/index.php 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/js/index.php 2009-10-07 15:21:39 UTC (rev 1880) @@ -2,10 +2,10 @@ /* This little Script takes all included js-files and * compresses them with the PHP-Variant of js-min * found here: http://code.google.com/p/jsmin-php/ + * This file is only used in non-debugging-mode */ header('Content-type: application/javascript'); -// set offset to 365 days = 1 year -$offset = 60 * 60 * 24 * 365; +$offset = 60 * 60 * 24 * 365; // set offset to 365 days = 1 year header('Expires: ' . gmdate("D, d M Y H:i:s", time() + $offset) . ' GMT'); ob_start('compress'); @@ -19,7 +19,6 @@ /* the javascript-files to include and compress */ include('mootools-1.2.3-core-yc.js'); include('moosique.js'); -// include('debug.js'); /* no debugging for production */ include('start.js'); ob_end_flush(); Modified: trunk/src/moosique.net/js/moosique.js =================================================================== --- trunk/src/moosique.net/js/moosique.js 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/js/moosique.js 2009-10-07 15:21:39 UTC (rev 1880) @@ -6,13 +6,13 @@ /** * moosique-Player-Class - * - * - * TODO Split out functions and comment it + * + * + * */ var Moosique = new Class({ Implements: Options, - // Some Default Options + // set some default options options: { messageFadeTime: 5000, // Time until a Status message fades out timeToScrobble: 0.5, // factor for calculating max time a user has to listen to a track until its scrobbled @@ -20,8 +20,9 @@ }, /** - * Initializes the Object and sets some default options - * + * Initializes the Object and sets the default options + * activating search functionality and the interface for using the player + * * @param {Object} options */ initialize: function(options) { @@ -31,12 +32,14 @@ this.initInterface(); this.updateRecently(); this.activateSearch(); - /* - this.initPlaylist(); - */ }, + /** + * This function stores references to DOM-Objects in this class + * for easier access in the other methods, if sth. in the DOM is + * changed, just change the references here and everything will work fine. + */ initVars: function() { this.main = document.id('content'); this.menu = document.id('mainMenu'); @@ -59,10 +62,19 @@ this.loading = document.id('loadingImg'); this.welcome = document.id('welcome'); this.help = document.id('help'); - + this.recommendations = document.id('recommendations'); + this.generate = document.id('generateRecommendations'); + this.recResults = document.id('recommendationResults'); + this.reset = document.id('reset'); }, - + /** + * Applies Config-Vars to the Yahoo Media Player as described in http://mediaplayer.yahoo.com/api/ + * for the YMP-Events and initializes the Player. Events are: + * onProgress, onPlaylistUpdate, onTrackPause, onTrackStart, onTrackComplete + * where onProgress is the most important event-handler, because this is where the learning-process is fired + * + */ applyYahooMediaPlayerConfig: function() { var that = this; @@ -73,11 +85,9 @@ /** * progress: Change the track position and duration displayed every time, as usual in players * - * every time the song is played for at least half it's - * playtime, we assume that the song is liked, so we add it - * to the list we create the recommendations from - * (much like last.fm scrobbling) and learn from the heard songs - * BIG TODO + * every time the song is played for a given percent of it's length (set when initializing + * the moosique-Class), we assume that the song is liked (like last.fm-scobling), so we add + * it to the recently listened list AND we create the recommendations and learn */ var progress = function() { that.nowPlayingTime.set('text', @@ -86,13 +96,8 @@ if (Math.ceil(YAHOO.MediaPlayer.getTrackPosition()) == Math.ceil(YAHOO.MediaPlayer.getTrackDuration() * that.options.timeToScrobble)) { - /* This is where the main magic happens - After havin listened to a song for half its time we save this song to the positive examples list - and then send a request to the dllearner who then calulates new recommendations. - - first, we update the cookie with the last played song and then - */ + // first, we update the cookie with the last played song and then var lastListenedListItem = YAHOO.MediaPlayer.getMetaData().anchor.getParent().clone(); var lastListened = lastListenedListItem.getFirst(); @@ -105,6 +110,7 @@ lastListened.getChildren('em').destroy(); // yahoo buttons // this is the final link item we save in the cookie + // stripped of all unneccessary links and buttons, but easy to re-add or learn from var last = lastListenedListItem.get('html'); // get the current cookie @@ -113,7 +119,6 @@ if (recentlyListenedCookie) { // does the cookie exist? recentlyListened = JSON.decode(recentlyListenedCookie).recentlyListened; - if (recentlyListened) { // if the cookie is not totally empty // update recently listened and write the cookie, limit to 10 entries, // due to cookie-max-size of 4KB @@ -134,26 +139,14 @@ // update the recently played list that.updateRecently(); - - // TODO - // send ajax request and save the scrobbled song - // and retrieve and update the recommendations - var getRecommendations = new Request({ - method: 'get', - url: 'moosique/index.php', - onSuccess: function(responseText, responseXML) { - mooPlayer.displayStatusMessage('Added this song to your recently listened to songs.'); - } - }).send(YAHOO.MediaPlayer.getMetaData().title); - - + that.displayStatusMessage('Added this song to your recently listened to songs.'); + that.generateRecommendations(); } }; /** - * playlistUpdate: every time the playlist is updated - * we add the events for delete/up/down-buttons to each - * playlistitem and update the status on what happened + * playlistUpdate: every time the playlist is updated we add the events for + * delete/up/down-buttons to each playlistitem and update the status on what happened */ var playlistUpdate = function() { // delete button @@ -196,10 +189,7 @@ } }); }); - that.displayStatusMessage('Playlist updated.'); - // TODO save to current-playlist cookie? - }; /** @@ -214,6 +204,7 @@ /** * trackStart: we change the Play-Button to a Pause-Button * and Update the status on #now and display whats playing + * TODO: when a track started playing, fetch additional information about artist etc. using musicbrainz */ var trackStart = function() { that.nowPlayingInfo.set('text', 'Currently playing:'); @@ -223,6 +214,7 @@ /** * trackComplete: we change the Pause-Button to a Play-Button + * TODO: if this was the last track, add another track from the recommendations and start playing */ var trackComplete = function() { that.playPause.setStyle('background-position', '0px 0px'); @@ -238,13 +230,37 @@ // Initialize YMP if ready and apply the config YAHOO.MediaPlayer.onAPIReady.subscribe(playerConfig); - }, + /** + * Send an ajax-request to generate the recommendations and passes the + * result to the corresponding html-container + * + */ + generateRecommendations: function() { + var that = this; + + // TODO + // send ajax request and save the scrobbled song + // and retrieve and update the recommendations + var getRecommendations = new Request({ + method: 'get', + url: 'moosique/index.php', + onSuccess: function(response) { + that.recResults.set('html', response); + that.showTab('recommendations'); + that.displayStatusMessage('You have new recommendations!'); + } + }).send('learn=now'); + }, - + /** + * Updates the recently-Listened-To UL-List Element with the contents + * from the recentlyListened-Cookie and makes them re-addable to the playlist + * + */ updateRecently: function() { var that = this; @@ -261,14 +277,17 @@ } that.recently.set('html', recentlyHTML); that.makeAddable(that.recently.getElements('a')); + } else { // cookie is set, but no Songs in recently + that.recently.set('html', '<li></li>'); } + } else { // no Cookie found, emptying recently + that.recently.set('html', '<li></li>'); } }, - - + /** - * adding functionality for the player-GUI and the play, next etc. buttons + * Adds click-events to all player-related buttons, like play, next etc. buttons */ addEventsToButtons: function() { var that = this; @@ -278,8 +297,9 @@ that.next.addEvent('click', function() { YAHOO.MediaPlayer.next(); }); // the Play-Pause Button - that.playPause.addEvent('click', function() { + that.playPause.addEvent('click', function() { // STOPPED: 0, PAUSED: 1, PLAYING: 2,BUFFERING: 5, ENDED: 7 + // see http://mediaplayer.yahoo.com/api/ if (YAHOO.MediaPlayer.getPlayerState() == 0 || YAHOO.MediaPlayer.getPlayerState() == 1 || YAHOO.MediaPlayer.getPlayerState() == 7) { @@ -313,32 +333,11 @@ } }); }, - - /** - * Playlist related functions - */ - initPlaylist: function() { - var that = this; - $$('#recommended a').each(function(a) { - a.addEvent('click', function(e) { - // prevent link following - e.stop(); - a.set('class', 'htrack'); - - var liItem = a.getParent(); - // move to the playlist - liItem.inject(that.playlist); - that.refreshPlaylist(); - }); - }); - - that.refreshPlaylist(); - }, /** - * Refreshes the playlist by emptying the current one - * and reReading the #playlist-container + * Refreshes the YMP-playlist by emptying the current one + * and re-adding all items from the the playlist-container */ refreshPlaylist: function() { var that = this; @@ -350,7 +349,7 @@ /** * Displays a status message * - * @param {Object} message + * @param {String} message */ displayStatusMessage: function(message) { // Update Status and fade out @@ -364,7 +363,9 @@ /** - * initializes interface-functions, clicking buttons and tabs... + * Adds click-Events to the Interface for Tabs and invokes + * addEventsToButtons() + * */ initInterface: function() { var that = this; @@ -376,14 +377,28 @@ }); }); + // generating recommendations clickable + that.generate.addEvent('click', function(e) { + e.stop(); + that.generateRecommendations(); + }); + + that.reset.addEvent('click', function(e) { + e.stop(); + Cookie.dispose('moosique'); + that.updateRecently(); + }); + // make buttons functional this.addEventsToButtons(); - }, /** - * adds events to the search form for retrieving results etc. + * Make the search-Form an ajax-Search form, displaying the results + * on the homepage if successful + * + * TODO: sanitize client-side too using regex and displayStatus */ activateSearch: function() { var that = this; @@ -398,8 +413,15 @@ // show homescreen for resultdisplaying that.showTab('home'); + // if the welcome-text ist present, cut & paste it to help + if (that.welcome) { + if (that.welcome.get('html').length > 100) { + that.help.set('html', that.welcome.get('html')); + that.welcome.destroy(); + } + } that.loading.setStyle('display', 'inline'); - that.results.set('html', '<h2>Searching...</h2><p>Please be patient, this may take a minute or two...</p>'); + that.results.set('html', '<h2>Searching...</h2><p>Please be patient, this may take up to a minute...</p>'); }, onFailure: function() { @@ -410,14 +432,6 @@ that.searchSubmit.erase('disabled'); // reenable submitbutton that.searchSubmit.setStyle('display', 'inline'); that.loading.setStyle('display', 'none'); - - // if the welcome-text ist present, cut & paste it to help - if (that.welcome) { - if (that.welcome.get('html').length > 100) { - that.help.set('html', that.welcome.get('html')); - that.welcome.destroy(); - } - } // display results that.results.set('html', response); // addEvents to result-links @@ -428,28 +442,22 @@ // only send form if value is at least 3 chars long if (that.searchValue.get('value').length > 2) { this.send(); - } + } else { + that.displayStatusMessage('Please enter at least 3 chars for searching...'); + } }); - - - - - - }, - - - - /** * For Recommendations and Search-Results * This function searches for all links with the class addToPlaylist * and makes them addable to the playlist, which means clicking on * them adds them to the playlist and makes them playable. this * is working for links to whole albums and single tracks also + * + * @param {Object} links All links to make addable */ makeAddable: function (links) { var that = this; @@ -485,15 +493,11 @@ }, - - - - - - /** * appends prepared html code to the playlist, empties the playlist if the first * element is an empty li and refreshed the playlist and shows the playlist tab + * + * @param {String} HTML-Code with new Items to add to the playlist */ insertIntoPlaylist: function(newItems) { var that = this; @@ -531,11 +535,9 @@ }, - - - /** - * + * Shows the given tab in the menu, and hides all others + * * @param {String} tabID ID of the Tab to show */ showTab: function(tabID) { @@ -544,17 +546,15 @@ that.menu.getElements('a.' + tabID).getParent().toggleClass('active'); that.main.getChildren().setStyle('display', 'none'); document.id(tabID).setStyle('display', 'block'); - }, - /** * Converts seconds into a string formatted minutes:seconds * with leading zeros for seconds * * @param {Float} seconds - * @return {String} minsec minutes:seconds + * @return {String} minsec minutes:seconds */ secondsToMinutesAndSeconds: function(seconds) { var min = Math.floor(seconds / 60); Modified: trunk/src/moosique.net/js/start.js =================================================================== --- trunk/src/moosique.net/js/start.js 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/js/start.js 2009-10-07 15:21:39 UTC (rev 1880) @@ -2,12 +2,12 @@ var YMPParams = { autoplay: false, parse: false, // do not parse initial content - volume: 1.0, - displaystate: 3 // hide the YMP (1 shows) + volume: 1.0, // play it loud! + displaystate: 3 // hide the YMP-default-GUI (1 shows) }; // Create an instance of the moosique.net -// 0.025 for debugging purposes TODO +// TODO 0.025 for debugging purposes var moo = new Moosique({ timeToScrobble: 0.025 }); // default debug Modified: trunk/src/moosique.net/moosique/classes/Config.php =================================================================== --- trunk/src/moosique.net/moosique/classes/Config.php 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/moosique/classes/Config.php 2009-10-07 15:21:39 UTC (rev 1880) @@ -26,8 +26,10 @@ } } + /** - * + * Returns the value of a general config-entry from config.ini + * * @return String The wanted Configvalue * @param String Value for the wanted Configvalue */ @@ -35,8 +37,21 @@ return $this->config['general'][$value]; } + /** - * + * Returns the value of a last-fm config-entry from config.ini + * + * @return String The wanted Configvalue + * @param String Value for the wanted Configvalue + */ + public function getConfigLastFM($value) { + return $this->config['lastFM'][$value]; + } + + + /** + * Returns the value of an URL defined in config.ini + * * @return String The wanted Url * @param String Value for the wanted Url */ @@ -44,17 +59,45 @@ return $this->config['url'][$value]; } - public function getLearningConfig() { - return $this->config['learning']; + + /** + * This funtion returns one (if specified) or all learning-Config entries from config.ini + * + * @param String Value for a single learning-Configuration + * @return Mixed The wanted value as a string, or - if not specified - complete learingConfig as an array + */ + + public function getConfigLearning($prefix = false) { + if ($prefix !== false) { + if (isset($this->config['learning'][$prefix])) { + return $this->config['learning'][$prefix]; + } else { + return false; + } + } else { + return $this->config['learning']; + } } + /** - * - * @return Array An associative array of all prefixes + * This funtion returns one (if specified) or all prefixes from the config.ini + * + * @param String String-Value for a single prefix + * @return Mixed The wanted prefix as a string, or - if not specified - all Prefixes as an array */ - public function getAllPrefixes() { - return $this->config['prefix']; - } + public function getConfigPrefixes($prefix = false) { + if ($prefix !== false) { + if (isset($this->config['prefix'][$prefix])) { + return $this->config['prefix'][$prefix]; + } else { + return false; + } + } else { + return $this->config['prefix']; + } + } + } Modified: trunk/src/moosique.net/moosique/classes/DllearnerConnection.php =================================================================== --- trunk/src/moosique.net/moosique/classes/DllearnerConnection.php 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/moosique/classes/DllearnerConnection.php 2009-10-07 15:21:39 UTC (rev 1880) @@ -22,9 +22,9 @@ $this->setEndpoint($this->getConfigUrl('jamendo')); // load WSDL files (has to be done due to a Java web service bug) + ini_set('soap.wsdl_cache_enabled', '0'); include('Utilities.php'); - ini_set('soap.wsdl_cache_enabled', '0'); - // Utilities::loadWSDLfiles($this->getConfigUrl('wsdl')); + Utilities::loadWSDLfiles($this->getConfigUrl('wsdl')); $this->connect(); } @@ -111,23 +111,29 @@ * * */ - public function learn($instances, $positiveExamples, $owlfile) { - $id = $_SESSION['sessionID']; - $conf = $this->getLearningConfig(); + public function learn($instances, $positiveExamples) { + $result = false; + // $id = $_SESSION['sessionID']; - // TODO? use this as knowledgesource ID? - $this->client->addKnowledgeSource($id, 'owlfile', $owlfile); + // TODO for learning we create a new learning-ID and knowledge-Source + $id = $this->client->generateID(); + $kID = $this->client->addKnowledgeSource($id, 'sparql', $this->endpoint); + $conf = $this->getConfigLearning(); + + $this->client->addKnowledgeSource($id, 'owlfile', $this->getConfigUrl('tagOntology')); $this->client->setReasoner($id, $conf['reasoner']); - // set the instances and pos examples - $this->client->applyConfigEntryStringArray($id, $this->knowledgeSourceID, 'instances', $instances); + // set the instances, the learning-Problem and pos examples + // $this->client->applyConfigEntryStringArray($id, $this->knowledgeSourceID, 'instances', $instances); + $this->client->applyConfigEntryStringArray($id, $kID, 'instances', $instances); $this->client->setLearningProblem($id, $conf['problem']); - $this->client->setPositiveExamples($id, $positiveExamples); // recursion-depth and fragment saving - $this->client->applyConfigEntryInt($id, $this->knowledgeSourceID, 'recursionDepth', $conf['recursionDepth']); - $this->client->applyConfigEntryBoolean($id, $this->knowledgeSourceID, 'saveExtractedFragment', $conf['saveExtractedFragment']); + // $this->client->applyConfigEntryInt($id, $this->knowledgeSourceID, 'recursionDepth', $conf['recursionDepth']); + // $this->client->applyConfigEntryBoolean($id, $this->knowledgeSourceID, 'saveExtractedFragment', $conf['saveExtractedFragment']); + $this->client->applyConfigEntryInt($id, $kID, 'recursionDepth', $conf['recursionDepth']); + $this->client->applyConfigEntryBoolean($id, $kID, 'saveExtractedFragment', $conf['saveExtractedFragment']); // algorithm config $learnID = $this->client->setLearningAlgorithm($id, $conf['algorithm']); @@ -135,20 +141,26 @@ $this->client->applyConfigEntryInt($id, $learnID, 'valueFrequencyThreshold', $conf['valueFrequencyThreshold']); $this->client->applyConfigEntryBoolean($id, $learnID, 'useHasValueConstructor', $conf['useHasValueConstructor']); - $this->client->applyConfigEntryStringTupleList($id, $this->knowledgeSourceID, 'replacePredicate', array( - "http://www.holygoat.co.uk/owl/redwood/0.1/tags/taggedWithTag"), array("http://www.w3.org/1999/02/22-rdf-syntax-ns#type") + // replace prefixes + // $this->client->applyConfigEntryStringTupleList($id, $this->knowledgeSourceID, 'replacePredicate', + $this->client->applyConfigEntryStringTupleList($id, $kID, 'replacePredicate', + array($this->getConfigPrefixes('tags') . 'taggedWithTag'), array($this->getConfigPrefixes('rdf') . 'type') ); $this->client->initAll($id); + $result = $this->client->learnDescriptionsEvaluated($id); + $result = json_decode($result); + return $result; - $concepts = false; - - $concepts = $this->client->learnDescriptionsEvaluated($id); - $concepts = json_decode($concepts); + } + + + public function kbToSqarql($kb) { + return $this->client->SparqlRetrieval($kb, 20); - return $concepts; + } } Modified: trunk/src/moosique.net/moosique/classes/LastFM.php =================================================================== --- trunk/src/moosique.net/moosique/classes/LastFM.php 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/moosique/classes/LastFM.php 2009-10-07 15:21:39 UTC (rev 1880) @@ -1,83 +1,106 @@ <?php -/** - * TODO: UGLY! Use last.fm-Api instead? - * API-Key: b9877a7391416d0846ad5f240a1838f9 - * - * Later. - */ -class LastFM { +class LastFM extends Config { + + private $topTags; - private $data; - private $config; - private $username; - - function __construct($config, $username) { - $this->config = $config; - $this->username = $username; - $this->getData(); + function __construct($user) { + parent::__construct(); // init config + + $this->getLastFMTags($user); } - function getData() { - include_once('arc/ARC2.php'); - $rdfParser = ARC2::getRDFParser(); - $lastfmResource = $this->config->getUrl('lastfm') . urlencode($this->username); - $rdfParser->parse($lastfmResource); - // parse, non simple array - $index = $rdfParser->getSimpleIndex(0); - $this->data = $index; + /** + * + * + * + */ + private function getLastFMTags($user) { + $allTags = array(); + $requestUrl = $this->getConfigLastFM('topTagsUrl') + . '&user=' . $user + . '&api_key=' . $this->getConfigLastFM('apiKey'); + $lastFMTags = @simplexml_load_file($requestUrl); + + if ($lastFMTags) { // meaning the last.fm-username exists + foreach($lastFMTags->toptags as $tags) { + foreach($tags as $tag) { + $allTags[] = (String)$tag->name; + } + } + // we limit the array to the 10 most used tags + $allTags = array_slice($allTags, 0, 10); + + // if there is a last-fm user, but he has tagged nothing? + // we get the list of top-artists and get the topTags from the artists + if (empty($allTags)) { + $allTags = $this->getTagsFromTopArtists($user); + } + } else { + if ($this->debugger) $this->debugger->log($user, 'The last.fm-User does not exist. Please try again.'); + } + $this->topTags = $allTags; } - function getRecentTracks() { - $playedTracks = array(); - $trackNodes = array(); + /** + * + * + * + */ + private function getTagsFromTopArtists($user) { + $allArtists = array(); + $finalTags = array(); - echo '<pre>'; - // print_r($this->data); - - if (is_array($this->data) && !empty($this->data)) { - foreach($this->data as $rootItem => $rootValue) { - // only process further if the rootitem ist no uri - if (!preg_match('/http:\/\//i', $rootItem)) { - foreach($rootValue as $childItem => $childValue) { - // if there is a childitem :track_played, we can use the information - if ($childItem == $this->config->getPrefix('played')) { - $trackNodes[] = $childValue[0]['value']; - } - } - } + // get the top artists for the user + $requestUrl = $this->getConfigLastFM('topArtistsUrl') + . '&user=' . $user + . '&api_key=' . $this->getConfigLastFM('apiKey'); + + $lastFMArtists = @simplexml_load_file($requestUrl); + + foreach($lastFMArtists->topartists as $artists) { + foreach($artists as $artist) { + $allArtists[] = (String)$artist->name; } - } else { - echo 'Data-Array empty.'; } + // reduce top Artists to TOP 10 + $allArtists = array_slice($allArtists, 0, 10); + + // get the topTags for every artist - if (!empty($trackNodes)) { - foreach($trackNodes as $trackNode) { - $track = $this->data[$trackNode][$this->config->getPrefix('title')][0]['value']; - $artistNode = $this->data[$trackNode][$this->config->getPrefix('maker')][0]['value']; - $artist = $this->data[$artistNode][$this->config->getPrefix('name')][0]['value']; - $artistZitgist = $this->data[$artistNode][$this->config->getPrefix('same')][0]['value']; - $album = ''; - $albumZitgist = ''; - - $playedTracks[] = array($artist, $track, $album, $artistZitgist, $albumZitgist); - + foreach($allArtists as $artistName) { + $requestUrl = $this->getConfigLastFM('artistsTopTagsUrl') + . '&artist=' . urlencode($artistName) + . '&api_key=' . $this->getConfigLastFM('apiKey'); + $artistTags = @simplexml_load_file($requestUrl); + + // take only the first two tags, that should be enough + foreach($artistTags->toptags as $tags) { + $someCounter = 0; + foreach($tags as $tag) { + $finalTags[] = (String)$tag->name; + $someCounter++; + if ($someCounter == 2) break; + } } - } else { - echo "No recently played tracks avaiable from last.fm."; } + // remove double entries and limit the array to the TOP 10 + $finalTags = array_unique($finalTags); + $finalTags = array_slice($finalTags, 0, 10); - print_r($trackNodes); - print_r($playedTracks); - echo '</pre>'; + return $finalTags; } - - + + /** + * + * + * + */ + public function getTopTags() { + return $this->topTags; + } + + } -include('config.php'); - -$lastfm = new LastFM($conf, 'nebelschwade'); -$lastfm->getRecentTracks(); - ?> \ No newline at end of file Modified: trunk/src/moosique.net/moosique/classes/RequestHandler.php =================================================================== --- trunk/src/moosique.net/moosique/classes/RequestHandler.php 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/moosique/classes/RequestHandler.php 2009-10-07 15:21:39 UTC (rev 1880) @@ -20,103 +20,199 @@ if ($this->isAjax() && $this->isGet()) { $this->response = $this->processRequest(); } else { - // TODO + // we do nothing. This application is based on AJAX. } } /** - * Returns the HTML stored in the private $response - * - * @return String HTML-Code generated - */ - public function getResponse() { - return $this->response; - } - - /** * Processes the request made through ajax, handles * the different searches and other related requests * * @return */ private function processRequest() { + $response = ''; - // general search + // general search for all / artist / tags / song + // ====================================================================== if (isset($_GET['searchType']) && isset($_GET['searchValue'])) { - - $search = $this->cleanString($_GET['searchValue']); + // clean up the search value + $search = $this->cleanString($_GET['searchValue'], $_GET['searchType']); + // a search for "everything" causes 3 searches for artist, tags and songs + // concatenating the response from all 3 searches if ($_GET['searchType'] == 'allSearch') { + // artist + $data = $this->getData($search, 'artistSearch'); + $view = new View($data, 'artistSearch'); + $response .= $view->getHTML(); + // tag + $data = $this->getData($search, 'tagSearch'); + $view = new View($data, 'tagSearch'); + $response .= $view->getHTML(); + // song + $data = $this->getData($search, 'songSearch'); + $view = new View($data, 'songSearch'); + $response .= $view->getHTML(); - // TODO doing 3times the same thing is ugly, build function doing this - - // Artists - $sparql = new SparqlQueryBuilder($search, 'artistSearch', 20); - $query = $sparql->getQuery(); - $json = $this->connection->sparqlQuery($query); - $result = json_decode($json); - $artistObject = $result->results->bindings; - $artistView = new View('artistSearch', $artistObject); - $artistResponse = $artistView->getHTML(); - - // Tags - $sparql = new SparqlQueryBuilder($search, 'tagSearch', 20); - $query = $sparql->getQuery(); - $json = $this->connection->sparqlQuery($query); - $result = json_decode($json); - $tagObject = $result->results->bindings; - $tagView = new View('tagSearch', $tagObject); - $tagResponse = $tagView->getHTML(); - - - // Songs - $sparql = new SparqlQueryBuilder($search, 'songSearch', 20); - $query = $sparql->getQuery(); - $json = $this->connection->sparqlQuery($query); - $result = json_decode($json); - $songObject = $result->results->bindings; - $songView = new View('songSearch', $songObject); - $songResponse = $songView->getHTML(); - - // merge results, and return it - return $artistResponse . $tagResponse . $songResponse; - - } else { // normal tag/artist/song-search - - $sparql = new SparqlQueryBuilder($search, $_GET['searchType']); - $query = $sparql->getQuery(); - + } - // sparql-query to dellearner - $json = $this->connection->sparqlQuery($query); - // convert to useable object - $result = json_decode($json); - $resultObject = $result->results->bindings; - - // create and return the response - $view = new View($_GET['searchType'], $resultObject); + if ($_GET['searchType'] == 'artistSearch' || + $_GET['searchType'] == 'tagSearch' || + $_GET['searchType'] == 'songSearch') { + // normal search for artist, tag or song + $data = $this->getData($search, $_GET['searchType']); + $view = new View($data, $_GET['searchType']); $response = $view->getHTML(); + } - return $response; + + if ($_GET['searchType'] == 'lastFM') { + $lastFM = new LastFM($search); + $tags = $lastFM->getTopTags(); + // no we have the topTags, do a search for related albums + foreach($tags as $tag) { + // TODO when using last.fm-Tags for tagSearch, we want exakt results, meaning + // no "darkmetalbeermusic" when the lastfm tag is "metal" + + $tag = $this->cleanString($tag, $_GET['searchType']); + // displaying 10 results per tag (=100 results) should be enough + $data = $this->getData($tag, $_GET['searchType'], 20); + $view = new View($data, $_GET['searchType']); + $response .= $view->getHTML(); + } + } } - // TODO other requuests + // TODO other requests --- artist Information - // a playlist is requested. due to a bug in ymp we don't - // directly deliver the .xspf-file, we return a prepared - // list of <li> including the links to the mp3-files + + + + // A Learning-Request + // ====================================================================== + if (isset($_GET['learn']) && $_GET['learn'] == 'now') { + $posExamples = $this->getPositiveExamples(); + $instances = $this->getInstances($posExamples); + + $this->debugger->log($instances, "INSTANZEN"); + $this->debugger->log($posExamples, "posExamples"); + + $res = $this->connection->learn($instances, $posExamples); + + // TODO (Yes, BIG one) + // build sparql-query based on learning-results + // build html-view build an sparql-results --- misuse tagSearch-Thingie + foreach ($res as $solution) { + $response .= round($solution->scoreValue*100, 2) . '% --- ' . $solution->descriptionKBSyntax . "\n"; + // $response .= $this->connection->kbToSqarql($solution->descriptionKBSyntax) . "\n"; + } + + $response = '<pre>' . $response . '</pre>'; + + } + + + // A Playlist-Request + // ====================================================================== if (isset($_GET['get']) && isset($_GET['playlist'])) { - $view = new View($_GET['get'], - array('playlist' => $_GET['playlist'], 'albumID' => $_GET['rel']) + // Due to a bug in YMP we don't directly deliver the .xspf-file, we return a prepared + // list of <li> including the links to the mp3-files, and this is build in the view of course. + $data = $this->prepareData( + array('playlist' => $_GET['playlist'], 'albumID' => $_GET['rel']), + $_GET['get'] ); - return $view->getHTML(); + $view = new View($data, $_GET['get']); + $response = $view->getHTML(); } + + + + // Finally returning the response + if (!empty($response)) { + return $response; + } else { + if ($_GET['searchType'] == 'lastFM') { + return '<h2>Nothing found for the last.fm-user »' . $_GET['searchValue'] . '«.'; + } + return "<h2>The repsonse from the server was empty.</h2>"; + } } + /** + * + * + * + */ + private function getPositiveExamples() { + $posExamples = array(); + if (!empty($_COOKIE['moosique'])) { + $recent = json_decode(stripslashes($_COOKIE['moosique']))->recentlyListened; + foreach($recent as $link) { + // extract relation from the cookie-link + preg_match_all('#<a\s*(?:rel=[\'"]([^\'"]+)[\'"])?.*?>((?:(?!</a>).)*)</a>#i', $link, $record); + array_push($posExamples, $record[1][0]); + } + } + + $posExamples = array_unique($posExamples); + return $posExamples; + + } + + /** + * + * + * + */ + private function getInstances($posExamples) { + // TODO more testing, what is the optimum posExamples/neutral ratio, 50/50? + // for now we assume 50/50 + // $totalInstances = $this->getConfigLearning('instances'); + $instances = array(); + // and then add some random Records _not_ in this list + $allRecords = file($this->getConfigUrl('allRecords')); + $countPos = count($posExamples); + + for ($i = 0; $i < $countPos; $i++) { + $randomRecord = trim($allRecords[array_rand($allRecords)]); + // no double entries for the $instances-array + if (!in_array($randomRecord, $posExamples)) { + array_push($instances, $randomRecord); + } + } + // merge with posExamples + $instances = array_merge($posExamples, $instances); + shuffle($instances); + + return $instances; + } + + + /** + * + * @param Integer $limit optional Limit for Sparql-Query + */ + private function getData($search, $type, $limit = 0) { + $sparql = new SparqlQueryBuilder($search, $type, $limit); + $query = $sparql->getQuery(); + // sparql-query to dellearner + $json = $this->connection->sparqlQuery($query); + // convert to useable object + $result = json_decode($json); + $resultObject = $result->results->bindings; + + // prepare the data for HTML processing + $data = $this->prepareData($resultObject, $type); + return $data; + } + + + /** * Establishes a new Dl-Learner Connection and saves it in - * private connection for class-wide use. + * private $connection for class-wide use. * * @return */ @@ -125,16 +221,172 @@ } /** - * Removes unwanted chars from a string - * + * Removes unwanted chars from a search-string + * + * TODO - NOT IMPLEMENTED but prepared + * If the search string contains a %20-Space-Char somewhere in the middle + * of the string, it returns an array of search-values, divided by " " + * Doing this we later can perform more searches for values like "stoner doom metal" + * resulting in an array with [0] => stoner [1] => doom [2] => metal */ - private function cleanString($string) { - $remove = array(' ', '/', '?', '-', '_', '+', "=", '$', ',', '.', ':', ';', '\'', "\"", "\\", "\\\\"); + private function cleanString($string, $type) { + // $remove = array('/', '?', '+', "=", '$', ',', '.', ':', ';', '\'', "\"", "\\", "\\\\"); + $remove = array(' ', '/', '?', '+', "=", '$', ',', '.', ':', ';', '\'', "\"", "\\", "\\\\"); + $string = trim($string); $string = str_replace($remove, '', $string); + // and remove double whitespaces + $string = str_replace(array(' ', ' '), ' ', $string); + + // when searching for tags due to the jamendo-tag handling we split + // tags into an array for better filter-results + /* + if ((strpos($string, " ") > 0) && $type = 'tagSearch') { + $string = explode(" ", $string); + $this->debugger->log($string, "MEHR ALS ZWEI"); + } + */ return $string; } + + /** + * Cleans up objects or retrieves them from a XML-File (for playlists) + * and converts them into arrays for use in the view class + * + * @param Mixed $data The Data-Object (from a Sparql-Query or a playlist-array) + * @param String $type To define what kind of data to prepare + * @return Array A multidimensional Array ready for processing for HTML-output + */ + private function prepareData($data, $type) { + $mergedArray = array(); + + switch ($type) { + case 'artistSearch' : + $mergedArray = $this->mergeArray($data, 'artist'); + $mergedArray = $this->arrayUnique($mergedArray); + break; + + case 'tagSearch' : + $mergedArray = $this->mergeArray($data, 'tag'); + break; + + case 'songSearch' : + $mergedArray = $this->mergeArray($data, 'track'); + $mergedArray = $this->arrayUnique($mergedArray); + break; + + case 'lastFM' : + $mergedArray = $this->mergeArray($data, 'tag'); + break; + + case 'albumPlaylist' : + $playlistObject = simplexml_load_file($data['playlist']); + $mergedArray = $this->object2array($playlistObject); + // prepend the album stream-information + $mergedArray['albumID'] = $data['albumID']; + break; + + case 'trackPlaylist' : + $playlistObject = simplexml_load_file($data['playlist']); + $mergedArray = $this->object2array($playlistObject); + $mergedArray['albumID'] = $data['albumID']; + break; + } + + return $mergedArray; + } + + + /** + * TOOD implement nice merging for multi-tag-search + * This function merges the result-Object to a nice array + * we can process easily. The array is created by type, + * returning the data sorted for artist, tag or song + * + * @param Object $data + * @param String $type This can be 'artist', 'tag' or 'song' + * @return Array A Multidimensional array sorted by type for output-use + */ + private function mergeArray($data, $type) { + // convert the $data-response object to an array + $array = $this->object2array($data); + $combinedArray = array(); + + foreach($array as $subArray) { + if (!array_key_exists($subArray[$type]['value'], $combinedArray)) { + $combinedArray[$subArray[$type]['value']] = $subArray; + } else { + // we already have an object with this tag? -> merge! + $combinedArray[$subArray[$type]['value']] = array_merge_recursive( + $combinedArray[$subArray[$type]['value']], $subArray + ); + } + } + + if (!empty($combinedArray)) { + return $combinedArray; + } else return false; + } + + + /** + * Like the php-function array_unique, but for multidimensional arrays, calls itself recursively + * + * + * @return Array (Multidimensional) array without double entries + * @param Array $array The Array to clean up + */ + private function arrayUnique($array) { + $newArray = array(); + if (is_array($array)) { + foreach($array as $key => $val) { + if ($key != 'type' && $key != 'datatype') { + if (is_array($val)) { + $val2 = $this->arrayUnique($val); + } else { + $val2 = $val; + $newArray = array_unique($array); + break; + } + if (!empty($val2)) { + $newArray[$key] = $val2; + } + } + } + } + return $newArray; + } + + + /** + * Converts a simple Object to an array + * + * @return Array the Array created from the Object + * @param object $obj The Object to convert + */ + private function object2array($obj) { + $arr = array(); + $_arr = is_object($obj) ? get_object_vars($obj) : $obj; + foreach ($_arr as $key => $val) { + $val = (is_array($val) || is_object($val)) ? $this->object2array($val) : $val; + $arr[$key] = $val; + } + return $arr; + } + + + /** + * Returns the HTML stored in the private $response + * + * @return String HTML-Code generated + */ + public function getResponse() { + return $this->response; + } + + + /** * Checks if the request made is an AJAX-Request and returns true if so * * @return Boolean @@ -148,6 +400,7 @@ } } + /** * Checks if the request made is a GET-Request and returns true if so * @@ -161,6 +414,7 @@ } } + /** * Checks if the request made is a POST-Request and returns true if so * @@ -173,9 +427,7 @@ return false; } } + } - - - ?> \ No newline at end of file Modified: trunk/src/moosique.net/moosique/classes/SparqlQueryBuilder.php =================================================================== --- trunk/src/moosique.net/moosique/classes/SparqlQueryBuilder.php 2009-10-05 11:09:22 UTC (rev 1879) +++ trunk/src/moosique.net/moosique/classes/SparqlQueryBuilder.php 2009-10-07 15:21:39 UTC (rev 1880) @@ -28,7 +28,6 @@ * Builds the complete Sparql-Query depending on the type of search * and saves it in the private $queryString. * - * @return * @param object $search * @param object $typeOfSearch * @param object $limit @@ -37,7 +36,7 @@ /* Build up the Prefixes */ $prefixes = ''; - foreach($this->getAllPrefixes() as $prefix => $resource) { + foreach($this->getConfigPrefixes() as $prefix => $resource) { $prefixes .= 'PREFIX ' . $prefix . ': <' . $resource . '>' . "\n"; } @@ -62,6 +61,8 @@ case 'artistSearch' : $query = $this->queryArtistSearch($search); break; case 'tagSearch' : $query = $this->queryTagSearch($search); break; case 'songSearch' : $query = $this->querySongSearch($search); break; + case 'lastFM' : $query = $this->queryTagSearch($search); break; + /* TODO build functions for other queries case 'albumInfo' : $query = $this->queryAlbumInfo($search); break; case 'songInfo' : $query = $this->querySongInfo($search); break; @@ -76,6 +77,7 @@ /** * Returns the Sparql-Query part for an artist-search * + * @param Mixed * @return String Sparql-Query part for artist-search */ private function queryArtistSearch($search) { @@ -92,10 +94,9 @@ }'; // we want the xspf-playlist only, the search filters is // flagged with "i" for case-insensitive search - $queryString .= ' - FILTER (regex(str(?playlist), "xspf", "i")) . - FILTER (regex(str(?artistName), "' . $search . '", "i")) . - '; + $queryString .= 'FILTER (regex(str(?playlist), "xspf", "i")) . '; + $queryString .= 'FILTER (regex(str(?artistName), "' . $search . '", "i")) . '; + return $queryString; } @@ -109,25 +110,61 @@ * @return String Sparql-Query part for tag-search */ private function queryTagSearch($search) { + /* TODO multi-tag search -- maybe building an extra function is better for this + $moreThanOneTag = is_array($search); + $searchCount = 0; + + if ($moreThanOneTag === true) { + $searchCount = count($search); + } + */ $queryString = ' { ?artist rdf:type mo:MusicArtist ; foaf:name ?artistName ; foaf:made ?record . ?record rdf:type mo:Record ; - dc:title ?albumTitle ; - tags:taggedWithTag ?tag ; - mo:available_as ?playlist . - + dc:title ?albumTitle ; '; + /* + if ($moreThanOneTag === true) { + for ($i = 0; $i < $searchCount; $i++) { + $queryString .= ' tags:taggedWithTag ?tag' . $i . ' ; '; + } + } else { + */ + $queryString .= ' tags:taggedWithTag ?tag ; '; + /* + } + */ + $queryString .= ' mo:available_as ?playlist . OPTIONAL { ?record mo:image ?cover . FILTER (regex(str(?cover), "1.100.jpg", "i")) . } - }'; - $queryString .= ' - FILTER (regex(str(?playlist), "xspf", "i")) . - FILTER (regex(str(?tag), "' . $search . '", "i")) . - '; - return $queryString; + } '; + // we want the xspf-playlist only, the search filters is + // flagged with "i" for case-insensitive search + $queryString .= ' FILTER (regex(str(?playlist), "xspf", "i")) . '; + + // searching for more than on value? + /* + if (is_array($search)) { + $queryString .= ' FILTER ('; + + // glueing th... [truncated message content] |
From: <jen...@us...> - 2009-10-05 11:09:30
|
Revision: 1879 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1879&view=rev Author: jenslehmann Date: 2009-10-05 11:09:22 +0000 (Mon, 05 Oct 2009) Log Message: ----------- working nested cross validation script Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/NestedCrossValidation.java trunk/src/dl-learner/org/dllearner/utilities/datastructures/Datastructures.java Modified: trunk/src/dl-learner/org/dllearner/scripts/NestedCrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/NestedCrossValidation.java 2009-10-05 10:20:13 UTC (rev 1878) +++ trunk/src/dl-learner/org/dllearner/scripts/NestedCrossValidation.java 2009-10-05 11:09:22 UTC (rev 1879) @@ -24,11 +24,14 @@ import java.io.IOException; import java.text.DecimalFormat; import java.util.Collections; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.Random; import java.util.Set; import java.util.TreeSet; +import java.util.Map.Entry; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Level; @@ -45,7 +48,9 @@ import org.dllearner.learningproblems.PosNegLP; import org.dllearner.parser.ParseException; import org.dllearner.utilities.Helper; +import org.dllearner.utilities.datastructures.Datastructures; import org.dllearner.utilities.datastructures.TrainTestList; +import org.dllearner.utilities.statistics.Stat; import joptsimple.OptionParser; import joptsimple.OptionSet; @@ -80,6 +85,10 @@ * * Currently, only learning from positive and negative examples is supported. * + * Currently, the script can only optimise towards classification accuracy. + * (Can be extended to handle optimising F measure or other combinations of + * precision, recall, accuracy.) + * * @author Jens Lehmann * */ @@ -129,6 +138,7 @@ String[] rangeSplit = range.split("-"); int rangeStart = new Integer(rangeSplit[0]); int rangeEnd = new Integer(rangeSplit[1]); + boolean verbose = options.has("v"); // create logger (a simple logger which outputs // its messages to the console) @@ -141,7 +151,8 @@ // disable OWL API info output java.util.logging.Logger.getLogger("").setLevel(java.util.logging.Level.WARNING); - new NestedCrossValidation(confFile, outerFolds, innerFolds, parameter, rangeStart, rangeEnd); + System.out.println("Warning: The script is not well tested yet. (No known bugs, but needs more testing.)"); + new NestedCrossValidation(confFile, outerFolds, innerFolds, parameter, rangeStart, rangeEnd, verbose); // an option is missing => print help screen and message } else { @@ -151,7 +162,7 @@ } - public NestedCrossValidation(File confFile, int outerFolds, int innerFolds, String parameter, int startValue, int endValue) throws FileNotFoundException, ComponentInitException, ParseException { + public NestedCrossValidation(File confFile, int outerFolds, int innerFolds, String parameter, int startValue, int endValue, boolean verbose) throws FileNotFoundException, ComponentInitException, ParseException { DecimalFormat df = new DecimalFormat(); ComponentManager cm = ComponentManager.getInstance(); @@ -170,18 +181,30 @@ LinkedList<Individual> negExamples = new LinkedList<Individual>(((PosNegLP)lp).getNegativeExamples()); Collections.shuffle(negExamples, new Random(2)); + ReasonerComponent rc = start.getReasonerComponent(); + String baseURI = rc.getBaseURI(); + List<TrainTestList> posLists = getFolds(posExamples, outerFolds); List<TrainTestList> negLists = getFolds(negExamples, outerFolds); + // overall statistics + Stat accOverall = new Stat(); + Stat fOverall = new Stat(); + Stat recallOverall = new Stat(); + Stat precisionOverall = new Stat(); + for(int currOuterFold=0; currOuterFold<outerFolds; currOuterFold++) { - System.out.println("Start processing outer fold " + currOuterFold); + System.out.println("Outer fold " + currOuterFold); TrainTestList posList = posLists.get(currOuterFold); TrainTestList negList = negLists.get(currOuterFold); + // measure relevant criterion (accuracy, F-measure) over different parameter values + Map<Integer,Stat> paraStats = new HashMap<Integer,Stat>(); + for(int currParaValue=startValue; currParaValue<=endValue; currParaValue++) { - System.out.println(" Start Processing parameter value " + currParaValue); + System.out.println(" Parameter value " + currParaValue + ":"); // split train folds again (computation of inner folds for each parameter // value is redundant, but not a big problem) List<Individual> trainPosList = posList.getTrainList(); @@ -189,101 +212,156 @@ List<Individual> trainNegList = negList.getTrainList(); List<TrainTestList> innerNegLists = getFolds(trainNegList, innerFolds); + // measure relevant criterion for parameter (by default accuracy, + // can also be F measure) + Stat paraCriterionStat = new Stat(); + for(int currInnerFold=0; currInnerFold<innerFolds; currInnerFold++) { - System.out.println(" Inner fold " + currInnerFold + " ... "); + System.out.println(" Inner fold " + currInnerFold + ":"); // get positive & negative examples for training run - List<Individual> posEx = innerPosLists.get(currInnerFold).getTrainList(); - List<Individual> negEx = innerNegLists.get(currInnerFold).getTrainList(); + Set<Individual> posEx = new TreeSet<Individual>(innerPosLists.get(currInnerFold).getTrainList()); + Set<Individual> negEx = new TreeSet<Individual>(innerNegLists.get(currInnerFold).getTrainList()); // read conf file and exchange options for pos/neg examples // and parameter to optimise start = new Start(confFile); - lp = start.getLearningProblem(); - cm.applyConfigEntry(lp, "positiveExamples", posEx); - cm.applyConfigEntry(lp, "negativeExamples", negEx); - LearningAlgorithm la = start.getLearningAlgorithm(); - cm.applyConfigEntry(la, parameter, (double)currParaValue); + LearningProblem lpIn = start.getLearningProblem(); + cm.applyConfigEntry(lpIn, "positiveExamples", Datastructures.individualSetToStringSet(posEx)); + cm.applyConfigEntry(lpIn, "negativeExamples", Datastructures.individualSetToStringSet(negEx)); + LearningAlgorithm laIn = start.getLearningAlgorithm(); + cm.applyConfigEntry(laIn, parameter, (double)currParaValue); - lp.init(); - la.init(); - la.start(); + lpIn.init(); + laIn.init(); + laIn.start(); // evaluate learned expression - Description concept = la.getCurrentlyBestDescription(); + Description concept = laIn.getCurrentlyBestDescription(); TreeSet<Individual> posTest = new TreeSet<Individual>(innerPosLists.get(currInnerFold).getTestList()); TreeSet<Individual> negTest = new TreeSet<Individual>(innerNegLists.get(currInnerFold).getTestList()); ReasonerComponent rs = start.getReasonerComponent(); + // true positive Set<Individual> posCorrect = rs.hasType(concept, posTest); + // false negative Set<Individual> posError = Helper.difference(posTest, posCorrect); + // false positive Set<Individual> negError = rs.hasType(concept, negTest); + // true negative Set<Individual> negCorrect = Helper.difference(negTest, negError); + +// double posErrorRate = 100*(posError.size()/posTest.size()); +// double negErrorRate = 100*(negError.size()/posTest.size()); -// System.out.println("test set errors pos: " + tmp2); -// System.out.println("test set errors neg: " + tmp3); - double accuracy = 100*((double)(posCorrect.size()+negCorrect.size())/(posTest.size()+negTest.size())); + double precision = 100 * (double) posCorrect.size() / (posCorrect.size() + negError.size()); + double recall = 100 * (double) posCorrect.size() / (posCorrect.size() + posError.size()); + double fmeasure = 2 * (precision * recall) / (precision + recall); - System.out.println(" accuracy: " + df.format(accuracy)); + paraCriterionStat.addNumber(accuracy); + System.out.println(" hypothesis: " + concept.toManchesterSyntaxString(baseURI, null)); + System.out.println(" accuracy: " + df.format(accuracy) + "%"); + System.out.println(" precision: " + df.format(precision) + "%"); + System.out.println(" recall: " + df.format(recall) + "%"); + System.out.println(" F measure: " + df.format(fmeasure) + "%"); + + if(verbose) { + System.out.println(" false positives (neg. examples classified as pos.): " + formatIndividualSet(posError, baseURI)); + System.out.println(" false negatives (pos. examples classified as neg.): " + formatIndividualSet(negError, baseURI)); + } + // free memory rs.releaseKB(); cm.freeAllComponents(); } + paraStats.put(currParaValue, paraCriterionStat); + } - } - - /* - - // calculate splits using CV class - int[] splitsPos = CrossValidation.calculateSplits(posExamples.size(), outerFolds); - int[] splitsNeg = CrossValidation.calculateSplits(negExamples.size(), outerFolds); - - // the training and test sets used later on -// List<List<Individual>> trainingSetsPos = new LinkedList<List<Individual>>(); -// List<List<Individual>> trainingSetsNeg = new LinkedList<List<Individual>>(); -// List<List<Individual>> testSetsPos = new LinkedList<List<Individual>>(); -// List<List<Individual>> testSetsNeg = new LinkedList<List<Individual>>(); - - // calculating training and test sets for outer folds - for(int i=0; i<outerFolds; i++) { + // decide for the best parameter + System.out.println(" Summary over parameter values:"); + int bestPara = startValue; + double bestValue = Double.NEGATIVE_INFINITY; + for(Entry<Integer,Stat> entry : paraStats.entrySet()) { + int para = entry.getKey(); + Stat stat = entry.getValue(); + System.out.println(" value " + para + ": " + stat.prettyPrint("%")); + if(stat.getMean() > bestValue) { + bestPara = para; + bestValue = stat.getMean(); + } + } + System.out.println(" selected " + bestPara + " as best parameter value (criterion value " + df.format(bestValue) + "%)"); + System.out.println(" Learn on Outer fold:"); + // start a learning process with this parameter and evaluate it on the outer fold + start = new Start(confFile); + LearningProblem lpOut = start.getLearningProblem(); + cm.applyConfigEntry(lpOut, "positiveExamples", Datastructures.individualListToStringSet(posLists.get(currOuterFold).getTrainList())); + cm.applyConfigEntry(lpOut, "negativeExamples", Datastructures.individualListToStringSet(negLists.get(currOuterFold).getTrainList())); + LearningAlgorithm laOut = start.getLearningAlgorithm(); + cm.applyConfigEntry(laOut, parameter, (double)bestPara); + lpOut.init(); + laOut.init(); + laOut.start(); - // sets for positive examples - int posFromIndex = (i==0) ? 0 : splitsPos[i-1]; - int posToIndex = splitsPos[i]; - List<Individual> testPos = posExamples.subList(posFromIndex, posToIndex); - List<Individual> trainPos = new LinkedList<Individual>(posExamples); - trainPos.removeAll(testPos); - - // sets for negative examples - int negFromIndex = (i==0) ? 0 : splitsNeg[i-1]; - int negToIndex = splitsNeg[i]; - List<Individual> testNeg = posExamples.subList(negFromIndex, negToIndex); - List<Individual> trainNeg = new LinkedList<Individual>(negExamples); - trainNeg.removeAll(testNeg); - - // split train folds - int[] innerSplitPos = CrossValidation.calculateSplits(trainPos.size(), innerFolds); - int[] innerSplitNeg = CrossValidation.calculateSplits(trainNeg.size(), innerFolds); + // evaluate learned expression + Description concept = laOut.getCurrentlyBestDescription(); - for(int j=0; j<innerFolds; j++) { - - } + TreeSet<Individual> posTest = new TreeSet<Individual>(posLists.get(currOuterFold).getTestList()); + TreeSet<Individual> negTest = new TreeSet<Individual>(negLists.get(currOuterFold).getTestList()); - // add to list of folds -// trainingSetsPos.add(trainPos); -// trainingSetsNeg.add(trainNeg); -// testSetsPos.add(testPos); -// testSetsNeg.add(testNeg); - } + ReasonerComponent rs = start.getReasonerComponent(); + // true positive + Set<Individual> posCorrect = rs.hasType(concept, posTest); + // false negative + Set<Individual> posError = Helper.difference(posTest, posCorrect); + // false positive + Set<Individual> negError = rs.hasType(concept, negTest); + // true negative + Set<Individual> negCorrect = Helper.difference(negTest, negError); + + double accuracy = 100*((double)(posCorrect.size()+negCorrect.size())/(posTest.size()+negTest.size())); + double precision = 100 * (double) posCorrect.size() / (posCorrect.size() + negError.size()); + double recall = 100 * (double) posCorrect.size() / (posCorrect.size() + posError.size()); + double fmeasure = 2 * (precision * recall) / (precision + recall); + + System.out.println(" hypothesis: " + concept.toManchesterSyntaxString(baseURI, null)); + System.out.println(" accuracy: " + df.format(accuracy) + "%"); + System.out.println(" precision: " + df.format(precision) + "%"); + System.out.println(" recall: " + df.format(recall) + "%"); + System.out.println(" F measure: " + df.format(fmeasure) + "%"); + + if(verbose) { + System.out.println(" false positives (neg. examples classified as pos.): " + formatIndividualSet(posError, baseURI)); + System.out.println(" false negatives (pos. examples classified as neg.): " + formatIndividualSet(negError, baseURI)); + } + + // update overall statistics + accOverall.addNumber(accuracy); + fOverall.addNumber(fmeasure); + recallOverall.addNumber(recall); + precisionOverall.addNumber(precision); + + // free memory + rs.releaseKB(); + cm.freeAllComponents(); + } - */ + // overall statistics + System.out.println(); + System.out.println("*******************"); + System.out.println("* Overall Results *"); + System.out.println("*******************"); + System.out.println("accuracy: " + accOverall.prettyPrint("%")); + System.out.println("F measure: " + fOverall.prettyPrint("%")); + System.out.println("precision: " + precisionOverall.prettyPrint("%")); + System.out.println("recall: " + recallOverall.prettyPrint("%")); } @@ -302,4 +380,17 @@ } return ret; } + + private static String formatIndividualSet(Set<Individual> inds, String baseURI) { + String ret = ""; + int i=0; + for(Individual ind : inds) { + ret += ind.toManchesterSyntaxString(baseURI, null) + " "; + i++; + if(i==20) { + break; + } + } + return ret; + } } Modified: trunk/src/dl-learner/org/dllearner/utilities/datastructures/Datastructures.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/Datastructures.java 2009-10-05 10:20:13 UTC (rev 1878) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/Datastructures.java 2009-10-05 11:09:22 UTC (rev 1879) @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.Iterator; +import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -107,4 +108,12 @@ } return ret; } + + public static Set<String> individualListToStringSet(List<Individual> individuals) { + Set<String> ret = new TreeSet<String>(); + for(Individual ind : individuals) { + ret.add(ind.toString()); + } + return ret; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2009-10-05 10:20:21
|
Revision: 1878 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1878&view=rev Author: kurzum Date: 2009-10-05 10:20:13 +0000 (Mon, 05 Oct 2009) Log Message: ----------- fix for Invalid URIs cause the learn-Algorithm to break on Extraction - ID: 2872207 invalid Classes or values of Objectproperties are ignored, a warning is issued Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Info.java trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2009-10-04 11:54:44 UTC (rev 1877) +++ trunk/src/dl-learner/org/dllearner/Info.java 2009-10-05 10:20:13 UTC (rev 1878) @@ -1,8 +1,8 @@ - // File is updated automatically when a new version is created - package org.dllearner; +// File is updated automatically when a new version is created +package org.dllearner; - public class Info { - public static final String build = "2009-09-23"; - } - \ No newline at end of file +public class Info { + public static final String build = "2009-09-30"; +} + \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2009-10-04 11:54:44 UTC (rev 1877) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/InstanceNode.java 2009-10-05 10:20:13 UTC (rev 1878) @@ -19,6 +19,7 @@ */ package org.dllearner.kb.extraction; +import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.SortedSet; @@ -82,11 +83,20 @@ return newNodes; } + /** + * estimates the type of the retrieved tuple + * @param tuple + * @return + */ public Node processTuple( RDFNodeTuple tuple) { + try { + + //Literal nodes if(tuple.b.isLiteral()) { datatypeProperties.add(new DatatypePropertyNode(tuple.a.toString(), this, new LiteralNode(tuple.b) )); return null; + //Blank nodes }else if(tuple.b.isAnon()){ @SuppressWarnings("unused") RDFBlankNode n = (RDFBlankNode) tuple.b; @@ -101,11 +111,27 @@ // basically : if p is rdf:type then o is a class // else it is an instance + // Class Node }else if (tuple.a.toString().equals(OWLVocabulary.RDF_TYPE)) { + try{ + URI.create(tuple.b.toString()); + }catch (Exception e) { + logger.warn("uri "+tuple.b.toString()+" is not a valid uri for a class, ignoring"); + return null; + } + ClassNode tmp = new ClassNode(tuple.b.toString()); classes.add(tmp); return tmp; + // instance node } else { + + try{ + URI.create(tuple.b.toString()); + }catch (Exception e) { + logger.warn("uri "+tuple.b.toString()+" for objectproperty: "+tuple.a.toString() +" is not valid, ignoring"); + return null; + } InstanceNode tmp = new InstanceNode(tuple.b.toString()); objectProperties.add(new ObjectPropertyNode(tuple.a.toString(), this, tmp)); return tmp; Modified: trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2009-10-04 11:54:44 UTC (rev 1877) +++ trunk/src/dl-learner/org/dllearner/kb/extraction/Node.java 2009-10-05 10:20:13 UTC (rev 1878) @@ -95,6 +95,7 @@ return uri; } + public URI getURI() { return URI.create(uri); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-10-04 11:55:00
|
Revision: 1877 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1877&view=rev Author: lorenz_b Date: 2009-10-04 11:54:44 +0000 (Sun, 04 Oct 2009) Log Message: ----------- continued auto learning mode changed some wizard logic Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java trunk/src/dl-learner/org/dllearner/tools/ore/LearningManagerListener.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassesTableModel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTableModel.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningManager.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -0,0 +1,96 @@ +package org.dllearner.tools.ore; + +import java.util.ArrayList; +import java.util.List; + +import org.dllearner.learningproblems.EvaluatedDescriptionClass; + +public class LearningManager { + + private static LearningManager instance; + + private List<LearningManagerListener> listeners; + + public static final int AUTO_LEARN_MODE = 0; + public static final int MANUAL_LEARN_MODE = 1; + + private int learnMode = 0; + + private List<EvaluatedDescriptionClass> newDescriptions; + + private int currentDescriptionIndex = 0; + + public static LearningManager getInstance(){ + if(instance == null){ + instance = new LearningManager(); + } + return instance; + } + + public LearningManager(){ + listeners = new ArrayList<LearningManagerListener>(); + } + + public void setLearningMode(int learningMode){ + this.learnMode = learningMode; + } + + public int getLearningMode(){ + return learnMode; + } + + public List<EvaluatedDescriptionClass> getNewDescriptions() { + return newDescriptions; + } + + public void setNewDescriptions(List<EvaluatedDescriptionClass> newDescriptions) { + this.newDescriptions = newDescriptions; + currentDescriptionIndex = 0; + fireNewDescriptionsAdded(newDescriptions); + setNextDescription(); + } + + public int getCurrentDescriptionIndex() { + return currentDescriptionIndex; + } + + public void setCurrentDescriptionIndex(int currentDescriptionIndex) { + this.currentDescriptionIndex = currentDescriptionIndex; + } + + public void setNextDescription(){ + OREManager.getInstance().setNewClassDescription(newDescriptions.get(currentDescriptionIndex)); + fireNewDescriptionSelected(currentDescriptionIndex); + currentDescriptionIndex++; + if(currentDescriptionIndex >= newDescriptions.size()){ + fireNoDescriptionsLeft(); + } + } + + public boolean addListener(LearningManagerListener listener) { + return listeners.add(listener); + } + + public boolean removeListener(LearningManagerListener listener) { + return listeners.remove(listener); + } + + public void fireNewDescriptionsAdded(List<EvaluatedDescriptionClass> descriptions){ + for(LearningManagerListener listener : listeners){ + listener.newDescriptionsAdded(descriptions); + } + } + + public void fireNoDescriptionsLeft(){ + for(LearningManagerListener listener : listeners){ + listener.noDescriptionsLeft(); + } + } + + public void fireNewDescriptionSelected(int index){ + for(LearningManagerListener listener : listeners){ + listener.newDescriptionSelected(index); + } + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/LearningManagerListener.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/LearningManagerListener.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/LearningManagerListener.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -0,0 +1,13 @@ +package org.dllearner.tools.ore; + +import java.util.List; + +import org.dllearner.learningproblems.EvaluatedDescriptionClass; + +public interface LearningManagerListener { + + public abstract void newDescriptionSelected(int index); + public abstract void noDescriptionsLeft(); + public abstract void newDescriptionsAdded(List<EvaluatedDescriptionClass> descriptions); + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -66,12 +66,6 @@ private double threshold; private int minInstanceCount; - public static final int AUTO_LEARN_MODE = 0; - public static final int MANUAL_LEARN_MODE = 1; - - private int learnMode = 0; - - private List<Description> newDescriptions; private List<OREManagerListener> listeners; @@ -288,14 +282,6 @@ return minInstanceCount; } - public void setLearningMode(int mode){ - learnMode = mode; - } - - public int getLearningMode(){ - return learnMode; - } - public void init(){ this.setLearningProblem(); @@ -328,14 +314,6 @@ public CELOE getLa() { return la; } - - public void setNewDescriptions(List<Description> descriptions){ - newDescriptions = descriptions; - } - - public List<Description> getNewDescriptions(){ - return newDescriptions; - } /** * Retrieves description parts that might cause inconsistency - for negative examples only. Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTable.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -0,0 +1,64 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Component; +import java.awt.event.MouseEvent; + +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.table.TableCellRenderer; + +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.jdesktop.swingx.JXTable; + +public class MarkableClassExpressionsTable extends JXTable{ + /** + * + */ + private static final long serialVersionUID = 4193878042914394758L; + private ImageIcon icon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/untoggled.gif"); + + public MarkableClassExpressionsTable(){ + super(new MarkableClassExpressionsTableModel()); + getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); + getColumn(0).setMaxWidth(30); + setTableHeader(null); + setBorder(null); + setShowVerticalLines(false); + setShowHorizontalLines(false); + setRowSelectionAllowed(false); + setColumnSelectionAllowed(false); + setCellSelectionEnabled(false); + getColumn(0).setCellRenderer(new TableCellRenderer() { + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, + int row, int column) { + if(value.equals(">")){ + return new JLabel(icon); + } else { + return new JLabel(""); + } + } + }); + } + + @Override + public String getToolTipText(MouseEvent e){ + String tip = null; + java.awt.Point p = e.getPoint(); + int rowIndex = rowAtPoint(p); + if(rowIndex != -1){ + tip = getValueAt(rowIndex, 1).toString(); + + } else { + tip = super.getToolTipText(e); + } + return tip; + } + + public void clear(){ + ((MarkableClassExpressionsTableModel)getModel()).clear(); + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassExpressionsTableModel.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -0,0 +1,86 @@ +package org.dllearner.tools.ore.ui; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.LearningManager; +import org.dllearner.tools.ore.LearningManagerListener; + +public class MarkableClassExpressionsTableModel extends AbstractTableModel implements LearningManagerListener{ + /** + * + */ + private static final long serialVersionUID = 5773843275446469889L; + + private List<EvaluatedDescriptionClass> descriptions; + private int selectedRowIndex = 0; + + public MarkableClassExpressionsTableModel(){ + descriptions = new ArrayList<EvaluatedDescriptionClass>(); + LearningManager.getInstance().addListener(this); + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public int getRowCount() { + return descriptions.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + if(rowIndex == selectedRowIndex){ + return ">"; + } else { + return ""; + } + } else { + return descriptions.get(rowIndex).getDescription(); + } + } + + public void clear(){ + descriptions.clear(); + fireTableDataChanged(); + } + + private void addDescriptions(List<EvaluatedDescriptionClass> descriptions){ + this.descriptions.clear(); + this.descriptions.addAll(descriptions); + fireTableDataChanged(); + } + + public EvaluatedDescriptionClass getSelectedDescription(int rowIndex){ + return descriptions.get(rowIndex); + } + + public void setSelectedDescription(int rowIndex){ + int oldRowIndex = selectedRowIndex; + selectedRowIndex = rowIndex; + fireTableRowsUpdated(oldRowIndex, selectedRowIndex); + } + + @Override + public void newDescriptionSelected(int index) { + setSelectedDescription(index); + + } + + @Override + public void noDescriptionsLeft() { + // TODO Auto-generated method stub + + } + + @Override + public void newDescriptionsAdded(List<EvaluatedDescriptionClass> descriptions) { + addDescriptions(descriptions); + } +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassesTable.java (from rev 1876, trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTable.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassesTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassesTable.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -0,0 +1,78 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Component; +import java.awt.event.MouseEvent; +import java.util.Set; + +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.table.TableCellRenderer; + +import org.dllearner.core.owl.NamedClass; +import org.jdesktop.swingx.JXTable; + +public class MarkableClassesTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 4193878042914394758L; + private ImageIcon icon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/untoggled.gif"); + + public MarkableClassesTable(){ + super(new MarkableClassesTableModel()); + getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); + getColumn(0).setMaxWidth(30); + setTableHeader(null); + setBorder(null); + setShowVerticalLines(false); + setShowHorizontalLines(false); + setRowSelectionAllowed(false); + setColumnSelectionAllowed(false); + setCellSelectionEnabled(false); + getColumn(0).setCellRenderer(new TableCellRenderer() { + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, + int row, int column) { + if(value.equals(">")){ + return new JLabel(icon); + } else { + return new JLabel(""); + } + } + }); + } + + @Override + public String getToolTipText(MouseEvent e){ + String tip = null; + java.awt.Point p = e.getPoint(); + int rowIndex = rowAtPoint(p); + if(rowIndex != -1){ + tip = getValueAt(rowIndex, 1).toString(); + + } else { + tip = super.getToolTipText(e); + } + return tip; + } + + public void addClasses(Set<NamedClass> classes){ + ((MarkableClassesTableModel)getModel()).addClasses(classes); + } + + public NamedClass getSelectedValue(){ + return ((MarkableClassesTableModel)getModel()).getSelectedValue(getSelectedRow()); + } + + public void clear(){ + ((MarkableClassesTableModel)getModel()).clear(); + } + + public void setSelectedClass(int rowIndex){ + ((MarkableClassesTableModel)getModel()).setSelectedClass(rowIndex); + } + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassesTableModel.java (from rev 1876, trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTableModel.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassesTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableClassesTableModel.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -0,0 +1,69 @@ +package org.dllearner.tools.ore.ui; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import javax.swing.table.AbstractTableModel; + +import org.dllearner.core.owl.NamedClass; + +public class MarkableClassesTableModel extends AbstractTableModel { + + /** + * + */ + private static final long serialVersionUID = 5773843275446469889L; + + private List<NamedClass> classes; + private int selectedRowIndex = 0; + + public MarkableClassesTableModel(){ + classes = new ArrayList<NamedClass>(); + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public int getRowCount() { + return classes.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + if(rowIndex == selectedRowIndex){ + return ">"; + } else { + return ""; + } + } else { + return classes.get(rowIndex); + } + } + + public void clear(){ + classes.clear(); + fireTableDataChanged(); + } + + public void addClasses(Set<NamedClass> classes){ + this.classes.clear(); + this.classes.addAll(classes); + fireTableDataChanged(); + } + + public NamedClass getSelectedValue(int rowIndex){ + return classes.get(rowIndex); + } + + public void setSelectedClass(int rowIndex){ + int oldRowIndex = selectedRowIndex; + selectedRowIndex = rowIndex; + fireTableRowsUpdated(oldRowIndex, selectedRowIndex); + } + +} Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTable.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTable.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -1,78 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.Component; -import java.awt.event.MouseEvent; -import java.util.Set; - -import javax.swing.ImageIcon; -import javax.swing.JLabel; -import javax.swing.JTable; -import javax.swing.table.TableCellRenderer; - -import org.dllearner.core.owl.NamedClass; -import org.jdesktop.swingx.JXTable; - -public class MarkableTable extends JXTable { - - /** - * - */ - private static final long serialVersionUID = 4193878042914394758L; - private ImageIcon icon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/untoggled.gif"); - - public MarkableTable(){ - super(new MarkableTableModel()); - getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); - getColumn(0).setMaxWidth(30); - setTableHeader(null); - setBorder(null); - setShowVerticalLines(false); - setShowHorizontalLines(false); - setRowSelectionAllowed(false); - setColumnSelectionAllowed(false); - setCellSelectionEnabled(false); - getColumn(0).setCellRenderer(new TableCellRenderer() { - - @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, - int row, int column) { - if(value.equals(">")){ - return new JLabel(icon); - } else { - return new JLabel(""); - } - } - }); - } - - @Override - public String getToolTipText(MouseEvent e){ - String tip = null; - java.awt.Point p = e.getPoint(); - int rowIndex = rowAtPoint(p); - if(rowIndex != -1){ - tip = getValueAt(rowIndex, 1).toString(); - - } else { - tip = super.getToolTipText(e); - } - return tip; - } - - public void addClasses(Set<NamedClass> classes){ - ((MarkableTableModel)getModel()).addClasses(classes); - } - - public NamedClass getSelectedValue(){ - return ((MarkableTableModel)getModel()).getSelectedValue(getSelectedRow()); - } - - public void clear(){ - ((MarkableTableModel)getModel()).clear(); - } - - public void setSelectedClass(int rowIndex){ - ((MarkableTableModel)getModel()).setSelectedClass(rowIndex); - } - -} Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTableModel.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTableModel.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -1,69 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import javax.swing.table.AbstractTableModel; - -import org.dllearner.core.owl.NamedClass; - -public class MarkableTableModel extends AbstractTableModel { - - /** - * - */ - private static final long serialVersionUID = 5773843275446469889L; - - private List<NamedClass> classes; - private int selectedRowIndex = 0; - - public MarkableTableModel(){ - classes = new ArrayList<NamedClass>(); - } - - @Override - public int getColumnCount() { - return 2; - } - - @Override - public int getRowCount() { - return classes.size(); - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - if(columnIndex == 0){ - if(rowIndex == selectedRowIndex){ - return ">"; - } else { - return ""; - } - } else { - return classes.get(rowIndex); - } - } - - public void clear(){ - classes.clear(); - fireTableDataChanged(); - } - - public void addClasses(Set<NamedClass> classes){ - this.classes.clear(); - this.classes.addAll(classes); - fireTableDataChanged(); - } - - public NamedClass getSelectedValue(int rowIndex){ - return classes.get(rowIndex); - } - - public void setSelectedClass(int rowIndex){ - int oldRowIndex = selectedRowIndex; - selectedRowIndex = rowIndex; - fireTableRowsUpdated(oldRowIndex, selectedRowIndex); - } - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTable.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTable.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -5,7 +5,6 @@ import javax.swing.ListSelectionModel; -import org.dllearner.core.owl.Description; import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.decorator.HighlighterFactory; @@ -64,7 +63,7 @@ return ((SelectableClassExpressionsTableModel)getModel()).getSelectedValue(getSelectedRow()); } - public List<Description> getSelecetdDescriptions(){ + public List<EvaluatedDescriptionClass> getSelectedDescriptions(){ return ((SelectableClassExpressionsTableModel)getModel()).getSelectedDescriptions(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -90,11 +90,13 @@ public void clear(){ resultList.clear(); + selectionList.clear(); fireTableDataChanged(); } public void addResults(List<EvaluatedDescriptionClass> resultList){ this.resultList.clear(); + this.selectionList.clear(); this.resultList.addAll(resultList); for(int i = 0; i < resultList.size(); i++){ selectionList.add(i, Boolean.FALSE); @@ -111,11 +113,11 @@ return resultList.indexOf(e); } - public List<Description> getSelectedDescriptions(){ - List<Description> selected = new ArrayList<Description>(); + public List<EvaluatedDescriptionClass> getSelectedDescriptions(){ + List<EvaluatedDescriptionClass> selected = new ArrayList<EvaluatedDescriptionClass>(); for(int i = 0; i < selectionList.size(); i++){ if(selectionList.get(i).equals(Boolean.TRUE)){ - selected.add(resultList.get(i).getDescription()); + selected.add(resultList.get(i)); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -22,9 +22,12 @@ import java.awt.event.ActionListener; +import java.util.List; import javax.swing.JOptionPane; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.ui.wizard.descriptors.AutoLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; @@ -167,20 +170,26 @@ learnDescriptor.resetPanel(); learnDescriptor.fillClassesTable(); } -// else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(LearningPanelDescriptor.IDENTIFIER)){ -// if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ -// nextPanelDescriptor = SavePanelDescriptor.IDENTIFIER; -// } else { -// nextPanelDescriptor = RepairPanelDescriptor.IDENTIFIER; -// RepairPanelDescriptor repair = ((RepairPanelDescriptor) model -// .getPanelHashMap().get(nextPanelDescriptor)); -// repair.refreshExampleLists(); -// } + else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(AutoLearnPanelDescriptor.IDENTIFIER)){ + AutoLearnPanelDescriptor descriptor = (AutoLearnPanelDescriptor)currentPanelDescriptor; + List<EvaluatedDescriptionClass> descriptions = descriptor.getSelectedDescriptions(); + if(!descriptions.isEmpty()){ + LearningManager.getInstance().setNewDescriptions(descriptions); + } + } + else if(nextPanelDescriptor.equals(RepairPanelDescriptor.IDENTIFIER)){ RepairPanelDescriptor repair = ((RepairPanelDescriptor) model .getPanelHashMap().get(nextPanelDescriptor)); - repair.refreshExampleLists(); + if(LearningManager.getInstance().getLearningMode() == LearningManager.AUTO_LEARN_MODE){ + repair.setManualPanel(false); + repair.fillExamplesLists(); + } else { + repair.setManualPanel(true); + repair.fillExamplesLists(); + } + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -18,9 +18,9 @@ import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; -import org.dllearner.core.owl.Description; import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; @@ -43,6 +43,9 @@ private EquivalentLearningTask equivalentLearningTask; private SuperClassLearningTask superLearningTask; + private Timer timer; + private LearningAlgorithm la; + private SwingWorker<Void, List<? extends EvaluatedDescription>> currentLearningTask; private int currentClassIndex = 0; @@ -65,7 +68,6 @@ if(getSelectedDescriptions().isEmpty()){ return SavePanelDescriptor.IDENTIFIER; } else { - OREManager.getInstance().setNewDescriptions(getSelectedDescriptions()); return RepairPanelDescriptor.IDENTIFIER; } @@ -90,15 +92,17 @@ TaskManager.getInstance().getStatusBar().setMessage("Learning equivalent class expressions..."); getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); equivalentLearningTask = new EquivalentLearningTask(); + currentLearningTask = equivalentLearningTask; equivalentLearningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); equivalentLearningTask.execute(); } - public void learnSubClassExpressions(){ + public void learnSuperClassExpressions(){ TaskManager.getInstance().getStatusBar().setMessage("Learning superclass expressions..."); TaskManager.getInstance().getStatusBar().setProgress(0); getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); superLearningTask = new SuperClassLearningTask(); + currentLearningTask = superLearningTask; superLearningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); superLearningTask.execute(); } @@ -111,7 +115,7 @@ currentClassIndex++; } - public List<Description> getSelectedDescriptions(){ + public List<EvaluatedDescriptionClass> getSelectedDescriptions(){ return autoLearnPanel.getSelectedDescriptions(); } @@ -224,7 +228,9 @@ if(result.isEmpty()){ EvaluatedDescriptionClass best = (EvaluatedDescriptionClass)la.getCurrentlyBestEvaluatedDescription(); } - learnSubClassExpressions(); + + learnSuperClassExpressions(); + } @Override @@ -248,7 +254,7 @@ private final double threshold = OREManager.getInstance().getThreshold(); @Override - public Void doInBackground() { + public Void doInBackground() {System.out.println("Learning super class for " + OREManager.getInstance().getCurrentClass2Learn()); OREManager.getInstance().setLearningType("superClass"); OREManager.getInstance().setLearningProblem(); OREManager.getInstance().setLearningAlgorithm(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -39,6 +39,7 @@ import javax.swing.event.ListSelectionListener; import org.dllearner.core.owl.NamedClass; +import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.OREManagerListener; import org.dllearner.tools.ore.TaskManager; @@ -209,8 +210,10 @@ public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("auto")){ classChoosePanel.setAutoLearningPanel(true); + LearningManager.getInstance().setLearningMode(LearningManager.AUTO_LEARN_MODE); } else { classChoosePanel.setAutoLearningPanel(false); + LearningManager.getInstance().setLearningMode(LearningManager.MANUAL_LEARN_MODE); retrieveClasses(); } setNextButtonAccordingToConceptSelected(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -25,6 +25,7 @@ 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.JButton; @@ -32,6 +33,9 @@ import javax.swing.event.ListSelectionListener; import org.dllearner.core.owl.Individual; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.LearningManager; +import org.dllearner.tools.ore.LearningManagerListener; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.OntologyModifier; import org.dllearner.tools.ore.ui.RepairDialog; @@ -42,11 +46,11 @@ /** - * Wizard panel descriptor where it is possible torepair wrong examples. + * Wizard panel descriptor where it is possible to repair wrong examples. * @author Lorenz Buehmann * */ -public class RepairPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener, MouseListener{ +public class RepairPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener, MouseListener, LearningManagerListener{ public static final String IDENTIFIER = "REPAIR_PANEL"; public static final String INFORMATION = "In this panel all positive and negative examples, that cause failures are shown in the list above. " @@ -66,11 +70,12 @@ repairPanel.addSelectionListeners(this); repairPanel.addMouseListeners(this); + LearningManager.getInstance().addListener(this); + setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(repairPanel); ontologyChanges = new HashSet<OWLOntologyChange>(); - } @Override @@ -80,7 +85,12 @@ @Override public Object getBackPanelDescriptor() { - return ManualLearnPanelDescriptor.IDENTIFIER; + if(LearningManager.getInstance().getLearningMode() == LearningManager.MANUAL_LEARN_MODE){ + return ManualLearnPanelDescriptor.IDENTIFIER; + } else { + return AutoLearnPanelDescriptor.IDENTIFIER; + } + } @Override @@ -91,63 +101,68 @@ /** * Adds the wrong negative and positive examples to the lists. */ - public void refreshExampleLists(){ - + public void fillExamplesLists(){ repairPanel.getPosFailureTable().addIndividuals(OREManager.getInstance().getPositiveFailureExamples()); repairPanel.getNegFailureTable().addIndividuals(OREManager.getInstance().getNegativeFailureExamples()); - } + } + + public void setManualPanel(boolean value){ + repairPanel.setManualStyle(value); + } - /** * Method to control actions by button pressed. */ public void actionPerformed(ActionEvent event) { - modi = OREManager.getInstance().getModifier(); - String actionType = ((JButton) event.getSource()).getParent().getName(); - if(actionType.equals("negative")){ - Individual ind = repairPanel.getNegFailureTable().getSelectedIndividual(); - if(event.getActionCommand().equals("negRepair")){ - RepairDialog negDialog = new RepairDialog(ind, getWizard().getDialog(), "neg"); - int returncode = negDialog.showDialog(); + if(event.getActionCommand().equals("next")){ + LearningManager.getInstance().setNextDescription(); + } else { + modi = OREManager.getInstance().getModifier(); + String actionType = ((JButton) event.getSource()).getParent().getName(); + if(actionType.equals("negative")){ + Individual ind = repairPanel.getNegFailureTable().getSelectedIndividual(); + if(event.getActionCommand().equals("negRepair")){ + RepairDialog negDialog = new RepairDialog(ind, getWizard().getDialog(), "neg"); + int returncode = negDialog.showDialog(); + if(returncode == 2){ + ontologyChanges.addAll(negDialog.getAllChanges()); + } else if(returncode == 3){ + ontologyChanges.addAll(negDialog.getAllChanges()); + repairPanel.getNegFailureTable().removeIndividual(ind); + } + } else if(event.getActionCommand().equals("negAdd")){ + ontologyChanges.addAll(modi.addClassAssertion(ind, OREManager.getInstance().getCurrentClass2Learn())); + repairPanel.getNegFailureTable().removeIndividual(ind); + + } else if(event.getActionCommand().equals("negDelete")){ + ontologyChanges.addAll(modi.deleteIndividual(ind)); + repairPanel.getNegFailureTable().removeIndividual(ind); + + } + } else if(actionType.equals("positive")){ + Individual ind = repairPanel.getPosFailureTable().getSelectedIndividual(); + if(event.getActionCommand().equals("posRepair")){ + RepairDialog posDialog = new RepairDialog(ind, getWizard().getDialog(), "pos"); + int returncode = posDialog.showDialog(); if(returncode == 2){ - ontologyChanges.addAll(negDialog.getAllChanges()); + ontologyChanges.addAll(posDialog.getAllChanges()); } else if(returncode == 3){ - ontologyChanges.addAll(negDialog.getAllChanges()); - repairPanel.getNegFailureTable().removeIndividual(ind); + ontologyChanges.addAll(posDialog.getAllChanges()); + repairPanel.getPosFailureTable().removeIndividual(ind); } - } else if(event.getActionCommand().equals("negAdd")){ + } else if(event.getActionCommand().equals("posRemove")){ ontologyChanges.addAll(modi.addClassAssertion(ind, OREManager.getInstance().getCurrentClass2Learn())); - repairPanel.getNegFailureTable().removeIndividual(ind); + repairPanel.getPosFailureTable().removeIndividual(ind); - } else if(event.getActionCommand().equals("negDelete")){ + } else if(event.getActionCommand().equals("posDelete")){ ontologyChanges.addAll(modi.deleteIndividual(ind)); - repairPanel.getNegFailureTable().removeIndividual(ind); - - } - } else if(actionType.equals("positive")){ - Individual ind = repairPanel.getPosFailureTable().getSelectedIndividual(); - if(event.getActionCommand().equals("posRepair")){ - RepairDialog posDialog = new RepairDialog(ind, getWizard().getDialog(), "pos"); - int returncode = posDialog.showDialog(); - if(returncode == 2){ - ontologyChanges.addAll(posDialog.getAllChanges()); - } else if(returncode == 3){ - ontologyChanges.addAll(posDialog.getAllChanges()); repairPanel.getPosFailureTable().removeIndividual(ind); + } - } else if(event.getActionCommand().equals("posRemove")){ - ontologyChanges.addAll(modi.addClassAssertion(ind, OREManager.getInstance().getCurrentClass2Learn())); - repairPanel.getPosFailureTable().removeIndividual(ind); - - } else if(event.getActionCommand().equals("posDelete")){ - ontologyChanges.addAll(modi.deleteIndividual(ind)); - repairPanel.getPosFailureTable().removeIndividual(ind); - - } + } } - } /** @@ -214,6 +229,24 @@ // TODO Auto-generated method stub } + + @Override + public void newDescriptionSelected(int index) { + fillExamplesLists(); + repairPanel.repaint(); + } + + @Override + public void noDescriptionsLeft() { + repairPanel.setNextButtonEnabled(false); + + } + + @Override + public void newDescriptionsAdded(List<EvaluatedDescriptionClass> descriptions) { + repairPanel.setNextButtonEnabled(true); + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -23,6 +23,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import org.dllearner.tools.ore.LearningManager; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.OntologyModifier; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; @@ -63,7 +64,7 @@ @Override public Object getBackPanelDescriptor() { - if(OREManager.getInstance().getLearningMode() == OREManager.MANUAL_LEARN_MODE){ + if(LearningManager.getInstance().getLearningMode() == LearningManager.MANUAL_LEARN_MODE){ if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ return ManualLearnPanelDescriptor.IDENTIFIER; } else { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -20,11 +20,11 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import org.dllearner.core.owl.Description; import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.ui.GraphicalCoveragePanel; -import org.dllearner.tools.ore.ui.MarkableTable; +import org.dllearner.tools.ore.ui.MarkableClassesTable; import org.dllearner.tools.ore.ui.SelectableClassExpressionsTable; public class AutoLearnPanel extends JPanel { @@ -35,7 +35,7 @@ private static final long serialVersionUID = -5204979906041331328L; // private ClassesTable classesTable; - private MarkableTable classesTable; + private MarkableClassesTable classesTable; private JPanel superPanel; private JPanel equivalentPanel; @@ -71,7 +71,7 @@ } private JComponent createClassesPanel(){ - classesTable = new MarkableTable(); + classesTable = new MarkableClassesTable(); classesTable.setBorder(null); JScrollPane classesScroll = new JScrollPane(classesTable); classesScroll.setBorder(new MatteBorder(null)); @@ -187,10 +187,10 @@ classesTable.clear(); } - public List<Description> getSelectedDescriptions(){ - List<Description> selected = new ArrayList<Description>(); - selected.addAll(equivalentClassResultsTable.getSelecetdDescriptions()); - selected.addAll(superClassResultsTable.getSelecetdDescriptions()); + public List<EvaluatedDescriptionClass> getSelectedDescriptions(){ + List<EvaluatedDescriptionClass> selected = new ArrayList<EvaluatedDescriptionClass>(); + selected.addAll(equivalentClassResultsTable.getSelectedDescriptions()); + selected.addAll(superClassResultsTable.getSelectedDescriptions()); return selected; } @@ -202,7 +202,7 @@ if (!e.getValueIsAdjusting() && equivalentClassResultsTable.getSelectedRow() >= 0){ EvaluatedDescriptionClass selectedClassExpression = equivalentClassResultsTable.getSelectedValue(); - + OREManager.getInstance().setNewClassDescription(selectedClassExpression); equivalentClassCoveragePanel.setNewClassDescription(selectedClassExpression); if(!selectedClassExpression.isConsistent()){ equivalentInconsistencyLabel.setText(INCONSISTENCY_WARNING); @@ -222,7 +222,7 @@ if (!e.getValueIsAdjusting() && superClassResultsTable.getSelectedRow() >= 0){ EvaluatedDescriptionClass selectedClassExpression = superClassResultsTable.getSelectedValue(); - + OREManager.getInstance().setNewClassDescription(selectedClassExpression); superClassCoveragePanel.setNewClassDescription(selectedClassExpression); if(!selectedClassExpression.isConsistent()){ superInconsistencyLabel.setText(INCONSISTENCY_WARNING); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java 2009-10-03 11:29:04 UTC (rev 1876) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/RepairPanel.java 2009-10-04 11:54:44 UTC (rev 1877) @@ -20,6 +20,7 @@ package org.dllearner.tools.ore.ui.wizard.panels; +import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; @@ -27,6 +28,7 @@ import java.awt.event.MouseListener; import javax.swing.JButton; +import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; @@ -34,6 +36,7 @@ import javax.swing.event.ListSelectionListener; import org.dllearner.tools.ore.ui.IndividualsTable; +import org.dllearner.tools.ore.ui.MarkableClassExpressionsTable; /** * JPanel for repairing action. @@ -44,40 +47,82 @@ private static final long serialVersionUID = -7411197973240429632L; - private JPanel posPanel; - private JScrollPane posScrollPane; private IndividualsTable posTable; private JButton posRepairButton; private JButton posDeleteButton; private JButton posRemoveButton; - private JPanel negPanel; - private JScrollPane negScrollPane; private IndividualsTable negTable; private JButton negRepairButton; private JButton negDeleteButton; private JButton negAddButton; - private GridBagConstraints c; + private JButton nextButton; + private MarkableClassExpressionsTable descriptionsTable; public RepairPanel() { - createUI(); + setLayout(new GridBagLayout()); + createAutoUI(); } - private void createUI(){ - setLayout(new GridBagLayout()); - c = new GridBagConstraints(); + private void createAutoUI(){ + GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; + c.gridx = 0; + c.gridy = 0; + c.gridwidth = GridBagConstraints.REMAINDER; + add(createDescriptionsPanel(), c); + + c.gridwidth = 1; + c.gridy = 1; + c.gridx = 0; c.weightx = 0.5; c.weighty = 0.5; - createPosPanel(); + add(createPosPanel(), c); c.gridx = 1; - createNegPanel(); + add(createNegPanel(), c); + + c.gridy = 2; + nextButton = new JButton("Next"); + nextButton.setActionCommand("next"); + add(nextButton, c); } - private void createPosPanel(){ - posPanel = new JPanel(); + private void createManualUI(){ + GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.BOTH; + c.gridx = 0; + c.gridy = 0; + c.gridwidth = GridBagConstraints.REMAINDER; + add(createDescriptionsPanel(), c); + + c.gridwidth = 1; + c.gridy = 1; + c.gridx = 0; + c.weightx = 0.5; + c.weighty = 0.5; + add(createPosPanel(), c); + c.gridx = 1; + add(createNegPanel(), c); + + c.gridy = 2; + nextButton = new JButton("Next"); + nextButton.setActionCommand("next"); +// add(nextButton, c); + } + + private JComponent createDescriptionsPanel(){ + JPanel panel = new JPanel(new BorderLayout()); + descriptionsTable = new MarkableClassExpressionsTable(); + JScrollPane scroll = new JScrollPane(descriptionsTable); + scroll.setBorder(null); + panel.add(scroll); + return panel; + } + + private JComponent createPosPanel(){ + JPanel posPanel = new JPanel(); posPanel.setName("positive"); posPanel.setLayout(new GridBagLayout()); posPanel.setBorder(new TitledBorder("Positive examples")); @@ -100,17 +145,16 @@ posPanel.add(buttonPanel, gbc); posTable = new IndividualsTable(); - posScrollPane = new JScrollPane(posTable); gbc.fill = GridBagConstraints.BOTH; gbc.weightx = 1; gbc.weighty = 1; - posPanel.add(posScrollPane, gbc); + posPanel.add(new JScrollPane(posTable), gbc); - add(posPanel, c); + return posPanel; } - private void createNegPanel(){ - negPanel = new JPanel(); + private JComponent createNegPanel(){ + JPanel negPanel = new JPanel(); negPanel.setName("negative"); negPanel.setLayout(new GridBagLayout()); negPanel.setBorder(new TitledBorder("Negative examples")); @@ -118,11 +162,10 @@ GridBagConstraints gbc = new GridBagConstraints(); negTable = new IndividualsTable(); - negScrollPane = new JScrollPane(negTable); gbc.fill = GridBagConstraints.BOTH; gbc.weightx = 1; gbc.weighty = 1; - negPanel.add(negScrollPane, gbc); + negPanel.add(new JScrollPane(negTable), gbc); JPanel buttonPanel = new JPanel(); buttonPanel.setName("negative"); @@ -142,7 +185,7 @@ gbc.anchor = GridBagConstraints.NORTH; negPanel.add(buttonPanel, gbc); - add(negPanel, c); + return negPanel; } /** @@ -161,6 +204,20 @@ return negTable; } + public void setNextButtonEnabled(boolean enabled){ + nextButton.setEnabled(enabled); + } + + public void setManualStyle(boolean value){ + removeAll(); + if(value){ + createManualUI(); + } else { + createAutoUI(); + } + repaint(); + } + /** * adds the list selection listener for lists. * @param l list selection listener @@ -178,9 +235,12 @@ posRemoveButton.addActionListener(aL); posDeleteButton.addActionListener(aL); posRepairButton.addActionListener(aL); + negAddButton.addActionListener(aL); negDeleteButton.addActionListener(aL); negRepairButton.addActionListener(aL); + + nextButton.addActionListener(aL); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-10-03 11:29:13
|
Revision: 1876 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1876&view=rev Author: lorenz_b Date: 2009-10-03 11:29:04 +0000 (Sat, 03 Oct 2009) Log Message: ----------- continued auto learning mode Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SyntacticRelevanceBasedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTableModel.java Modified: trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -254,6 +254,8 @@ // be in the search of the learning algorith, which leads to // unpredictable behaviour) Description d = ed.getDescription().clone(); + + //commented out because reasoner is called. leads in swing applications sometimes to exceptions // ConceptTransformation.replaceRange(d, reasoner); ed.setDescription(d); Modified: trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -199,7 +199,7 @@ ontology = manager.loadOntologyFromPhysicalURI(url .toURI()); } - + owlAPIOntologies.add(ontology); // imports includes the ontology itself Set<OWLOntology> imports = manager @@ -1466,7 +1466,7 @@ public OWLOntology getOWLAPIOntologies() { - return reasoner.getLoadedOntologies().iterator().next(); + return owlAPIOntologies.get(0); } /*public void setReasonerType(String type){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -2,7 +2,6 @@ import java.io.File; import java.net.MalformedURLException; -import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.util.Timer; @@ -15,15 +14,7 @@ import org.dllearner.kb.OWLFile; import org.dllearner.learningproblems.ClassLearningProblem; import org.dllearner.reasoning.PelletReasoner; -import org.semanticweb.owl.apibinding.OWLManager; -import org.semanticweb.owl.model.OWLClass; -import org.semanticweb.owl.model.OWLDataFactory; -import org.semanticweb.owl.model.OWLObjectAllRestriction; -import org.semanticweb.owl.model.OWLObjectProperty; -import org.semanticweb.owl.model.OWLObjectSomeRestriction; import org.semanticweb.owl.model.OWLOntologyCreationException; -import org.semanticweb.owl.model.OWLOntologyManager; -import org.semanticweb.owl.model.OWLSubClassAxiom; public class ConcurrencyBug { @@ -53,20 +44,8 @@ lp.getConfigurator().setClassToDescribe(classToDescribe); lp.init(); - String NS = "http://ns.softwiki.de/req/"; - OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); - OWLDataFactory factory = manager.getOWLDataFactory(); - OWLClass customerRequirement = factory.getOWLClass(URI.create(NS +"CustomerRequirement")); - OWLClass comment = factory.getOWLClass(URI.create(NS + "Comment")); - OWLObjectProperty idDefinedBy = factory.getOWLObjectProperty(URI.create(NS + "isDefinedBy")); - OWLObjectProperty defines = factory.getOWLObjectProperty(URI.create(NS + "defines")); - OWLObjectSomeRestriction some = factory.getOWLObjectSomeRestriction(defines, comment); - OWLObjectAllRestriction all = factory.getOWLObjectAllRestriction(idDefinedBy, some); - OWLSubClassAxiom sub = factory.getOWLSubClassAxiom(customerRequirement, all); -// System.out.println(reasoner.remainsSatisfiableImpl(sub)); - final CELOE la = cm.learningAlgorithm(CELOE.class, lp, reasoner); la.getConfigurator().setMaxExecutionTimeInSeconds(8); la.getConfigurator().setUseNegation(false); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -65,6 +65,13 @@ private int maxNrOfResults; private double threshold; private int minInstanceCount; + + public static final int AUTO_LEARN_MODE = 0; + public static final int MANUAL_LEARN_MODE = 1; + + private int learnMode = 0; + + private List<Description> newDescriptions; private List<OREManagerListener> listeners; @@ -281,6 +288,14 @@ return minInstanceCount; } + public void setLearningMode(int mode){ + learnMode = mode; + } + + public int getLearningMode(){ + return learnMode; + } + public void init(){ this.setLearningProblem(); @@ -313,6 +328,14 @@ public CELOE getLa() { return la; } + + public void setNewDescriptions(List<Description> descriptions){ + newDescriptions = descriptions; + } + + public List<Description> getNewDescriptions(){ + return newDescriptions; + } /** * Retrieves description parts that might cause inconsistency - for negative examples only. Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SyntacticRelevanceBasedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SyntacticRelevanceBasedExplanationGenerator.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/relevance/SyntacticRelevanceBasedExplanationGenerator.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -76,7 +76,7 @@ e.printStackTrace(); } logger.addAppender( fileAppender ); - logger.setLevel(Level.OFF); + logger.setLevel(Level.DEBUG); } @@ -587,26 +587,26 @@ - Timer t1 = new Timer("pellet"); - t1.start(); - PelletExplanation exp1 = new PelletExplanation(manager, Collections.singleton(ontology)); - exp1.getUnsatisfiableExplanations(cl); - t1.stop(); - Timer t3 = new Timer("module-based"); - t3.start(); - OWLOntology module = OntologyUtils.getOntologyFromAxioms(ModularityUtils.extractModule(ontology, cl.getSignature(), ModuleType.TOP_OF_BOT)); - System.out.println(module); - PelletExplanation exp2 = new PelletExplanation(manager, Collections.singleton(module)); - System.out.println(exp2.getUnsatisfiableExplanations(cl).size()); - t3.stop(); +// Timer t1 = new Timer("pellet"); +// t1.start(); +// PelletExplanation exp1 = new PelletExplanation(manager, Collections.singleton(ontology)); +// exp1.getUnsatisfiableExplanations(cl); +// t1.stop(); +// Timer t3 = new Timer("module-based"); +// t3.start(); +// OWLOntology module = OntologyUtils.getOntologyFromAxioms(ModularityUtils.extractModule(ontology, cl.getSignature(), ModuleType.TOP_OF_BOT)); +// System.out.println(module); +// PelletExplanation exp2 = new PelletExplanation(manager, Collections.singleton(module)); +// System.out.println("Module based explanationcount: " + exp2.getUnsatisfiableExplanations(cl)); +// t3.stop(); Timer t2 = new Timer("syntactic relevance"); t2.start(); Reasoner reasoner = new PelletReasonerFactory().createReasoner(manager); - reasoner.loadOntologies(Collections.singleton(ontology)); + reasoner.loadOntologies(Collections.singleton(example)); SyntacticRelevanceBasedExplanationGenerator exp3 = new SyntacticRelevanceBasedExplanationGenerator(reasoner, manager); - System.out.println(exp3.getUnsatisfiableExplanations(cl, Strategie.All_Just_Relevance).size()); + System.out.println(exp3.getUnsatisfiableExplanations(u, Strategie.All_Just_Relevance)); System.out.print("J = {"); // for(Set<OWLAxiom> explanation : expGen.getUnsatisfiableExplanations(cl, Strategie.All_Just_Relevance)){ @@ -619,7 +619,7 @@ // } System.out.print("}"); t2.stop(); - System.out.println(t1.getTotal() +"--" + t3.getTotal() + "--" + t2.getTotal()); +// System.out.println(t1.getTotal() +"--" + t3.getTotal() + "--" + t2.getTotal()); // Set<OWLAxiom> test = new HashSet<OWLAxiom>(); // OWLClass z = factory.getOWLClass(URI.create("z")); Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTable.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTable.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -1,66 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.Color; -import java.util.List; - -import javax.swing.ListSelectionModel; - -import org.dllearner.learningproblems.EvaluatedDescriptionClass; -import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.decorator.HighlighterFactory; - -public class EquivalentClassExpressionsTable extends JXTable { - - /** - * - */ - private static final long serialVersionUID = 486680925931781915L; - - private EvaluatedDescriptionClass old = null; - - public EquivalentClassExpressionsTable(){ - setBackground(Color.WHITE); - setHighlighters(HighlighterFactory.createAlternateStriping()); -// setAutoResizeMode(JTable.AUTO_RESIZE_OFF); - setModel(new EquivalentClassExpressionsTableModel()); - setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); - setColumnSizes(); - getColumn(0).setResizable(false); - getColumn(1).setResizable(false); - setGridColor(Color.LIGHT_GRAY); - } - - private void setColumnSizes(){ - getColumn(0).setMaxWidth(100); - getColumn(1).setPreferredWidth(430); - getColumn(2).setMaxWidth(30); - - } - - - - public void clear(){ - ((EquivalentClassExpressionsTableModel)getModel()).clear(); - } - - public void addResults(List<EvaluatedDescriptionClass> resultList){ - - if(getSelectedRow() >= 0){ - old = getSelectedValue(); - } - ((EquivalentClassExpressionsTableModel)getModel()).addResults(resultList); - if(old != null){ - int newRowIndex = ((EquivalentClassExpressionsTableModel)getModel()).getSelectionIndex(old); - if(newRowIndex >= 0){ - getSelectionModel().setSelectionInterval(newRowIndex, newRowIndex); - } - - } - } - - public EvaluatedDescriptionClass getSelectedValue(){ - return ((EquivalentClassExpressionsTableModel)getModel()).getSelectedValue(getSelectedRow()); - } - -} Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTableModel.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTableModel.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -1,114 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.table.AbstractTableModel; - -import org.dllearner.core.owl.Description; -import org.dllearner.learningproblems.EvaluatedDescriptionClass; - -public class EquivalentClassExpressionsTableModel extends AbstractTableModel { - - /** - * - */ - private static final long serialVersionUID = 8582947007601430481L; - - private List<EvaluatedDescriptionClass> resultList; - private DecimalFormat df; - private List<Boolean> selectionList; - - public EquivalentClassExpressionsTableModel(){ - super(); - resultList = new ArrayList<EvaluatedDescriptionClass>(); - selectionList = new ArrayList<Boolean>(); - df = new DecimalFormat("00%"); - } - - public EquivalentClassExpressionsTableModel(List<EvaluatedDescriptionClass> resultList){ - this.resultList = resultList; - } - - @Override - public int getColumnCount() { - return 3; - } - - @Override - public int getRowCount() { - return resultList.size(); - } - - @Override - public Object getValueAt(int rowIndex, int columnIndex) { - if(columnIndex == 0){ - return df.format(resultList.get(rowIndex).getAccuracy()); - } else if(columnIndex == 1){ - return resultList.get(rowIndex).getDescription(); - } else { - return selectionList.get(rowIndex); - } - } - - @Override - public void setValueAt(Object value, int rowIndex, int columnIndex) { - - selectionList.set(rowIndex, (Boolean)value); - - super.fireTableCellUpdated(rowIndex, columnIndex); - - } - - @Override - public Class<? extends Object> getColumnClass(int columnIndex){ - switch(columnIndex){ - case 0: return String.class; - case 1: return Description.class; - case 2: return Boolean.class; - } - return null; - } - - @Override - public String getColumnName(int column){ - switch(column){ - case 0: return "Accuracy"; - case 1: return "Class expression"; - } - return ""; - } - - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - if(columnIndex == 2){ - return true; - } - return false; - } - - public void clear(){ - resultList.clear(); - fireTableDataChanged(); - } - - public void addResults(List<EvaluatedDescriptionClass> resultList){ - this.resultList.clear(); - this.resultList.addAll(resultList); - for(int i = 0; i < resultList.size(); i++){ - selectionList.add(i, Boolean.FALSE); - } - - fireTableRowsUpdated(0, this.resultList.size()); - } - - public EvaluatedDescriptionClass getSelectedValue(int rowIndex){ - return resultList.get(rowIndex); - } - - public int getSelectionIndex(EvaluatedDescriptionClass e){ - return resultList.indexOf(e); - } - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -1,5 +1,7 @@ package org.dllearner.tools.ore.ui; +import java.awt.Component; import java.awt.Dimension; +import java.awt.Graphics; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; @@ -109,8 +111,24 @@ learnTypePanel.add(equivalentClassButton); learnTypePanel.add(superClassButton); HelpablePanel learnTypeHelpPanel = new HelpablePanel(learnTypePanel); - learnTypeHelpPanel.setBorder(new TitledBorder("Learning type")); - + TitledBorder border = new TitledBorder("LEarning type"){ + + /** + * + */ + private static final long serialVersionUID = 1878007899412644256L; + + @Override + public void paintBorder(Component c, Graphics g, int x, int y, + int width, int height) { + // TODO Auto-generated method stub + super.paintBorder(c, g, x, y, width, height); + } + + }; +// border.setTitleJustification(TitledBorder.ABOVE_BOTTOM); + border.setTitlePosition(TitledBorder.ABOVE_TOP); + learnTypeHelpPanel.setBorder(border); frame.add(learnTypeHelpPanel); @@ -119,4 +137,5 @@ frame.setVisible(true); } + } Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTable.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -0,0 +1,78 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Component; +import java.awt.event.MouseEvent; +import java.util.Set; + +import javax.swing.ImageIcon; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.table.TableCellRenderer; + +import org.dllearner.core.owl.NamedClass; +import org.jdesktop.swingx.JXTable; + +public class MarkableTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 4193878042914394758L; + private ImageIcon icon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/untoggled.gif"); + + public MarkableTable(){ + super(new MarkableTableModel()); + getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); + getColumn(0).setMaxWidth(30); + setTableHeader(null); + setBorder(null); + setShowVerticalLines(false); + setShowHorizontalLines(false); + setRowSelectionAllowed(false); + setColumnSelectionAllowed(false); + setCellSelectionEnabled(false); + getColumn(0).setCellRenderer(new TableCellRenderer() { + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, + int row, int column) { + if(value.equals(">")){ + return new JLabel(icon); + } else { + return new JLabel(""); + } + } + }); + } + + @Override + public String getToolTipText(MouseEvent e){ + String tip = null; + java.awt.Point p = e.getPoint(); + int rowIndex = rowAtPoint(p); + if(rowIndex != -1){ + tip = getValueAt(rowIndex, 1).toString(); + + } else { + tip = super.getToolTipText(e); + } + return tip; + } + + public void addClasses(Set<NamedClass> classes){ + ((MarkableTableModel)getModel()).addClasses(classes); + } + + public NamedClass getSelectedValue(){ + return ((MarkableTableModel)getModel()).getSelectedValue(getSelectedRow()); + } + + public void clear(){ + ((MarkableTableModel)getModel()).clear(); + } + + public void setSelectedClass(int rowIndex){ + ((MarkableTableModel)getModel()).setSelectedClass(rowIndex); + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MarkableTableModel.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -0,0 +1,69 @@ +package org.dllearner.tools.ore.ui; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import javax.swing.table.AbstractTableModel; + +import org.dllearner.core.owl.NamedClass; + +public class MarkableTableModel extends AbstractTableModel { + + /** + * + */ + private static final long serialVersionUID = 5773843275446469889L; + + private List<NamedClass> classes; + private int selectedRowIndex = 0; + + public MarkableTableModel(){ + classes = new ArrayList<NamedClass>(); + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public int getRowCount() { + return classes.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + if(rowIndex == selectedRowIndex){ + return ">"; + } else { + return ""; + } + } else { + return classes.get(rowIndex); + } + } + + public void clear(){ + classes.clear(); + fireTableDataChanged(); + } + + public void addClasses(Set<NamedClass> classes){ + this.classes.clear(); + this.classes.addAll(classes); + fireTableDataChanged(); + } + + public NamedClass getSelectedValue(int rowIndex){ + return classes.get(rowIndex); + } + + public void setSelectedClass(int rowIndex){ + int oldRowIndex = selectedRowIndex; + selectedRowIndex = rowIndex; + fireTableRowsUpdated(oldRowIndex, selectedRowIndex); + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MetricsPanel.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -4,11 +4,7 @@ import java.awt.Color; import java.awt.Font; import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; import javax.swing.BorderFactory; import javax.swing.JPanel; @@ -16,9 +12,9 @@ import javax.swing.JTable; import javax.swing.border.TitledBorder; +import org.dllearner.tools.ore.OREManager; import org.protege.editor.core.PropertyUtil; import org.protege.editor.core.ProtegeProperties; -import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.metrics.DLExpressivity; import org.semanticweb.owl.metrics.OWLMetric; import org.semanticweb.owl.metrics.OWLMetricManager; @@ -26,121 +22,100 @@ import org.semanticweb.owl.metrics.ReferencedDataPropertyCount; import org.semanticweb.owl.metrics.ReferencedIndividualCount; import org.semanticweb.owl.metrics.ReferencedObjectPropertyCount; -import org.semanticweb.owl.model.OWLAxiom; import org.semanticweb.owl.model.OWLOntology; -import org.semanticweb.owl.model.OWLOntologyChangeException; -import org.semanticweb.owl.model.OWLOntologyCreationException; import org.semanticweb.owl.model.OWLOntologyManager; - /** * Author: Matthew Horridge<br> * The University Of Manchester<br> * Bio-Health Informatics Group<br> - * Date: 29-Oct-2007<br><br> + * Date: 29-Oct-2007<br> + * <br> */ public class MetricsPanel extends JPanel { - /** + /** * */ private static final long serialVersionUID = -5827197898985671614L; - private Map<String, OWLMetricManager> metricManagerMap; + private OWLOntologyManager manager; - private Map<OWLMetricManager, MetricsTableModel> tableModelMap; + private OWLMetricManager metricManager; - - private OWLOntologyManager manager; + public MetricsPanel() { +// this.manager = OWLManager.createOWLOntologyManager(); +// initialiseOWLView(); + } + protected void initialiseOWLView() { + createBasicMetrics(); + createUI(); + } - public MetricsPanel() { - this.manager = OWLManager.createOWLOntologyManager(); - try { - manager.createOntology(Collections.<OWLAxiom>emptySet()); - - } catch (OWLOntologyCreationException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (OWLOntologyChangeException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - initialiseOWLView(); - } + private void createUI() { - protected void initialiseOWLView() { - metricManagerMap = new LinkedHashMap<String, OWLMetricManager>(); - tableModelMap = new HashMap<OWLMetricManager, MetricsTableModel>(); - createBasicMetrics(); - createUI(); - updateView(manager.getOntologies().iterator().next()); - for(OWLMetricManager man : metricManagerMap.values()) { - for(OWLMetric<?> m : man.getMetrics()) { - m.setImportsClosureUsed(true); - m.setOntology(manager.getOntologies().iterator().next()); - } - } - } + setLayout(new BorderLayout()); + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); - private void createUI() { - - setLayout(new BorderLayout()); - JPanel panel = new JPanel(); - panel.setLayout(new BorderLayout()); - for (String metricsSet : metricManagerMap.keySet()) { - MetricsTableModel tableModel = new MetricsTableModel(metricManagerMap.get(metricsSet)); - tableModelMap.put(metricManagerMap.get(metricsSet), tableModel); - final JTable table = new JTable(tableModel); - table.setGridColor(Color.LIGHT_GRAY); - table.setRowHeight(table.getRowHeight() + 4); - table.setShowGrid(true); - - table.getColumnModel().getColumn(1).setMaxWidth(150); - table.getColumnModel().setColumnMargin(2); - table.setFont(getFont().deriveFont(Font.BOLD, 12.0f)); - table.setForeground(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty(ProtegeProperties.PROPERTY_COLOR_KEY), - Color.GRAY)); + MetricsTableModel tableModel = new MetricsTableModel(metricManager); - final JPanel tablePanel = new JPanel(new BorderLayout()); - - tablePanel.add(table); - tablePanel.setFont(getFont().deriveFont(Font.BOLD, 12.0f)); -// tablePanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(2, 2, 14, 2), -// ComponentFactory.createTitledBorder(metricsSet))); - table.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); - panel.add(tablePanel); - } - JScrollPane sp = new JScrollPane(panel); - sp.setOpaque(false); - add(sp); - } + final JTable table = new JTable(tableModel); + table.setGridColor(Color.LIGHT_GRAY); + table.setRowHeight(table.getRowHeight() + 4); + table.setShowGrid(true); + table.getColumnModel().getColumn(1).setMaxWidth(150); + table.getColumnModel().setColumnMargin(2); + table.setFont(getFont().deriveFont(Font.BOLD, 12.0f)); + table.setForeground(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty( + ProtegeProperties.PROPERTY_COLOR_KEY), Color.GRAY)); + final JPanel tablePanel = new JPanel(new BorderLayout()); + tablePanel.add(table); + tablePanel.setFont(getFont().deriveFont(Font.BOLD, 12.0f)); + // tablePanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(2, + // 2, 14, 2), + // ComponentFactory.createTitledBorder(metricsSet))); + table.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); + panel.add(tablePanel); - private void createBasicMetrics() { - List<OWLMetric> metrics = new ArrayList<OWLMetric>(); - metrics.add(new ReferencedClassCount(manager)); - metrics.add(new ReferencedObjectPropertyCount(manager)); - metrics.add(new ReferencedDataPropertyCount(manager)); - metrics.add(new ReferencedIndividualCount(manager)); - metrics.add(new DLExpressivity(manager)); - OWLMetricManager metricManager = new OWLMetricManager(metrics); - metricManagerMap.put("Metrics", metricManager); - } + JScrollPane sp = new JScrollPane(panel); + sp.setOpaque(false); + add(sp); + } - public void updateView(OWLOntology activeOntology) { - for (OWLMetricManager man : metricManagerMap.values()) { - man.setOntology(activeOntology); - } - TitledBorder border = new TitledBorder(activeOntology.getURI().toString() + " successfully loaded"); - border.setTitleFont(getFont().deriveFont(Font.BOLD, 12.0f)); - border.setTitleColor(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty(ProtegeProperties.PROPERTY_COLOR_KEY), - Color.GRAY)); - setBorder(border); - repaint(); - } - + @SuppressWarnings("unchecked") + private void createBasicMetrics() { + List<OWLMetric> metrics = new ArrayList<OWLMetric>(); + metrics.add(new ReferencedClassCount(manager)); + metrics.add(new ReferencedObjectPropertyCount(manager)); + metrics.add(new ReferencedDataPropertyCount(manager)); + metrics.add(new ReferencedIndividualCount(manager)); + metrics.add(new DLExpressivity(manager)); + metricManager = new OWLMetricManager(metrics); + + } + + public void updateView(OWLOntology activeOntology) { + removeAll(); + manager = OREManager.getInstance().getReasoner().getOWLOntologyManager(); + createBasicMetrics(); + metricManager.setOntology(activeOntology); + for (OWLMetric<?> m : metricManager.getMetrics()) { + m.setImportsClosureUsed(true); + } + createUI(); + + TitledBorder border = new TitledBorder(activeOntology.getURI().toString() + " successfully loaded"); + border.setTitleFont(getFont().deriveFont(Font.BOLD, 12.0f)); + border.setTitleColor(PropertyUtil.getColor(ProtegeProperties.getInstance().getProperty( + ProtegeProperties.PROPERTY_COLOR_KEY), Color.GRAY)); + setBorder(border); + repaint(); + } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairPlanPanel.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -27,7 +27,7 @@ this.repMan = RepairManager.getInstance(OREManager.getInstance()); setLayout(new BorderLayout()); - add(new JLabel("Axioms"), BorderLayout.NORTH); + add(new JLabel("Repair plan"), BorderLayout.NORTH); JPanel buttonPanel = new JPanel(new FlowLayout(2)); add(buttonPanel, "South"); undoButton = new JButton(new AbstractAction("Undo") { Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTable.java (from rev 1869, trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTable.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTable.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -0,0 +1,71 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.util.List; + +import javax.swing.ListSelectionModel; + +import org.dllearner.core.owl.Description; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; + +public class SelectableClassExpressionsTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 486680925931781915L; + + private EvaluatedDescriptionClass old = null; + + public SelectableClassExpressionsTable(){ + setBackground(Color.WHITE); + setHighlighters(HighlighterFactory.createAlternateStriping()); +// setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + setModel(new SelectableClassExpressionsTableModel()); + setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); + setColumnSizes(); + getColumn(0).setResizable(false); + getColumn(1).setResizable(false); + setGridColor(Color.LIGHT_GRAY); + } + + private void setColumnSizes(){ + getColumn(0).setMaxWidth(95); +// getColumn(1).setPreferredWidth(430); + getColumn(2).setMaxWidth(30); + + } + + + + public void clear(){ + ((SelectableClassExpressionsTableModel)getModel()).clear(); + } + + public void addResults(List<EvaluatedDescriptionClass> resultList){ + + if(getSelectedRow() >= 0){ + old = getSelectedValue(); + } + ((SelectableClassExpressionsTableModel)getModel()).addResults(resultList); + if(old != null){ + int newRowIndex = ((SelectableClassExpressionsTableModel)getModel()).getSelectionIndex(old); + if(newRowIndex >= 0){ + getSelectionModel().setSelectionInterval(newRowIndex, newRowIndex); + } + + } + } + + public EvaluatedDescriptionClass getSelectedValue(){ + return ((SelectableClassExpressionsTableModel)getModel()).getSelectedValue(getSelectedRow()); + } + + public List<Description> getSelecetdDescriptions(){ + return ((SelectableClassExpressionsTableModel)getModel()).getSelectedDescriptions(); + } + +} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java (from rev 1869, trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTableModel.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SelectableClassExpressionsTableModel.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -0,0 +1,125 @@ +package org.dllearner.tools.ore.ui; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.dllearner.core.owl.Description; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; + +public class SelectableClassExpressionsTableModel extends AbstractTableModel { + + /** + * + */ + private static final long serialVersionUID = 8582947007601430481L; + + private List<EvaluatedDescriptionClass> resultList; + private DecimalFormat df; + private List<Boolean> selectionList; + + public SelectableClassExpressionsTableModel(){ + super(); + resultList = new ArrayList<EvaluatedDescriptionClass>(); + selectionList = new ArrayList<Boolean>(); + df = new DecimalFormat("00%"); + } + + public SelectableClassExpressionsTableModel(List<EvaluatedDescriptionClass> resultList){ + this.resultList = resultList; + } + + @Override + public int getColumnCount() { + return 3; + } + + @Override + public int getRowCount() { + return resultList.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + return df.format(resultList.get(rowIndex).getAccuracy()); + } else if(columnIndex == 1){ + return resultList.get(rowIndex).getDescription(); + } else { + return selectionList.get(rowIndex); + } + } + + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + + selectionList.set(rowIndex, (Boolean)value); + + super.fireTableCellUpdated(rowIndex, columnIndex); + + } + + @Override + public Class<? extends Object> getColumnClass(int columnIndex){ + switch(columnIndex){ + case 0: return String.class; + case 1: return Description.class; + case 2: return Boolean.class; + } + return null; + } + + @Override + public String getColumnName(int column){ + switch(column){ + case 0: return "Accuracy"; + case 1: return "Class expression"; + } + return ""; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(columnIndex == 2){ + return true; + } + return false; + } + + public void clear(){ + resultList.clear(); + fireTableDataChanged(); + } + + public void addResults(List<EvaluatedDescriptionClass> resultList){ + this.resultList.clear(); + this.resultList.addAll(resultList); + for(int i = 0; i < resultList.size(); i++){ + selectionList.add(i, Boolean.FALSE); + } + + fireTableRowsUpdated(0, this.resultList.size()); + } + + public EvaluatedDescriptionClass getSelectedValue(int rowIndex){ + return resultList.get(rowIndex); + } + + public int getSelectionIndex(EvaluatedDescriptionClass e){ + return resultList.indexOf(e); + } + + public List<Description> getSelectedDescriptions(){ + List<Description> selected = new ArrayList<Description>(); + for(int i = 0; i < selectionList.size(); i++){ + if(selectionList.get(i).equals(Boolean.TRUE)){ + selected.add(resultList.get(i).getDescription()); + } + } + + return selected; + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -162,6 +162,10 @@ classChoose.resetPanel(); } else if(nextPanelDescriptor.equals(AutoLearnPanelDescriptor.IDENTIFIER)){ ((ClassChoosePanelDescriptor)currentPanelDescriptor).setAutoLearningOptions(); + AutoLearnPanelDescriptor learnDescriptor = ((AutoLearnPanelDescriptor) model + .getPanelHashMap().get(nextPanelDescriptor)); + learnDescriptor.resetPanel(); + learnDescriptor.fillClassesTable(); } // else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(LearningPanelDescriptor.IDENTIFIER)){ // if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -18,6 +18,7 @@ import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.owl.Description; import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.tools.ore.OREManager; @@ -42,6 +43,8 @@ private EquivalentLearningTask equivalentLearningTask; private SuperClassLearningTask superLearningTask; + private SwingWorker<Void, List<? extends EvaluatedDescription>> currentLearningTask; + private int currentClassIndex = 0; @@ -59,7 +62,13 @@ @Override public Object getNextPanelDescriptor() { - return RepairPanelDescriptor.IDENTIFIER; + if(getSelectedDescriptions().isEmpty()){ + return SavePanelDescriptor.IDENTIFIER; + } else { + OREManager.getInstance().setNewDescriptions(getSelectedDescriptions()); + return RepairPanelDescriptor.IDENTIFIER; + } + } @Override @@ -70,10 +79,9 @@ @Override public void aboutToDisplayPanel() { getWizard().getInformationField().setText(INFORMATION); - fillClassesTable(); } - public void fillClassesTable(){ + public void fillClassesTable(){ TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); new ClassRetrievingTask().execute(); } @@ -97,11 +105,23 @@ public void learnNextClass(){ autoLearnPanel.resetPanel(); - OREManager.getInstance().setCurrentClass2Learn(new NamedClass("http://ns.softwiki.de/req/CustomerRequirement"));//classes.get(currentClassIndex)); + autoLearnPanel.setSelectedClass(currentClassIndex); + OREManager.getInstance().setCurrentClass2Learn(classes.get(currentClassIndex)); learnEquivalentClassExpressions(); currentClassIndex++; } + public List<Description> getSelectedDescriptions(){ + return autoLearnPanel.getSelectedDescriptions(); + } + + public void resetPanel(){ + currentClassIndex = 0; + autoLearnPanel.resetPanel(); + autoLearnPanel.clearClassesTable(); + + } + @Override public void actionPerformed(ActionEvent e) { learnNextClass(); @@ -148,6 +168,7 @@ // TODO Auto-generated catch block e.printStackTrace(); } + classes.clear(); classes.addAll(result); autoLearnPanel.fillClassesTable(result); OREManager.getInstance().setCurrentClass2Learn(classes.get(0)); @@ -199,19 +220,22 @@ public void done() { timer.cancel(); List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); - updateList(result); + updateResultTable(result); + if(result.isEmpty()){ + EvaluatedDescriptionClass best = (EvaluatedDescriptionClass)la.getCurrentlyBestEvaluatedDescription(); + } learnSubClassExpressions(); } @Override protected void process(List<List<? extends EvaluatedDescription>> resultLists) { for (List<? extends EvaluatedDescription> list : resultLists) { - updateList(list); + updateResultTable(list); } } @SuppressWarnings("unchecked") - private void updateList(final List<? extends EvaluatedDescription> result) { + private void updateResultTable(final List<? extends EvaluatedDescription> result) { autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>) result); } } @@ -257,7 +281,7 @@ public void done() { timer.cancel(); List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); - updateList(result); + updateResultTable(result); TaskManager.getInstance().setTaskFinished(); setProgress(0); } @@ -265,12 +289,12 @@ @Override protected void process(List<List<? extends EvaluatedDescription>> resultLists) { for (List<? extends EvaluatedDescription> list : resultLists) { - updateList(list); + updateResultTable(list); } } @SuppressWarnings("unchecked") - private void updateList(final List<? extends EvaluatedDescription> result) { + private void updateResultTable(final List<? extends EvaluatedDescription> result) { autoLearnPanel.fillSuperClassExpressionsTable((List<EvaluatedDescriptionClass>) result); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -62,11 +62,16 @@ @Override public Object getBackPanelDescriptor() { - if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ - return ManualLearnPanelDescriptor.IDENTIFIER; - } else { - return RepairPanelDescriptor.IDENTIFIER; - } + + if(OREManager.getInstance().getLearningMode() == OREManager.MANUAL_LEARN_MODE){ + if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ + return ManualLearnPanelDescriptor.IDENTIFIER; + } else { + return RepairPanelDescriptor.IDENTIFIER; + } + } else { + return AutoLearnPanelDescriptor.IDENTIFIER; + } } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -227,45 +227,40 @@ } - class RootDerivedTask extends SwingWorker<Void, Void>{ + class RootDerivedTask extends SwingWorker<Void, Void> { - @Override - public Void doInBackground() { - - expMan.getRootUnsatisfiableClasses(); - expMan.getDerivedClasses(); - return null; - } + @Override + public Void doInBackground() { - @Override - public void done() { - TaskManager.getInstance().setTaskFinished(); - if(!isCancelled()){ - fillUnsatClassesTable(); - } - + expMan.getRootUnsatisfiableClasses(); + expMan.getDerivedClasses(); + return null; + } + + @Override + public void done() { + TaskManager.getInstance().setTaskFinished(); + if (!isCancelled()) { + fillUnsatClassesTable(); } - - private void fillUnsatClassesTable(){ - SwingUtilities.invokeLater(new Runnable() { - - @Override - public void run() { - List<OWLClass> unsatClasses = new ArrayList<OWLClass>(); - - Set<OWLClass> rootClasses = new TreeSet<OWLClass>(expMan - .getRootUnsatisfiableClasses()); - unsatClasses.addAll(rootClasses); - - Set<OWLClass> derivedClasses = new TreeSet<OWLClass>(expMan - .getDerivedClasses()); - unsatClasses.addAll(derivedClasses); - - panel.fillUnsatClassesTable(unsatClasses); - panel.getUnsatTable().clearSelection(); - } - }); - } - } + } + private void fillUnsatClassesTable() { + + List<OWLClass> unsatClasses = new ArrayList<OWLClass>(); + + Set<OWLClass> rootClasses = new TreeSet<OWLClass>(expMan + .getRootUnsatisfiableClasses()); + unsatClasses.addAll(rootClasses); + + Set<OWLClass> derivedClasses = new TreeSet<OWLClass>(expMan + .getDerivedClasses()); + unsatClasses.addAll(derivedClasses); + + panel.fillUnsatClassesTable(unsatClasses); + panel.getUnsatTable().clearSelection(); + + } + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -4,6 +4,7 @@ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionListener; +import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -15,15 +16,16 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; +import javax.swing.border.MatteBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import org.dllearner.core.owl.Description; import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.EvaluatedDescriptionClass; -import org.dllearner.tools.ore.OREManager; -import org.dllearner.tools.ore.ui.ClassesTable; -import org.dllearner.tools.ore.ui.EquivalentClassExpressionsTable; import org.dllearner.tools.ore.ui.GraphicalCoveragePanel; +import org.dllearner.tools.ore.ui.MarkableTable; +import org.dllearner.tools.ore.ui.SelectableClassExpressionsTable; public class AutoLearnPanel extends JPanel { @@ -32,13 +34,13 @@ */ private static final long serialVersionUID = -5204979906041331328L; - private ClassesTable classesTable; - +// private ClassesTable classesTable; + private MarkableTable classesTable; private JPanel superPanel; private JPanel equivalentPanel; - private EquivalentClassExpressionsTable equivalentClassResultsTable; - private EquivalentClassExpressionsTable superClassResultsTable; + private SelectableClassExpressionsTable equivalentClassResultsTable; + private SelectableClassExpressionsTable superClassResultsTable; private GraphicalCoveragePanel equivalentClassCoveragePanel; private GraphicalCoveragePanel superClassCoveragePanel; @@ -48,7 +50,7 @@ private JButton skipButton; - private final static String INCONSISTENY_WARNING = "<html><font color=red>" + + private final static String INCONSISTENCY_WARNING = "<html><font color=red>" + "Warning. Selected class expressions leads to an inconsistent ontology!" + "</font></html>"; public AutoLearnPanel(){ @@ -69,10 +71,10 @@ } private JComponent createClassesPanel(){ - classesTable = new ClassesTable(); + classesTable = new MarkableTable(); classesTable.setBorder(null); - classesTable.setEnabled(false); JScrollPane classesScroll = new JScrollPane(classesTable); + classesScroll.setBorder(new MatteBorder(null)); return classesScroll; } @@ -106,7 +108,7 @@ c.fill = GridBagConstraints.BOTH; c.gridx = 0; c.gridy = 0; - equivalentClassResultsTable = new EquivalentClassExpressionsTable(); + equivalentClassResultsTable = new SelectableClassExpressionsTable(); equivalentClassResultsTable.setName("equivalent"); equivalentPanel.add(new JScrollPane(equivalentClassResultsTable), c); @@ -136,7 +138,7 @@ c.fill = GridBagConstraints.BOTH; c.gridx = 0; c.gridy = 0; - superClassResultsTable = new EquivalentClassExpressionsTable(); + superClassResultsTable = new SelectableClassExpressionsTable(); superClassResultsTable.setName("super"); superPanel.add(new JScrollPane(superClassResultsTable), c); @@ -177,8 +179,21 @@ superClassResultsTable.clear(); equivalentClassCoveragePanel.clear(); superClassCoveragePanel.clear(); + validate(); + repaint(); } + public void clearClassesTable(){ + classesTable.clear(); + } + + public List<Description> getSelectedDescriptions(){ + List<Description> selected = new ArrayList<Description>(); + selected.addAll(equivalentClassResultsTable.getSelecetdDescriptions()); + selected.addAll(superClassResultsTable.getSelecetdDescriptions()); + return selected; + } + private void addTableSelectionListeners(){ equivalentClassResultsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override @@ -187,10 +202,10 @@ if (!e.getValueIsAdjusting() && equivalentClassResultsTable.getSelectedRow() >= 0){ EvaluatedDescriptionClass selectedClassExpression = equivalentClassResultsTable.getSelectedValue(); - OREManager.getInstance().setNewClassDescription(selectedClassExpression); + equivalentClassCoveragePanel.setNewClassDescription(selectedClassExpression); if(!selectedClassExpression.isConsistent()){ - equivalentInconsistencyLabel.setText(INCONSISTENY_WARNING); + equivalentInconsistencyLabel.setText(INCONSISTENCY_WARNING); } else { equivalentInconsistencyLabel.setText(" "); } @@ -207,10 +222,10 @@ if (!e.getValueIsAdjusting() && superClassResultsTable.getSelectedRow() >= 0){ EvaluatedDescriptionClass selectedClassExpression = superClassResultsTable.getSelectedValue(); - OREManager.getInstance().setNewClassDescription(selectedClassExpression); + superClassCoveragePanel.setNewClassDescription(selectedClassExpression); if(!selectedClassExpression.isConsistent()){ - superInconsistencyLabel.setText(INCONSISTENY_WARNING); + superInconsistencyLabel.setText(INCONSISTENCY_WARNING); } else { superInconsistencyLabel.setText(" "); } @@ -227,6 +242,10 @@ superClassCoveragePanel.setNewClassDescription(desc); } + public void setSelectedClass(int rowIndex){ + classesTable.setSelectedClass(rowIndex); + } + public static void main(String[] args){ JFrame frame = new JFrame(); @@ -236,5 +255,6 @@ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -7,14 +7,11 @@ import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionListener; -import java.util.HashSet; -import java.util.Set; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JComponent; -import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; @@ -29,7 +26,6 @@ import org.dllearner.tools.ore.ui.ExplanationTablePanel; import org.dllearner.tools.ore.ui.HelpablePanel; import org.dllearner.tools.ore.ui.RepairPlanPanel; -import org.dllearner.tools.ore.ui.UnsatisfiableClassesTable; import org.semanticweb.owl.apibinding.OWLManager; public class InconsistencyExplanationPanel extends JPanel{ @@ -52,11 +48,6 @@ private JRadioButton computeMaxExplanationsRadioButton; private JSpinner maxExplanationsSelector; - - private Set<ExplanationTablePanel> explanationPanels; - private Set<ExplanationTable> explanationTables; - - public InconsistencyExplanationPanel() { createUI(); @@ -80,9 +71,6 @@ private JComponent createExplanationPanel(){ explanationsPanel = new Box(1); - - explanationPanels = new HashSet<ExplanationTablePanel>(); - explanationTables = new HashSet<ExplanationTable>(); JPanel pan = new JPanel(new BorderLayout()); pan.add(explanationsPanel, BorderLayout.NORTH); @@ -161,7 +149,6 @@ private JComponent createRepairPanel(){ JPanel repairPanel = new JPanel(new BorderLayout()); - repairPanel.add(new JLabel("Repair plan"), BorderLayout.NORTH); repairPanel.add(new RepairPlanPanel(), BorderLayout.CENTER); return repairPanel; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-10-02 16:29:11 UTC (rev 1875) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-10-03 11:29:04 UTC (rev 1876) @@ -216,7 +216,6 @@ private JComponent createImpactRepairPanel(){ JPanel impactRepairPanel = new JPanel(); impactRepairPanel.setLayout(new BorderLayout()); - impactRepairPanel.add(new JLabel("Repair plan"), BorderLayout.NORTH); JSplitPane impRepSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); impRepSplit.setOneTouchExpandable(true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-10-02 16:41:19
|
Revision: 1875 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1875&view=rev Author: jenslehmann Date: 2009-10-02 16:29:11 +0000 (Fri, 02 Oct 2009) Log Message: ----------- corrected display of double datatype restriction in MOS syntax Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/owl/DatatypeProperty.java trunk/src/dl-learner/org/dllearner/core/owl/DatatypeSomeRestriction.java trunk/src/dl-learner/org/dllearner/core/owl/DifferentIndividualsAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/DisjointClassesAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/DoubleDatatypePropertyAssertion.java trunk/src/dl-learner/org/dllearner/core/owl/DoubleMaxValue.java trunk/src/dl-learner/org/dllearner/core/owl/DoubleMinValue.java trunk/src/dl-learner/org/dllearner/core/owl/EquivalentClassesAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/FunctionalObjectPropertyAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/InverseObjectPropertyAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/ObjectProperty.java trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyAssertion.java trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyDomainAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyInverse.java trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/SubClassAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/SubObjectPropertyAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/SymmetricObjectPropertyAxiom.java trunk/src/dl-learner/org/dllearner/core/owl/TransitiveObjectPropertyAxiom.java Modified: trunk/src/dl-learner/org/dllearner/core/owl/DatatypeProperty.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DatatypeProperty.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/DatatypeProperty.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -98,7 +98,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return Helper.getAbbreviatedString(name, baseURI, prefixes); } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/DatatypeSomeRestriction.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DatatypeSomeRestriction.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/DatatypeSomeRestriction.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -88,8 +88,7 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String,String> prefixes) { - // TODO Auto-generated method stub - return null; + return restrictedPropertyExpression.toManchesterSyntaxString(baseURI, prefixes) + dataRange.toManchesterSyntaxString(baseURI, prefixes); } /** Modified: trunk/src/dl-learner/org/dllearner/core/owl/DifferentIndividualsAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DifferentIndividualsAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/DifferentIndividualsAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -72,8 +72,7 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "DIFFERENT_INDIVIDUALS_AXIOM NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/DisjointClassesAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DisjointClassesAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/DisjointClassesAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -80,8 +80,7 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "DISJOINT_CLASSES_AXIOM NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/DoubleDatatypePropertyAssertion.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DoubleDatatypePropertyAssertion.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/DoubleDatatypePropertyAssertion.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -66,7 +66,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "DOUBLEDATAPROPASSERTION NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/DoubleMaxValue.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DoubleMaxValue.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/DoubleMaxValue.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -70,8 +70,7 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return " <= " + value; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/DoubleMinValue.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/DoubleMinValue.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/DoubleMinValue.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -70,7 +70,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return " >= " + value; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/EquivalentClassesAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/EquivalentClassesAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/EquivalentClassesAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -46,7 +46,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "EQ_CLASSES_AXIOM NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/FunctionalObjectPropertyAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/FunctionalObjectPropertyAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/FunctionalObjectPropertyAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -46,7 +46,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "FUNCTIONALOBJECTPROPERTYAXIOM NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/InverseObjectPropertyAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/InverseObjectPropertyAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/InverseObjectPropertyAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -2,6 +2,8 @@ import java.util.Map; +import org.dllearner.utilities.Helper; + public class InverseObjectPropertyAxiom extends PropertyAxiom { private ObjectProperty inverseRole; @@ -46,7 +48,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "INVERSEOBJECTPROPERTYAXIOM NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectProperty.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/ObjectProperty.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectProperty.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -89,7 +89,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return Helper.getAbbreviatedString(name, baseURI, prefixes); } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyAssertion.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyAssertion.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyAssertion.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -78,7 +78,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "OBJECTPROPERTYASSERTION NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyDomainAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyDomainAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyDomainAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -72,8 +72,7 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "OBJECTPROPERTYDOMAIN NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyInverse.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyInverse.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyInverse.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -63,7 +63,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "OBJECTPROPERTYINVERSE NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/ObjectPropertyRangeAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -76,8 +76,7 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "OBJECTPROPERTYRANGE NOT IMPLEMENTED"; } Modified: trunk/src/dl-learner/org/dllearner/core/owl/SubClassAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/SubClassAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/SubClassAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -47,6 +47,6 @@ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { // TODO Auto-generated method stub - return null; + return "SUBCLASS NOT IMPLEMENTED"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/SubObjectPropertyAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/SubObjectPropertyAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/SubObjectPropertyAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -46,7 +46,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "Subrole(" + subRole.toString(baseURI, prefixes) + "," + role.toString(baseURI, prefixes) + ")"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/SymmetricObjectPropertyAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/SymmetricObjectPropertyAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/SymmetricObjectPropertyAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -40,7 +40,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "Symmetric(" + role.toString(baseURI, prefixes) + ")"; } } Modified: trunk/src/dl-learner/org/dllearner/core/owl/TransitiveObjectPropertyAxiom.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/owl/TransitiveObjectPropertyAxiom.java 2009-10-02 15:50:46 UTC (rev 1874) +++ trunk/src/dl-learner/org/dllearner/core/owl/TransitiveObjectPropertyAxiom.java 2009-10-02 16:29:11 UTC (rev 1875) @@ -40,7 +40,6 @@ */ @Override public String toManchesterSyntaxString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "Transitive(" + role.toString(baseURI, prefixes) + ")"; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-10-02 15:57:27
|
Revision: 1874 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1874&view=rev Author: jenslehmann Date: 2009-10-02 15:50:46 +0000 (Fri, 02 Oct 2009) Log Message: ----------- continued mutation database conversion Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java Modified: trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java 2009-10-02 14:47:52 UTC (rev 1873) +++ trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java 2009-10-02 15:50:46 UTC (rev 1874) @@ -145,13 +145,83 @@ kb.addAxiom(new DatatypePropertyRangeAxiom(freqAtPosProp, Datatype.DOUBLE)); // cluster_5res_size - DatatypeProperty cluster5ResSizeProp = new DatatypeProperty(getURI("cluster_5res_size")); + DatatypeProperty cluster5ResSizeProp = new DatatypeProperty(getURI("cluster5resSize")); kb.addAxiom(new DatatypePropertyDomainAxiom(cluster5ResSizeProp, mutationClass)); kb.addAxiom(new DatatypePropertyRangeAxiom(cluster5ResSizeProp, Datatype.DOUBLE)); - // select all data + // secondary_struc + NamedClass scHelixClass = new NamedClass(getURI("SCHelixMutation")); + NamedClass scSheetClass = new NamedClass(getURI("SCSheetMutation")); + NamedClass scUndeterminedClass = new NamedClass(getURI("SCUndeterminedMutation")); + kb.addAxiom(new SubClassAxiom(scHelixClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(scSheetClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(scUndeterminedClass, mutationClass)); + + // gain_contact + DatatypeProperty gainContactProp = new DatatypeProperty(getURI("gainContact")); + kb.addAxiom(new DatatypePropertyDomainAxiom(gainContactProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(gainContactProp, Datatype.DOUBLE)); + + // lost_contact + DatatypeProperty lostContactProp = new DatatypeProperty(getURI("lostContact")); + kb.addAxiom(new DatatypePropertyDomainAxiom(lostContactProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(lostContactProp, Datatype.DOUBLE)); + + // identical_contact + DatatypeProperty identicalContactProp = new DatatypeProperty(getURI("identicalContact")); + kb.addAxiom(new DatatypePropertyDomainAxiom(identicalContactProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(identicalContactProp, Datatype.DOUBLE)); + + // gain_n1_contact + DatatypeProperty gainN1ContactProp = new DatatypeProperty(getURI("gainN1Contact")); + kb.addAxiom(new DatatypePropertyDomainAxiom(gainN1ContactProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(gainN1ContactProp, Datatype.DOUBLE)); + + // lost_n1_contact + DatatypeProperty lostN1ContactProp = new DatatypeProperty(getURI("lostN1Contact")); + kb.addAxiom(new DatatypePropertyDomainAxiom(lostN1ContactProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(lostN1ContactProp, Datatype.DOUBLE)); + + // identical_n1_contact + DatatypeProperty identicalN1ContactProp = new DatatypeProperty(getURI("identicalN1Contact")); + kb.addAxiom(new DatatypePropertyDomainAxiom(identicalN1ContactProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(identicalN1ContactProp, Datatype.DOUBLE)); + + // wt_accessibility + DatatypeProperty wtAccessibilityProp = new DatatypeProperty(getURI("wtAccessibility")); + kb.addAxiom(new DatatypePropertyDomainAxiom(wtAccessibilityProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(wtAccessibilityProp, Datatype.DOUBLE)); + + // mut_accessibility + DatatypeProperty mutAccessibilityProp = new DatatypeProperty(getURI("mutAccessibility")); + kb.addAxiom(new DatatypePropertyDomainAxiom(mutAccessibilityProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(mutAccessibilityProp, Datatype.DOUBLE)); + + // cluster3d_10 + DatatypeProperty cluster3D10Prop = new DatatypeProperty(getURI("cluster3d10")); + kb.addAxiom(new DatatypePropertyDomainAxiom(cluster3D10Prop, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(cluster3D10Prop, Datatype.DOUBLE)); + + // cluster3d_20 + DatatypeProperty cluster3D20Prop = new DatatypeProperty(getURI("cluster3d20")); + kb.addAxiom(new DatatypePropertyDomainAxiom(cluster3D20Prop, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(cluster3D20Prop, Datatype.DOUBLE)); + + // cluster3d_30 + DatatypeProperty cluster3D30Prop = new DatatypeProperty(getURI("cluster3d30")); + kb.addAxiom(new DatatypePropertyDomainAxiom(cluster3D30Prop, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(cluster3D30Prop, Datatype.DOUBLE)); + + // TODO: stability missing + + // reliability_deltag + DatatypeProperty reliabilityDeltagProp = new DatatypeProperty(getURI("reliabilityDeltag")); + kb.addAxiom(new DatatypePropertyDomainAxiom(reliabilityDeltagProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(reliabilityDeltagProp, Datatype.DOUBLE)); + + // select data (restricted to pos/neg examples for efficiency) Statement stmt = conn.createStatement(); - ResultSet rs = stmt.executeQuery("SELECT * FROM " + table); + ResultSet rs = stmt.executeQuery("SELECT * FROM " + table + " WHERE (gain_contact is not null) && (gain_contact != 0)"); int count = 0; while(rs.next()) { @@ -207,7 +277,70 @@ double cluster5ResSize = rs.getDouble("cluster_5res_size"); kb.addAxiom(new DoubleDatatypePropertyAssertion(cluster5ResSizeProp, mutationInd, cluster5ResSize)); + // secondary struc + String secStruc = rs.getString("secondary_struc"); + if(secStruc.equals("HELIX")) { + kb.addAxiom(new ClassAssertionAxiom(scHelixClass, mutationInd)); + } else if(secStruc.equals("SHEET")) { + kb.addAxiom(new ClassAssertionAxiom(scSheetClass, mutationInd)); + } else if(secStruc.equals("0")) { + kb.addAxiom(new ClassAssertionAxiom(scUndeterminedClass, mutationInd)); + } + // TODO: Wert null soll hier auch vorkommen, aber existiert in der DB nicht. + // gain_contact + double gainContact = rs.getDouble("gain_contact"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(gainContactProp, mutationInd, gainContact)); + + // lost_contact + double lostContact = rs.getDouble("lost_contact"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(lostContactProp, mutationInd, lostContact)); + + // identical_contact + double identicalContact = rs.getDouble("identical_contact"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(identicalContactProp, mutationInd, identicalContact)); + + // gain_n1_contact + double gainN1Contact = rs.getDouble("gain_n1_contact"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(gainN1ContactProp, mutationInd, gainN1Contact)); + + // lost_n1_contact + double lostN1Contact = rs.getDouble("lost_n1_contact"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(lostN1ContactProp, mutationInd, lostN1Contact)); + + // identical_n1_contact + double identicalN1Contact = rs.getDouble("identical_n1_contact"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(identicalN1ContactProp, mutationInd, identicalN1Contact)); + + // TODO Vorsicht bei 0-Werten in den weitern Feldern (klären, ob in dem + // Fall gar nichts geschrieben werden soll) + + // wt_accessibility + double wtAccessibility = rs.getDouble("wt_accessibility"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(wtAccessibilityProp, mutationInd, wtAccessibility)); + + // mut_accessibility + double mutAccessibility = rs.getDouble("mut_accessibility"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(mutAccessibilityProp, mutationInd, mutAccessibility)); + + // cluster3d_10 + double cluster3D10 = rs.getDouble("cluster3d_10"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(cluster3D10Prop, mutationInd, cluster3D10)); + + // cluster3d_20 + double cluster3D20 = rs.getDouble("cluster3d_20"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(cluster3D20Prop, mutationInd, cluster3D20)); + + // cluster3d_30 + double cluster3D30 = rs.getDouble("cluster3d_30"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(cluster3D30Prop, mutationInd, cluster3D30)); + + // TODO: stability missing + + // reliability_deltag + double reliabilityDeltag = rs.getDouble("reliability_deltag"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(reliabilityDeltagProp, mutationInd, reliabilityDeltag)); + count++; } @@ -239,7 +372,7 @@ String confHeader = "import(\"" + owlFile.getName() + "\");\n\n"; confHeader += "reasoner = fastInstanceChecker;\n"; confHeader += "algorithm = refexamples;\n"; - confHeader += "refexamples.noisePercentage = 31;\n"; + confHeader += "refexamples.noisePercentage = 15;\n"; confHeader += "refexamples.startClass = \"" + getURI("Mutation") + "\";\n"; confHeader += "refexamples.writeSearchTree = false;\n"; confHeader += "refexamples.searchTreeFile = \"log/mutation/searchTree.log\";\n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jen...@us...> - 2009-10-02 14:47:58
|
Revision: 1873 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1873&view=rev Author: jenslehmann Date: 2009-10-02 14:47:52 +0000 (Fri, 02 Oct 2009) Log Message: ----------- - nested cross validation script started for optimising a learning algorithm parameter (uses JOptSimple for parsing command line arguments) Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java Added Paths: ----------- trunk/lib/jopt-simple-3.1.jar trunk/src/dl-learner/org/dllearner/scripts/NestedCrossValidation.java trunk/src/dl-learner/org/dllearner/utilities/datastructures/TrainTestList.java Added: trunk/lib/jopt-simple-3.1.jar =================================================================== (Binary files differ) Property changes on: trunk/lib/jopt-simple-3.1.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java 2009-10-02 14:20:58 UTC (rev 1872) +++ trunk/src/dl-learner/org/dllearner/scripts/CrossValidation.java 2009-10-02 14:47:52 UTC (rev 1873) @@ -134,7 +134,7 @@ if(lp instanceof PosNegLP) { - // get examples and shuffle them to + // get examples and shuffle them too Set<Individual> posExamples = ((PosNegLP)lp).getPositiveExamples(); List<Individual> posExamplesList = new LinkedList<Individual>(posExamples); Collections.shuffle(posExamplesList, new Random(1)); @@ -164,7 +164,7 @@ // calculating where to split the sets, ; note that we split // positive and negative examples separately such that the // distribution of positive and negative examples remains similar - // (note that there better but more complex ways to implement this, + // (note that there are better but more complex ways to implement this, // which guarantee that the sum of the elements of a fold for pos // and neg differs by at most 1 - it can differ by 2 in our implementation, // e.g. with 3 folds, 4 pos. examples, 4 neg. examples) @@ -293,7 +293,7 @@ return testSetNeg.size() - rs.hasType(concept, testSetNeg).size(); } - private Set<Individual> getTestingSet(List<Individual> examples, int[] splits, int fold) { + public static Set<Individual> getTestingSet(List<Individual> examples, int[] splits, int fold) { int fromIndex; // we either start from 0 or after the last fold ended if(fold == 0) @@ -311,14 +311,14 @@ return testingSet; } - private Set<Individual> getTrainingSet(Set<Individual> examples, Set<Individual> testingSet) { + public static Set<Individual> getTrainingSet(Set<Individual> examples, Set<Individual> testingSet) { return Helper.difference(examples, testingSet); } // takes nr. of examples and the nr. of folds for this examples; // returns an array which says where each fold ends, i.e. // splits[i] is the index of the last element of fold i in the examples - private int[] calculateSplits(int nrOfExamples, int folds) { + public static int[] calculateSplits(int nrOfExamples, int folds) { int[] splits = new int[folds]; for(int i=1; i<=folds; i++) { // we always round up to the next integer Added: trunk/src/dl-learner/org/dllearner/scripts/NestedCrossValidation.java =================================================================== --- trunk/src/dl-learner/org/dllearner/scripts/NestedCrossValidation.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/scripts/NestedCrossValidation.java 2009-10-02 14:47:52 UTC (rev 1873) @@ -0,0 +1,305 @@ +/** + * Copyright (C) 2007-2009, 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.scripts; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.text.DecimalFormat; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Random; +import java.util.Set; +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.cli.Start; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.core.LearningProblem; +import org.dllearner.core.ReasonerComponent; +import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.Individual; +import org.dllearner.learningproblems.PosNegLP; +import org.dllearner.parser.ParseException; +import org.dllearner.utilities.Helper; +import org.dllearner.utilities.datastructures.TrainTestList; + +import joptsimple.OptionParser; +import joptsimple.OptionSet; + +import static java.util.Arrays.*; + +/** + * Performs nested cross validation for the given problem. A k fold outer and l + * fold inner cross validation is used. Parameters: + * <ul> + * <li>The conf file to use.</li> + * <li>k (number of outer folds)</li> + * <li>l (number of inner folds)</li> + * <li>parameter name to vary</li> + * <li>a set of parameter values to test</li> + * </ul> + * + * Example arguments: bla.conf 10 5 noise 25-40 + * + * Currently, only the optimisation of a single parameter is supported. + * + * Later versions may include support for testing a variety of parameters, e.g. + * --conf bla.conf --outerfolds 10 --innerfolds 5 --complexparameters= + * "para1=val1;...paran=valn#...#para1=val1;...paran=valn" This tests all + * parameter combinations separated by #. + * + * Alternatively: --conf bla.conf --outerfolds 10 --innerfolds 5 --parameters= + * "para1#para2#para3" --values="25-40#(high,medium,low)#boolean" This tests all + * combinations of parameters and given values, where the script recognises + * special patterns, e.g. integer ranges or the keyword boolean for + * "true/false". + * + * Currently, only learning from positive and negative examples is supported. + * + * @author Jens Lehmann + * + */ +public class NestedCrossValidation { + + /** + * Entry method, which uses JOptSimple to parse parameters. + * + * @param args + * Command line arguments (see class documentation). + * @throws IOException + * @throws ParseException + * @throws ComponentInitException + */ + public static void main(String[] args) throws IOException, ComponentInitException, ParseException { + + OptionParser parser = new OptionParser(); + parser.acceptsAll(asList("h", "?", "help"), "Show help."); + parser.acceptsAll(asList("c", "conf"), "Conf file to use.").withRequiredArg().ofType( + File.class); + parser.acceptsAll(asList( "v", "verbose"), "Be more verbose."); + parser.acceptsAll(asList( "o", "outerfolds"), "Number of outer folds.").withRequiredArg().ofType(Integer.class).describedAs("#folds"); + parser.acceptsAll(asList( "i", "innerfolds"), "Number of inner folds.").withRequiredArg().ofType(Integer.class).describedAs("#folds"); + parser.acceptsAll(asList( "p", "parameter"), "Parameter to vary.").withRequiredArg(); + parser.acceptsAll(asList( "r", "pvalues", "range"), "Values of parameter. $x-$y can be used for integer ranges.").withRequiredArg(); + + // parse options and display a message for the user in case of problems + OptionSet options = null; + try { + options = parser.parse(args); + } catch(Exception e) { + System.out.println("Error: " + e.getMessage() + ". Use -? to get help."); + System.exit(0); + } + + // print help screen + if (options.has("?")) { + parser.printHelpOn(System.out); + // all options present => start nested cross validation + } else if(options.has("c") && options.has("o") && options.has("i") && options.has("p") && options.has("r")) { + // read all options in variables and parse option values + File confFile = (File) options.valueOf("c"); + int outerFolds = (Integer) options.valueOf("o"); + int innerFolds = (Integer) options.valueOf("i"); + String parameter = (String) options.valueOf("p"); + String range = (String) options.valueOf("r"); + String[] rangeSplit = range.split("-"); + int rangeStart = new Integer(rangeSplit[0]); + int rangeEnd = new Integer(rangeSplit[1]); + + // create logger (a simple logger which outputs + // its messages to the console) + SimpleLayout layout = new SimpleLayout(); + ConsoleAppender consoleAppender = new ConsoleAppender(layout); + Logger logger = Logger.getRootLogger(); + logger.removeAllAppenders(); + logger.addAppender(consoleAppender); + logger.setLevel(Level.WARN); + // disable OWL API info output + java.util.logging.Logger.getLogger("").setLevel(java.util.logging.Level.WARNING); + + new NestedCrossValidation(confFile, outerFolds, innerFolds, parameter, rangeStart, rangeEnd); + + // an option is missing => print help screen and message + } else { + parser.printHelpOn(System.out); + System.out.println("\nYou need to specify the options c, i, o, p, r. Please consult the help table above."); + } + + } + + public NestedCrossValidation(File confFile, int outerFolds, int innerFolds, String parameter, int startValue, int endValue) throws FileNotFoundException, ComponentInitException, ParseException { + + DecimalFormat df = new DecimalFormat(); + ComponentManager cm = ComponentManager.getInstance(); + + Start start = new Start(confFile); + LearningProblem lp = start.getLearningProblem(); + + if(!(lp instanceof PosNegLP)) { + System.out.println("Positive only learning not supported yet."); + System.exit(0); + } + + // get examples and shuffle them + LinkedList<Individual> posExamples = new LinkedList<Individual>(((PosNegLP)lp).getPositiveExamples()); + Collections.shuffle(posExamples, new Random(1)); + LinkedList<Individual> negExamples = new LinkedList<Individual>(((PosNegLP)lp).getNegativeExamples()); + Collections.shuffle(negExamples, new Random(2)); + + List<TrainTestList> posLists = getFolds(posExamples, outerFolds); + List<TrainTestList> negLists = getFolds(negExamples, outerFolds); + + for(int currOuterFold=0; currOuterFold<outerFolds; currOuterFold++) { + + System.out.println("Start processing outer fold " + currOuterFold); + TrainTestList posList = posLists.get(currOuterFold); + TrainTestList negList = negLists.get(currOuterFold); + + for(int currParaValue=startValue; currParaValue<=endValue; currParaValue++) { + + System.out.println(" Start Processing parameter value " + currParaValue); + // split train folds again (computation of inner folds for each parameter + // value is redundant, but not a big problem) + List<Individual> trainPosList = posList.getTrainList(); + List<TrainTestList> innerPosLists = getFolds(trainPosList, innerFolds); + List<Individual> trainNegList = negList.getTrainList(); + List<TrainTestList> innerNegLists = getFolds(trainNegList, innerFolds); + + for(int currInnerFold=0; currInnerFold<innerFolds; currInnerFold++) { + + System.out.println(" Inner fold " + currInnerFold + " ... "); + // get positive & negative examples for training run + List<Individual> posEx = innerPosLists.get(currInnerFold).getTrainList(); + List<Individual> negEx = innerNegLists.get(currInnerFold).getTrainList(); + + // read conf file and exchange options for pos/neg examples + // and parameter to optimise + start = new Start(confFile); + lp = start.getLearningProblem(); + cm.applyConfigEntry(lp, "positiveExamples", posEx); + cm.applyConfigEntry(lp, "negativeExamples", negEx); + LearningAlgorithm la = start.getLearningAlgorithm(); + cm.applyConfigEntry(la, parameter, (double)currParaValue); + + lp.init(); + la.init(); + la.start(); + + // evaluate learned expression + Description concept = la.getCurrentlyBestDescription(); + + TreeSet<Individual> posTest = new TreeSet<Individual>(innerPosLists.get(currInnerFold).getTestList()); + TreeSet<Individual> negTest = new TreeSet<Individual>(innerNegLists.get(currInnerFold).getTestList()); + + ReasonerComponent rs = start.getReasonerComponent(); + Set<Individual> posCorrect = rs.hasType(concept, posTest); + Set<Individual> posError = Helper.difference(posTest, posCorrect); + Set<Individual> negError = rs.hasType(concept, negTest); + Set<Individual> negCorrect = Helper.difference(negTest, negError); + +// System.out.println("test set errors pos: " + tmp2); +// System.out.println("test set errors neg: " + tmp3); + + double accuracy = 100*((double)(posCorrect.size()+negCorrect.size())/(posTest.size()+negTest.size())); + + System.out.println(" accuracy: " + df.format(accuracy)); + + // free memory + rs.releaseKB(); + cm.freeAllComponents(); + } + + } + + } + + /* + + // calculate splits using CV class + int[] splitsPos = CrossValidation.calculateSplits(posExamples.size(), outerFolds); + int[] splitsNeg = CrossValidation.calculateSplits(negExamples.size(), outerFolds); + + // the training and test sets used later on +// List<List<Individual>> trainingSetsPos = new LinkedList<List<Individual>>(); +// List<List<Individual>> trainingSetsNeg = new LinkedList<List<Individual>>(); +// List<List<Individual>> testSetsPos = new LinkedList<List<Individual>>(); +// List<List<Individual>> testSetsNeg = new LinkedList<List<Individual>>(); + + // calculating training and test sets for outer folds + for(int i=0; i<outerFolds; i++) { + + + + // sets for positive examples + int posFromIndex = (i==0) ? 0 : splitsPos[i-1]; + int posToIndex = splitsPos[i]; + List<Individual> testPos = posExamples.subList(posFromIndex, posToIndex); + List<Individual> trainPos = new LinkedList<Individual>(posExamples); + trainPos.removeAll(testPos); + + // sets for negative examples + int negFromIndex = (i==0) ? 0 : splitsNeg[i-1]; + int negToIndex = splitsNeg[i]; + List<Individual> testNeg = posExamples.subList(negFromIndex, negToIndex); + List<Individual> trainNeg = new LinkedList<Individual>(negExamples); + trainNeg.removeAll(testNeg); + + // split train folds + int[] innerSplitPos = CrossValidation.calculateSplits(trainPos.size(), innerFolds); + int[] innerSplitNeg = CrossValidation.calculateSplits(trainNeg.size(), innerFolds); + + for(int j=0; j<innerFolds; j++) { + + } + + // add to list of folds +// trainingSetsPos.add(trainPos); +// trainingSetsNeg.add(trainNeg); +// testSetsPos.add(testPos); +// testSetsNeg.add(testNeg); + } + + */ + + } + + // convenience methods, which takes a list of examples and divides them in + // train-test-lists according to the number of folds specified + public static List<TrainTestList> getFolds(List<Individual> list, int folds) { + List<TrainTestList> ret = new LinkedList<TrainTestList>(); + int[] splits = CrossValidation.calculateSplits(list.size(), folds); + for(int i=0; i<folds; i++) { + int fromIndex = (i==0) ? 0 : splits[i-1]; + int toIndex = splits[i]; + List<Individual> test = list.subList(fromIndex, toIndex); + List<Individual> train = new LinkedList<Individual>(list); + train.removeAll(test); + ret.add(new TrainTestList(train, test)); + } + return ret; + } +} Added: trunk/src/dl-learner/org/dllearner/utilities/datastructures/TrainTestList.java =================================================================== --- trunk/src/dl-learner/org/dllearner/utilities/datastructures/TrainTestList.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/utilities/datastructures/TrainTestList.java 2009-10-02 14:47:52 UTC (rev 1873) @@ -0,0 +1,56 @@ +/** + * Copyright (C) 2007-2009, 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.utilities.datastructures; + +import java.util.LinkedList; +import java.util.List; + +import org.dllearner.core.owl.Individual; + +/** + * A tuple of training set and test set. + * + * @author Jens Lehmann + * + */ +public class TrainTestList { + + private List<Individual> trainList; + private List<Individual> testList; + + public TrainTestList() { + trainList = new LinkedList<Individual>(); + testList = new LinkedList<Individual>(); + } + + public TrainTestList(List<Individual> trainList, List<Individual> testList) { + this.trainList = trainList; + this.testList = testList; + } + + public List<Individual> getTrainList() { + return trainList; + } + + public List<Individual> getTestList() { + return testList; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-10-02 14:21:16
|
Revision: 1872 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1872&view=rev Author: lorenz_b Date: 2009-10-02 14:20:58 +0000 (Fri, 02 Oct 2009) Log Message: ----------- disabled console output from pellet reasoner Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2009-10-01 12:05:40 UTC (rev 1871) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2009-10-02 14:20:58 UTC (rev 1872) @@ -299,7 +299,7 @@ manager.addOntologyChangeListener((org.mindswap.pellet.owlapi.Reasoner)reasoner); //set classification output to "none", while default is "console" - PelletOptions.USE_CLASSIFICATION_MONITOR = MonitorType.CONSOLE; + PelletOptions.USE_CLASSIFICATION_MONITOR = MonitorType.NONE; // change log level to WARN for Pellet, because otherwise log // output will be very large Logger pelletLogger = Logger.getLogger("org.mindswap.pellet"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-10-01 12:05:50
|
Revision: 1871 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1871&view=rev Author: lorenz_b Date: 2009-10-01 12:05:40 +0000 (Thu, 01 Oct 2009) Log Message: ----------- continued auto learning mode Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java Modified: trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/core/LearningAlgorithm.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -254,7 +254,7 @@ // be in the search of the learning algorith, which leads to // unpredictable behaviour) Description d = ed.getDescription().clone(); - ConceptTransformation.replaceRange(d, reasoner); +// ConceptTransformation.replaceRange(d, reasoner); ed.setDescription(d); returnList.add(ed); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ConcurrencyBug.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -0,0 +1,95 @@ +package org.dllearner.tools.ore; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.Timer; +import java.util.TimerTask; + +import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.core.ComponentInitException; +import org.dllearner.core.ComponentManager; +import org.dllearner.core.LearningProblemUnsupportedException; +import org.dllearner.kb.OWLFile; +import org.dllearner.learningproblems.ClassLearningProblem; +import org.dllearner.reasoning.PelletReasoner; +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLClass; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLObjectAllRestriction; +import org.semanticweb.owl.model.OWLObjectProperty; +import org.semanticweb.owl.model.OWLObjectSomeRestriction; +import org.semanticweb.owl.model.OWLOntologyCreationException; +import org.semanticweb.owl.model.OWLOntologyManager; +import org.semanticweb.owl.model.OWLSubClassAxiom; + +public class ConcurrencyBug { + + /** + * @param args + * @throws MalformedURLException + * @throws ComponentInitException + * @throws URISyntaxException + * @throws OWLOntologyCreationException + * @throws LearningProblemUnsupportedException + */ + public static void main(String[] args) throws MalformedURLException, ComponentInitException, OWLOntologyCreationException, URISyntaxException, LearningProblemUnsupportedException { + File file = new File("examples/swore/swore.rdf"); + URL classToDescribe = new URL("http://ns.softwiki.de/req/CustomerRequirement"); + + ComponentManager cm = ComponentManager.getInstance(); + OWLFile ks = cm.knowledgeSource(OWLFile.class); + ((OWLFile)ks).getConfigurator().setUrl(file.toURI().toURL()); + ks.init(); + + PelletReasoner reasoner = cm.reasoner(PelletReasoner.class, ks); + reasoner.init(); + reasoner.loadOntologies(); + reasoner.dematerialise(); + + ClassLearningProblem lp = cm.learningProblem(ClassLearningProblem.class, reasoner); + lp.getConfigurator().setClassToDescribe(classToDescribe); + lp.init(); + + String NS = "http://ns.softwiki.de/req/"; + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + OWLDataFactory factory = manager.getOWLDataFactory(); + OWLClass customerRequirement = factory.getOWLClass(URI.create(NS +"CustomerRequirement")); + OWLClass comment = factory.getOWLClass(URI.create(NS + "Comment")); + OWLObjectProperty idDefinedBy = factory.getOWLObjectProperty(URI.create(NS + "isDefinedBy")); + OWLObjectProperty defines = factory.getOWLObjectProperty(URI.create(NS + "defines")); + + OWLObjectSomeRestriction some = factory.getOWLObjectSomeRestriction(defines, comment); + OWLObjectAllRestriction all = factory.getOWLObjectAllRestriction(idDefinedBy, some); + OWLSubClassAxiom sub = factory.getOWLSubClassAxiom(customerRequirement, all); + +// System.out.println(reasoner.remainsSatisfiableImpl(sub)); + + final CELOE la = cm.learningAlgorithm(CELOE.class, lp, reasoner); + la.getConfigurator().setMaxExecutionTimeInSeconds(8); + la.getConfigurator().setUseNegation(false); + la.getConfigurator().setNoisePercentage(0.05); + la.getConfigurator().setMaxNrOfResults(10); + la.init(); + + Timer timer = new Timer(); + timer.schedule(new TimerTask() { + + @Override + public void run() { + if(la.isRunning()){ + System.out.println(la.getCurrentlyBestEvaluatedDescriptions(10, 0.8, true)); + } else { + cancel(); + } + + } + }, 1000, 1000); + la.start(); + + + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -43,7 +43,7 @@ private RootFinder rootFinder; private boolean isComputeAllExplanations = false; - private int maxExplantionCount = 1; + private int maxExplanationCount = 1; private boolean allExplanationWarningChecked = false; private Map<Explanation, List<Map<OWLAxiom, Integer>>> orderingMap; @@ -113,7 +113,7 @@ if (isComputeAllExplanations) { explanations = gen.getExplanations(entailment); } else { - explanations = gen.getExplanations(entailment, maxExplantionCount); + explanations = gen.getExplanations(entailment, maxExplanationCount); } return explanations; @@ -127,9 +127,9 @@ if (isComputeAllExplanations) { explanations = gen.getExplanations(entailment); } else { - explanations = gen.getExplanations(entailment, maxExplantionCount); + explanations = gen.getExplanations(entailment, maxExplanationCount); } - + return explanations; } @@ -244,12 +244,12 @@ } public void setMaxExplantionCount(int limit){ - maxExplantionCount = limit; + maxExplanationCount = limit; fireExplanationLimitChanged(); } public int getMaxExplantionCount(){ - return maxExplantionCount; + return maxExplanationCount; } public void addListener(ExplanationManagerListener l){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/CachedExplanationGenerator.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -69,7 +69,7 @@ @Override public Set<Explanation> getExplanations(OWLAxiom entailment){ - return getExplanations(entailment, -1); + return getExplanations(entailment, Integer.MAX_VALUE); } public int getArity(OWLAxiom axiom){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -8,6 +8,8 @@ import org.dllearner.tools.ore.explanation.laconic.LaconicExplanationGenerator; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; +import org.mindswap.pellet.utils.Timer; +import org.mindswap.pellet.utils.Timers; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.inference.OWLReasoner; import org.semanticweb.owl.inference.OWLReasonerException; @@ -69,7 +71,7 @@ } public static void miniEconomyTest() { - String file = "file:examples/ore/miniEconomy.owl"; + String file = "file:examples/ore/koala.owl"; try { @@ -78,28 +80,43 @@ OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI .create(file)); - PelletReasonerFactory resonerFact = new PelletReasonerFactory(); + PelletReasonerFactory reasonerFact = new PelletReasonerFactory(); OWLDataFactory dataFactory = manager.getOWLDataFactory(); - Reasoner reasoner = resonerFact.createReasoner(manager); + Reasoner reasoner = reasonerFact.createReasoner(manager); reasoner.loadOntology(ontology); reasoner.classify(); - System.out.println(reasoner.getInconsistentClasses()); - + LaconicExplanationGenerator expGen = new LaconicExplanationGenerator( - manager, resonerFact, Collections.singleton(ontology)); + manager, reasonerFact, Collections.singleton(ontology)); +// org.semanticweb.owl.explanation.api.ExplanationGenerator<OWLAxiom> copy = org.semanticweb.owl.explanation.api. +// ExplanationManager.createLaconicExplanationGeneratorFactory(reasonerFact).createExplanationGenerator(ontology.getAxioms()); + + Set<OWLClass> unsatClasses = reasoner.getInconsistentClasses(); OWLSubClassAxiom unsatAxiom; - + Timers timers = new Timers(); for (OWLClass unsat : unsatClasses) { unsatAxiom = dataFactory.getOWLSubClassAxiom(unsat, dataFactory .getOWLNothing()); + Timer t1 = timers.createTimer("t1"); + Timer t2 =timers.createTimer("t2"); + t1.start(); Set<Explanation> explanations = expGen .getExplanations(unsatAxiom); - System.out.println(explanations); + t1.stop(); +// System.out.println(explanations); + t2.start(); +// Set<org.semanticweb.owl.explanation.api.Explanation<OWLAxiom>> expl = copy.getExplanations(unsatAxiom); + t2.stop(); +// System.out.println(expl); + + for(Timer timer : timers.getTimers()){ + System.out.println(timer.getTotal()); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -22,7 +22,7 @@ public ResultTableModel(){ super(); resultList = new ArrayList<EvaluatedDescriptionClass>(); - df = new DecimalFormat("00.00%"); + df = new DecimalFormat("00%"); } public ResultTableModel(List<EvaluatedDescriptionClass> resultList){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -29,6 +29,7 @@ import org.dllearner.tools.ore.ui.wizard.descriptors.AutoLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.InconsistencyExplanationPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.descriptors.IntroductionPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.KnowledgeSourcePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ManualLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; @@ -272,25 +273,25 @@ void refreshLeftPanel(Object panelDescriptor){ - if(panelDescriptor.equals("INTRODUCTION_PANEL")){ + if(panelDescriptor.equals(IntroductionPanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(0); - } - if(panelDescriptor.equals("KNOWLEDGESOURCE_CHOOSE_PANEL")){ + } else + if(panelDescriptor.equals(KnowledgeSourcePanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(1); - } - if(panelDescriptor.equals("CLASS_CHOOSE_OWL_PANEL") || panelDescriptor.equals("CLASS_CHOOSE_SPARQL_PANEL")){ + } else + if(panelDescriptor.equals(ClassChoosePanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(3); - } - if(panelDescriptor.equals("LEARNING_PANEL")){ + } else + if(panelDescriptor.equals(ManualLearnPanelDescriptor.IDENTIFIER) || panelDescriptor.equals(AutoLearnPanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(4); - } - if(panelDescriptor.equals("REPAIR_PANEL")){ + } else + if(panelDescriptor.equals(RepairPanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(5); - } - if(panelDescriptor.equals("SAVE_PANEL")){ + } else + if(panelDescriptor.equals(SavePanelDescriptor.IDENTIFIER)){ wizard.setLeftPanel(6); - } - if(panelDescriptor.equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)){ + } else { + wizard.setLeftPanel(2); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -1,5 +1,8 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.awt.Cursor; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -22,7 +25,7 @@ import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.AutoLearnPanel; -public class AutoLearnPanelDescriptor extends WizardPanelDescriptor{ +public class AutoLearnPanelDescriptor extends WizardPanelDescriptor implements ActionListener{ /** * Identification string for class choose panel. */ @@ -35,6 +38,12 @@ private AutoLearnPanel autoLearnPanel; private List<NamedClass> classes; + + private EquivalentLearningTask equivalentLearningTask; + private SuperClassLearningTask superLearningTask; + + private int currentClassIndex = 0; + /** * Constructor creates new panel and adds listener to list. @@ -43,6 +52,8 @@ autoLearnPanel = new AutoLearnPanel(); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(autoLearnPanel); + + autoLearnPanel.addActionListener(this); classes = new ArrayList<NamedClass>(); } @@ -63,19 +74,38 @@ } public void fillClassesTable(){ + TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); new ClassRetrievingTask().execute(); } public void learnEquivalentClassExpressions(){ - TaskManager.getInstance().setTaskStarted("Learning equivalent class expressions..."); - new EquivalentLearningTask().execute(); + TaskManager.getInstance().getStatusBar().setMessage("Learning equivalent class expressions..."); + getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + equivalentLearningTask = new EquivalentLearningTask(); + equivalentLearningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); + equivalentLearningTask.execute(); } public void learnSubClassExpressions(){ - TaskManager.getInstance().setTaskStarted("Learning superclass expressions..."); - new SuperClassLearningTask().execute(); + TaskManager.getInstance().getStatusBar().setMessage("Learning superclass expressions..."); + TaskManager.getInstance().getStatusBar().setProgress(0); + getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + superLearningTask = new SuperClassLearningTask(); + superLearningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); + superLearningTask.execute(); } + public void learnNextClass(){ + autoLearnPanel.resetPanel(); + OREManager.getInstance().setCurrentClass2Learn(new NamedClass("http://ns.softwiki.de/req/CustomerRequirement"));//classes.get(currentClassIndex)); + learnEquivalentClassExpressions(); + currentClassIndex++; + } + + @Override + public void actionPerformed(ActionEvent e) { + learnNextClass(); + } /** * Inner class to get all atomic classes in a background thread. @@ -122,7 +152,7 @@ autoLearnPanel.fillClassesTable(result); OREManager.getInstance().setCurrentClass2Learn(classes.get(0)); TaskManager.getInstance().setTaskFinished(); - learnEquivalentClassExpressions(); + learnNextClass(); } }); } @@ -130,134 +160,118 @@ class EquivalentLearningTask extends SwingWorker<Void, List<? extends EvaluatedDescription>> { + private Timer timer; + private LearningAlgorithm la; + private final int maxNrOfResults = OREManager.getInstance().getMaxNrOfResults(); + private final double threshold = OREManager.getInstance().getThreshold(); @Override public Void doInBackground() { OREManager.getInstance().setLearningType("equivalence"); OREManager.getInstance().setLearningProblem(); OREManager.getInstance().setLearningAlgorithm(); - - final LearningAlgorithm la = OREManager.getInstance().getLa(); - Timer timer = new Timer(); + la = OREManager.getInstance().getLa(); + + timer = new Timer(); + setProgress(0); + TaskManager.getInstance().getStatusBar().setMaximumValue(OREManager.getInstance().getMaxExecutionTimeInSeconds()); timer.schedule(new TimerTask(){ + int progress = 0; + List<? extends EvaluatedDescription> result; @SuppressWarnings("unchecked") @Override public void run() { - if(!isCancelled() && la.isRunning()){ - publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), - OREManager.getInstance().getThreshold(), true)); + if(la.isRunning()){ + progress += 1; + setProgress(progress); + result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); + publish(result); } } - }, 1000, 2000); + }, 1000, 1000); la.start(); return null; } @Override public void done() { - SwingUtilities.invokeLater(new Runnable() { - - @SuppressWarnings("unchecked") - @Override - public void run() { - - autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). - getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); - learnSubClassExpressions(); - - } - }); + timer.cancel(); + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); + updateList(result); + learnSubClassExpressions(); } @Override - protected void process(List<List<? extends EvaluatedDescription>> resultLists) { - + protected void process(List<List<? extends EvaluatedDescription>> resultLists) { for (List<? extends EvaluatedDescription> list : resultLists) { updateList(list); } } - private void updateList(final List<? extends EvaluatedDescription> result) { - - Runnable doUpdateList = new Runnable() { - - @SuppressWarnings("unchecked") - public void run() { - autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>) result); - } - }; - SwingUtilities.invokeLater(doUpdateList); - + @SuppressWarnings("unchecked") + private void updateList(final List<? extends EvaluatedDescription> result) { + autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>) result); } } class SuperClassLearningTask extends SwingWorker<Void, List<? extends EvaluatedDescription>> { + private Timer timer; + private LearningAlgorithm la; + private final int maxNrOfResults = OREManager.getInstance().getMaxNrOfResults(); + private final double threshold = OREManager.getInstance().getThreshold(); @Override public Void doInBackground() { OREManager.getInstance().setLearningType("superClass"); OREManager.getInstance().setLearningProblem(); OREManager.getInstance().setLearningAlgorithm(); - - final LearningAlgorithm la = OREManager.getInstance().getLa(); - Timer timer = new Timer(); + la = OREManager.getInstance().getLa(); + + timer = new Timer(); + setProgress(0); + TaskManager.getInstance().getStatusBar().setMaximumValue(OREManager.getInstance().getMaxExecutionTimeInSeconds()); timer.schedule(new TimerTask(){ + int progress = 0; + List<? extends EvaluatedDescription> result; @SuppressWarnings("unchecked") @Override public void run() { - if(!isCancelled() && la.isRunning()){ - publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), - OREManager.getInstance().getThreshold(), true)); + if(la.isRunning()){ + progress += 1; + setProgress(progress); + result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); + publish(result); } } - }, 1000, 2000); + }, 1000, 1000); la.start(); - return null; } @Override public void done() { - SwingUtilities.invokeLater(new Runnable() { - - @SuppressWarnings("unchecked") - @Override - public void run() { - - autoLearnPanel.fillSuperClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). - getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); - TaskManager.getInstance().setTaskFinished(); - } - }); + timer.cancel(); + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(maxNrOfResults, threshold, true); + updateList(result); + TaskManager.getInstance().setTaskFinished(); + setProgress(0); } @Override - protected void process(List<List<? extends EvaluatedDescription>> resultLists) { - + protected void process(List<List<? extends EvaluatedDescription>> resultLists) { for (List<? extends EvaluatedDescription> list : resultLists) { updateList(list); } } + @SuppressWarnings("unchecked") private void updateList(final List<? extends EvaluatedDescription> result) { - - Runnable doUpdateList = new Runnable() { - - @SuppressWarnings("unchecked") - public void run() { - autoLearnPanel.fillSuperClassExpressionsTable((List<EvaluatedDescriptionClass>) result); - } - }; - SwingUtilities.invokeLater(doUpdateList); - + autoLearnPanel.fillSuperClassExpressionsTable((List<EvaluatedDescriptionClass>) result); } } - - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -1,13 +1,22 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.awt.BorderLayout; +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; -import javax.swing.SwingUtilities; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSpinner; import javax.swing.SwingWorker; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.ExplanationManagerListener; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.RepairManager; import org.dllearner.tools.ore.RepairManagerListener; @@ -18,7 +27,7 @@ import org.mindswap.pellet.owlapi.Reasoner; import org.semanticweb.owl.model.OWLOntologyChange; -public class InconsistencyExplanationPanelDescriptor extends WizardPanelDescriptor implements ActionListener, RepairManagerListener{ +public class InconsistencyExplanationPanelDescriptor extends WizardPanelDescriptor implements ActionListener,ChangeListener, ExplanationManagerListener, RepairManagerListener{ public static final String IDENTIFIER = "INCONSISTENCY_PANEL"; public static final String INFORMATION = ""; @@ -32,14 +41,18 @@ } public void init() { - reasoner = OREManager.getInstance().getReasoner() - .getReasoner(); + reasoner = OREManager.getInstance().getReasoner().getReasoner(); + expMan = ExplanationManager.getInstance(OREManager.getInstance()); - expMan.setComputeAllExplanationsMode(true); + expMan.addListener(this); + repMan = RepairManager.getInstance(OREManager.getInstance()); repMan.addListener(this); + panel = new InconsistencyExplanationPanel(); panel.addActionListeners(this); + panel.addChangeListener(this); + setPanelComponent(panel); } @@ -79,28 +92,77 @@ showExplanations(); } - @Override - public void actionPerformed(ActionEvent e) { - if (e.getActionCommand().equals("regular")) { - expMan.setLaconicMode(false); - } else if (e.getActionCommand().equals("laconic")) { - expMan.setLaconicMode(true); - } - } + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("regular")) { + expMan.setLaconicMode(false); + } else if (e.getActionCommand().equals("laconic")) { + expMan.setLaconicMode(true); + } else if (e.getActionCommand().equals("all")){ + conditionalWarning("Computing all explanations might take a long time!", getWizard().getDialog()); + expMan.setComputeAllExplanationsMode(true); + panel.setMaxExplanationsMode(false); + } else if (e.getActionCommand().equals("max")){ + expMan.setComputeAllExplanationsMode(false); + panel.setMaxExplanationsMode(true); + } + } + @Override public void repairPlanChanged() { // TODO Auto-generated method stub } + + @Override + public void stateChanged(ChangeEvent e) { + JSpinner spinner = (JSpinner)e.getSource(); + expMan.setMaxExplantionCount(((Integer)spinner.getValue()).intValue()); + + } @Override + public void explanationLimitChanged() { + showExplanations(); + } + + @Override + public void explanationTypeChanged() { + showExplanations(); + } + + @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { showExplanations(); panel.repaint(); setNextButtonEnabled2ConsistentOntology(); } + private void conditionalWarning(final String notice, Component parent) { + class NotifyPanel extends JPanel { + /** + * + */ + private static final long serialVersionUID = -5602333953438722592L; + + public NotifyPanel() { + final JCheckBox enough = new JCheckBox("Don't show this message again", expMan.isAllExplanationWarningChecked()); + enough.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + expMan.setAllExplanationWarningChecked(); + } + }); + setLayout(new BorderLayout()); + add(new JLabel("<html><font size=+1>" + notice + "</font></html>"), BorderLayout.CENTER); + add(enough, BorderLayout.SOUTH); + } + } + if( ! expMan.isAllExplanationWarningChecked()) + JOptionPane.showMessageDialog(parent, new NotifyPanel(), "Warning", JOptionPane.WARNING_MESSAGE); + } + class ExplanationTask extends SwingWorker<Void, Void>{ @Override @@ -118,22 +180,16 @@ } private void showExplanations(){ - - SwingUtilities.invokeLater(new Runnable() { - - @Override - public void run() { - panel.clearExplanationsPanel(); - int counter = 1; - for (Explanation explanation : expMan - .getInconsistencyExplanations()) { - panel.addExplanation(explanation, counter); - counter++; - } - panel.validate(); - + panel.clearExplanationsPanel(); + int counter = 1; + for (Explanation explanation : expMan.getInconsistencyExplanations()) { + panel.addExplanation(explanation, counter); + counter++; + if(counter > expMan.getMaxExplantionCount() && !expMan.isComputeAllExplanationsMode()){ + break; } - }); + } + panel.validate(); TaskManager.getInstance().setTaskFinished(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -26,9 +26,7 @@ import java.util.List; import java.util.Timer; import java.util.TimerTask; -import java.util.concurrent.ExecutionException; -import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -212,12 +210,12 @@ * @author Lorenz Buehmann * */ - class LearningTask extends SwingWorker<List<? extends EvaluatedDescription>, List<? extends EvaluatedDescription>> { + class LearningTask extends SwingWorker<Void, List<? extends EvaluatedDescription>> { @SuppressWarnings("unchecked") @Override - public List<? extends EvaluatedDescription> doInBackground() { + public Void doInBackground() { OREManager.getInstance().setLearningProblem(); OREManager.getInstance().setLearningAlgorithm(); @@ -233,32 +231,27 @@ @Override public void run() {progress += 1;setProgress(progress); if(!isCancelled() && la.isRunning()){ - publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), - OREManager.getInstance().getThreshold(), true)); + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), + OREManager.getInstance().getThreshold(), true); + publish(result); } } }, 1000, 1000); - OREManager.getInstance().start(); + la.start(); - List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions - (OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true); - return result; + + return null; } @Override public void done() { timer.cancel(); - List<? extends EvaluatedDescription> result = null; - try { - result = get(); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (ExecutionException e) { - e.printStackTrace(); - } + + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), + OREManager.getInstance().getThreshold(), true); updateList(result); TaskManager.getInstance().setTaskFinished(); setProgress(0); @@ -269,22 +262,14 @@ @Override protected void process(List<List<? extends EvaluatedDescription>> resultLists) { - for (List<? extends EvaluatedDescription> list : resultLists) { updateList(list); } } - private void updateList(final List<? extends EvaluatedDescription> result) { - - Runnable doUpdateList = new Runnable() { - - @SuppressWarnings("unchecked") - public void run() { - learnPanel.getResultTable().addResults((List<EvaluatedDescriptionClass>) result); - } - }; - SwingUtilities.invokeLater(doUpdateList); + @SuppressWarnings("unchecked") + private void updateList(final List<? extends EvaluatedDescription> result) { + learnPanel.getResultTable().addResults((List<EvaluatedDescriptionClass>) result); } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -1,11 +1,17 @@ package org.dllearner.tools.ore.ui.wizard.panels; import java.awt.BorderLayout; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.event.ActionListener; import java.util.List; import java.util.Set; import javax.swing.BorderFactory; +import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; @@ -36,7 +42,15 @@ private GraphicalCoveragePanel equivalentClassCoveragePanel; private GraphicalCoveragePanel superClassCoveragePanel; - + + private JLabel equivalentInconsistencyLabel; + private JLabel superInconsistencyLabel; + + private JButton skipButton; + + private final static String INCONSISTENY_WARNING = "<html><font color=red>" + + "Warning. Selected class expressions leads to an inconsistent ontology!" + + "</font></html>"; public AutoLearnPanel(){ createUI(); } @@ -68,29 +82,78 @@ equivSubSplitPane.setOneTouchExpandable(true); equivSubSplitPane.setDividerLocation(0.5); + equivSubSplitPane.setTopComponent(createEquivalentPanel()); + equivSubSplitPane.setBottomComponent(createSuperPanel()); + + addTableSelectionListeners(); + + skipButton = new JButton("Skip"); + skipButton.setActionCommand("skip"); + + resultPanel.add(equivSubSplitPane, BorderLayout.CENTER); + resultPanel.add(skipButton, BorderLayout.SOUTH); + + return resultPanel; + } + + private JComponent createEquivalentPanel(){ + GridBagConstraints c = new GridBagConstraints(); equivalentPanel = new JPanel(); + equivalentPanel.setLayout(new GridBagLayout()); + + c.weightx = 1.0; + c.weighty = 1.0; + c.fill = GridBagConstraints.BOTH; + c.gridx = 0; + c.gridy = 0; equivalentClassResultsTable = new EquivalentClassExpressionsTable(); equivalentClassResultsTable.setName("equivalent"); - equivalentPanel.add(new JScrollPane(equivalentClassResultsTable)); + equivalentPanel.add(new JScrollPane(equivalentClassResultsTable), c); + + c.weightx = 0.0; + c.weighty = 0.0; + c.gridx = 1; + c.gridy = 0; equivalentClassCoveragePanel = new GraphicalCoveragePanel(""); - equivalentPanel.add(equivalentClassCoveragePanel); + equivalentPanel.add(equivalentClassCoveragePanel, c); equivalentPanel.setBorder(BorderFactory.createTitledBorder("Equivalent class expressions")); + c.gridx = 0; + c.gridy = 1; + equivalentInconsistencyLabel = new JLabel(" "); + equivalentPanel.add(equivalentInconsistencyLabel, c); + + return equivalentPanel; + } + + private JComponent createSuperPanel(){ + GridBagConstraints c = new GridBagConstraints(); superPanel = new JPanel(); + superPanel.setLayout(new GridBagLayout()); + + c.weightx = 1.0; + c.weighty = 1.0; + c.fill = GridBagConstraints.BOTH; + c.gridx = 0; + c.gridy = 0; superClassResultsTable = new EquivalentClassExpressionsTable(); superClassResultsTable.setName("super"); - superPanel.add(new JScrollPane(superClassResultsTable)); + superPanel.add(new JScrollPane(superClassResultsTable), c); + + c.weightx = 0.0; + c.weighty = 0.0; + c.gridx = 1; + c.gridy = 0; superClassCoveragePanel = new GraphicalCoveragePanel(""); - superPanel.add(superClassCoveragePanel); + superPanel.add(superClassCoveragePanel, c); superPanel.setBorder(BorderFactory.createTitledBorder("Superclass expressions")); - addTableSelectionListeners(); + c.gridx = 0; + c.gridy = 1; + superInconsistencyLabel = new JLabel(" "); + superPanel.add(superInconsistencyLabel, c); - equivSubSplitPane.setTopComponent(equivalentPanel); - equivSubSplitPane.setBottomComponent(superPanel); - - resultPanel.add(equivSubSplitPane); - return resultPanel; + return superPanel; } public void fillClassesTable(Set<NamedClass> classes){ @@ -105,6 +168,17 @@ equivalentClassResultsTable.addResults(resultList); } + public void addActionListener(ActionListener aL){ + skipButton.addActionListener(aL); + } + + public void resetPanel(){ + equivalentClassResultsTable.clear(); + superClassResultsTable.clear(); + equivalentClassCoveragePanel.clear(); + superClassCoveragePanel.clear(); + } + private void addTableSelectionListeners(){ equivalentClassResultsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override @@ -114,7 +188,12 @@ EvaluatedDescriptionClass selectedClassExpression = equivalentClassResultsTable.getSelectedValue(); OREManager.getInstance().setNewClassDescription(selectedClassExpression); - equivalentClassCoveragePanel.setNewClassDescription(selectedClassExpression); + equivalentClassCoveragePanel.setNewClassDescription(selectedClassExpression); + if(!selectedClassExpression.isConsistent()){ + equivalentInconsistencyLabel.setText(INCONSISTENY_WARNING); + } else { + equivalentInconsistencyLabel.setText(" "); + } } } @@ -129,7 +208,12 @@ EvaluatedDescriptionClass selectedClassExpression = superClassResultsTable.getSelectedValue(); OREManager.getInstance().setNewClassDescription(selectedClassExpression); - superClassCoveragePanel.setNewClassDescription(selectedClassExpression); + superClassCoveragePanel.setNewClassDescription(selectedClassExpression); + if(!selectedClassExpression.isConsistent()){ + superInconsistencyLabel.setText(INCONSISTENY_WARNING); + } else { + superInconsistencyLabel.setText(" "); + } } } }); @@ -143,4 +227,14 @@ superClassCoveragePanel.setNewClassDescription(desc); } + public static void main(String[] args){ + JFrame frame = new JFrame(); + + + frame.add(new AutoLearnPanel()); + frame.pack(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setVisible(true); + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -28,6 +28,7 @@ import javax.swing.BorderFactory; import javax.swing.ButtonGroup; +import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -72,29 +73,45 @@ private void createUI(){ setLayout(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + JPanel optionsPanel = new JPanel(new GridLayout(0, 1)); + autoLearnButton = new JRadioButton("Automatic learning mode"); autoLearnButton.setActionCommand("auto"); + manualLearnButton = new JRadioButton("Manual learning mode"); manualLearnButton.setActionCommand("manual"); + ButtonGroup learningType = new ButtonGroup(); learningType.add(manualLearnButton); learningType.add(autoLearnButton); autoLearnButton.setSelected(true); optionsPanel.add(autoLearnButton); optionsPanel.add(manualLearnButton); + HelpablePanel optionsHelpPanel = new HelpablePanel(optionsPanel); optionsHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); - add(optionsHelpPanel); + c.gridwidth = GridBagConstraints.REMAINDER; + add(optionsHelpPanel, c); + createAutoLearnPanel(); createManualLearnPanel(); + + Dimension size = new Dimension(500, 500); + autoLearnPanel.setPreferredSize(size); + manualLearnPanel.setPreferredSize(size); + currentPanel = autoLearnPanel; - add(currentPanel); + add(currentPanel, c); } private void createAutoLearnPanel(){ JPanel panel = new JPanel(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + + c.gridwidth = GridBagConstraints.REMAINDER; JPanel minInstancesCountPanel = new JPanel(); minInstancesCountPanel.add(new JLabel("Min. instance count per class: ")); minInstanceCountSpinner = new JSpinner(); @@ -102,9 +119,10 @@ javax.swing.SpinnerModel spinnerModel = new SpinnerNumberModel(1, 1, 500, 1); minInstanceCountSpinner.setModel(spinnerModel); minInstancesCountPanel.add(minInstanceCountSpinner); - panel.add(minInstancesCountPanel); + panel.add(minInstancesCountPanel, c); + learningOptionsPanel = new LearningOptionsPanel(); - panel.add(learningOptionsPanel); + panel.add(learningOptionsPanel, c); autoLearnPanel = panel; } @@ -187,8 +205,19 @@ OREManager.getInstance().setMaxExecutionTimeInSeconds(learningOptionsPanel.getMaxExecutionTime()); OREManager.getInstance().setMaxNrOfResults(learningOptionsPanel.getNrOfConcepts()); OREManager.getInstance().setNoisePercentage(learningOptionsPanel.getMinAccuracy()); + OREManager.getInstance().setThreshold(learningOptionsPanel.getThreshold()); OREManager.getInstance().setMinInstanceCount(((Integer)(minInstanceCountSpinner.getValue())).intValue()); } + + public static void main(String[] args){ + JFrame frame = new JFrame(); + + + frame.add(new ClassChoosePanel()); + frame.pack(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setVisible(true); + } } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/InconsistencyExplanationPanel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -2,8 +2,13 @@ import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.GridLayout; +import java.awt.Insets; import java.awt.event.ActionListener; +import java.util.HashSet; +import java.util.Set; import javax.swing.BorderFactory; import javax.swing.Box; @@ -13,12 +18,18 @@ import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; +import javax.swing.JSpinner; import javax.swing.JSplitPane; +import javax.swing.SpinnerNumberModel; +import javax.swing.border.EtchedBorder; +import javax.swing.event.ChangeListener; import org.dllearner.tools.ore.explanation.Explanation; import org.dllearner.tools.ore.ui.ExplanationTable; import org.dllearner.tools.ore.ui.ExplanationTablePanel; +import org.dllearner.tools.ore.ui.HelpablePanel; import org.dllearner.tools.ore.ui.RepairPlanPanel; +import org.dllearner.tools.ore.ui.UnsatisfiableClassesTable; import org.semanticweb.owl.apibinding.OWLManager; public class InconsistencyExplanationPanel extends JPanel{ @@ -28,81 +39,142 @@ */ private static final long serialVersionUID = 9206626647697013786L; - private JSplitPane statsSplitPane; - private JScrollPane explanationsScrollPane; private JComponent explanationsPanel; + private JPanel buttonExplanationsPanel; - private JPanel buttonPanel; + + private ButtonGroup explanationType; private JRadioButton regularButton; private JRadioButton laconicButton; + private JRadioButton computeAllExplanationsRadioButton; + private JRadioButton computeMaxExplanationsRadioButton; + private JSpinner maxExplanationsSelector; + + + private Set<ExplanationTablePanel> explanationPanels; + private Set<ExplanationTable> explanationTables; + + public InconsistencyExplanationPanel() { + createUI(); + } + private void createUI(){ setLayout(new BorderLayout()); + add(createDebuggingPanel()); + } + + private JComponent createDebuggingPanel(){ + JSplitPane debuggingSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + debuggingSplitPane.setDividerLocation(500); + debuggingSplitPane.setOneTouchExpandable(true); - Dimension minimumSize = new Dimension(400, 400); - - + debuggingSplitPane.setTopComponent(createExplanationPanel()); + debuggingSplitPane.setBottomComponent(createRepairPanel()); + + return debuggingSplitPane; + } + + private JComponent createExplanationPanel(){ explanationsPanel = new Box(1); + + explanationPanels = new HashSet<ExplanationTablePanel>(); + explanationTables = new HashSet<ExplanationTable>(); JPanel pan = new JPanel(new BorderLayout()); pan.add(explanationsPanel, BorderLayout.NORTH); explanationsScrollPane = new JScrollPane(pan); - explanationsScrollPane.setPreferredSize(minimumSize); - explanationsScrollPane.setBorder(BorderFactory - .createLineBorder(Color.LIGHT_GRAY)); + + explanationsScrollPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); explanationsScrollPane.getViewport().setOpaque(false); explanationsScrollPane.getViewport().setBackground(null); explanationsScrollPane.setOpaque(false); + + buttonExplanationsPanel = new JPanel(); + buttonExplanationsPanel.setLayout(new BorderLayout()); + buttonExplanationsPanel.add(explanationsScrollPane, BorderLayout.CENTER); + JPanel holder = new JPanel(new BorderLayout()); + holder.add(createExplanationHeaderPanel(), BorderLayout.WEST); + buttonExplanationsPanel.add(holder, BorderLayout.NORTH); + + return buttonExplanationsPanel; - regularButton = new JRadioButton("regular", true); + } + + private JComponent createExplanationHeaderPanel(){ + JPanel headerPanel = new JPanel(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + + + JPanel explanationTypePanel = new JPanel(new GridLayout(0, 1)); + regularButton = new JRadioButton("Show regular explanations", true); regularButton.setActionCommand("regular"); - - laconicButton = new JRadioButton("laconic"); + regularButton.setSelected(true); + laconicButton = new JRadioButton("Show precise explanations"); laconicButton.setActionCommand("laconic"); - explanationType = new ButtonGroup(); explanationType.add(regularButton); explanationType.add(laconicButton); - buttonPanel = new JPanel(); - buttonPanel.add(regularButton); - buttonPanel.add(laconicButton); - - buttonExplanationsPanel = new JPanel(); - buttonExplanationsPanel.setLayout(new BorderLayout()); - buttonExplanationsPanel - .add(explanationsScrollPane, BorderLayout.CENTER); - buttonExplanationsPanel.add(buttonPanel, BorderLayout.NORTH); - - statsSplitPane = new JSplitPane(0); - statsSplitPane.setResizeWeight(1.0D); - statsSplitPane.setTopComponent(buttonExplanationsPanel); + explanationTypePanel.add(regularButton); + explanationTypePanel.add(laconicButton); + HelpablePanel explanationTypeHelpPanel = new HelpablePanel(explanationTypePanel); + explanationTypeHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); - //repair panel - JPanel repairPanelHolder = new JPanel(); - repairPanelHolder.setOpaque(false); - repairPanelHolder.setLayout(new BorderLayout()); - repairPanelHolder.add(new JLabel("Repair plan"), BorderLayout.NORTH); - RepairPlanPanel repairPanel = new RepairPlanPanel(); - repairPanelHolder.add(repairPanel); + JPanel explanationCountPanel = new JPanel(new GridBagLayout()); - statsSplitPane.setBottomComponent(repairPanelHolder); - - statsSplitPane.setBorder(null); - statsSplitPane.setDividerLocation(500); - statsSplitPane.setOneTouchExpandable(true); - - add(statsSplitPane); + maxExplanationsSelector = new JSpinner(); + maxExplanationsSelector.setEnabled(true); + javax.swing.SpinnerModel spinnerModel = new SpinnerNumberModel(1, 1, 500, 1); + maxExplanationsSelector.setModel(spinnerModel); + maxExplanationsSelector.setBorder(BorderFactory.createEmptyBorder(0, 30, 0, 0)); + + computeAllExplanationsRadioButton = new JRadioButton("Compute all explanations"); + computeAllExplanationsRadioButton.setActionCommand("all"); + + computeMaxExplanationsRadioButton = new JRadioButton("Limit explanation count to:"); + computeMaxExplanationsRadioButton.setActionCommand("max"); + computeMaxExplanationsRadioButton.setSelected(true); + + ButtonGroup limitButtonGroup = new ButtonGroup(); + limitButtonGroup.add(computeAllExplanationsRadioButton); + limitButtonGroup.add(computeMaxExplanationsRadioButton); + + explanationCountPanel.add(computeAllExplanationsRadioButton, new GridBagConstraints(0, 0, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); + explanationCountPanel.add(computeMaxExplanationsRadioButton, new GridBagConstraints(0, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); + explanationCountPanel.add(maxExplanationsSelector, new GridBagConstraints(1, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); + + HelpablePanel explanationCountHelpPanel = new HelpablePanel(explanationCountPanel); + explanationCountHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); + + c.fill = GridBagConstraints.VERTICAL; + + headerPanel.add(explanationTypeHelpPanel, c); + c.anchor = GridBagConstraints.LINE_END; + headerPanel.add(explanationCountHelpPanel, c); + + return headerPanel; + } + private JComponent createRepairPanel(){ + JPanel repairPanel = new JPanel(new BorderLayout()); + repairPanel.add(new JLabel("Repair plan"), BorderLayout.NORTH); + repairPanel.add(new RepairPlanPanel(), BorderLayout.CENTER); + return repairPanel; } - public void clearExplanationsPanel(){ + public void clearExplanationsPanel() { explanationsPanel.removeAll(); + explanationsPanel.validate(); } + public void setMaxExplanationsMode(boolean value){ + maxExplanationsSelector.setEnabled(value); + } + public void addExplanation(Explanation explanation, int counter){ ExplanationTable expTable = new ExplanationTable(explanation, OWLManager.createOWLOntologyManager().getOWLDataFactory().getOWLThing()); explanationsPanel.add(new ExplanationTablePanel(expTable, counter)); @@ -113,6 +185,12 @@ public void addActionListeners(ActionListener aL){ regularButton.addActionListener(aL); laconicButton.addActionListener(aL); + computeAllExplanationsRadioButton.addActionListener(aL); + computeMaxExplanationsRadioButton.addActionListener(aL); } + public void addChangeListener(ChangeListener cL){ + maxExplanationsSelector.addChangeListener(cL); + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-30 06:19:13 UTC (rev 1870) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-10-01 12:05:40 UTC (rev 1871) @@ -137,56 +137,11 @@ JPanel pan = new JPanel(new BorderLayout()); pan.add(explanationsPanel, BorderLayout.NORTH); explanationsScrollPane = new JScrollPane(pan); -// explanationsScrollPane.setPreferredSize(minimumSize); + explanationsScrollPane.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY)); explanationsScrollPane.getViewport().setOpaque(false); explanationsScrollPane.getViewport().setBackground(null); explanationsScrollPane.setOpaque(false); - -// regularButton = new JRadioButton("Show regular explanations", true); -// regularButton.setActionCommand("regular"); -// regularButton.setSelected(true); -// laconicButton = new JRadioButton("Show precise explanations"); -// laconicButton.setActionCommand("laconic"); -// -// explanationType = new ButtonGroup(); -// explanationType.add(regularButton); -// explanationType.add(laconicButton); -// -// buttonPanel = new JPanel(); -// buttonPanel.setLayout(new GridBagLayout()); -// buttonPanel.add(regularButton, new GridBagConstraints(0, 0, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 2, 30), 0, 0)); -// buttonPanel.add(laconicButton, new GridBagConstraints(0, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 30), 0, 0)); -// HelpablePanel explanationTypeHelpPanel = new HelpablePanel(buttonPanel); -// explanationTypeHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); -// -// JPanel buttonPanelHolder = new JPanel(new BorderLayout()); -// buttonPanelHolder.add(explanationTypeHelpPanel, "West"); -// -// maxExplanationsSelector = new JSpinner(); -// maxExplanationsSelector.setEnabled(true); -// javax.swing.SpinnerModel spinnerModel = new SpinnerNumberModel(1, 1, 500, 1); -// maxExplanationsSelector.setModel(spinnerModel); -// maxExplanationsSelector.setBorder(BorderFactory.createEmptyBorder(0, 30, 0, 0)); -// -// computeAllExplanationsRadioButton = new JRadioButton("Compute all explanations"); -// computeAllExplanationsRadioButton.setActionCommand("all"); -// -// computeMaxExplanationsRadioButton = new JRadioButton("Limit explanation count to:"); -// computeMaxExplanationsRadioButton.setActionCommand("MAX"); -// computeMaxExplanationsRadioButton.setSelected(true); -// -// ButtonGroup limitButtonGroup = new ButtonGroup(); -// limitButtonGroup.add(computeAllExplanationsRadioButton); -// limitButtonGroup.add(computeMaxExplanationsRadioButton); -// -//// buttonPanel.add(computeAllExplanationsRadioButton, new GridBagConstraints(1, 0, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); -//// buttonPanel.add(computeMaxExplanationsRadioButton, new GridBagConstraints(1, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); -//// buttonPanel.add(maxExplanationsSelector, new GridBagConstraints(3, 1, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); -// -// strikeOutBox = new JCheckBox("Strike out irrelevant parts"); -// strikeOutBox.setActionCommand("strike"); -//// buttonPanel.add(strikeOutBox, new GridBagConstraints(3, 0, 1, 1, 0.0D, 0.0D, 12, 2, new Insets(0, 0, 0, 0), 0, 0)); buttonExplanationsPanel = new JPanel(); buttonExplanationsPanel.setLayout(new BorderLayout()); @@ -231,7 +186,7 @@ computeAllExplanationsRadioButton.setActionCommand("all"); computeMaxExplanationsRadioButton = new JRadioButton("Limit explanation count to:"); - computeMaxExplanationsRadioButton.setActionCommand("MAX"); + computeMaxExplanationsRadioButton.setActionCommand("max"); computeMaxExplanationsRadioButton.setSelected(true); ButtonGroup limitButtonGroup = new ButtonGroup(); @@ -283,20 +238,20 @@ return impactRepairPanel; } - private JComponent createRepairPanel(){ - return new RepairPlanPanel(); - } +// private JComponent createRepairPanel(){ +// return new RepairPlanPanel(); +// } +// +// private JComponent createImpactPanel(){ +// ImpactTable impactTable = new ImpactTable(); +// JScrollPane impScr = new JScrollPane(impactTable); +// JPanel impactPanel = new JPanel(); +// impactPanel.setLayout(new BorderLayout()); +// impactPanel.add(new JLabel("Impact"), BorderLayout.NORTH); +// impactPanel.add(impScr); +// return impactPanel; +// } - private JComponent createImpactPanel(){ - ImpactTable impactTable = new ImpactTable(); - JScrollPane impScr = new JScrollPane(impactTable); - JPanel impactPanel = new JPanel(); - impactPanel.setLayout(new BorderLayout()); - impactPanel.add(new JLabel("Impact"), BorderLayout.NORTH); - impactPanel.add(impScr); - return impactPanel; - } - public void fillUnsatClassesTable(List<OWLClass> unsatClasses) { unsatClassesTable.addUnsatClasses(unsatClasses); unsatClassesScrollPane.validate(); @@ -306,17 +261,6 @@ explanationsPanel.removeAll(); explanationsPanel.validate(); } - - public void addExplanation(Explanation explanation, OWLClass unsat, int counter) { - ExplanationTable expTable = new ExplanationTable(explanation, unsat); - ExplanationTablePanel panel = new ExplanationTablePanel(expTable, counter); - explanationsPanel.add(panel); - explanationsPanel.add(Box.createVerticalStrut(10)); - explanationPanels.add(panel); -// explanationsPanel.add(new JSeparator()); -// explanationsPanel.add(Box.createVerticalStrut(10)); -// this.updateUI(); - } public void addExplanations(Set<Explanation> explanations, OWLClass unsat){ explanationTables.clear(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ku...@us...> - 2009-09-30 06:19:21
|
Revision: 1870 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1870&view=rev Author: kurzum Date: 2009-09-30 06:19:13 +0000 (Wed, 30 Sep 2009) Log Message: ----------- some minor changes and test case Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/manipulator/AddAllStringsAsClasses.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/test/JenaConstruct.java Modified: trunk/src/dl-learner/org/dllearner/kb/manipulator/AddAllStringsAsClasses.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/manipulator/AddAllStringsAsClasses.java 2009-09-29 15:59:38 UTC (rev 1869) +++ trunk/src/dl-learner/org/dllearner/kb/manipulator/AddAllStringsAsClasses.java 2009-09-30 06:19:13 UTC (rev 1870) @@ -101,6 +101,7 @@ } tmp = namespace+tmp; tmp = tmp.replaceAll("%", "_"); + tmp = "c"+tmp; keep.add(new RDFNodeTuple(new ResourceImpl(OWLVocabulary.RDF_TYPE),new ResourceImpl(tmp))); }else { Added: trunk/src/dl-learner/org/dllearner/test/JenaConstruct.java =================================================================== --- trunk/src/dl-learner/org/dllearner/test/JenaConstruct.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/test/JenaConstruct.java 2009-09-30 06:19:13 UTC (rev 1870) @@ -0,0 +1,84 @@ +package org.dllearner.test; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URI; +import java.net.URL; +import java.net.URLConnection; + +import org.semanticweb.owl.apibinding.OWLManager; +import org.semanticweb.owl.model.OWLOntology; +import org.semanticweb.owl.model.OWLOntologyManager; + + + +/** + * this class was submitted to Jena Bug Tracker + * + */ +public class JenaConstruct { + + public static void main(String[] args) { + try{ + URL url = new URL ("http://localhost/ontowiki/model/export/?m=http://ns.softwiki.de/req/&f=rdfxml"); + getWholeOWLAPIOntology(url); + }catch (Exception e) { + e.printStackTrace(); + } + } + +public static OWLOntology getWholeOWLAPIOntology(URL url){ + OWLOntology onto = null; + try{ + File f = File.createTempFile("dllearneronto", ".rdf"); + try{ + //assemble + + //URL url = new URL (owbase+"model/export/?m="+namespace+"&f=rdfxml"); +// URLConnection u = url.openConnection(); +// String content = toString(u.getInputStream()); +// +// +// FileWriter fw = new FileWriter(f); +// fw.write(content); +// fw.close(); + URI physicalURI = url.toURI(); +// URI physicalURI = f.toURI(); + OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); + onto = manager.loadOntologyFromPhysicalURI(physicalURI); + System.out.println(onto.getAxiomCount()); + }catch (Exception e) { + e.printStackTrace(); + }finally{ + f.delete(); + + } + + }catch (Exception e) { + e.printStackTrace(); + } + return onto; + +} + + public static String toString(InputStream in) + throws IOException +{ + + BufferedReader reader = new BufferedReader(new InputStreamReader(in)); + + String result = ""; + String line; + while(null != (line = reader.readLine())){ + if(line.startsWith("#")){continue;} + result += line + "\n"; + } + return result; +} + + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-29 15:59:52
|
Revision: 1869 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1869&view=rev Author: lorenz_b Date: 2009-09-29 15:59:38 +0000 (Tue, 29 Sep 2009) Log Message: ----------- continued auto learning mode Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ManualLearnPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTableModel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/Help-24x24.png Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -236,6 +236,10 @@ public void setMaxExecutionTimeInSeconds(int maxExecutionTimeInSeconds) { this.maxExecutionTimeInSeconds = maxExecutionTimeInSeconds; } + + public int getMaxExecutionTimeInSeconds(){ + return maxExecutionTimeInSeconds; + } public void setMaxNrOfResults(int maxNrOfResults) { this.maxNrOfResults = maxNrOfResults; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -46,6 +46,7 @@ dialog.setCursor(null); statusBar.setMessage("Done"); statusBar.showProgress(false); + statusBar.setProgress(0); } Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTable.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -0,0 +1,66 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; +import java.util.List; + +import javax.swing.ListSelectionModel; + +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; + +public class EquivalentClassExpressionsTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 486680925931781915L; + + private EvaluatedDescriptionClass old = null; + + public EquivalentClassExpressionsTable(){ + setBackground(Color.WHITE); + setHighlighters(HighlighterFactory.createAlternateStriping()); +// setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + setModel(new EquivalentClassExpressionsTableModel()); + setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + getColumn(1).setCellRenderer(new ManchesterSyntaxTableCellRenderer()); + setColumnSizes(); + getColumn(0).setResizable(false); + getColumn(1).setResizable(false); + setGridColor(Color.LIGHT_GRAY); + } + + private void setColumnSizes(){ + getColumn(0).setMaxWidth(100); + getColumn(1).setPreferredWidth(430); + getColumn(2).setMaxWidth(30); + + } + + + + public void clear(){ + ((EquivalentClassExpressionsTableModel)getModel()).clear(); + } + + public void addResults(List<EvaluatedDescriptionClass> resultList){ + + if(getSelectedRow() >= 0){ + old = getSelectedValue(); + } + ((EquivalentClassExpressionsTableModel)getModel()).addResults(resultList); + if(old != null){ + int newRowIndex = ((EquivalentClassExpressionsTableModel)getModel()).getSelectionIndex(old); + if(newRowIndex >= 0){ + getSelectionModel().setSelectionInterval(newRowIndex, newRowIndex); + } + + } + } + + public EvaluatedDescriptionClass getSelectedValue(){ + return ((EquivalentClassExpressionsTableModel)getModel()).getSelectedValue(getSelectedRow()); + } + +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/EquivalentClassExpressionsTableModel.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -0,0 +1,114 @@ +package org.dllearner.tools.ore.ui; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import org.dllearner.core.owl.Description; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; + +public class EquivalentClassExpressionsTableModel extends AbstractTableModel { + + /** + * + */ + private static final long serialVersionUID = 8582947007601430481L; + + private List<EvaluatedDescriptionClass> resultList; + private DecimalFormat df; + private List<Boolean> selectionList; + + public EquivalentClassExpressionsTableModel(){ + super(); + resultList = new ArrayList<EvaluatedDescriptionClass>(); + selectionList = new ArrayList<Boolean>(); + df = new DecimalFormat("00%"); + } + + public EquivalentClassExpressionsTableModel(List<EvaluatedDescriptionClass> resultList){ + this.resultList = resultList; + } + + @Override + public int getColumnCount() { + return 3; + } + + @Override + public int getRowCount() { + return resultList.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if(columnIndex == 0){ + return df.format(resultList.get(rowIndex).getAccuracy()); + } else if(columnIndex == 1){ + return resultList.get(rowIndex).getDescription(); + } else { + return selectionList.get(rowIndex); + } + } + + @Override + public void setValueAt(Object value, int rowIndex, int columnIndex) { + + selectionList.set(rowIndex, (Boolean)value); + + super.fireTableCellUpdated(rowIndex, columnIndex); + + } + + @Override + public Class<? extends Object> getColumnClass(int columnIndex){ + switch(columnIndex){ + case 0: return String.class; + case 1: return Description.class; + case 2: return Boolean.class; + } + return null; + } + + @Override + public String getColumnName(int column){ + switch(column){ + case 0: return "Accuracy"; + case 1: return "Class expression"; + } + return ""; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(columnIndex == 2){ + return true; + } + return false; + } + + public void clear(){ + resultList.clear(); + fireTableDataChanged(); + } + + public void addResults(List<EvaluatedDescriptionClass> resultList){ + this.resultList.clear(); + this.resultList.addAll(resultList); + for(int i = 0; i < resultList.size(); i++){ + selectionList.add(i, Boolean.FALSE); + } + + fireTableRowsUpdated(0, this.resultList.size()); + } + + public EvaluatedDescriptionClass getSelectedValue(int rowIndex){ + return resultList.get(rowIndex); + } + + public int getSelectionIndex(EvaluatedDescriptionClass e){ + return resultList.indexOf(e); + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -141,8 +141,10 @@ AlphaComposite ac = AlphaComposite.getInstance( AlphaComposite.SRC_OVER, 0.5f); g2D.setColor(Color.BLACK); + if(OREManager.getInstance().getCurrentClass2Learn() != null){ g2D.drawString(ManchesterSyntaxRenderer.renderSimple(OREManager.getInstance().getCurrentClass2Learn()) , 320, 10); + } // g2D.setColor(Color.ORANGE); // g2D.fillOval(310, 20, 9, 9); g2D.setColor(Color.black); Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/Help-24x24.png =================================================================== (Binary files differ) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -22,10 +22,8 @@ import java.awt.BorderLayout; import java.awt.GridLayout; -import javax.swing.ButtonGroup; import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.JRadioButton; import javax.swing.JSlider; /** * This Class is responsible for the Options of the DL-Learner. @@ -46,10 +44,6 @@ private JSlider nrOfConcepts; private JSlider threshold; - private JRadioButton equivalentClassButton; - private JRadioButton superClassButton; - private ButtonGroup learningType; - private JPanel labelPanel; private JPanel sliderPanel; private double accuracy; @@ -106,22 +100,6 @@ sliderPanel.add(nrOfConcepts); sliderPanel.add(threshold); - JPanel learnTypePanel = new JPanel(); - learnTypePanel.setLayout(new GridLayout(0, 1)); - equivalentClassButton = new JRadioButton("Learn equivalent class expressions", true); - equivalentClassButton.setActionCommand("equivalent"); - equivalentClassButton.setSelected(true); - superClassButton = new JRadioButton("Learn super class expressions"); - superClassButton.setActionCommand("super"); - - learningType = new ButtonGroup(); - learningType.add(equivalentClassButton); - learningType.add(superClassButton); - - learnTypePanel.add(equivalentClassButton); - learnTypePanel.add(superClassButton); - -// holderPanel.add(BorderLayout.NORTH, learnTypePanel); holderPanel.add(BorderLayout.WEST, labelPanel); holderPanel.add(BorderLayout.CENTER, sliderPanel); add(holderPanel, BorderLayout.CENTER); @@ -161,8 +139,4 @@ return threshold.getValue()/100.0; } - public boolean isEquivalentClassesTypeSelected(){ - return equivalentClassButton.isSelected(); - } - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -13,6 +13,8 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.geom.Ellipse2D; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.Set; import javax.swing.BorderFactory; @@ -30,7 +32,7 @@ import com.clarkparsia.explanation.util.ExplanationProgressMonitor; -public class StatusBar extends JPanel implements ProgressMonitor, ExplanationProgressMonitor{ +public class StatusBar extends JPanel implements ProgressMonitor, ExplanationProgressMonitor, PropertyChangeListener{ /** * */ @@ -208,8 +210,23 @@ // TODO Auto-generated method stub } + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if ("progress" == evt.getPropertyName()) { + int progress = (Integer) evt.getNewValue(); + progressBar.setValue(progress); + + + } + + } + public void setMaximumValue(int max){ + progressBar.setMaximum(max); + } + } class AngledLinesWindowsCornerIcon implements Icon { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -26,6 +26,7 @@ import javax.swing.JOptionPane; import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.ui.wizard.descriptors.AutoLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.InconsistencyExplanationPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.KnowledgeSourcePanelDescriptor; @@ -120,7 +121,7 @@ } else { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; ((ClassChoosePanelDescriptor) nextDescriptor).resetPanel(); - ((ClassChoosePanelDescriptor) nextDescriptor).refill(); + } } } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(InconsistencyExplanationPanelDescriptor.IDENTIFIER)) { @@ -135,11 +136,11 @@ } else { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; ((ClassChoosePanelDescriptor) nextDescriptor).resetPanel(); - ((ClassChoosePanelDescriptor) nextDescriptor).refill(); + } } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)) { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; - ((ClassChoosePanelDescriptor) nextDescriptor).refill(); + } // else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ClassChoosePanelDescriptor.IDENTIFIER)) { // ore.makeOWAToCWA(); @@ -158,6 +159,8 @@ ClassChoosePanelDescriptor classChoose = ((ClassChoosePanelDescriptor) model .getPanelHashMap().get(nextPanelDescriptor)); classChoose.resetPanel(); + } else if(nextPanelDescriptor.equals(AutoLearnPanelDescriptor.IDENTIFIER)){ + ((ClassChoosePanelDescriptor)currentPanelDescriptor).setAutoLearningOptions(); } // else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(LearningPanelDescriptor.IDENTIFIER)){ // if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -1,15 +1,20 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Set; +import java.util.Timer; +import java.util.TimerTask; import java.util.TreeSet; import java.util.concurrent.ExecutionException; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; +import org.dllearner.core.EvaluatedDescription; +import org.dllearner.core.LearningAlgorithm; import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.tools.ore.OREManager; @@ -17,8 +22,7 @@ import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.AutoLearnPanel; -public class AutoLearnPanelDescriptor extends WizardPanelDescriptor { - +public class AutoLearnPanelDescriptor extends WizardPanelDescriptor{ /** * Identification string for class choose panel. */ @@ -29,6 +33,8 @@ public static final String INFORMATION = ""; private AutoLearnPanel autoLearnPanel; + + private List<NamedClass> classes; /** * Constructor creates new panel and adds listener to list. @@ -37,6 +43,7 @@ autoLearnPanel = new AutoLearnPanel(); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(autoLearnPanel); + classes = new ArrayList<NamedClass>(); } @Override @@ -59,6 +66,16 @@ new ClassRetrievingTask().execute(); } + public void learnEquivalentClassExpressions(){ + TaskManager.getInstance().setTaskStarted("Learning equivalent class expressions..."); + new EquivalentLearningTask().execute(); + } + + public void learnSubClassExpressions(){ + TaskManager.getInstance().setTaskStarted("Learning superclass expressions..."); + new SuperClassLearningTask().execute(); + } + /** * Inner class to get all atomic classes in a background thread. @@ -91,9 +108,9 @@ @Override public void run() { - Set<NamedClass> classes = Collections.emptySet(); + Set<NamedClass> result = Collections.emptySet(); try { - classes = get(); + result = get(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -101,15 +118,17 @@ // TODO Auto-generated catch block e.printStackTrace(); } - - autoLearnPanel.fillClassesTable(classes); + classes.addAll(result); + autoLearnPanel.fillClassesTable(result); + OREManager.getInstance().setCurrentClass2Learn(classes.get(0)); TaskManager.getInstance().setTaskFinished(); + learnEquivalentClassExpressions(); } }); } } - class EquivalentLearningTask extends SwingWorker<Void, Void> { + class EquivalentLearningTask extends SwingWorker<Void, List<? extends EvaluatedDescription>> { @Override @@ -117,7 +136,22 @@ OREManager.getInstance().setLearningType("equivalence"); OREManager.getInstance().setLearningProblem(); OREManager.getInstance().setLearningAlgorithm(); - OREManager.getInstance().getLa().start(); + + final LearningAlgorithm la = OREManager.getInstance().getLa(); + Timer timer = new Timer(); + timer.schedule(new TimerTask(){ + + @SuppressWarnings("unchecked") + @Override + public void run() { + if(!isCancelled() && la.isRunning()){ + publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), + OREManager.getInstance().getThreshold(), true)); + } + } + + }, 1000, 2000); + la.start(); return null; } @@ -130,14 +164,36 @@ public void run() { autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). - getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); - TaskManager.getInstance().setTaskFinished(); + getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); + learnSubClassExpressions(); + } }); } + + @Override + protected void process(List<List<? extends EvaluatedDescription>> resultLists) { + + for (List<? extends EvaluatedDescription> list : resultLists) { + updateList(list); + } + } + + private void updateList(final List<? extends EvaluatedDescription> result) { + + Runnable doUpdateList = new Runnable() { + + @SuppressWarnings("unchecked") + public void run() { + autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>) result); + } + }; + SwingUtilities.invokeLater(doUpdateList); + + } } - class SubclassLearningTask extends SwingWorker<Void, Void> { + class SuperClassLearningTask extends SwingWorker<Void, List<? extends EvaluatedDescription>> { @Override @@ -145,7 +201,23 @@ OREManager.getInstance().setLearningType("superClass"); OREManager.getInstance().setLearningProblem(); OREManager.getInstance().setLearningAlgorithm(); - OREManager.getInstance().getLa().start(); + + final LearningAlgorithm la = OREManager.getInstance().getLa(); + Timer timer = new Timer(); + timer.schedule(new TimerTask(){ + + @SuppressWarnings("unchecked") + @Override + public void run() { + if(!isCancelled() && la.isRunning()){ + publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), + OREManager.getInstance().getThreshold(), true)); + } + } + + }, 1000, 2000); + la.start(); + return null; } @@ -157,11 +229,35 @@ @Override public void run() { - autoLearnPanel.fillSubClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). + autoLearnPanel.fillSuperClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); TaskManager.getInstance().setTaskFinished(); } }); } + + @Override + protected void process(List<List<? extends EvaluatedDescription>> resultLists) { + + for (List<? extends EvaluatedDescription> list : resultLists) { + updateList(list); + } + } + + private void updateList(final List<? extends EvaluatedDescription> result) { + + Runnable doUpdateList = new Runnable() { + + @SuppressWarnings("unchecked") + public void run() { + autoLearnPanel.fillSuperClassExpressionsTable((List<EvaluatedDescriptionClass>) result); + } + }; + SwingUtilities.invokeLater(doUpdateList); + + } } + + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -40,6 +40,7 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.OREManagerListener; import org.dllearner.tools.ore.TaskManager; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.ClassChoosePanel; @@ -52,7 +53,7 @@ * @author Lorenz Buehmann * */ -public class ClassChoosePanelDescriptor extends WizardPanelDescriptor implements ListSelectionListener, ChangeListener, ActionListener{ +public class ClassChoosePanelDescriptor extends WizardPanelDescriptor implements OREManagerListener, ListSelectionListener, ChangeListener, ActionListener{ /** * Identification string for class choose panel. @@ -77,6 +78,7 @@ classChoosePanel.addChangeListener(this); classChoosePanel.addActionsListeners(this); + OREManager.getInstance().addListener(this); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(classChoosePanel); @@ -144,9 +146,11 @@ classChoosePanel.reset(); } - public void refill(){ - TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); - new ClassRetrievingTask().execute(); + public void retrieveClasses(){ + if(instanceCountToClasses.isEmpty()){ + TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); + new ClassRetrievingTask().execute(); + } } public void fillClassesList(int minInstanceCount){ @@ -207,6 +211,7 @@ classChoosePanel.setAutoLearningPanel(true); } else { classChoosePanel.setAutoLearningPanel(false); + retrieveClasses(); } setNextButtonAccordingToConceptSelected(); @@ -215,4 +220,14 @@ public boolean isAutoLearningMode(){ return classChoosePanel.isAutoLearnMode(); } + + public void setAutoLearningOptions(){ + classChoosePanel.setLearningOptions(); + } + + @Override + public void activeOntologyChanged() { + instanceCountToClasses.clear(); + + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -20,6 +20,7 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; @@ -129,14 +130,16 @@ public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ String learningType = ""; - if(learnPanel.getOptionsPanel().isEquivalentClassesTypeSelected()){ + if(learnPanel.isEquivalentClassesTypeSelected()){ OREManager.getInstance().setLearningType("equivalence"); learningType = "equivalent"; } else { learningType = "super"; OREManager.getInstance().setLearningType("superClass"); } - TaskManager.getInstance().setTaskStarted("Learning " + learningType + " class expressions..."); +// TaskManager.getInstance().setTaskStarted("Learning " + learningType + " class expressions..."); + TaskManager.getInstance().getStatusBar().setMessage("Learning " + learningType + " class expressions..."); + getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); learnPanel.getStartButton().setEnabled(false); learnPanel.getStopButton().setEnabled(true); OREManager.getInstance().setNoisePercentage(learnPanel.getOptionsPanel().getMinAccuracy()); @@ -147,6 +150,7 @@ learningTask = new LearningTask(); + learningTask.addPropertyChangeListener(TaskManager.getInstance().getStatusBar()); learningTask.execute(); } else{ @@ -220,19 +224,21 @@ la = OREManager.getInstance().getLa(); - + setProgress(0); + TaskManager.getInstance().getStatusBar().setMaximumValue(OREManager.getInstance().getMaxExecutionTimeInSeconds()); timer = new Timer(); + timer.schedule(new TimerTask(){ - + int progress = 0; @Override - public void run() { + public void run() {progress += 1;setProgress(progress); if(!isCancelled() && la.isRunning()){ publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); } } - }, 1000, 2000); + }, 1000, 1000); OREManager.getInstance().start(); List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions @@ -253,14 +259,12 @@ } catch (ExecutionException e) { e.printStackTrace(); } - getWizard().getDialog().setCursor(null); - getWizard().getStatusBar().showProgress(false); - getWizard().getStatusBar().setProgressTitle("Done"); + updateList(result); + TaskManager.getInstance().setTaskFinished(); + setProgress(0); learnPanel.getStartButton().setEnabled(true); learnPanel.getStopButton().setEnabled(false); - updateList(result); - TaskManager.getInstance().setTaskFinished(); - + } @Override @@ -281,10 +285,7 @@ } }; SwingUtilities.invokeLater(doUpdateList); - } - - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -4,15 +4,20 @@ import java.util.List; import java.util.Set; +import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import org.dllearner.core.owl.NamedClass; import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.ui.ClassesTable; -import org.dllearner.tools.ore.ui.ResultTable; +import org.dllearner.tools.ore.ui.EquivalentClassExpressionsTable; +import org.dllearner.tools.ore.ui.GraphicalCoveragePanel; public class AutoLearnPanel extends JPanel { @@ -23,11 +28,14 @@ private ClassesTable classesTable; - private JPanel subPanel; + private JPanel superPanel; private JPanel equivalentPanel; - private ResultTable equivalentResultsTable; - private ResultTable subResultsTable; + private EquivalentClassExpressionsTable equivalentClassResultsTable; + private EquivalentClassExpressionsTable superClassResultsTable; + + private GraphicalCoveragePanel equivalentClassCoveragePanel; + private GraphicalCoveragePanel superClassCoveragePanel; public AutoLearnPanel(){ createUI(); @@ -60,16 +68,26 @@ equivSubSplitPane.setOneTouchExpandable(true); equivSubSplitPane.setDividerLocation(0.5); - subPanel = new JPanel(); - subResultsTable = new ResultTable(); - subPanel.add(subResultsTable); - equivalentPanel = new JPanel(); - equivalentResultsTable = new ResultTable(); - equivalentPanel.add(equivalentResultsTable); + equivalentClassResultsTable = new EquivalentClassExpressionsTable(); + equivalentClassResultsTable.setName("equivalent"); + equivalentPanel.add(new JScrollPane(equivalentClassResultsTable)); + equivalentClassCoveragePanel = new GraphicalCoveragePanel(""); + equivalentPanel.add(equivalentClassCoveragePanel); + equivalentPanel.setBorder(BorderFactory.createTitledBorder("Equivalent class expressions")); + superPanel = new JPanel(); + superClassResultsTable = new EquivalentClassExpressionsTable(); + superClassResultsTable.setName("super"); + superPanel.add(new JScrollPane(superClassResultsTable)); + superClassCoveragePanel = new GraphicalCoveragePanel(""); + superPanel.add(superClassCoveragePanel); + superPanel.setBorder(BorderFactory.createTitledBorder("Superclass expressions")); + + addTableSelectionListeners(); + equivSubSplitPane.setTopComponent(equivalentPanel); - equivSubSplitPane.setBottomComponent(subPanel); + equivSubSplitPane.setBottomComponent(superPanel); resultPanel.add(equivSubSplitPane); return resultPanel; @@ -79,12 +97,50 @@ classesTable.addClasses(classes); } - public void fillSubClassExpressionsTable(List<EvaluatedDescriptionClass> resultList){ - subResultsTable.addResults(resultList); + public void fillSuperClassExpressionsTable(List<EvaluatedDescriptionClass> resultList){ + superClassResultsTable.addResults(resultList); } public void fillEquivalentClassExpressionsTable(List<EvaluatedDescriptionClass> resultList){ - equivalentResultsTable.addResults(resultList); + equivalentClassResultsTable.addResults(resultList); } + private void addTableSelectionListeners(){ + equivalentClassResultsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + @Override + public void valueChanged(ListSelectionEvent e) { + + if (!e.getValueIsAdjusting() && equivalentClassResultsTable.getSelectedRow() >= 0){ + + EvaluatedDescriptionClass selectedClassExpression = equivalentClassResultsTable.getSelectedValue(); + OREManager.getInstance().setNewClassDescription(selectedClassExpression); + equivalentClassCoveragePanel.setNewClassDescription(selectedClassExpression); + } + } + + }); + + superClassResultsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + + @Override + public void valueChanged(ListSelectionEvent e) { + + if (!e.getValueIsAdjusting() && superClassResultsTable.getSelectedRow() >= 0){ + + EvaluatedDescriptionClass selectedClassExpression = superClassResultsTable.getSelectedValue(); + OREManager.getInstance().setNewClassDescription(selectedClassExpression); + superClassCoveragePanel.setNewClassDescription(selectedClassExpression); + } + } + }); + } + + public void updateEquivalentGraphicalCoveragePanel(EvaluatedDescriptionClass desc){ + equivalentClassCoveragePanel.setNewClassDescription(desc); + } + + public void updateSuperGraphicalCoveragePanel(EvaluatedDescriptionClass desc){ + superClassCoveragePanel.setNewClassDescription(desc); + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -38,6 +38,7 @@ import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionListener; +import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.ui.ClassesTable; import org.dllearner.tools.ore.ui.HelpablePanel; import org.dllearner.tools.ore.ui.LearningOptionsPanel; @@ -174,10 +175,20 @@ public void reset(){ classesTable.clear(); minInstanceCountSpinner.setValue(new Integer(1)); + autoLearnButton.setSelected(true); + setAutoLearningPanel(true); } public boolean isAutoLearnMode(){ return autoLearnButton.isSelected(); } + + public void setLearningOptions(){ + OREManager.getInstance().setMaxExecutionTimeInSeconds(learningOptionsPanel.getMaxExecutionTime()); + OREManager.getInstance().setMaxNrOfResults(learningOptionsPanel.getNrOfConcepts()); + OREManager.getInstance().setNoisePercentage(learningOptionsPanel.getMinAccuracy()); + OREManager.getInstance().setMinInstanceCount(((Integer)(minInstanceCountSpinner.getValue())).intValue()); + + } } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ManualLearnPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ManualLearnPanel.java 2009-09-29 08:26:40 UTC (rev 1868) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ManualLearnPanel.java 2009-09-29 15:59:38 UTC (rev 1869) @@ -212,6 +212,10 @@ return optionsPanel; } + public boolean isEquivalentClassesTypeSelected(){ + return equivalentClassButton.isSelected(); + } + public void reset(){ graphicPanel.clear(); resultTable.clear(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-29 08:26:49
|
Revision: 1868 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1868&view=rev Author: lorenz_b Date: 2009-09-29 08:26:40 +0000 (Tue, 29 Sep 2009) Log Message: ----------- started auto learning mode changed consistency checking in org.dllearner.learningproblems.ClassLearningProblem Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ManualLearnPanel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java Modified: trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/learningproblems/ClassLearningProblem.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -165,8 +165,11 @@ double protusion = (additionalInstances.size() + coveredInstances.size() == 0) ? 0 : coveredInstances.size()/(double)(coveredInstances.size()+additionalInstances.size()); // for each description with less than 100% coverage, we check whether it is // leads to an inconsistent knowledge base - boolean isConsistent = coverage >= 0.999999 || isConsistent(description); + // workaround due to a bug (see http://sourceforge.net/tracker/?func=detail&aid=2866610&group_id=203619&atid=986319) +// boolean isConsistent = coverage >= 0.999999 || isConsistent(description); + boolean isConsistent = isConsistent(description); + // we check whether the axiom already follows from the knowledge base boolean followsFromKB = reasoner.isSuperClassOf(description, classToDescribe); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -39,10 +39,11 @@ import org.apache.log4j.PropertyConfigurator; import org.dllearner.tools.ore.ui.wizard.Wizard; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.descriptors.AutoLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.IntroductionPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.KnowledgeSourcePanelDescriptor; -import org.dllearner.tools.ore.ui.wizard.descriptors.LearningPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.descriptors.ManualLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.SavePanelDescriptor; @@ -124,9 +125,12 @@ WizardPanelDescriptor descriptor5 = new ClassChoosePanelDescriptor(); wizard.registerWizardPanel(ClassChoosePanelDescriptor.IDENTIFIER, descriptor5); - WizardPanelDescriptor descriptor6 = new LearningPanelDescriptor(); - wizard.registerWizardPanel(LearningPanelDescriptor.IDENTIFIER, descriptor6); + WizardPanelDescriptor descriptor9 = new AutoLearnPanelDescriptor(); + wizard.registerWizardPanel(AutoLearnPanelDescriptor.IDENTIFIER, descriptor9); + WizardPanelDescriptor descriptor6 = new ManualLearnPanelDescriptor(); + wizard.registerWizardPanel(ManualLearnPanelDescriptor.IDENTIFIER, descriptor6); + WizardPanelDescriptor descriptor7 = new RepairPanelDescriptor(); wizard.registerWizardPanel(RepairPanelDescriptor.IDENTIFIER, descriptor7); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -64,6 +64,7 @@ private int maxExecutionTimeInSeconds; private int maxNrOfResults; private double threshold; + private int minInstanceCount; private List<OREManagerListener> listeners; @@ -268,6 +269,14 @@ return currentClass2Learn; } + public void setMinInstanceCount(int instanceCount){ + this.minInstanceCount = instanceCount; + } + + public int getMinInstanceCount(){ + return minInstanceCount; + } + public void init(){ this.setLearningProblem(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -24,7 +24,10 @@ import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.RemoveAxiom; +import uk.ac.manchester.cs.owl.modularity.ModuleType; + import com.clarkparsia.modularity.IncrementalClassifier; +import com.clarkparsia.modularity.ModularityUtils; public class LostEntailmentsChecker { @@ -114,7 +117,11 @@ return impact; } - public Set<OWLAxiom> computeStructuralImpact(List<OWLOntologyChange> changes) {reasoner.refresh(); + public Set<OWLAxiom> computeStructuralImpact(List<OWLOntologyChange> changes) { + System.out.println("Computing structural impact"); + System.out.println("Refreshing reasoner"); + reasoner.refresh(); + System.out.println("Reasoner refreshed"); Set<OWLAxiom> possibleLosts = new HashSet<OWLAxiom>(); Set<OWLAxiom> realLosts = new HashSet<OWLAxiom>(); OWLAxiom axiom; @@ -139,6 +146,7 @@ } } }else if (axiom instanceof OWLDisjointClassesAxiom) { + Set<OWLDescription> disjointClasses = ((OWLDisjointClassesAxiom) axiom).getDescriptions(); boolean complex = false; for (OWLDescription dis : disjointClasses) { @@ -156,6 +164,7 @@ for (OWLDescription dis : new ArrayList<OWLDescription>(disjoints)) { if (!dis.equals(factory.getOWLNothing())) { disjoints.remove(dis); + Set<? extends OWLDescription> descendants = SetUtils.union(reasoner.getDescendantClasses(dis.asOWLClass())); descendants.removeAll(reasoner.getEquivalentClasses(factory.getOWLNothing())); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -31,6 +31,8 @@ import java.util.Set; import java.util.Vector; +import javax.swing.JPanel; + import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.owl.Individual; import org.dllearner.learningproblems.EvaluatedDescriptionClass; @@ -44,7 +46,7 @@ * @author Christian Koetteritzsch * */ -public class GraphicalCoveragePanel extends HelpablePanel implements MouseMotionListener{ +public class GraphicalCoveragePanel extends JPanel implements MouseMotionListener{ private static final long serialVersionUID = 855436961912515267L; private static final int HEIGHT = 200; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -1,27 +1,23 @@ package org.dllearner.tools.ore.ui; -import java.awt.BorderLayout; import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; -import javax.swing.JComboBox; import javax.swing.JFrame; -import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; -import javax.swing.JTextField; +import javax.swing.JRadioButton; import javax.swing.border.TitledBorder; -import javax.swing.text.JTextComponent; -import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; - public class HelpablePanel extends JPanel { /** @@ -31,10 +27,12 @@ private JButton helpButton; private String helpText = "TODO"; - + private GridBagConstraints c; public HelpablePanel(){ - setLayout(new BorderLayout()); + setLayout(new GridBagLayout()); + c = new GridBagConstraints(); +// setLayout(new BorderLayout()); helpButton = new JButton(new ImageIcon(this.getClass().getResource("Help-16x16.png"))); helpButton.setBorderPainted(false); helpButton.setContentAreaFilled(false); @@ -67,15 +65,26 @@ } }); - JPanel holderPanel = new JPanel(); - holderPanel.setLayout(new BorderLayout()); - holderPanel.add(helpButton, BorderLayout.NORTH); - add(holderPanel, BorderLayout.EAST); +// JPanel holderPanel = new JPanel(); +// holderPanel.setLayout(new BorderLayout()); +// holderPanel.add(helpButton, BorderLayout.EAST); +// add(holderPanel, BorderLayout.NORTH); + c.anchor = GridBagConstraints.FIRST_LINE_END; + c.weightx = 0.0; + c.weighty = 0.0; + c.gridx = 1; + c.gridy = 0; + add(helpButton, c); } public HelpablePanel(JPanel content){ this(); - add(content, BorderLayout.CENTER); + c.gridx = 0; + c.gridy = 1; + c.weightx = 1.0; + c.weighty = 1.0; + c.fill = GridBagConstraints.BOTH; + add(content, c); } public void setHelpText(String helpText){ @@ -85,27 +94,27 @@ public static void main(String[] args){ JFrame frame = new JFrame(); - JPanel endPointHolderPanel = new JPanel(); - endPointHolderPanel.setLayout(new GridLayout(0, 1)); -// endPointHolderPanel.setBorder(new TitledBorder("SPARQL endpoint")); - JComboBox comboBox = new JComboBox(); - comboBox.setEditable(true); - comboBox.setActionCommand("endpoints"); + JPanel learnTypePanel = new JPanel(); + learnTypePanel.setLayout(new GridLayout(0, 1)); + JRadioButton equivalentClassButton = new JRadioButton("Learn equivalent class expressions", true); + equivalentClassButton.setActionCommand("equivalent"); + equivalentClassButton.setSelected(true); + JRadioButton superClassButton = new JRadioButton("Learn super class expressions"); + superClassButton.setActionCommand("super"); + + ButtonGroup learningType = new ButtonGroup(); + learningType.add(equivalentClassButton); + learningType.add(superClassButton); + learnTypePanel.add(equivalentClassButton); + learnTypePanel.add(superClassButton); + HelpablePanel learnTypeHelpPanel = new HelpablePanel(learnTypePanel); + learnTypeHelpPanel.setBorder(new TitledBorder("Learning type")); - endPointHolderPanel.add(new JLabel("URL")); - endPointHolderPanel.add(comboBox); - JTextField defaultGraphField = new JTextField(); - endPointHolderPanel.add(new JLabel("Default graph URI (optional)")); - endPointHolderPanel.add(defaultGraphField); - HelpablePanel endPointHelpPanel = new HelpablePanel(endPointHolderPanel); - endPointHelpPanel.setBorder(new TitledBorder("SPARQL endpoint")); - - - frame.add(endPointHelpPanel); - frame.setSize(600, 600); + frame.add(learnTypeHelpPanel); + frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -160,6 +160,7 @@ @Override public void repairPlanChanged() { + TaskManager.getInstance().setTaskStarted("Computing impact..."); new LostEntailmentsComputingTask().execute(); } @@ -182,7 +183,7 @@ @Override public Void doInBackground() { - TaskManager.getInstance().setTaskStarted("Computing impact"); + impMan.computeImpactForAxiomsInRepairPlan(); return null; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -32,7 +32,7 @@ * @author Christian Koetteritzsch * */ -public class LearningOptionsPanel extends HelpablePanel { +public class LearningOptionsPanel extends JPanel{ private static final long serialVersionUID = 2190682281812478244L; @@ -57,7 +57,6 @@ * Constructor for the Option Panel. */ public LearningOptionsPanel() { - super(); JPanel holderPanel = new JPanel(); holderPanel.setLayout(new BorderLayout()); labelPanel = new JPanel(); @@ -122,7 +121,7 @@ learnTypePanel.add(equivalentClassButton); learnTypePanel.add(superClassButton); - holderPanel.add(BorderLayout.NORTH, learnTypePanel); +// holderPanel.add(BorderLayout.NORTH, learnTypePanel); holderPanel.add(BorderLayout.WEST, labelPanel); holderPanel.add(BorderLayout.CENTER, sliderPanel); add(holderPanel, BorderLayout.CENTER); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -98,6 +98,12 @@ } } } +// for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ +// if(cl.toString().equals(token)){ +// unsatClass = true; +// break; +// } +// } String color = "black"; if(unsatClass){ color = "red"; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -29,7 +29,7 @@ import org.dllearner.tools.ore.ui.wizard.descriptors.ClassChoosePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.InconsistencyExplanationPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.KnowledgeSourcePanelDescriptor; -import org.dllearner.tools.ore.ui.wizard.descriptors.LearningPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.descriptors.ManualLearnPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.RepairPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.SavePanelDescriptor; import org.dllearner.tools.ore.ui.wizard.descriptors.UnsatisfiableExplanationPanelDescriptor; @@ -89,7 +89,7 @@ Object nextPanelDescriptor = currentPanelDescriptor.getNextPanelDescriptor(); WizardPanelDescriptor nextDescriptor = model.getPanelHashMap().get(nextPanelDescriptor); - + if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals( KnowledgeSourcePanelDescriptor.IDENTIFIER)) { @@ -140,14 +140,21 @@ } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)) { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; ((ClassChoosePanelDescriptor) nextDescriptor).refill(); - } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ClassChoosePanelDescriptor.IDENTIFIER)) { + } +// else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ClassChoosePanelDescriptor.IDENTIFIER)) { // ore.makeOWAToCWA(); // ore.setLearningProblem(); - LearningPanelDescriptor learnDescriptor = ((LearningPanelDescriptor) model +// LearningPanelDescriptor learnDescriptor = ((LearningPanelDescriptor) model +// .getPanelHashMap().get(nextPanelDescriptor)); +// learnDescriptor.resetPanel(); + + else if(nextPanelDescriptor.equals(ManualLearnPanelDescriptor.IDENTIFIER)){ + ManualLearnPanelDescriptor learnDescriptor = ((ManualLearnPanelDescriptor) model .getPanelHashMap().get(nextPanelDescriptor)); learnDescriptor.resetPanel(); - - } else if(nextPanelDescriptor.equals(ClassChoosePanelDescriptor.IDENTIFIER)){ + + + } else if(nextPanelDescriptor.equals(ClassChoosePanelDescriptor.IDENTIFIER)){ ClassChoosePanelDescriptor classChoose = ((ClassChoosePanelDescriptor) model .getPanelHashMap().get(nextPanelDescriptor)); classChoose.resetPanel(); @@ -217,8 +224,8 @@ backPanelDescriptor = RepairPanelDescriptor.IDENTIFIER; } } - } else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(LearningPanelDescriptor.IDENTIFIER)){ - LearningPanelDescriptor learnDescriptor = (LearningPanelDescriptor) currentPanelDescriptor; + } else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ManualLearnPanelDescriptor.IDENTIFIER)){ + ManualLearnPanelDescriptor learnDescriptor = (ManualLearnPanelDescriptor) currentPanelDescriptor; if(learnDescriptor.getLa() != null && learnDescriptor.getLa().isRunning()){ learnDescriptor.getLa().stop(); learnDescriptor.getTimer().cancel(); Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/AutoLearnPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -0,0 +1,167 @@ +package org.dllearner.tools.ore.ui.wizard.descriptors; + +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.TreeSet; +import java.util.concurrent.ExecutionException; + +import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; + +import org.dllearner.core.owl.NamedClass; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.TaskManager; +import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.panels.AutoLearnPanel; + +public class AutoLearnPanelDescriptor extends WizardPanelDescriptor { + + /** + * Identification string for class choose panel. + */ + public static final String IDENTIFIER = "AUTO_LEARN_PANEL"; + /** + * Information string for class choose panel. + */ + public static final String INFORMATION = ""; + + private AutoLearnPanel autoLearnPanel; + + /** + * Constructor creates new panel and adds listener to list. + */ + public AutoLearnPanelDescriptor() { + autoLearnPanel = new AutoLearnPanel(); + setPanelDescriptorIdentifier(IDENTIFIER); + setPanelComponent(autoLearnPanel); + } + + @Override + public Object getNextPanelDescriptor() { + return RepairPanelDescriptor.IDENTIFIER; + } + + @Override + public Object getBackPanelDescriptor() { + return ClassChoosePanelDescriptor.IDENTIFIER; + } + + @Override + public void aboutToDisplayPanel() { + getWizard().getInformationField().setText(INFORMATION); + fillClassesTable(); + } + + public void fillClassesTable(){ + new ClassRetrievingTask().execute(); + } + + + /** + * Inner class to get all atomic classes in a background thread. + * @author Lorenz Buehmann + * + */ + class ClassRetrievingTask extends SwingWorker<Set<NamedClass>, Void> { + + + @Override + public Set<NamedClass> doInBackground() { + + OREManager.getInstance().makeOWAToCWA(); + Set<NamedClass> classes = new TreeSet<NamedClass>(OREManager.getInstance().getReasoner().getNamedClasses()); + classes.remove(new NamedClass("http://www.w3.org/2002/07/owl#Thing")); + Iterator<NamedClass> iter = classes.iterator(); + while(iter.hasNext()){ + NamedClass nc = iter.next(); + int instanceCount = OREManager.getInstance().getReasoner().getIndividuals(nc).size(); + if(instanceCount < OREManager.getInstance().getMinInstanceCount()){ + iter.remove(); + } + } + return classes; + } + + @Override + public void done() { + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + Set<NamedClass> classes = Collections.emptySet(); + try { + classes = get(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ExecutionException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + autoLearnPanel.fillClassesTable(classes); + TaskManager.getInstance().setTaskFinished(); + } + }); + } + } + + class EquivalentLearningTask extends SwingWorker<Void, Void> { + + + @Override + public Void doInBackground() { + OREManager.getInstance().setLearningType("equivalence"); + OREManager.getInstance().setLearningProblem(); + OREManager.getInstance().setLearningAlgorithm(); + OREManager.getInstance().getLa().start(); + return null; + } + + @Override + public void done() { + SwingUtilities.invokeLater(new Runnable() { + + @SuppressWarnings("unchecked") + @Override + public void run() { + + autoLearnPanel.fillEquivalentClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). + getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); + TaskManager.getInstance().setTaskFinished(); + } + }); + } + } + + class SubclassLearningTask extends SwingWorker<Void, Void> { + + + @Override + public Void doInBackground() { + OREManager.getInstance().setLearningType("superClass"); + OREManager.getInstance().setLearningProblem(); + OREManager.getInstance().setLearningAlgorithm(); + OREManager.getInstance().getLa().start(); + return null; + } + + @Override + public void done() { + SwingUtilities.invokeLater(new Runnable() { + + @SuppressWarnings("unchecked") + @Override + public void run() { + + autoLearnPanel.fillSubClassExpressionsTable((List<EvaluatedDescriptionClass>)OREManager.getInstance().getLa(). + getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true)); + TaskManager.getInstance().setTaskFinished(); + } + }); + } + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -20,6 +20,8 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -50,7 +52,7 @@ * @author Lorenz Buehmann * */ -public class ClassChoosePanelDescriptor extends WizardPanelDescriptor implements ListSelectionListener, ChangeListener{ +public class ClassChoosePanelDescriptor extends WizardPanelDescriptor implements ListSelectionListener, ChangeListener, ActionListener{ /** * Identification string for class choose panel. @@ -73,6 +75,7 @@ classChoosePanel = new ClassChoosePanel(); classChoosePanel.addSelectionListener(this); classChoosePanel.addChangeListener(this); + classChoosePanel.addActionsListeners(this); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(classChoosePanel); @@ -83,7 +86,12 @@ @Override public Object getNextPanelDescriptor() { - return LearningPanelDescriptor.IDENTIFIER; + if(isAutoLearningMode()){ + return AutoLearnPanelDescriptor.IDENTIFIER; + } else { + return ManualLearnPanelDescriptor.IDENTIFIER; + } + } @Override @@ -116,7 +124,7 @@ private void setNextButtonAccordingToConceptSelected() { - if (classChoosePanel.getClassesTable().getSelectedRow() >= 0){ + if (classChoosePanel.getClassesTable().getSelectedRow() >= 0 || classChoosePanel.isAutoLearnMode()){ getWizard().setNextFinishButtonEnabled(true); }else{ getWizard().setNextFinishButtonEnabled(false); @@ -192,4 +200,19 @@ }); } } + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getActionCommand().equals("auto")){ + classChoosePanel.setAutoLearningPanel(true); + } else { + classChoosePanel.setAutoLearningPanel(false); + } + setNextButtonAccordingToConceptSelected(); + + } + + public boolean isAutoLearningMode(){ + return classChoosePanel.isAutoLearnMode(); + } } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -1,296 +0,0 @@ -/** - * Copyright (C) 2007-2008, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -package org.dllearner.tools.ore.ui.wizard.descriptors; - -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.SwingUtilities; -import javax.swing.SwingWorker; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; - -import org.dllearner.algorithms.celoe.CELOE; -import org.dllearner.core.EvaluatedDescription; -import org.dllearner.core.LearningAlgorithm; -import org.dllearner.learningproblems.EvaluatedDescriptionClass; -import org.dllearner.tools.ore.OREManager; -import org.dllearner.tools.ore.OREManagerListener; -import org.dllearner.tools.ore.TaskManager; -import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; -import org.dllearner.tools.ore.ui.wizard.panels.LearningPanel; - - - -/** - * Wizard panel descriptor where learned class description are shown. - * @author Lorenz Buehmann - * - */ -public class LearningPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener, OREManagerListener{ - - public static final String IDENTIFIER = "LEARNING_PANEL"; - public static final String INFORMATION = "Press <Start> to start learning. While it is running, " - + "temporary results are shown in the list above. Select one of them and press <Next>"; - - private LearningPanel learnPanel; - private LearningTask learningTask; - private CELOE la; - private Timer timer; - - - public LearningPanelDescriptor() { - - learnPanel = new LearningPanel(); - learnPanel.addStartButtonListener(this); - learnPanel.addStopButtonListener(this); - learnPanel.addSelectionListener(this); - - setPanelDescriptorIdentifier(IDENTIFIER); - setPanelComponent(learnPanel); - - - } - - @Override - public Object getNextPanelDescriptor() { - EvaluatedDescriptionClass newClassDesc = OREManager.getInstance().getNewClassDescription(); - if(newClassDesc != null && newClassDesc.getAccuracy() == 1.0){ - return SavePanelDescriptor.IDENTIFIER; - } else { - return RepairPanelDescriptor.IDENTIFIER; - } - } - - @Override - public Object getBackPanelDescriptor() { - return ClassChoosePanelDescriptor.IDENTIFIER; - } - - - - @Override - public void aboutToDisplayPanel() { - getWizard().getInformationField().setText(INFORMATION); - setNextButtonAccordingToConceptSelected(); - } - - - - public void valueChanged(ListSelectionEvent e) { - setNextButtonAccordingToConceptSelected(); - -// Description range = new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), -// new NamedClass("http://example.com/father#female")); -// ObjectAllRestriction role = new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), -// range); -// Description de = new NamedClass("http://example.com/father#male"); - - if (!e.getValueIsAdjusting() && learnPanel.getResultTable().getSelectedRow() >= 0 && - (learningTask.isDone() || learningTask.isCancelled())){ - EvaluatedDescriptionClass selectedClassExpression = learnPanel.getResultTable().getSelectedValue(); -// if(!selectedClassExpression.isConsistent()){ -// learnPanel.add(new JLabel("Selected class expression may lead to an inconsistent knowledgebase.")); -// } - OREManager.getInstance().setNewClassDescription(selectedClassExpression); - - learnPanel.updateCurrentGraphicalCoveragePanel(OREManager.getInstance().getNewClassDescription()); - } - - - } - - /** - * Actions for pressing start- or stop-button. - * @param event - */ - public void actionPerformed(ActionEvent event) { - if(event.getActionCommand().equals("Start")){ - String learningType = ""; - if(learnPanel.getOptionsPanel().isEquivalentClassesTypeSelected()){ - OREManager.getInstance().setLearningType("equivalence"); - learningType = "equivalent"; - } else { - learningType = "super"; - OREManager.getInstance().setLearningType("superClass"); - } - TaskManager.getInstance().setTaskStarted("Learning " + learningType + " class expressions..."); - learnPanel.getStartButton().setEnabled(false); - learnPanel.getStopButton().setEnabled(true); - OREManager.getInstance().setNoisePercentage(learnPanel.getOptionsPanel().getMinAccuracy()); - OREManager.getInstance().setMaxExecutionTimeInSeconds(learnPanel.getOptionsPanel().getMaxExecutionTime()); - OREManager.getInstance().setMaxNrOfResults(learnPanel.getOptionsPanel().getNrOfConcepts()); - OREManager.getInstance().setThreshold(learnPanel.getOptionsPanel().getThreshold()); - learnPanel.reset(); - - - learningTask = new LearningTask(); - learningTask.execute(); - } else{ - - learnPanel.getStopButton().setEnabled(false); - la.stop(); - timer.cancel(); - learnPanel.getStartButton().setEnabled(true); - getWizard().getStatusBar().showProgress(false); - getWizard().getStatusBar().setProgressTitle("Learning stopped"); - - } - - } - - private void setNextButtonAccordingToConceptSelected() { - - if (learnPanel.getResultTable().getSelectedRow() >= 0){ - getWizard().setNextFinishButtonEnabled(true); - }else{ - getWizard().setNextFinishButtonEnabled(false); - } - - } - - /** - * Returns the swing worker thread instance. - * @return swing worker - */ - public LearningTask getWorkerThread(){ - return learningTask; - } - - /** - * Returns the timer instance. - * @return timer - */ - public Timer getTimer(){ - return timer; - } - - /** - * Returns the learning algorithm instance. - * @return learning algorithm - */ - public LearningAlgorithm getLa() { - return la; - } - - /** - * Clear list and coverage panel. - */ - public void resetPanel(){ - learnPanel.reset(); - } - - - /** - * Inner class, containing the background thread for learning class descriptions. - * @author Lorenz Buehmann - * - */ - class LearningTask extends SwingWorker<List<? extends EvaluatedDescription>, List<? extends EvaluatedDescription>> { - - - @SuppressWarnings("unchecked") - @Override - public List<? extends EvaluatedDescription> doInBackground() { - - OREManager.getInstance().setLearningProblem(); - OREManager.getInstance().setLearningAlgorithm(); - - la = OREManager.getInstance().getLa(); - - - timer = new Timer(); - timer.schedule(new TimerTask(){ - - @Override - public void run() { - if(!isCancelled() && la.isRunning()){ - publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), - OREManager.getInstance().getThreshold(), true)); - } - } - - }, 1000, 2000); - OREManager.getInstance().start(); - - List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions - (OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true); - - return result; - } - - @Override - public void done() { - - timer.cancel(); - List<? extends EvaluatedDescription> result = null; - try { - result = get(); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (ExecutionException e) { - e.printStackTrace(); - } - getWizard().getDialog().setCursor(null); - getWizard().getStatusBar().showProgress(false); - getWizard().getStatusBar().setProgressTitle("Done"); - learnPanel.getStartButton().setEnabled(true); - learnPanel.getStopButton().setEnabled(false); - updateList(result); - TaskManager.getInstance().setTaskFinished(); - - } - - @Override - protected void process(List<List<? extends EvaluatedDescription>> resultLists) { - - for (List<? extends EvaluatedDescription> list : resultLists) { - updateList(list); - } - } - - private void updateList(final List<? extends EvaluatedDescription> result) { - - Runnable doUpdateList = new Runnable() { - - @SuppressWarnings("unchecked") - public void run() { - learnPanel.getResultTable().addResults((List<EvaluatedDescriptionClass>) result); - } - }; - SwingUtilities.invokeLater(doUpdateList); - - } - - - } - - - @Override - public void activeOntologyChanged() { - learnPanel.getResultTable().clear(); - - } -} Copied: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java (from rev 1864, trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ManualLearnPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -0,0 +1,296 @@ +/** + * Copyright (C) 2007-2008, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.dllearner.tools.ore.ui.wizard.descriptors; + +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.SwingUtilities; +import javax.swing.SwingWorker; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import org.dllearner.algorithms.celoe.CELOE; +import org.dllearner.core.EvaluatedDescription; +import org.dllearner.core.LearningAlgorithm; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.OREManagerListener; +import org.dllearner.tools.ore.TaskManager; +import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; +import org.dllearner.tools.ore.ui.wizard.panels.ManualLearnPanel; + + + +/** + * Wizard panel descriptor where learned class description are shown. + * @author Lorenz Buehmann + * + */ +public class ManualLearnPanelDescriptor extends WizardPanelDescriptor implements ActionListener, ListSelectionListener, OREManagerListener{ + + public static final String IDENTIFIER = "MANUAL_LEARN_PANEL"; + public static final String INFORMATION = "Press <Start> to start learning. While it is running, " + + "temporary results are shown in the list above. Select one of them and press <Next>"; + + private ManualLearnPanel learnPanel; + private LearningTask learningTask; + private CELOE la; + private Timer timer; + + + public ManualLearnPanelDescriptor() { + + learnPanel = new ManualLearnPanel(); + learnPanel.addStartButtonListener(this); + learnPanel.addStopButtonListener(this); + learnPanel.addSelectionListener(this); + + setPanelDescriptorIdentifier(IDENTIFIER); + setPanelComponent(learnPanel); + + + } + + @Override + public Object getNextPanelDescriptor() { + EvaluatedDescriptionClass newClassDesc = OREManager.getInstance().getNewClassDescription(); + if(newClassDesc != null && newClassDesc.getAccuracy() == 1.0){ + return SavePanelDescriptor.IDENTIFIER; + } else { + return RepairPanelDescriptor.IDENTIFIER; + } + } + + @Override + public Object getBackPanelDescriptor() { + return ClassChoosePanelDescriptor.IDENTIFIER; + } + + + + @Override + public void aboutToDisplayPanel() { + getWizard().getInformationField().setText(INFORMATION); + setNextButtonAccordingToConceptSelected(); + } + + + + public void valueChanged(ListSelectionEvent e) { + setNextButtonAccordingToConceptSelected(); + +// Description range = new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), +// new NamedClass("http://example.com/father#female")); +// ObjectAllRestriction role = new ObjectAllRestriction(new ObjectProperty("http://example.com/father#hasChild"), +// range); +// Description de = new NamedClass("http://example.com/father#male"); + + if (!e.getValueIsAdjusting() && learnPanel.getResultTable().getSelectedRow() >= 0 && + (learningTask.isDone() || learningTask.isCancelled())){ + EvaluatedDescriptionClass selectedClassExpression = learnPanel.getResultTable().getSelectedValue(); +// if(!selectedClassExpression.isConsistent()){ +// learnPanel.add(new JLabel("Selected class expression may lead to an inconsistent knowledgebase.")); +// } + OREManager.getInstance().setNewClassDescription(selectedClassExpression); + + learnPanel.updateCurrentGraphicalCoveragePanel(OREManager.getInstance().getNewClassDescription()); + } + + + } + + /** + * Actions for pressing start- or stop-button. + * @param event + */ + public void actionPerformed(ActionEvent event) { + if(event.getActionCommand().equals("Start")){ + String learningType = ""; + if(learnPanel.getOptionsPanel().isEquivalentClassesTypeSelected()){ + OREManager.getInstance().setLearningType("equivalence"); + learningType = "equivalent"; + } else { + learningType = "super"; + OREManager.getInstance().setLearningType("superClass"); + } + TaskManager.getInstance().setTaskStarted("Learning " + learningType + " class expressions..."); + learnPanel.getStartButton().setEnabled(false); + learnPanel.getStopButton().setEnabled(true); + OREManager.getInstance().setNoisePercentage(learnPanel.getOptionsPanel().getMinAccuracy()); + OREManager.getInstance().setMaxExecutionTimeInSeconds(learnPanel.getOptionsPanel().getMaxExecutionTime()); + OREManager.getInstance().setMaxNrOfResults(learnPanel.getOptionsPanel().getNrOfConcepts()); + OREManager.getInstance().setThreshold(learnPanel.getOptionsPanel().getThreshold()); + learnPanel.reset(); + + + learningTask = new LearningTask(); + learningTask.execute(); + } else{ + + learnPanel.getStopButton().setEnabled(false); + la.stop(); + timer.cancel(); + learnPanel.getStartButton().setEnabled(true); + getWizard().getStatusBar().showProgress(false); + getWizard().getStatusBar().setProgressTitle("Learning stopped"); + + } + + } + + private void setNextButtonAccordingToConceptSelected() { + + if (learnPanel.getResultTable().getSelectedRow() >= 0){ + getWizard().setNextFinishButtonEnabled(true); + }else{ + getWizard().setNextFinishButtonEnabled(false); + } + + } + + /** + * Returns the swing worker thread instance. + * @return swing worker + */ + public LearningTask getWorkerThread(){ + return learningTask; + } + + /** + * Returns the timer instance. + * @return timer + */ + public Timer getTimer(){ + return timer; + } + + /** + * Returns the learning algorithm instance. + * @return learning algorithm + */ + public LearningAlgorithm getLa() { + return la; + } + + /** + * Clear list and coverage panel. + */ + public void resetPanel(){ + learnPanel.reset(); + } + + + /** + * Inner class, containing the background thread for learning class descriptions. + * @author Lorenz Buehmann + * + */ + class LearningTask extends SwingWorker<List<? extends EvaluatedDescription>, List<? extends EvaluatedDescription>> { + + + @SuppressWarnings("unchecked") + @Override + public List<? extends EvaluatedDescription> doInBackground() { + + OREManager.getInstance().setLearningProblem(); + OREManager.getInstance().setLearningAlgorithm(); + + la = OREManager.getInstance().getLa(); + + + timer = new Timer(); + timer.schedule(new TimerTask(){ + + @Override + public void run() { + if(!isCancelled() && la.isRunning()){ + publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), + OREManager.getInstance().getThreshold(), true)); + } + } + + }, 1000, 2000); + OREManager.getInstance().start(); + + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions + (OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true); + + return result; + } + + @Override + public void done() { + + timer.cancel(); + List<? extends EvaluatedDescription> result = null; + try { + result = get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + getWizard().getDialog().setCursor(null); + getWizard().getStatusBar().showProgress(false); + getWizard().getStatusBar().setProgressTitle("Done"); + learnPanel.getStartButton().setEnabled(true); + learnPanel.getStopButton().setEnabled(false); + updateList(result); + TaskManager.getInstance().setTaskFinished(); + + } + + @Override + protected void process(List<List<? extends EvaluatedDescription>> resultLists) { + + for (List<? extends EvaluatedDescription> list : resultLists) { + updateList(list); + } + } + + private void updateList(final List<? extends EvaluatedDescription> result) { + + Runnable doUpdateList = new Runnable() { + + @SuppressWarnings("unchecked") + public void run() { + learnPanel.getResultTable().addResults((List<EvaluatedDescriptionClass>) result); + } + }; + SwingUtilities.invokeLater(doUpdateList); + + } + + + } + + + @Override + public void activeOntologyChanged() { + learnPanel.getResultTable().clear(); + + } +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/RepairPanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -80,7 +80,7 @@ @Override public Object getBackPanelDescriptor() { - return LearningPanelDescriptor.IDENTIFIER; + return ManualLearnPanelDescriptor.IDENTIFIER; } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/SavePanelDescriptor.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -63,7 +63,7 @@ @Override public Object getBackPanelDescriptor() { if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ - return LearningPanelDescriptor.IDENTIFIER; + return ManualLearnPanelDescriptor.IDENTIFIER; } else { return RepairPanelDescriptor.IDENTIFIER; } Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/AutoLearnPanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -0,0 +1,90 @@ +package org.dllearner.tools.ore.ui.wizard.panels; + +import java.awt.BorderLayout; +import java.util.List; +import java.util.Set; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JSplitPane; + +import org.dllearner.core.owl.NamedClass; +import org.dllearner.learningproblems.EvaluatedDescriptionClass; +import org.dllearner.tools.ore.ui.ClassesTable; +import org.dllearner.tools.ore.ui.ResultTable; + +public class AutoLearnPanel extends JPanel { + + /** + * + */ + private static final long serialVersionUID = -5204979906041331328L; + + private ClassesTable classesTable; + + private JPanel subPanel; + private JPanel equivalentPanel; + + private ResultTable equivalentResultsTable; + private ResultTable subResultsTable; + + public AutoLearnPanel(){ + createUI(); + } + + private void createUI(){ + setLayout(new BorderLayout()); + + JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + mainSplitPane.setOneTouchExpandable(true); + mainSplitPane.setDividerLocation(0.2); + + mainSplitPane.setLeftComponent(createClassesPanel()); + mainSplitPane.setRightComponent(createResultPanel()); + + add(mainSplitPane); + } + + private JComponent createClassesPanel(){ + classesTable = new ClassesTable(); + classesTable.setBorder(null); + classesTable.setEnabled(false); + JScrollPane classesScroll = new JScrollPane(classesTable); + return classesScroll; + } + + private JComponent createResultPanel(){ + JPanel resultPanel = new JPanel(new BorderLayout()); + JSplitPane equivSubSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + equivSubSplitPane.setOneTouchExpandable(true); + equivSubSplitPane.setDividerLocation(0.5); + + subPanel = new JPanel(); + subResultsTable = new ResultTable(); + subPanel.add(subResultsTable); + + equivalentPanel = new JPanel(); + equivalentResultsTable = new ResultTable(); + equivalentPanel.add(equivalentResultsTable); + + equivSubSplitPane.setTopComponent(equivalentPanel); + equivSubSplitPane.setBottomComponent(subPanel); + + resultPanel.add(equivSubSplitPane); + return resultPanel; + } + + public void fillClassesTable(Set<NamedClass> classes){ + classesTable.addClasses(classes); + } + + public void fillSubClassExpressionsTable(List<EvaluatedDescriptionClass> resultList){ + subResultsTable.addResults(resultList); + } + + public void fillEquivalentClassExpressionsTable(List<EvaluatedDescriptionClass> resultList){ + equivalentResultsTable.addResults(resultList); + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -23,16 +23,24 @@ import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; +import java.awt.GridLayout; +import java.awt.event.ActionListener; +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; +import javax.swing.border.EtchedBorder; import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionListener; import org.dllearner.tools.ore.ui.ClassesTable; +import org.dllearner.tools.ore.ui.HelpablePanel; +import org.dllearner.tools.ore.ui.LearningOptionsPanel; /** * Wizard panel where atomic classes are shown in list. @@ -45,7 +53,15 @@ private ClassesTable classesTable; private JSpinner minInstanceCountSpinner; + private JRadioButton autoLearnButton; + private JRadioButton manualLearnButton; + private JPanel currentPanel; + private JPanel manualLearnPanel; + private JPanel autoLearnPanel; + + private LearningOptionsPanel learningOptionsPanel; + /** * Constructor. */ @@ -55,9 +71,48 @@ private void createUI(){ setLayout(new GridBagLayout()); + JPanel optionsPanel = new JPanel(new GridLayout(0, 1)); + autoLearnButton = new JRadioButton("Automatic learning mode"); + autoLearnButton.setActionCommand("auto"); + manualLearnButton = new JRadioButton("Manual learning mode"); + manualLearnButton.setActionCommand("manual"); + ButtonGroup learningType = new ButtonGroup(); + learningType.add(manualLearnButton); + learningType.add(autoLearnButton); + autoLearnButton.setSelected(true); + optionsPanel.add(autoLearnButton); + optionsPanel.add(manualLearnButton); + HelpablePanel optionsHelpPanel = new HelpablePanel(optionsPanel); + optionsHelpPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); + add(optionsHelpPanel); + createAutoLearnPanel(); + createManualLearnPanel(); + currentPanel = autoLearnPanel; + add(currentPanel); + + } + + private void createAutoLearnPanel(){ + JPanel panel = new JPanel(new GridBagLayout()); + JPanel minInstancesCountPanel = new JPanel(); + minInstancesCountPanel.add(new JLabel("Min. instance count per class: ")); + minInstanceCountSpinner = new JSpinner(); + minInstanceCountSpinner.setEnabled(true); + javax.swing.SpinnerModel spinnerModel = new SpinnerNumberModel(1, 1, 500, 1); + minInstanceCountSpinner.setModel(spinnerModel); + minInstancesCountPanel.add(minInstanceCountSpinner); + panel.add(minInstancesCountPanel); + learningOptionsPanel = new LearningOptionsPanel(); + panel.add(learningOptionsPanel); + + autoLearnPanel = panel; + } + + private void createManualLearnPanel(){ + JPanel panel = new JPanel(); + panel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.gridwidth = GridBagConstraints.REMAINDER; - JPanel minInstancesCountPanel = new JPanel(); minInstancesCountPanel.add(new JLabel("Showing classes with at least ")); minInstanceCountSpinner = new JSpinner(); @@ -66,7 +121,7 @@ minInstanceCountSpinner.setModel(spinnerModel); minInstancesCountPanel.add(minInstanceCountSpinner); minInstancesCountPanel.add(new JLabel(" instances")); - add(minInstancesCountPanel, c); + panel.add(minInstancesCountPanel, c); c.fill = GridBagConstraints.NONE; @@ -74,7 +129,9 @@ classesTable = new ClassesTable(); JScrollPane scroll = new JScrollPane(classesTable); scroll.setPreferredSize(new Dimension(400, 400)); - add(scroll, c); + panel.add(scroll, c); + + manualLearnPanel = panel; } /** @@ -88,6 +145,23 @@ public void addChangeListener(ChangeListener cL){ minInstanceCountSpinner.addChangeListener(cL); } + + public void addActionsListeners(ActionListener aL){ + autoLearnButton.addActionListener(aL); + manualLearnButton.addActionListener(aL); + } + + public void setAutoLearningPanel(boolean value){ + if(value){ + remove(manualLearnPanel); + add(autoLearnPanel); + } else { + remove(autoLearnPanel); + add(manualLearnPanel); + } + validate(); + repaint(); + } /** * Returns the table where atomic owl classes are the table elements. @@ -101,5 +175,9 @@ classesTable.clear(); minInstanceCountSpinner.setValue(new Integer(1)); } + + public boolean isAutoLearnMode(){ + return autoLearnButton.isSelected(); + } } \ No newline at end of file Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-28 14:35:48 UTC (rev 1867) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-29 08:26:40 UTC (rev 1868) @@ -1,200 +0,0 @@ -/** - * Copyright (C) 2007-2008, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -package org.dllearner.tools.ore.ui.wizard.panels; - -import java.awt.BorderLayout; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.event.ActionListener; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.border.TitledBorder; -import javax.swing.event.ListSelectionListener; - -import org.dllearner.core.EvaluatedDescription; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.tools.ore.OREManager; -import org.dllearner.tools.ore.ui.GraphicalCoveragePanel; -import org.dllearner.tools.ore.ui.LearningOptionsPanel; -import org.dllearner.tools.ore.ui.ResultTable; - - -/** - * The wizard panel where result table and buttons for learning step are shown. - * @author Lorenz Buehmann - * - */ -public class LearningPanel extends JPanel{ - - private static final long serialVersionUID = -7411197973240429632L; - - private ResultTable resultTable; - private JScrollPane tableScrollPane; - private JPanel resultPanel; - - private JButton stopButton; - private JButton startButton; - private JPanel buttonPanel; - private JPanel buttonSliderPanel; - - private GraphicalCoveragePanel graphicPanel; - private LearningOptionsPanel optionsPanel; - - private GridBagConstraints c; - - - public LearningPanel() { - createUI(); - } - - private void createUI(){ - setLayout(new GridBagLayout()); - c = new GridBagConstraints(); - createResultPanel(); - createControlPanel(); - createCoveragePanel(); - } - - private void createResultPanel(){ - c.gridx = 0; - c.gridy = 0; - c.weightx = 1.0; - c.weighty = 1.0; - c.anchor = GridBagConstraints.NORTHWEST; - c.fill = GridBagConstraints.BOTH; - - resultTable = new ResultTable(); - tableScrollPane = new JScrollPane(resultTable); - resultPanel = new JPanel(); - resultPanel.setLayout(new BorderLayout()); - resultPanel.add(tableScrollPane); - resultPanel.setBorder(new TitledBorder("Learned class expressions")); - - add(resultPanel, c); - } - - private void createControlPanel(){ - c.gridx = GridBagConstraints.RELATIVE; - c.gridy = 0; - c.anchor = GridBagConstraints.NORTH; - c.weightx = 0.0; - c.weighty = 0.0; - c.fill = GridBagConstraints.NONE; - - buttonSliderPanel = new JPanel(); - - GridBagLayout buttonSliderPanelLayout = new GridBagLayout(); - buttonSliderPanelLayout.rowWeights = new double[] { 0.0, 0.0 }; - buttonSliderPanelLayout.rowHeights = new int[] { 126, 7 }; - buttonSliderPanelLayout.columnWeights = new double[] { 0.1 }; - buttonSliderPanelLayout.columnWidths = new int[] { 7 }; - buttonSliderPanel.setLayout(buttonSliderPanelLayout); - - buttonPanel ... [truncated message content] |
From: <jen...@us...> - 2009-09-28 14:35:55
|
Revision: 1867 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1867&view=rev Author: jenslehmann Date: 2009-09-28 14:35:48 +0000 (Mon, 28 Sep 2009) Log Message: ----------- converted conservation + other properties Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java Modified: trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2009-09-28 07:30:22 UTC (rev 1866) +++ trunk/src/dl-learner/org/dllearner/examples/Carcinogenesis.java 2009-09-28 14:35:48 UTC (rev 1867) @@ -484,7 +484,7 @@ return ret; } - private static void appendPosExamples(File file, List<Individual> examples) { + public static void appendPosExamples(File file, List<Individual> examples) { StringBuffer content = new StringBuffer(); for(Individual example : examples) { if(learnCarcinogenic) @@ -495,7 +495,7 @@ Files.appendFile(file, content.toString()); } - private static void appendNegExamples(File file, List<Individual> examples) { + public static void appendNegExamples(File file, List<Individual> examples) { StringBuffer content = new StringBuffer(); for(Individual example : examples) { if(learnCarcinogenic) Modified: trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java =================================================================== --- trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java 2009-09-28 07:30:22 UTC (rev 1866) +++ trunk/src/dl-learner/org/dllearner/examples/MonogenicDiseases.java 2009-09-28 14:35:48 UTC (rev 1867) @@ -26,15 +26,23 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.LinkedList; +import java.util.List; import java.util.prefs.BackingStoreException; import java.util.prefs.Preferences; import org.dllearner.core.owl.ClassAssertionAxiom; +import org.dllearner.core.owl.Datatype; +import org.dllearner.core.owl.DatatypeProperty; +import org.dllearner.core.owl.DatatypePropertyDomainAxiom; +import org.dllearner.core.owl.DatatypePropertyRangeAxiom; +import org.dllearner.core.owl.DoubleDatatypePropertyAssertion; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.KB; import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.SubClassAxiom; import org.dllearner.reasoning.OWLAPIReasoner; +import org.dllearner.utilities.Files; import org.dllearner.utilities.Helper; import org.ini4j.IniFile; @@ -49,6 +57,7 @@ private static URI ontologyURI = URI.create("http://dl-learner.org/mutation"); private static File owlFile = new File("examples/mutation/mutation.owl"); + private static File confFile = new File("examples/mutation/mutation.conf"); public static void main(String[] args) throws ClassNotFoundException, BackingStoreException, SQLException { @@ -97,8 +106,49 @@ NamedClass protHydroDecClass = new NamedClass(getURI("ProteinHydroDecreasingMutation")); kb.addAxiom(new SubClassAxiom(protHydroIncClass, mutationClass)); kb.addAxiom(new SubClassAxiom(protHydroUnchangedClass, mutationClass)); - kb.addAxiom(new SubClassAxiom(protHydroDecClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protHydroDecClass, mutationClass)); + // polarity + NamedClass protPolIncClass = new NamedClass(getURI("ProteinPolarityIncreasingMutation")); + NamedClass protPolUnchangedClass = new NamedClass(getURI("ProteinPolarityUnchangedMutation")); + NamedClass protPolDecClass = new NamedClass(getURI("ProteinPolarityDecreasingMutation")); + kb.addAxiom(new SubClassAxiom(protPolIncClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protPolUnchangedClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(protPolDecClass, mutationClass)); + + // score + DatatypeProperty scoreProp = new DatatypeProperty(getURI("modifScore")); + kb.addAxiom(new DatatypePropertyDomainAxiom(scoreProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(scoreProp, Datatype.DOUBLE)); + + // g_p + NamedClass gpIncClass = new NamedClass(getURI("GPIncreasingMutation")); + NamedClass gpUnchangedClass = new NamedClass(getURI("GPUnchangedMutation")); + NamedClass gpDecClass = new NamedClass(getURI("GPDecreasingMutation")); + kb.addAxiom(new SubClassAxiom(gpIncClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(gpUnchangedClass, mutationClass)); + kb.addAxiom(new SubClassAxiom(gpDecClass, mutationClass)); + + // conservation_wt + DatatypeProperty conservationWTProp = new DatatypeProperty(getURI("convservationWT")); + kb.addAxiom(new DatatypePropertyDomainAxiom(conservationWTProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(conservationWTProp, Datatype.DOUBLE)); + + // conservation_mut + DatatypeProperty conservationMutProp = new DatatypeProperty(getURI("convservationMut")); + kb.addAxiom(new DatatypePropertyDomainAxiom(conservationMutProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(conservationMutProp, Datatype.DOUBLE)); + + // freq_at_pos + DatatypeProperty freqAtPosProp = new DatatypeProperty(getURI("freqAtPos")); + kb.addAxiom(new DatatypePropertyDomainAxiom(freqAtPosProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(freqAtPosProp, Datatype.DOUBLE)); + + // cluster_5res_size + DatatypeProperty cluster5ResSizeProp = new DatatypeProperty(getURI("cluster_5res_size")); + kb.addAxiom(new DatatypePropertyDomainAxiom(cluster5ResSizeProp, mutationClass)); + kb.addAxiom(new DatatypePropertyRangeAxiom(cluster5ResSizeProp, Datatype.DOUBLE)); + // select all data Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM " + table); @@ -125,10 +175,39 @@ kb.addAxiom(new ClassAssertionAxiom(protChargeChangedClass, mutationInd)); } - // size change is represented via 3 classes + // hydro... String modifHydro = rs.getString("modif_hydrophobicity"); convertThreeValuedColumn(kb, mutationInd, modifHydro, protHydroIncClass, protHydroUnchangedClass, protHydroDecClass); - + + // polarity + String modifPolarity = rs.getString("modif_polarity"); + convertThreeValuedColumn(kb, mutationInd, modifPolarity, protPolIncClass, protPolUnchangedClass, protPolDecClass); + + // modif_score + double modifScore = rs.getDouble("modif_score"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(scoreProp, mutationInd, modifScore)); + + // g_p + String gp = rs.getString("g_p"); + convertThreeValuedColumn(kb, mutationInd, gp, gpIncClass, gpUnchangedClass, gpDecClass); + + // modif_score + double conservationWT = rs.getDouble("conservation_wt"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(conservationWTProp, mutationInd, conservationWT)); + + // modif_score + double conservationMut = rs.getDouble("conservation_mut"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(conservationMutProp, mutationInd, conservationMut)); + + // freq_at_pos + double freqAtPos = rs.getDouble("freq_at_pos"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(freqAtPosProp, mutationInd, freqAtPos)); + + // freq_at_pos + double cluster5ResSize = rs.getDouble("cluster_5res_size"); + kb.addAxiom(new DoubleDatatypePropertyAssertion(cluster5ResSizeProp, mutationInd, cluster5ResSize)); + + count++; } @@ -139,8 +218,39 @@ long writeDuration = System.nanoTime() - startWriteTime; System.out.println("OK (time: " + Helper.prettyPrintNanoSeconds(writeDuration) + "; file size: " + owlFile.length()/1024 + " KB)."); + // selecting examples + // -> only a fraction of examples are selected as positive/negative + rs = stmt.executeQuery("SELECT * FROM " + table + " WHERE " //lower(phenotype) not like 'polymorphism' AND " + + " (gain_contact is not null) && (gain_contact != 0)"); + List<Individual> posExamples = new LinkedList<Individual>(); + List<Individual> negExamples = new LinkedList<Individual>(); + while(rs.next()) { + int mutationID = rs.getInt("id"); + String phenotype = rs.getString("phenotype"); + if(phenotype.toLowerCase().contains("polymorphism")) { + negExamples.add(new Individual(getURI("mutation" + mutationID))); + } else { + posExamples.add(new Individual(getURI("mutation" + mutationID))); + } + } + + // writing conf file + Files.clearFile(confFile); + String confHeader = "import(\"" + owlFile.getName() + "\");\n\n"; + confHeader += "reasoner = fastInstanceChecker;\n"; + confHeader += "algorithm = refexamples;\n"; + confHeader += "refexamples.noisePercentage = 31;\n"; + confHeader += "refexamples.startClass = \"" + getURI("Mutation") + "\";\n"; + confHeader += "refexamples.writeSearchTree = false;\n"; + confHeader += "refexamples.searchTreeFile = \"log/mutation/searchTree.log\";\n"; + confHeader += "\n"; + Files.appendFile(confFile, confHeader); + Carcinogenesis.appendPosExamples(confFile, posExamples); + Carcinogenesis.appendNegExamples(confFile, negExamples); + long runTime = System.nanoTime() - startTime; System.out.println("Database successfully converted in " + Helper.prettyPrintNanoSeconds(runTime) + "."); + } // a table column with values "+", "=", "-" is converted to subclasses This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-28 07:30:30
|
Revision: 1866 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1866&view=rev Author: lorenz_b Date: 2009-09-28 07:30:22 +0000 (Mon, 28 Sep 2009) Log Message: ----------- fixed bug started integrating help buttons on panels Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/MultiLineTableCellRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/MoveToClassFromMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/DeleteCross.gif trunk/src/dl-learner/org/dllearner/tools/ore/Help16.gif trunk/src/dl-learner/org/dllearner/tools/ore/ui/Help-16x16.png trunk/src/dl-learner/org/dllearner/tools/ore/ui/Help-24x24.png trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java Added: trunk/src/dl-learner/org/dllearner/tools/ore/DeleteCross.gif =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/DeleteCross.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/dl-learner/org/dllearner/tools/ore/Help16.gif =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/Help16.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -55,6 +55,11 @@ import org.semanticweb.owl.model.OWLQuantifiedRestriction; import org.semanticweb.owl.model.RemoveAxiom; +import uk.ac.manchester.cs.owl.modularity.ModuleType; + +import com.clarkparsia.modularity.ModularityUtils; +import com.clarkparsia.owlapi.OntologyUtils; + public class RootFinder implements OWLDescriptionVisitor, OREManagerListener, OWLOntologyChangeListener, RepairManagerListener{ private OWLOntologyManager manager; @@ -187,7 +192,7 @@ } private void pruneRoots() { - +System.out.println("Pruning root classes"); try { Set<OWLClass> roots = new HashSet<OWLClass>(rootClasses); List<OWLOntologyChange> appliedChanges = new ArrayList<OWLOntologyChange>(); @@ -214,8 +219,11 @@ appliedChanges.add(add); } OWLReasoner checker = reasonerFactory.createReasoner(manager); - checker.loadOntologies(Collections.singleton(ontology)); +// checker.loadOntologies(Collections.singleton(ontology)); for (OWLClass root : new ArrayList<OWLClass>(roots)) { + checker.clearOntologies(); + checker.loadOntologies(Collections.singleton(OntologyUtils.getOntologyFromAxioms(ModularityUtils.extractModule + (ontology, root.getSignature(), ModuleType.TOP_OF_BOT)))); if (!potentialRoots.contains(root) && checker.isSatisfiable(root)) { rootClasses.remove(root); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/laconic/LaconicExplanationGenerator.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -218,7 +218,7 @@ return laconic; } - private Set<Explanation> retrieveAxioms(Set<Explanation> explanations) { + public Set<Explanation> retrieveAxioms(Set<Explanation> explanations) { Map<OWLAxiom, Set<OWLAxiom>> sourceAxioms2OPlus = new HashMap<OWLAxiom, Set<OWLAxiom>>(); @@ -335,20 +335,9 @@ public Set<OWLAxiom> getRemainingAxioms(OWLAxiom source, OWLAxiom part){ Set<OWLAxiom> parts = computeOPlus(Collections.singleton(source)); -// for(OWLAxiom ax : parts){ -// System.out.println("Part: " + ax); -// for(OWLAxiom a : oPlus.getAxiomsMap().get(ax)){ -// System.out.println("has source: " + a); -// } -// -// } - - for(OWLAxiom par : parts){ -// System.out.println("has Part: " + par); - } + for(OWLAxiom ax : oPlus.getAxiomsMap().get(part)){ parts.remove(ax); -// System.out.println("Removing: " + ax); } Set<OWLAxiom> remove = new HashSet<OWLAxiom>(); for(OWLAxiom ax : parts){ @@ -366,78 +355,14 @@ } - private Set<OWLAxiom> rebuildAxioms(Set<OWLAxiom> axioms){ - Map<OWLAxiom, Set<OWLAxiom>> sourceAxioms2OPlus = new HashMap<OWLAxiom, Set<OWLAxiom>>(); - - for (OWLAxiom ax : axioms) { - if (ontology.containsAxiom(ax)) { - sourceAxioms2OPlus.put(ax, computeOPlus(Collections - .singleton(ax))); - } - } - - Map<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>> lhs2SubClassAxiom = new HashMap<OWLClass, Map<OWLAxiom, Set<OWLSubClassAxiom>>>(); - Set<OWLAxiom> reconstituedAxioms = new HashSet<OWLAxiom>(); - for (OWLAxiom laconicAx : axioms) {System.out.println("\n" + laconicAx); - - - if (laconicAx instanceof OWLSubClassAxiom) { - OWLSubClassAxiom subAx = (OWLSubClassAxiom) laconicAx; - if (subAx.getSubClass().isAnonymous()) { - reconstituedAxioms.add(subAx); - } else { - Map<OWLAxiom, Set<OWLSubClassAxiom>> source2AxiomMap = lhs2SubClassAxiom.get(subAx.getSubClass().asOWLClass()); - if (source2AxiomMap == null) { - source2AxiomMap = new HashMap<OWLAxiom, Set<OWLSubClassAxiom>>(); - lhs2SubClassAxiom.put(subAx.getSubClass().asOWLClass(), source2AxiomMap); - } - - for (OWLAxiom sourceAxiom : sourceAxioms2OPlus.keySet()) { - if ((sourceAxioms2OPlus.get(sourceAxiom)).contains(subAx)) { - Set<OWLSubClassAxiom> subClassAxioms = source2AxiomMap.get(sourceAxiom); - if (subClassAxioms == null) { - subClassAxioms = new HashSet<OWLSubClassAxiom>(); - source2AxiomMap.put(sourceAxiom, subClassAxioms); - } - subClassAxioms.add(subAx); - } - } - } - } else { - reconstituedAxioms.add(laconicAx); - } - } - Set<OWLAxiom> consumedAxioms = new HashSet<OWLAxiom>(); - for (OWLClass lhs : lhs2SubClassAxiom.keySet()) { - Map<OWLAxiom, Set<OWLSubClassAxiom>> source2SubClassAxiom = lhs2SubClassAxiom.get(lhs); - for (OWLAxiom source : source2SubClassAxiom.keySet()) { - Set<OWLDescription> rightHandSides = new HashSet<OWLDescription>(); - for (OWLSubClassAxiom sub : source2SubClassAxiom.get(source)) { - if (!consumedAxioms.contains(sub)) { - rightHandSides.add(sub.getSuperClass()); - consumedAxioms.add(sub); - } - } - - if (rightHandSides.size() == 1) - reconstituedAxioms.add(manager.getOWLDataFactory().getOWLSubClassAxiom((OWLDescription) lhs,((OWLDescription) rightHandSides.iterator().next()))); - else if (rightHandSides.size() > 1) { - org.semanticweb.owl.model.OWLObjectIntersectionOf conjunction = manager.getOWLDataFactory().getOWLObjectIntersectionOf(rightHandSides); - reconstituedAxioms.add(manager.getOWLDataFactory().getOWLSubClassAxiom((OWLDescription) lhs,conjunction)); - } - } - } - return reconstituedAxioms; - } - public static void main(String[] args) throws OWLOntologyCreationException, ExplanationException, OWLOntologyChangeException{ - String baseURI = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl"; +// String baseURI = "http://protege.stanford.edu/plugins/owl/owl-library/koala.owl"; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLOntology ontology = manager.loadOntologyFromPhysicalURI(URI.create("file:examples/ore/koala.owl")); OWLDataFactory factory = manager.getOWLDataFactory(); LaconicExplanationGenerator expGen = new LaconicExplanationGenerator(manager, new PelletReasonerFactory(), Collections.singleton(ontology)); - OWLClass koalaWithPhD = factory.getOWLClass(URI.create(baseURI + "#KoalaWithPhD")); - OWLClass koala = factory.getOWLClass(URI.create(baseURI + "#Koala")); +// OWLClass koalaWithPhD = factory.getOWLClass(URI.create(baseURI + "#KoalaWithPhD")); +// OWLClass koala = factory.getOWLClass(URI.create(baseURI + "#Koala")); // System.out.println(expGen.getExplanations(factory.getOWLSubClassAxiom(koalaWithPhD, factory.getOWLNothing()), 1)); // OWLAxiom laconicAx = factory.getOWLSubClassAxiom(koalaWithPhD, koala); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTable.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -11,12 +11,15 @@ import java.util.List; import javax.swing.AbstractCellEditor; +import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; +import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.JTableHeader; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; @@ -70,6 +73,16 @@ getColumn(3).setMaxWidth(60); getColumn(4).setMaxWidth(30); getColumn(5).setMaxWidth(30); + getColumn(4).setHeaderRenderer(new TableCellRenderer() { + + @Override + public Component getTableCellRendererComponent(JTable arg0, Object value, + boolean arg2, boolean arg3, int arg4, int arg5) { + JButton b = new JButton((Icon)value); + return b; + } + }); + getColumn(4).setHeaderValue(new ImageIcon("src/dl-learner/org/dllearner/tools/ore/DeleteCross.gif")); getSelectionModel().addListSelectionListener( new ListSelectionListener() { @@ -217,7 +230,25 @@ fireEditingStopped(); } } + + class IconRenderer extends DefaultTableCellRenderer { + /** + * + */ + private static final long serialVersionUID = -1729370486474583609L; + public Component getTableCellRendererComponent(JTable table, + Object obj, boolean isSelected, boolean hasFocus, int row, + int column) { + + setIcon((Icon) obj); + + setBorder(UIManager.getBorder("TableHeader.cellBorder")); + setHorizontalAlignment(JLabel.CENTER); + return this; + } + } + @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { repaint(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlDialog.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -10,6 +10,8 @@ import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.IOException; @@ -143,24 +145,26 @@ JPanel endPointHolderPanel = new JPanel(); endPointHolderPanel.setLayout(new GridLayout(0, 1)); - endPointHolderPanel.setBorder(new TitledBorder("SPARQL endpoint")); +// endPointHolderPanel.setBorder(new TitledBorder("SPARQL endpoint")); comboBox = new JComboBox(); comboBox.setEditable(true); comboBox.setActionCommand("endpoints"); comboBox.addActionListener(this); - ((JTextComponent)comboBox.getEditor().getEditorComponent()).getDocument().addDocumentListener(this); AutoCompleteDecorator.decorate(this.comboBox); + endPointHolderPanel.add(new JLabel("URL")); endPointHolderPanel.add(comboBox); defaultGraphField = new JTextField(); endPointHolderPanel.add(new JLabel("Default graph URI (optional)")); endPointHolderPanel.add(defaultGraphField); - panel.add(endPointHolderPanel, c); + HelpablePanel endPointHelpPanel = new HelpablePanel(endPointHolderPanel); + endPointHelpPanel.setBorder(new TitledBorder("SPARQL endpoint")); + panel.add(endPointHelpPanel, c); JPanel classHolderPanel = new JPanel(); classHolderPanel.setLayout(new GridLayout(0, 1)); - classHolderPanel.setBorder(new TitledBorder("Class to investigate")); +// classHolderPanel.setBorder(new TitledBorder("Class to investigate")); asLabelButton = new JRadioButton("label"); asURLButton = new JRadioButton("URI"); asURLButton.setSelected(true); @@ -171,12 +175,14 @@ buttonPanel.add(new JLabel("input type:")); buttonPanel.add(asURLButton); buttonPanel.add(asLabelButton); - + classHolderPanel.add(buttonPanel); classField = new JTextField(); classField.getDocument().addDocumentListener(this); classHolderPanel.add(classField); - panel.add(classHolderPanel, c); + HelpablePanel classHelpPanel = new HelpablePanel(classHolderPanel); + classHelpPanel.setBorder(new TitledBorder("Class to investigate")); + panel.add(classHelpPanel, c); @@ -204,6 +210,18 @@ optionsButton.setHorizontalAlignment(JButton.LEADING); // optional optionsButton.setBorderPainted(false); optionsButton.setContentAreaFilled(false); + optionsButton.addMouseListener(new MouseAdapter() { + public void mouseEntered(MouseEvent e) { + optionsButton.setBorderPainted(true); + optionsButton.setContentAreaFilled(true); + }; + @Override + public void mouseExited(MouseEvent e) { + optionsButton.setBorderPainted(false); + optionsButton.setContentAreaFilled(false); + } + + }); c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.WEST; panel.add(optionsButton, c); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -31,8 +31,6 @@ import java.util.Set; import java.util.Vector; -import javax.swing.JPanel; - import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.owl.Individual; import org.dllearner.learningproblems.EvaluatedDescriptionClass; @@ -46,7 +44,7 @@ * @author Christian Koetteritzsch * */ -public class GraphicalCoveragePanel extends JPanel implements MouseMotionListener{ +public class GraphicalCoveragePanel extends HelpablePanel implements MouseMotionListener{ private static final long serialVersionUID = 855436961912515267L; private static final int HEIGHT = 200; Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/Help-16x16.png =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/ui/Help-16x16.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/Help-24x24.png =================================================================== (Binary files differ) Property changes on: trunk/src/dl-learner/org/dllearner/tools/ore/ui/Help-24x24.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/HelpablePanel.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -0,0 +1,113 @@ +package org.dllearner.tools.ore.ui; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.border.TitledBorder; +import javax.swing.text.JTextComponent; + +import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; + + +public class HelpablePanel extends JPanel { + + /** + * + */ + private static final long serialVersionUID = 2511480671795808029L; + private JButton helpButton; + + private String helpText = "TODO"; + + + public HelpablePanel(){ + setLayout(new BorderLayout()); + helpButton = new JButton(new ImageIcon(this.getClass().getResource("Help-16x16.png"))); + helpButton.setBorderPainted(false); + helpButton.setContentAreaFilled(false); +// helpButton.setBorder(BorderFactory.createEmptyBorder(2,2,2,2)); + helpButton.setPreferredSize(new Dimension(16, 16)); + helpButton.addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + helpButton.setBorderPainted(true); + helpButton.setContentAreaFilled(true); + } + + @Override + public void mouseExited(MouseEvent e) { + helpButton.setBorderPainted(false); + helpButton.setContentAreaFilled(false); + } + + }); + helpButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + JOptionPane.showMessageDialog(null, + helpText, + "", + JOptionPane.PLAIN_MESSAGE); + + + + } + }); + JPanel holderPanel = new JPanel(); + holderPanel.setLayout(new BorderLayout()); + holderPanel.add(helpButton, BorderLayout.NORTH); + add(holderPanel, BorderLayout.EAST); + } + + public HelpablePanel(JPanel content){ + this(); + add(content, BorderLayout.CENTER); + } + + public void setHelpText(String helpText){ + this.helpText = helpText; + } + + public static void main(String[] args){ + JFrame frame = new JFrame(); + + JPanel endPointHolderPanel = new JPanel(); + endPointHolderPanel.setLayout(new GridLayout(0, 1)); +// endPointHolderPanel.setBorder(new TitledBorder("SPARQL endpoint")); + JComboBox comboBox = new JComboBox(); + comboBox.setEditable(true); + comboBox.setActionCommand("endpoints"); + + + endPointHolderPanel.add(new JLabel("URL")); + endPointHolderPanel.add(comboBox); + JTextField defaultGraphField = new JTextField(); + endPointHolderPanel.add(new JLabel("Default graph URI (optional)")); + endPointHolderPanel.add(defaultGraphField); + HelpablePanel endPointHelpPanel = new HelpablePanel(endPointHolderPanel); + endPointHelpPanel.setBorder(new TitledBorder("SPARQL endpoint")); + + + + + frame.add(endPointHelpPanel); + frame.setSize(600, 600); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setVisible(true); + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -32,7 +32,7 @@ * @author Christian Koetteritzsch * */ -public class LearningOptionsPanel extends JPanel { +public class LearningOptionsPanel extends HelpablePanel { private static final long serialVersionUID = 2190682281812478244L; @@ -57,8 +57,9 @@ * Constructor for the Option Panel. */ public LearningOptionsPanel() { - - setLayout(new BorderLayout()); + super(); + JPanel holderPanel = new JPanel(); + holderPanel.setLayout(new BorderLayout()); labelPanel = new JPanel(); labelPanel.setLayout(new GridLayout(0, 1)); sliderPanel = new JPanel(); @@ -121,9 +122,10 @@ learnTypePanel.add(equivalentClassButton); learnTypePanel.add(superClassButton); - add(BorderLayout.NORTH, learnTypePanel); - add(BorderLayout.WEST, labelPanel); - add(BorderLayout.CENTER, sliderPanel); + holderPanel.add(BorderLayout.NORTH, learnTypePanel); + holderPanel.add(BorderLayout.WEST, labelPanel); + holderPanel.add(BorderLayout.CENTER, sliderPanel); + add(holderPanel, BorderLayout.CENTER); } /** Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -90,10 +90,12 @@ while(st.hasMoreTokens()){ token = st.nextToken(); boolean unsatClass = false; - for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ - if(cl.toString().equals(token)){ - unsatClass = true; - break; + if(OREManager.getInstance().consistentOntology()){ + for(OWLClass cl : ExplanationManager.getInstance(OREManager.getInstance()).getUnsatisfiableClasses()){ + if(cl.toString().equals(token)){ + unsatClass = true; + break; + } } } String color = "black"; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxTableCellRenderer.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxTableCellRenderer.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -14,22 +14,23 @@ import org.semanticweb.owl.model.OWLIndividual; import org.semanticweb.owl.model.OWLObject; +import uk.ac.manchester.cs.owl.mansyntaxrenderer.ManchesterOWLSyntaxObjectRenderer; + import com.clarkparsia.explanation.io.manchester.Keyword; -import com.clarkparsia.explanation.io.manchester.ManchesterSyntaxObjectRenderer; import com.clarkparsia.explanation.io.manchester.TextBlockWriter; public class ManchesterSyntaxTableCellRenderer extends DefaultTableCellRenderer { private StringWriter buffer; private TextBlockWriter writer; - private ManchesterSyntaxObjectRenderer renderer; + private ManchesterOWLSyntaxObjectRenderer renderer; public ManchesterSyntaxTableCellRenderer(){ buffer = new StringWriter(); writer = new TextBlockWriter(buffer); - renderer = new ManchesterSyntaxObjectRenderer(writer); - renderer.setWrapLines( false ); - renderer.setSmartIndent( true ); + renderer = new ManchesterOWLSyntaxObjectRenderer(writer); +// renderer.setWrapLines( false ); +// renderer.setSmartIndent( true ); } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/MultiLineTableCellRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/MultiLineTableCellRenderer.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/MultiLineTableCellRenderer.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -41,8 +41,7 @@ private StyledDocument doc; Style style; - public MultiLineTableCellRenderer() - { + public MultiLineTableCellRenderer() { super(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTable.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -15,6 +15,8 @@ * */ private static final long serialVersionUID = -497294373160119210L; + + private EvaluatedDescriptionClass old = null; public ResultTable(){ setBackground(Color.WHITE); @@ -42,12 +44,25 @@ } + + public void clear(){ ((ResultTableModel)getModel()).clear(); } public void addResults(List<EvaluatedDescriptionClass> resultList){ + + if(getSelectedRow() >= 0){ + old = getSelectedValue(); + } ((ResultTableModel)getModel()).addResults(resultList); + if(old != null){ + int newRowIndex = ((ResultTableModel)getModel()).getSelectionIndex(old); + if(newRowIndex >= 0){ + getSelectionModel().setSelectionInterval(newRowIndex, newRowIndex); + } + + } } public EvaluatedDescriptionClass getSelectedValue(){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ResultTableModel.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -74,11 +74,17 @@ public void addResults(List<EvaluatedDescriptionClass> resultList){ this.resultList.clear(); this.resultList.addAll(resultList); - fireTableDataChanged(); + + + fireTableRowsUpdated(0, this.resultList.size()); } public EvaluatedDescriptionClass getSelectedValue(int rowIndex){ return resultList.get(rowIndex); } + + public int getSelectionIndex(EvaluatedDescriptionClass e){ + return resultList.indexOf(e); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -10,6 +10,8 @@ import java.awt.SystemColor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.awt.geom.Ellipse2D; import java.util.Set; @@ -140,7 +142,6 @@ @Override public void foundExplanation(Set<OWLAxiom> explanation) { - System.out.println(explanation); } @@ -333,15 +334,23 @@ setHorizontalAlignment(JButton.LEADING); // optional setBorderPainted(false); setContentAreaFilled(false); + + addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent arg0) { + setBorderPainted(true); + setContentAreaFilled(true); + } + + @Override + public void mouseExited(MouseEvent e) { + setBorderPainted(false); + setContentAreaFilled(false); + } + }); } - @Override - protected void paintComponent(Graphics g) { - if(getModel().isArmed()){ - g.setColor(Color.YELLOW); - } - super.paintComponent(g); - } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/UnsatisfiableClassesTable.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -8,7 +8,6 @@ import org.dllearner.tools.ore.ExplanationManager; import org.dllearner.tools.ore.OREManager; import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.decorator.HighlighterFactory; import org.semanticweb.owl.model.OWLClass; public class UnsatisfiableClassesTable extends JXTable { @@ -26,7 +25,7 @@ setTableHeader(null); setGridColor(Color.LIGHT_GRAY); getColumn(0).setMaxWidth(20); - setRowHeight(getRowHeight() + 5); + setRowHeight(getRowHeight() + 2); getColumn(0).setCellRenderer(new UnsatClassesTableCellRenderer(expMan)); // setAutoResizeMode(JTable.AUTO_RESIZE_OFF); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/MoveToClassFromMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/MoveToClassFromMenuItem.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/MoveToClassFromMenuItem.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -7,6 +7,10 @@ public class MoveToClassFromMenuItem extends JMenuItem { + /** + * + */ + private static final long serialVersionUID = -3577226441483461020L; private Description source; private Description destination; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -290,7 +290,7 @@ private int showInconsistentOntologyWarning(){ String infoString = "<html>Can not do reasoning with inconsistent ontologies, " + - "since everything is equivalent to OWL:nothing" + + "since everything is equivalent to OWL:Nothing" + "<UL>" + "<LI>Press 'Yes' and try to repair the ontology" + "<LI>Press 'No' and choose another ontology or exit" + Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-25 11:13:32 UTC (rev 1865) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-28 07:30:22 UTC (rev 1866) @@ -149,60 +149,8 @@ } } classChoosePanel.getClassesTable().addClasses(classes); -// classChoosePanel.getClassesTable().clear(); -// TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); -// new ClassRetrievingTask(minInstanceCount).execute(); } - -// /** -// * Inner class to get all atomic classes in a background thread. -// * @author Lorenz Buehmann -// * -// */ -// class ClassRetrievingTask extends SwingWorker<Set<NamedClass>, NamedClass> { -// -// private int minInstanceCount; -// -// public ClassRetrievingTask(int minInstanceCount){ -// this.minInstanceCount = minInstanceCount; -// } -// -// @Override -// public Set<NamedClass> doInBackground() { -// OREManager.getInstance().makeOWAToCWA(); -// Set<NamedClass> classes = new TreeSet<NamedClass>(OREManager.getInstance().getReasoner().getNamedClasses()); -// classes.remove(new NamedClass("http://www.w3.org/2002/07/owl#Thing")); -// Iterator<NamedClass> iter = classes.iterator(); -// while(iter.hasNext()){ -// NamedClass nc = iter.next(); -// int instanceCount = OREManager.getInstance().getReasoner().getIndividuals(nc).size(); -// if(instanceCount < minInstanceCount){ -// iter.remove(); -// } -// } -// -// return classes; -// } -// -// @Override -// public void done() { -// Set<NamedClass> classes = null; -// try { -// classes = get(); -// } catch (InterruptedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (ExecutionException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// -// classChoosePanel.getClassesTable().addClasses(classes); -// TaskManager.getInstance().setTaskFinished(); -// } -// -// } - + /** * Inner class to get all atomic classes in a background thread. * @author Lorenz Buehmann @@ -213,6 +161,7 @@ @Override public Void doInBackground() { + instanceCountToClasses.clear(); OREManager.getInstance().makeOWAToCWA(); Set<NamedClass> classes = new TreeSet<NamedClass>(OREManager.getInstance().getReasoner().getNamedClasses()); classes.remove(new NamedClass("http://www.w3.org/2002/07/owl#Thing")); @@ -237,10 +186,10 @@ @Override public void run() { - fillClassesList(1); + fillClassesList(1); + TaskManager.getInstance().setTaskFinished(); } - }); - TaskManager.getInstance().setTaskFinished(); + }); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-25 11:13:39
|
Revision: 1865 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1865&view=rev Author: lorenz_b Date: 2009-09-25 11:13:32 +0000 (Fri, 25 Sep 2009) Log Message: ----------- added instancecount cache Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-25 11:01:24 UTC (rev 1864) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-25 11:13:32 UTC (rev 1865) @@ -21,13 +21,15 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; +import java.util.SortedSet; import java.util.TreeSet; -import java.util.concurrent.ExecutionException; import javax.swing.JSpinner; +import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -136,30 +138,81 @@ public void refill(){ TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); - new ClassRetrievingTask(1).execute(); + new ClassRetrievingTask().execute(); } public void fillClassesList(int minInstanceCount){ - classChoosePanel.getClassesTable().clear(); - TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); - new ClassRetrievingTask(minInstanceCount).execute(); + SortedSet<NamedClass> classes = new TreeSet<NamedClass>(); + for(Integer instanceCount : instanceCountToClasses.keySet()){ + if(instanceCount.intValue() >= minInstanceCount){ + classes.addAll(instanceCountToClasses.get(instanceCount)); + } + } + classChoosePanel.getClassesTable().addClasses(classes); +// classChoosePanel.getClassesTable().clear(); +// TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); +// new ClassRetrievingTask(minInstanceCount).execute(); } - /** +// /** +// * Inner class to get all atomic classes in a background thread. +// * @author Lorenz Buehmann +// * +// */ +// class ClassRetrievingTask extends SwingWorker<Set<NamedClass>, NamedClass> { +// +// private int minInstanceCount; +// +// public ClassRetrievingTask(int minInstanceCount){ +// this.minInstanceCount = minInstanceCount; +// } +// +// @Override +// public Set<NamedClass> doInBackground() { +// OREManager.getInstance().makeOWAToCWA(); +// Set<NamedClass> classes = new TreeSet<NamedClass>(OREManager.getInstance().getReasoner().getNamedClasses()); +// classes.remove(new NamedClass("http://www.w3.org/2002/07/owl#Thing")); +// Iterator<NamedClass> iter = classes.iterator(); +// while(iter.hasNext()){ +// NamedClass nc = iter.next(); +// int instanceCount = OREManager.getInstance().getReasoner().getIndividuals(nc).size(); +// if(instanceCount < minInstanceCount){ +// iter.remove(); +// } +// } +// +// return classes; +// } +// +// @Override +// public void done() { +// Set<NamedClass> classes = null; +// try { +// classes = get(); +// } catch (InterruptedException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } catch (ExecutionException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// classChoosePanel.getClassesTable().addClasses(classes); +// TaskManager.getInstance().setTaskFinished(); +// } +// +// } + + /** * Inner class to get all atomic classes in a background thread. * @author Lorenz Buehmann * */ - class ClassRetrievingTask extends SwingWorker<Set<NamedClass>, NamedClass> { + class ClassRetrievingTask extends SwingWorker<Void, Void> { - private int minInstanceCount; - - public ClassRetrievingTask(int minInstanceCount){ - this.minInstanceCount = minInstanceCount; - } @Override - public Set<NamedClass> doInBackground() { + public Void doInBackground() { OREManager.getInstance().makeOWAToCWA(); Set<NamedClass> classes = new TreeSet<NamedClass>(OREManager.getInstance().getReasoner().getNamedClasses()); classes.remove(new NamedClass("http://www.w3.org/2002/07/owl#Thing")); @@ -167,32 +220,27 @@ while(iter.hasNext()){ NamedClass nc = iter.next(); int instanceCount = OREManager.getInstance().getReasoner().getIndividuals(nc).size(); - if(instanceCount < minInstanceCount){ - iter.remove(); + Set<NamedClass> temp = instanceCountToClasses.get(new Integer(instanceCount)); + if(temp == null) { + temp = new HashSet<NamedClass>(); + temp.add(nc); + instanceCountToClasses.put(new Integer(instanceCount), temp); } - } - return classes; + temp.add(nc); + } + return null; } @Override public void done() { - Set<NamedClass> classes = null; - try { - classes = get(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ExecutionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - classChoosePanel.getClassesTable().addClasses(classes); + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + fillClassesList(1); + } + }); TaskManager.getInstance().setTaskFinished(); } - } - - - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-25 11:01:31
|
Revision: 1864 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1864&view=rev Author: lorenz_b Date: 2009-09-25 11:01:24 +0000 (Fri, 25 Sep 2009) Log Message: ----------- fixed refreshing panels Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java 2009-09-25 09:43:56 UTC (rev 1863) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java 2009-09-25 11:01:24 UTC (rev 1864) @@ -50,4 +50,8 @@ public NamedClass getSelectedValue(){ return ((ClassesTableModel)getModel()).getSelectedValue(getSelectedRow()); } + + public void clear(){ + ((ClassesTableModel)getModel()).clear(); + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-25 09:43:56 UTC (rev 1863) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-25 11:01:24 UTC (rev 1864) @@ -471,6 +471,15 @@ } + public void clear(){ + newConcept = new Ellipse2D.Double(0, 0, 0, 0); + posCovIndVector.clear(); + posNotCovIndVector.clear(); + additionalIndividuals.clear(); + points.clear(); + getParent().repaint(); + } + public void computeIndividualPoints() { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-25 09:43:56 UTC (rev 1863) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-25 11:01:24 UTC (rev 1864) @@ -119,6 +119,7 @@ unsatDescriptor.fillUnsatisfiableClassesList(); } else { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; + ((ClassChoosePanelDescriptor) nextDescriptor).resetPanel(); ((ClassChoosePanelDescriptor) nextDescriptor).refill(); } } @@ -133,6 +134,7 @@ nextPanelDescriptor = UnsatisfiableExplanationPanelDescriptor.IDENTIFIER; } else { nextPanelDescriptor = ClassChoosePanelDescriptor.IDENTIFIER; + ((ClassChoosePanelDescriptor) nextDescriptor).resetPanel(); ((ClassChoosePanelDescriptor) nextDescriptor).refill(); } } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(UnsatisfiableExplanationPanelDescriptor.IDENTIFIER)) { @@ -143,9 +145,13 @@ // ore.setLearningProblem(); LearningPanelDescriptor learnDescriptor = ((LearningPanelDescriptor) model .getPanelHashMap().get(nextPanelDescriptor)); - learnDescriptor.setPanelDefaults(); + learnDescriptor.resetPanel(); - } + } else if(nextPanelDescriptor.equals(ClassChoosePanelDescriptor.IDENTIFIER)){ + ClassChoosePanelDescriptor classChoose = ((ClassChoosePanelDescriptor) model + .getPanelHashMap().get(nextPanelDescriptor)); + classChoose.resetPanel(); + } // else if(currentPanelDescriptor.getPanelDescriptorIdentifier().equals(LearningPanelDescriptor.IDENTIFIER)){ // if(OREManager.getInstance().getNewClassDescription().getAccuracy() == 1.0){ // nextPanelDescriptor = SavePanelDescriptor.IDENTIFIER; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-25 09:43:56 UTC (rev 1863) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-25 11:01:24 UTC (rev 1864) @@ -20,7 +20,9 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import java.util.Set; import java.util.TreeSet; import java.util.concurrent.ExecutionException; @@ -59,18 +61,21 @@ + "Select one of them for which you want to learn equivalent class expressions," + " then press <Next>"; - private ClassChoosePanel owlClassPanel; + private ClassChoosePanel classChoosePanel; + private Map<Integer, Set<NamedClass>> instanceCountToClasses; /** * Constructor creates new panel and adds listener to list. */ public ClassChoosePanelDescriptor() { - owlClassPanel = new ClassChoosePanel(); - owlClassPanel.addSelectionListener(this); - owlClassPanel.addChangeListener(this); + classChoosePanel = new ClassChoosePanel(); + classChoosePanel.addSelectionListener(this); + classChoosePanel.addChangeListener(this); setPanelDescriptorIdentifier(IDENTIFIER); - setPanelComponent(owlClassPanel); + setPanelComponent(classChoosePanel); + + instanceCountToClasses = new HashMap<Integer, Set<NamedClass>>(); } @@ -96,8 +101,8 @@ */ public void valueChanged(ListSelectionEvent e) { setNextButtonAccordingToConceptSelected(); - if (!e.getValueIsAdjusting() && owlClassPanel.getClassesTable().getSelectedRow() >= 0) { - OREManager.getInstance().setCurrentClass2Learn((NamedClass) owlClassPanel.getClassesTable().getSelectedValue()); + if (!e.getValueIsAdjusting() && classChoosePanel.getClassesTable().getSelectedRow() >= 0) { + OREManager.getInstance().setCurrentClass2Learn((NamedClass) classChoosePanel.getClassesTable().getSelectedValue()); } } @@ -109,7 +114,7 @@ private void setNextButtonAccordingToConceptSelected() { - if (owlClassPanel.getClassesTable().getSelectedRow() >= 0){ + if (classChoosePanel.getClassesTable().getSelectedRow() >= 0){ getWizard().setNextFinishButtonEnabled(true); }else{ getWizard().setNextFinishButtonEnabled(false); @@ -122,15 +127,20 @@ * @return extended JPanel */ public ClassChoosePanel getOwlClassPanel() { - return owlClassPanel; + return classChoosePanel; } + public void resetPanel(){ + classChoosePanel.reset(); + } + public void refill(){ TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); new ClassRetrievingTask(1).execute(); } public void fillClassesList(int minInstanceCount){ + classChoosePanel.getClassesTable().clear(); TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); new ClassRetrievingTask(minInstanceCount).execute(); } @@ -177,7 +187,7 @@ e.printStackTrace(); } - owlClassPanel.getClassesTable().addClasses(classes); + classChoosePanel.getClassesTable().addClasses(classes); TaskManager.getInstance().setTaskFinished(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-25 09:43:56 UTC (rev 1863) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-25 11:01:24 UTC (rev 1864) @@ -143,7 +143,7 @@ OREManager.getInstance().setMaxExecutionTimeInSeconds(learnPanel.getOptionsPanel().getMaxExecutionTime()); OREManager.getInstance().setMaxNrOfResults(learnPanel.getOptionsPanel().getNrOfConcepts()); OREManager.getInstance().setThreshold(learnPanel.getOptionsPanel().getThreshold()); - learnPanel.getResultTable().clear(); + learnPanel.reset(); learningTask = new LearningTask(); @@ -196,10 +196,10 @@ } /** - * Clear list and loading message. + * Clear list and coverage panel. */ - public void setPanelDefaults(){ - learnPanel.getResultTable().clear(); + public void resetPanel(){ + learnPanel.reset(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-25 09:43:56 UTC (rev 1863) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-25 11:01:24 UTC (rev 1864) @@ -96,5 +96,10 @@ public ClassesTable getClassesTable(){ return classesTable; } + + public void reset(){ + classesTable.clear(); + minInstanceCountSpinner.setValue(new Integer(1)); + } } \ No newline at end of file Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-25 09:43:56 UTC (rev 1863) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-25 11:01:24 UTC (rev 1864) @@ -182,6 +182,11 @@ return optionsPanel; } + public void reset(){ + graphicPanel.clear(); + resultTable.clear(); + } + public static void main(String[] args){ OREManager.getInstance().setCurrentClass2Learn(new NamedClass("dummy")); JFrame frame = new JFrame(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-25 09:44:15
|
Revision: 1863 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1863&view=rev Author: lorenz_b Date: 2009-09-25 09:43:56 +0000 (Fri, 25 Sep 2009) Log Message: ----------- added threshold and learning type option to learning dialog Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -57,10 +57,13 @@ private NamedClass currentClass2Learn; private EvaluatedDescriptionClass learnedClassDescription; + + private String learningType; private double noisePercentage; - private int maxExecutionTimeInSeconds = 10; - private int maxNrOfResults = 10; + private int maxExecutionTimeInSeconds; + private int maxNrOfResults; + private double threshold; private List<OREManagerListener> listeners; @@ -105,9 +108,10 @@ public void setLearningProblem(){ lp = cm.learningProblem(ClassLearningProblem.class, reasoner); - + cm.applyConfigEntry(lp, "type", learningType); try { lp.getConfigurator().setClassToDescribe(getClass2LearnAsURL()); + lp.init(); } catch (ComponentInitException e) { // TODO Auto-generated catch block @@ -123,8 +127,7 @@ la.getConfigurator().setUseNegation(false); la.getConfigurator().setNoisePercentage(noisePercentage); la.getConfigurator().setMaxNrOfResults(maxNrOfResults); - - + } catch (LearningProblemUnsupportedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); @@ -240,6 +243,18 @@ public int getMaxNrOfResults(){ return maxNrOfResults; } + + public void setThreshold(double threshold){ + this.threshold = threshold; + } + + public double getThreshold(){ + return threshold; + } + + public void setLearningType(String learningType){ + this.learningType = learningType; + } /** * Sets the class that has to be learned. Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/LearningOptionsPanel.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -0,0 +1,167 @@ +/** + * Copyright (C) 2007-2009, Jens Lehmann + * + * This file is part of DL-Learner. + * + * DL-Learner is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * DL-Learner is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.dllearner.tools.ore.ui; + +import java.awt.BorderLayout; +import java.awt.GridLayout; + +import javax.swing.ButtonGroup; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JSlider; +/** + * This Class is responsible for the Options of the DL-Learner. + * @author Christian Koetteritzsch + * + */ +public class LearningOptionsPanel extends JPanel { + + + private static final long serialVersionUID = 2190682281812478244L; + private JLabel minAccuracyLabel; + private JLabel maxExecutionTimeLabel; + private JLabel nrOfConceptsLabel; + private JLabel thresholdLabel; + + private JSlider minAccuracy; + private JSlider maxExecutionTime; + private JSlider nrOfConcepts; + private JSlider threshold; + + private JRadioButton equivalentClassButton; + private JRadioButton superClassButton; + private ButtonGroup learningType; + + private JPanel labelPanel; + private JPanel sliderPanel; + private double accuracy; + /** + * Constructor for the Option Panel. + */ + public LearningOptionsPanel() { + + setLayout(new BorderLayout()); + labelPanel = new JPanel(); + labelPanel.setLayout(new GridLayout(0, 1)); + sliderPanel = new JPanel(); + sliderPanel.setLayout(new GridLayout(0, 1)); + + minAccuracyLabel = new JLabel("Noise in %: "); + maxExecutionTimeLabel = new JLabel("Max. execution time in s: "); + nrOfConceptsLabel = new JLabel("Max. number of results: "); + thresholdLabel = new JLabel("Threshold in %:"); + + minAccuracy = new JSlider(0, 50, 5); + minAccuracy.setPaintTicks(true); + minAccuracy.setMajorTickSpacing(10); + minAccuracy.setMinorTickSpacing(1); + minAccuracy.setPaintLabels(true); + + + maxExecutionTime = new JSlider(0, 40, 8); + maxExecutionTime.setPaintTicks(true); + maxExecutionTime.setMajorTickSpacing(10); + maxExecutionTime.setMinorTickSpacing(1); + maxExecutionTime.setPaintLabels(true); + + + nrOfConcepts = new JSlider(2, 20, 10); + nrOfConcepts.setPaintTicks(true); + nrOfConcepts.setMajorTickSpacing(2); + nrOfConcepts.setMinorTickSpacing(1); + nrOfConcepts.setPaintLabels(true); + + threshold = new JSlider(0, 100, 80); + threshold.setPaintTicks(true); + threshold.setMajorTickSpacing(25); + threshold.setMinorTickSpacing(5); + threshold.setPaintLabels(true); + + labelPanel.add(minAccuracyLabel); + labelPanel.add(maxExecutionTimeLabel); + labelPanel.add(nrOfConceptsLabel); + labelPanel.add(thresholdLabel); + + + sliderPanel.add(minAccuracy); + sliderPanel.add(maxExecutionTime); + sliderPanel.add(nrOfConcepts); + sliderPanel.add(threshold); + + JPanel learnTypePanel = new JPanel(); + learnTypePanel.setLayout(new GridLayout(0, 1)); + equivalentClassButton = new JRadioButton("Learn equivalent class expressions", true); + equivalentClassButton.setActionCommand("equivalent"); + equivalentClassButton.setSelected(true); + superClassButton = new JRadioButton("Learn super class expressions"); + superClassButton.setActionCommand("super"); + + learningType = new ButtonGroup(); + learningType.add(equivalentClassButton); + learningType.add(superClassButton); + + learnTypePanel.add(equivalentClassButton); + learnTypePanel.add(superClassButton); + + add(BorderLayout.NORTH, learnTypePanel); + add(BorderLayout.WEST, labelPanel); + add(BorderLayout.CENTER, sliderPanel); + } + + /** + * This method returns the min accuracy chosen in the slider. + * @return double minAccuracy + */ + public double getMinAccuracy() { + double acc = minAccuracy.getValue(); + accuracy = (acc/100.0); + return accuracy; + } + + /** + * This method returns the max executiontime chosen in the slider. + * @return int maxExecutionTime + */ + public int getMaxExecutionTime() { + return maxExecutionTime.getValue(); + } + + /** + * This method returns the nr. of concepts chosen in the slider. + * @return int nrOfConcepts + */ + public int getNrOfConcepts() { + return nrOfConcepts.getValue(); + } + + /** + * This mehtod returns the algorithm threshold chosen in the slider. + * @return double threshold + */ + public double getThreshold(){ + return threshold.getValue()/100.0; + } + + public boolean isEquivalentClassesTypeSelected(){ + return equivalentClassButton.isSelected(); + } + +} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -137,7 +137,7 @@ */ public Wizard(Frame owner) { wizardModel = new WizardModel(); - wizardDialog = new JFrame(); + wizardDialog = new JFrame(); wizardDialog.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("Exited application"); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -140,7 +140,7 @@ ((ClassChoosePanelDescriptor) nextDescriptor).refill(); } else if (currentPanelDescriptor.getPanelDescriptorIdentifier().equals(ClassChoosePanelDescriptor.IDENTIFIER)) { // ore.makeOWAToCWA(); - ore.setLearningProblem(); +// ore.setLearningProblem(); LearningPanelDescriptor learnDescriptor = ((LearningPanelDescriptor) model .getPanelHashMap().get(nextPanelDescriptor)); learnDescriptor.setPanelDefaults(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -25,8 +25,12 @@ import java.util.TreeSet; import java.util.concurrent.ExecutionException; +import javax.swing.JSpinner; import javax.swing.SwingWorker; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import org.dllearner.core.owl.NamedClass; import org.dllearner.tools.ore.OREManager; @@ -42,7 +46,7 @@ * @author Lorenz Buehmann * */ -public class ClassChoosePanelDescriptor extends WizardPanelDescriptor implements javax.swing.event.ListSelectionListener{ +public class ClassChoosePanelDescriptor extends WizardPanelDescriptor implements ListSelectionListener, ChangeListener{ /** * Identification string for class choose panel. @@ -63,6 +67,7 @@ public ClassChoosePanelDescriptor() { owlClassPanel = new ClassChoosePanel(); owlClassPanel.addSelectionListener(this); + owlClassPanel.addChangeListener(this); setPanelDescriptorIdentifier(IDENTIFIER); setPanelComponent(owlClassPanel); @@ -96,6 +101,12 @@ } } + @Override + public void stateChanged(ChangeEvent e) { + JSpinner spinner = (JSpinner)e.getSource(); + fillClassesList(((Integer)spinner.getValue()).intValue()); + } + private void setNextButtonAccordingToConceptSelected() { if (owlClassPanel.getClassesTable().getSelectedRow() >= 0){ @@ -116,15 +127,26 @@ public void refill(){ TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); - new ClassRetrievingTask().execute(); + new ClassRetrievingTask(1).execute(); } + public void fillClassesList(int minInstanceCount){ + TaskManager.getInstance().setTaskStarted("Retrieving atomic classes..."); + new ClassRetrievingTask(minInstanceCount).execute(); + } + /** * Inner class to get all atomic classes in a background thread. * @author Lorenz Buehmann * */ class ClassRetrievingTask extends SwingWorker<Set<NamedClass>, NamedClass> { + + private int minInstanceCount; + + public ClassRetrievingTask(int minInstanceCount){ + this.minInstanceCount = minInstanceCount; + } @Override public Set<NamedClass> doInBackground() { @@ -135,7 +157,7 @@ while(iter.hasNext()){ NamedClass nc = iter.next(); int instanceCount = OREManager.getInstance().getReasoner().getIndividuals(nc).size(); - if(instanceCount == 0){ + if(instanceCount < minInstanceCount){ iter.remove(); } } @@ -161,4 +183,6 @@ } + + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -20,9 +20,11 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.awt.Cursor; import java.net.MalformedURLException; import java.net.URL; +import javax.swing.JEditorPane; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; @@ -80,16 +82,21 @@ @Override public void hyperlinkUpdate(HyperlinkEvent event) { - - if(event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { - URL url; + if (event.getEventType() == HyperlinkEvent.EventType.ENTERED) { + ((JEditorPane) event.getSource()).setCursor(Cursor + .getPredefinedCursor(Cursor.HAND_CURSOR)); + } else if (event.getEventType() == HyperlinkEvent.EventType.EXITED) { + ((JEditorPane) event.getSource()).setCursor(Cursor + .getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } else if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + URL url; try { url = new URL(event.getDescription()); - launcher.openURLinBrowser(url.toString()); + launcher.openURLinBrowser(url.toString()); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); - } + } } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -52,7 +52,7 @@ public class KnowledgeSourcePanelDescriptor extends WizardPanelDescriptor implements ActionListener{ public static final String IDENTIFIER = "KNOWLEDGESOURCE_CHOOSE_PANEL"; - public static final String INFORMATION = "Choose an OWL-ontology from filesystem or URI. Your can also extract a fragment " + + public static final String INFORMATION = "Choose an OWL-ontology from filesystem or URI. You can also extract a fragment " + "from a SPARQL endpoint. When finished, press <Next>."; private KnowledgeSourcePanel knowledgePanel; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/LearningPanelDescriptor.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -128,15 +128,24 @@ */ public void actionPerformed(ActionEvent event) { if(event.getActionCommand().equals("Start")){ - TaskManager.getInstance().setTaskStarted("Learning equivalent class expressions"); + String learningType = ""; + if(learnPanel.getOptionsPanel().isEquivalentClassesTypeSelected()){ + OREManager.getInstance().setLearningType("equivalence"); + learningType = "equivalent"; + } else { + learningType = "super"; + OREManager.getInstance().setLearningType("superClass"); + } + TaskManager.getInstance().setTaskStarted("Learning " + learningType + " class expressions..."); learnPanel.getStartButton().setEnabled(false); learnPanel.getStopButton().setEnabled(true); OREManager.getInstance().setNoisePercentage(learnPanel.getOptionsPanel().getMinAccuracy()); OREManager.getInstance().setMaxExecutionTimeInSeconds(learnPanel.getOptionsPanel().getMaxExecutionTime()); OREManager.getInstance().setMaxNrOfResults(learnPanel.getOptionsPanel().getNrOfConcepts()); - - OREManager.getInstance().setLearningAlgorithm(); + OREManager.getInstance().setThreshold(learnPanel.getOptionsPanel().getThreshold()); + learnPanel.getResultTable().clear(); + learningTask = new LearningTask(); learningTask.execute(); } else{ @@ -205,24 +214,29 @@ @SuppressWarnings("unchecked") @Override public List<? extends EvaluatedDescription> doInBackground() { - learnPanel.getResultTable().clear(); + OREManager.getInstance().setLearningProblem(); + OREManager.getInstance().setLearningAlgorithm(); la = OREManager.getInstance().getLa(); + + timer = new Timer(); timer.schedule(new TimerTask(){ @Override public void run() { if(!isCancelled() && la.isRunning()){ - publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), 0.0, true)); + publish(la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), + OREManager.getInstance().getThreshold(), true)); } } }, 1000, 2000); OREManager.getInstance().start(); - List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions(OREManager.getInstance().getMaxNrOfResults(), 0.0, true); + List<? extends EvaluatedDescription> result = la.getCurrentlyBestEvaluatedDescriptions + (OREManager.getInstance().getMaxNrOfResults(), OREManager.getInstance().getThreshold(), true); return result; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/ClassChoosePanel.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -24,8 +24,12 @@ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; +import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; +import javax.swing.JSpinner; +import javax.swing.SpinnerNumberModel; +import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionListener; import org.dllearner.tools.ore.ui.ClassesTable; @@ -40,6 +44,7 @@ private static final long serialVersionUID = 3026319637264844550L; private ClassesTable classesTable; + private JSpinner minInstanceCountSpinner; /** * Constructor. @@ -51,7 +56,19 @@ private void createUI(){ setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); + c.gridwidth = GridBagConstraints.REMAINDER; + JPanel minInstancesCountPanel = new JPanel(); + minInstancesCountPanel.add(new JLabel("Showing classes with at least ")); + minInstanceCountSpinner = new JSpinner(); + minInstanceCountSpinner.setEnabled(true); + javax.swing.SpinnerModel spinnerModel = new SpinnerNumberModel(1, 1, 500, 1); + minInstanceCountSpinner.setModel(spinnerModel); + minInstancesCountPanel.add(minInstanceCountSpinner); + minInstancesCountPanel.add(new JLabel(" instances")); + add(minInstancesCountPanel, c); + + c.fill = GridBagConstraints.NONE; c.weightx = 1.0; classesTable = new ClassesTable(); @@ -67,6 +84,10 @@ public void addSelectionListener(ListSelectionListener l){ classesTable.getSelectionModel().addListSelectionListener(l); } + + public void addChangeListener(ChangeListener cL){ + minInstanceCountSpinner.addChangeListener(cL); + } /** * Returns the table where atomic owl classes are the table elements. Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -46,7 +46,7 @@ private JLabel welcomeTitle; - private final String titleText = "<html>Welcome to the DL-Learner ORE (Ontology Repair and Enrichment) Tool!<br>(Version 0.1)</html>"; + private final String titleText = "<html><b>Welcome to the DL-Learner ORE (Ontology Repair and Enrichment) Tool!<br>(Version 0.1)</b></html>"; private final String introductionText = "<html><p>ORE is a tool for debugging and enriching OWL ontologies. It has the following features: </p>" + "<UL>" + @@ -56,8 +56,8 @@ "<LI>enrichment of an ontology by learning definitions and super class axioms" + "<LI>guiding the user through potential consequences of adding those axioms" + "</UL>" + - "<p>In a later version, the tool will also support the detection of various potential modelling problems.</p>" + - "<p>ORE uses a wizard-style concept. On the left, you can see different steps in the wizard, where the current step is in bold. " + + "<p >In a later version, the tool will also support the detection of various potential modelling problems.</p>" + + "<p style=\"max-width:400px;\">ORE uses a wizard-style concept. On the left, you can see different steps in the wizard, where the current step is in bold. " + "Each step contains an explanation of it in the main window. The wizard may omit steps if they are not necessary, e.g. " + "if you load a consistent ontology, then the \"Debugging\" dialogue is skipped.</p>" + "<p>Please read the <a href=\"http://dl-learner.org/wiki/ORE\">the ORE wiki page</a> and view the <a href=\"...\">screencast</a> to get started.</p></html>"; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LearningPanel.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -37,8 +37,8 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.ui.GraphicalCoveragePanel; +import org.dllearner.tools.ore.ui.LearningOptionsPanel; import org.dllearner.tools.ore.ui.ResultTable; -import org.dllearner.tools.protege.OptionPanel; /** @@ -60,7 +60,7 @@ private JPanel buttonSliderPanel; private GraphicalCoveragePanel graphicPanel; - private OptionPanel optionsPanel; + private LearningOptionsPanel optionsPanel; private GridBagConstraints c; @@ -126,7 +126,7 @@ stopButton.setText("Stop"); stopButton.setEnabled(false); - optionsPanel = new OptionPanel(); + optionsPanel = new LearningOptionsPanel(); optionsPanel.setBorder(new TitledBorder("Options")); buttonSliderPanel.add(optionsPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, @@ -178,7 +178,7 @@ this.graphicPanel.setNewClassDescription(desc); } - public OptionPanel getOptionsPanel(){ + public LearningOptionsPanel getOptionsPanel(){ return optionsPanel; } @@ -192,9 +192,4 @@ frame.setVisible(true); } } - - - - - Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java 2009-09-24 11:32:09 UTC (rev 1862) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/LeftPanel.java 2009-09-25 09:43:56 UTC (rev 1863) @@ -27,6 +27,8 @@ import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JSeparator; +import javax.swing.SwingConstants; /** * Navigation panel where it's shown the actual wizard step and former and following steps. @@ -37,7 +39,7 @@ private static final long serialVersionUID = -1205252523136710091L; private JLabel[] jLabel; - +// private ImageIcon currentStepIcon = new ImageIcon("src/dl-learner/org/dllearner/tools/ore/untoggled.gif"); /** * Constructor instantiating JLabels with wizard step names. * @param i step number printed bold @@ -45,9 +47,9 @@ public LeftPanel(int i){ jLabel = new JLabel[7]; - setBackground(new java.awt.Color(255, 255, 255)); +// setBackground(new java.awt.Color(255, 255, 255)); JPanel panel2 = new JPanel(); - panel2.setBackground(new java.awt.Color(255, 255, 255)); +// panel2.setBackground(new java.awt.Color(255, 255, 255)); panel2.setLayout(new GridLayout(7, 1, 0, 10)); jLabel[0] = new JLabel("1. Introduction"); jLabel[1] = new JLabel("2. Knowledge Source"); @@ -65,6 +67,11 @@ setLayout(new BorderLayout()); setPreferredSize(new Dimension(165, 500)); add(panel2, BorderLayout.NORTH); + JPanel holderPanel = new JPanel(); + holderPanel.setLayout(new BorderLayout()); + holderPanel.add(panel2, BorderLayout.NORTH); + add(holderPanel); + add(new JSeparator(SwingConstants.VERTICAL), BorderLayout.EAST); } @@ -77,7 +84,7 @@ for(int j = 0; j < jLabel.length; j++){ jLabel[j].setFont(jLabel[j].getFont().deriveFont(Font.PLAIN)); } - +// jLabel[i].setIcon(currentStepIcon); jLabel[i].setFont(jLabel[i].getFont().deriveFont(Font.BOLD)); validate(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-24 11:32:19
|
Revision: 1862 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1862&view=rev Author: lorenz_b Date: 2009-09-24 11:32:09 +0000 (Thu, 24 Sep 2009) Log Message: ----------- changed text font Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-24 10:46:15 UTC (rev 1861) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREApplication.java 2009-09-24 11:32:09 UTC (rev 1862) @@ -21,14 +21,20 @@ package org.dllearner.tools.ore; import java.awt.Dimension; +import java.awt.Font; import java.io.File; import java.net.MalformedURLException; import java.net.URL; +import java.util.Collections; +import java.util.Comparator; import java.util.Locale; +import java.util.Vector; import javax.swing.SwingUtilities; +import javax.swing.UIDefaults; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; +import javax.swing.plaf.FontUIResource; import org.apache.log4j.PropertyConfigurator; import org.dllearner.tools.ore.ui.wizard.Wizard; @@ -64,6 +70,25 @@ try { // UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + UIDefaults def = UIManager.getLookAndFeelDefaults(); + Vector<?> vec = new Vector<Object>(def.keySet()); + Collections.sort(vec, new Comparator<Object>() { + + public int compare(Object arg0, Object arg1) { + return arg0.toString().compareTo(arg1.toString()); + } + + }); + + for (Object obj : vec) { + if(obj.toString().endsWith(".font")){ + FontUIResource fur = (FontUIResource)UIManager.get(obj); + Font f = new Font("Verdana", Font.PLAIN, fur.getSize()); + UIManager.put(obj, new FontUIResource(f)); + } + } + + } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-24 10:46:15 UTC (rev 1861) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-24 11:32:09 UTC (rev 1862) @@ -26,7 +26,6 @@ import java.awt.Color; import java.awt.Component; import java.awt.Dialog; -import java.awt.Font; import java.awt.Frame; import java.awt.Insets; import java.awt.event.WindowAdapter; @@ -435,7 +434,7 @@ informationsField.setBackground(new Color(color.getRed(), color.getGreen(), color.getBlue())); informationsField.setOpaque(true); informationsField.setEditable(false); - informationsField.setFont(new Font("Serif", Font.PLAIN, 14)); + wizardDialog.getContentPane().add(buttonPanel, java.awt.BorderLayout.SOUTH); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-24 10:46:15 UTC (rev 1861) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-24 11:32:09 UTC (rev 1862) @@ -22,7 +22,6 @@ import java.awt.Color; -import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; @@ -78,7 +77,6 @@ welcomeTitle = new JLabel(); welcomeTitle.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(0, 0, 0))); - welcomeTitle.setFont(new java.awt.Font("MS Sans Serif", Font.BOLD, 14)); welcomeTitle.setText(titleText); add(welcomeTitle, c); @@ -88,7 +86,6 @@ instructionsField.setBackground(new Color(color.getRed(), color.getGreen(), color.getBlue())); instructionsField.setOpaque(true); instructionsField.setEditable(false); - instructionsField.setFont(new Font("Serif", Font.PLAIN, 14)); instructionsField.setText(introductionText); add(instructionsField, c); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-24 10:46:27
|
Revision: 1861 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1861&view=rev Author: lorenz_b Date: 2009-09-24 10:46:15 +0000 (Thu, 24 Sep 2009) Log Message: ----------- added ability to show links in browser Modified Paths: -------------- trunk/build.xml trunk/src/dl-learner/org/dllearner/Info.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java Added Paths: ----------- trunk/lib/ore-tool/BrowserLauncher2-all-1_3.jar Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java Modified: trunk/build.xml =================================================================== --- trunk/build.xml 2009-09-24 08:51:02 UTC (rev 1860) +++ trunk/build.xml 2009-09-24 10:46:15 UTC (rev 1861) @@ -1,105 +1,105 @@ <?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="build" name="dl_learner"> - + <!-- directory settings --> <property name="lib_dir" value="lib" /> <property name="source_dir" value="src/dl-learner" /> <property name="protege_dir" value="/home/jl/programme/Protege_4.0_beta/plugins" /> <property name="class_dir" value="classes" /> <property name="ontowiki_dir" value="${user.home}/workspace/ontowiki/ontowiki/src/extensions/components/dllearner/dllearner" /> - + <property name="php_client_dir" value="src/php-client" /> <tstamp> - <format property="today" pattern="yyyy-MM-dd" locale="en" /> - </tstamp> + <format property="today" pattern="yyyy-MM-dd" locale="en" /> + </tstamp> <property name="version_dir" value="dllearner-${today}" /> <property name="release_tmp_dir" value="release/${version_dir}" /> - <property name="release_php_client_tmp_dir" value="release/php-client-${today}" /> - + <property name="release_php_client_tmp_dir" value="release/php-client-${today}" /> + <!-- other settings --> <!-- maximum amount of allocated memory in startup scripts --> <property name ="max_memory" value="1024" /> - + <!-- set up classpath --> <path id="classpath"> <pathelement location="."/> - <fileset dir="${lib_dir}"> - <include name="**/*.jar"/> - </fileset> + <fileset dir="${lib_dir}"> + <include name="**/*.jar"/> + </fileset> </path> - + <!-- build target --> <target name="full_release" depends="manual,javadoc,build" description="full release, javadoc, scripts"> </target> - + <!-- build target --> <target name="rdbtoonto" description="makes jar"> - <!-- compile project into temporary directory --> - <mkdir dir="classes_tmp"/> - <javac destdir="classes_tmp" target="1.6"> - <src path="${source_dir}"/> - <classpath refid="classpath"/> - </javac> - - <jar jarfile="lib/rdbtoonto/converter.jar"> - <fileset dir="classes_tmp"/> - </jar> - <delete dir="classes_tmp"/> + <!-- compile project into temporary directory --> + <mkdir dir="classes_tmp"/> + <javac destdir="classes_tmp" target="1.6"> + <src path="${source_dir}"/> + <classpath refid="classpath"/> + </javac> + + <jar jarfile="lib/rdbtoonto/converter.jar"> + <fileset dir="classes_tmp"/> + </jar> + <delete dir="classes_tmp"/> </target> - - + + <!-- build target --> - <target name="local" depends="createScripts" description="fast build including scripts, + <target name="local" depends="createScripts" description="fast build including scripts, no javadoc, no tar, just executables in local, can be used on a server"> - - - <!-- compile project into temporary directory --> - <mkdir dir="classes_tmp"/> - <javac destdir="classes_tmp" target="1.5"> - <src path="${source_dir}"/> - <classpath refid="classpath"/> - </javac> - - <mkdir dir="${release_tmp_dir}"/> - <mkdir dir="${release_tmp_dir}/lib/"/> - <jar jarfile="${release_tmp_dir}/lib/dllearner.jar"> - <fileset dir="classes_tmp"/> - </jar> - <delete dir="classes_tmp"/> - - <!-- copy all other libraries --> - <copy toDir="${release_tmp_dir}/lib"> - <fileset dir="${lib_dir}" /> - </copy> - - <!-- copy binary files and examples --> - <copy toDir="${release_tmp_dir}/examples"> - <fileset dir="examples"/> - </copy> - <copy toDir="${release_tmp_dir}"> - <fileset dir="bin"/> - </copy> - - <!-- create file containing the build info --> - <echo file="${release_tmp_dir}/build.txt" append="false">DL-Learner Build ${today}</echo> - - <!-- create empty log directory for release --> - <mkdir dir="${release_tmp_dir}/log" /> - <mkdir dir="${release_tmp_dir}/cache" /> - - <mkdir dir="local" /> - <move toDir="local"> - <fileset dir="${release_tmp_dir}"/> - </move> - <delete dir="${release_tmp_dir}" /> - <delete dir="release" /> - - </target> - - + + + <!-- compile project into temporary directory --> + <mkdir dir="classes_tmp"/> + <javac destdir="classes_tmp" target="1.5"> + <src path="${source_dir}"/> + <classpath refid="classpath"/> + </javac> + + <mkdir dir="${release_tmp_dir}"/> + <mkdir dir="${release_tmp_dir}/lib/"/> + <jar jarfile="${release_tmp_dir}/lib/dllearner.jar"> + <fileset dir="classes_tmp"/> + </jar> + <delete dir="classes_tmp"/> + + <!-- copy all other libraries --> + <copy toDir="${release_tmp_dir}/lib"> + <fileset dir="${lib_dir}" /> + </copy> + + <!-- copy binary files and examples --> + <copy toDir="${release_tmp_dir}/examples"> + <fileset dir="examples"/> + </copy> + <copy toDir="${release_tmp_dir}"> + <fileset dir="bin"/> + </copy> + + <!-- create file containing the build info --> + <echo file="${release_tmp_dir}/build.txt" append="false">DL-Learner Build ${today}</echo> + + <!-- create empty log directory for release --> + <mkdir dir="${release_tmp_dir}/log" /> + <mkdir dir="${release_tmp_dir}/cache" /> + + <mkdir dir="local" /> + <move toDir="local"> + <fileset dir="${release_tmp_dir}"/> + </move> + <delete dir="${release_tmp_dir}" /> + <delete dir="release" /> + + </target> + + <!-- build target --> <target name="build" depends="createScripts,manual" description="fast build including scripts, no javadoc"> - + <!-- write current build date into Info.java --> <echo file="${source_dir}/org/dllearner/Info.java" append="false"> // File is updated automatically when a new version is created @@ -108,31 +108,31 @@ public class Info { public static final String build = "${today}"; } - </echo> - + </echo> + <!-- compile project into temporary directory --> - <mkdir dir="classes_tmp"/> - <javac destdir="classes_tmp" target="1.5"> - <src path="${source_dir}"/> - <classpath refid="classpath"/> - </javac> + <mkdir dir="classes_tmp"/> + <javac destdir="classes_tmp" target="1.5"> + <src path="${source_dir}"/> + <classpath refid="classpath"/> + </javac> <!-- we also need to copy some images, which should be - included in dllearner.jar --> + included in dllearner.jar --> <copy toDir="classes_tmp" > <fileset dir="${source_dir}" includes="**/*.gif,**/*.html"/> - </copy> + </copy> <mkdir dir="${release_tmp_dir}"/> <mkdir dir="${release_tmp_dir}/lib/"/> - <jar jarfile="${release_tmp_dir}/lib/dllearner.jar"> - <fileset dir="classes_tmp"/> - </jar> + <jar jarfile="${release_tmp_dir}/lib/dllearner.jar"> + <fileset dir="classes_tmp"/> + </jar> <delete dir="classes_tmp"/> - + <!-- copy all other libraries --> <copy toDir="${release_tmp_dir}/lib"> <fileset dir="${lib_dir}" /> - </copy> - + </copy> + <!-- copy binary files and examples --> <copy toDir="${release_tmp_dir}/examples"> <fileset dir="examples"/> @@ -140,13 +140,13 @@ <copy toDir="${release_tmp_dir}"> <fileset dir="bin"/> </copy> - + <!-- create file containing the build info --> <echo file="${release_tmp_dir}/build.txt" append="false">DL-Learner Build ${today}</echo> - + <!-- create empty log directory for release --> <mkdir dir="${release_tmp_dir}/log" /> - + <!-- copy documentation excluding developer documentation --> <copy toDir="${release_tmp_dir}/doc"> <fileset dir="doc"> @@ -155,37 +155,37 @@ <exclude name="manual/" /> </fileset> </copy> - + <!-- copy special files (INSTALL, README) --> <copy file="INSTALL" toDir="${release_tmp_dir}" /> <copy file="README" toDir="${release_tmp_dir}" /> - + <!-- create tar.gz files (allows storing whether a file is executable) --> <tar longfile="gnu" destfile="dllearner-nosource-${today}.tar.gz" compression="gzip"> - <!-- extra set for executable files --> - <tarfileset dir="release/" mode="755"> - <include name="${version_dir}/dllearner" /> - <include name="${version_dir}/quickstart" /> - <include name="${version_dir}/ws" /> - <include name="${version_dir}/gui" /> - </tarfileset> - <tarfileset dir="release/"> - <exclude name="${version_dir}/dllearner"/> - <exclude name="${version_dir}/quickstart" /> - <exclude name="${version_dir}/ws" /> - <exclude name="${version_dir}/gui" /> - </tarfileset> + <!-- extra set for executable files --> + <tarfileset dir="release/" mode="755"> + <include name="${version_dir}/dllearner" /> + <include name="${version_dir}/quickstart" /> + <include name="${version_dir}/ws" /> + <include name="${version_dir}/gui" /> + </tarfileset> + <tarfileset dir="release/"> + <exclude name="${version_dir}/dllearner"/> + <exclude name="${version_dir}/quickstart" /> + <exclude name="${version_dir}/ws" /> + <exclude name="${version_dir}/gui" /> + </tarfileset> </tar> - + <!-- copy source code --> <mkdir dir="${release_tmp_dir}/src/"/> <copy toDir="${release_tmp_dir}/src/"> <fileset dir="${source_dir}" includes="**/*.java,**/*.html,**/*.gif,**/*.jjt,build.xml"/> </copy> - + <!-- copy manual --> <copy toFile="${release_tmp_dir}/doc/manual.pdf" file="doc/manual/manual.pdf" /> - + <!-- create copy developer documentation --> <!-- <copy todir="${release_tmp_dir}/doc/eclipse/"> @@ -194,30 +194,30 @@ <copy todir="${release_tmp_dir}/doc/javadoc/"> <fileset dir="doc/javadoc/"/> </copy> - --> - + --> + <!-- create backup (= standard build + source code + developer documentation) --> <tar longfile="gnu" destfile="dllearner-${today}.tar.gz" compression="gzip"> <tarfileset dir="release/" mode="755"> - <include name="${version_dir}/dllearner" /> - <include name="${version_dir}/quickstart" /> + <include name="${version_dir}/dllearner" /> + <include name="${version_dir}/quickstart" /> <include name="${version_dir}/ws" /> <include name="${version_dir}/gui" /> </tarfileset> <tarfileset dir="release/"> - <exclude name="${version_dir}/dllearner"/> - <exclude name="${version_dir}/quickstart" /> + <exclude name="${version_dir}/dllearner"/> + <exclude name="${version_dir}/quickstart" /> <exclude name="${version_dir}/ws" /> <exclude name="${version_dir}/gui" /> - </tarfileset> - </tar> - <delete dir="release"/> + </tarfileset> + </tar> + <delete dir="release"/> </target> - + <!-- build PHP client release --> <target name="php_client"> <mkdir dir="${release_php_client_tmp_dir}" /> - + <!-- copy PHP-client to a temporary directory exluding some files --> <copy toDir="${release_php_client_tmp_dir}"> <fileset dir="${php_client_dir}"> @@ -226,20 +226,20 @@ <!-- <exclude name="save/" /> --> </fileset> </copy> - + <!-- copy over all owl ontologies in examples directory --> <copy toDir="${release_php_client_tmp_dir}/ontologies/" flatten="true"> <fileset dir="examples" includes="**/*.owl" /> </copy> - + <!-- create release --> <tar destfile="php-client-${today}.tar.gz" compression="gzip"> <tarfileset dir="release" /> </tar> - + <delete dir="release" /> </target> - + <!-- generate JAXWS classes --> <target name="wsgen" > <path id="wsgen"> @@ -248,23 +248,25 @@ </path> <pathconvert refid="wsgen" property="wsgenpath"/> <exec dir="${source_dir}" executable="wsgen"> - <arg value="-keep"/> - <arg value="-verbose"/> - <arg value="-cp"/> - <arg value="${wsgenpath}"/> - <arg value="org.dllearner.server.DLLearnerWS"/> - </exec> + <arg value="-keep"/> + <arg value="-verbose"/> + <arg value="-cp"/> + <arg value="${wsgenpath}"/> + <arg value="org.dllearner.server.DLLearnerWS"/> + </exec> </target> - + <!-- generate startup scripts --> <target name="createScripts" > <path id="addjar"> <path refid="classpath"/> <pathelement location="${lib_dir}/dllearner.jar"/> </path> - <path id="removeprefix"><pathelement location="."/> </path> + <path id="removeprefix"> + <pathelement location="."/> + </path> <pathconvert refid="removeprefix" property="removeprefix" /> - + <pathconvert refid="addjar" property="pathStringUnix" targetos="unix"> <map from="${removeprefix}" to="."/> </pathconvert> @@ -275,42 +277,42 @@ <echo file="bin/quickstart.bat" message="java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringWin} org.dllearner.cli.QuickStart"/> <echo file="bin/dllearner.bat" message="java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringWin} org.dllearner.cli.Start %*"/> <echo file="bin/ws.bat" message="java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringWin} org.dllearner.server.DLLearnerWSStart %*"/> - <echo file="bin/gui.bat" message="java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringWin} org.dllearner.gui.StartGUI %*"/> + <echo file="bin/gui.bat" message="java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringWin} org.dllearner.gui.StartGUI %*"/> <echo file="bin/quickstart" message="#!/bin/bash${line.separator}java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringUnix} org.dllearner.cli.QuickStart"/> <echo file="bin/dllearner" message="#!/bin/bash${line.separator}java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringUnix} org.dllearner.cli.Start $@"/> <echo file="bin/ws" message="#!/bin/bash${line.separator}java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringUnix} org.dllearner.server.DLLearnerWSStart $@"/> <echo file="bin/gui" message="#!/bin/bash${line.separator}java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringUnix} org.dllearner.gui.StartGUI $@"/> </target> - + <!-- generate manual --> <taskdef name="latex" classname="de.dokutransdata.antlatex.LaTeX" - classpath="lib/ant_latex.jar"/> - <target name="manual"> - + classpath="lib/ant_latex.jar"/> + <target name="manual"> + <!-- automatically adds correct build number in manual --> <replaceregexp file="doc/manual/manual.tex" match="DL-Learner (.*) command line interface" replace="DL-Learner ${today} command line interface" byline="true"/> - - <!-- run pdflatex and bibtex over doc/manual/ --> - <latex + + <!-- run pdflatex and bibtex over doc/manual/ --> + <latex latexfile="manual.tex" verbose="off" clean="on" pdftex="on" - workingDir="doc/manual"> - <bibtex + workingDir="doc/manual"> + <bibtex run="on" workingDir="doc/manual/" - /> - </latex> - </target> - + /> + </latex> + </target> + <!-- generate Javadoc --> - <target name="javadoc"> - <pathconvert refid="classpath" property="jdocclasspath"/> - <javadoc access="public" + <target name="javadoc"> + <pathconvert refid="classpath" property="jdocclasspath"/> + <javadoc access="public" author="true" classpath="${jdocclasspath}" destdir="doc/javadoc" @@ -331,71 +333,71 @@ bottom="<img style='float:right' src='http://sflogo.sourceforge.net/sflogo.php?group_id=203619&type=1' width='88' height='31' border='0' alt='SourceForge.net Logo' /> DL-Learner is licenced under the terms of the GNU General Public License.<br />Copyright &#169; 2007-2008 Jens Lehmann" Encoding="ISO-8859-1" windowtitle="DL-Learner Javadoc"> - <link href="http://java.sun.com/javase/6/docs/api/"/> - </javadoc> - </target> - + <link href="http://java.sun.com/javase/6/docs/api/"/> + </javadoc> + </target> + <!-- copy all necessary files in a folder to build the jar or a release bundle --> <target name="buildProtegePlugin"> <property name="source" value="src/dl-learner/org/dllearner/tools/protege" /> <property name="temp" value="${source}/temp" /> <property name="release" value="${source}/release" /> - - <mkdir dir="${temp}" /> - <mkdir dir="${release}" /> - <mkdir dir="${temp}/META-INF" /> - <mkdir dir="${temp}/lib" /> - <mkdir dir="${temp}/lib/pellet" /> - <mkdir dir="${temp}/lib/jena" /> - <mkdir dir="${temp}/lib/ore-tools" /> - <copy toDir="${temp}/META-INF" > - <fileset dir="${source}/META-INF" includes="MANIFEST.MF," /> - </copy> - <copy toDir="${temp}/lib/ore-tool" > - <fileset dir="${lib_dir}/ore-tool" includes="swingx-0.9.2.jar" /> - </copy> - <copy toDir="${temp}/lib" > - <fileset dir="${lib_dir}" includes="junit-4.4.jar,jamon-2.7.jar" /> - </copy> - <copy toDir="${temp}/lib/pellet" > - <fileset dir="${lib_dir}/pellet" includes="**/*.jar" /> - </copy> - <copy toDir="${temp}/lib/jena" > - <fileset dir="${lib_dir}/jena" includes="commons-logging-1.1.1.jar,json.jar" /> - </copy> - <copy toDir="${temp}" > - <fileset dir="${class_dir}" /> - </copy> - <copy toDir="${temp}" > - <fileset dir="${source}/META-INF" includes="**/*.xml," excludes="build.xml" /> - </copy> - <javac srcdir="${source}" + + <mkdir dir="${temp}" /> + <mkdir dir="${release}" /> + <mkdir dir="${temp}/META-INF" /> + <mkdir dir="${temp}/lib" /> + <mkdir dir="${temp}/lib/pellet" /> + <mkdir dir="${temp}/lib/jena" /> + <mkdir dir="${temp}/lib/ore-tools" /> + <copy toDir="${temp}/META-INF" > + <fileset dir="${source}/META-INF" includes="MANIFEST.MF," /> + </copy> + <copy toDir="${temp}/lib/ore-tool" > + <fileset dir="${lib_dir}/ore-tool" includes="swingx-1.0.jar" /> + </copy> + <copy toDir="${temp}/lib" > + <fileset dir="${lib_dir}" includes="junit-4.4.jar,jamon-2.7.jar" /> + </copy> + <copy toDir="${temp}/lib/pellet" > + <fileset dir="${lib_dir}/pellet" includes="**/*.jar" /> + </copy> + <copy toDir="${temp}/lib/jena" > + <fileset dir="${lib_dir}/jena" includes="commons-logging-1.1.1.jar,json.jar" /> + </copy> + <copy toDir="${temp}" > + <fileset dir="${class_dir}" /> + </copy> + <copy toDir="${temp}" > + <fileset dir="${source}/META-INF" includes="**/*.xml," excludes="build.xml" /> + </copy> + <javac srcdir="${source}" destdir="${temp}" debug="on" target="1.5"> - <classpath refid="classpath"/> - </javac> - <jar destfile="${release}/DL-Learner-protege-plugin.jar" manifest="${temp}/META-INF/MANIFEST.MF"> - <fileset dir="${temp}" /> - </jar> - + <classpath refid="classpath"/> + </javac> + <jar destfile="${release}/DL-Learner-protege-plugin.jar" manifest="${temp}/META-INF/MANIFEST.MF"> + <fileset dir="${temp}" /> + </jar> + </target> - + <!--Copy the DL-Learner-Protege-plugin jar file into the Protege plugin folder --> <target name="copyProtegePluginToProtegeDir" depends="buildProtegePlugin"> <copy toDir="${protege_dir}" > - <fileset dir="${release}" includes="DL-Learner-protege-plugin.jar" /> - </copy> + <fileset dir="${release}" includes="DL-Learner-protege-plugin.jar" /> + </copy> <delete dir="${temp}" /> <delete dir="${release}" /> - </target> - + </target> + <!--Builds the Releasebundle --> <target name="buildProtegePluginRelease" depends="buildProtegePlugin"> <copy file="LICENSE" toDir="${release}" /> - <copy toDir="${release}" > - <fileset dir="${source}" includes="INSTALL,README" excludes="**/*.java,**/*.gif" /> - </copy> + <copy toDir="${release}" > + <fileset dir="${source}" includes="INSTALL,README" excludes="**/*.java,**/*.gif" /> + </copy> <property name="ProtRelease" value="releaseProtege/" /> <mkdir dir="${ProtRelease}" /> <zip destfile="${ProtRelease}/DL-Learner-plugin.zip" @@ -404,45 +406,144 @@ <delete dir="${temp}" /> <delete dir="${release}" /> </target> - + <!--Builds the Ontowiki DL-Learner Jar --> - + <target name="buildOntowikiDLLearnerJar"> - <mkdir dir="${temp}"/> - <mkdir dir="${release}"/> - <mkdir dir="${release}/lib"/> - <mkdir dir="${release}/lib/pellet"/> - <mkdir dir="${release}/lib/jena"/> - <mkdir dir="${release}/lib/owlapi"/> - - <copy toDir="${release}/lib"> - <fileset dir="${lib_dir}" includes="jamon-2.7.jar,log4j.jar,components.ini"/> - </copy> - + <mkdir dir="${temp}"/> + <mkdir dir="${release}"/> + <mkdir dir="${release}/lib"/> + <mkdir dir="${release}/lib/pellet"/> + <mkdir dir="${release}/lib/jena"/> + <mkdir dir="${release}/lib/owlapi"/> + + <copy toDir="${release}/lib"> + <fileset dir="${lib_dir}" includes="jamon-2.7.jar,log4j.jar,components.ini"/> + </copy> + <copy toDir="${release}/lib/owlapi"> <fileset dir="${lib_dir}/owlapi" includes="owlapi-bin.jar"/> - </copy> - <copy toDir="${release}/lib/pellet"> - <fileset dir="${lib_dir}/pellet" includes="pellet-core.jar, pellet-owlapi.jar"/> - </copy> - - <copy toDir="${release}/lib/jena"> - <fileset dir="${lib_dir}/jena" includes="commons-logging-1.1.1.jar,json.jar"/> - </copy> - - <copy toDir="${temp}"> - <fileset dir="${class_dir}"/> - </copy> - - <jar destfile="${release}/dllearner.jar"> - <fileset dir="${temp}"/> - </jar> - <copy toDir="${ontowiki_dir}"> - <fileset dir="${release}"/> </copy> - + <copy toDir="${release}/lib/pellet"> + <fileset dir="${lib_dir}/pellet" includes="pellet-core.jar, pellet-owlapi.jar"/> + </copy> + + <copy toDir="${release}/lib/jena"> + <fileset dir="${lib_dir}/jena" includes="commons-logging-1.1.1.jar,json.jar"/> + </copy> + + <copy toDir="${temp}"> + <fileset dir="${class_dir}"/> + </copy> + + <jar destfile="${release}/dllearner.jar"> + <fileset dir="${temp}"/> + </jar> + <copy toDir="${ontowiki_dir}"> + <fileset dir="${release}"/> + </copy> + <delete dir="${temp}" /> <delete dir="${release}" /> </target> - + + <!-- build the ORE tool --> + <target name="buildORE" description="build ore including scripts, no javadoc"> + + <!-- build scripts --> + <path id="addjar"> + <path refid="classpath"/> + <pathelement location="${lib_dir}/dllearner.jar"/> + </path> + <path id="removeprefix"> + <pathelement location="."/> + </path> + <pathconvert refid="removeprefix" property="removeprefix" /> + + <pathconvert refid="addjar" property="pathStringUnix" targetos="unix"> + <map from="${removeprefix}" to="."/> + </pathconvert> + <pathconvert refid="addjar" property="pathStringWin" targetos="windows"> + <map from="${removeprefix}" to="."/> + </pathconvert> + + <echo file="bin/ore.bat" message="java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringWin} org.dllearner.tools.ore.OREApplication"/> + <echo file="bin/ore" message="#!/bin/bash${line.separator}java -Xmx${max_memory}m -Djava.library.path=lib/fact/ -cp ${pathStringUnix} org.dllearner.tools.ore.OREApplication $@"/> + + <!-- write current build date into Info.java --> + <echo file="${source_dir}/org/dllearner/Info.java" append="false"> + // File is updated automatically when a new version is created + package org.dllearner; + + public class Info { + public static final String build = "${today}"; + } + </echo> + + <!-- compile project into temporary directory --> + <mkdir dir="classes_tmp"/> + <javac destdir="classes_tmp" target="1.5"> + <src path="${source_dir}"/> + <classpath refid="classpath"/> + </javac> + <!-- we also need to copy some images, which should be + included in dllearner.jar --> + <copy toDir="classes_tmp" > + <fileset dir="${source_dir}" includes="**/*.gif,**/*.html,**/*.txt"/> + </copy> + <mkdir dir="${release_tmp_dir}"/> + <mkdir dir="${release_tmp_dir}/lib/"/> + <jar jarfile="${release_tmp_dir}/lib/dllearner.jar"> + <fileset dir="classes_tmp"/> + </jar> + <delete dir="classes_tmp"/> + + <!-- copy all other libraries --> + <copy toDir="${release_tmp_dir}/lib"> + <fileset dir="${lib_dir}" /> + </copy> + + <!-- copy binary files and examples --> + <copy toDir="${release_tmp_dir}/examples"> + <fileset dir="examples"/> + </copy> + <copy toDir="${release_tmp_dir}"> + <fileset dir="bin"/> + </copy> + + <!-- create file containing the build info --> + <echo file="${release_tmp_dir}/build.txt" append="false">DL-Learner Build ${today}</echo> + + <!-- create empty log directory for release --> + <mkdir dir="${release_tmp_dir}/log" /> + + <!-- create tar.gz files (allows storing whether a file is executable) --> + <tar longfile="gnu" destfile="ore-nosource-${today}.tar.gz" compression="gzip"> + <!-- extra set for executable files --> + <tarfileset dir="release/" mode="755"> + <include name="${version_dir}/OREApplication" /> + </tarfileset> + <tarfileset dir="release/"> + <exclude name="${version_dir}/OREApplication"/> + </tarfileset> + </tar> + + <!-- copy source code --> + <mkdir dir="${release_tmp_dir}/src/"/> + <copy toDir="${release_tmp_dir}/src/"> + <fileset dir="${source_dir}" includes="**/*.java,**/*.html,**/*.gif,**/*.jjt,build.xml"/> + </copy> + + <!-- create backup (= standard build + source code + developer documentation) --> + <tar longfile="gnu" destfile="ore-${today}.tar.gz" compression="gzip"> + <tarfileset dir="release/" mode="755"> + <include name="${version_dir}/OREApplication" /> + </tarfileset> + <tarfileset dir="release/"> + <exclude name="${version_dir}/OREApplication"/> + </tarfileset> + </tar> + <delete dir="release"/> + </target> + </project> Added: trunk/lib/ore-tool/BrowserLauncher2-all-1_3.jar =================================================================== (Binary files differ) Property changes on: trunk/lib/ore-tool/BrowserLauncher2-all-1_3.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/Info.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Info.java 2009-09-24 08:51:02 UTC (rev 1860) +++ trunk/src/dl-learner/org/dllearner/Info.java 2009-09-24 10:46:15 UTC (rev 1861) @@ -1,8 +1,8 @@ -// File is updated automatically when a new version is created -package org.dllearner; + // File is updated automatically when a new version is created + package org.dllearner; -public class Info { - public static final String build = "2009-05-06"; -} - \ No newline at end of file + public class Info { + public static final String build = "2009-09-23"; + } + \ No newline at end of file Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java 2009-09-24 08:51:02 UTC (rev 1860) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java 2009-09-24 10:46:15 UTC (rev 1861) @@ -1,22 +0,0 @@ -package org.dllearner.tools.ore; - -import java.net.MalformedURLException; - -import org.dllearner.kb.sparql.SPARQLTasks; -import org.dllearner.kb.sparql.SparqlEndpoint; - -public class Sparql { - - /** - * @param args - * @throws MalformedURLException - */ - public static void main(String[] args) throws MalformedURLException { - SPARQLTasks task = new SPARQLTasks(SparqlEndpoint.getEndpointDBpedia()); - - String queryString = "SELECT DISTINCT ?class WHERE {?class rdf:type owl:Class ." + - "?class rdfs:label ?label . FILTER(regex(?label, \"City\")) }"; - System.out.println(task.queryAsSet(queryString, "class")); - } - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java 2009-09-24 08:51:02 UTC (rev 1860) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/IntroductionPanelDescriptor.java 2009-09-24 10:46:15 UTC (rev 1861) @@ -20,23 +20,47 @@ package org.dllearner.tools.ore.ui.wizard.descriptors; +import java.net.MalformedURLException; +import java.net.URL; + +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; + import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.IntroductionPanel; +import edu.stanford.ejalbert.BrowserLauncher; +import edu.stanford.ejalbert.exception.BrowserLaunchingInitializingException; +import edu.stanford.ejalbert.exception.UnsupportedOperatingSystemException; + /** * Wizard panel descriptor with some informations for the tool. * @author Lorenz Buehmann * */ -public class IntroductionPanelDescriptor extends WizardPanelDescriptor { +public class IntroductionPanelDescriptor extends WizardPanelDescriptor implements HyperlinkListener{ public static final String IDENTIFIER = "INTRODUCTION_PANEL"; public static final String INFORMATION = ""; + private BrowserLauncher launcher; public IntroductionPanelDescriptor() { - super(IDENTIFIER, new IntroductionPanel()); + IntroductionPanel panel = new IntroductionPanel(); + panel.addHyperLinkListener(this); + setPanelComponent(panel); + setPanelDescriptorIdentifier(IDENTIFIER); + + try { + launcher = new BrowserLauncher(); + } catch (BrowserLaunchingInitializingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (UnsupportedOperatingSystemException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } @Override @@ -53,6 +77,20 @@ public void aboutToDisplayPanel() { getWizard().getInformationField().setText(INFORMATION); } - + + @Override + public void hyperlinkUpdate(HyperlinkEvent event) { + + if(event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + URL url; + try { + url = new URL(event.getDescription()); + launcher.openURLinBrowser(url.toString()); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-24 08:51:02 UTC (rev 1860) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/IntroductionPanel.java 2009-09-24 10:46:15 UTC (rev 1861) @@ -31,6 +31,7 @@ import javax.swing.JPanel; import javax.swing.JTextPane; import javax.swing.UIManager; +import javax.swing.event.HyperlinkListener; /** * Wizard panel with introduction text. @@ -48,7 +49,7 @@ private final String titleText = "<html>Welcome to the DL-Learner ORE (Ontology Repair and Enrichment) Tool!<br>(Version 0.1)</html>"; - private final String introductionText = "<html>ORE is a tool for debugging and enriching OWL ontologies. It has the following features: " + + private final String introductionText = "<html><p>ORE is a tool for debugging and enriching OWL ontologies. It has the following features: </p>" + "<UL>" + "<LI>detection of inconsistencies" + "<LI>displaying explanations for those inconsistencies" + @@ -56,11 +57,11 @@ "<LI>enrichment of an ontology by learning definitions and super class axioms" + "<LI>guiding the user through potential consequences of adding those axioms" + "</UL>" + - "In a later version, the tool will also support the detection of various potential modelling problems." + - "ORE uses a wizard-style concept. On the left, you can see different steps in the wizard, where the current step is in bold. " + + "<p>In a later version, the tool will also support the detection of various potential modelling problems.</p>" + + "<p>ORE uses a wizard-style concept. On the left, you can see different steps in the wizard, where the current step is in bold. " + "Each step contains an explanation of it in the main window. The wizard may omit steps if they are not necessary, e.g. " + - "if you load a consistent ontology, then the \"Debugging\" dialogue is skipped." + - "Please read the <a href=\"http://dl-learner.org/wiki/ORE\">the ORE wiki page</a> and view the <a href=\"...\">screencast</a> to get started.</html>"; + "if you load a consistent ontology, then the \"Debugging\" dialogue is skipped.</p>" + + "<p>Please read the <a href=\"http://dl-learner.org/wiki/ORE\">the ORE wiki page</a> and view the <a href=\"...\">screencast</a> to get started.</p></html>"; public IntroductionPanel() { createUI(); @@ -94,5 +95,9 @@ c.weighty = 1.0; add(new JLabel(), c); } + + public void addHyperLinkListener(HyperlinkListener hL){ + instructionsField.addHyperlinkListener(hL); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-24 08:51:13
|
Revision: 1860 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1860&view=rev Author: lorenz_b Date: 2009-09-24 08:51:02 +0000 (Thu, 24 Sep 2009) Log Message: ----------- some gui fixes cleaned up code Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -25,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.ObjectPropertyExpression; import org.dllearner.core.owl.Union; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; @@ -32,7 +33,12 @@ import org.dllearner.learningproblems.EvaluatedDescriptionClass; import org.dllearner.reasoning.PelletReasoner; import org.dllearner.tools.ore.ui.DescriptionLabel; +import org.dllearner.utilities.owl.OWLAPIConverter; import org.mindswap.pellet.exceptions.InconsistentOntologyException; +import org.mindswap.pellet.utils.SetUtils; +import org.semanticweb.owl.model.OWLDataFactory; +import org.semanticweb.owl.model.OWLDescription; +import org.semanticweb.owl.model.OWLObjectProperty; import org.semanticweb.owl.model.OWLOntologyCreationException; public class OREManager { @@ -144,6 +150,7 @@ e.printStackTrace(); } reasoner.loadOntologies(); + reasoner.addProgressMonitor(TaskManager.getInstance().getStatusBar()); baseURI = reasoner.getBaseURI(); prefixes = reasoner.getPrefixes(); modifier = new OntologyModifier(reasoner); @@ -447,7 +454,6 @@ Set<Individual> allIndividuals = new HashSet<Individual>(); - for(Individual i : reasoner.getIndividuals()){ if(!reasoner.hasType(desc, i)){ @@ -456,10 +462,36 @@ } allIndividuals.remove(ind); + System.out.println(); return allIndividuals; } + public boolean isAssertable(ObjectPropertyExpression role, Individual ind){ + OWLDataFactory factory = reasoner.getOWLOntologyManager().getOWLDataFactory(); + OWLObjectProperty property = factory.getOWLObjectProperty(URI.create(role.getName())); + + //get the objectproperty domains + Set<OWLDescription> domains = SetUtils.union(getReasoner().getReasoner().getDomains(property)); + + //get the classes where the individual belongs to + Set<NamedClass> classes = reasoner.getTypes(ind); + + //get the complements of the classes, the individual belongs to + Set<Description> complements = new HashSet<Description>(); + for(NamedClass nc : classes){ + complements.addAll(reasoner.getComplementClasses(nc)); + } + + for(OWLDescription domain : domains){ + if(complements.contains(OWLAPIConverter.convertClass(domain.asOWLClass()))){ + System.out.println(domain); + return false; + } + } + return true; + } + /** * Returns classes where individual might moved to. * @param ind the individual Modified: trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/Sparql.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -1,7 +1,6 @@ package org.dllearner.tools.ore; import java.net.MalformedURLException; -import java.net.URL; import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; @@ -13,8 +12,7 @@ * @throws MalformedURLException */ public static void main(String[] args) throws MalformedURLException { - URL url = new URL("http://dbpedia.org/sparql"); - SPARQLTasks task = new SPARQLTasks(SparqlEndpoint.getEndpointDBpedia());//new SparqlEndpoint(url)); + SPARQLTasks task = new SPARQLTasks(SparqlEndpoint.getEndpointDBpedia()); String queryString = "SELECT DISTINCT ?class WHERE {?class rdf:type owl:Class ." + "?class rdfs:label ?label . FILTER(regex(?label, \"City\")) }"; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -3,7 +3,6 @@ import java.awt.Cursor; import javax.swing.JFrame; -import javax.swing.SwingWorker; import org.dllearner.tools.ore.ui.StatusBar; @@ -11,9 +10,6 @@ private static TaskManager instance; - private SwingWorker<?, ?> currentTask; - - private StatusBar statusBar; private JFrame dialog; @@ -40,29 +36,15 @@ return dialog; } - public void setCurrentTask(SwingWorker<?, ?> task){ - this.currentTask = task; - } - - public void cancelCurrentTask(){ - if(currentTask != null && !currentTask.isCancelled() && !currentTask.isDone()){ - currentTask.cancel(true); - } -// statusBar.setProgressTitle("Canceled"); -// dialog.setCursor(null); - } - - - public void setTaskStarted(String message){ dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - statusBar.setProgressTitle(message); + statusBar.setMessage(message); statusBar.showProgress(true); } public void setTaskFinished(){ dialog.setCursor(null); - statusBar.setProgressTitle("Done"); + statusBar.setMessage("Done"); statusBar.showProgress(false); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LaconicTest.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -3,13 +3,11 @@ import java.io.PrintWriter; import java.net.URI; import java.util.Collections; -import java.util.HashSet; import java.util.Set; import org.dllearner.tools.ore.explanation.laconic.LaconicExplanationGenerator; import org.mindswap.pellet.owlapi.PelletReasonerFactory; import org.mindswap.pellet.owlapi.Reasoner; -import org.mindswap.pellet.utils.progress.SwingProgressMonitor; import org.semanticweb.owl.apibinding.OWLManager; import org.semanticweb.owl.inference.OWLReasoner; import org.semanticweb.owl.inference.OWLReasonerException; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -133,7 +133,7 @@ menu.add(new RemoveAllPropertyAssertionsToMenuItem(((ObjectSomeRestriction) desc).getRole(), ((ObjectSomeRestriction) desc).getChild(0))); //2.b remove property assertions with objects in range } } else if(desc instanceof ObjectAllRestriction){ //3. description is a object all restriction - if (!(desc.getChild(0) instanceof Thing)) { + if (!(desc.getChild(0) instanceof Thing)) {System.out.println(ore.isAssertable(((ObjectAllRestriction)desc).getRole(), ind)); JMenu dme = new JMenu("add property assertion " + ((ObjectAllRestriction) desc).getRole().toKBSyntaxString(baseURI, prefixes) //3.a add property assertion with object not in range + " with object ..."); for (Individual i : ore.getIndividualsNotInPropertyRange(desc.getChild(0), ind)){ Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -1,348 +0,0 @@ -package org.dllearner.tools.ore.ui; - -import java.awt.Dimension; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.SortedSet; -import java.util.TreeSet; - -import javax.swing.AbstractAction; -import javax.swing.ButtonGroup; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JScrollPane; -import javax.swing.JTextField; -import javax.swing.JToggleButton; -import javax.swing.ProgressMonitor; -import javax.swing.SwingWorker; -import javax.swing.border.TitledBorder; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; - -import org.dllearner.core.ComponentManager; -import org.dllearner.kb.sparql.SPARQLTasks; -import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.utilities.datastructures.SetManipulation; -import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; -import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; - -public class ExtractFromSparqlPanel extends JPanel implements DocumentListener, ActionListener, PropertyChangeListener{ - - /** - * - */ - private static final long serialVersionUID = -2164059829630727931L; - - - private JComboBox comboBox; - private JTextField classField; - private JTextField defaultGraphField; - - private JRadioButton asLabelButton; - private JRadioButton asURLButton; - - private JButton extractButton; - - private GridBagConstraints c; - - private SPARQLTasks task; - private SparqlKnowledgeSource ks; - private OntologyExtractingTask extractTask; - private ProgressMonitor mon; - private List<SparqlEndpoint> endpoints; - - private SparqlExtractOptionsPanel optionsPanel; - - public ExtractFromSparqlPanel(){ - - setLayout(new GridBagLayout()); - c = new GridBagConstraints(); - c.fill = GridBagConstraints.HORIZONTAL; - c.weightx = 1.0; - c.gridwidth = GridBagConstraints.REMAINDER; - - JPanel endPointHolderPanel = new JPanel(); - endPointHolderPanel.setLayout(new GridLayout(0, 1)); - endPointHolderPanel.setBorder(new TitledBorder("Sparql endpoint")); - comboBox = new JComboBox(); - comboBox.setEditable(true); - AutoCompleteDecorator.decorate(this.comboBox); - endPointHolderPanel.add(new JLabel("URL")); - endPointHolderPanel.add(comboBox); - defaultGraphField = new JTextField(); - endPointHolderPanel.add(new JLabel("Default graph URI")); - endPointHolderPanel.add(defaultGraphField); - add(endPointHolderPanel, c); - - - JPanel classHolderPanel = new JPanel(); - classHolderPanel.setLayout(new GridLayout(0, 1)); - classHolderPanel.setBorder(new TitledBorder("Class to learn")); - asLabelButton = new JRadioButton("label"); - asURLButton = new JRadioButton("URI"); - asURLButton.setSelected(true); - ButtonGroup bG = new ButtonGroup(); - bG.add(asLabelButton); - bG.add(asURLButton); - JPanel buttonPanel = new JPanel(); - buttonPanel.add(new JLabel("input type:")); - buttonPanel.add(asURLButton); - buttonPanel.add(asLabelButton); - - classHolderPanel.add(buttonPanel); - classField = new JTextField(); - classField.getDocument().addDocumentListener(this); - classHolderPanel.add(classField); - add(classHolderPanel, c); - - extractButton = new JButton("extract"); - extractButton.addActionListener(this); - c.fill = GridBagConstraints.NONE; - add(extractButton, c); - - -// JToggleButton button = new JToggleButton(new AbstractAction("Options") { -// -// @Override -// public void actionPerformed(ActionEvent e) { -// JToggleButton button = (JToggleButton)e.getSource(); -// -// if(!button.getModel().isSelected()){ -// -// collapseOptionsPanel(); -// } else { -// expandOptionsPanel(); -// } -// -// -// } -// }); -// -// -// add(button, c); - - - optionsPanel = new SparqlExtractOptionsPanel(); - add(optionsPanel, c); -// optionsPanel.setVisible(false); - JLabel padding = new JLabel(); - c.weighty = 1.0; - add(padding, c); - - } - - private void expandOptionsPanel(){ - Dimension dialogSize = getSize (); - Dimension detailSize = optionsPanel.getPreferredSize (); - dialogSize.height += detailSize.height; - setSize (dialogSize); - optionsPanel.setVisible(true); - // Cause the new layout to take effect - invalidate (); - validate (); - - } - - private void collapseOptionsPanel(){ - optionsPanel.setVisible(false); - } - - - - - private void extract() { - mon = new ProgressMonitor(this, "Extracting fragment", "", 0, 100); - - extractTask = new OntologyExtractingTask(mon); - extractTask.addPropertyChangeListener(this); - extractTask.execute(); - - - } - - private String getClassFromLabel(){ - - String queryString = "SELECT DISTINCT ?class WHERE {" + - "?class rdf:type owl:Class ." + - "?class rdfs:label ?label . " + - "FILTER(regex(?label, '" + classField.getText() + "')) }"; - SortedSet<String> classes = task.queryAsSet(queryString, "class"); - - return classes.iterator().next(); - } - private void autocomplete(){ - - - - - - } - - public static SparqlKnowledgeSource showDialog() { - - ExtractFromSparqlPanel panel = new ExtractFromSparqlPanel(); - - int ret = JOptionPaneEx.showConfirmDialog(null, - "Extract fragment from Sparql-Endpoint", - new JScrollPane(panel), - JOptionPane.PLAIN_MESSAGE, - JOptionPane.OK_CANCEL_OPTION, - panel.comboBox); - if (ret == JOptionPane.OK_OPTION) { - return panel.ks; - } - return null; - } - - - @Override - public void changedUpdate(DocumentEvent e) { - // TODO Auto-generated method stub - - } - - @Override - public void insertUpdate(DocumentEvent e) { -// autocomplete(); - - } - - @Override - public void removeUpdate(DocumentEvent e) { - // TODO Auto-generated method stub - - } - - - @Override - public void actionPerformed(ActionEvent e) { - extract(); - - } - - @Override - public void propertyChange(PropertyChangeEvent evt) { - if ("progress" == evt.getPropertyName() ) { - if(mon.isCanceled()){ - extractTask.cancel(true); - } - } - - } - - class OntologyExtractingTask extends SwingWorker<Void, Void>{ - - private ProgressMonitor mon; - - public OntologyExtractingTask(ProgressMonitor mon) { - this.mon = mon; - } - - @Override - public Void doInBackground() { - ComponentManager cm = ComponentManager.getInstance(); - URL endpointURL = null; - try { - endpointURL = new URL(comboBox.getSelectedItem().toString()); - } catch (MalformedURLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - List<String> defaultGraphURIS = new ArrayList<String>(1); - defaultGraphURIS.add(defaultGraphField.getText()); - SparqlEndpoint endpoint = new SparqlEndpoint(endpointURL, defaultGraphURIS, Collections.<String>emptyList()); - task = new SPARQLTasks(endpoint); - - String exampleClassKBString = "\"" + getClassFromLabel() + "\""; - - AutomaticPositiveExampleFinderSPARQL pos = new AutomaticPositiveExampleFinderSPARQL( - task); - pos.makePositiveExamplesFromConcept(exampleClassKBString); - - SortedSet<String> allPosExamples = pos.getPosExamples(); - SortedSet<String> posExamples = SetManipulation.stableShrink( - allPosExamples, 20); - System.out.println(posExamples.size()); - System.out.println(posExamples); - SortedSet<String> instances = new TreeSet<String>(posExamples); - - ks = cm.knowledgeSource(SparqlKnowledgeSource.class); - ks.getConfigurator().setUrl(SparqlEndpoint.getEndpointDBpedia().getURL()); - ks.getConfigurator().setInstances(instances); - ks.getConfigurator().setPredefinedFilter("YAGO"); - ks.getConfigurator().setBreakSuperClassRetrievalAfter(optionsPanel.getBreakSuperClassRetrievalAfterValue()); - ks.getConfigurator().setRecursionDepth(optionsPanel.getRecursionDepthValue()); - ks.getConfigurator().setUseCache(optionsPanel.isUseCache()); - ks.getConfigurator().setGetAllSuperClasses(optionsPanel.isGetAllSuperClasses()); - ks.getConfigurator().setDissolveBlankNodes(optionsPanel.isDissolveBlankNodes()); - ks.getConfigurator().setUseImprovedSparqlTupelAquisitor(optionsPanel.isUseImprovedSparqlTupelAquisitor()); - ks.getConfigurator().setUseLits(optionsPanel.isUseLiterals()); - ks.getConfigurator().setGetPropertyInformation(optionsPanel.isGetPropertyInformation()); - ks.getConfigurator().setCloseAfterRecursion(optionsPanel.isCloseAfterRecursion()); - ks.addProgressMonitor(mon); - - ks.init(); - - return null; - } - - @Override - public void done() { - mon.setProgress(0); - } - } - - private static class JOptionPaneEx extends JOptionPane { - - /** - * - */ - private static final long serialVersionUID = -8531422911783932819L; - - public static int showConfirmDialog(JComponent parent, String title, JComponent content, int messageType, - int optionType, final JComponent defaultFocusedComponent) { - - JOptionPane optionPane = new JOptionPane(content, messageType, optionType); - JDialog dlg = optionPane.createDialog(parent, title); - dlg.addWindowListener(new WindowAdapter() { - public void windowOpened(WindowEvent e) { - if (defaultFocusedComponent != null) { - defaultFocusedComponent.requestFocusInWindow(); - } - } - }); - dlg.setSize(400, 300); - dlg.setResizable(true); - dlg.setVisible(true); - Object value = optionPane.getValue(); - return (value != null) ? (Integer) value : JOptionPane.CLOSED_OPTION; - } - } - - - public static void main(String[] args){ - ExtractFromSparqlPanel.showDialog(); - } - - - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBar.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -3,7 +3,6 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; -import java.awt.Cursor; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics; @@ -36,21 +35,17 @@ private static final long serialVersionUID = 1L; private JLabel infoLabel; private JProgressBar progressBar; - private int progress = 0; - private int progressLength = 0; - private int progressPercent = -1; - private String progressMessage; + private boolean isIndeterminateMode; private boolean isCanceled = false; public StatusBar() { + setLayout(new BorderLayout()); infoLabel = new JLabel(""); progressBar = new JProgressBar(); -// progressBar.setStringPainted(true); - setLayout(new BorderLayout()); -// setPreferredSize(new Dimension(10, 23)); + JPanel rightPanel = new JPanel(new BorderLayout()); rightPanel.add(new JLabel(new AngledLinesWindowsCornerIcon()), BorderLayout.SOUTH); @@ -68,7 +63,17 @@ rB.setToolTipText("Abort"); // leftPanel.add(rB); - leftPanel.add(new Cancel()); + Cancel cancelButton = new Cancel(); + cancelButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent arg0) { + isCanceled = true; + System.out.println("Task canceled"); + } + }); + cancelButton.setToolTipText("Abort current task"); + leftPanel.add(cancelButton); leftPanel.add(progressBar); leftPanel.add(new JSeparator(JSeparator.VERTICAL)); @@ -125,113 +130,82 @@ } - @Override - public int getProgress() { - return progress; - } + @Override - public int getProgressPercent() { - return progressPercent; + public void foundAllExplanations() { + // TODO Auto-generated method stub + } @Override - public void incrementProgress() { - SwingUtilities.invokeLater(new Runnable() { - - @Override - public void run() { - setProgress(progress + 1); - - } - }); + public void foundExplanation(Set<OWLAxiom> explanation) { + System.out.println(explanation); } @Override - public boolean isCanceled() { + public boolean isCancelled() { return isCanceled; } @Override - public void setProgress(int progress) { - this.progress = progress; - updateProgress(); - + public int getProgress() { + // TODO Auto-generated method stub + return 0; } @Override - public void setProgressLength(int length) { - progressLength = length; - SwingUtilities.invokeLater(new Runnable() { - - @Override - public void run() { - progressBar.setMaximum(progressLength); - - } - }); - - - - - + public int getProgressPercent() { + // TODO Auto-generated method stub + return 0; } @Override - public void setProgressMessage(String message) { - progressMessage = message; - infoLabel.setText(message); + public void incrementProgress() { + // TODO Auto-generated method stub - } @Override - public void setProgressTitle(String title) { - infoLabel.setText(title); - + public boolean isCanceled() { + return isCanceled; } @Override - public void taskFinished() { - setCursor(null); + public void setProgress(int arg0) { + // TODO Auto-generated method stub } @Override - public void taskStarted() { - setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + public void setProgressLength(int arg0) { + // TODO Auto-generated method stub } - - private void updateProgress(){ - SwingUtilities.invokeLater(new Runnable(){ - @Override - public void run() { - progressBar.setValue(progress); - - - } - - }); + @Override + public void setProgressMessage(String arg0) { + // TODO Auto-generated method stub + } @Override - public void foundAllExplanations() { + public void setProgressTitle(String arg0) { // TODO Auto-generated method stub } @Override - public void foundExplanation(Set<OWLAxiom> explanation) { - System.out.println(explanation); + public void taskFinished() { + // TODO Auto-generated method stub } @Override - public boolean isCancelled() { - return isCanceled; + public void taskStarted() { + // TODO Auto-generated method stub + } @@ -346,6 +320,11 @@ class Cancel extends JButton { + /** + * + */ + private static final long serialVersionUID = 4624954971172916869L; + public Cancel() { super(); setIcon(new ImageIcon( Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/Wizard.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -143,6 +143,7 @@ public void windowClosing(WindowEvent e) { System.out.println("Exited application"); wizardDialog.dispose(); + System.exit(0); } }); @@ -366,6 +367,7 @@ returnCode = code; System.out.println("Exited application"); wizardDialog.dispose(); + System.exit(0); } /** Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -45,8 +45,7 @@ private void showExplanations(){ ExplanationTask task = new ExplanationTask(); - TaskManager.getInstance().setCurrentTask(task); - TaskManager.getInstance().setTaskStarted("Computing explanations"); + TaskManager.getInstance().setTaskStarted("Computing explanations..."); task.execute(); } @@ -115,6 +114,7 @@ if(!isCancelled()){ showExplanations(); } + TaskManager.getInstance().setTaskFinished(); } private void showExplanations(){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -106,7 +106,7 @@ public void loadOntology(URI uri){ OREManager.getInstance().setCurrentKnowledgeSource(uri); currentURI = uri; - TaskManager.getInstance().setTaskStarted("Loading ontology"); + TaskManager.getInstance().setTaskStarted("Loading ontology..."); new OntologyLoadingTask(getWizard().getStatusBar()).execute(); } @@ -172,10 +172,6 @@ } private void handleOpenFromRecent(URI uri){ -// currentURI = uri; -// OREManager.getInstance().setCurrentKnowledgeSource( -// uri); -// new OntologyLoadingTask(getWizard().getStatusBar()).execute(); loadOntology(uri); } @@ -206,9 +202,9 @@ RecentManager.getInstance().addURI(currentURI); RecentManager.getInstance().serialize(); if(oreMan.consistentOntology()){ - statusBar.setProgressTitle("Classifying ontology"); + statusBar.setMessage("Classifying ontology..."); oreMan.getReasoner().classify(); - statusBar.setProgressTitle("Realising ontology"); + statusBar.setMessage("Realising ontology..."); oreMan.getReasoner().realise(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/UnsatisfiableExplanationPanelDescriptor.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -2,7 +2,6 @@ import java.awt.BorderLayout; import java.awt.Component; -import java.awt.Cursor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -31,7 +30,6 @@ import org.dllearner.tools.ore.RepairManager; import org.dllearner.tools.ore.RepairManagerListener; import org.dllearner.tools.ore.TaskManager; -import org.dllearner.tools.ore.ui.StatusBar; import org.dllearner.tools.ore.ui.wizard.WizardPanelDescriptor; import org.dllearner.tools.ore.ui.wizard.panels.UnsatisfiableExplanationPanel; import org.semanticweb.owl.model.OWLClass; @@ -71,9 +69,8 @@ } private void showExplanations(){ - ExplanationTask task = new ExplanationTask(getWizard().getStatusBar()); - TaskManager.getInstance().setCurrentTask(task); - task.execute(); + TaskManager.getInstance().setTaskStarted("Computing explanations..."); + new ExplanationTask().execute(); } @Override @@ -124,13 +121,14 @@ @Override public void repairPlanExecuted(List<OWLOntologyChange> changes) { panel.clearExplanationsPanel(); - new RootDerivedTask(getWizard().getStatusBar()).execute(); + new RootDerivedTask().execute(); panel.repaint(); } public void fillUnsatisfiableClassesList(){ - new RootDerivedTask(getWizard().getStatusBar()).execute(); + TaskManager.getInstance().setTaskStarted("Computing root and derived classes..."); + new RootDerivedTask().execute(); } @Override @@ -194,38 +192,21 @@ class ExplanationTask extends SwingWorker<Void, Void>{ - private StatusBar statusBar; - - - public ExplanationTask(StatusBar statusBar) { - this.statusBar = statusBar; - - } @Override - public Void doInBackground() { - statusBar.showProgress(true); - statusBar.setProgressTitle("Computing explanations..."); - getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + public Void doInBackground() { for(OWLClass unsat : panel.getUnsatTable().getSelectedClasses()){ expMan.getUnsatisfiableExplanations(unsat); - } - + } return null; } @Override public void done() { if(!isCancelled()){ - showExplanations(); - statusBar.setProgressTitle("Done"); + showExplanations(); } - - statusBar.showProgress(false); - getWizard().getDialog().setCursor(null); - - - + TaskManager.getInstance().setTaskFinished(); } private void showExplanations(){ @@ -234,12 +215,10 @@ @Override public void run() { - panel.clearExplanationsPanel(); for(OWLClass unsat : panel.getUnsatTable().getSelectedClasses()){ panel.addExplanations(expMan.getUnsatisfiableExplanations(unsat), unsat); - } - + } panel.validate(); } }); @@ -249,20 +228,10 @@ } class RootDerivedTask extends SwingWorker<Void, Void>{ - - private StatusBar statusBar; - - public RootDerivedTask(StatusBar statusBar) { - this.statusBar = statusBar; - - } @Override public Void doInBackground() { - statusBar.showProgress(true); - statusBar.setProgressTitle("Computing root and derived classes..."); - getWizard().getDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); expMan.getRootUnsatisfiableClasses(); expMan.getDerivedClasses(); return null; @@ -270,9 +239,7 @@ @Override public void done() { - statusBar.showProgress(false); - statusBar.setProgressTitle("Done"); - getWizard().getDialog().setCursor(null); + TaskManager.getInstance().setTaskFinished(); if(!isCancelled()){ fillUnsatClassesTable(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-23 12:23:52 UTC (rev 1859) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java 2009-09-24 08:51:02 UTC (rev 1860) @@ -85,6 +85,17 @@ mainSplitPane.setRightComponent(createDebuggingPanel()); add(mainSplitPane); + + +// String layoutDef = "(ROW unsat (COLUMN explanation (ROW repair impact)))"; +// MultiSplitLayout.Node modelRoot = MultiSplitLayout.parseModel(layoutDef); +// JXMultiSplitPane mainSplitPane = new JXMultiSplitPane(); +// mainSplitPane.setModel(modelRoot); +// mainSplitPane.add(createUnsatClassesPanel(), "unsat"); +// mainSplitPane.add(createExplanationPanel(), "explanation"); +// mainSplitPane.add(createRepairPanel(), "repair"); +// mainSplitPane.add(createImpactPanel(), "impact"); +// add(mainSplitPane); } private JComponent createUnsatClassesPanel(){ @@ -206,6 +217,20 @@ return impactRepairPanel; } + private JComponent createRepairPanel(){ + return new RepairPlanPanel(); + } + + private JComponent createImpactPanel(){ + ImpactTable impactTable = new ImpactTable(); + JScrollPane impScr = new JScrollPane(impactTable); + JPanel impactPanel = new JPanel(); + impactPanel.setLayout(new BorderLayout()); + impactPanel.add(new JLabel("Impact"), BorderLayout.NORTH); + impactPanel.add(impScr); + return impactPanel; + } + public void fillUnsatClassesTable(List<OWLClass> unsatClasses) { unsatClassesTable.addUnsatClasses(unsatClasses); unsatClassesScrollPane.validate(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2009-09-23 12:28:53
|
Revision: 1859 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1859&view=rev Author: lorenz_b Date: 2009-09-23 12:23:52 +0000 (Wed, 23 Sep 2009) Log Message: ----------- fixed bug when dissolving blank nodes swingx lib update Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java Added Paths: ----------- trunk/lib/ore-tool/swingx-1.0.jar Removed Paths: ------------- trunk/lib/ore-tool/swingx-0.9.7.jar Deleted: trunk/lib/ore-tool/swingx-0.9.7.jar =================================================================== (Binary files differ) Added: trunk/lib/ore-tool/swingx-1.0.jar =================================================================== (Binary files differ) Property changes on: trunk/lib/ore-tool/swingx-1.0.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java =================================================================== --- trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java 2009-09-23 11:26:14 UTC (rev 1858) +++ trunk/src/dl-learner/org/dllearner/kb/aquisitors/BlankNodeCollector.java 2009-09-23 12:23:52 UTC (rev 1859) @@ -84,11 +84,11 @@ String currentO = "?o"+currentDepth; String nextP = "?p"+(currentDepth+1); String nextO = "?o"+(currentDepth+1); - sq.append(" { OPTIONAL { "+currentO+" "+nextP+" "+nextO+". }}"); + sq.append(" OPTIONAL { "+currentO+" "+nextP+" "+nextO+". }"); } - sq.append(" } "); + sq.append(" }"); return sq.toString(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |