From: <chr...@us...> - 2012-07-12 12:13:13
|
Revision: 3784 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3784&view=rev Author: christinaunger Date: 2012-07-12 12:13:02 +0000 (Thu, 12 Jul 2012) Log Message: ----------- [tbsl] if COUNT then GROUP BY + HAVING. also removed number replacement. 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/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 2012-07-12 11:34:09 UTC (rev 3783) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/converter/DRS2SPARQL_Converter.java 2012-07-12 12:13:02 UTC (rev 3784) @@ -264,7 +264,7 @@ if (!predicate.contains(":")) prop.setIsVariable(true); boolean literal = false; - if (simple.getArguments().size() > 1 && simple.getArguments().get(1).getValue().matches("\\d+")) { + if (simple.getArguments().size() > 1 && (simple.getArguments().get(1).getValue().startsWith("\'") || simple.getArguments().get(1).getValue().matches("[0-9]+"))) { literal = true; } @@ -273,11 +273,7 @@ if (simple.getArguments().get(1).getValue().matches("[0-9]+")) { String fresh = "v"+createFresh(); out.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, fresh)); - out.addFilter(new SPARQL_Filter( - new SPARQL_Pair( - new SPARQL_Term(fresh,false), - new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), - SPARQL_PairType.EQ))); + out.addHaving(new SPARQL_Having("?"+fresh + " = " + simple.getArguments().get(1).getValue())); } else { out.addSelTerm(new SPARQL_Term(simple.getArguments().get(0).getValue(), SPARQL_Aggregate.COUNT, simple.getArguments().get(1).getValue())); } @@ -326,7 +322,7 @@ } else if (predicate.equals("equal")) { out.addFilter(new SPARQL_Filter( new SPARQL_Pair( - new SPARQL_Term(simple.getArguments().get(0).getValue(),true), + new SPARQL_Term(simple.getArguments().get(0).getValue(),false), new SPARQL_Term(simple.getArguments().get(1).getValue(),literal), SPARQL_PairType.EQ))); return out; @@ -335,14 +331,14 @@ out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), - new SPARQL_Term("'^"+simple.getArguments().get(1).getValue()+"'",true), + new SPARQL_Term("'^"+simple.getArguments().get(1).getValue()+"'",false), SPARQL_PairType.REGEX))); } else if (predicate.equals("regex")) { out.addFilter(new SPARQL_Filter( new SPARQL_Pair( new SPARQL_Term(simple.getArguments().get(0).getValue(),false), - new SPARQL_Term(simple.getArguments().get(1).getValue().replace("_","").trim(),true), + new SPARQL_Term(simple.getArguments().get(1).getValue().replace("_","").trim(),false), SPARQL_PairType.REGEX))); } else { @@ -403,10 +399,13 @@ } public void redundantEqualRenaming(DRS drs) { - + Set<Simple_DRS_Condition> equalsConditions = new HashSet<Simple_DRS_Condition>(); for (Simple_DRS_Condition c : drs.getAllSimpleConditions()) { - if(c.getPredicate().equals("equal")) equalsConditions.add(c); + if(c.getPredicate().equals("equal") + && !c.getArguments().get(0).getValue().matches("[0-9]+") + && !c.getArguments().get(1).getValue().matches("[0-9]+")) + equalsConditions.add(c); } DiscourseReferent firstArg; @@ -426,7 +425,7 @@ secondIsInt = secondArg.getValue().matches("(\\?)?[0..9]+"); drs.removeCondition(c); - if (firstIsURI || firstIsInt) { + if (firstIsURI) { // firstIsURI || firstIsInt drs.replaceEqualRef(secondArg, firstArg, true); for (Slot s : slots) { if (s.getAnchor().equals(secondArg.getValue())) @@ -436,7 +435,7 @@ s.getWords().add(firstArg.getValue()); } } - } else if (secondIsURI || secondIsInt) { + } else if (secondIsURI) { // secondIsURI || secondIsInt drs.replaceEqualRef(firstArg, secondArg, true); for (Slot s : slots) { if (s.getAnchor().equals(firstArg.getValue())) 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 2012-07-12 11:34:09 UTC (rev 3783) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/Query.java 2012-07-12 12:13:02 UTC (rev 3784) @@ -14,6 +14,7 @@ Set<SPARQL_Triple> conditions; Set<SPARQL_Term> orderBy; Set<SPARQL_Filter> filter; + Set<SPARQL_Having> having; Set<SPARQL_Union> unions; SPARQL_QueryType qt = SPARQL_QueryType.SELECT; @@ -28,6 +29,7 @@ conditions = new HashSet<SPARQL_Triple>(); orderBy = new HashSet<SPARQL_Term>(); filter = new HashSet<SPARQL_Filter>(); + having = new HashSet<SPARQL_Having>(); unions = new HashSet<SPARQL_Union>(); } @@ -38,6 +40,7 @@ this.prefixes = prefixes; this.conditions = conditions; filter = new HashSet<SPARQL_Filter>(); + having = new HashSet<SPARQL_Having>(); unions = new HashSet<SPARQL_Union>(); } @@ -50,6 +53,8 @@ this.orderBy = orderBy; this.limit = limit; this.offset = offset; + filter = new HashSet<SPARQL_Filter>(); + having = new HashSet<SPARQL_Having>(); unions = new HashSet<SPARQL_Union>(); } @@ -107,6 +112,7 @@ } } this.filter = filters; + this.having = having; this.unions = query.unions; // TODO copy unions this.limit = query.getLimit(); @@ -195,6 +201,10 @@ if(groupBy != null){ retVal += "GROUP BY " + groupBy + "\n"; } + + if (!having.isEmpty()) { + for (SPARQL_Having h : having) retVal += h.toString() + "\n"; + } if (orderBy != null && !orderBy.isEmpty()) { @@ -275,6 +285,10 @@ this.filter.add(f); } + public void addHaving(SPARQL_Having h) + { + this.having.add(h); + } public Set<SPARQL_Term> getOrderBy() { 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 2012-07-12 11:34:09 UTC (rev 3783) +++ trunk/components-ext/src/main/java/org/dllearner/algorithm/tbsl/sparql/SPARQL_Term.java 2012-07-12 12:13:02 UTC (rev 3784) @@ -79,7 +79,7 @@ public boolean isString() { - return name.startsWith("'") || name.matches("\\d+"); + return name.startsWith("'"); } public void setIsURI(boolean isURI){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |