From: <lor...@us...> - 2011-11-23 14:24:26
|
Revision: 3432 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3432&view=rev Author: lorenz_b Date: 2011-11-23 14:24:16 +0000 (Wed, 23 Nov 2011) Log Message: ----------- Added option to use the class popularity in the score. Added method to get the number of instances for a given class. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.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 13:16:44 UTC (rev 3431) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/DisjointClassesLearner.java 2011-11-23 14:24:16 UTC (rev 3432) @@ -75,6 +75,7 @@ private boolean useWordNetDistance = false; private boolean suggestMostGeneralClasses = true; + private boolean useClassPopularity = true; public DisjointClassesLearner(SparqlEndpointKS ks){ this.ks = ks; @@ -239,7 +240,14 @@ SortedSet<Description> mostGeneralClasses = reasoner.getClassHierarchy().getMostGeneralClasses(); } for(NamedClass cls : completeDisjointclasses){ - evalDesc = new EvaluatedDescription(cls, new AxiomScore(1)); + if(useClassPopularity){ + double[] confidenceInterval = Heuristics.getConfidenceInterval95Wald(reasoner.getIndividualsCount(cls), 0); + double accuracy = (confidenceInterval[0] + confidenceInterval[1]) / 2; + evalDesc = new EvaluatedDescription(cls, new AxiomScore(1- accuracy)); + } else { + evalDesc = new EvaluatedDescription(cls, new AxiomScore(1)); + } + evalDescs.add(evalDesc); } @@ -268,7 +276,7 @@ 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()))); - l.setClassToDescribe(new NamedClass("http://dbpedia.org/ontology/AdministrativeRegion")); + l.setClassToDescribe(new NamedClass("http://dbpedia.org/ontology/SoccerClub")); l.init(); l.getReasoner().prepareSubsumptionHierarchy(); // System.out.println(l.getReasoner().getClassHierarchy().getSubClasses(new NamedClass("http://dbpedia.org/ontology/Athlete"), false));System.exit(0); Modified: trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java 2011-11-23 13:16:44 UTC (rev 3431) +++ trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java 2011-11-23 14:24:16 UTC (rev 3432) @@ -568,6 +568,17 @@ } return null; } + + public int getIndividualsCount(NamedClass nc){ + String query = String.format("SELECT COUNT(?s) WHERE {" + + "?s a ?type." + + "}", + nc.getURI()); + ResultSet rs = executeSelectQuery(query); + int cnt = rs.next().get(rs.getResultVars().get(0)).asLiteral().getInt(); + return cnt; + + } @Override public DataRange getRange(DatatypeProperty datatypeProperty) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |