From: <lor...@us...> - 2013-07-11 12:23:39
|
Revision: 4016 http://sourceforge.net/p/dl-learner/code/4016 Author: lorenz_b Date: 2013-07-11 12:23:36 +0000 (Thu, 11 Jul 2013) Log Message: ----------- Some work on ISLE. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/NLPHeuristic.java trunk/components-core/src/main/java/org/dllearner/kb/sparql/QueryEngineHTTP.java trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLAPIConverter.java trunk/components-core/src/test/java/org/dllearner/algorithms/isle/ISLETest.java Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/isle/NLPHeuristic.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/NLPHeuristic.java 2013-07-08 13:51:31 UTC (rev 4015) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/isle/NLPHeuristic.java 2013-07-11 12:23:36 UTC (rev 4016) @@ -20,14 +20,20 @@ package org.dllearner.algorithms.isle; import java.util.Comparator; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import org.dllearner.algorithms.celoe.OENode; import org.dllearner.core.Component; import org.dllearner.core.ComponentInitException; import org.dllearner.core.config.ConfigOption; +import org.dllearner.core.owl.Description; import org.dllearner.core.owl.Entity; import org.dllearner.utilities.owl.ConceptComparator; +import org.dllearner.utilities.owl.OWLAPIConverter; +import org.semanticweb.owlapi.model.OWLClassExpression; +import org.semanticweb.owlapi.model.OWLEntity; /** * @@ -51,6 +57,8 @@ @ConfigOption(name = "startNodeBonus", defaultValue="0.1") private double startNodeBonus = 0.1; + private double nlpBonusFactor = 0.0001; + private Map<Entity, Double> entityRelevance; public NLPHeuristic() {} @@ -97,6 +105,21 @@ score -= node.getHorizontalExpansion() * expansionPenaltyFactor; // penalty for having many child nodes (stuck prevention) score -= node.getRefinementCount() * nodeRefinementPenalty; + + + //the NLP based scoring + Description expression = node.getExpression(); + OWLClassExpression owlapiDescription = OWLAPIConverter.getOWLAPIDescription(expression); + Set<Entity> entities = OWLAPIConverter.getEntities(owlapiDescription.getSignature()); + double sum = 0; + for (Entity entity : entities) { + double relevance = entityRelevance.containsKey(entity) ? entityRelevance.get(entity) : 0; + if(!Double.isInfinite(relevance)){ + sum += relevance; + } + } + score += nlpBonusFactor * sum; + return score; } Modified: trunk/components-core/src/main/java/org/dllearner/kb/sparql/QueryEngineHTTP.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/kb/sparql/QueryEngineHTTP.java 2013-07-08 13:51:31 UTC (rev 4015) +++ trunk/components-core/src/main/java/org/dllearner/kb/sparql/QueryEngineHTTP.java 2013-07-11 12:23:36 UTC (rev 4016) @@ -268,7 +268,7 @@ private Model execModel(Model model) { HttpQuery httpQuery = makeHttpQuery() ; - httpQuery.setAccept(WebContent.contentTypeTurtleAlt1) ; + httpQuery.setAccept(WebContent.contentTypeNTriplesAlt) ; InputStream in = httpQuery.exec() ; //Don't assume the endpoint actually gives back the content type we asked for @@ -284,7 +284,7 @@ //Try to select language appropriately here based on the model content type Lang lang = WebContent.contentTypeToLang(actualContentType); if (! RDFLanguages.isTriples(lang)) throw new QueryException("Endpoint returned Content Type: " + actualContentType + " which is not a valid RDF Graph syntax"); - model.read(in, null, "TURTLE") ; + model.read(in, null, Lang.NTRIPLES.getName()) ; return model ; } Modified: trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLAPIConverter.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLAPIConverter.java 2013-07-08 13:51:31 UTC (rev 4015) +++ trunk/components-core/src/main/java/org/dllearner/utilities/owl/OWLAPIConverter.java 2013-07-11 12:23:36 UTC (rev 4016) @@ -19,6 +19,7 @@ package org.dllearner.utilities.owl; +import java.util.HashSet; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -152,6 +153,22 @@ throw new Error("OWL API entity conversion for " + entity + " not supported."); } + public static Set<Entity> getEntities(Set<OWLEntity> owlEntities) { + Set<Entity> entities = new HashSet<Entity>(); + for (OWLEntity entity : owlEntities) { + if(entity instanceof OWLObjectProperty) { + entities.add(convertObjectProperty((OWLObjectProperty) entity)); + } else if(entity instanceof OWLDataProperty) { + entities.add(convertDatatypeProperty((OWLDataProperty) entity)); + } else if(entity instanceof OWLClass) { + entities.add(new NamedClass(entity.toStringID())); + } else if(entity instanceof OWLNamedIndividual) { + entities.add(convertIndividual((OWLNamedIndividual) entity)); + } + } + return entities; + } + public static Description convertClass(OWLClass owlClass) { if(owlClass.isOWLThing()) { return Thing.instance; Modified: trunk/components-core/src/test/java/org/dllearner/algorithms/isle/ISLETest.java =================================================================== --- trunk/components-core/src/test/java/org/dllearner/algorithms/isle/ISLETest.java 2013-07-08 13:51:31 UTC (rev 4015) +++ trunk/components-core/src/test/java/org/dllearner/algorithms/isle/ISLETest.java 2013-07-11 12:23:36 UTC (rev 4016) @@ -69,7 +69,7 @@ } @Test - public void testISLE() throws ComponentInitException { + public void testISLE() throws Exception { KnowledgeSource ks = new OWLAPIOntology(ontology); AbstractReasonerComponent reasoner = new FastInstanceChecker(ks); reasoner.init(); @@ -78,7 +78,11 @@ lp.setClassToDescribe(cls); lp.init(); + Map<Entity, Double> entityRelevance = relevance.getEntityRelevance(cls); + NLPHeuristic heuristic = new NLPHeuristic(entityRelevance); + ISLE isle = new ISLE(lp, reasoner); + isle.setHeuristic(heuristic); isle.init(); isle.start(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |