From: <lor...@us...> - 2011-03-28 10:20:30
|
Revision: 2737 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2737&view=rev Author: lorenz_b Date: 2011-03-28 10:20:23 +0000 (Mon, 28 Mar 2011) Log Message: ----------- Ranking of queries included. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/SolrSearch.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Filter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Property.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Value.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java Added Paths: ----------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/RatedQuery.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -4,15 +4,21 @@ import java.net.URL; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; import org.apache.log4j.Logger; import org.dllearner.algorithm.qtl.util.ModelGenerator; import org.dllearner.algorithm.qtl.util.ModelGenerator.Strategy; import org.dllearner.algorithm.tbsl.search.SolrSearch; import org.dllearner.algorithm.tbsl.sparql.Query; +import org.dllearner.algorithm.tbsl.sparql.RatedQuery; import org.dllearner.algorithm.tbsl.sparql.Slot; import org.dllearner.algorithm.tbsl.sparql.SlotType; import org.dllearner.algorithm.tbsl.sparql.Template; @@ -38,6 +44,7 @@ private static final int TOP_K = 5; private static final String SOLR_SERVER_URL = "http://139.18.2.173:8080/apache-solr-1.4.1"; private static final int RECURSION_DEPTH = 2; + private boolean USE_LUCENE_RANKING = true; private SparqlEndpoint endpoint = SparqlEndpoint.getEndpointDBpediaLiveAKSW(); private ExtractionDBCache cache = new ExtractionDBCache("cache"); @@ -51,6 +58,8 @@ private String question; + + public SPARQLTemplateBasedLearner(){ resource_index = new SolrSearch(SOLR_SERVER_URL + "/dbpedia_resources"); resource_index.setHitsPerPage(TOP_K); @@ -89,14 +98,19 @@ logger.info(t); } - //generate candidate SPQRL queries - List<String> possibleSPARQLQueries = getPossibleSPARQLQueries(templates); + //generate SPARQL query candidates + Set<? extends Query> sparqlQueryCandidates; + if(USE_LUCENE_RANKING){ + sparqlQueryCandidates = getRatedSPARQLQueryCandidates(templates); + } else { + sparqlQueryCandidates = getSPARQLQueryCandidates(templates); + } //test candidates on remote endpoint - validateAgainstRemoteEndpoint(possibleSPARQLQueries); + validateAgainstRemoteEndpoint(sparqlQueryCandidates); //test candidates on local model - validateAgainstLocalModel(possibleSPARQLQueries); + validateAgainstLocalModel(sparqlQueryCandidates); } @@ -115,21 +129,50 @@ return workingModel; } - private List<String> getPossibleSPARQLQueries(Set<Template> templates){ +// private List<String> getSPARQLQueryCandidates(Set<Template> templates){ +// logger.info("Generating candidate SPARQL queries..."); +// mon.start(); +// List<String> queries = new ArrayList<String>(); +// Query query; +// for(Template template : templates){ +// query = template.getQuery(); +// queries.add(query.toString()); +// for(Slot slot : template.getSlots()){ +// Set<String> tmp = new HashSet<String>(); +// String var = slot.getAnchor(); +// List<String> words = slot.getWords(); +// for(String uri : getCandidateURIs(slot)){ +// for(String q : queries){ +// tmp.add(q.replace("?" + var, "<" + uri + ">")); +// } +// } +// if(!words.isEmpty()){ +// queries.clear(); +// queries.addAll(tmp); +// } +// } +// } +// mon.stop(); +// logger.info("Done in " + mon.getLastValue() + "ms."); +// return queries; +// } + + private Set<Query> getSPARQLQueryCandidates(Set<Template> templates){ logger.info("Generating candidate SPARQL queries..."); mon.start(); - List<String> queries = new ArrayList<String>(); - Query query; + Set<Query> queries = new HashSet<Query>(); + for(Template template : templates){ - query = template.getQuery(); - queries.add(query.toString()); + queries.add(template.getQuery()); for(Slot slot : template.getSlots()){ - Set<String> tmp = new HashSet<String>(); + Set<Query> tmp = new HashSet<Query>(); String var = slot.getAnchor(); List<String> words = slot.getWords(); - for(String uri : getCandidateURIs(slot)){ - for(String q : queries){ - tmp.add(q.replace("?" + var, "<" + uri + ">")); + for(Entry<String, Float> entry1 : getCandidateURIsWithScore(slot).entrySet()){ + for(Query query : queries){ + Query newQuery = new Query(query); + newQuery.replaceVarWithURI(var, entry1.getKey()); + tmp.add(newQuery); } } if(!words.isEmpty()){ @@ -143,6 +186,67 @@ return queries; } + private Map<String, Float> getCandidateRatedSPARQLQueries(Set<Template> templates){ + logger.info("Generating candidate SPARQL queries..."); + mon.start(); + Map<String, Float> query2Score = new HashMap<String, Float>(); + + Query query; + for(Template template : templates){ + query = template.getQuery(); + query2Score.put(query.toString(), Float.valueOf(0)); + for(Slot slot : template.getSlots()){ + Map<String, Float> tmp = new HashMap<String, Float>(); + String var = slot.getAnchor(); + List<String> words = slot.getWords(); + for(Entry<String, Float> entry1 : getCandidateURIsWithScore(slot).entrySet()){ + for(Entry<String, Float> entry2 : query2Score.entrySet()){ + tmp.put(entry2.getKey().replace("?" + var, "<" + entry1.getKey() + ">"), Float.valueOf(entry1.getValue()+entry2.getValue())); + } + } + if(!words.isEmpty()){ + query2Score.clear(); + query2Score.putAll(tmp); + } + } + } + mon.stop(); + logger.info("Done in " + mon.getLastValue() + "ms."); + return query2Score; + } + + private Set<RatedQuery> getRatedSPARQLQueryCandidates(Set<Template> templates){ + logger.info("Generating candidate SPARQL queries..."); + mon.start(); + SortedSet<RatedQuery> ratedQueries = new TreeSet<RatedQuery>(); + + Query query; + for(Template template : templates){ + query = template.getQuery(); + ratedQueries.add(new RatedQuery(query, 0)); + for(Slot slot : template.getSlots()){ + Set<RatedQuery> tmp = new HashSet<RatedQuery>(); + String var = slot.getAnchor(); + List<String> words = slot.getWords(); + for(Entry<String, Float> entry1 : getCandidateURIsWithScore(slot).entrySet()){ + for(RatedQuery rQ : ratedQueries){ + RatedQuery newRQ = new RatedQuery(rQ, rQ.getScore()); + newRQ.replaceVarWithURI(var, entry1.getKey()); + newRQ.setScore(newRQ.getScore()+entry1.getValue()); + tmp.add(newRQ); + } + } + if(!words.isEmpty()){ + ratedQueries.clear(); + ratedQueries.addAll(tmp); + } + } + } + mon.stop(); + logger.info("Done in " + mon.getLastValue() + "ms."); + return ratedQueries; + } + private Set<String> getCandidateURIs(Slot slot){ logger.info("Generating candidate URIs for " + slot.getWords() + "..."); mon.start(); @@ -161,10 +265,41 @@ } mon.stop(); logger.info("Done in " + mon.getLastValue() + "ms."); - logger.info("Candiate URIs: " + uris); + logger.info("Candidate URIs: " + uris); return uris; } + private Map<String, Float> getCandidateURIsWithScore(Slot slot){ + logger.info("Generating candidate URIs for " + slot.getWords() + "..."); + mon.start(); + SolrSearch index = null; + Map<String, Float> uri2Score = new HashMap<String, Float>(); + boolean sorted = false; + if(slot.getSlotType() == SlotType.CLASS){ + index = class_index; + } else if(slot.getSlotType() == SlotType.PROPERTY){ + index = property_index; + } else if(slot.getSlotType() == SlotType.RESOURCE){ + index = resource_index; + sorted = true; + } + for(String word : slot.getWords()){ + uri2Score.putAll(index.getResourcesWithScores("label:" + word, sorted)); + } + mon.stop(); + logger.info("Done in " + mon.getLastValue() + "ms."); + logger.info("Candidate URIs: " + uri2Score.keySet()); + return uri2Score; + } + + private void validateAgainstRemoteEndpoint(Set<? extends Query> queries){ + List<String> queryStrings = new ArrayList<String>(); + for(Query query : queries){ + queryStrings.add(query.toString()); + } + validateAgainstRemoteEndpoint(queryStrings); + } + private void validateAgainstRemoteEndpoint(List<String> queries){ logger.info("Testing candidate SPARQL queries on remote endpoint..."); mon.start(); @@ -177,21 +312,33 @@ logger.info("Done in " + mon.getLastValue() + "ms."); } + private void validateAgainstLocalModel(Set<? extends Query> queries){ + List<String> queryStrings = new ArrayList<String>(); + for(Query query : queries){ + queryStrings.add(query.toString()); + } + validateAgainstLocalModel(queryStrings); + } + private void validateAgainstLocalModel(List<String> queries){ + logger.info("Testing candidate SPARQL queries on remote endpoint..."); + mon.start(); List<String> resources = resource_index.getResources(question); Model model = getWorkingModel(resources); for(String query : queries){ - System.out.println("Testing query:\n" + query); + logger.info("Testing query:\n" + query); List<String> results = getResultFromLocalModel(query, model); - System.out.println("Result: " + results); + logger.info("Result: " + results); } + mon.stop(); + logger.info("Done in " + mon.getLastValue() + "ms."); } private List<String> getResultFromRemoteEndpoint(String query){ List<String> resources = new ArrayList<String>(); - ResultSet rs = SparqlQuery.convertJSONtoResultSet(cache.executeSelectQuery(endpoint, query + " LIMIT 1")); + ResultSet rs = SparqlQuery.convertJSONtoResultSet(cache.executeSelectQuery(endpoint, query + " LIMIT 10")); QuerySolution qs; while(rs.hasNext()){ qs = rs.next(); @@ -226,5 +373,6 @@ learner.learnSPARQLQueries("Give me all soccer clubs in Premier League"); } + } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/ltag/parser/GrammarFilter.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -321,8 +321,48 @@ System.out.println("Look at that, " + s + " has no POS tag!"); // DEBUG } } - + result = extractNominalPhrases(result); return result; } + + private static List<Pair<String,String>> extractNominalPhrases(List<Pair<String,String>> tokenPOSpairs){ + List<Pair<String,String>> test = new ArrayList<Pair<String,String>>(); + + String nounPhrase = ""; + String phraseTag = ""; + for(Pair<String,String> pair : tokenPOSpairs){ + if(pair.snd.startsWith("NNP")){ + if(phraseTag.equals("NN")){ + if(!nounPhrase.isEmpty()){ + test.add(new Pair<String, String>(phraseTag.trim(), "NN")); + nounPhrase = ""; + } + } + phraseTag = "NNP"; + nounPhrase += " " + pair.fst; + } else if(pair.snd.startsWith("NN")){ + if(phraseTag.equals("NNP")){ + if(!nounPhrase.isEmpty()){ + test.add(new Pair<String, String>(phraseTag.trim(), "NNP")); + nounPhrase = ""; + } + } + phraseTag = "NN"; + nounPhrase += " " + pair.fst; + } else { + if(!nounPhrase.isEmpty()){ + test.add(new Pair<String, String>(nounPhrase.trim(), phraseTag)); + nounPhrase = ""; + } + test.add(pair); + } + } + if(!nounPhrase.isEmpty()){ + test.add(new Pair<String, String>(nounPhrase.trim(), phraseTag)); + nounPhrase = ""; + } + + return test; + } } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/SolrSearch.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/SolrSearch.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/search/SolrSearch.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -61,11 +61,19 @@ return getResourcesWithScores(queryString, hitsPerPage); } + public Map<String, Float> getResourcesWithScores(String queryString, boolean sorted) { + return getResourcesWithScores(queryString, hitsPerPage); + } + public Map<String, Float> getResourcesWithScores(String queryString, int limit) { - return getResourcesWithScores(queryString, limit, 0); + return getResourcesWithScores(queryString, limit, 0, false); } - public Map<String, Float> getResourcesWithScores(String queryString, int limit, int offset) { + public Map<String, Float> getResourcesWithScores(String queryString, int limit, boolean sorted) { + return getResourcesWithScores(queryString, limit, 0, sorted); + } + + public Map<String, Float> getResourcesWithScores(String queryString, int limit, int offset, boolean sorted) { Map<String, Float> resource2ScoreMap = new HashMap<String, Float>(); QueryResponse response; @@ -75,9 +83,10 @@ query.setRows(hitsPerPage); query.setStart(offset); query.addField("score"); - query.addSortField("score", SolrQuery.ORDER.desc); - query.addSortField( "pagerank", SolrQuery.ORDER.desc ); - + if(sorted){ + query.addSortField("score", SolrQuery.ORDER.desc); + query.addSortField( "pagerank", SolrQuery.ORDER.desc ); + } response = server.query(query); SolrDocumentList docList = response.getResults(); lastTotalHits = (int) docList.getNumFound(); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -46,7 +46,59 @@ this.limit = limit; this.offset = offset; } - + + //copy constructor + public Query(Query query){ + Set<SPARQL_Term> selTerms = new HashSet<SPARQL_Term>(); + for(SPARQL_Term term : query.getSelTerms()){ + SPARQL_Term newTerm = new SPARQL_Term(term.getName()); + newTerm.setIsVariable(term.isVariable()); + newTerm.setAggregate(term.getAggregate()); + newTerm.setOrderBy(term.getOrderBy()); + selTerms.add(newTerm); + } + this.selTerms = selTerms; + Set<SPARQL_Prefix> prefixes = new HashSet<SPARQL_Prefix>(); + for(SPARQL_Prefix prefix : query.getPrefixes()){ + SPARQL_Prefix newPrefix = new SPARQL_Prefix(prefix.getName(), prefix.getUrl()); + prefixes.add(newPrefix); + } + this.prefixes = prefixes; + Set<SPARQL_Triple> conditions = new HashSet<SPARQL_Triple>(); + for(SPARQL_Triple condition : query.getConditions()){ + SPARQL_Term variable = new SPARQL_Term(condition.getVariable().getName()); + variable.setIsVariable(condition.getVariable().isVariable()); + SPARQL_Property property = new SPARQL_Property(condition.getProperty().getName()); + property.setIsVariable(condition.getProperty().isVariable()); + property.setPrefix(condition.getProperty().getPrefix()); + SPARQL_Value value = new SPARQL_Term(condition.getValue().getName()); + value.setIsVariable(condition.getValue().isVariable()); + SPARQL_Triple newCondition = new SPARQL_Triple(variable, property, value); + conditions.add(newCondition); + } + this.conditions = conditions; + Set<SPARQL_Term> orderBy = new HashSet<SPARQL_Term>(); + for(SPARQL_Term order : query.getOrderBy()){ + SPARQL_Term newTerm = new SPARQL_Term(order.getName()); + newTerm.setIsVariable(order.isVariable()); + newTerm.setAggregate(order.getAggregate()); + newTerm.setOrderBy(order.getOrderBy()); + selTerms.add(newTerm); + } + //TODO add copy for filters + Set<SPARQL_Filter> filters = new HashSet<SPARQL_Filter>(); + for(SPARQL_Filter filter : query.getFilters()){ + for(SPARQL_Pair term : filter.getTerms()){ + + } + } + this.filter = filters; + + this.orderBy = orderBy; + this.limit = query.getLimit(); + this.offset = query.getOffset(); + } + public Set<Integer> getSlotInts() { Set<Integer> result = new HashSet<Integer>(); @@ -160,6 +212,10 @@ { return prefixes; } + + public Set<SPARQL_Filter> getFilters(){ + return filter; + } public void setPrefixes(Set<SPARQL_Prefix> prefixes) { @@ -267,5 +323,37 @@ { this.qt = qt; } + + public void replaceVarWithURI(String var, String uri){ + SPARQL_Value subject; + SPARQL_Value property; + SPARQL_Value object; + uri = "<" + uri + ">"; + + for(SPARQL_Triple triple : conditions){ + subject = triple.getVariable(); + property = triple.getProperty(); + object = triple.getValue(); + if(subject.isVariable()){ + if(subject.getName().equals(var)){ + subject.setName(uri); + subject.setIsVariable(false); + } + } + if(property.isVariable()){ + if(property.getName().equals(var)){ + property.setName(uri); + property.setIsVariable(false); + } + } + if(object.isVariable()){ + if(object.getName().equals(var)){ + object.setName(uri); + object.setIsVariable(false); + } + } + + } + } } Added: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/RatedQuery.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/RatedQuery.java (rev 0) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/RatedQuery.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -0,0 +1,54 @@ +package org.dllearner.algorithm.tbsl.sparql; + +public class RatedQuery extends Query implements Comparable<RatedQuery>{ + + private float score; + + public RatedQuery(Query query, float score){ + super(query); + this.score = score; + } + + public RatedQuery(float score){ + this.score = score; + } + + public float getScore() { + return score; + } + + public void setScore(float score) { + this.score = score; + } + +// @Override +// public String toString() { +// return super.toString() + "\nSCORE(" + score + ")"; +// } + + @Override + public boolean equals(Object obj) { + if(obj instanceof RatedQuery || obj == null){ + return false; + } + if(obj == this){ + return true; + } + RatedQuery other = (RatedQuery)obj; + return super.equals(other) && this.score == other.score; + } + + @Override + public int hashCode() { + return super.hashCode() + Float.valueOf(score).hashCode(); + } + + @Override + public int compareTo(RatedQuery o) { + if(o.getScore() < this.score){ + return -1; + } else if(o.getScore() > this.score){ + return 1; + } else return this.toString().compareTo(o.toString()); + } +} Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Filter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Filter.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Filter.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -40,6 +40,14 @@ terms.add(new SPARQL_Pair(term, o, t)); } + public Set<SPARQL_Pair> getTerms(){ + return terms; + } + + public boolean isAnd(){ + return and; + } + @Override public boolean equals(Object obj) { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Property.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Property.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Property.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -3,8 +3,6 @@ public class SPARQL_Property extends SPARQL_Value { private SPARQL_Prefix prefix = null; - private boolean isVariable = false; - public SPARQL_Property(String name) { super(); @@ -17,10 +15,6 @@ this.prefix = prefix; } - public void setIsVariable(boolean b) { - isVariable = b; - } - public SPARQL_Prefix getPrefix() { return prefix; } @@ -31,7 +25,7 @@ @Override public String toString() { - if (isVariable) { + if (isVariable()) { return "?" + name; } if (prefix == null) { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -5,7 +5,6 @@ SPARQL_OrderBy orderBy; SPARQL_Aggregate aggregate; SPARQL_Term as = null; - private boolean isVariable = false; public SPARQL_Term(String name) { super(name); @@ -18,7 +17,7 @@ this.name = name.replace("?","").replace("!",""); orderBy = SPARQL_OrderBy.NONE; aggregate = SPARQL_Aggregate.NONE; - isVariable = b; + setIsVariable(b); } public SPARQL_Term(String name, SPARQL_Aggregate aggregate) { @@ -28,7 +27,7 @@ public SPARQL_Term(String name, SPARQL_Aggregate aggregate,boolean b,SPARQL_Term t) { super(name); this.aggregate = aggregate; - isVariable = b; + setIsVariable(b); as = t; } @@ -37,10 +36,6 @@ this.orderBy = orderBy; } - public void setIsVariable(boolean b) { - isVariable = b; - } - @Override public boolean equals(Object obj) { if (!(obj instanceof SPARQL_Term)) return false; @@ -86,7 +81,7 @@ else return "DESC(?"+name.toLowerCase()+")"; } - if (isVariable) { + if (isVariable()) { return "?"+name.toLowerCase(); } else { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Value.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Value.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Value.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -15,6 +15,10 @@ public void setIsVariable(boolean b) { isVariable = b; } + + public boolean isVariable(){ + return isVariable; + } public SPARQL_Value(String name) { super(); Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/SlotBuilder.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -135,27 +135,6 @@ return false; } - private List<Pair<String,String>> extractNominalPhrases(List<Pair<String,String>> tokenPOSpairs){ - List<Pair<String,String>> test = new ArrayList<Pair<String,String>>(); - - String nounPhrase = ""; - String phraseTag = ""; - for(Pair<String,String> pair : tokenPOSpairs){ - if(pair.snd.startsWith("NNP")){ - if(phraseTag.equals("NN")){ - - } - phraseTag = "NNP"; - nounPhrase += " " + pair.snd; - } else if(pair.snd.startsWith("NN")){ - - } else { - test.add(pair); - } - } - - - return test; - } + } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/Templator.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -62,7 +62,7 @@ p.parse(tagged,g); if (p.getDerivationTrees().isEmpty()) { - p.clear(g,p.getTemps()); +// p.clear(g,p.getTemps()); System.out.println("'" + s + "' could not be parsed."); } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java 2011-03-24 11:34:07 UTC (rev 2736) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/templator/WordNet.java 2011-03-28 10:20:23 UTC (rev 2737) @@ -3,6 +3,8 @@ import java.util.ArrayList; import java.util.List; +import scala.actors.threadpool.Arrays; + import edu.smu.tspell.wordnet.*; public class WordNet { @@ -44,6 +46,25 @@ return synonyms; } + public List<String> getHypernyms(String s) { + + List<String> hypernyms = new ArrayList<String>(); + + Synset[] synsets = database.getSynsets(s); + Synset[] hypsets = {}; + for(int i = 0; i < synsets.length; i++){ + if(synsets[i].getType() == SynsetType.NOUN){ + hypsets = ((NounSynset)synsets[i]).getHypernyms(); + } else if(synsets[i].getType() == SynsetType.VERB){ + hypsets = ((VerbSynset)synsets[i]).getHypernyms(); + } + for(Synset hypset : hypsets){ + hypernyms.addAll(Arrays.asList(hypset.getWordForms())); + } + } + return hypernyms; + } + public List<String> getAttributes(String s) { List<String> result = new ArrayList<String>(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |