You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2014/11/09 18:10:16 UTC
marmotta git commit: SPARQL: - fix extension use in statement patterns
Repository: marmotta
Updated Branches:
refs/heads/develop 11cb38902 -> 90620e29a
SPARQL:
- fix extension use in statement patterns
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/90620e29
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/90620e29
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/90620e29
Branch: refs/heads/develop
Commit: 90620e29ad6fe016515b4b00fb2867196844ed88
Parents: 11cb389
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Sun Nov 9 18:10:54 2014 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Sun Nov 9 18:10:54 2014 +0100
----------------------------------------------------------------------
.../kiwi/sparql/builder/SQLBuilder.java | 26 +++++++++++++++++++-
.../sparql/builder/collect/ConditionFinder.java | 12 ++++-----
2 files changed, 30 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/marmotta/blob/90620e29/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 bf79193..ac24190 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
@@ -342,6 +342,9 @@ public class SQLBuilder {
try {
sv.getExpressions().add(evaluateExpression(ext.getExpr(), ValueType.NODE));
+ if(sv.getProjectionType() == ValueType.NODE && getProjectionType(ext.getExpr()) != ValueType.NODE) {
+ sv.setProjectionType(getProjectionType(ext.getExpr()));
+ }
} catch(IllegalStateException ex) {
deferredExtensions.add(ext);
}
@@ -364,7 +367,28 @@ public class SQLBuilder {
// if the variable has been used before, add a join condition to the first occurrence
if(sv.getExpressions().size() > 0) {
- p.getConditions().add(sv.getExpressions().get(0) + " = " + pName + "." + positions[i]);
+ switch (sv.getProjectionType()) {
+ case INT:
+ p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".ivalue");
+ break;
+ case DOUBLE:
+ p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".dvalue");
+ break;
+ case DATE:
+ p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".tvalue");
+ break;
+ case BOOL:
+ p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".bvalue");
+ break;
+ case URI:
+ case STRING:
+ p.getConditions().add(sv.getExpressions().get(0) + " = " + sv.getAlias() + ".svalue");
+ break;
+
+ default:
+ p.getConditions().add(sv.getExpressions().get(0) + " = " + pName + "." + positions[i]);
+ break;
+ }
}
sv.getExpressions().add(pName + "." + positions[i]);
http://git-wip-us.apache.org/repos/asf/marmotta/blob/90620e29/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java
index 81519ca..64fd830 100644
--- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java
+++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/ConditionFinder.java
@@ -253,13 +253,11 @@ public class ConditionFinder extends QueryModelVisitorBase<RuntimeException> {
@Override
public void meet(ExtensionElem node) throws RuntimeException {
- if(neededVariables.contains(node.getName())) {
- valueNeeded++;
- super.meet(node);
- valueNeeded--;
- } else {
- super.meet(node);
- }
+ neededVariables.add(node.getName());
+
+ valueNeeded++;
+ super.meet(node);
+ valueNeeded--;
}
}