From: <lor...@us...> - 2011-09-27 08:10:24
|
Revision: 3287 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3287&view=rev Author: lorenz_b Date: 2011-09-27 08:10:17 +0000 (Tue, 27 Sep 2011) Log Message: ----------- Mark datarange axiom if already asserted in the knowledge base. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyRangeAxiomLearner.java trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java 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-09-26 21:22:59 UTC (rev 3286) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/properties/DataPropertyRangeAxiomLearner.java 2011-09-27 08:10:17 UTC (rev 3287) @@ -41,6 +41,7 @@ import org.dllearner.core.owl.ObjectProperty; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.SparqlEndpoint; +import org.dllearner.reasoning.SPARQLReasoner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -89,7 +90,10 @@ currentlyBestAxioms = new ArrayList<EvaluatedAxiom>(); //get existing range DataRange existingRange = reasoner.getRange(propertyToDescribe); - logger.debug("Existing range: " + existingRange); + if(existingRange != null){ + existingAxioms.add(new DatatypePropertyRangeAxiom(propertyToDescribe, existingRange)); + logger.debug("Existing range: " + existingRange); + } //get objects with datatypes Map<Individual, SortedSet<Datatype>> individual2Datatypes = new HashMap<Individual, SortedSet<Datatype>>(); @@ -135,6 +139,9 @@ for(Entry<Datatype, Integer> entry : sortByValues(result)){ evalAxiom = new EvaluatedAxiom(new DatatypePropertyRangeAxiom(propertyToDescribe, entry.getKey()), computeScore(total, entry.getValue())); + if(existingAxioms.contains(evalAxiom.getAxiom())){ + evalAxiom.setAsserted(true); + } axioms.add(evalAxiom); } @@ -172,9 +179,15 @@ public static void main(String[] args) throws Exception{ SparqlEndpointKS ks = new SparqlEndpointKS(SparqlEndpoint.getEndpointDBpediaLiveAKSW()); + + SPARQLReasoner reasoner = new SPARQLReasoner(ks); + reasoner.prepareSubsumptionHierarchy(); + DataPropertyRangeAxiomLearner l = new DataPropertyRangeAxiomLearner(ks); - l.setPropertyToDescribe(new DatatypeProperty("http://dbpedia.org/ontology/background")); + l.setReasoner(reasoner); + l.setPropertyToDescribe(new DatatypeProperty("http://dbpedia.org/ontology/topSpeed")); l.setMaxExecutionTimeInSeconds(10); + l.setReturnOnlyNewAxioms(true); l.init(); l.start(); System.out.println(l.getCurrentlyBestEvaluatedAxioms(1)); Modified: trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java 2011-09-26 21:22:59 UTC (rev 3286) +++ trunk/components-core/src/main/java/org/dllearner/reasoning/SPARQLReasoner.java 2011-09-27 08:10:17 UTC (rev 3287) @@ -41,6 +41,7 @@ import org.dllearner.core.owl.ClassHierarchy; import org.dllearner.core.owl.Constant; import org.dllearner.core.owl.DataRange; +import org.dllearner.core.owl.Datatype; import org.dllearner.core.owl.DatatypeProperty; import org.dllearner.core.owl.DatatypePropertyHierarchy; import org.dllearner.core.owl.Description; @@ -570,8 +571,20 @@ @Override public DataRange getRange(DatatypeProperty datatypeProperty) { - // TODO Auto-generated method stub - return null; + String query = String.format("SELECT ?range WHERE {" + + "<%s> <%s> ?range. FILTER(isIRI(?range))" + + "}", + datatypeProperty.getName(), RDFS.range.getURI()); + + ResultSet rs = executeSelectQuery(query); + QuerySolution qs; + DataRange range = null; + while(rs.hasNext()){ + qs = rs.next(); + range = new Datatype(qs.getResource("range").getURI()); + + } + return range; } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |