From: <lor...@us...> - 2011-12-28 11:00:57
|
Revision: 3515 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3515&view=rev Author: lorenz_b Date: 2011-12-28 11:00:47 +0000 (Wed, 28 Dec 2011) Log Message: ----------- Made more usage of JENA reasoning capabilities. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java trunk/components-core/src/main/java/org/dllearner/core/AbstractAxiomLearningAlgorithm.java trunk/components-core/src/main/java/org/dllearner/kb/LocalModelBasedSparqlEndpointKS.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-27 10:36:53 UTC (rev 3514) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java 2011-12-28 11:00:47 UTC (rev 3515) @@ -183,7 +183,7 @@ QuerySolution qs; while(rs.hasNext()){ qs = rs.next();System.out.println(qs); - if(qs.getResource("type") != null){ + if(qs.getResource("type") != null && !qs.getResource("type").isAnon()){ cls = new NamedClass(qs.getResource("type").getURI()); int newCnt = qs.getLiteral("count").getInt(); oldCnt = result.get(cls); @@ -301,35 +301,35 @@ //Remove temporarily classToDescribe but keep track of their count // Integer all = class2Count.get(classToDescribe); class2Count.remove(classToDescribe); - + + //get complete disjoint classes Set<NamedClass> completeDisjointclasses = new TreeSet<NamedClass>(allClasses); - completeDisjointclasses.removeAll(class2Count.keySet()); + completeDisjointclasses.removeAll(class2Count.keySet());System.out.println(completeDisjointclasses); + // we remove the asserted subclasses here + completeDisjointclasses.removeAll(subClasses); + for (Description subClass : subClasses) { + class2Count.remove(subClass); + } + //drop all classes which have a super class in this set - if(suggestMostGeneralClasses && reasoner.isPrepared()){ + if(suggestMostGeneralClasses){ keepMostGeneralClasses(completeDisjointclasses); } - //we remove the asserted subclasses here - completeDisjointclasses.removeAll(subClasses); - for(Description subClass : subClasses){ - class2Count.remove(subClass); - } + EvaluatedDescription evalDesc; //firstly, create disjoint classexpressions which not occur and give score of 1 - if(reasoner.isPrepared()){ - SortedSet<Description> mostGeneralClasses = reasoner.getClassHierarchy().getMostGeneralClasses(); - } for(NamedClass cls : completeDisjointclasses){ if(useClassPopularity){ int popularity = 0; if(ks.isRemote()){ popularity = reasoner.getIndividualsCount(cls); } else { - popularity = ((LocalModelBasedSparqlEndpointKS)ks).getModel().getOntClass(cls.getName()).listInstances(true).toSet().size(); + popularity = ((LocalModelBasedSparqlEndpointKS)ks).getModel().getOntClass(cls.getName()).listInstances().toSet().size(); } //we skip classes with no instances if(popularity == 0) continue; @@ -362,9 +362,33 @@ private void keepMostGeneralClasses(Set<NamedClass> classes){ - ClassHierarchy h = reasoner.getClassHierarchy(); - for(NamedClass nc : new HashSet<NamedClass>(classes)){ - classes.removeAll(h.getSubClasses(nc)); + if(ks.isRemote()){ + if(reasoner.isPrepared()){ + ClassHierarchy h = reasoner.getClassHierarchy(); + for(NamedClass nc : new HashSet<NamedClass>(classes)){ + classes.removeAll(h.getSubClasses(nc)); + } + } + } else { + OntModel model = ((LocalModelBasedSparqlEndpointKS)ks).getModel(); + +// Set<NamedClass> topClasses = new HashSet<NamedClass>(); +// for(OntClass cls : model.listNamedClasses().toSet()){ +// Set<OntClass> superClasses = cls.listSuperClasses().toSet(); +// if(superClasses.isEmpty() || +// (superClasses.size() == 1 && superClasses.contains(model.getOntClass(com.hp.hpl.jena.vocabulary.OWL.Thing.getURI())))){ +// topClasses.add(new NamedClass(cls.getURI())); +// } +// +// } +// classes.retainAll(topClasses); + for(NamedClass nc : new HashSet<NamedClass>(classes)){//System.out.print(nc + "::"); + for(OntClass cls : model.getOntClass(nc.getName()).listSubClasses().toSet()){//System.out.print(cls + "|"); + classes.remove(new NamedClass(cls.getURI())); + } +// System.out.println(); + } + } } @@ -378,7 +402,7 @@ // System.out.println(l.getReasoner().getClassHierarchy().getSubClasses(new NamedClass("http://dbpedia.org/ontology/Athlete"), false));System.exit(0); l.start(); - for(EvaluatedAxiom e : l.getCurrentlyBestEvaluatedAxioms(Integer.MAX_VALUE, 0.2)){ + for(EvaluatedAxiom e : l.getCurrentlyBestEvaluatedAxioms(Integer.MAX_VALUE, 0.0)){ System.out.println(e); } Modified: trunk/components-core/src/main/java/org/dllearner/core/AbstractAxiomLearningAlgorithm.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/AbstractAxiomLearningAlgorithm.java 2011-12-27 10:36:53 UTC (rev 3514) +++ trunk/components-core/src/main/java/org/dllearner/core/AbstractAxiomLearningAlgorithm.java 2011-12-28 11:00:47 UTC (rev 3515) @@ -46,6 +46,8 @@ import org.dllearner.reasoning.SPARQLReasoner; import org.dllearner.utilities.owl.AxiomComparator; import org.openrdf.model.vocabulary.OWL; +import org.openrdf.model.vocabulary.RDF; +import org.openrdf.model.vocabulary.RDFS; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -195,7 +197,7 @@ return new SPARQLTasks(((SparqlEndpointKS) ks).getEndpoint()).getAllClasses(); } else { Set<NamedClass> classes = new TreeSet<NamedClass>(); - for(OntClass cls : ((LocalModelBasedSparqlEndpointKS)ks).getModel().listClasses().filterDrop(new OWLFilter()).toList()){ + for(OntClass cls : ((LocalModelBasedSparqlEndpointKS)ks).getModel().listClasses().filterDrop(new OWLFilter()).filterDrop(new RDFSFilter()).filterDrop(new RDFFilter()).toList()){ if(!cls.isAnon()){ classes.add(new NamedClass(cls.getURI())); } @@ -331,5 +333,29 @@ } + class RDFSFilter extends Filter<OntClass>{ + @Override + public boolean accept(OntClass cls) { + if(!cls.isAnon()){ + return cls.getURI().startsWith(RDFS.NAMESPACE); + } + return false; + } + + } + + class RDFFilter extends Filter<OntClass>{ + + @Override + public boolean accept(OntClass cls) { + if(!cls.isAnon()){ + return cls.getURI().startsWith(RDF.NAMESPACE); + } + return false; + } + + } + + } Modified: trunk/components-core/src/main/java/org/dllearner/kb/LocalModelBasedSparqlEndpointKS.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/kb/LocalModelBasedSparqlEndpointKS.java 2011-12-27 10:36:53 UTC (rev 3514) +++ trunk/components-core/src/main/java/org/dllearner/kb/LocalModelBasedSparqlEndpointKS.java 2011-12-28 11:00:47 UTC (rev 3515) @@ -35,7 +35,7 @@ // read the RDF/XML file baseModel.read(in, null); - model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_TRANS_INF, baseModel); + model = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM_RDFS_INF, baseModel); } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |