From: <lor...@us...> - 2009-09-06 15:28:12
|
Revision: 1837 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1837&view=rev Author: lorenz_b Date: 2009-09-06 15:28:00 +0000 (Sun, 06 Sep 2009) Log Message: ----------- added simple explanation dialog for impact axioms Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/StatusBarSimulator.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/WizardController.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/ClassChoosePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/InconsistencyExplanationPanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/descriptors/KnowledgeSourcePanelDescriptor.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/KnowledgeSourcePanel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/wizard/panels/UnsatisfiableExplanationPanel.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTable.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/ trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/AddPropertyAssertionMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/AddToClassMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/MoveFromClassToMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/MoveToClassFromMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/RemoveAllPropertyAssertionsMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/RemoveAllPropertyAssertionsNotToMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/RemoveAllPropertyAssertionsToMenuItem.java trunk/src/dl-learner/org/dllearner/tools/ore/ui/item/RemoveFromClassMenuItem.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java Modified: trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/reasoning/PelletReasoner.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -310,7 +310,7 @@ } else if(change instanceof AddAxiom){ classInstancesPos.get(desc).add(ind); } - } else if(axiom instanceof OWLObjectPropertyAssertionAxiom){System.out.println(axiom); + } else if(axiom instanceof OWLObjectPropertyAssertionAxiom){ Individual obj = OWLAPIConverter.convertIndividual(((OWLObjectPropertyAssertionAxiom)axiom).getObject()); Individual sub = OWLAPIConverter.convertIndividual(((OWLObjectPropertyAssertionAxiom)axiom).getSubject()); ObjectProperty prop = OWLAPIConverter.convertObjectProperty(((OWLObjectPropertyAssertionAxiom)axiom).getProperty().asOWLObjectProperty()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ExplanationManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -51,7 +51,7 @@ private ExplanationManager(OREManager oreMan) { OREManager.getInstance().addListener(this); - this.reasoner = oreMan.getPelletReasoner().getReasoner(); + this.reasoner = oreMan.getReasoner().getReasoner(); this.manager = reasoner.getManager(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); @@ -119,6 +119,14 @@ return explanations; } + public Set<Explanation> getEntailmentExplanations(OWLAxiom entailment){ + boolean before = gen.isLaconicMode(); + gen.setComputeLaconicExplanations(false); + Set<Explanation> explanations = gen.getExplanations(entailment); + gen.setComputeLaconicExplanations(before); + return explanations; + } + public List<Map<OWLAxiom, Integer>> getOrdering(Explanation exp){ List<Map<OWLAxiom, Integer>> orderedAxioms = orderingMap.get(exp); if(orderedAxioms == null){ @@ -238,8 +246,8 @@ @Override public void activeOntologyChanged() { - ontology = OREManager.getInstance().getPelletReasoner().getOWLAPIOntologies(); - reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); + ontology = OREManager.getInstance().getReasoner().getOWLAPIOntologies(); + reasoner = OREManager.getInstance().getReasoner().getReasoner(); gen = new CachedExplanationGenerator(ontology, reasoner); orderingMap.clear(); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ImpactManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -28,7 +28,7 @@ private ImpactManager(OREManager oreMan) { this.oreMan = oreMan; - this.reasoner = oreMan.getPelletReasoner().getReasoner(); + this.reasoner = oreMan.getReasoner().getReasoner(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); this.manager = reasoner.getManager(); @@ -38,7 +38,7 @@ selectedAxioms = new ArrayList<OWLAxiom>(); listeners = new ArrayList<ImpactManagerListener>(); - lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getPelletReasoner().getClassifier(), manager); + lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getReasoner().getClassifier(), manager); RepairManager.getInstance(oreMan).addListener(this); oreMan.addListener(this); @@ -121,10 +121,10 @@ @Override public void activeOntologyChanged() { - this.reasoner = oreMan.getPelletReasoner().getReasoner(); + this.reasoner = oreMan.getReasoner().getReasoner(); this.ontology = reasoner.getLoadedOntologies().iterator().next(); this.manager = reasoner.getManager(); - lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getPelletReasoner().getClassifier(), manager); + lostEntailmentsChecker = new LostEntailmentsChecker(ontology, oreMan.getReasoner().getClassifier(), manager); selectedAxioms.clear(); lostEntailments.clear(); addedEntailments.clear(); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OREManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -24,7 +24,6 @@ import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.Intersection; import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.core.owl.Union; import org.dllearner.kb.OWLFile; import org.dllearner.kb.sparql.SparqlKnowledgeSource; @@ -36,26 +35,25 @@ public class OREManager { - private static OREManager instance; - + private ComponentManager cm; - - private PelletReasoner pelletReasoner; + + private PelletReasoner reasoner; private ClassLearningProblem lp; private CELOE la; private KnowledgeSource ks; - + private String baseURI; private Map<String, String> prefixes; - + private NamedClass currentClass2Learn; private EvaluatedDescriptionClass learnedClassDescription; - + private double noisePercentage; private int maxExecutionTimeInSeconds = 10; private int maxNrOfResults = 10; - + private List<OREManagerListener> listeners; private OntologyModifier modifier; @@ -98,7 +96,7 @@ public void setLearningProblem(){ - lp = cm.learningProblem(ClassLearningProblem.class, pelletReasoner); + lp = cm.learningProblem(ClassLearningProblem.class, reasoner); try { lp.getConfigurator().setClassToDescribe(getClass2LearnAsURL()); @@ -112,7 +110,7 @@ public void setLearningAlgorithm(){ try { - la = cm.learningAlgorithm(CELOE.class, lp, pelletReasoner); + la = cm.learningAlgorithm(CELOE.class, lp, reasoner); la.getConfigurator().setMaxExecutionTimeInSeconds(maxExecutionTimeInSeconds); la.getConfigurator().setUseNegation(false); la.getConfigurator().setNoisePercentage(noisePercentage); @@ -136,25 +134,28 @@ public void initPelletReasoner(){ - pelletReasoner = cm.reasoner(PelletReasoner.class, ks); + reasoner = cm.reasoner(PelletReasoner.class, ks); try { - pelletReasoner.init(); + reasoner.init(); } catch (ComponentInitException e) { // TODO Auto-generated catch block e.printStackTrace(); } - pelletReasoner.loadOntologies(); - baseURI = pelletReasoner.getBaseURI(); - prefixes = pelletReasoner.getPrefixes(); - modifier = new OntologyModifier(pelletReasoner); + reasoner.loadOntologies(); + baseURI = reasoner.getBaseURI(); + prefixes = reasoner.getPrefixes(); + modifier = new OntologyModifier(reasoner); fireActiveOntologyChanged(); } public void loadOntology(){ - pelletReasoner.loadOntologies(); - + reasoner.loadOntologies(); } + public void makeOWAToCWA(){ + reasoner.dematerialise(); + } + public void addListener(OREManagerListener listener){ listeners.add(listener); } @@ -164,11 +165,11 @@ } public boolean consistentOntology() throws InconsistentOntologyException{ - return pelletReasoner.isConsistent(); + return reasoner.isConsistent(); } - public PelletReasoner getPelletReasoner(){ - return pelletReasoner; + public PelletReasoner getReasoner(){ + return reasoner; } private void fireActiveOntologyChanged(){ @@ -176,18 +177,15 @@ listener.activeOntologyChanged(); } } - public OntologyModifier getModifier() { return modifier; } - public EvaluatedDescriptionClass getNewClassDescription() { return learnedClassDescription; } - public String getBaseURI() { return baseURI; } @@ -209,7 +207,7 @@ } public SortedSet<Individual> getPositiveFailureExamples(){ - SortedSet<Individual> posNotCovered = pelletReasoner.getIndividuals(currentClass2Learn); + SortedSet<Individual> posNotCovered = reasoner.getIndividuals(currentClass2Learn); posNotCovered.removeAll(learnedClassDescription.getCoveredInstances()); return posNotCovered; } @@ -233,9 +231,7 @@ public int getMaxNrOfResults(){ return maxNrOfResults; } - - - + /** * Sets the class that has to be learned. * @param oldClass class that is chosen to be (re)learned @@ -281,9 +277,6 @@ return la; } - - - /** * Retrieves description parts that might cause inconsistency - for negative examples only. * @param ind @@ -294,7 +287,7 @@ Set<Description> criticals = new HashSet<Description>(); List<Description> children = desc.getChildren(); - if(pelletReasoner.hasType(desc, ind)){ + if(reasoner.hasType(desc, ind)){ if(children.size() >= 2){ @@ -304,7 +297,7 @@ } } else if(desc instanceof Union){ for(Description d: children){ - if(pelletReasoner.hasType(d, ind)){ + if(reasoner.hasType(d, ind)){ criticals.addAll(getNegCriticalDescriptions(ind, d)); } } @@ -328,7 +321,7 @@ List<Description> children = desc.getChildren(); // try { - if(pelletReasoner.hasType(desc, ind)){ + if(reasoner.hasType(desc, ind)){ if(children.size() >= 2){ @@ -344,14 +337,14 @@ } else if(desc instanceof Union){ criticals.add(new JLabel("(")); for(int i = 0; i<children.size()-1; i++){ - if(pelletReasoner.hasType(desc.getChild(i), ind)){ + if(reasoner.hasType(desc.getChild(i), ind)){ criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(i))); } else{ criticals.add(new JLabel(desc.getChild(i).toManchesterSyntaxString(baseURI, prefixes))); } criticals.add(new JLabel("or")); } - if(pelletReasoner.hasType(desc.getChild(children.size()-1), ind)){ + if(reasoner.hasType(desc.getChild(children.size()-1), ind)){ criticals.addAll(descriptionToJLabelNeg(ind, desc.getChild(children.size()-1))); } else{ criticals.add(new JLabel(desc.getChild(children.size()-1).toManchesterSyntaxString(baseURI, prefixes))); @@ -387,7 +380,7 @@ List<Description> children = desc.getChildren(); // try { - if(!pelletReasoner.hasType(desc, ind)){ + if(!reasoner.hasType(desc, ind)){ if(children.size() >= 2){ @@ -402,14 +395,14 @@ } else if(desc instanceof Intersection){ criticals.add(new JLabel("(")); for(int i = 0; i<children.size()-1; i++){ - if(!pelletReasoner.hasType(desc.getChild(i), ind)){ + if(!reasoner.hasType(desc.getChild(i), ind)){ criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(i))); } else{ criticals.add(new JLabel(desc.getChild(i).toManchesterSyntaxString(baseURI, prefixes))); } criticals.add(new JLabel("and")); } - if(!pelletReasoner.hasType(desc.getChild(children.size()-1), ind)){ + if(!reasoner.hasType(desc.getChild(children.size()-1), ind)){ criticals.addAll(descriptionToJLabelPos(ind, desc.getChild(children.size()-1))); } else{ criticals.add(new JLabel(desc.getChild(children.size()-1).toManchesterSyntaxString(baseURI, prefixes))); @@ -435,9 +428,9 @@ * @param objRestr * @param ind */ - public Set<Individual> getIndividualsInPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ + public Set<Individual> getIndividualsInPropertyRange(Description desc, Individual ind){ - Set<Individual> individuals = pelletReasoner.getIndividuals(objRestr.getChild(0)); + Set<Individual> individuals = reasoner.getIndividuals(desc); individuals.remove(ind); return individuals; @@ -448,23 +441,19 @@ * @param objRestr * @param ind */ - public Set<Individual> getIndividualsNotInPropertyRange(ObjectQuantorRestriction objRestr, Individual ind){ + public Set<Individual> getIndividualsNotInPropertyRange(Description desc, Individual ind){ Set<Individual> allIndividuals = new HashSet<Individual>(); - for(Individual i : pelletReasoner.getIndividuals()){ + for(Individual i : reasoner.getIndividuals()){ -// try { - if(!pelletReasoner.hasType(objRestr.getChild(0), i)){ + if(!reasoner.hasType(desc, i)){ allIndividuals.add(i); } -// } catch (ReasoningMethodUnsupportedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } + } - + allIndividuals.remove(ind); return allIndividuals; } @@ -476,8 +465,8 @@ */ public Set<NamedClass> getpossibleClassesMoveTo(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : pelletReasoner.getNamedClasses()){ - if(!pelletReasoner.hasType(nc, ind)){ + for(NamedClass nc : reasoner.getNamedClasses()){ + if(!reasoner.hasType(nc, ind)){ moveClasses.add(nc); } } @@ -493,8 +482,8 @@ */ public Set<NamedClass> getpossibleClassesMoveFrom(Individual ind){ Set<NamedClass> moveClasses = new HashSet<NamedClass>(); - for(NamedClass nc : pelletReasoner.getNamedClasses()){ - if(pelletReasoner.hasType(nc, ind)){ + for(NamedClass nc : reasoner.getNamedClasses()){ + if(reasoner.hasType(nc, ind)){ moveClasses.add(nc); } } @@ -502,8 +491,7 @@ return moveClasses; } - - + /** * Get the complement classes where individual is asserted to. * @param desc @@ -513,19 +501,16 @@ Set<NamedClass> complements = new HashSet<NamedClass>(); - for(NamedClass nc : pelletReasoner.getNamedClasses()){ + for(NamedClass nc : reasoner.getNamedClasses()){ if(!(nc.toString().endsWith("Thing"))){ - if(pelletReasoner.hasType(nc, ind)){ + if(reasoner.hasType(nc, ind)){ if(modifier.isComplement(desc, nc)){ complements.add(nc); } } } - } - - + } return complements; } - } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/OntologyModifier.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -35,8 +35,9 @@ import org.dllearner.core.owl.Negation; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyAssertion; -import org.dllearner.core.owl.ObjectQuantorRestriction; +import org.dllearner.core.owl.ObjectPropertyExpression; import org.dllearner.reasoning.PelletReasoner; +import org.dllearner.utilities.owl.OWLAPIConverter; import org.dllearner.utilities.owl.OWLAPIDescriptionConvertVisitor; import org.semanticweb.owl.io.RDFXMLOntologyFormat; import org.semanticweb.owl.model.AddAxiom; @@ -188,8 +189,8 @@ individualOWLAPI.accept(remover); changes.addAll(remover.getChanges()); try { + reasoner.updateCWAOntology(changes); manager.applyChanges(changes); - saveOntology(); return changes; } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block @@ -310,12 +311,12 @@ * @param objSome the property which has to be removed * @return changes that have been done */ - public List<OWLOntologyChange> deleteObjectProperty(Individual ind, ObjectQuantorRestriction objSome){ + public List<OWLOntologyChange> deleteObjectProperty(Individual ind, ObjectPropertyExpression property){ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); - OWLIndividual individualOWLAPI = factory.getOWLIndividual(URI.create(ind.getName())); - OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); + OWLIndividual individualOWLAPI = OWLAPIConverter.getOWLAPIIndividual(ind); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(property.getName())); Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(individualOWLAPI); Set<OWLInverseObjectPropertiesAxiom> invProperties = ontology.getInverseObjectPropertyAxioms(propertyOWLAPI); @@ -370,18 +371,18 @@ * @param object * @return changes that have been done */ - public List<OWLOntologyChange> removeObjectPropertyAssertion(Individual subject, ObjectQuantorRestriction objSome, Individual object){ + public List<OWLOntologyChange> removeObjectPropertyAssertion(Individual subject, ObjectPropertyExpression property, Individual object){ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); OWLIndividual subjectOWLAPI = factory.getOWLIndividual(URI.create(subject.getName())); OWLIndividual objectOWLAPI = factory.getOWLIndividual(URI.create(object.getName())); - OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(property.getName())); Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(subjectOWLAPI); - + RemoveAxiom remove = null; - for(OWLObjectPropertyAssertionAxiom o :properties){ + for(OWLObjectPropertyAssertionAxiom o :properties){System.out.println(o); if((o.getProperty().equals(propertyOWLAPI)) && (o.getSubject().equals(subjectOWLAPI)) && (o.getObject().equals(objectOWLAPI))){ remove = new RemoveAxiom(ontology, o); } @@ -395,9 +396,9 @@ if(remove != null){ reasoner.updateCWAOntology(changes); manager.applyChange(remove); - + return changes; } - return changes; + } catch (OWLOntologyChangeException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -407,6 +408,38 @@ } + public List<OWLOntologyChange> removeAllObjectPropertyAssertions(Individual subject, ObjectPropertyExpression property,Set<Individual> objects){ + List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); + + OWLIndividual subjectOWLAPI = factory.getOWLIndividual(URI.create(subject.getName())); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(property.getName())); + Set<OWLIndividual> objectsOWLAPI = new HashSet<OWLIndividual>(); + for(Individual ind : objects){ + objectsOWLAPI.add(OWLAPIConverter.getOWLAPIIndividual(ind)); + } + + + Set<OWLObjectPropertyAssertionAxiom> properties = ontology.getObjectPropertyAssertionAxioms(subjectOWLAPI); + + for(OWLObjectPropertyAssertionAxiom o :properties){ + if((o.getProperty().equals(propertyOWLAPI)) && objectsOWLAPI.contains(o.getObject())){ + changes.add(new RemoveAxiom(ontology, o)); + } + } + + try { + reasoner.updateCWAOntology(changes); + manager.applyChanges(changes); + return changes; + + + } catch (OWLOntologyChangeException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return changes; + } + /** * Adds an object property assertion to the ontology. * @param subInd the individual which is subject in the objectProperty @@ -414,13 +447,13 @@ * @param objInd the individual which is object in the objectProperty * @return changes that have been done */ - public List<OWLOntologyChange> addObjectProperty(Individual subInd, ObjectQuantorRestriction objSome, Individual objInd){ + public List<OWLOntologyChange> addObjectProperty(Individual subInd, ObjectPropertyExpression property, Individual objInd){ List<OWLOntologyChange> changes = new LinkedList<OWLOntologyChange>(); OWLIndividual subjectOWLAPI = factory.getOWLIndividual(URI.create(subInd.getName())); OWLIndividual objectOWLAPI = factory.getOWLIndividual(URI.create(objInd.getName())); - OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(objSome.getRole().getName())); + OWLObjectProperty propertyOWLAPI = factory.getOWLObjectProperty(URI.create(property.getName())); OWLObjectPropertyAssertionAxiom objAssertion = factory.getOWLObjectPropertyAssertionAxiom(subjectOWLAPI, propertyOWLAPI, objectOWLAPI); AddAxiom axiom = new AddAxiom(ontology, objAssertion); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/RepairManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -26,7 +26,7 @@ private Stack<List<OWLOntologyChange>> redoStack; private RepairManager(OREManager oreMan){ - this.reasoner = oreMan.getPelletReasoner().getReasoner(); + this.reasoner = oreMan.getReasoner().getReasoner(); this.manager = reasoner.getManager(); listeners = new ArrayList<RepairManagerListener>(); @@ -111,7 +111,7 @@ } - private List<OWLOntologyChange> getInverseChanges(List<OWLOntologyChange> changes){ + public List<OWLOntologyChange> getInverseChanges(List<OWLOntologyChange> changes){ List<OWLOntologyChange> inverseChanges = new ArrayList<OWLOntologyChange>(changes.size()); for(OWLOntologyChange change : changes){ if(change instanceof RemoveAxiom){ Modified: trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/TaskManager.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -34,6 +34,10 @@ this.dialog = dialog; } + public JDialog getDialog(){ + return dialog; + } + public void setCurrentTask(SwingWorker<?, ?> task){ this.currentTask = task; } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/LostEntailmentsChecker.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -1,6 +1,7 @@ package org.dllearner.tools.ore.explanation; import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -24,6 +25,7 @@ import org.semanticweb.owl.model.OWLSubClassAxiom; import org.semanticweb.owl.model.RemoveAxiom; +import com.clarkparsia.explanation.PelletExplanation; import com.clarkparsia.modularity.IncrementalClassifier; public class LostEntailmentsChecker { @@ -62,6 +64,11 @@ entailmentsBefore.add(factory.getOWLSubClassAxiom(sub, cl)); } } + for(OWLClass equ : classifier.getEquivalentClasses(cl)){ + if(!equ.isOWLNothing() && ! inc.contains(equ)){ + entailmentsBefore.add(factory.getOWLEquivalentClassesAxiom(equ, cl)); + } + } } } @@ -79,6 +86,11 @@ } } } + for(OWLClass equ : classifier.getEquivalentClasses(cl)){ + if(!equ.isOWLNothing() && ! inc.contains(equ)){ + entailmentsAfter.add(factory.getOWLEquivalentClassesAxiom(equ, cl)); + } + } } lostEntailments = SetUtils.difference(entailmentsBefore, entailmentsAfter); addedEntailents = SetUtils.difference(entailmentsAfter, entailmentsBefore); @@ -215,7 +227,9 @@ } for(OWLAxiom ax : possibleLosts){ - try { + try {System.out.println(ax + " is entailed " + reasoner.isEntailed(ax)); + PelletExplanation exp = new PelletExplanation(manager, Collections.singleton(ontology), false); + System.out.println(exp.getEntailmentExplanation(ax)); manager.applyChanges(changes); if(!reasoner.isEntailed(ax)){ realLosts.add(ax); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/explanation/RootFinder.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -80,7 +80,7 @@ public RootFinder(){ this.manager = OWLManager.createOWLOntologyManager(); - this.reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); + this.reasoner = OREManager.getInstance().getReasoner().getReasoner(); this.reasonerFactory = new PelletReasonerFactory(); try { this.ontology = manager.createOntology(URI.create("all"), reasoner.getLoadedOntologies()); @@ -381,7 +381,7 @@ @Override public void activeOntologyChanged() { this.manager = OWLManager.createOWLOntologyManager(); - this.reasoner = OREManager.getInstance().getPelletReasoner().getReasoner(); + this.reasoner = OREManager.getInstance().getReasoner().getReasoner(); this.reasonerFactory = new PelletReasonerFactory(); try { this.ontology = manager.createOntology(URI.create("all"), reasoner.getLoadedOntologies()); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/recent.txt =================================================================== (Binary files differ) Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ClassesTable.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -43,10 +43,6 @@ return tip; } - public void clear(){ - ((ClassesTableModel)getModel()).clear(); - } - public void addClasses(Set<NamedClass> classes){ ((ClassesTableModel)getModel()).addClasses(classes); } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionLabel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -31,6 +31,7 @@ import javax.swing.JLabel; import javax.swing.JMenu; +import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.ToolTipManager; @@ -43,6 +44,14 @@ import org.dllearner.core.owl.ObjectSomeRestriction; import org.dllearner.core.owl.Thing; import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.ui.item.AddPropertyAssertionMenuItem; +import org.dllearner.tools.ore.ui.item.AddToClassMenuItem; +import org.dllearner.tools.ore.ui.item.MoveFromClassToMenuItem; +import org.dllearner.tools.ore.ui.item.MoveToClassFromMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsNotToMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsToMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveFromClassMenuItem; /** * Label that might have menu items when clicked on it. @@ -55,15 +64,6 @@ */ private static final long serialVersionUID = 1L; - private static final int MOVE_TO_CLASS = 0; - private static final int MOVE_FROM_CLASS = 1; - private static final int ADD_CLASS = 2; - private static final int REMOVE_CLASS = 3; - private static final int ADD_PROPERTY = 4; - private static final int REMOVE_RANGE_PROPERTY = 5; - private static final int DELETE_PROPERTY = 6; - private static final int REMOVE_NOT_RANGE_PROPERTY = 7; - private final Description desc; private Individual ind; private OREManager ore; @@ -104,12 +104,11 @@ if(!(desc instanceof Negation)){ if(desc instanceof NamedClass){ //1. description is a named class descriptionLabel = desc.toManchesterSyntaxString(baseURI, prefixes); - menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc)); //1.a remove class assertion - - JMenu dme = new JMenu("move class assertion " + descriptionLabel + " to ..."); //1.b move individual + + menu.add(new RemoveFromClassMenuItem(desc)); //1.a remove class assertion + JMenu dme = new JMenu("move class assertion from " + descriptionLabel + " to ..."); //1.b move individual for(NamedClass nc : ore.getpossibleClassesMoveTo(ind)){ - DescriptionMenuItem move = new DescriptionMenuItem(MOVE_TO_CLASS, nc.toManchesterSyntaxString(baseURI, prefixes), (NamedClass) desc); - move.setName(nc.toString()); + MoveFromClassToMenuItem move = new MoveFromClassToMenuItem(desc, nc); dme.add(move); Set<NamedClass> complements = ore.getComplements(nc, ind); //check for complement error if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(desc.toString())))){ @@ -129,26 +128,24 @@ } menu.add(dme); } else if(desc instanceof ObjectSomeRestriction){ //2. description is a object some restriction - String propertyName = ((ObjectSomeRestriction) desc).getRole().toString(baseURI, prefixes); - String propertyRange = ((ObjectSomeRestriction) desc).getChild(0).toManchesterSyntaxString(baseURI, prefixes); - menu.add(new DescriptionMenuItem(DELETE_PROPERTY, propertyName , desc)); //2.a remove all property assertions + menu.add(new RemoveAllPropertyAssertionsMenuItem(((ObjectSomeRestriction) desc).getRole())); //2.a remove all property assertions if (!(desc.getChild(0) instanceof Thing)){ - menu.add(new DescriptionMenuItem(REMOVE_RANGE_PROPERTY, propertyRange, desc)); //2.b remove property assertions with objects in range + menu.add(new RemoveAllPropertyAssertionsToMenuItem(((ObjectSomeRestriction) desc).getRole(), ((ObjectSomeRestriction) desc).getChild(0))); //2.b remove property assertions with objects in range } } else if(desc instanceof ObjectAllRestriction){ //3. description is a object all restriction if (!(desc.getChild(0) instanceof Thing)) { JMenu dme = new JMenu("add property assertion " + ((ObjectAllRestriction) desc).getRole().toKBSyntaxString(baseURI, prefixes) //3.a add property assertion with object not in range + " with object ..."); - for (Individual i : ore.getIndividualsNotInPropertyRange((ObjectAllRestriction) desc, ind)){ - dme.add(new DescriptionMenuItem(ADD_PROPERTY, i.toManchesterSyntaxString(baseURI, prefixes), desc)); + for (Individual i : ore.getIndividualsNotInPropertyRange(desc.getChild(0), ind)){ + dme.add(new AddPropertyAssertionMenuItem(((ObjectAllRestriction)desc).getRole(), i)); } - menu.add(dme); + menu.add(dme); } } } else if(desc instanceof Negation){ if(desc.getChild(0) instanceof NamedClass){ //4. description is a negated named class - DescriptionMenuItem addItem = new DescriptionMenuItem(ADD_CLASS, desc.getChild(0).toManchesterSyntaxString(baseURI, prefixes), desc.getChild(0)); + AddToClassMenuItem addItem = new AddToClassMenuItem(desc.getChild(0)); menu.add(addItem); //4.a add class assertion Set<NamedClass> complements = ore.getComplements(desc.getChild(0), ind); //check for complement errors if(!complements.isEmpty()){ @@ -170,7 +167,7 @@ } else if(mode.equals("pos")){//positive example solutions if(!(desc instanceof Negation)){ if(desc instanceof NamedClass){ - DescriptionMenuItem add = new DescriptionMenuItem(ADD_CLASS, desc.toManchesterSyntaxString(baseURI, prefixes), desc); + AddToClassMenuItem add = new AddToClassMenuItem(desc); Set<NamedClass> complements = ore.getComplements(desc, ind); if(!(complements.isEmpty())){ add.setEnabled(false); @@ -191,12 +188,11 @@ Set<NamedClass> moveClasses = ore.getpossibleClassesMoveFrom(ind); if(moveClasses.size() > 0){ JMenu move = new JMenu("move to " + desc.toManchesterSyntaxString(baseURI, prefixes) + " from ..."); - for (NamedClass m : moveClasses){System.out.println("hier" + m); - DescriptionMenuItem item = new DescriptionMenuItem(MOVE_FROM_CLASS, m.toManchesterSyntaxString(baseURI, prefixes), desc); - item.setName(m.toString()); + for (NamedClass source : moveClasses){ + MoveToClassFromMenuItem item = new MoveToClassFromMenuItem(desc, source); move.add(item); - if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(m.toString())))){ + if(!(complements.isEmpty() || (complements.size() == 1 && complements.toArray()[0].toString().equals(source.toString())))){ move.setEnabled(false); StringBuffer strBuf = new StringBuffer(); strBuf.append("<html>moving class is not possible because individual<br> " @@ -217,17 +213,16 @@ } else if(desc instanceof ObjectSomeRestriction){ - JMenu dme = new JMenu("add property assertion " + ((ObjectSomeRestriction) desc).getRole() - + " with object ..."); - for (Individual i : ore.getIndividualsInPropertyRange((ObjectSomeRestriction) desc, ind)){ - dme.add(new DescriptionMenuItem(ADD_PROPERTY, i.toManchesterSyntaxString(baseURI, prefixes), desc)); + JMenu dme = new JMenu("add property assertion with object ..."); + for (Individual i : ore.getIndividualsInPropertyRange(desc.getChild(0), ind)){ + dme.add(new AddPropertyAssertionMenuItem(((ObjectSomeRestriction) desc).getRole(), i)); } menu.add(dme); } else if(desc instanceof ObjectAllRestriction){ if (!(desc.getChild(0) instanceof Thing)) { - menu.add(new DescriptionMenuItem(REMOVE_NOT_RANGE_PROPERTY, ((ObjectAllRestriction) desc).getChild(0).toString(baseURI, prefixes), desc)); - menu.add(new DescriptionMenuItem(DELETE_PROPERTY, ((ObjectAllRestriction) desc).getRole().toString(baseURI, prefixes), desc)); + menu.add(new RemoveAllPropertyAssertionsNotToMenuItem(((ObjectAllRestriction) desc).getRole(), ((ObjectAllRestriction) desc).getChild(0))); + menu.add(new RemoveAllPropertyAssertionsMenuItem(((ObjectAllRestriction) desc).getRole())); } } @@ -237,7 +232,7 @@ } else if(desc instanceof Negation){ if(desc.getChild(0) instanceof NamedClass){ descriptionLabel = desc.toManchesterSyntaxString(baseURI, prefixes); - menu.add(new DescriptionMenuItem(REMOVE_CLASS, descriptionLabel, desc)); + menu.add(new RemoveFromClassMenuItem(desc.getChild(0))); } } } @@ -257,13 +252,15 @@ */ public void addActionListeners(ActionListener aL){ for(Component c : menu.getComponents()){ - if(c instanceof DescriptionMenuItem){ - ((DescriptionMenuItem) c).addActionListener(aL); - } else if(c instanceof JMenu){ + if(c instanceof JMenuItem){ + ((JMenuItem) c).addActionListener(aL); + } + if(c instanceof JMenu){ for(int i = 0; i < ((JMenu) c).getItemCount(); i++){ ((JMenu) c).getItem(i).addActionListener(aL); } } + } Deleted: trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/DescriptionMenuItem.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -1,84 +0,0 @@ -/** - * Copyright (C) 2007-2008, Jens Lehmann - * - * This file is part of DL-Learner. - * - * DL-Learner is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DL-Learner is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -package org.dllearner.tools.ore.ui; - -import javax.swing.JMenuItem; - -import org.dllearner.core.owl.Description; - -/** - * Item for possible repair action. - * @author Lorenz Buehmann - * - */ -public class DescriptionMenuItem extends JMenuItem { - - /** - * - */ - private static final long serialVersionUID = 6784086889435854440L; - - private Description desc; - private int action; - - public DescriptionMenuItem(int action, String text, Description d){ - super(); - if(action == 3){ - setText("remove class assertion to " + text); - } else if(action == 0){ - setText(text); - } else if(action == 2){ - setText("add class assertion to " + text); - } else if(action == 4){ - setText(text); - } else if(action == 6){ - setText("delete complete property " + text); - }else if(action == 5){ - setText("remove all property assertions to " + text); - } else if(action == 7){ - setText("remove all property assertions with range not in " + text); - } else if(action == 1){ - setText(text); - } - - this.desc = d; - this.action = action; - } - - /** - * Returns the description part where item is asserted to. - * @return description - */ - public Description getDescription(){ - return desc; - } - - /** - * Returns action type represented as number.. - * @return number - */ - public int getActionID(){ - return action; - } - - - -} Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExplanationTableModel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -33,7 +33,7 @@ this.impMan = ImpactManager.getInstance(OREManager.getInstance()); this.repMan = RepairManager.getInstance(OREManager.getInstance()); this.unsat = cl; - this.ont = OREManager.getInstance().getPelletReasoner().getOWLAPIOntologies(); + this.ont = OREManager.getInstance().getReasoner().getOWLAPIOntologies(); } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ExtractFromSparqlPanel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -1,6 +1,5 @@ package org.dllearner.tools.ore.ui; -import java.awt.Cursor; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; @@ -27,7 +26,6 @@ import org.dllearner.kb.sparql.SPARQLTasks; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlKnowledgeSource; -import org.dllearner.tools.ore.OREManager; import org.dllearner.utilities.datastructures.SetManipulation; import org.dllearner.utilities.examples.AutomaticPositiveExampleFinderSPARQL; import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/GraphicalCoveragePanel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -141,10 +141,10 @@ AlphaComposite ac = AlphaComposite.getInstance( AlphaComposite.SRC_OVER, 0.5f); g2D.setColor(Color.BLACK); - g2D.drawString(OREManager.getInstance().getCurrentClass2Learn() - .toString(), 320, 10); - g2D.setColor(Color.ORANGE); - g2D.fillOval(310, 20, 9, 9); + g2D.drawString(ManchesterSyntaxRenderer.renderSimple(OREManager.getInstance().getCurrentClass2Learn()) + , 320, 10); +// g2D.setColor(Color.ORANGE); +// g2D.fillOval(310, 20, 9, 9); g2D.setColor(Color.black); int p = 30; @@ -154,11 +154,11 @@ g2D.setColor(Color.BLACK); g2D.drawString("individuals covered by", 320, p); g2D.setColor(Color.ORANGE); - g2D.fillOval(455, p - 9, 9, 9); + g2D.fillOval(460, p - 9, 9, 9); g2D.setColor(Color.BLACK); - g2D.drawString("and", 485, p); + g2D.drawString("and", 475, p); g2D.setColor(Color.YELLOW); - g2D.fillOval(525, p - 9, 9, 9); + g2D.fillOval(505, p - 9, 9, 9); g2D.setColor(Color.BLACK); p = p + 20; g2D.drawString("(OK)", 320, p); @@ -170,7 +170,7 @@ g2D.setColor(Color.BLACK); g2D.drawString("individuals covered by", 320, p); g2D.setColor(Color.ORANGE); - g2D.fillOval(455, p - 9, 9, 9); + g2D.fillOval(460, p - 9, 9, 9); g2D.setColor(Color.BLACK); p = p + 20; g2D.drawString("(potential problem)", 320, p); @@ -181,7 +181,7 @@ g2D.setColor(Color.BLACK); g2D.drawString("individuals covered by", 320, p); g2D.setColor(Color.YELLOW); - g2D.fillOval(455, p - 9, 9, 9); + g2D.fillOval(460, p - 9, 9, 9); g2D.setColor(Color.BLACK); p = p + 20; g2D.drawString("(potential problem)", 320, p); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTable.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -1,11 +1,30 @@ package org.dllearner.tools.ore.ui; +import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; +import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.List; +import java.util.Set; +import javax.swing.AbstractAction; +import javax.swing.Box; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPopupMenu; + +import org.dllearner.tools.ore.ExplanationManager; +import org.dllearner.tools.ore.OREManager; +import org.dllearner.tools.ore.RepairManager; +import org.dllearner.tools.ore.TaskManager; +import org.dllearner.tools.ore.explanation.Explanation; import org.jdesktop.swingx.JXTable; +import org.semanticweb.owl.model.OWLAxiom; +import org.semanticweb.owl.model.OWLOntologyChange; +import org.semanticweb.owl.model.OWLOntologyChangeException; +import org.semanticweb.owl.model.OWLOntologyManager; public class ImpactTable extends JXTable { @@ -64,8 +83,111 @@ setCursor(null); } } + + + public void mousePressed(MouseEvent e) { + int row = rowAtPoint(e.getPoint()); + if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { + showPopupMenu(e); + + } + + } + + public void mouseReleased(MouseEvent e) { + int row = rowAtPoint(e.getPoint()); + if (row >= 0 && row < getRowCount() && e.isPopupTrigger()) { + + showPopupMenu(e); + + } + } + + + + }); } + private void showPopupMenu(MouseEvent e){ + final int row = rowAtPoint(e.getPoint()); + JPopupMenu menu = new JPopupMenu(); + menu.add(new AbstractAction("Why?") { + /** + * + */ + private static final long serialVersionUID = 950445739098337169L; + final ImpactTable table = ImpactTable.this; + + public void actionPerformed(ActionEvent e){ + + + OWLAxiom ax = (OWLAxiom)table.getValueAt(row, 1); + showWhy(ax); + + + } + + + }); + menu.show(this, e.getX(), e.getY()); + } + private void showWhy(OWLAxiom entailment){ + try { + OREManager oreMan = OREManager.getInstance(); + RepairManager repMan = RepairManager.getInstance(oreMan); + ExplanationManager expMan = ExplanationManager.getInstance(oreMan); + OWLOntologyManager man = oreMan.getReasoner().getOWLOntologyManager(); + List<OWLOntologyChange>repairPlan = repMan.getRepairPlan(); + + StringBuilder sb = new StringBuilder(); + sb.append(ManchesterSyntaxRenderer.renderSimple(entailment)); + if(((ImpactTableModel)getModel()).isLostEntailment(entailment)){ + sb.append(" is lost because"); + new ExplanationDialog(sb.toString(), expMan.getEntailmentExplanations(entailment)); + } else { + sb.append(" is added because"); + man.applyChanges(repairPlan); + new ExplanationDialog(sb.toString(), expMan.getEntailmentExplanations(entailment)); + man.applyChanges(repMan.getInverseChanges(repairPlan)); + } + + } catch (OWLOntologyChangeException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + + private class ExplanationDialog extends JDialog{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + private JComponent explanationsPanel; + + public ExplanationDialog(String title, Set<Explanation> explanations){ + super(TaskManager.getInstance().getDialog(), title, true); + setLayout(new BorderLayout()); + + explanationsPanel = new Box(1); + + int counter = 1; + for(Explanation exp : explanations){ + ExplanationTablePanel panel = new ExplanationTablePanel(new SimpleExplanationTable(exp), counter); + explanationsPanel.add(panel); + } + add(explanationsPanel, BorderLayout.NORTH); + setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + setSize(700, 400); + + setVisible(true); + + + + } + } + } Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ImpactTableModel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -45,7 +45,7 @@ lostEntailments = new HashSet<OWLAxiom>(); addedEntailemnts = new HashSet<OWLAxiom>(); - ont = OREManager.getInstance().getPelletReasoner().getOWLAPIOntologies(); + ont = OREManager.getInstance().getReasoner().getOWLAPIOntologies(); repMan.addListener(this); // impMan.addListener(this); @@ -145,6 +145,10 @@ public boolean isLostEntailment(int rowIndex){ return lostEntailments.contains(getOWLAxiomAtRow(rowIndex)); } + + public boolean isLostEntailment(OWLAxiom entailment){ + return lostEntailments.contains(entailment); + } @Override Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/ManchesterSyntaxRenderer.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -34,6 +34,32 @@ return render(desc); } + public static String renderSimple(OWLAxiom ax){ + ax.accept(renderer); + writer.flush(); + String renderedString = buffer.toString(); + buffer.getBuffer().delete(0, buffer.toString().length()); + return renderedString; + } + + public static String renderSimple(Description value){ + OWLDescription desc = OWLAPIDescriptionConvertVisitor.getOWLDescription((Description)value); + desc.accept(renderer); + writer.flush(); + String renderedString = buffer.toString(); + buffer.getBuffer().delete(0, buffer.toString().length()); + return renderedString; + } + + public static String renderSimple(Individual value){ + OWLIndividual ind = OWLAPIConverter.getOWLAPIIndividual(value); + ind.accept(renderer); + writer.flush(); + String renderedString = buffer.toString(); + buffer.getBuffer().delete(0, buffer.toString().length()); + return renderedString; + } + public static String render(Individual value){ OWLIndividual ind = OWLAPIConverter.getOWLAPIIndividual((Individual) value); return render(ind); Modified: trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java 2009-09-05 14:13:56 UTC (rev 1836) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/RepairDialog.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -42,12 +42,17 @@ import javax.swing.JSeparator; import javax.swing.border.EmptyBorder; -import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; -import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.ObjectQuantorRestriction; import org.dllearner.tools.ore.OREManager; import org.dllearner.tools.ore.OntologyModifier; +import org.dllearner.tools.ore.ui.item.AddPropertyAssertionMenuItem; +import org.dllearner.tools.ore.ui.item.AddToClassMenuItem; +import org.dllearner.tools.ore.ui.item.MoveFromClassToMenuItem; +import org.dllearner.tools.ore.ui.item.MoveToClassFromMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsNotToMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveAllPropertyAssertionsToMenuItem; +import org.dllearner.tools.ore.ui.item.RemoveFromClassMenuItem; import org.semanticweb.owl.model.OWLException; import org.semanticweb.owl.model.OWLOntologyChange; import org.semanticweb.owl.model.OWLOntologyChangeListener; @@ -88,8 +93,6 @@ private OntologyModifier modifier; private Individual ind; - private Description actualDesc; - private Description newDesc; public RepairDialog(Individual ind, JDialog dialog, String mode){ @@ -126,7 +129,7 @@ this.modifier = OREManager.getInstance().getModifier(); this.mode = mode; - OREManager.getInstance().getPelletReasoner().getOWLOntologyManager().addOntologyChangeListener(this); + OREManager.getInstance().getReasoner().getOWLOntologyManager().addOntologyChangeListener(this); } @@ -206,48 +209,45 @@ * Method controls action events triggered by clicking on red labels in class description at the top of the dialog. */ public void actionPerformed(ActionEvent e) { + if(e.getSource() instanceof RemoveFromClassMenuItem){ + RemoveFromClassMenuItem item = (RemoveFromClassMenuItem)e.getSource(); + List<OWLOntologyChange> changes = modifier.removeClassAssertion(ind, item.getDescription()); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof MoveFromClassToMenuItem){ + MoveFromClassToMenuItem item = (MoveFromClassToMenuItem)e.getSource(); + List<OWLOntologyChange> changes = modifier.moveIndividual(ind, item.getSource(), item.getDestination()); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof AddToClassMenuItem){ + AddToClassMenuItem item = (AddToClassMenuItem)e.getSource(); + List<OWLOntologyChange> changes = modifier.addClassAssertion(ind, item.getDescription()); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof RemoveAllPropertyAssertionsMenuItem){ + RemoveAllPropertyAssertionsMenuItem item = (RemoveAllPropertyAssertionsMenuItem)e.getSource(); + List<OWLOntologyChange> changes = modifier.deleteObjectProperty(ind, item.getProperty()); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof RemoveAllPropertyAssertionsToMenuItem){ + RemoveAllPropertyAssertionsToMenuItem item = (RemoveAllPropertyAssertionsToMenuItem)e.getSource(); + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); + changes.addAll(modifier.removeAllObjectPropertyAssertions(ind, item.getProperty(), OREManager.getInstance().getIndividualsInPropertyRange(item.getDestination(), ind))); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof RemoveAllPropertyAssertionsNotToMenuItem){ + RemoveAllPropertyAssertionsNotToMenuItem item = (RemoveAllPropertyAssertionsNotToMenuItem)e.getSource(); + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); + changes.addAll(modifier.removeAllObjectPropertyAssertions(ind, item.getProperty(), OREManager.getInstance().getIndividualsNotInPropertyRange(item.getDestination(), ind))); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof MoveToClassFromMenuItem){ + MoveToClassFromMenuItem item = (MoveToClassFromMenuItem)e.getSource(); + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); + changes.addAll(modifier.moveIndividual(ind, item.getSource(), item.getDestination())); + changesTable.addChanges(changes); + } else if(e.getSource() instanceof AddPropertyAssertionMenuItem){ + AddPropertyAssertionMenuItem item = (AddPropertyAssertionMenuItem)e.getSource(); + List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); + changes.addAll(modifier.addObjectProperty(ind, item.getProperty(), item.getObject())); + changesTable.addChanges(changes); + } - if(e.getSource() instanceof DescriptionMenuItem){ - DescriptionMenuItem item =(DescriptionMenuItem) e.getSource(); - actualDesc = item.getDescription(); - int action = item.getActionID(); - if(action == 4){ - Individual obj = new Individual(e.getActionCommand()); - List<OWLOntologyChange> changes = modifier.addObjectProperty(ind, (ObjectQuantorRestriction) actualDesc, obj); - changesTable.addChanges(changes); - } else if(action == 5){ - ObjectQuantorRestriction property = (ObjectQuantorRestriction) actualDesc; - List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); - for(Individual i : OREManager.getInstance().getIndividualsInPropertyRange(property, ind)){ - changes.addAll(modifier.removeObjectPropertyAssertion(ind, property, i)); - } - changesTable.addChanges(changes); - - } else if(action == 6){ - List<OWLOntologyChange> changes = modifier.deleteObjectProperty(ind, (ObjectQuantorRestriction) actualDesc); - changesTable.addChanges(changes); - } else if(action == 0){ - newDesc = new NamedClass(item.getName()); - List<OWLOntologyChange> changes = modifier.moveIndividual(ind, actualDesc, newDesc); - changesTable.addChanges(changes); - } else if(action == 3){ - List<OWLOntologyChange> changes = modifier.removeClassAssertion(ind, actualDesc); - changesTable.addChanges(changes); - } else if(action == 2){ - List<OWLOntologyChange> changes = modifier.addClassAssertion(ind, actualDesc); - changesTable.addChanges(changes); - } else if(action == 7){ - ObjectQuantorRestriction property = (ObjectQuantorRestriction) actualDesc; - List<OWLOntologyChange> changes = new ArrayList<OWLOntologyChange>(); - for(Individual i : OREManager.getInstance().getIndividualsNotInPropertyRange(property, ind)){ - changes.addAll(modifier.removeObjectPropertyAssertion(ind, property, i)); - } - } else if(action == 1){ - Description oldDesc = new NamedClass(item.getName()); - List<OWLOntologyChange> changes = modifier.moveIndividual(ind, oldDesc, actualDesc); - changesTable.addChanges(changes); - } - } else if(e.getActionCommand().equals("Ok")){ + else if(e.getActionCommand().equals("Ok")){ if(descPanel.isCorrect()){ returncode = VALID_RETURN_CODE; } else{ Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTable.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTable.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTable.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -0,0 +1,25 @@ +package org.dllearner.tools.ore.ui; + +import java.awt.Color; + +import javax.swing.JTable; + +import org.dllearner.tools.ore.explanation.Explanation; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.decorator.HighlighterFactory; + +public class SimpleExplanationTable extends JXTable { + + /** + * + */ + private static final long serialVersionUID = 5258296616232184974L; + + + public SimpleExplanationTable(Explanation exp){ + setBackground(Color.WHITE); + setHighlighters(HighlighterFactory.createAlternateStriping()); + setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + setModel(new SimpleExplanationTableModel(exp)); + } +} Added: trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/tools/ore/ui/SimpleExplanationTableModel.java 2009-09-06 15:28:00 UTC (rev 1837) @@ -0,0 +1,49 @@ +package org.dllearner.tools.ore.ui; + +import javax.swing.table.A... [truncated message content] |