From: <lor...@us...> - 2011-08-18 09:22:22
|
Revision: 3067 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3067&view=rev Author: lorenz_b Date: 2011-08-18 09:22:16 +0000 (Thu, 18 Aug 2011) Log Message: ----------- Added axiom learning interface. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java trunk/components-core/src/main/java/org/dllearner/core/owl/DisjointClassesAxiom.java Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java 2011-08-18 08:55:11 UTC (rev 3066) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java 2011-08-18 09:22:16 UTC (rev 3067) @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -29,14 +30,18 @@ import java.util.SortedSet; import java.util.TreeSet; +import org.dllearner.core.AxiomLearningAlgorithm; import org.dllearner.core.ClassExpressionLearningAlgorithm; import org.dllearner.core.ComponentAnn; import org.dllearner.core.ComponentInitException; +import org.dllearner.core.EvaluatedAxiom; import org.dllearner.core.EvaluatedDescription; import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.IntegerEditor; import org.dllearner.core.config.NamedClassEditor; +import org.dllearner.core.owl.Axiom; import org.dllearner.core.owl.Description; +import org.dllearner.core.owl.DisjointClassesAxiom; import org.dllearner.core.owl.NamedClass; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.ExtendedQueryEngineHTTP; @@ -58,7 +63,7 @@ * */ @ComponentAnn(name = "disjoint classes learner", shortName = "cldisjoint", version = 0.1) -public class DisjointClassesLearner implements ClassExpressionLearningAlgorithm { +public class DisjointClassesLearner implements ClassExpressionLearningAlgorithm, AxiomLearningAlgorithm { private static final Logger logger = LoggerFactory.getLogger(DisjointClassesLearner.class); @@ -178,6 +183,30 @@ return currentlyBestEvaluatedDescriptions.subList(0, max); } + @Override + public List<Axiom> getCurrentlyBestAxioms(int nrOfAxioms) { + List<Axiom> bestAxioms = new ArrayList<Axiom>(); + + for(EvaluatedAxiom evAx : getCurrentlyBestEvaluatedAxioms(nrOfAxioms)){ + bestAxioms.add(evAx.getAxiom()); + } + + return bestAxioms; + } + + @Override + public List<EvaluatedAxiom> getCurrentlyBestEvaluatedAxioms(int nrOfAxioms) { + List<EvaluatedAxiom> axioms = new ArrayList<EvaluatedAxiom>(); + Set<Description> descriptions; + for(EvaluatedDescription ed : getCurrentlyBestEvaluatedDescriptions(nrOfAxioms)){ + descriptions = new HashSet<Description>(); + descriptions.add(classToDescribe); + descriptions.add(ed.getDescription()); + axioms.add(new EvaluatedAxiom(new DisjointClassesAxiom(descriptions), new AxiomScore(ed.getAccuracy()))); + } + return axioms; + } + private List<EvaluatedDescription> buildEvaluatedClassDescriptions(Map<NamedClass, Integer> class2Count, Set<NamedClass> allClasses){ List<EvaluatedDescription> evalDescs = new ArrayList<EvaluatedDescription>(); @@ -265,7 +294,5 @@ } - - } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java 2011-08-18 08:55:11 UTC (rev 3066) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java 2011-08-18 09:22:16 UTC (rev 3067) @@ -24,38 +24,33 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; +import java.util.Map.Entry; import java.util.SortedSet; import java.util.TreeSet; -import java.util.Map.Entry; -import org.dllearner.algorithms.properties.ObjectPropertyDomainAxiomLearner; +import org.dllearner.core.AxiomLearningAlgorithm; import org.dllearner.core.ClassExpressionLearningAlgorithm; import org.dllearner.core.ComponentAnn; import org.dllearner.core.ComponentInitException; import org.dllearner.core.EvaluatedAxiom; import org.dllearner.core.EvaluatedDescription; -import org.dllearner.core.Score; import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.IntegerEditor; import org.dllearner.core.config.NamedClassEditor; -import org.dllearner.core.config.ObjectPropertyEditor; +import org.dllearner.core.owl.Axiom; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; -import org.dllearner.core.owl.ObjectProperty; -import org.dllearner.core.owl.ObjectPropertyDomainAxiom; +import org.dllearner.core.owl.SubClassAxiom; import org.dllearner.core.owl.Thing; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; import org.dllearner.learningproblems.AxiomScore; -import org.dllearner.learningproblems.ClassScore; import org.dllearner.reasoning.SPARQLReasoner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; @@ -67,7 +62,7 @@ * */ @ComponentAnn(name = "simple subclass learner", shortName = "clsub", version = 0.1) -public class SimpleSubclassLearner implements ClassExpressionLearningAlgorithm { +public class SimpleSubclassLearner implements ClassExpressionLearningAlgorithm, AxiomLearningAlgorithm { private static final Logger logger = LoggerFactory.getLogger(SimpleSubclassLearner.class); @@ -104,8 +99,28 @@ int max = Math.min(currentlyBestEvaluatedDescriptions.size(), nrOfDescriptions); return currentlyBestEvaluatedDescriptions.subList(0, max); } + + @Override + public List<Axiom> getCurrentlyBestAxioms(int nrOfAxioms) { + List<Axiom> bestAxioms = new ArrayList<Axiom>(); + + for(EvaluatedAxiom evAx : getCurrentlyBestEvaluatedAxioms(nrOfAxioms)){ + bestAxioms.add(evAx.getAxiom()); + } + + return bestAxioms; + } @Override + public List<EvaluatedAxiom> getCurrentlyBestEvaluatedAxioms(int nrOfAxioms) { + List<EvaluatedAxiom> axioms = new ArrayList<EvaluatedAxiom>(); + for(EvaluatedDescription ed : getCurrentlyBestEvaluatedDescriptions(nrOfAxioms)){ + axioms.add(new EvaluatedAxiom(new SubClassAxiom(classToDescribe, ed.getDescription()), new AxiomScore(ed.getAccuracy()))); + } + return axioms; + } + + @Override public void start() { logger.info("Start learning..."); startTime = System.currentTimeMillis(); Modified: trunk/components-core/src/main/java/org/dllearner/core/owl/DisjointClassesAxiom.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/owl/DisjointClassesAxiom.java 2011-08-18 08:55:11 UTC (rev 3066) +++ trunk/components-core/src/main/java/org/dllearner/core/owl/DisjointClassesAxiom.java 2011-08-18 09:22:16 UTC (rev 3067) @@ -52,8 +52,7 @@ * @see org.dllearner.core.owl.KBElement#toString(java.lang.String, java.util.Map) */ public String toString(String baseURI, Map<String, String> prefixes) { - // TODO Auto-generated method stub - return null; + return "DisjointClasses()"; } public String toKBSyntaxString(String baseURI, Map<String, String> prefixes) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |