From: <lor...@us...> - 2011-08-28 13:06:50
|
Revision: 3151 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3151&view=rev Author: lorenz_b Date: 2011-08-28 13:06:43 +0000 (Sun, 28 Aug 2011) Log Message: ----------- Replaced accuracy computation with the average of the confidence interval boundaries (computed with Wald95 method). Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyDomainAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyRangeAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalDataPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/InverseFunctionalObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/IrreflexiveObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyDomainAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyRangeAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ReflexiveObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SubDataPropertyOfAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SubObjectPropertyOfAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SymmetricObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/algorithms/properties/TransitiveObjectPropertyAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/core/AbstractAxiomLearningAlgorithm.java trunk/components-core/src/main/java/org/dllearner/learningproblems/AxiomScore.java 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-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/SimpleSubclassLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -199,18 +199,15 @@ result.remove(classToDescribe); EvaluatedDescription evalDesc; + int total = individual2Types.keySet().size(); for(Entry<NamedClass, Integer> entry : sortByValues(result)){ evalDesc = new EvaluatedDescription(entry.getKey(), - new AxiomScore(entry.getValue() / (double)individual2Types.keySet().size())); + computeScore(total, entry.getValue())); currentlyBestEvaluatedDescriptions.add(evalDesc); } } - private double computeScore(){ - return 0; - } - private boolean terminationCriteriaSatisfied(){ boolean timeLimitExceeded = maxExecutionTimeInSeconds == 0 ? false : (System.currentTimeMillis() - startTime) >= maxExecutionTimeInSeconds * 1000; boolean resultLimitExceeded = maxFetchedRows == 0 ? false : fetchedRows >= maxFetchedRows; @@ -218,8 +215,8 @@ } public static void main(String[] args) throws Exception{ - SimpleSubclassLearner l = new SimpleSubclassLearner(new SparqlEndpointKS(SparqlEndpoint.getEndpointDBpedia())); - ConfigHelper.configure(l, "maxExecutionTimeInSeconds", 5); + SimpleSubclassLearner l = new SimpleSubclassLearner(new SparqlEndpointKS(SparqlEndpoint.getEndpointDBpediaLiveOpenLink())); + ConfigHelper.configure(l, "maxExecutionTimeInSeconds", 10); l.setClassToDescribe(new NamedClass("http://dbpedia.org/ontology/Criminal")); l.init(); l.start(); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyDomainAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyDomainAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyDomainAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -38,9 +38,9 @@ import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Individual; import org.dllearner.core.owl.NamedClass; +import org.dllearner.core.owl.Thing; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -130,10 +130,14 @@ } } + //omit owl:Thing + result.remove(new NamedClass(Thing.instance.getURI())); + EvaluatedAxiom evalAxiom; + int total = individual2Types.keySet().size(); for(Entry<NamedClass, Integer> entry : sortByValues(result)){ evalAxiom = new EvaluatedAxiom(new DatatypePropertyDomainAxiom(propertyToDescribe, entry.getKey()), - new AxiomScore(entry.getValue() / (double)individual2Types.keySet().size())); + computeScore(total, entry.getValue())); axioms.add(evalAxiom); } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyRangeAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyRangeAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyRangeAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -39,7 +39,6 @@ import org.dllearner.core.owl.DatatypePropertyRangeAxiom; import org.dllearner.core.owl.Individual; import org.dllearner.kb.SparqlEndpointKS; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -130,9 +129,10 @@ } EvaluatedAxiom evalAxiom; + int total = individual2Types.keySet().size(); for(Entry<Datatype, Integer> entry : sortByValues(result)){ evalAxiom = new EvaluatedAxiom(new DatatypePropertyRangeAxiom(propertyToDescribe, entry.getKey()), - new AxiomScore(entry.getValue() / (double)individual2Types.keySet().size())); + computeScore(total, entry.getValue())); axioms.add(evalAxiom); } @@ -163,5 +163,4 @@ } return cnt; } - } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalDataPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalDataPropertyAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalDataPropertyAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -31,7 +31,6 @@ import org.dllearner.core.owl.DatatypeProperty; import org.dllearner.core.owl.FunctionalDatatypePropertyAxiom; import org.dllearner.kb.SparqlEndpointKS; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -107,8 +106,8 @@ notFunctional = qs.getLiteral("notfunctional").getInt(); } if(all > 0){ - double frac = (all - notFunctional) / (double)all; - currentlyBestAxioms.add(new EvaluatedAxiom(new FunctionalDatatypePropertyAxiom(propertyToDescribe), new AxiomScore(frac))); + currentlyBestAxioms.add(new EvaluatedAxiom(new FunctionalDatatypePropertyAxiom(propertyToDescribe), + computeScore(all, all - notFunctional))); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); @@ -118,5 +117,4 @@ public List<EvaluatedAxiom> getCurrentlyBestEvaluatedAxioms() { return currentlyBestAxioms; } - } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalObjectPropertyAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/FunctionalObjectPropertyAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -31,7 +31,6 @@ import org.dllearner.core.owl.FunctionalObjectPropertyAxiom; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.kb.SparqlEndpointKS; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -107,8 +106,8 @@ notFunctional = qs.getLiteral("notfunctional").getInt(); } if(all > 0){ - double frac = (all - notFunctional) / (double)all; - currentlyBestAxioms.add(new EvaluatedAxiom(new FunctionalObjectPropertyAxiom(propertyToDescribe), new AxiomScore(frac))); + currentlyBestAxioms.add(new EvaluatedAxiom(new FunctionalObjectPropertyAxiom(propertyToDescribe), + computeScore(all, all - notFunctional))); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); @@ -118,5 +117,5 @@ public List<EvaluatedAxiom> getCurrentlyBestEvaluatedAxioms() { return currentlyBestAxioms; } - + } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/InverseFunctionalObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/InverseFunctionalObjectPropertyAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/InverseFunctionalObjectPropertyAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -25,6 +25,7 @@ import org.dllearner.core.AbstractAxiomLearningAlgorithm; import org.dllearner.core.ComponentAnn; import org.dllearner.core.EvaluatedAxiom; +import org.dllearner.core.Score; import org.dllearner.core.config.ConfigOption; import org.dllearner.core.config.IntegerEditor; import org.dllearner.core.config.ObjectPropertyEditor; @@ -32,6 +33,7 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.learningproblems.AxiomScore; +import org.dllearner.learningproblems.Heuristics; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -101,14 +103,14 @@ query = "SELECT (COUNT(DISTINCT ?s) AS ?noninversefunctional) WHERE {?s1 <%s> ?o. ?s2 <%s> ?o. FILTER(?s1 != ?s2) }"; query = query.replace("%s", propertyToDescribe.getURI().toString()); rs = executeSelectQuery(query); - int notFunctional = 1; + int notInverseFunctional = 1; while(rs.hasNext()){ qs = rs.next(); - notFunctional = qs.getLiteral("noninversefunctional").getInt(); + notInverseFunctional = qs.getLiteral("noninversefunctional").getInt(); } if(all > 0){ - double frac = (all - notFunctional) / (double)all; - currentlyBestAxioms.add(new EvaluatedAxiom(new InverseFunctionalObjectPropertyAxiom(propertyToDescribe), new AxiomScore(frac))); + currentlyBestAxioms.add(new EvaluatedAxiom(new InverseFunctionalObjectPropertyAxiom(propertyToDescribe), + computeScore(all, all - notInverseFunctional))); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/IrreflexiveObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/IrreflexiveObjectPropertyAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/IrreflexiveObjectPropertyAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -31,7 +31,6 @@ import org.dllearner.core.owl.IrreflexiveObjectPropertyAxiom; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.kb.SparqlEndpointKS; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -111,7 +110,8 @@ if(all > 0){ double frac = irreflexive / (double)all; - currentlyBestAxioms.add(new EvaluatedAxiom(new IrreflexiveObjectPropertyAxiom(propertyToDescribe), new AxiomScore(frac))); + currentlyBestAxioms.add(new EvaluatedAxiom(new IrreflexiveObjectPropertyAxiom(propertyToDescribe), + computeScore(all, irreflexive))); } logger.info("...finished in {}ms.", (System.currentTimeMillis()-startTime)); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyDomainAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyDomainAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyDomainAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -38,8 +38,8 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyDomainAxiom; +import org.dllearner.core.owl.Thing; import org.dllearner.kb.SparqlEndpointKS; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -129,10 +129,14 @@ } } + //omit owl:Thing + result.remove(new NamedClass(Thing.instance.getURI())); + EvaluatedAxiom evalAxiom; + int total = individual2Types.keySet().size(); for(Entry<NamedClass, Integer> entry : sortByValues(result)){ evalAxiom = new EvaluatedAxiom(new ObjectPropertyDomainAxiom(propertyToDescribe, entry.getKey()), - new AxiomScore(entry.getValue() / (double)individual2Types.keySet().size())); + computeScore(total, entry.getValue())); axioms.add(evalAxiom); } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyRangeAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyRangeAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ObjectPropertyRangeAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -38,9 +38,9 @@ import org.dllearner.core.owl.NamedClass; import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ObjectPropertyRangeAxiom; +import org.dllearner.core.owl.Thing; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -130,10 +130,14 @@ } } + //omit owl:Thing + result.remove(new NamedClass(Thing.instance.getURI())); + EvaluatedAxiom evalAxiom; + int total = individual2Types.keySet().size(); for(Entry<NamedClass, Integer> entry : sortByValues(result)){ evalAxiom = new EvaluatedAxiom(new ObjectPropertyRangeAxiom(propertyToDescribe, entry.getKey()), - new AxiomScore(entry.getValue() / (double)individual2Types.keySet().size())); + computeScore(total, entry.getValue())); axioms.add(evalAxiom); } @@ -167,9 +171,9 @@ } public static void main(String[] args) throws Exception{ - ObjectPropertyRangeAxiomLearner l = new ObjectPropertyRangeAxiomLearner(new SparqlEndpointKS(SparqlEndpoint.getEndpointDBpediaLiveAKSW())); - l.setPropertyToDescribe(new ObjectProperty("http://dbpedia.org/ontology/aircraftElectronic")); - l.setMaxExecutionTimeInSeconds(0); + ObjectPropertyRangeAxiomLearner l = new ObjectPropertyRangeAxiomLearner(new SparqlEndpointKS(SparqlEndpoint.getEndpointDBpedia())); + l.setPropertyToDescribe(new ObjectProperty("http://dbpedia.org/ontology/academicAdvisor")); + l.setMaxExecutionTimeInSeconds(10); l.init(); l.start(); System.out.println(l.getCurrentlyBestEvaluatedAxioms(5)); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ReflexiveObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ReflexiveObjectPropertyAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/ReflexiveObjectPropertyAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -31,7 +31,6 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.ReflexiveObjectPropertyAxiom; import org.dllearner.kb.SparqlEndpointKS; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -99,7 +98,8 @@ int reflexive = qs.getLiteral("reflexiv").getInt(); if(all > 0){ double frac = reflexive / (double)all; - currentlyBestAxioms.add(new EvaluatedAxiom(new ReflexiveObjectPropertyAxiom(propertyToDescribe), new AxiomScore(frac))); + currentlyBestAxioms.add(new EvaluatedAxiom(new ReflexiveObjectPropertyAxiom(propertyToDescribe), + computeScore(all, reflexive))); } } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SubDataPropertyOfAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SubDataPropertyOfAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SubDataPropertyOfAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -35,7 +35,6 @@ import org.dllearner.core.owl.DatatypeProperty; import org.dllearner.core.owl.SubDatatypePropertyAxiom; import org.dllearner.kb.SparqlEndpointKS; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -138,17 +137,17 @@ private List<EvaluatedAxiom> buildAxioms(Map<DatatypeProperty, Integer> property2Count){ List<EvaluatedAxiom> axioms = new ArrayList<EvaluatedAxiom>(); - Integer all = property2Count.get(propertyToDescribe); + Integer total = property2Count.get(propertyToDescribe); property2Count.remove(propertyToDescribe); EvaluatedAxiom evalAxiom; for(Entry<DatatypeProperty, Integer> entry : sortByValues(property2Count)){ evalAxiom = new EvaluatedAxiom(new SubDatatypePropertyAxiom(propertyToDescribe, entry.getKey()), - new AxiomScore(entry.getValue() / (double)all)); + computeScore(total, entry.getValue())); axioms.add(evalAxiom); } - property2Count.put(propertyToDescribe, all); + property2Count.put(propertyToDescribe, total); return axioms; } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SubObjectPropertyOfAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SubObjectPropertyOfAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SubObjectPropertyOfAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -35,7 +35,6 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.SubObjectPropertyAxiom; import org.dllearner.kb.SparqlEndpointKS; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -138,17 +137,17 @@ private List<EvaluatedAxiom> buildAxioms(Map<ObjectProperty, Integer> property2Count){ List<EvaluatedAxiom> axioms = new ArrayList<EvaluatedAxiom>(); - Integer all = property2Count.get(propertyToDescribe); + Integer total = property2Count.get(propertyToDescribe); property2Count.remove(propertyToDescribe); EvaluatedAxiom evalAxiom; for(Entry<ObjectProperty, Integer> entry : sortByValues(property2Count)){ evalAxiom = new EvaluatedAxiom(new SubObjectPropertyAxiom(propertyToDescribe, entry.getKey()), - new AxiomScore(entry.getValue() / (double)all)); + computeScore(total, entry.getValue())); axioms.add(evalAxiom); } - property2Count.put(propertyToDescribe, all); + property2Count.put(propertyToDescribe, total); return axioms; } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SymmetricObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SymmetricObjectPropertyAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/SymmetricObjectPropertyAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -31,7 +31,6 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.core.owl.SymmetricObjectPropertyAxiom; import org.dllearner.kb.SparqlEndpointKS; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -99,7 +98,8 @@ int symmetric = qs.getLiteral("symmetric").getInt(); if(all > 0){ double frac = symmetric / (double)all; - currentlyBestAxioms.add(new EvaluatedAxiom(new SymmetricObjectPropertyAxiom(propertyToDescribe), new AxiomScore(frac))); + currentlyBestAxioms.add(new EvaluatedAxiom(new SymmetricObjectPropertyAxiom(propertyToDescribe), + computeScore(all, symmetric))); } } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/properties/TransitiveObjectPropertyAxiomLearner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/TransitiveObjectPropertyAxiomLearner.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/TransitiveObjectPropertyAxiomLearner.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -32,7 +32,6 @@ import org.dllearner.core.owl.TransitiveObjectPropertyAxiom; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.SparqlEndpoint; -import org.dllearner.learningproblems.AxiomScore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -100,7 +99,8 @@ int transitive = qs.getLiteral("transitive").getInt(); if(all > 0){ double frac = transitive / (double)all; - currentlyBestAxioms.add(new EvaluatedAxiom(new TransitiveObjectPropertyAxiom(propertyToDescribe), new AxiomScore(frac))); + currentlyBestAxioms.add(new EvaluatedAxiom(new TransitiveObjectPropertyAxiom(propertyToDescribe), + computeScore(all, transitive))); } } Modified: trunk/components-core/src/main/java/org/dllearner/core/AbstractAxiomLearningAlgorithm.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/AbstractAxiomLearningAlgorithm.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/core/AbstractAxiomLearningAlgorithm.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -30,8 +30,11 @@ import org.dllearner.core.config.IntegerEditor; import org.dllearner.core.configurators.Configurator; import org.dllearner.core.owl.Axiom; +import org.dllearner.core.owl.ClassHierarchy; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.ExtendedQueryEngineHTTP; +import org.dllearner.learningproblems.AxiomScore; +import org.dllearner.learningproblems.Heuristics; import org.dllearner.reasoning.SPARQLReasoner; import com.hp.hpl.jena.query.ResultSet; @@ -151,5 +154,14 @@ }); return entries; } + + protected Score computeScore(int total, int success){ + double[] confidenceInterval = Heuristics.getConfidenceInterval95Wald(total, success); + + double accuracy = (confidenceInterval[0] + confidenceInterval[1]) / 2; + double confidence = confidenceInterval[1] - confidenceInterval[0]; + + return new AxiomScore(accuracy, confidence); + } } Modified: trunk/components-core/src/main/java/org/dllearner/learningproblems/AxiomScore.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/learningproblems/AxiomScore.java 2011-08-28 12:50:50 UTC (rev 3150) +++ trunk/components-core/src/main/java/org/dllearner/learningproblems/AxiomScore.java 2011-08-28 13:06:43 UTC (rev 3151) @@ -25,14 +25,23 @@ private static final long serialVersionUID = 555252118489924570L; private double accuracy; + private double confidence; public AxiomScore(double accuracy) { this.accuracy = accuracy; } + + public AxiomScore(double accuracy, double confidence) { + this.accuracy = accuracy; + } @Override public double getAccuracy() { return accuracy; } + + public double getConfidence(){ + return confidence; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |