From: <lor...@us...> - 2013-02-16 13:03:08
|
Revision: 3899 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3899&view=rev Author: lorenz_b Date: 2013-02-16 13:03:00 +0000 (Sat, 16 Feb 2013) Log Message: ----------- Added option to work on JENA model. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/QTL.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/CLI.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner2.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner3.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/Knowledgebase.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/PopularityMap.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner3Test.java Added Paths: ----------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LocalKnowledgebase.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/RemoteKnowledgebase.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-02-11 12:18:04 UTC (rev 3898) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/QTL.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -68,7 +68,9 @@ import org.dllearner.utilities.Helper; import org.springframework.beans.factory.annotation.Autowired; +import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QuerySolution; +import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.query.ResultSetRewindable; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.Statement; @@ -94,6 +96,7 @@ // private QTLConfigurator configurator; private SparqlEndpoint endpoint; + private Model model; private ExtractionDBCache cache; private QueryTreeCache treeCache; @@ -157,6 +160,21 @@ negExampleTrees = new ArrayList<QueryTree<String>>(); } + public QTL(Model model) { + this.model = model; + + treeCache = new QueryTreeCache(); + cbdGenerator = new CachingConciseBoundedDescriptionGenerator(new ConciseBoundedDescriptionGeneratorImpl(model)); + cbdGenerator.setRecursionDepth(maxQueryTreeDepth); + + lggGenerator = new LGGGeneratorImpl<String>(); + nbr = new NBR<String>(model); + nbr.setMaxExecutionTimeInSeconds(maxExecutionTimeInSeconds); + + posExampleTrees = new ArrayList<QueryTree<String>>(); + negExampleTrees = new ArrayList<QueryTree<String>>(); + } + public String getQuestion(List<String> posExamples, List<String> negExamples) throws EmptyLGGException, NegativeTreeCoverageExecption, TimeOutException { this.posExamples = posExamples; this.negExamples = negExamples; @@ -312,8 +330,13 @@ private SortedSet<String> getResources(QueryTree<String> tree){ SortedSet<String> resources = new TreeSet<String>(); String query = getDistinctSPARQLQuery(tree); - String result = cache.executeSelectQuery(endpoint, query); - ResultSetRewindable rs = SparqlQuery.convertJSONtoResultSet(result); + ResultSet rs; + if(endpoint != null){ + rs = SparqlQuery.convertJSONtoResultSet(cache.executeSelectQuery(endpoint, query)); + } else { + rs = QueryExecutionFactory.create(query, model).execSelect(); + } + String uri; QuerySolution qs; while(rs.hasNext()){ Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/CLI.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/CLI.java 2013-02-11 12:18:04 UTC (rev 3898) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/cli/CLI.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -10,6 +10,7 @@ import org.dllearner.algorithm.tbsl.learning.NoTemplateFoundException; import org.dllearner.algorithm.tbsl.learning.SPARQLTemplateBasedLearner2; import org.dllearner.algorithm.tbsl.util.Knowledgebase; +import org.dllearner.algorithm.tbsl.util.RemoteKnowledgebase; import org.dllearner.common.index.Index; import org.dllearner.common.index.SOLRIndex; import org.dllearner.kb.sparql.SparqlEndpoint; @@ -30,7 +31,7 @@ Index propertiesIndex = new SOLRIndex("http://dbpedia.aksw.org:8080/solr/dbpedia_properties"); - Knowledgebase kb = new Knowledgebase(endpoint, "DBpedia Live", "TODO", resourcesIndex, propertiesIndex, classesIndex, null); + Knowledgebase kb = new RemoteKnowledgebase(endpoint, "DBpedia Live", "TODO", resourcesIndex, propertiesIndex, classesIndex, null); SPARQLTemplateBasedLearner2 learner = new SPARQLTemplateBasedLearner2(kb); System.out.println("======= TBSL v0.1 ============="); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner2.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner2.java 2013-02-11 12:18:04 UTC (rev 3898) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner2.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -44,7 +44,9 @@ import org.dllearner.algorithm.tbsl.sparql.WeightedQuery; import org.dllearner.algorithm.tbsl.templator.Templator; import org.dllearner.algorithm.tbsl.util.Knowledgebase; +import org.dllearner.algorithm.tbsl.util.LocalKnowledgebase; import org.dllearner.algorithm.tbsl.util.PopularityMap; +import org.dllearner.algorithm.tbsl.util.RemoteKnowledgebase; import org.dllearner.algorithm.tbsl.util.PopularityMap.EntityType; import org.dllearner.algorithm.tbsl.util.Similarity; import org.dllearner.algorithm.tbsl.util.UnknownPropertyHelper.SymPropertyDirection; @@ -163,12 +165,44 @@ } public SPARQLTemplateBasedLearner2(Knowledgebase knowledgebase, PartOfSpeechTagger posTagger, WordNet wordNet, Options options){ - this(knowledgebase.getEndpoint(), knowledgebase.getResourceIndex(), knowledgebase.getClassIndex(),knowledgebase.getPropertyIndex(), posTagger, wordNet, options); + this(knowledgebase, posTagger, wordNet, options, null); } public SPARQLTemplateBasedLearner2(Knowledgebase knowledgebase){ - this(knowledgebase.getEndpoint(), knowledgebase.getResourceIndex(), knowledgebase.getClassIndex(),knowledgebase.getPropertyIndex(), new StanfordPartOfSpeechTagger(), new WordNet(), new Options()); + this(knowledgebase, new StanfordPartOfSpeechTagger(), new WordNet(), new Options()); } + + public SPARQLTemplateBasedLearner2(Knowledgebase knowledgebase, PartOfSpeechTagger posTagger, WordNet wordNet, Options options, ExtractionDBCache cache){ + if(knowledgebase instanceof LocalKnowledgebase){ + this.model = ((LocalKnowledgebase) knowledgebase).getModel(); + } else { + this.endpoint = ((RemoteKnowledgebase) knowledgebase).getEndpoint(); + } + this.resourcesIndex = knowledgebase.getResourceIndex(); + this.classesIndex = knowledgebase.getClassIndex(); + this.propertiesIndex = knowledgebase.getPropertyIndex(); + this.mappingIndex = knowledgebase.getMappingIndex(); + if(propertiesIndex instanceof SPARQLPropertiesIndex){ + if(propertiesIndex instanceof VirtuosoPropertiesIndex){ + datatypePropertiesIndex = new VirtuosoDatatypePropertiesIndex((SPARQLPropertiesIndex)propertiesIndex); + objectPropertiesIndex = new VirtuosoObjectPropertiesIndex((SPARQLPropertiesIndex)propertiesIndex); + } else { + datatypePropertiesIndex = new SPARQLDatatypePropertiesIndex((SPARQLPropertiesIndex)propertiesIndex); + objectPropertiesIndex = new SPARQLObjectPropertiesIndex((SPARQLPropertiesIndex)propertiesIndex); + } + } else { + datatypePropertiesIndex = propertiesIndex; + objectPropertiesIndex = propertiesIndex; + } + this.posTagger = posTagger; + this.wordNet = wordNet; + this.cache = cache; + + reasoner = new SPARQLReasoner(new SparqlEndpointKS(endpoint)); + setOptions(options); + + setMappingIndex(knowledgebase.getMappingIndex()); + } public SPARQLTemplateBasedLearner2(SparqlEndpoint endpoint, Index index){ this(endpoint, index, new StanfordPartOfSpeechTagger()); @@ -301,7 +335,11 @@ } public void setKnowledgebase(Knowledgebase knowledgebase){ - this.endpoint = knowledgebase.getEndpoint(); + if(knowledgebase instanceof LocalKnowledgebase){ + this.model = ((LocalKnowledgebase) knowledgebase).getModel(); + } else { + this.endpoint = ((RemoteKnowledgebase) knowledgebase).getEndpoint(); + } this.resourcesIndex = knowledgebase.getResourceIndex(); this.classesIndex = knowledgebase.getClassIndex(); this.propertiesIndex = knowledgebase.getPropertyIndex(); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner3.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner3.java 2013-02-11 12:18:04 UTC (rev 3898) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner3.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -46,7 +46,9 @@ import org.dllearner.algorithm.tbsl.sparql.WeightedQuery; import org.dllearner.algorithm.tbsl.templator.Templator; import org.dllearner.algorithm.tbsl.util.Knowledgebase; +import org.dllearner.algorithm.tbsl.util.LocalKnowledgebase; import org.dllearner.algorithm.tbsl.util.PopularityMap; +import org.dllearner.algorithm.tbsl.util.RemoteKnowledgebase; import org.dllearner.algorithm.tbsl.util.PopularityMap.EntityType; import org.dllearner.algorithm.tbsl.util.SPARQLEndpointMetrics; import org.dllearner.algorithm.tbsl.util.Similarity; @@ -171,17 +173,44 @@ } public SPARQLTemplateBasedLearner3(Knowledgebase knowledgebase, PartOfSpeechTagger posTagger, WordNet wordNet, Options options){ - this(knowledgebase.getEndpoint(), knowledgebase.getResourceIndex(), knowledgebase.getClassIndex(),knowledgebase.getPropertyIndex(), posTagger, wordNet, options); + this(knowledgebase, posTagger, wordNet, options, null); setMappingIndex(knowledgebase.getMappingIndex()); } public SPARQLTemplateBasedLearner3(Knowledgebase knowledgebase, PartOfSpeechTagger posTagger, WordNet wordNet, Options options, ExtractionDBCache cache){ - this(knowledgebase.getEndpoint(), knowledgebase.getResourceIndex(), knowledgebase.getClassIndex(),knowledgebase.getPropertyIndex(), posTagger, wordNet, options, cache); + if(knowledgebase instanceof LocalKnowledgebase){ + this.model = ((LocalKnowledgebase) knowledgebase).getModel(); + } else { + this.endpoint = ((RemoteKnowledgebase) knowledgebase).getEndpoint(); + } + this.resourcesIndex = knowledgebase.getResourceIndex(); + this.classesIndex = knowledgebase.getClassIndex(); + this.propertiesIndex = knowledgebase.getPropertyIndex(); + this.mappingIndex = knowledgebase.getMappingIndex(); + if(propertiesIndex instanceof SPARQLPropertiesIndex){ + if(propertiesIndex instanceof VirtuosoPropertiesIndex){ + datatypePropertiesIndex = new VirtuosoDatatypePropertiesIndex((SPARQLPropertiesIndex)propertiesIndex); + objectPropertiesIndex = new VirtuosoObjectPropertiesIndex((SPARQLPropertiesIndex)propertiesIndex); + } else { + datatypePropertiesIndex = new SPARQLDatatypePropertiesIndex((SPARQLPropertiesIndex)propertiesIndex); + objectPropertiesIndex = new SPARQLObjectPropertiesIndex((SPARQLPropertiesIndex)propertiesIndex); + } + } else { + datatypePropertiesIndex = propertiesIndex; + objectPropertiesIndex = propertiesIndex; + } + this.posTagger = posTagger; + this.wordNet = wordNet; + this.cache = cache; + + reasoner = new SPARQLReasoner(new SparqlEndpointKS(endpoint)); + setOptions(options); + setMappingIndex(knowledgebase.getMappingIndex()); } public SPARQLTemplateBasedLearner3(Knowledgebase knowledgebase){ - this(knowledgebase.getEndpoint(), knowledgebase.getResourceIndex(), knowledgebase.getClassIndex(),knowledgebase.getPropertyIndex(), new StanfordPartOfSpeechTagger(), new WordNet(), new Options()); + this(knowledgebase, new StanfordPartOfSpeechTagger(), new WordNet(), new Options()); setMappingIndex(knowledgebase.getMappingIndex()); } @@ -303,7 +332,11 @@ } public void setKnowledgebase(Knowledgebase knowledgebase){ - this.endpoint = knowledgebase.getEndpoint(); + if(knowledgebase instanceof LocalKnowledgebase){ + this.model = ((LocalKnowledgebase) knowledgebase).getModel(); + } else { + this.endpoint = ((RemoteKnowledgebase) knowledgebase).getEndpoint(); + } this.resourcesIndex = knowledgebase.getResourceIndex(); this.classesIndex = knowledgebase.getClassIndex(); this.propertiesIndex = knowledgebase.getPropertyIndex(); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/Knowledgebase.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/Knowledgebase.java 2013-02-11 12:18:04 UTC (rev 3898) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/Knowledgebase.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -2,12 +2,10 @@ import org.dllearner.common.index.Index; import org.dllearner.common.index.MappingBasedIndex; -import org.dllearner.kb.sparql.SparqlEndpoint; -public class Knowledgebase { +public abstract class Knowledgebase { private String label; - private SparqlEndpoint endpoint; private String description; private Index resourceIndex; @@ -16,30 +14,25 @@ private MappingBasedIndex mappingIndex; - public Knowledgebase(SparqlEndpoint endpoint, String label, String description, + public Knowledgebase(String label, String description, Index resourceIndex, Index propertyIndex, Index classIndex) { - this(endpoint, label, description, resourceIndex, propertyIndex, classIndex, null); + this(label, description, resourceIndex, propertyIndex, classIndex, null); } - public Knowledgebase(SparqlEndpoint endpoint, String label, String description, + public Knowledgebase(String label, String description, Index resourceIndex, Index propertyIndex, Index classIndex, MappingBasedIndex mappingIndex) { this.label = label; - this.endpoint = endpoint; this.description = description; this.resourceIndex = resourceIndex; this.propertyIndex = propertyIndex; this.classIndex = classIndex; this.mappingIndex = mappingIndex; } - + public String getLabel() { return label; } - public SparqlEndpoint getEndpoint() { - return endpoint; - } - public String getDescription() { return description; } Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LocalKnowledgebase.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LocalKnowledgebase.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LocalKnowledgebase.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -0,0 +1,22 @@ +package org.dllearner.algorithm.tbsl.util; + +import org.dllearner.common.index.Index; +import org.dllearner.common.index.MappingBasedIndex; + +import com.hp.hpl.jena.rdf.model.Model; + +public class LocalKnowledgebase extends Knowledgebase{ + + private Model model; + + public LocalKnowledgebase(Model model, String label, String description, Index resourceIndex, Index propertyIndex, + Index classIndex, MappingBasedIndex mappingIndex) { + super(label, description, resourceIndex, propertyIndex, classIndex, mappingIndex); + this.model = model; + } + + public Model getModel() { + return model; + } + +} Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/PopularityMap.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/PopularityMap.java 2013-02-11 12:18:04 UTC (rev 3898) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/PopularityMap.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -20,8 +20,10 @@ import org.dllearner.kb.sparql.SparqlEndpoint; import org.dllearner.kb.sparql.SparqlQuery; +import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; +import com.hp.hpl.jena.rdf.model.Model; public class PopularityMap { @@ -30,6 +32,7 @@ } private SparqlEndpoint endpoint; + private Model model; private ExtractionDBCache cache; private String file; @@ -41,9 +44,13 @@ this.file = file; this.endpoint = endpoint; this.cache = cache; - } + public PopularityMap(String file, Model model) { + this.file = file; + this.model = model; + } + public void init() { boolean deserialized = deserialize(); if(!deserialized){ @@ -137,7 +144,12 @@ query = String.format("SELECT COUNT(*) WHERE {?s ?p <%s>}", uri); } int pop = 0; - ResultSet rs = SparqlQuery.convertJSONtoResultSet(cache.executeSelectQuery(endpoint, query)); + ResultSet rs; + if(endpoint != null){ + rs = SparqlQuery.convertJSONtoResultSet(cache.executeSelectQuery(endpoint, query)); + } else { + rs = QueryExecutionFactory.create(query, model).execSelect(); + } QuerySolution qs; String projectionVar; while(rs.hasNext()){ Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/RemoteKnowledgebase.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/RemoteKnowledgebase.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/RemoteKnowledgebase.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -0,0 +1,22 @@ +package org.dllearner.algorithm.tbsl.util; + +import org.dllearner.common.index.Index; +import org.dllearner.common.index.MappingBasedIndex; +import org.dllearner.kb.sparql.SparqlEndpoint; + +public class RemoteKnowledgebase extends Knowledgebase{ + + private SparqlEndpoint endpoint; + + public RemoteKnowledgebase(SparqlEndpoint endpoint, String label, String description, Index resourceIndex, Index propertyIndex, + Index classIndex, MappingBasedIndex mappingIndex) { + super(label, description, resourceIndex, propertyIndex, classIndex, mappingIndex); + this.endpoint = endpoint; + } + + public SparqlEndpoint getEndpoint() { + return endpoint; + } + + +} Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2013-02-11 12:18:04 UTC (rev 3898) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -42,6 +42,7 @@ import org.dllearner.algorithm.tbsl.sparql.WeightedQuery; import org.dllearner.algorithm.tbsl.util.Knowledgebase; import org.dllearner.algorithm.tbsl.util.LatexWriter; +import org.dllearner.algorithm.tbsl.util.RemoteKnowledgebase; import org.dllearner.common.index.Index; import org.dllearner.common.index.SOLRIndex; import org.dllearner.kb.sparql.ExtractionDBCache; @@ -99,7 +100,7 @@ Index propertiesIndex = new SOLRIndex("http://dbpedia.aksw.org:8080/solr/dbpedia_properties"); - Knowledgebase kb = new Knowledgebase(endpoint, "DBpedia Live", "TODO", resourcesIndex, propertiesIndex, classesIndex, null); + Knowledgebase kb = new RemoteKnowledgebase(endpoint, "DBpedia Live", "TODO", resourcesIndex, propertiesIndex, classesIndex, null); stbl = new SPARQLTemplateBasedLearner2(kb); stbl.setUseIdealTagger(USE_IDEAL_TAGGER); Modified: trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner3Test.java =================================================================== --- trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner3Test.java 2013-02-11 12:18:04 UTC (rev 3898) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner3Test.java 2013-02-16 13:03:00 UTC (rev 3899) @@ -55,6 +55,7 @@ import org.dllearner.algorithm.tbsl.nlp.WordNet; import org.dllearner.algorithm.tbsl.templator.Templator; import org.dllearner.algorithm.tbsl.util.Knowledgebase; +import org.dllearner.algorithm.tbsl.util.RemoteKnowledgebase; import org.dllearner.common.index.HierarchicalIndex; import org.dllearner.common.index.Index; import org.dllearner.common.index.MappingBasedIndex; @@ -794,7 +795,7 @@ SPARQLTemplateBasedLearner2.class.getClassLoader().getResource("test/dbpedia_objectproperty_mappings.txt").getPath() ); - Knowledgebase kb = new Knowledgebase(dbpediaLiveEndpoint, "DBpedia Live", "TODO", resourcesIndex, propertiesIndex, classesIndex, mappingIndex); + Knowledgebase kb = new RemoteKnowledgebase(dbpediaLiveEndpoint, "DBpedia Live", "TODO", resourcesIndex, propertiesIndex, classesIndex, mappingIndex); return kb; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |