From: <lor...@us...> - 2011-06-16 10:10:31
|
Revision: 2895 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=2895&view=rev Author: lorenz_b Date: 2011-06-16 10:10:24 +0000 (Thu, 16 Jun 2011) Log Message: ----------- Implemented Triple reverse function, to generate queries for SYMPROPERTIES slot in both directions. 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/sparql/Query.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Triple.java trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.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-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/learning/SPARQLTemplateBasedLearner.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -394,6 +394,19 @@ } } for(Query query : queries){ + if(slot.getSlotType() == SlotType.SYMPROPERTY){ + Query reversedQuery = new Query(query); + reversedQuery.getTriplesWithVar(var).iterator().next().reverse(); +// logger.info("NORMAL QUERY:\n" + query.toString()); +// logger.info("REVERSED QUERY:\n" + reversedQuery.toString()); + if(prefix != null){ + reversedQuery.addPrefix(prefix); + reversedQuery.replaceVarWithPrefixedURI(var, uri); + } else { + reversedQuery.replaceVarWithURI(var, uri); + } + tmp.add(reversedQuery); + } Query newQuery = new Query(query); if(prefix != null){ newQuery.addPrefix(prefix); @@ -401,7 +414,6 @@ } else { newQuery.replaceVarWithURI(var, uri); } - tmp.add(newQuery); } prefix = null; @@ -699,7 +711,7 @@ // Logger.getLogger(DefaultHttpParams.class).setLevel(Level.OFF); // Logger.getLogger(HttpClient.class).setLevel(Level.OFF); // Logger.getLogger(HttpMethodBase.class).setLevel(Level.OFF); - String question = "Give me all school types."; + String question = "Who developed the video game World of Warcraft?"; SPARQLTemplateBasedLearner learner = new SPARQLTemplateBasedLearner(); SparqlEndpoint endpoint = new SparqlEndpoint(new URL("http://greententacle.techfak.uni-bielefeld.de:5171/sparql"), Collections.<String>singletonList(""), Collections.<String>emptyList()); 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-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -386,6 +386,28 @@ } } + + public List<SPARQL_Triple> getTriplesWithVar(String var){ + List<SPARQL_Triple> triples = new ArrayList<SPARQL_Triple>(); + + SPARQL_Term variable; + SPARQL_Property property; + SPARQL_Value value; + for(SPARQL_Triple triple : conditions){ + variable = triple.getVariable(); + property = triple.getProperty(); + value = triple.getValue(); + + if(variable.isVariable() && variable.getName().equals(var)){ + triples.add(triple); + } else if(property.isVariable() && property.getName().equals(var)){ + triples.add(triple); + } else if(value.isVariable() && value.getName().equals(var)){ + triples.add(triple); + } + } + return triples; + } @Override public int hashCode() { Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Triple.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Triple.java 2011-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Triple.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -34,10 +34,11 @@ public void reverse(){ SPARQL_Term newVariable = new SPARQL_Term(this.value.getName()); newVariable.setIsVariable(this.value.isVariable()); - this.variable = newVariable; SPARQL_Value newValue = new SPARQL_Value(this.variable.getName()); newValue.setIsVariable(this.variable.isVariable()); + + this.variable = newVariable; this.value = newValue; } Modified: trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java =================================================================== --- trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/util/LatexWriter.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -103,8 +103,8 @@ public void beginSummaryTable(){ summary.append("\\small\n"); - summary.append("\\begin{tabular}{| c | l | c | c |}\\hline\n"); - summary.append("id & question & P & R \\\\\\hline\\hline\n"); + summary.append("\\begin{tabular}{| c | p{10cm} | c | c | c |}\\hline\n"); + summary.append("id & question & P & R & \\\\\\hline\\hline\n"); } public void endSummaryTable(){ @@ -112,8 +112,16 @@ summary.append("\\end{tabular}\n"); } - public void addSummaryTableEntry(int id, String question, double precision, double recall){ - summary.append("\\ref{" + id + "}").append(" & ").append(question).append(" & ").append(precision).append(" & ").append(recall).append("\\\\\\hline\n"); + public void addSummaryTableEntry(int id, String question, double precision, double recall, String errorCode){ + String precisionStr = ""; + String recallStr = ""; + if(precision != -1 && recall != -1){ + precisionStr = Double.toString(precision); + recallStr = Double.toString(recall); + } + summary.append("\\ref{" + id + "}").append(" & ").append(question). + append(" & ").append(precisionStr).append(" & ").append(recallStr).append(" & ").append(errorCode).append("\\\\\\hline\n"); + } public void write(String file){ 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 2011-06-16 09:08:23 UTC (rev 2894) +++ trunk/components-ext/src/test/java/org/dllearner/algorithm/tbsl/Evaluation.java 2011-06-16 10:10:24 UTC (rev 2895) @@ -261,6 +261,7 @@ Object targetAnswer; double precision = -1; double recall = -1; + String errorCode = ""; LatexWriter latex = new LatexWriter(); int i = 0; for(Entry<Integer, String> entry : id2Question.entrySet()){ @@ -272,6 +273,7 @@ targetAnswer = id2Answer.get(questionId); precision = -1; recall = -1; + errorCode = ""; logger.info("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); logger.info("QUESTION: " + question + "\n"); logger.info("TARGET QUERY:\n" + targetQuery + "\n"); @@ -362,6 +364,9 @@ } coveredEntitiesMap.put(entity, covered); + if(!covered){ +// errorCode = "NE"; + } } latex.beginSubSubsection("Target entities"); StringBuilder sb = new StringBuilder(); @@ -373,7 +378,7 @@ latex.addText(sb.toString()); latex.beginSubSubsection("Keyword -> URIs"); sb = new StringBuilder(); - sb.append("\\begin{tabular}{| l | l |}\\hline\n"); + sb.append("\\begin{tabular}{| l | p{10cm} |}\\hline\n"); for(Entry<Slot, List<String>> slot2URI : slot2URIsMap.entrySet()){ if(!slot2URI.getKey().getWords().isEmpty()){ StringBuilder uris = new StringBuilder(); @@ -396,16 +401,17 @@ precision = computePrecision(targetAnswer, learnedAnswer); recall = computeRecall(targetAnswer, learnedAnswer); } - latex.addSummaryTableEntry(questionId, question, precision, recall); + latex.addSummaryTableEntry(questionId, question, precision, recall, errorCode); } catch (NoTemplateFoundException e) { e.printStackTrace(); logger.error("Template generation failed"); - latex.addSummaryTableEntry(questionId, question, precision, recall); + errorCode = "NT"; + latex.addSummaryTableEntry(questionId, question, precision, recall, errorCode); } catch(Exception e){ e.printStackTrace(); logger.error("ERROR"); - latex.addSummaryTableEntry(questionId, question, precision, recall); + latex.addSummaryTableEntry(questionId, question, precision, recall, errorCode); } } latex.write("log/evaluation.tex"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |