From: <lor...@us...> - 2012-02-01 11:35:45
|
Revision: 3560 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3560&view=rev Author: lorenz_b Date: 2012-02-01 11:35:39 +0000 (Wed, 01 Feb 2012) Log Message: ----------- Added method to get all super classes. Add option to omit existing SubClassOf axioms. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java trunk/components-core/src/main/java/org/dllearner/core/owl/ClassHierarchy.java Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java 2012-01-27 11:55:41 UTC (rev 3559) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java 2012-02-01 11:35:39 UTC (rev 3560) @@ -126,7 +126,23 @@ //get existing super classes SortedSet<Description> existingSuperClasses = reasoner.getSuperClasses(classToDescribe); if(!existingSuperClasses.isEmpty()){ + SortedSet<Description> inferredSuperClasses = new TreeSet<Description>(); + for(Description assertedSup : existingSuperClasses){ + if(reasoner.isPrepared()){ + if(reasoner.getClassHierarchy().contains(assertedSup)){ + for(Description inferredSup : reasoner.getClassHierarchy().getSuperClasses(assertedSup, false)){ + inferredSuperClasses.add(inferredSup); + } + } + } else { + inferredSuperClasses.add(assertedSup); + } + } + existingSuperClasses.addAll(inferredSuperClasses); logger.info("Existing super classes: " + existingSuperClasses); + for(Description sup : existingSuperClasses){ + existingAxioms.add(new SubClassAxiom(classToDescribe, sup)); + } } Map<Individual, SortedSet<Description>> ind2Types = new HashMap<Individual, SortedSet<Description>>(); @@ -226,9 +242,10 @@ SimpleSubclassLearner l = new SimpleSubclassLearner(ks); l.setReasoner(reasoner); + l.setReturnOnlyNewAxioms(true); ConfigHelper.configure(l, "maxExecutionTimeInSeconds", 10); - l.setClassToDescribe(new NamedClass("http://dbpedia.org/ontology/Olympics")); + l.setClassToDescribe(new NamedClass("http://dbpedia.org/ontology/SoccerClub")); l.init(); l.start(); Modified: trunk/components-core/src/main/java/org/dllearner/core/owl/ClassHierarchy.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/owl/ClassHierarchy.java 2012-01-27 11:55:41 UTC (rev 3559) +++ trunk/components-core/src/main/java/org/dllearner/core/owl/ClassHierarchy.java 2012-02-01 11:35:39 UTC (rev 3560) @@ -111,6 +111,20 @@ // return (TreeSet<Description>) subsumptionHierarchyDown.get(concept).clone(); // } } + + public SortedSet<Description> getSuperClasses(Description concept, boolean direct) { + SortedSet<Description> result = subsumptionHierarchyUp.get(concept); + if(result == null) { + logger.error("Query for super class of " + concept + " in subsumption hierarchy, but the class is not contained in the (downward) hierarchy, e.g. because the class does not exist or is ignored. Returning empty result instead."); + return new TreeSet<Description>(); + } + result.remove(concept); + for(Description sub : new HashSet<Description>(result)){ + result.addAll(getSuperClasses(sub, false)); + } + + return new TreeSet<Description>(result); + } /** * Computes the siblings of the specified descriptions. Siblings are all those This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |