From: <lor...@us...> - 2011-11-16 12:55:55
|
Revision: 3407 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3407&view=rev Author: lorenz_b Date: 2011-11-16 12:55:46 +0000 (Wed, 16 Nov 2011) Log Message: ----------- Small fix in algorithm. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.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-11-16 10:03:47 UTC (rev 3406) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java 2011-11-16 12:55:46 UTC (rev 3407) @@ -19,7 +19,9 @@ package org.dllearner.algorithms; +import java.net.URL; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -186,6 +188,14 @@ Set<NamedClass> completeDisjointclasses = new TreeSet<NamedClass>(allClasses); completeDisjointclasses.removeAll(class2Count.keySet()); + //we remove the asserted sublcasses here + if(reasoner.isPrepared()){ + completeDisjointclasses.removeAll(reasoner.getClassHierarchy().getSubClasses(classToDescribe)); + } else { + completeDisjointclasses.removeAll(reasoner.getSubClasses(classToDescribe)); + } + + EvaluatedDescription evalDesc; //firstly, create disjoint classexpressions which not occur and give score of 1 if(reasoner.isPrepared()){ @@ -208,12 +218,13 @@ } public static void main(String[] args) throws Exception{ - DisjointClassesLearner l = new DisjointClassesLearner(new SparqlEndpointKS(SparqlEndpoint.getEndpointDBpedia())); - l.setClassToDescribe(new NamedClass("http://dbpedia.org/ontology/SoccerClub")); + DisjointClassesLearner l = new DisjointClassesLearner(new SparqlEndpointKS(new SparqlEndpoint(new URL("http://dbpedia.aksw.org:8902/sparql"), + Collections.singletonList("http://dbpedia.org"), Collections.<String>emptyList()))); + l.setClassToDescribe(new NamedClass("http://dbpedia.org/ontology/ChemicalSubstance")); l.init(); l.start(); - for(EvaluatedAxiom e : l.getCurrentlyBestEvaluatedAxioms(50)){ + for(EvaluatedAxiom e : l.getCurrentlyBestEvaluatedAxioms(Integer.MAX_VALUE, 0.75)){ System.out.println(e); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2011-11-23 13:16:51
|
Revision: 3431 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3431&view=rev Author: lorenz_b Date: 2011-11-23 13:16:44 +0000 (Wed, 23 Nov 2011) Log Message: ----------- Added option to return only the most general classes in the disjointness axioms. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.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-11-23 10:04:53 UTC (rev 3430) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java 2011-11-23 13:16:44 UTC (rev 3431) @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -38,6 +39,7 @@ import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.NamedClassEditor; import org.dllearner.core.owl.Axiom; +import org.dllearner.core.owl.ClassHierarchy; import org.dllearner.core.owl.Description; import org.dllearner.core.owl.DisjointClassesAxiom; import org.dllearner.core.owl.NamedClass; @@ -71,6 +73,9 @@ private List<EvaluatedDescription> currentlyBestEvaluatedDescriptions; private SortedSet<Description> subClasses; + private boolean useWordNetDistance = false; + private boolean suggestMostGeneralClasses = true; + public DisjointClassesLearner(SparqlEndpointKS ks){ this.ks = ks; } @@ -83,6 +88,22 @@ this.classToDescribe = classToDescribe; } + public boolean isUseWordNetDistance() { + return useWordNetDistance; + } + + public void setUseWordNetDistance(boolean useWordNetDistance) { + this.useWordNetDistance = useWordNetDistance; + } + + public boolean isSuggestMostGeneralClasses() { + return suggestMostGeneralClasses; + } + + public void setSuggestMostGeneralClasses(boolean suggestMostGeneralClasses) { + this.suggestMostGeneralClasses = suggestMostGeneralClasses; + } + @Override public void start() { logger.info("Start learning..."); @@ -200,6 +221,11 @@ Set<NamedClass> completeDisjointclasses = new TreeSet<NamedClass>(allClasses); completeDisjointclasses.removeAll(class2Count.keySet()); + //drop all classes which have a super class in this set + if(suggestMostGeneralClasses && reasoner.isPrepared()){ + keepMostGeneralClasses(completeDisjointclasses); + } + //we remove the asserted subclasses here completeDisjointclasses.removeAll(subClasses); for(Description subClass : subClasses){ @@ -221,9 +247,6 @@ for(Entry<NamedClass, Integer> entry : sortByValues(class2Count)){ // evalDesc = new EvaluatedDescription(entry.getKey(), // new AxiomScore(1 - (entry.getValue() / (double)all))); - System.out.println(entry.getKey()); - System.out.println(all); - System.out.println(entry.getValue()); double[] confidenceInterval = Heuristics.getConfidenceInterval95Wald(all, entry.getValue()); double accuracy = (confidenceInterval[0] + confidenceInterval[1]) / 2; evalDesc = new EvaluatedDescription(entry.getKey(), @@ -235,6 +258,13 @@ return evalDescs; } + private void keepMostGeneralClasses(Set<NamedClass> classes){ + ClassHierarchy h = reasoner.getClassHierarchy(); + for(NamedClass nc : new HashSet<NamedClass>(classes)){ + classes.removeAll(h.getSubClasses(nc)); + } + } + public static void main(String[] args) throws Exception{ DisjointClassesLearner l = new DisjointClassesLearner(new SparqlEndpointKS(new SparqlEndpoint(new URL("http://dbpedia.aksw.org:8902/sparql"), Collections.singletonList("http://dbpedia.org"), Collections.<String>emptyList()))); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2011-12-28 11:21:54
|
Revision: 3516 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3516&view=rev Author: lorenz_b Date: 2011-12-28 11:21:46 +0000 (Wed, 28 Dec 2011) Log Message: ----------- Some small changes to avoid problems with anonymous classes when running on local model. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.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-12-28 11:00:47 UTC (rev 3515) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java 2011-12-28 11:21:46 UTC (rev 3516) @@ -60,6 +60,7 @@ import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; +import com.hp.hpl.jena.rdf.model.Resource; /** * Learns disjoint classes using SPARQL queries. @@ -143,7 +144,7 @@ subClasses.add(new NamedClass(sub.getURI())); } } - for(OntClass sup : cls.listSuperClasses().toSet()){System.out.println(cls.listSuperClasses().toSet()); + for(OntClass sup : cls.listSuperClasses().toSet()){ if(!sup.isAnon()){ subClasses.add(new NamedClass(sup.getURI())); } @@ -151,7 +152,7 @@ } if(ks.supportsSPARQL_1_1()){ - runSPARQL1_0_Mode(); + runSPARQL1_1_Mode(); } else { runSPARQL1_0_Mode(); } @@ -226,9 +227,11 @@ ResultSet rs = executeSelectQuery(query); QuerySolution qs; repeat = false; + Resource res; while(rs.hasNext()){ - qs = rs.next();System.out.println(qs); - if(qs.getResource("type") != null){ + qs = rs.next(); + res = qs.getResource("type"); + if(res != null && !res.isAnon()){ cls = new NamedClass(qs.getResource("type").getURI()); int newCnt = qs.getLiteral("count").getInt(); oldCnt = result.get(cls); @@ -302,10 +305,9 @@ // Integer all = class2Count.get(classToDescribe); class2Count.remove(classToDescribe); - //get complete disjoint classes Set<NamedClass> completeDisjointclasses = new TreeSet<NamedClass>(allClasses); - completeDisjointclasses.removeAll(class2Count.keySet());System.out.println(completeDisjointclasses); + completeDisjointclasses.removeAll(class2Count.keySet()); // we remove the asserted subclasses here completeDisjointclasses.removeAll(subClasses); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lor...@us...> - 2013-10-05 09:10:04
|
Revision: 4118 http://sourceforge.net/p/dl-learner/code/4118 Author: lorenz_b Date: 2013-10-05 09:10:00 +0000 (Sat, 05 Oct 2013) Log Message: ----------- Refined disjointness learner. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java 2013-10-04 21:00:12 UTC (rev 4117) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java 2013-10-05 09:10:00 UTC (rev 4118) @@ -568,9 +568,7 @@ for (NamedClass clsA : classes) { for (NamedClass clsB : classes) { - if(!clsA.equals(clsB)){ - axioms.add(computeDisjointess(clsA, clsB)); - } + axioms.add(computeDisjointess(clsA, clsB)); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |