From: <lor...@us...> - 2013-01-22 12:44:54
|
Revision: 3886 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3886&view=rev Author: lorenz_b Date: 2013-01-22 12:44:46 +0000 (Tue, 22 Jan 2013) Log Message: ----------- Enabled config option to apply QTL on a local file. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/QTL.java trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java trunk/components-core/src/main/java/org/dllearner/kb/LocalModelBasedSparqlEndpointKS.java Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/QTL.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/QTL.java 2013-01-22 11:27:57 UTC (rev 3885) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/QTL.java 2013-01-22 12:44:46 UTC (rev 3886) @@ -53,6 +53,7 @@ import org.dllearner.core.options.ConfigOption; import org.dllearner.core.options.IntegerConfigOption; import org.dllearner.core.owl.Individual; +import org.dllearner.kb.LocalModelBasedSparqlEndpointKS; import org.dllearner.kb.SparqlEndpointKS; import org.dllearner.kb.sparql.CachingConciseBoundedDescriptionGenerator; import org.dllearner.kb.sparql.ConciseBoundedDescriptionGenerator; @@ -69,6 +70,7 @@ import com.hp.hpl.jena.query.ResultSetRewindable; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.Statement; +import com.hp.hpl.jena.rdf.model.StmtIterator; import com.hp.hpl.jena.util.iterator.Filter; /** @@ -112,6 +114,8 @@ private QueryTree<String> lgg; private SortedSet<String> lggInstances; + + private Set<String> objectNamespacesToIgnore = new HashSet<String>(); public static Collection<ConfigOption<?>> createConfigOptions() { Collection<ConfigOption<?>> options = new LinkedList<ConfigOption<?>>(); @@ -208,9 +212,13 @@ public void setMaxQueryTreeDepth(int maxQueryTreeDepth){ this.maxQueryTreeDepth = maxQueryTreeDepth; - cbdGenerator.setRecursionDepth(maxQueryTreeDepth); +// cbdGenerator.setRecursionDepth(maxQueryTreeDepth); } + public int getMaxQueryTreeDepth() { + return maxQueryTreeDepth; + } + public String getSPARQLQuery(){ if(lgg == null){ lgg = lggGenerator.getLGG(getQueryTrees(posExamples)); @@ -218,6 +226,10 @@ return lgg.toSPARQLQueryString(); } + public void setObjectNamespacesToIgnore(Set<String> namespacesToIgnore){ + this.objectNamespacesToIgnore = namespacesToIgnore; + } + public void setRestrictToNamespaces(List<String> namespaces){ cbdGenerator.setRestrictToNamespaces(namespaces); } @@ -237,12 +249,12 @@ Model model; QueryTree<String> tree; for(String resource : resources){ - if(logger.isDebugEnabled()){ - logger.debug("Tree for resource " + resource); - } + logger.info("Generating tree for " + resource); model = cbdGenerator.getConciseBoundedDescription(resource); + applyFilters(model); tree = treeCache.getQueryTree(resource, model); if(logger.isDebugEnabled()){ + logger.debug("Tree for resource " + resource); logger.debug(tree.getStringRepresentation()); } trees.add(tree); @@ -250,6 +262,19 @@ return trees; } + private void applyFilters(Model model){ + Statement st; + for(StmtIterator iter = model.listStatements(); iter.hasNext();){ + st = iter.next(); + for(String ns : objectNamespacesToIgnore){ + if(st.getObject().isURIResource() && st.getObject().asResource().getURI().startsWith(ns)){ + iter.remove(); + break; + } + } + } + } + private List<String> getKnownResources(){ return ListUtils.union(posExamples, negExamples); } @@ -305,7 +330,7 @@ if(logger.isDebugEnabled()){ logger.debug("LGG: \n" + lgg.getStringRepresentation()); } - + logger.info(lgg.toSPARQLQuery()); } @Override @@ -325,10 +350,14 @@ this.posExamples = convert(((PosNegLP)learningProblem).getPositiveExamples()); this.negExamples = convert(((PosNegLP)learningProblem).getNegativeExamples()); } - endpoint = endpointKS.getEndpoint(); + treeCache = new QueryTreeCache(); - treeCache = new QueryTreeCache(); - cbdGenerator = new CachingConciseBoundedDescriptionGenerator(new ConciseBoundedDescriptionGeneratorImpl(endpoint, cache)); + if(endpointKS instanceof LocalModelBasedSparqlEndpointKS){ + cbdGenerator = new CachingConciseBoundedDescriptionGenerator(new ConciseBoundedDescriptionGeneratorImpl(((LocalModelBasedSparqlEndpointKS) endpointKS).getModel())); + } else { + endpoint = endpointKS.getEndpoint(); + cbdGenerator = new CachingConciseBoundedDescriptionGenerator(new ConciseBoundedDescriptionGeneratorImpl(endpoint, cache)); + } cbdGenerator.setRecursionDepth(maxQueryTreeDepth); lggGenerator = new LGGGeneratorImpl<String>(); Modified: trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java 2013-01-22 11:27:57 UTC (rev 3885) +++ trunk/components-core/src/main/java/org/dllearner/core/AnnComponentManager.java 2013-01-22 12:44:46 UTC (rev 3886) @@ -74,10 +74,11 @@ "org.dllearner.algorithms.properties.SubDataPropertyOfAxiomLearner", "org.dllearner.algorithms.DisjointClassesLearner", "org.dllearner.algorithms.SimpleSubclassLearner", -// "org.dllearner.algorithm.qtl.QTL", + "org.dllearner.algorithms.qtl.QTL", "org.dllearner.kb.KBFile", "org.dllearner.kb.OWLFile", "org.dllearner.kb.SparqlEndpointKS", + "org.dllearner.kb.LocalModelBasedSparqlEndpointKS", "org.dllearner.kb.sparql.SparqlKnowledgeSource", "org.dllearner.kb.sparql.simple.SparqlSimpleExtractor", "org.dllearner.learningproblems.PosNegLPStandard", Modified: trunk/components-core/src/main/java/org/dllearner/kb/LocalModelBasedSparqlEndpointKS.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/kb/LocalModelBasedSparqlEndpointKS.java 2013-01-22 11:27:57 UTC (rev 3885) +++ trunk/components-core/src/main/java/org/dllearner/kb/LocalModelBasedSparqlEndpointKS.java 2013-01-22 12:44:46 UTC (rev 3886) @@ -4,6 +4,7 @@ import java.net.MalformedURLException; import java.net.URL; +import org.dllearner.core.ComponentAnn; import org.dllearner.core.ComponentInitException; import com.hp.hpl.jena.ontology.OntModel; @@ -12,25 +13,43 @@ import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.util.FileManager; +@ComponentAnn(name = "Local Endpoint", shortName = "local_sparql", version = 0.9) public class LocalModelBasedSparqlEndpointKS extends SparqlEndpointKS { private OntModel model; + private String fileName; - public LocalModelBasedSparqlEndpointKS(OntModel model) { - this.model = model; + public LocalModelBasedSparqlEndpointKS() { } public LocalModelBasedSparqlEndpointKS(String ontologyURL) throws MalformedURLException { this(new URL(ontologyURL)); } + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileName() { + return fileName; + } + public LocalModelBasedSparqlEndpointKS(URL ontologyURL) { + this.fileName = ontologyURL.toString(); + } + + public LocalModelBasedSparqlEndpointKS(OntModel model) { + this.model = model; + } + + @Override + public void init() throws ComponentInitException { Model baseModel = ModelFactory.createDefaultModel(); // use the FileManager to find the input file - InputStream in = FileManager.get().open(ontologyURL.toString()); + InputStream in = FileManager.get().open(fileName); if (in == null) { throw new IllegalArgumentException( - "File: " + ontologyURL + " not found"); + "File: " + fileName + " not found"); } // read the RDF/XML file baseModel.read(in, null); @@ -38,11 +57,6 @@ model = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM_RDFS_INF, baseModel); } - @Override - public void init() throws ComponentInitException { - - } - public OntModel getModel() { return model; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |