|
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.
|