From: <lor...@us...> - 2013-04-12 10:57:06
|
Revision: 3921 http://sourceforge.net/p/dl-learner/code/3921 Author: lorenz_b Date: 2013-04-12 10:57:03 +0000 (Fri, 12 Apr 2013) Log Message: ----------- Updated QTL. Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/QTL.java trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/datastructures/QueryTree.java trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/datastructures/impl/QueryTreeImpl.java trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/filters/Filters.java trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/filters/QuestionBasedQueryTreeFilter.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-04-12 10:21:20 UTC (rev 3920) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/QTL.java 2013-04-12 10:57:03 UTC (rev 3921) @@ -20,6 +20,7 @@ package org.dllearner.algorithms.qtl; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -40,6 +41,7 @@ import org.dllearner.algorithms.qtl.exception.NegativeTreeCoverageExecption; import org.dllearner.algorithms.qtl.exception.TimeOutException; import org.dllearner.algorithms.qtl.filters.QueryTreeFilter; +import org.dllearner.algorithms.qtl.filters.QuestionBasedQueryTreeFilter; import org.dllearner.algorithms.qtl.operations.NBR; import org.dllearner.algorithms.qtl.operations.lgg.LGGGenerator; import org.dllearner.algorithms.qtl.operations.lgg.LGGGeneratorImpl; @@ -365,7 +367,7 @@ if(logger.isDebugEnabled()){ logger.debug("LGG: \n" + lgg.getStringRepresentation()); } - logger.info(lgg.toSPARQLQueryString(enableNumericLiteralFilters, prefixes)); + logger.info(lgg.toSPARQLQueryString(true, enableNumericLiteralFilters, prefixes)); } public void setEnableNumericLiteralFilters(boolean enableNumericLiteralFilters) { @@ -429,6 +431,7 @@ PosOnlyLP lp = new PosOnlyLP(); lp.setPositiveExamples(Helper.getIndividualSet(positiveExamples)); QTL qtl = new QTL(lp, ks); + qtl.addQueryTreeFilter(new QuestionBasedQueryTreeFilter(Arrays.asList("soccer club", "Premier League"))); qtl.init(); qtl.start(); String query = qtl.getBestSPARQLQuery(); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/datastructures/QueryTree.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/datastructures/QueryTree.java 2013-04-12 10:21:20 UTC (rev 3920) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/datastructures/QueryTree.java 2013-04-12 10:57:03 UTC (rev 3921) @@ -130,9 +130,9 @@ String toSPARQLQueryString(); - String toSPARQLQueryString(boolean filtered); + String toSPARQLQueryString(boolean filterMeaninglessProperties, boolean useNumericalFilters); - String toSPARQLQueryString(boolean filtered, Map<String, String> prefixMap); + String toSPARQLQueryString(boolean filterMeaninglessProperties, boolean useNumericalFilters, Map<String, String> prefixMap); Query toSPARQLQuery(); Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/datastructures/impl/QueryTreeImpl.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/datastructures/impl/QueryTreeImpl.java 2013-04-12 10:21:20 UTC (rev 3920) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/datastructures/impl/QueryTreeImpl.java 2013-04-12 10:57:03 UTC (rev 3921) @@ -703,7 +703,7 @@ StringBuilder sb = new StringBuilder(); sb.append("SELECT DISTINCT ?x0 WHERE {\n"); List<String> filters = new ArrayList<String>(); - buildSPARQLQueryString(this, sb, false, filters); + buildSPARQLQueryString(this, sb, true, false, filters); for(String filter : filters){ sb.append(filter).append("\n"); } @@ -711,13 +711,12 @@ return sb.toString(); } - @Override - public String toSPARQLQueryString(boolean filtered) { - return toSPARQLQueryString(filtered, Collections.<String, String>emptyMap()); + public String toSPARQLQueryString(boolean filterMeaninglessProperties, boolean useNumericalFilters) { + return toSPARQLQueryString(filterMeaninglessProperties, useNumericalFilters, Collections.<String, String>emptyMap()); } @Override - public String toSPARQLQueryString(boolean filtered, Map<String, String> prefixMap) { + public String toSPARQLQueryString(boolean filterMeaninglessProperties, boolean useNumericalFilters, Map<String, String> prefixMap) { if(children.isEmpty()){ return "SELECT ?x0 WHERE {?x0 ?y ?z.}"; } @@ -725,11 +724,11 @@ StringBuilder sb = new StringBuilder(); List<String> filters = new ArrayList<String>(); sb.append("SELECT DISTINCT ?x0 WHERE {\n"); - buildSPARQLQueryString(this, sb, filtered, filters); + buildSPARQLQueryString(this, sb, filterMeaninglessProperties, useNumericalFilters, filters); for(String filter : filters){ sb.append(filter).append("\n"); } - sb.append("}"); + sb.append("}");System.out.println(sb.toString()); Query query = QueryFactory.create(sb.toString(), Syntax.syntaxARQ); query.setPrefix("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); query.setPrefix("rdfs", "http://www.w3.org/2000/01/rdf-schema#"); @@ -742,12 +741,14 @@ return query.toString(); } - private void buildSPARQLQueryString(QueryTree<N> tree, StringBuilder sb, boolean filtered, List<String> filters){ + private void buildSPARQLQueryString(QueryTree<N> tree, StringBuilder sb, boolean filterMeaninglessProperties, boolean useNumericalFilters, List<String> filters){ Object subject = null; if(tree.getUserObject().equals("?")){ subject = "?x" + cnt++; - if(tree.isLiteralNode() && !tree.getLiterals().isEmpty()){ - filters.add(getFilter(subject.toString(), tree.getLiterals())); + if(useNumericalFilters){ + if(tree.isLiteralNode() && !tree.getLiterals().isEmpty()){ + filters.add(getFilter(subject.toString(), tree.getLiterals())); + } } } else { subject = "<" + tree.getUserObject() + ">"; @@ -757,7 +758,7 @@ if(!tree.isLeaf()){ for(QueryTree<N> child : tree.getChildren()){ predicate = tree.getEdge(child); - if(filtered){ + if(filterMeaninglessProperties){ if(Filters.getAllFilterProperties().contains(predicate.toString())){ continue; } @@ -771,7 +772,7 @@ } sb.append(subject).append(" <").append(predicate).append("> ").append(object).append(".\n"); if(!objectIsResource){ - buildSPARQLQueryString(child, sb, filtered, filters); + buildSPARQLQueryString(child, sb, filterMeaninglessProperties, useNumericalFilters, filters); } } } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/filters/Filters.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/filters/Filters.java 2013-04-12 10:21:20 UTC (rev 3920) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/filters/Filters.java 2013-04-12 10:57:03 UTC (rev 3921) @@ -57,6 +57,7 @@ filters.add(FOAF.name.toString()); filters.add(FOAF.firstName.toString()); // filters.add(FOAF.givenname.toString()); + filters.add(FOAF.primaryTopic.toString()); return filters; } Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/filters/QuestionBasedQueryTreeFilter.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/filters/QuestionBasedQueryTreeFilter.java 2013-04-12 10:21:20 UTC (rev 3920) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/qtl/filters/QuestionBasedQueryTreeFilter.java 2013-04-12 10:57:03 UTC (rev 3921) @@ -1,5 +1,6 @@ package org.dllearner.algorithms.qtl.filters; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -15,7 +16,7 @@ public class QuestionBasedQueryTreeFilter implements QueryTreeFilter{ -private Set<String> questionWords; + private Collection<String> questionWords; private AbstractStringMetric qGramMetric; private AbstractStringMetric levensteinMetric; @@ -25,7 +26,7 @@ private int topK = 3; private double topKSumThreshold = 0.8; - public QuestionBasedQueryTreeFilter(Set<String> questionWords){ + public QuestionBasedQueryTreeFilter(Collection<String> questionWords){ this.questionWords = questionWords; qGramMetric = new QGramsDistance(); levensteinMetric = new Levenshtein(); @@ -39,7 +40,7 @@ return copy; } - public Set<String> getQuestionWords(){ + public Collection<String> getQuestionWords(){ return questionWords; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |