From: <jen...@us...> - 2007-09-25 14:32:28
|
Revision: 152 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=152&view=rev Author: jenslehmann Date: 2007-09-25 07:32:25 -0700 (Tue, 25 Sep 2007) Log Message: ----------- another major step in building the new base structure Modified Paths: -------------- trunk/src/dl-learner/org/dllearner/Config.java trunk/src/dl-learner/org/dllearner/ConfigurationManager.java trunk/src/dl-learner/org/dllearner/LearningProblem.java trunk/src/dl-learner/org/dllearner/Main.java trunk/src/dl-learner/org/dllearner/Score.java trunk/src/dl-learner/org/dllearner/ScoreThreeValued.java trunk/src/dl-learner/org/dllearner/ScoreTwoValued.java trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java trunk/src/dl-learner/org/dllearner/algorithms/LearningAlgorithm.java trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java trunk/src/dl-learner/org/dllearner/algorithms/gp/ADC.java trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java trunk/src/dl-learner/org/dllearner/algorithms/gp/GPUtilities.java trunk/src/dl-learner/org/dllearner/algorithms/gp/Program.java trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/Psi.java trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/PsiDown.java trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/PsiUp.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/Node.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/RefinementOperator.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/RhoDown.java trunk/src/dl-learner/org/dllearner/algorithms/refinement/SearchSpace.java trunk/src/dl-learner/org/dllearner/core/Component.java trunk/src/dl-learner/org/dllearner/core/ComponentManager.java trunk/src/dl-learner/org/dllearner/core/ComponentTest.java trunk/src/dl-learner/org/dllearner/core/ConfigOption.java trunk/src/dl-learner/org/dllearner/core/IntegerConfigOption.java trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java trunk/src/dl-learner/org/dllearner/core/StringConfigOption.java trunk/src/dl-learner/org/dllearner/core/dl/All.java trunk/src/dl-learner/org/dllearner/core/dl/AssertionalAxiom.java trunk/src/dl-learner/org/dllearner/core/dl/AtomicConcept.java trunk/src/dl-learner/org/dllearner/core/dl/AtomicRole.java trunk/src/dl-learner/org/dllearner/core/dl/Axiom.java trunk/src/dl-learner/org/dllearner/core/dl/Bottom.java trunk/src/dl-learner/org/dllearner/core/dl/Concept.java trunk/src/dl-learner/org/dllearner/core/dl/ConceptAssertion.java trunk/src/dl-learner/org/dllearner/core/dl/Conjunction.java trunk/src/dl-learner/org/dllearner/core/dl/Disjunction.java trunk/src/dl-learner/org/dllearner/core/dl/Equality.java trunk/src/dl-learner/org/dllearner/core/dl/Exists.java trunk/src/dl-learner/org/dllearner/core/dl/FlatABox.java trunk/src/dl-learner/org/dllearner/core/dl/FunctionalRoleAxiom.java trunk/src/dl-learner/org/dllearner/core/dl/GreaterEqual.java trunk/src/dl-learner/org/dllearner/core/dl/Inclusion.java trunk/src/dl-learner/org/dllearner/core/dl/Individual.java trunk/src/dl-learner/org/dllearner/core/dl/InverseRole.java trunk/src/dl-learner/org/dllearner/core/dl/InverseRoleAxiom.java trunk/src/dl-learner/org/dllearner/core/dl/KB.java trunk/src/dl-learner/org/dllearner/core/dl/KBElement.java trunk/src/dl-learner/org/dllearner/core/dl/LessEqual.java trunk/src/dl-learner/org/dllearner/core/dl/MultiConjunction.java trunk/src/dl-learner/org/dllearner/core/dl/MultiDisjunction.java trunk/src/dl-learner/org/dllearner/core/dl/Negation.java trunk/src/dl-learner/org/dllearner/core/dl/NumberRestriction.java trunk/src/dl-learner/org/dllearner/core/dl/Quantification.java trunk/src/dl-learner/org/dllearner/core/dl/RBoxAxiom.java trunk/src/dl-learner/org/dllearner/core/dl/Role.java trunk/src/dl-learner/org/dllearner/core/dl/RoleAssertion.java trunk/src/dl-learner/org/dllearner/core/dl/SubRoleAxiom.java trunk/src/dl-learner/org/dllearner/core/dl/SymmetricRoleAxiom.java trunk/src/dl-learner/org/dllearner/core/dl/TerminologicalAxiom.java trunk/src/dl-learner/org/dllearner/core/dl/Top.java trunk/src/dl-learner/org/dllearner/core/dl/TransitiveRoleAxiom.java trunk/src/dl-learner/org/dllearner/kb/OWLFile.java trunk/src/dl-learner/org/dllearner/learningproblems/DefinitionLPThreeValued.java trunk/src/dl-learner/org/dllearner/learningproblems/DefinitionLPTwoValued.java trunk/src/dl-learner/org/dllearner/modules/ModuleInvocator.java trunk/src/dl-learner/org/dllearner/modules/PreprocessingModule.java trunk/src/dl-learner/org/dllearner/modules/TestModule.java trunk/src/dl-learner/org/dllearner/modules/sparql/PartialOntology.java trunk/src/dl-learner/org/dllearner/modules/sparql/SparqlModule.java trunk/src/dl-learner/org/dllearner/parser/dllearner.jjt trunk/src/dl-learner/org/dllearner/reasoning/AbstractReasoner.java trunk/src/dl-learner/org/dllearner/reasoning/DIGConverter.java trunk/src/dl-learner/org/dllearner/reasoning/DIGReasoner.java trunk/src/dl-learner/org/dllearner/reasoning/FastRetrieval.java trunk/src/dl-learner/org/dllearner/reasoning/FastRetrievalReasoner.java trunk/src/dl-learner/org/dllearner/reasoning/KAON2Reasoner.java trunk/src/dl-learner/org/dllearner/reasoning/RoleHierarchy.java trunk/src/dl-learner/org/dllearner/reasoning/SubsumptionHierarchy.java trunk/src/dl-learner/org/dllearner/server/ClientState.java trunk/src/dl-learner/org/dllearner/server/DLLearnerWSoriginal.java trunk/src/dl-learner/org/dllearner/server/LearnMonitor.java trunk/src/dl-learner/org/dllearner/utilities/ConceptComparator.java trunk/src/dl-learner/org/dllearner/utilities/ConceptTransformation.java trunk/src/dl-learner/org/dllearner/utilities/Helper.java trunk/src/dl-learner/org/dllearner/utilities/OntologyClassRewriter.java trunk/src/dl-learner/org/dllearner/utilities/PaperStatistics.java trunk/src/dl-learner/org/dllearner/utilities/RoleComparator.java Added Paths: ----------- trunk/src/dl-learner/org/dllearner/core/Reasoner.java trunk/src/dl-learner/org/dllearner/core/ReasoningMethodUnsupportedException.java trunk/src/dl-learner/org/dllearner/core/ReasoningService.java trunk/src/dl-learner/org/dllearner/core/StringSetConfigOption.java trunk/src/dl-learner/org/dllearner/core/dl/ trunk/src/dl-learner/org/dllearner/reasoning/DIGReasonerNew.java Removed Paths: ------------- trunk/src/dl-learner/org/dllearner/dl/ trunk/src/dl-learner/org/dllearner/reasoning/Reasoner.java trunk/src/dl-learner/org/dllearner/reasoning/ReasoningMethodUnsupportedException.java trunk/src/dl-learner/org/dllearner/reasoning/ReasoningService.java Modified: trunk/src/dl-learner/org/dllearner/Config.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Config.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/Config.java 2007-09-25 14:32:25 UTC (rev 152) @@ -11,8 +11,8 @@ import org.dllearner.ScoreThreeValued.ScoreMethod; import org.dllearner.algorithms.gp.GP.AlgorithmType; import org.dllearner.algorithms.gp.GP.SelectionType; -import org.dllearner.dl.AtomicConcept; -import org.dllearner.dl.AtomicRole; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; import org.dllearner.reasoning.ReasonerType; public class Config { Modified: trunk/src/dl-learner/org/dllearner/ConfigurationManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/ConfigurationManager.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/ConfigurationManager.java 2007-09-25 14:32:25 UTC (rev 152) @@ -16,8 +16,8 @@ import org.dllearner.ScoreThreeValued.ScoreMethod; import org.dllearner.algorithms.gp.GP.AlgorithmType; import org.dllearner.algorithms.gp.GP.SelectionType; -import org.dllearner.dl.AtomicConcept; -import org.dllearner.dl.AtomicRole; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; import org.dllearner.parser.DLLearner; import org.dllearner.reasoning.ReasonerType; import org.dllearner.utilities.ConceptComparator; Modified: trunk/src/dl-learner/org/dllearner/LearningProblem.java =================================================================== --- trunk/src/dl-learner/org/dllearner/LearningProblem.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/LearningProblem.java 2007-09-25 14:32:25 UTC (rev 152) @@ -5,11 +5,11 @@ import java.util.TreeSet; import org.dllearner.Config.Refinement; -import org.dllearner.dl.Concept; -import org.dllearner.dl.Individual; -import org.dllearner.dl.Negation; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Individual; +import org.dllearner.core.dl.Negation; import org.dllearner.reasoning.ReasonerType; -import org.dllearner.reasoning.ReasoningService; import org.dllearner.utilities.Helper; import org.dllearner.utilities.SortedSetTuple; Modified: trunk/src/dl-learner/org/dllearner/Main.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Main.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/Main.java 2007-09-25 14:32:25 UTC (rev 152) @@ -45,16 +45,19 @@ import org.dllearner.algorithms.RandomGuesser; import org.dllearner.algorithms.gp.GP; import org.dllearner.algorithms.refinement.ROLearner; -import org.dllearner.dl.AssertionalAxiom; -import org.dllearner.dl.AtomicConcept; -import org.dllearner.dl.AtomicRole; -import org.dllearner.dl.Concept; -import org.dllearner.dl.ConceptAssertion; -import org.dllearner.dl.FlatABox; -import org.dllearner.dl.Individual; -import org.dllearner.dl.KB; -import org.dllearner.dl.Negation; -import org.dllearner.dl.RoleAssertion; +import org.dllearner.core.Reasoner; +import org.dllearner.core.ReasoningMethodUnsupportedException; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.dl.AssertionalAxiom; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.ConceptAssertion; +import org.dllearner.core.dl.FlatABox; +import org.dllearner.core.dl.Individual; +import org.dllearner.core.dl.KB; +import org.dllearner.core.dl.Negation; +import org.dllearner.core.dl.RoleAssertion; import org.dllearner.modules.ModuleInvocator; import org.dllearner.parser.DLLearner; import org.dllearner.parser.ParseException; @@ -62,10 +65,7 @@ import org.dllearner.reasoning.DIGReasoner; import org.dllearner.reasoning.FastRetrievalReasoner; import org.dllearner.reasoning.KAON2Reasoner; -import org.dllearner.reasoning.Reasoner; import org.dllearner.reasoning.ReasonerType; -import org.dllearner.reasoning.ReasoningMethodUnsupportedException; -import org.dllearner.reasoning.ReasoningService; import org.dllearner.utilities.ConceptComparator; import org.dllearner.utilities.ConceptTransformation; import org.dllearner.utilities.Helper; Modified: trunk/src/dl-learner/org/dllearner/Score.java =================================================================== --- trunk/src/dl-learner/org/dllearner/Score.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/Score.java 2007-09-25 14:32:25 UTC (rev 152) @@ -2,7 +2,7 @@ import java.util.Set; -import org.dllearner.dl.Individual; +import org.dllearner.core.dl.Individual; public abstract class Score { public abstract double getScore(); Modified: trunk/src/dl-learner/org/dllearner/ScoreThreeValued.java =================================================================== --- trunk/src/dl-learner/org/dllearner/ScoreThreeValued.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/ScoreThreeValued.java 2007-09-25 14:32:25 UTC (rev 152) @@ -4,7 +4,7 @@ import java.util.Set; import java.util.SortedSet; -import org.dllearner.dl.Individual; +import org.dllearner.core.dl.Individual; import org.dllearner.utilities.Helper; /** Modified: trunk/src/dl-learner/org/dllearner/ScoreTwoValued.java =================================================================== --- trunk/src/dl-learner/org/dllearner/ScoreTwoValued.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/ScoreTwoValued.java 2007-09-25 14:32:25 UTC (rev 152) @@ -2,7 +2,7 @@ import java.util.Set; -import org.dllearner.dl.Individual; +import org.dllearner.core.dl.Individual; /** * Modified: trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/BruteForceLearner.java 2007-09-25 14:32:25 UTC (rev 152) @@ -8,16 +8,16 @@ import org.dllearner.Config; import org.dllearner.LearningProblem; import org.dllearner.Score; -import org.dllearner.dl.All; -import org.dllearner.dl.AtomicConcept; -import org.dllearner.dl.AtomicRole; -import org.dllearner.dl.Bottom; -import org.dllearner.dl.Concept; -import org.dllearner.dl.Conjunction; -import org.dllearner.dl.Disjunction; -import org.dllearner.dl.Exists; -import org.dllearner.dl.Negation; -import org.dllearner.dl.Top; +import org.dllearner.core.dl.All; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Bottom; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Conjunction; +import org.dllearner.core.dl.Disjunction; +import org.dllearner.core.dl.Exists; +import org.dllearner.core.dl.Negation; +import org.dllearner.core.dl.Top; /** * TODO: Man könnte den Speicherbedarf gegen Null gehen lassen, wenn man gar keine Programme Modified: trunk/src/dl-learner/org/dllearner/algorithms/LearningAlgorithm.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/LearningAlgorithm.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/LearningAlgorithm.java 2007-09-25 14:32:25 UTC (rev 152) @@ -1,7 +1,7 @@ package org.dllearner.algorithms; import org.dllearner.Score; -import org.dllearner.dl.Concept; +import org.dllearner.core.dl.Concept; /** * TODO: Es gibt 3 Sachen, die eine Loesung ausmachen: die Loesung selbst, Modified: trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/RandomGuesser.java 2007-09-25 14:32:25 UTC (rev 152) @@ -4,7 +4,7 @@ import org.dllearner.Score; import org.dllearner.algorithms.gp.Program; import org.dllearner.algorithms.gp.GPUtilities; -import org.dllearner.dl.Concept; +import org.dllearner.core.dl.Concept; public class RandomGuesser implements LearningAlgorithm { Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/ADC.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/ADC.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/ADC.java 2007-09-25 14:32:25 UTC (rev 152) @@ -1,6 +1,6 @@ package org.dllearner.algorithms.gp; -import org.dllearner.dl.Concept; +import org.dllearner.core.dl.Concept; public class ADC extends Concept { Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/GP.java 2007-09-25 14:32:25 UTC (rev 152) @@ -48,8 +48,8 @@ import org.dllearner.Score; import org.dllearner.algorithms.LearningAlgorithm; import org.dllearner.algorithms.hybridgp.Psi; -import org.dllearner.dl.Concept; -import org.dllearner.dl.Top; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Top; import org.dllearner.utilities.Helper; /** Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/GPUtilities.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/GPUtilities.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/GPUtilities.java 2007-09-25 14:32:25 UTC (rev 152) @@ -14,20 +14,20 @@ import org.dllearner.Main; import org.dllearner.Score; import org.dllearner.ScoreThreeValued; -import org.dllearner.dl.All; -import org.dllearner.dl.AtomicConcept; -import org.dllearner.dl.AtomicRole; -import org.dllearner.dl.Bottom; -import org.dllearner.dl.Concept; -import org.dllearner.dl.Conjunction; -import org.dllearner.dl.Disjunction; -import org.dllearner.dl.Exists; -import org.dllearner.dl.FlatABox; -import org.dllearner.dl.Individual; -import org.dllearner.dl.MultiConjunction; -import org.dllearner.dl.MultiDisjunction; -import org.dllearner.dl.Negation; -import org.dllearner.dl.Top; +import org.dllearner.core.dl.All; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Bottom; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Conjunction; +import org.dllearner.core.dl.Disjunction; +import org.dllearner.core.dl.Exists; +import org.dllearner.core.dl.FlatABox; +import org.dllearner.core.dl.Individual; +import org.dllearner.core.dl.MultiConjunction; +import org.dllearner.core.dl.MultiDisjunction; +import org.dllearner.core.dl.Negation; +import org.dllearner.core.dl.Top; import org.dllearner.reasoning.FastRetrieval; import org.dllearner.reasoning.ReasonerType; import org.dllearner.utilities.Helper; Modified: trunk/src/dl-learner/org/dllearner/algorithms/gp/Program.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/gp/Program.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/gp/Program.java 2007-09-25 14:32:25 UTC (rev 152) @@ -21,7 +21,7 @@ package org.dllearner.algorithms.gp; import org.dllearner.Score; -import org.dllearner.dl.Concept; +import org.dllearner.core.dl.Concept; /** * This class represents a program, i.e. an individual. Modified: trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/Psi.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/Psi.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/Psi.java 2007-09-25 14:32:25 UTC (rev 152) @@ -8,7 +8,7 @@ import org.dllearner.LearningProblem; import org.dllearner.Score; import org.dllearner.algorithms.gp.Program; -import org.dllearner.dl.Concept; +import org.dllearner.core.dl.Concept; import org.dllearner.utilities.ConceptComparator; import org.dllearner.utilities.ConceptTransformation; Modified: trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/PsiDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/PsiDown.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/PsiDown.java 2007-09-25 14:32:25 UTC (rev 152) @@ -9,18 +9,18 @@ import org.dllearner.LearningProblem; import org.dllearner.algorithms.refinement.RefinementOperator; -import org.dllearner.dl.All; -import org.dllearner.dl.AtomicConcept; -import org.dllearner.dl.AtomicRole; -import org.dllearner.dl.Bottom; -import org.dllearner.dl.Concept; -import org.dllearner.dl.Exists; -import org.dllearner.dl.MultiConjunction; -import org.dllearner.dl.MultiDisjunction; -import org.dllearner.dl.Negation; -import org.dllearner.dl.Quantification; -import org.dllearner.dl.Top; -import org.dllearner.reasoning.ReasoningService; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.dl.All; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Bottom; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Exists; +import org.dllearner.core.dl.MultiConjunction; +import org.dllearner.core.dl.MultiDisjunction; +import org.dllearner.core.dl.Negation; +import org.dllearner.core.dl.Quantification; +import org.dllearner.core.dl.Top; import org.dllearner.utilities.ConceptComparator; /** Modified: trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/PsiUp.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/PsiUp.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/hybridgp/PsiUp.java 2007-09-25 14:32:25 UTC (rev 152) @@ -9,18 +9,18 @@ import org.dllearner.LearningProblem; import org.dllearner.algorithms.refinement.RefinementOperator; -import org.dllearner.dl.All; -import org.dllearner.dl.AtomicConcept; -import org.dllearner.dl.AtomicRole; -import org.dllearner.dl.Bottom; -import org.dllearner.dl.Concept; -import org.dllearner.dl.Exists; -import org.dllearner.dl.MultiConjunction; -import org.dllearner.dl.MultiDisjunction; -import org.dllearner.dl.Negation; -import org.dllearner.dl.Quantification; -import org.dllearner.dl.Top; -import org.dllearner.reasoning.ReasoningService; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.dl.All; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Bottom; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Exists; +import org.dllearner.core.dl.MultiConjunction; +import org.dllearner.core.dl.MultiDisjunction; +import org.dllearner.core.dl.Negation; +import org.dllearner.core.dl.Quantification; +import org.dllearner.core.dl.Top; import org.dllearner.utilities.ConceptComparator; public class PsiUp implements RefinementOperator { Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/Node.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/Node.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/Node.java 2007-09-25 14:32:25 UTC (rev 152) @@ -3,7 +3,7 @@ import java.util.Set; import java.util.TreeSet; -import org.dllearner.dl.Concept; +import org.dllearner.core.dl.Concept; import org.dllearner.utilities.ConceptComparator; public class Node { Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/ROLearner.java 2007-09-25 14:32:25 UTC (rev 152) @@ -14,10 +14,10 @@ import org.dllearner.Main; import org.dllearner.Score; import org.dllearner.algorithms.LearningAlgorithm; -import org.dllearner.dl.Concept; -import org.dllearner.dl.MultiConjunction; -import org.dllearner.dl.MultiDisjunction; -import org.dllearner.dl.Top; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.MultiConjunction; +import org.dllearner.core.dl.MultiDisjunction; +import org.dllearner.core.dl.Top; import org.dllearner.utilities.ConceptComparator; import org.dllearner.utilities.ConceptTransformation; import org.dllearner.utilities.Helper; Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/RefinementOperator.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/RefinementOperator.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/RefinementOperator.java 2007-09-25 14:32:25 UTC (rev 152) @@ -2,8 +2,9 @@ import java.util.List; import java.util.Set; -import org.dllearner.dl.Concept; +import org.dllearner.core.dl.Concept; + public interface RefinementOperator { public Set<Concept> refine(Concept concept); Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/RhoDown.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/RhoDown.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/RhoDown.java 2007-09-25 14:32:25 UTC (rev 152) @@ -31,21 +31,21 @@ import org.dllearner.Config; import org.dllearner.LearningProblem; -import org.dllearner.dl.All; -import org.dllearner.dl.AtomicConcept; -import org.dllearner.dl.AtomicRole; -import org.dllearner.dl.Bottom; -import org.dllearner.dl.Concept; -import org.dllearner.dl.Conjunction; -import org.dllearner.dl.Disjunction; -import org.dllearner.dl.Exists; -import org.dllearner.dl.MultiConjunction; -import org.dllearner.dl.MultiDisjunction; -import org.dllearner.dl.Negation; -import org.dllearner.dl.Quantification; -import org.dllearner.dl.Role; -import org.dllearner.dl.Top; -import org.dllearner.reasoning.ReasoningService; +import org.dllearner.core.ReasoningService; +import org.dllearner.core.dl.All; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Bottom; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Conjunction; +import org.dllearner.core.dl.Disjunction; +import org.dllearner.core.dl.Exists; +import org.dllearner.core.dl.MultiConjunction; +import org.dllearner.core.dl.MultiDisjunction; +import org.dllearner.core.dl.Negation; +import org.dllearner.core.dl.Quantification; +import org.dllearner.core.dl.Role; +import org.dllearner.core.dl.Top; import org.dllearner.utilities.ConceptComparator; import org.dllearner.utilities.ConceptTransformation; Modified: trunk/src/dl-learner/org/dllearner/algorithms/refinement/SearchSpace.java =================================================================== --- trunk/src/dl-learner/org/dllearner/algorithms/refinement/SearchSpace.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/algorithms/refinement/SearchSpace.java 2007-09-25 14:32:25 UTC (rev 152) @@ -1,6 +1,6 @@ package org.dllearner.algorithms.refinement; -import org.dllearner.dl.Concept; +import org.dllearner.core.dl.Concept; /** * Soll hauptsächlich dazu dienen zu testen, ob ein Konzept im Modified: trunk/src/dl-learner/org/dllearner/core/Component.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/Component.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/core/Component.java 2007-09-25 14:32:25 UTC (rev 152) @@ -44,6 +44,11 @@ } /** + * Method to be called after the component has been configured. + */ + public abstract void init(); + + /** * Applies a configuration option to this component. * * @param entry A configuration entry. Modified: trunk/src/dl-learner/org/dllearner/core/ComponentManager.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/core/ComponentManager.java 2007-09-25 14:32:25 UTC (rev 152) @@ -26,9 +26,16 @@ import java.io.InputStreamReader; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; +import java.util.Set; +import org.dllearner.kb.OWLFile; + + /** * Central manager class for DL-Learner. * @@ -41,8 +48,70 @@ private static ComponentManager cm = new ComponentManager(); + private List<Class<? extends Component>> components; + + // list of all configuration options of all components + private Map<Class<? extends Component>,List<ConfigOption<?>>> componentOptions; + private Map<Class<? extends Component>,Map<String,ConfigOption<?>>> componentOptionsByName; + + @SuppressWarnings({"unchecked"}) private ComponentManager() { + // read in components file + List<String> componentsString = readComponentsFile(); + // component list + components = new LinkedList<Class<? extends Component>>(); + + // create classes from strings + for(String componentString : componentsString) { + try { + Class<? extends Component> component = Class.forName(componentString).asSubclass(Component.class); + components.add(component); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + // read in all configuration options + componentOptions = new HashMap<Class<? extends Component>,List<ConfigOption<?>>>(); + componentOptionsByName = new HashMap<Class<? extends Component>,Map<String,ConfigOption<?>>>(); + + for(Class<? extends Component> component : components) { + // unfortunately Java does not seem to offer a way to call + // a static method given a class object directly, so we have + // to use reflection + try { + Method createConfig = component.getMethod("createConfigOptions"); + List<ConfigOption<?>> options = (List<ConfigOption<?>>) createConfig.invoke(null); + + componentOptions.put(component, options); + + Map<String,ConfigOption<?>> byName = new HashMap<String,ConfigOption<?>>(); + for(ConfigOption<?> option : options) + byName.put(option.getName(), option); + componentOptionsByName.put(component, byName); + + // componentOptionsByName.put(key, value) + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InvocationTargetException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (NoSuchMethodException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + } public static ComponentManager getInstance() { @@ -72,6 +141,42 @@ return componentStrings; } + /** + * Convenience method for testing purposes. If you know that the type of the + * value is correct, it is preferable to create a ConfigEntry object and apply + * it to the component (no type checking necessary). + * @param component + * @param optionName + * @param value + */ + public <T> void applyConfigEntry(Component component, String optionName, T value) { + // first we look whether the component is registered + if(components.contains(component)) { + + // look for a config option with the specified name + ConfigOption<?> option = (ConfigOption<?>) componentOptionsByName.get(component).get(optionName); + if(option!=null) { + // check whether the given object has the correct type + if(!option.checkType(value)) { + System.out.println("Warning: value " + value + " is not valid for option " + optionName + " in component " + component); + return; + } + + // we have checked the type, hence it should now be safe to typecast and + // create a ConfigEntry object + try { + @SuppressWarnings({"unchecked"}) + ConfigEntry<T> entry = new ConfigEntry<T>((ConfigOption<T>) option, value); + component.applyConfigEntry(entry); + } catch (InvalidConfigOptionValueException e) { + System.out.println("Warning: value " + value + " is not valid for option " + optionName + " in component " + component); + } + } else + System.out.println("Warning: undefined option " + optionName + " in component " + component); + } else + System.out.println("Warning: unregistered component " + component); + } + public KnowledgeSource knowledgeSource(Class<? extends KnowledgeSource> source) { try { Constructor<? extends KnowledgeSource> constructor = source.getConstructor(); @@ -99,9 +204,37 @@ return null; } - public LearningProblemNew learningProblem(Class<LearningProblemNew> lp, ReasonerComponent reasoner) { + public <T extends ReasonerComponent> ReasoningService reasoningService(Class<T> reasoner, Set<KnowledgeSource> sources) { try { - Constructor<LearningProblemNew> constructor = lp.getConstructor(ReasonerComponent.class); + Constructor<T> constructor = reasoner.getConstructor(ReasonerComponent.class); + T reasonerInstance = constructor.newInstance(sources); + return new ReasoningService(reasonerInstance); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InvocationTargetException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (NoSuchMethodException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return null; + } + + public <T extends LearningProblemNew> T learningProblem(Class<T> lp, ReasonerComponent reasoner) { + try { + Constructor<T> constructor = lp.getConstructor(ReasonerComponent.class); return constructor.newInstance(reasoner); } catch (SecurityException e) { // TODO Auto-generated catch block Modified: trunk/src/dl-learner/org/dllearner/core/ComponentTest.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ComponentTest.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/core/ComponentTest.java 2007-09-25 14:32:25 UTC (rev 152) @@ -39,11 +39,12 @@ // create knowledge source KnowledgeSource source = cm.knowledgeSource(OWLFile.class); + cm.applyConfigEntry(source, "url", "father.owl"); // ... to be continued ... - ReasonerComponent reasoner = new ReasonerComponent(); - ComponentManager.getInstance().learningProblem(LearningProblemNew.class, reasoner); + // ReasonerComponent reasoner = new ReasonerComponent(); + // ComponentManager.getInstance().learningProblem(LearningProblemNew.class, reasoner); } Modified: trunk/src/dl-learner/org/dllearner/core/ConfigOption.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ConfigOption.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/core/ConfigOption.java 2007-09-25 14:32:25 UTC (rev 152) @@ -38,6 +38,16 @@ return name; } + /** + * Checks whether the object has the correct type to be used as + * a value for this option (this method is necessary, because + * generic information is erased at runtime in Java). + * + * @param object The object to check. + * @return + */ + public abstract boolean checkType(Object object); + public abstract boolean isValidValue(T value); } Modified: trunk/src/dl-learner/org/dllearner/core/IntegerConfigOption.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/IntegerConfigOption.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/core/IntegerConfigOption.java 2007-09-25 14:32:25 UTC (rev 152) @@ -91,6 +91,18 @@ this.upperLimit = upperLimit; } + /* (non-Javadoc) + * @see org.dllearner.core.ConfigOption#checkType(java.lang.Object) + */ + @Override + public boolean checkType(Object object) { + return (object instanceof Integer); + } + + + + + } Copied: trunk/src/dl-learner/org/dllearner/core/Reasoner.java (from rev 150, trunk/src/dl-learner/org/dllearner/reasoning/Reasoner.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/core/Reasoner.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/core/Reasoner.java 2007-09-25 14:32:25 UTC (rev 152) @@ -0,0 +1,92 @@ +/** + * Copyright (C) 2007, 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.core; + +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; + +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Individual; +import org.dllearner.reasoning.ReasonerType; +import org.dllearner.reasoning.RoleHierarchy; +import org.dllearner.reasoning.SubsumptionHierarchy; +import org.dllearner.utilities.SortedSetTuple; + +/** + * Reasoner Interface. Lists all available reasoning methods. + * + * @author Jens Lehmann + * + */ +public interface Reasoner { + + public ReasonerType getReasonerType(); + + // Methode, die Subsumptionhierarchie initialisiert (sollte nur einmal + // pro erstelltem ReasoningService bzw. Reasoner aufgerufen werden) + // => erstellt auch vereinfachte Sichten auf Subsumptionhierarchie + // (siehe einfacher Traversal in Diplomarbeit) + public void prepareSubsumptionHierarchy(); + public void prepareRoleHierarchy() throws ReasoningMethodUnsupportedException; + + public boolean subsumes(Concept superConcept, Concept subConcept) throws ReasoningMethodUnsupportedException; + + // mehrere subsumption checks - spart bei DIG Anfragen (nur die zweite Methode wird gebraucht) + public Set<Concept> subsumes(Concept superConcept, Set<Concept> subConcepts) throws ReasoningMethodUnsupportedException; + public Set<Concept> subsumes(Set<Concept> superConcepts, Concept subConcept) throws ReasoningMethodUnsupportedException; + + // liefert eine Menge paarweise nicht äquivalenter Konzepte zurück, die über dem Konzept in der + // Subsumption-Hierarchie stehen + // Methoden veraltet, da das jetzt von der SubsumptionHierarchy-Klasse geregelt wird + // public SortedSet<Concept> getMoreGeneralConcepts(Concept concept) throws ReasoningMethodUnsupportedException; + // public SortedSet<Concept> getMoreSpecialConcepts(Concept concept) throws ReasoningMethodUnsupportedException; + + public SubsumptionHierarchy getSubsumptionHierarchy() throws ReasoningMethodUnsupportedException; + + public RoleHierarchy getRoleHierarchy() throws ReasoningMethodUnsupportedException; + + public SortedSet<Individual> retrieval(Concept concept) throws ReasoningMethodUnsupportedException; + + public Map<Individual, SortedSet<Individual>> getRoleMembers(AtomicRole atomicRole) throws ReasoningMethodUnsupportedException; + + public boolean instanceCheck(Concept concept, Individual individual) throws ReasoningMethodUnsupportedException; + + // mehrere instance checks für ein Konzept - spart bei DIG Anfragen + public Set<Individual> instanceCheck(Concept concept, Set<Individual> individuals) throws ReasoningMethodUnsupportedException; + + public SortedSetTuple<Individual> doubleRetrieval(Concept concept) throws ReasoningMethodUnsupportedException; + + public SortedSetTuple<Individual> doubleRetrieval(Concept concept, Concept adc) throws ReasoningMethodUnsupportedException; + + public boolean isSatisfiable() throws ReasoningMethodUnsupportedException; + + // alle Konzepte, die i als Instanz haben + public Set<AtomicConcept> getConcepts(Individual i) throws ReasoningMethodUnsupportedException; + + public Set<AtomicConcept> getAtomicConcepts(); + + public Set<AtomicRole> getAtomicRoles(); + + public SortedSet<Individual> getIndividuals(); +} Modified: trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2007-09-25 09:30:13 UTC (rev 151) +++ trunk/src/dl-learner/org/dllearner/core/ReasonerComponent.java 2007-09-25 14:32:25 UTC (rev 152) @@ -19,19 +19,104 @@ */ package org.dllearner.core; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; + +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Individual; +import org.dllearner.reasoning.RoleHierarchy; +import org.dllearner.reasoning.SubsumptionHierarchy; +import org.dllearner.utilities.SortedSetTuple; + /** * @author Jens Lehmann - * + * */ -public class ReasonerComponent extends Component { +public abstract class ReasonerComponent extends Component implements Reasoner { - /* (non-Javadoc) - * @see org.dllearner.core.Component#applyConfigEntry(org.dllearner.core.ConfigEntry) - */ - @Override - public <T> void applyConfigEntry(ConfigEntry<T> entry) { - // TODO Auto-generated method stub + public boolean subsumes(Concept superConcept, Concept subConcept) + throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + public Set<Concept> subsumes(Concept superConcept, Set<Concept> subConcepts) + throws ReasoningMethodUnsupportedException { + Set<Concept> returnSet = new HashSet<Concept>(); + for (Concept subConcept : subConcepts) { + if (subsumes(superConcept, subConcept)) + returnSet.add(subConcept); + } + return returnSet; } + public Set<Concept> subsumes(Set<Concept> superConcepts, Concept subConcept) + throws ReasoningMethodUnsupportedException { + Set<Concept> returnSet = new HashSet<Concept>(); + for (Concept superConcept : superConcepts) { + if (subsumes(superConcept, subConcept)) + returnSet.add(superConcept); + } + return returnSet; + } + + public SortedSet<Individual> retrieval(Concept concept) + throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + public Map<Individual, SortedSet<Individual>> getRoleMembers(AtomicRole atomicRole) + throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + public boolean instanceCheck(Concept concept, Individual individual) + throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + public Set<Individual> instanceCheck(Concept concept, Set<Individual> individuals) + throws ReasoningMethodUnsupportedException { + Set<Individual> returnSet = new HashSet<Individual>(); + for (Individual individual : individuals) { + if (instanceCheck(concept, individual)) + returnSet.add(individual); + } + return returnSet; + } + + public SortedSetTuple<Individual> doubleRetrieval(Concept concept) + throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + public SortedSetTuple<Individual> doubleRetrieval(Concept concept, Concept adc) + throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + public boolean isSatisfiable() throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + public SubsumptionHierarchy getSubsumptionHierarchy() + throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + public void prepareRoleHierarchy() throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + public RoleHierarchy getRoleHierarchy() throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + + public Set<AtomicConcept> getConcepts(Individual i) throws ReasoningMethodUnsupportedException { + throw new ReasoningMethodUnsupportedException(); + } + } Copied: trunk/src/dl-learner/org/dllearner/core/ReasoningMethodUnsupportedException.java (from rev 150, trunk/src/dl-learner/org/dllearner/reasoning/ReasoningMethodUnsupportedException.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasoningMethodUnsupportedException.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/core/ReasoningMethodUnsupportedException.java 2007-09-25 14:32:25 UTC (rev 152) @@ -0,0 +1,7 @@ +package org.dllearner.core; + +public class ReasoningMethodUnsupportedException extends Exception { + + private static final long serialVersionUID = -7045236443032695475L; + +} Copied: trunk/src/dl-learner/org/dllearner/core/ReasoningService.java (from rev 150, trunk/src/dl-learner/org/dllearner/reasoning/ReasoningService.java) =================================================================== --- trunk/src/dl-learner/org/dllearner/core/ReasoningService.java (rev 0) +++ trunk/src/dl-learner/org/dllearner/core/ReasoningService.java 2007-09-25 14:32:25 UTC (rev 152) @@ -0,0 +1,493 @@ +/** + * Copyright (C) 2007, 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.core; + +import java.io.File; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.dllearner.OntologyFileFormat; +import org.dllearner.core.dl.AtomicConcept; +import org.dllearner.core.dl.AtomicRole; +import org.dllearner.core.dl.Concept; +import org.dllearner.core.dl.Individual; +import org.dllearner.reasoning.DIGReasoner; +import org.dllearner.reasoning.KAON2Reasoner; +import org.dllearner.reasoning.ReasonerType; +import org.dllearner.reasoning.RoleHierarchy; +import org.dllearner.reasoning.SubsumptionHierarchy; +import org.dllearner.utilities.SortedSetTuple; + +/** + * The reasoning service is the interface to the used reasoner. Basically, + * it delegates all incoming reasoner request to the <code>Reasoner</code> + * object which has been specified in the constructor. However, it calculates + * some additional statistics about the time the reasoner needs to answer + * the query. + * + * @author Jens Lehmann + * + */ +public class ReasoningService { + + // statistische Daten + private long instanceCheckReasoningTimeNs = 0; + private int nrOfInstanceChecks = 0; + private int nrOfMultiInstanceChecks = 0; + private long retrievalReasoningTimeNs = 0; + private int nrOfRetrievals = 0; + private long subsumptionReasoningTimeNs = 0; + private int nrOfSubsumptionChecks = 0; + private int nrOfMultiSubsumptionChecks = 0; + // private long subsumptionHierarchyTimeNs = 0; + private int nrOfSubsumptionHierarchyQueries = 0; + + // restliche Reasoning-Zeit + private long otherReasoningTimeNs = 0; + + // Zeit für alle Reasoningaufgabe (normalerweise länger als nur + // obige Sachen) + private long overallReasoningTimeNs = 0; + + // temporäre Variablen (ausgelagert wg. Performance und Vereinfachung) + private long reasoningStartTimeTmp; + private long reasoningDurationTmp; + + // Listenansicht + private List<AtomicConcept> atomicConceptsList; + private List<AtomicRole> atomicRolesList; + + // private SortedSet<Concept> retrievalsSet = new TreeSet<Concept>(new ConceptComparator()); + + // Caching f�r allgemeinere/speziellere atomare Konzepte => wird innerhalb der Reasoner gemacht + // private Map<Concept,Set<Concept>> moreGeneralConcepts = new HashMap<Concept,Set<Concept>>(); + // private Map<Concept,Set<Concept>> moreSpecialConcepts = new HashMap<Concept,Set<Concept>>(); + + private Reasoner reasoner; + + // Beachte: wenn Wissensbasis modifiziert wird, muss ein neues + // Reasoner-Objekt + // angelegt werden (da Wissensbasis sofort entsprechend verwendetem + // Reasoning-Typ + // umgewandelt wird) + public ReasoningService(Reasoner reasoner) { + this.reasoner = reasoner; + + // Listenansicht + atomicConceptsList = new LinkedList<AtomicConcept>(getAtomicConcepts()); + atomicRolesList = new LinkedList<AtomicRole>(getAtomicRoles()); + + resetStatistics(); + } + + // zurücksetzen aller Statistiken (wenn z.B. vorher ein Satisfiability Check gemacht wird, + // der allerdings nicht zum eigentlichen Algorithmus gehört) + public void resetStatistics() { + instanceCheckReasoningTimeNs = 0; + nrOfInstanceChecks = 0; + retrievalReasoningTimeNs = 0; + nrOfRetrievals = 0; + subsumptionReasoningTimeNs = 0; + nrOfSubsumptionChecks = 0; + // subsumptionHierarchyTimeNs = 0; + nrOfSubsumptionHierarchyQueries = 0; + otherReasoningTimeNs = 0; + overallReasoningTimeNs = 0; + } + + public SortedSetTuple<Individual> doubleRetrieval(Concept concept) { + reasoningStartTimeTmp = System.nanoTime(); + SortedSetTuple<Individual> result; + try { + result = reasoner.doubleRetrieval(concept); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + otherReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + public SortedSetTuple<Individual> doubleRetrieval(Concept concept, Concept adc) { + reasoningStartTimeTmp = System.nanoTime(); + SortedSetTuple<Individual> result; + try { + result = reasoner.doubleRetrieval(concept, adc); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + otherReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + // nachher wieder entfernen + // public static List<Concept> retrievals = new LinkedList<Concept>(); + + public SortedSet<Individual> retrieval(Concept concept) { + // Test, ob tatsächlich keine doppelten Retrievals ausgeführt werden + // retrievals.add(concept); + + reasoningStartTimeTmp = System.nanoTime(); + SortedSet<Individual> result; + try { + result = reasoner.retrieval(concept); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + nrOfRetrievals++; + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + retrievalReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + public boolean instanceCheck(Concept concept, Individual s) { + reasoningStartTimeTmp = System.nanoTime(); + boolean result = false; + try { + result = reasoner.instanceCheck(concept, s); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + } + nrOfInstanceChecks++; + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + instanceCheckReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + public Set<Individual> instanceCheck(Concept concept, Set<Individual> s) { + reasoningStartTimeTmp = System.nanoTime(); + Set<Individual> result = null; + try { + result = reasoner.instanceCheck(concept, s); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + } + nrOfInstanceChecks+=s.size(); + nrOfMultiInstanceChecks++; + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + instanceCheckReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + // c1 subsummiert c2 + public boolean subsumes(Concept superConcept, Concept subConcept) { + reasoningStartTimeTmp = System.nanoTime(); + boolean result = false; + try { + result = reasoner.subsumes(superConcept, subConcept); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + } + nrOfSubsumptionChecks++; + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + subsumptionReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + public Set<Concept> subsumes(Set<Concept> superConcepts, Concept subConcept) { + reasoningStartTimeTmp = System.nanoTime(); + Set<Concept> result = null; + try { + result = reasoner.subsumes(superConcepts, subConcept); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + } + nrOfSubsumptionChecks += superConcepts.size(); + nrOfMultiSubsumptionChecks++; + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + subsumptionReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + /* + // Problem: wie behandle ich Top und Bottom? + // TODO: schauen wie das in KAON2 gemacht wird + public SortedSet<Concept> getMoreGeneralConcepts(Concept concept) { + if(Config.useHierarchyReasonerBenchmarks) + reasoningStartTimeTmp = System.nanoTime(); + SortedSet<Concept> result; + try { + result = reasoner.getMoreGeneralConcepts(concept); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + if(Config.useHierarchyReasonerBenchmarks) { + nrOfSubsumptionHierarchyQueries++; + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + subsumptionHierarchyTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + } + return result; + } + + public SortedSet<Concept> getMoreSpecialConcepts(Concept concept) { + if(Config.useHierarchyReasonerBenchmarks) + reasoningStartTimeTmp = System.nanoTime(); + SortedSet<Concept> result; + try { + result = reasoner.getMoreSpecialConcepts(concept); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + if(Config.useHierarchyReasonerBenchmarks) { + nrOfSubsumptionHierarchyQueries++; + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + subsumptionHierarchyTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + } + return result; + } + */ + + /** + * Returns more general concepts in the subsumption hierarchy. + * + * @param concept Atomic concept, top, or bottom. + * @return A set of more general concepts. + */ + public SortedSet<Concept> getMoreGeneralConcepts(Concept concept) { + return getSubsumptionHierarchy().getMoreGeneralConcepts(concept); + } + + /** + * Returns more special concepts in the subsumption hierarchy. + * + * @param concept Atomic concept, top, or bottom. + * @return A set of more special concepts. + */ + public SortedSet<Concept> getMoreSpecialConcepts(Concept concept) { + return getSubsumptionHierarchy().getMoreSpecialConcepts(concept); + } + + /** + * Returns more general concepts in the subsumption hierarchy. + * + * @see RoleHierarchy#getMoreGeneralRoles(AtomicRole) + * @param role Atomic concept, top, or bottom. + * @return A set of more general concepts. + */ + public SortedSet<AtomicRole> getMoreGeneralRoles(AtomicRole role) { + return getRoleHierarchy().getMoreGeneralRoles(role); + } + + /** + * Returns more special concepts in the subsumption hierarchy. + * + * @see RoleHierarchy#getMoreSpecialRoles(AtomicRole) + * @param role Atomic concept, top, or bottom. + * @return A set of more special concepts. + */ + public SortedSet<AtomicRole> getMoreSpecialRoles(AtomicRole role) { + return getRoleHierarchy().getMoreSpecialRoles(role); + } + + /** + * @see RoleHierarchy#getMostGeneralRoles() + * @return The most general roles. + */ + public TreeSet<AtomicRole> getMostGeneralRoles() { + return getRoleHierarchy().getMostGeneralRoles(); + } + + /** + * @see RoleHierarchy#getMostSpecialRoles() + * @return The most special roles. + */ + public TreeSet<AtomicRole> getMostSpecialRoles() { + return getRoleHierarchy().getMostSpecialRoles(); + } + + public SubsumptionHierarchy getSubsumptionHierarchy() { + try { + nrOfSubsumptionHierarchyQueries++; + return reasoner.getSubsumptionHierarchy(); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + } + + public RoleHierarchy getRoleHierarchy() { + try { + return reasoner.getRoleHierarchy(); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + } + + public boolean isSatisfiable() { + reasoningStartTimeTmp = System.nanoTime(); + boolean result; + try { + result = reasoner.isSatisfiable(); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return false; + } + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + otherReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + // gibt zu einer Rolle alle Elemente zur�ck + // private, da es keine Standardoperation ist + public Map<Individual, SortedSet<Individual>> getRoleMembers(AtomicRole atomicRole) { + reasoningStartTimeTmp = System.nanoTime(); + Map<Individual, SortedSet<Individual>> result; + try { + result = reasoner.getRoleMembers(atomicRole); + } catch (ReasoningMethodUnsupportedException e) { + handleExceptions(e); + return null; + } + reasoningDurationTmp = System.nanoTime() - reasoningStartTimeTmp; + otherReasoningTimeNs += reasoningDurationTmp; + overallReasoningTimeNs += reasoningDurationTmp; + return result; + } + + // speichern einer Ontolgie wird speziell behandelt, da kein Reasoning + public void saveOntology(File file, OntologyFileFormat format) { + if (getReasonerType() == ReasonerType.KAON2) { + ((KAON2Reasoner) reasoner).saveOntology(file, format); + } else if (getReasonerType() == ReasonerType.DIG) { + // DIG erzeugt momentan auch nur einen KAON2-Reasoner und + // exportiert dann mit der obigen Funktion + ((DIGReasoner) reasoner).saveOntology(file, format); + } + } + + public Set<AtomicConcept> getAtomicConcepts() { + return reasoner.getAtomicConcepts(); + } + + public Set<AtomicRole> getAtomicRoles() { + return reasoner.getAtomicRoles(); + } + + public SortedSet<Individual> getIndividuals() { + return reasoner.getIndividuals(); + } + + public ReasonerType getReasonerType() { + return reasoner.getReasonerType(); + } + + public List<AtomicConcept> getAtomicConceptsList() { + return atomicConceptsList; + } + + public List<AtomicRole> getAtomicRolesList() { + return atomicRolesList; + } + + public long getInstanceCheckReasoningTimeNs() { + return instanceCheckReasoningTimeNs; + } + + public long getRetrievalReasoningTimeNs() { + return retrievalReasoningTimeNs; + } + + public int getNrOfInstanceChecks() { + return nrOfInstanceChecks; + } + + public int getNrOfRetrievals() { + return nrOfRetrievals; + } + + public int getNrOfSubsumptionChecks() { + return nrOfSubsumptionChecks; + } + + public long getSubsumptionReasoningTimeNs() { + return subsumptionReasoningTimeNs; + } + + /* + public long getSubsumptionHierarchyTimeNs() { + return subsumptionHierarchyTimeNs; + } + */ + public int getNrOfSubsumptionHierarchyQueries() { + return nrOfSubsumptionHierarchyQueries; + } + + + public long getOver... [truncated message content] |