From: <jen...@us...> - 2008-11-10 13:46:11
|
Revision: 1502 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=1502&view=rev Author: jenslehmann Date: 2008-11-10 13:46:08 +0000 (Mon, 10 Nov 2008) Log Message: ----------- - reasoner component redesign continued - SVN is still *broken*, please don't update if you want everything to work properly Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/core/BaseReasoner.java trunk/src/dl-learner/org/dllearner/core/IndividualReasoner.java trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/gui/RunPanel.java trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java trunk/src/dl-learner/org/dllearner/gui/widgets/WidgetPanelStringSet.java trunk/src/dl-learner/org/dllearner/reasoning/DIGReasoner.java trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java Modified: trunk/src/dl-learner/org/dllearner/core/BaseReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/BaseReasoner.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/core/BaseReasoner.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -33,6 +33,8 @@ * <li>queries for elements contained in the knowledge base (classes, properties, ...)</li> * <li>basic reasoning requests related to the knowledge base as a whole (e.g. consistency)</li> * </ul> + * (Many methods in this interface do not require reasoning algorithms, but rather + * return information about the knowledge base.) * * @author Jens Lehmann * Modified: trunk/src/dl-learner/org/dllearner/core/IndividualReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/IndividualReasoner.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/core/IndividualReasoner.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -19,6 +19,11 @@ */ package org.dllearner.core; +import java.util.Set; + +import org.dllearner.core.owl.Individual; +import org.dllearner.core.owl.NamedClass; + /** * Reasoning requests/queries related to individuals in the knowledge base. * @@ -27,4 +32,13 @@ */ public interface IndividualReasoner { + /** + * Returns types of an individual, i.e. those classes where the individual + * is instance of. For instance, the individual eric could have type Person. + * + * @param individual An individual in the knowledge base. + * @return Types this individual is instance of. + */ + public Set<NamedClass> getTypes(Individual individual); + } Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -52,6 +52,23 @@ * In addition to calling the actual implementations of reasoning operations, * the class also collects statistical information, which can be queried. * + * Guidelines for extending the class: + * <ul> + * <li>add the needed method to the corresponding interface (currenty + * {@link BaseReasoner}, {@link SchemaReasoner}, {@link IndividualReasoner} + * exist)</li> + * <li>reasoning methods which need to be supported by all reasoners: + * create method() and methodImpl() here, where the former is an overridden, final + * method delegating to the latter abstract, protected method</li> + * <li>reasoning method, which do not need to be supported by all reasoners: + * create method() and methodImpl() as before, but this time methodImpl() is + * not abstract and throws a {@link ReasoningMethodUnsupportedException} + * </li> + * </ul> + * Note, that the method delegation is done to collect statistical information + * about reasoning performance, e.g. count how often certain methods were called + * and how long it took to execute them. + * * @author Jens Lehmann * */ @@ -171,7 +188,14 @@ } @Override - public boolean subsumes(Description superClass, Description subClass) { + public final Set<NamedClass> getTypes(Individual individual) { + return getTypesImpl(individual); + } + + protected abstract Set<NamedClass> getTypesImpl(Individual individual); + + @Override + public final boolean subsumes(Description superClass, Description subClass) { reasoningStartTimeTmp = System.nanoTime(); boolean result = false; try { @@ -883,10 +907,6 @@ throw new ReasoningMethodUnsupportedException(); } - public Set<NamedClass> getConceptsImpl(Individual i) throws ReasoningMethodUnsupportedException { - throw new ReasoningMethodUnsupportedException(); - } - public Description getDomainImpl(ObjectProperty objectProperty) throws ReasoningMethodUnsupportedException { throw new ReasoningMethodUnsupportedException(); Modified: trunk/src/dl-learner/org/dllearner/gui/RunPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/gui/RunPanel.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -218,7 +218,7 @@ // start if (e.getSource() == runButton) { algorithmThread = new AlgorithmThread(); - config.getReasonerComponent().resetStatistics(); + config.getReasoner().resetStatistics(); algorithmThread.start(); // algorithmStartTime = System.nanoTime(); // algorithmThread. @@ -275,32 +275,32 @@ percent[0].setText("100%"); // update overall reasoning time - overallReasoningTime = config.getReasonerComponent().getOverallReasoningTimeNs(); + overallReasoningTime = config.getReasoner().getOverallReasoningTimeNs(); bar[1].update((double) overallReasoningTime / (double) algorithmRunTime); time[1].setText(makeTime(overallReasoningTime)); percent[1].setText(Percent(overallReasoningTime, algorithmRunTime)); - if (config.getReasonerComponent().getNrOfInstanceChecks() > 0) { - instanceCheckReasoningTime = config.getReasonerComponent() + if (config.getReasoner().getNrOfInstanceChecks() > 0) { + instanceCheckReasoningTime = config.getReasoner() .getInstanceCheckReasoningTimeNs(); - name[2].setText(names[2] + " (" + config.getReasonerComponent().getNrOfInstanceChecks() + name[2].setText(names[2] + " (" + config.getReasoner().getNrOfInstanceChecks() + ")"); bar[2].update((double) instanceCheckReasoningTime / (double) algorithmRunTime); time[2].setText(makeTime(instanceCheckReasoningTime)); percent[2].setText(Percent(instanceCheckReasoningTime, algorithmRunTime)); } - if (config.getReasonerComponent().getNrOfRetrievals() > 0) { - retrievalReasoningTime = config.getReasonerComponent().getRetrievalReasoningTimeNs(); - name[3].setText(names[3] + " (" + config.getReasonerComponent().getNrOfRetrievals() + if (config.getReasoner().getNrOfRetrievals() > 0) { + retrievalReasoningTime = config.getReasoner().getRetrievalReasoningTimeNs(); + name[3].setText(names[3] + " (" + config.getReasoner().getNrOfRetrievals() + ")"); bar[3].update((double) retrievalReasoningTime / (double) algorithmRunTime); time[3].setText(makeTime(retrievalReasoningTime)); percent[3].setText(Percent(retrievalReasoningTime, algorithmRunTime)); } - if (config.getReasonerComponent().getNrOfSubsumptionChecks() > 0) { - subsumptionReasoningTime = config.getReasonerComponent().getSubsumptionReasoningTimeNs(); + if (config.getReasoner().getNrOfSubsumptionChecks() > 0) { + subsumptionReasoningTime = config.getReasoner().getSubsumptionReasoningTimeNs(); name[4].setText(names[4] + " (" - + config.getReasonerComponent().getNrOfSubsumptionChecks() + ")"); + + config.getReasoner().getNrOfSubsumptionChecks() + ")"); bar[4].update((double) subsumptionReasoningTime / (double) algorithmRunTime); time[4].setText(makeTime(subsumptionReasoningTime)); percent[4].setText(Percent(subsumptionReasoningTime, algorithmRunTime)); @@ -378,8 +378,8 @@ } private String getSolutionString(List<EvaluatedDescription> solutions) { - String baseURI = config.getReasonerComponent().getBaseURI(); - Map<String,String> prefixes = config.getReasonerComponent().getPrefixes(); + String baseURI = config.getReasoner().getBaseURI(); + Map<String,String> prefixes = config.getReasoner().getPrefixes(); String string = ""; for (EvaluatedDescription d : solutions) { string += "accuracy: " + (df.format(d.getAccuracy()*100)) + "%: \t" Modified: trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/gui/TreeWindow.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -81,7 +81,7 @@ PosNegDefinitionLP lp = (PosNegDefinitionLP) config.getLearningProblem(); Set<String> posExamples = lp.getConfigurator().getPositiveExamples(); Set<String> negExamples = lp.getConfigurator().getNegativeExamples(); - String baseURI = config.getReasonerComponent().getBaseURI(); + String baseURI = config.getReasoner().getBaseURI(); int nrOfPositiveExamples = posExamples.size(); int nrOfNegativeExamples = negExamples.size(); Modified: trunk/src/dl-learner/org/dllearner/gui/widgets/WidgetPanelStringSet.java =================================================================== --- trunk/src/dl-learner/org/dllearner/gui/widgets/WidgetPanelStringSet.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/gui/widgets/WidgetPanelStringSet.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -213,7 +213,7 @@ if (configOption.getName().equalsIgnoreCase("positiveExamples") || configOption.getName().equalsIgnoreCase("negativeExamples")) { // fill lists - Set<Individual> individualsSet = config.getReasonerComponent() + Set<Individual> individualsSet = config.getReasoner() .getIndividuals(); if(individualsSet != null) { LinkedList<Individual> individuals = new LinkedList<Individual>( @@ -233,7 +233,7 @@ if (configOption.getName().equalsIgnoreCase("allowedConcepts") || configOption.getName().equalsIgnoreCase("ignoredConcepts")) { // fill lists - Set<NamedClass> atomicsSet = config.getReasonerComponent() + Set<NamedClass> atomicsSet = config.getReasoner() .getNamedClasses(); if(atomicsSet != null) { LinkedList<NamedClass> atomicConcepts = new LinkedList<NamedClass>( @@ -247,7 +247,7 @@ if (configOption.getName().equalsIgnoreCase("allowedRoles") || configOption.getName().equalsIgnoreCase("ignoredRoles")) { // fill lists - Set<ObjectProperty> atomicsSet = config.getReasonerComponent() + Set<ObjectProperty> atomicsSet = config.getReasoner() .getObjectProperties(); if(atomicsSet != null) { LinkedList<ObjectProperty> atomicRoles = new LinkedList<ObjectProperty>( Modified: trunk/src/dl-learner/org/dllearner/reasoning/DIGReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/DIGReasoner.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/reasoning/DIGReasoner.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -399,7 +399,7 @@ } @Override - public boolean subsumes(Description superConcept, Description subConcept) { + public boolean subsumesImpl(Description superConcept, Description subConcept) { // System.out.println("subsumes(" + superConcept + "," + subConcept + // ")"); String subsumesDIG = asksPrefix; @@ -671,7 +671,7 @@ // ToDo: gibt momentan nur einen Wert bei äquivalenten Klassen aus @Override - public Set<NamedClass> getConcepts(Individual individual) { + public Set<NamedClass> getTypesImpl(Individual individual) { String typesDIG = asksPrefix; typesDIG += "<types id=\"query_types\">"; typesDIG += "<individual name=\"" + individual.getName() + "\" />"; Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastInstanceChecker.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -593,7 +593,7 @@ } @Override - public boolean subsumes(Description superConcept, Description subConcept) { + public boolean subsumesImpl(Description superConcept, Description subConcept) { // Negation neg = new Negation(subConcept); // Intersection c = new Intersection(neg,superConcept); // return fastRetrieval.calculateSets(c).getPosSet().isEmpty(); Modified: trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -127,7 +127,7 @@ // C \sqsubseteq D is rewritten to a retrieval for \not C \sqcap D @Override - public boolean subsumes(Description superConcept, Description subConcept) { + public boolean subsumesImpl(Description superConcept, Description subConcept) { // Negation neg = new Negation(subConcept); // Intersection c = new Intersection(neg,superConcept); // return fastRetrieval.calculateSets(c).getPosSet().isEmpty(); Modified: trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/reasoning/OWLAPIReasoner.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -504,7 +504,7 @@ } @Override - public boolean subsumes(Description superConcept, Description subConcept) { + public boolean subsumesImpl(Description superConcept, Description subConcept) { try { return reasoner.isSubClassOf(OWLAPIDescriptionConvertVisitor.getOWLDescription(subConcept), OWLAPIDescriptionConvertVisitor.getOWLDescription(superConcept)); } catch (OWLReasonerException e) { @@ -612,7 +612,7 @@ } @Override - public Set<NamedClass> getConcepts(Individual individual) { + public Set<NamedClass> getTypesImpl(Individual individual) { Set<Set<OWLClass>> result = null; try { result = reasoner.getTypes(factory.getOWLIndividual(URI.create(individual.getName())),false); @@ -766,7 +766,7 @@ } @Override - public Map<Individual, SortedSet<Constant>> getDatatypeMembers(DatatypeProperty datatypeProperty) { + public Map<Individual, SortedSet<Constant>> getDatatypeMembersImpl(DatatypeProperty datatypeProperty) { OWLDataProperty prop = getOWLAPIDescription(datatypeProperty); Map<Individual, SortedSet<Constant>> map = new TreeMap<Individual, SortedSet<Constant>>(); for(Individual i : individuals) { @@ -1037,7 +1037,7 @@ } @Override - public Set<NamedClass> getInconsistentClasses(){ + public Set<NamedClass> getInconsistentClassesImpl(){ Set<NamedClass> concepts = new HashSet<NamedClass>(); try { Modified: trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/tools/ore/StatsPanel.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -100,7 +100,7 @@ classPane = new JXTaskPane(); classPane.setTitle("Classes"); - oldClasses = ore.getOwlReasoner().getConcepts(ind); + oldClasses = ore.getOwlReasoner().getTypes(ind); for(NamedClass nc : oldClasses){ classPane.add(new JLabel(nc.toManchesterSyntaxString(baseURI, prefixes))); } @@ -154,7 +154,7 @@ classPane.removeAll(); Set<String> newClassesString = new HashSet<String>(); - for (NamedClass nc : ore.getOwlReasoner().getConcepts(ind)){ + for (NamedClass nc : ore.getOwlReasoner().getTypes(ind)){ newClassesString.add(nc.toManchesterSyntaxString(baseURI, prefixes)); } Set<String> oldClassesString = new HashSet<String>(); Modified: trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java =================================================================== --- trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-11-10 12:44:17 UTC (rev 1501) +++ trunk/src/dl-learner/org/dllearner/tools/protege/DLLearnerModel.java 2008-11-10 13:46:08 UTC (rev 1502) @@ -758,7 +758,7 @@ if (positiveExamples != null) { if (positiveExamples.toString().contains(indi2.toString())) { // if yes then get the concepts of this individuals - Set<NamedClass> concept = reasoner.getConcepts(indi2); + Set<NamedClass> concept = reasoner.getTypes(indi2); // adds all concepts to old concept OWLAPI for (Iterator<NamedClass> k = concept.iterator(); k .hasNext();) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |