From: <lor...@us...> - 2011-09-14 12:58:17
|
Revision: 3261 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3261&view=rev Author: lorenz_b Date: 2011-09-14 12:58:07 +0000 (Wed, 14 Sep 2011) Log Message: ----------- Fixed bug in replacement of variables with URIs which is done during Query candidate generation. Modified Paths: -------------- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.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_Term.java Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-09-14 11:26:09 UTC (rev 3260) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2011-09-14 12:58:07 UTC (rev 3261) @@ -291,13 +291,13 @@ } if (arity == 1) { - SPARQL_Term term = new SPARQL_Term(simple.getArguments().get(0).getValue(),false); + SPARQL_Term term = new SPARQL_Term(simple.getArguments().get(0).getValue(),false);term.setIsVariable(true); query.addCondition(new SPARQL_Triple(term,new SPARQL_Property("type",new SPARQL_Prefix("rdf","")),prop)); } else if (arity == 2) { - String arg1 = simple.getArguments().get(0).getValue(); - String arg2 = simple.getArguments().get(1).getValue(); - query.addCondition(new SPARQL_Triple(new SPARQL_Term(arg1,false),prop,new SPARQL_Term(arg2,false))); + String arg1 = simple.getArguments().get(0).getValue();SPARQL_Term term1 = new SPARQL_Term(arg1,false);term1.setIsVariable(true); + String arg2 = simple.getArguments().get(1).getValue();SPARQL_Term term2 = new SPARQL_Term(arg2,false);term2.setIsVariable(true); + query.addCondition(new SPARQL_Triple(term1, prop, term2)); } else if (arity > 2) { // TODO 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-09-14 11:26:09 UTC (rev 3260) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-09-14 12:58:07 UTC (rev 3261) @@ -7,6 +7,7 @@ import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.net.URLDecoder; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -739,15 +740,17 @@ // Logger.getLogger(HttpClient.class).setLevel(Level.OFF); // Logger.getLogger(HttpMethodBase.class).setLevel(Level.OFF); // String question = "Give me all books written by authors influenced by Ernest Hemingway."; - String question = "Give me all cities in Canada."; +// String question = "Give me all cities in Canada."; + + String question = "Give me all soccer clubs in Premier League?"; SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner(); SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://greententacle.techfak.uni-bielefeld.de:5171/sparql"), Collections.<String>singletonList(""), Collections.<String>emptyList()); learner.setEndpoint(endpoint); learner.setQuestion(question); learner.learnSPARQLQueries(); - System.out.println(learner.getBestSPARQLQuery()); - System.out.println(learner.getTemplates().iterator().next().getLexicalAnswerType()); + System.out.println("Learned query:\n" + learner.getBestSPARQLQuery()); + System.out.println("Lexical answer type is: " + learner.getTemplates().iterator().next().getLexicalAnswerType()); } 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-09-14 11:26:09 UTC (rev 3260) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java 2011-09-14 12:58:07 UTC (rev 3261) @@ -68,10 +68,14 @@ for(SPARQL_Triple condition : query.getConditions()){ SPARQL_Term variable = new SPARQL_Term(condition.getVariable().getName()); variable.setIsVariable(condition.getVariable().isVariable()); + variable.setIsURI(condition.getVariable().isURI); 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()); + SPARQL_Term value = new SPARQL_Term(condition.getValue().getName()); + if(condition.getValue() instanceof SPARQL_Term){ + value.setIsURI(((SPARQL_Term)condition.getValue()).isURI); + } value.setIsVariable(condition.getValue().isVariable()); SPARQL_Triple newCondition = new SPARQL_Triple(variable, property, value); conditions.add(newCondition); @@ -357,8 +361,8 @@ } public void replaceVarWithPrefixedURI(String var, String uri){ - SPARQL_Value subject; - SPARQL_Value property; + SPARQL_Term subject; + SPARQL_Property property; SPARQL_Value object; for(SPARQL_Triple triple : conditions){ @@ -369,6 +373,7 @@ if(subject.getName().equals(var)){ subject.setName(uri); subject.setIsVariable(false); + subject.setIsURI(true); } } if(property.isVariable()){ @@ -381,6 +386,9 @@ if(object.getName().equals(var)){ object.setName(uri); object.setIsVariable(false); + if(object instanceof SPARQL_Term){ + ((SPARQL_Term) object).setIsURI(true); + } } } 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-09-14 11:26:09 UTC (rev 3260) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java 2011-09-14 12:58:07 UTC (rev 3261) @@ -69,6 +69,10 @@ { return name.startsWith("'") || name.matches("\\d+"); } + + public void setIsURI(boolean isURI){ + this.isURI = isURI; + } @Override public String toString() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |