Repository: marmotta Updated Branches: refs/heads/develop 6ee8853d3 -> 7600c31c2
fix return types for aggregation functions Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/7600c31c Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/7600c31c Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/7600c31c Branch: refs/heads/develop Commit: 7600c31c2826e7f536f0d667ff30b60757627d0b Parents: 6ee8853 Author: Sebastian Schaffert <[email protected]> Authored: Thu Oct 9 16:53:36 2014 +0200 Committer: Sebastian Schaffert <[email protected]> Committed: Thu Oct 9 16:53:36 2014 +0200 ---------------------------------------------------------------------- .../kiwi/sparql/builder/SQLBuilder.java | 8 +++++- .../persistence/KiWiSparqlConnection.java | 26 ++++++++++++++------ 2 files changed, 25 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/7600c31c/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java index 11b3f72..29ecf97 100644 --- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java +++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/SQLBuilder.java @@ -1127,9 +1127,15 @@ public class SQLBuilder { } else if(expr instanceof Var) { return ProjectionType.NODE; } else if(expr instanceof MathExpr) { - MathExpr cmp = (MathExpr)expr; + MathExpr cmp = (MathExpr) expr; return opTypeToProjection(new OPTypeFinder(cmp).coerce()); + } else if(expr instanceof Count) { + return ProjectionType.INT; + } else if(expr instanceof Sum) { + return ProjectionType.DOUBLE; + } else if(expr instanceof Avg) { + return ProjectionType.DOUBLE; } else { return ProjectionType.STRING; } http://git-wip-us.apache.org/repos/asf/marmotta/blob/7600c31c/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java index 1f86982..0c85daa 100644 --- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java +++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/persistence/KiWiSparqlConnection.java @@ -137,26 +137,36 @@ public class KiWiSparqlConnection { resultRow.addBinding(sv.getSparqlName(), nodes[i]); } else if(sv.getProjectionType() != ProjectionType.NONE && (builder.getProjectedVars().isEmpty() || builder.getProjectedVars().contains(sv.getSparqlName()))) { // literal value - String value = row.getString(sv.getName()); - if(value != null) { + String svalue; switch (sv.getProjectionType()) { case URI: - resultRow.addBinding(sv.getSparqlName(), new URIImpl(value)); + svalue = row.getString(sv.getName()); + if(svalue != null) + resultRow.addBinding(sv.getSparqlName(), new URIImpl(svalue)); break; case INT: - resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(value, XSD.Integer)); + if(row.getObject(sv.getName()) != null) { + svalue = Integer.toString(row.getInt(sv.getName())); + resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(svalue, XSD.Integer)); + } break; case DOUBLE: - resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(value, XSD.Double)); + if(row.getObject(sv.getName()) != null) { + svalue = Double.toString(row.getDouble(sv.getName())); + resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(svalue, XSD.Double)); + } break; case STRING: - resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(value)); + svalue = row.getString(sv.getName()); + if(svalue != null) + resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(svalue)); break; default: - resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(value)); + svalue = row.getString(sv.getName()); + if(svalue != null) + resultRow.addBinding(sv.getSparqlName(), new LiteralImpl(svalue)); break; } - } } }
