SPARQL: code simplification (a single enum for representing value types instead 
of two)


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/b7ba8ff3
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/b7ba8ff3
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/b7ba8ff3

Branch: refs/heads/develop
Commit: b7ba8ff361b4a96f1c10e79f74a1a1d653e1fc1e
Parents: 89df9e0
Author: Sebastian Schaffert <[email protected]>
Authored: Fri Nov 7 16:00:14 2014 +0100
Committer: Sebastian Schaffert <[email protected]>
Committed: Fri Nov 7 16:00:14 2014 +0100

----------------------------------------------------------------------
 .../marmotta/kiwi/sparql/builder/OPTypes.java   | 27 -------
 .../kiwi/sparql/builder/ProjectionType.java     | 27 -------
 .../kiwi/sparql/builder/SQLBuilder.java         | 70 ++++++----------
 .../marmotta/kiwi/sparql/builder/ValueType.java | 27 +++++++
 .../collect/LiteralTypeExpressionFinder.java    |  4 +-
 .../sparql/builder/collect/OPTypeFinder.java    | 42 +++++-----
 .../builder/eval/ValueExpressionEvaluator.java  | 84 +++++++++-----------
 .../kiwi/sparql/builder/model/SQLUnion.java     |  6 +-
 .../kiwi/sparql/builder/model/SQLVariable.java  |  8 +-
 .../evaluation/KiWiEvaluationStrategy.java      |  6 +-
 .../kiwi/sparql/function/NativeFunction.java    |  6 +-
 .../kiwi/sparql/function/cast/NBooleanCast.java | 10 +--
 .../sparql/function/cast/NDateTimeCast.java     | 10 +--
 .../kiwi/sparql/function/cast/NDecimalCast.java | 10 +--
 .../kiwi/sparql/function/cast/NDoubleCast.java  | 10 +--
 .../kiwi/sparql/function/cast/NFloatCast.java   | 10 +--
 .../kiwi/sparql/function/cast/NIntegerCast.java | 10 +--
 .../kiwi/sparql/function/cast/NStringCast.java  | 10 +--
 .../function/custom/FulltextQueryFunction.java  | 10 +--
 .../function/custom/FulltextSearchFunction.java | 10 +--
 .../kiwi/sparql/function/custom/Stddev.java     | 10 +--
 .../kiwi/sparql/function/custom/Variance.java   | 10 +--
 .../kiwi/sparql/function/datetime/NDay.java     | 10 +--
 .../kiwi/sparql/function/datetime/NHours.java   | 10 +--
 .../kiwi/sparql/function/datetime/NMinutes.java | 10 +--
 .../kiwi/sparql/function/datetime/NMonth.java   | 10 +--
 .../kiwi/sparql/function/datetime/NNow.java     | 10 +--
 .../kiwi/sparql/function/datetime/NSeconds.java | 10 +--
 .../kiwi/sparql/function/datetime/NYear.java    | 10 +--
 .../kiwi/sparql/function/hash/NMD5.java         | 10 +--
 .../kiwi/sparql/function/hash/NSHA1.java        | 10 +--
 .../kiwi/sparql/function/hash/NSHA256.java      | 10 +--
 .../kiwi/sparql/function/hash/NSHA384.java      | 10 +--
 .../kiwi/sparql/function/hash/NSHA512.java      | 10 +--
 .../kiwi/sparql/function/numeric/NAbs.java      | 10 +--
 .../kiwi/sparql/function/numeric/NCeil.java     | 10 +--
 .../kiwi/sparql/function/numeric/NFloor.java    | 10 +--
 .../kiwi/sparql/function/numeric/NRand.java     | 10 +--
 .../kiwi/sparql/function/numeric/NRound.java    | 10 +--
 .../kiwi/sparql/function/rdfterm/NSTRUUID.java  | 10 +--
 .../kiwi/sparql/function/rdfterm/NUUID.java     | 10 +--
 .../kiwi/sparql/function/string/NConcat.java    | 10 +--
 .../kiwi/sparql/function/string/NContains.java  | 10 +--
 .../kiwi/sparql/function/string/NLowerCase.java | 10 +--
 .../kiwi/sparql/function/string/NReplace.java   | 10 +--
 .../kiwi/sparql/function/string/NStrAfter.java  | 10 +--
 .../kiwi/sparql/function/string/NStrBefore.java | 10 +--
 .../kiwi/sparql/function/string/NStrEnds.java   | 10 +--
 .../kiwi/sparql/function/string/NStrLen.java    | 10 +--
 .../kiwi/sparql/function/string/NStrStarts.java | 10 +--
 .../kiwi/sparql/function/string/NSubstring.java | 12 +--
 .../kiwi/sparql/function/string/NUpperCase.java | 10 +--
 52 files changed, 332 insertions(+), 387 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/OPTypes.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/OPTypes.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/OPTypes.java
deleted file mode 100644
index 858dcde..0000000
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/OPTypes.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.marmotta.kiwi.sparql.builder;
-
-/**
-* Operand types for operations - used for implicit type coercion.
-*
-* @author Sebastian Schaffert ([email protected])
-*/
-public enum OPTypes {
-    STRING, DOUBLE, INT, DATE, BOOL, VALUE, ANY, TERM, URI, BNODE
-}

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/ProjectionType.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/ProjectionType.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/ProjectionType.java
deleted file mode 100644
index 5b903c0..0000000
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/ProjectionType.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.marmotta.kiwi.sparql.builder;
-
-/**
- * Add file description here!
- *
- * @author Sebastian Schaffert ([email protected])
- */
-public enum ProjectionType {
-    NODE, URI, BNODE, STRING, INT, DOUBLE, DATE, BOOL, NONE
-}

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/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 08b602c..864d2cb 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
@@ -230,7 +230,7 @@ public class SQLBuilder {
 
                     // select those variables that are really projected and 
not only needed in a grouping construct
                     if(projectedVars.contains(sv.getSparqlName()) || new 
SQLProjectionFinder(query,v.getName()).found) {
-                        sv.setProjectionType(ProjectionType.NODE);
+                        sv.setProjectionType(ValueType.NODE);
                     }
 
                     sv.getExpressions().add(""+ 
converter.convert(v.getValue()).getId());
@@ -258,7 +258,7 @@ public class SQLBuilder {
 
                             // select those variables that are really 
projected and not only needed in a grouping construct
                             if(projectedVars.contains(sv.getSparqlName()) || 
new SQLProjectionFinder(query,v.getName()).found) {
-                                sv.setProjectionType(ProjectionType.NODE);
+                                sv.setProjectionType(ValueType.NODE);
                             }
 
                             String pName = p.getName();
@@ -319,8 +319,8 @@ public class SQLBuilder {
 
                 // Functions that return a string literal do so with the 
string literal of the same kind as the first
                 // argument (simple literal, plain literal with same language 
tag, xsd:string).
-                ProjectionType type = getProjectionType(ext.getExpr());
-                if(type == ProjectionType.STRING) {
+                ValueType type = getProjectionType(ext.getExpr());
+                if(type == ValueType.STRING) {
                     
sv.setLiteralTypeExpression(getLiteralTypeExpression(ext.getExpr()));
                     
sv.setLiteralLangExpression(getLiteralLangExpression(ext.getExpr()));
                     // TODO: the following will produce invalid results for 
aggregation functions
@@ -341,7 +341,7 @@ public class SQLBuilder {
             }
 
             try {
-                sv.getExpressions().add(evaluateExpression(ext.getExpr(), 
OPTypes.ANY));
+                sv.getExpressions().add(evaluateExpression(ext.getExpr(), 
ValueType.NODE));
             } catch(IllegalStateException ex) {
                 deferredExtensions.add(ext);
             }
@@ -394,7 +394,7 @@ public class SQLBuilder {
             Var v = new Var(ext.getName());
 
             SQLVariable sv = variables.get(v.getName());
-            sv.getExpressions().add(evaluateExpression(ext.getExpr(), 
OPTypes.ANY));
+            sv.getExpressions().add(evaluateExpression(ext.getExpr(), 
ValueType.NODE));
         }
 
         // find context restrictions of patterns and match them with potential 
restrictions given in the
@@ -479,7 +479,7 @@ public class SQLBuilder {
         // iterate over all fragments and add translate the filter conditions 
into SQL
         for(SQLFragment f : fragments) {
             for(ValueExpr e : f.getFilters()) {
-                f.getConditions().add(evaluateExpression(e, OPTypes.ANY));
+                f.getConditions().add(evaluateExpression(e, ValueType.NODE));
             }
         }
 
@@ -570,7 +570,7 @@ public class SQLBuilder {
 
             for(SQLAbstractSubquery sq : f.getSubqueries()) {
                 for(SQLVariable sq_v : sq.getQueryVariables()) {
-                    if(!joined.contains(sq_v.getSparqlName()) && 
resolveVariables.contains(sq_v.getSparqlName()) && sq_v.getProjectionType() == 
ProjectionType.NODE) {
+                    if(!joined.contains(sq_v.getSparqlName()) && 
resolveVariables.contains(sq_v.getSparqlName()) && sq_v.getProjectionType() == 
ValueType.NODE) {
                         // this is needed in case we need to JOIN with the 
NODES table to retrieve values
                         SQLVariable sv = variables.get(sq_v.getSparqlName());  
// fetch the name of the variable in the enclosing query
                         sq.getJoinFields().add(new 
SQLAbstractSubquery.VariableMapping(sv.getName(), sq_v.getName()));
@@ -591,7 +591,7 @@ public class SQLBuilder {
 
 
         for(SQLVariable v : vars) {
-            if(v.getProjectionType() != ProjectionType.NONE && 
(projectedVars.isEmpty() || projectedVars.contains(v.getSparqlName()))) {
+            if(v.getProjectionType() != ValueType.NONE && 
(projectedVars.isEmpty() || projectedVars.contains(v.getSparqlName()))) {
                 String projectedName = v.getName();
                 String fromName = v.getExpressions().get(0);
 
@@ -610,7 +610,7 @@ public class SQLBuilder {
         int counter = 0;
         if(distinct) {
             for(OrderElem e : orderby) {
-                projections.add(evaluateExpression(e.getExpr(), OPTypes.VALUE) 
+ " AS _OB" + (++counter));
+                projections.add(evaluateExpression(e.getExpr(), 
ValueType.STRING) + " AS _OB" + (++counter));
             }
         }
 
@@ -744,7 +744,7 @@ public class SQLBuilder {
         if(orderby.size() > 0) {
             for(Iterator<OrderElem> it = orderby.iterator(); it.hasNext(); ) {
                 OrderElem elem = it.next();
-                orderClause.append(evaluateExpression(elem.getExpr(), 
OPTypes.VALUE));
+                orderClause.append(evaluateExpression(elem.getExpr(), 
ValueType.STRING));
                 if(elem.isAscending()) {
                     orderClause.append(" ASC");
                 } else {
@@ -806,22 +806,22 @@ public class SQLBuilder {
     }
 
 
-    private String evaluateExpression(ValueExpr expr, final OPTypes optype) {
+    private String evaluateExpression(ValueExpr expr, final ValueType optype) {
         return new ValueExpressionEvaluator(expr, this, optype).build();
     }
 
 
-    protected ProjectionType getProjectionType(ValueExpr expr) {
+    protected ValueType getProjectionType(ValueExpr expr) {
         if(expr instanceof BNodeGenerator) {
-            return ProjectionType.BNODE;
+            return ValueType.BNODE;
         } else if(expr instanceof IRIFunction) {
-            return ProjectionType.URI;
+            return ValueType.URI;
         } else if(expr instanceof FunctionCall) {
-            return opTypeToProjection(functionRegistry.get(((FunctionCall) 
expr).getURI()).getReturnType());
+            return functionRegistry.get(((FunctionCall) 
expr).getURI()).getReturnType();
         } else if(expr instanceof NAryValueOperator) {
             return getProjectionType(((NAryValueOperator) 
expr).getArguments().get(0));
         } else if(expr instanceof ValueConstant) {
-            return ProjectionType.NODE;
+            return ValueType.NODE;
             /*
             if (((ValueConstant) expr).getValue() instanceof URI) {
                 return ProjectionType.URI;
@@ -840,47 +840,25 @@ public class SQLBuilder {
             }
             */
         } else if(expr instanceof Var) {
-            return ProjectionType.NODE;
+            return ValueType.NODE;
         } else if(expr instanceof MathExpr) {
             MathExpr cmp = (MathExpr) expr;
 
-            return opTypeToProjection(new OPTypeFinder(cmp).coerce());
+            return new OPTypeFinder(cmp).coerce();
         } else if(expr instanceof Count) {
-            return ProjectionType.INT;
+            return ValueType.INT;
         } else if(expr instanceof Sum) {
-            return ProjectionType.DOUBLE;
+            return ValueType.DOUBLE;
         } else if(expr instanceof Avg) {
-            return ProjectionType.DOUBLE;
+            return ValueType.DOUBLE;
         } else if(expr instanceof Compare) {
-            return ProjectionType.BOOL;
+            return ValueType.BOOL;
         } else {
-            return ProjectionType.STRING;
+            return ValueType.STRING;
         }
 
     }
 
-    private ProjectionType opTypeToProjection(OPTypes t) {
-        switch (t) {
-            case ANY:
-                return ProjectionType.NODE;
-            case URI:
-                return ProjectionType.URI;
-            case DOUBLE:
-                return ProjectionType.DOUBLE;
-            case INT:
-                return ProjectionType.INT;
-            case DATE:
-                return ProjectionType.DATE;
-            case STRING:
-                return ProjectionType.STRING;
-            case BOOL:
-                return ProjectionType.BOOL;
-            default:
-                log.warn("optype {} cannot be projected!",t);
-                return ProjectionType.STRING;
-        }
-    }
-
 
     private String getLiteralLangExpression(ValueExpr expr) {
         Var langVar = new LiteralTypeExpressionFinder(expr).expr;

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/ValueType.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/ValueType.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/ValueType.java
new file mode 100644
index 0000000..55df538
--- /dev/null
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/ValueType.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.marmotta.kiwi.sparql.builder;
+
+/**
+* Operand types for operations - used for implicit type coercion.
+*
+* @author Sebastian Schaffert ([email protected])
+*/
+public enum ValueType {
+    DOUBLE, INT, DATE, BOOL, STRING, NODE, TERM, URI, BNODE, NONE
+}

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/LiteralTypeExpressionFinder.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/LiteralTypeExpressionFinder.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/LiteralTypeExpressionFinder.java
index d859205..9bbeb57 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/LiteralTypeExpressionFinder.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/LiteralTypeExpressionFinder.java
@@ -17,7 +17,7 @@
 
 package org.apache.marmotta.kiwi.sparql.builder.collect;
 
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunctionRegistry;
 import org.openrdf.query.algebra.FunctionCall;
@@ -44,7 +44,7 @@ public class LiteralTypeExpressionFinder  extends 
QueryModelVisitorBase<RuntimeE
     @Override
     public void meet(FunctionCall node) throws RuntimeException {
         NativeFunction nf = 
NativeFunctionRegistry.getInstance().get(node.getURI());
-        if(node.getArgs().size() > 0 && nf.getReturnType() == OPTypes.STRING) {
+        if(node.getArgs().size() > 0 && nf.getReturnType() == 
ValueType.STRING) {
             node.getArgs().get(0).visit(this);
         }
         // otherwise stop here, the function call hides the type and language 
anyways

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/OPTypeFinder.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/OPTypeFinder.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/OPTypeFinder.java
index 47c0d5a..c09f384 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/OPTypeFinder.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/collect/OPTypeFinder.java
@@ -19,7 +19,7 @@ package org.apache.marmotta.kiwi.sparql.builder.collect;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.marmotta.commons.sesame.model.Namespaces;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunctionRegistry;
 import org.openrdf.model.Literal;
@@ -36,7 +36,7 @@ import java.util.List;
  */
 public class OPTypeFinder extends QueryModelVisitorBase<RuntimeException> {
 
-    public List<OPTypes> optypes = new ArrayList<>();
+    public List<ValueType> optypes = new ArrayList<>();
 
 
 
@@ -53,7 +53,7 @@ public class OPTypeFinder extends 
QueryModelVisitorBase<RuntimeException> {
             if(StringUtils.equals(Namespaces.NS_XSD + "double", type)
                     || StringUtils.equals(Namespaces.NS_XSD + "float", type)
                     || StringUtils.equals(Namespaces.NS_XSD + "decimal", 
type)) {
-                optypes.add(OPTypes.DOUBLE);
+                optypes.add(ValueType.DOUBLE);
             } else if(StringUtils.equals(Namespaces.NS_XSD + "integer", type)
                     || StringUtils.equals(Namespaces.NS_XSD + "long", type)
                     || StringUtils.equals(Namespaces.NS_XSD + "int", type)
@@ -66,43 +66,43 @@ public class OPTypeFinder extends 
QueryModelVisitorBase<RuntimeException> {
                     || StringUtils.equals(Namespaces.NS_XSD + "unsignedShort", 
type)
                     || StringUtils.equals(Namespaces.NS_XSD + "byte", type)
                     || StringUtils.equals(Namespaces.NS_XSD + "unsignedByte", 
type)) {
-                optypes.add(OPTypes.INT);
+                optypes.add(ValueType.INT);
             } else if(StringUtils.equals(Namespaces.NS_XSD + "dateTime", type)
                     || StringUtils.equals(Namespaces.NS_XSD + "date", type)
                     || StringUtils.equals(Namespaces.NS_XSD + "time", type)) {
-                optypes.add(OPTypes.DATE);
+                optypes.add(ValueType.DATE);
             } else {
-                optypes.add(OPTypes.ANY);
+                optypes.add(ValueType.NODE);
             }
         } else {
-            optypes.add(OPTypes.STRING);
+            optypes.add(ValueType.STRING);
         }
     }
 
     @Override
     public void meet(SameTerm node) throws RuntimeException {
-        optypes.add(OPTypes.BOOL);
+        optypes.add(ValueType.BOOL);
     }
 
 
     @Override
     public void meet(Str node) throws RuntimeException {
-        optypes.add(OPTypes.STRING);
+        optypes.add(ValueType.STRING);
     }
 
     @Override
     public void meet(Lang node) throws RuntimeException {
-        optypes.add(OPTypes.STRING);
+        optypes.add(ValueType.STRING);
     }
 
     @Override
     public void meet(LocalName node) throws RuntimeException {
-        optypes.add(OPTypes.STRING);
+        optypes.add(ValueType.STRING);
     }
 
     @Override
     public void meet(Label node) throws RuntimeException {
-        optypes.add(OPTypes.STRING);
+        optypes.add(ValueType.STRING);
     }
 
 
@@ -121,20 +121,20 @@ public class OPTypeFinder extends 
QueryModelVisitorBase<RuntimeException> {
         node.getAlternative().visit(this);
     }
 
-    public OPTypes coerce() {
-        OPTypes left = OPTypes.ANY;
+    public ValueType coerce() {
+        ValueType left = ValueType.NODE;
 
-        for(OPTypes right : optypes) {
-            if(left == OPTypes.ANY) {
+        for(ValueType right : optypes) {
+            if(left == ValueType.NODE) {
                 left = right;
-            } else if(right == OPTypes.ANY) {
+            } else if(right == ValueType.NODE) {
                 // keep left
             } else if(left == right) {
                 // keep left
-            } else if( (left == OPTypes.INT && right == OPTypes.DOUBLE) || 
(left == OPTypes.DOUBLE && right == OPTypes.INT)) {
-                left = OPTypes.DOUBLE;
-            } else if( (left == OPTypes.STRING) || (right == OPTypes.STRING)) {
-                left = OPTypes.STRING;
+            } else if( (left == ValueType.INT && right == ValueType.DOUBLE) || 
(left == ValueType.DOUBLE && right == ValueType.INT)) {
+                left = ValueType.DOUBLE;
+            } else if( (left == ValueType.STRING) || (right == 
ValueType.STRING)) {
+                left = ValueType.STRING;
             } else {
                 throw new IllegalArgumentException("unsupported type coercion: 
" + left + " and " + right);
             }

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/eval/ValueExpressionEvaluator.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/eval/ValueExpressionEvaluator.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/eval/ValueExpressionEvaluator.java
index 4edf154..1e651bf 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/eval/ValueExpressionEvaluator.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/eval/ValueExpressionEvaluator.java
@@ -22,9 +22,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.marmotta.commons.collections.CollectionUtils;
 import org.apache.marmotta.commons.util.DateUtils;
 import org.apache.marmotta.kiwi.model.rdf.KiWiNode;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
-import org.apache.marmotta.kiwi.sparql.builder.ProjectionType;
 import org.apache.marmotta.kiwi.sparql.builder.SQLBuilder;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.builder.collect.OPTypeFinder;
 import org.apache.marmotta.kiwi.sparql.builder.model.SQLVariable;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
@@ -69,15 +68,15 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
 
     private StringBuilder builder = new StringBuilder();
 
-    private Deque<OPTypes> optypes = new ArrayDeque<>();
+    private Deque<ValueType> optypes = new ArrayDeque<>();
 
     private SQLBuilder parent;
 
     public ValueExpressionEvaluator(ValueExpr expr, SQLBuilder parent) {
-        this(expr,parent, OPTypes.ANY);
+        this(expr,parent, ValueType.NODE);
     }
 
-    public ValueExpressionEvaluator(ValueExpr expr, SQLBuilder parent, OPTypes 
optype) {
+    public ValueExpressionEvaluator(ValueExpr expr, SQLBuilder parent, 
ValueType optype) {
         this.parent = parent;
 
         optypes.push(optype);
@@ -140,19 +139,19 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     public void meet(FunctionCall fc) throws RuntimeException {
         // special optimizations for frequent cases with variables
         if((XMLSchema.DOUBLE.toString().equals(fc.getURI()) || 
XMLSchema.FLOAT.toString().equals(fc.getURI()) ) && fc.getArgs().size() == 1) {
-            optypes.push(OPTypes.DOUBLE);
+            optypes.push(ValueType.DOUBLE);
             fc.getArgs().get(0).visit(this);
             optypes.pop();
         } else if((XMLSchema.INTEGER.toString().equals(fc.getURI()) || 
XMLSchema.INT.toString().equals(fc.getURI())) && fc.getArgs().size() == 1) {
-            optypes.push(OPTypes.INT);
+            optypes.push(ValueType.INT);
             fc.getArgs().get(0).visit(this);
             optypes.pop();
         } else if(XMLSchema.BOOLEAN.toString().equals(fc.getURI()) && 
fc.getArgs().size() == 1) {
-            optypes.push(OPTypes.BOOL);
+            optypes.push(ValueType.BOOL);
             fc.getArgs().get(0).visit(this);
             optypes.pop();
         } else if(XMLSchema.DATE.toString().equals(fc.getURI()) && 
fc.getArgs().size() == 1) {
-            optypes.push(OPTypes.DATE);
+            optypes.push(ValueType.DATE);
             fc.getArgs().get(0).visit(this);
             optypes.pop();
         } else {
@@ -184,7 +183,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     @Override
     public void meet(Avg node) throws RuntimeException {
         builder.append("AVG(");
-        optypes.push(OPTypes.DOUBLE);
+        optypes.push(ValueType.DOUBLE);
         node.getArg().visit(this);
         optypes.pop();
         builder.append(")");
@@ -194,7 +193,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     public void meet(BNodeGenerator gen) throws RuntimeException {
         if(gen.getNodeIdExpr() != null) {
             // get value of argument and express it as string
-            optypes.push(OPTypes.STRING);
+            optypes.push(ValueType.STRING);
             gen.getNodeIdExpr().visit(this);
             optypes.pop();
         } else {
@@ -210,7 +209,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
             builder.append(Boolean.toString(true));
         } else if(arg instanceof Var) {
             builder.append("(");
-            optypes.push(OPTypes.ANY);
+            optypes.push(ValueType.NODE);
             arg.visit(this);
             optypes.pop();
             builder.append(" IS NOT NULL)");
@@ -253,7 +252,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
 
             List<String> countVariables = new ArrayList<>();
             for(SQLVariable v : parent.getVariables().values()) {
-                if(v.getProjectionType() == ProjectionType.NONE) {
+                if(v.getProjectionType() == ValueType.NONE) {
                     Preconditions.checkState(v.getExpressions().size() > 0, 
"no expressions available for variable");
 
                     countVariables.add(v.getExpressions().get(0));
@@ -264,7 +263,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
             builder.append("]");
 
         } else {
-            optypes.push(OPTypes.ANY);
+            optypes.push(ValueType.NODE);
             node.getArg().visit(this);
             optypes.pop();
         }
@@ -275,11 +274,11 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     @Override
     public void meet(GroupConcat node) throws RuntimeException {
         if(node.getSeparator() == null) {
-            builder.append(parent.getDialect().getGroupConcat(new 
ValueExpressionEvaluator(node.getArg(), parent, OPTypes.STRING).build(), null, 
node.isDistinct()));
+            builder.append(parent.getDialect().getGroupConcat(new 
ValueExpressionEvaluator(node.getArg(), parent, ValueType.STRING).build(), 
null, node.isDistinct()));
         } else {
             builder.append(parent.getDialect().getGroupConcat(
-                    new ValueExpressionEvaluator(node.getArg(), parent, 
OPTypes.STRING).build(),
-                    new ValueExpressionEvaluator(node.getSeparator(), parent, 
OPTypes.STRING).build(),
+                    new ValueExpressionEvaluator(node.getArg(), parent, 
ValueType.STRING).build(),
+                    new ValueExpressionEvaluator(node.getSeparator(), parent, 
ValueType.STRING).build(),
                     node.isDistinct()
             ));
         }
@@ -290,7 +289,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     public void meet(If node) throws RuntimeException {
         builder.append("CASE WHEN ");
 
-        optypes.push(OPTypes.BOOL);
+        optypes.push(ValueType.BOOL);
         node.getCondition().visit(this);
         optypes.pop();
 
@@ -409,7 +408,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     public void meet(IRIFunction fun) throws RuntimeException {
         if(fun.getBaseURI() != null) {
 
-            String ex = new ValueExpressionEvaluator(fun.getArg(), parent, 
OPTypes.STRING).build();
+            String ex = new ValueExpressionEvaluator(fun.getArg(), parent, 
ValueType.STRING).build();
 
             builder
                     .append("CASE WHEN position(':' IN ").append(ex).append(") 
> 0 THEN ").append(ex)
@@ -417,7 +416,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
                     .append(" END ");
         } else {
             // get value of argument and express it as string
-            optypes.push(OPTypes.STRING);
+            optypes.push(ValueType.STRING);
             fun.getArg().visit(this);
             optypes.pop();
         }
@@ -425,7 +424,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
 
     @Override
     public void meet(Label node) throws RuntimeException {
-        optypes.push(OPTypes.STRING);
+        optypes.push(ValueType.STRING);
         node.getArg().visit(this);
         optypes.pop();
     }
@@ -467,14 +466,14 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     @Override
     public void meet(Like node) throws RuntimeException {
         if(node.isCaseSensitive()) {
-            optypes.push(OPTypes.STRING);
+            optypes.push(ValueType.STRING);
             node.getArg().visit(this);
             optypes.pop();
 
             builder.append(" LIKE ");
             node.getPattern();
         } else {
-            builder.append(parent.getDialect().getILike(new 
ValueExpressionEvaluator(node.getArg(),parent, OPTypes.STRING).build(), 
node.getOpPattern()));
+            builder.append(parent.getDialect().getILike(new 
ValueExpressionEvaluator(node.getArg(),parent, ValueType.STRING).build(), 
node.getOpPattern()));
         }
 
     }
@@ -487,17 +486,17 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
 
     @Override
     public void meet(MathExpr expr) throws RuntimeException {
-        OPTypes ot = new OPTypeFinder(expr).coerce();
+        ValueType ot = new OPTypeFinder(expr).coerce();
 
-        if(ot == OPTypes.STRING) {
+        if(ot == ValueType.STRING) {
             if(expr.getOperator() == MathExpr.MathOp.PLUS) {
                 
builder.append(functionRegistry.get(FN.CONCAT.stringValue()).getNative(parent.getDialect(),new
 ValueExpressionEvaluator(expr.getLeftArg(), parent, ot).build(), new 
ValueExpressionEvaluator(expr.getRightArg(), parent, ot).build()));
             } else {
                 throw new IllegalArgumentException("operation 
"+expr.getOperator()+" is not supported on strings");
             }
         } else {
-            if(ot == OPTypes.ANY || ot == OPTypes.TERM) {
-                ot = OPTypes.DOUBLE;
+            if(ot == ValueType.NODE || ot == ValueType.TERM) {
+                ot = ValueType.DOUBLE;
             }
 
             optypes.push(ot);
@@ -511,7 +510,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     @Override
     public void meet(Max node) throws RuntimeException {
         builder.append("MAX(");
-        optypes.push(OPTypes.DOUBLE);
+        optypes.push(ValueType.DOUBLE);
         node.getArg().visit(this);
         optypes.pop();
         builder.append(")");
@@ -520,7 +519,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     @Override
     public void meet(Min node) throws RuntimeException {
         builder.append("MIN(");
-        optypes.push(OPTypes.DOUBLE);
+        optypes.push(ValueType.DOUBLE);
         node.getArg().visit(this);
         optypes.pop();
         builder.append(")");
@@ -529,8 +528,8 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     @Override
     public void meet(Regex re) throws RuntimeException {
         builder.append(optimizeRegexp(
-                new ValueExpressionEvaluator(re.getArg(), parent, 
OPTypes.STRING).build(),
-                new ValueExpressionEvaluator(re.getPatternArg(), parent, 
OPTypes.STRING).build(),
+                new ValueExpressionEvaluator(re.getArg(), parent, 
ValueType.STRING).build(),
+                new ValueExpressionEvaluator(re.getPatternArg(), parent, 
ValueType.STRING).build(),
                 re.getFlagsArg()
         ));
     }
@@ -538,7 +537,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     @Override
     public void meet(SameTerm cmp) throws RuntimeException {
         // covered by value binding in variables
-        optypes.push(OPTypes.TERM);
+        optypes.push(ValueType.TERM);
         cmp.getLeftArg().visit(this);
         builder.append(" = ");
         cmp.getRightArg().visit(this);
@@ -547,7 +546,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
 
     @Override
     public void meet(Str node) throws RuntimeException {
-        optypes.push(OPTypes.STRING);
+        optypes.push(ValueType.STRING);
         node.getArg().visit(this);
         optypes.pop();
     }
@@ -555,7 +554,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
     @Override
     public void meet(Sum node) throws RuntimeException {
         builder.append("SUM(");
-        optypes.push(OPTypes.DOUBLE);
+        optypes.push(ValueType.DOUBLE);
         node.getArg().visit(this);
         optypes.pop();
         builder.append(")");
@@ -575,7 +574,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
         } else {
             String var = sv.getAlias();
 
-            if(sv.getProjectionType() != ProjectionType.NODE && 
sv.getProjectionType() != ProjectionType.NONE) {
+            if(sv.getProjectionType() != ValueType.NODE && 
sv.getProjectionType() != ValueType.NONE) {
                 // in case the variable represents a constructed or bound 
value instead of a node, we need to
                 // use the SQL expression as value; SQL should take care of 
proper casting...
                 // TODO: explicit casting needed?
@@ -605,16 +604,12 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
                         Preconditions.checkState(var != null, "no alias 
available for variable");
                         builder.append(var).append(".tvalue");
                         break;
-                    case VALUE:
-                        Preconditions.checkState(var != null, "no alias 
available for variable");
-                        builder.append(var).append(".svalue");
-                        break;
                     case URI:
                         Preconditions.checkState(var != null, "no alias 
available for variable");
                         builder.append(var).append(".svalue");
                         break;
                     case TERM:
-                    case ANY:
+                    case NODE:
                         if(sv.getExpressions().size() > 0) {
                             // this allows us to avoid joins with the nodes 
table for simple expressions that only need the ID
                             builder.append(sv.getExpressions().get(0));
@@ -634,7 +629,6 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
 
             switch (optypes.peek()) {
                 case STRING:
-                case VALUE:
                 case URI:
                     builder.append("'").append(val).append("'");
                     break;
@@ -653,7 +647,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
 
                 // in this case we should return a node ID and also need to 
make sure it actually exists
                 case TERM:
-                case ANY:
+                case NODE:
                     KiWiNode n = 
parent.getConverter().convert(node.getValue());
                     builder.append(n.getId());
                     break;
@@ -690,7 +684,7 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
         return copy;
     }
 
-    private String castExpression(String arg, OPTypes type) {
+    private String castExpression(String arg, ValueType type) {
         if(type == null) {
             return arg;
         }
@@ -704,9 +698,9 @@ public class ValueExpressionEvaluator extends 
QueryModelVisitorBase<RuntimeExcep
                 return 
functionRegistry.get(XMLSchema.BOOLEAN).getNative(parent.getDialect(), arg);
             case DATE:
                 return 
functionRegistry.get(XMLSchema.DATETIME).getNative(parent.getDialect(), arg);
-            case VALUE:
+            case STRING:
                 return arg;
-            case ANY:
+            case NODE:
                 return arg;
             default:
                 return arg;

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLUnion.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLUnion.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLUnion.java
index 5a4e0ac..3c62785 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLUnion.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLUnion.java
@@ -18,9 +18,9 @@
 package org.apache.marmotta.kiwi.sparql.builder.model;
 
 import org.apache.marmotta.kiwi.persistence.KiWiDialect;
-import org.apache.marmotta.kiwi.sparql.builder.ProjectionType;
 import org.apache.marmotta.kiwi.sparql.builder.SQLBuilder;
 import org.apache.marmotta.kiwi.sparql.builder.ValueConverter;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.exception.UnsatisfiableQueryException;
 import org.openrdf.query.BindingSet;
 import org.openrdf.query.Dataset;
@@ -107,7 +107,7 @@ public class SQLUnion extends SQLAbstractSubquery {
             if(!rightVars.containsKey(svl.getSparqlName())) {
                 SQLVariable svr = new SQLVariable(svl.getName(), 
svl.getSparqlName());
                 svr.getExpressions().add("NULL");
-                svr.setProjectionType(ProjectionType.NODE);
+                svr.setProjectionType(ValueType.NODE);
                 right.getVariables().put(svl.getSparqlName(),svr);
 
                 if(rightProjected.size() > 0) {
@@ -121,7 +121,7 @@ public class SQLUnion extends SQLAbstractSubquery {
             if(!leftVars.containsKey(svr.getSparqlName())) {
                 SQLVariable svl = new SQLVariable(svr.getName(), 
svr.getSparqlName());
                 svl.getExpressions().add("NULL");
-                svl.setProjectionType(ProjectionType.NODE);
+                svl.setProjectionType(ValueType.NODE);
                 left.getVariables().put(svr.getSparqlName(),svl);
 
                 if(leftProjected.size() > 0) {

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLVariable.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLVariable.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLVariable.java
index b535984..23715fe 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLVariable.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/builder/model/SQLVariable.java
@@ -17,7 +17,7 @@
 
 package org.apache.marmotta.kiwi.sparql.builder.model;
 
-import org.apache.marmotta.kiwi.sparql.builder.ProjectionType;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.openrdf.query.algebra.ValueExpr;
 
 import java.text.Collator;
@@ -67,7 +67,7 @@ public class SQLVariable  implements Cloneable{
      * Set to something else than NONE when this variable is contained in the 
SELECT part of the query, i.e. needs to be projected.
      * Decides on how the variable will be projected (as node -> ID, as value 
-> string or numeric field)
      */
-    private ProjectionType projectionType = ProjectionType.NONE;
+    private ValueType projectionType = ValueType.NONE;
 
     /**
      * The expression to project the type for the literal that will be bound 
to this variable, e.g. in case
@@ -117,11 +117,11 @@ public class SQLVariable  implements Cloneable{
         return expressions;
     }
 
-    public ProjectionType getProjectionType() {
+    public ValueType getProjectionType() {
         return projectionType;
     }
 
-    public void setProjectionType(ProjectionType projectionType) {
+    public void setProjectionType(ValueType projectionType) {
         this.projectionType = projectionType;
     }
 

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/evaluation/KiWiEvaluationStrategy.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/evaluation/KiWiEvaluationStrategy.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/evaluation/KiWiEvaluationStrategy.java
index 122edfa..3d4f314 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/evaluation/KiWiEvaluationStrategy.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/evaluation/KiWiEvaluationStrategy.java
@@ -24,8 +24,8 @@ import org.apache.marmotta.kiwi.persistence.KiWiConnection;
 import org.apache.marmotta.kiwi.persistence.util.ResultSetIteration;
 import org.apache.marmotta.kiwi.persistence.util.ResultTransformerFunction;
 import org.apache.marmotta.kiwi.sail.KiWiValueFactory;
-import org.apache.marmotta.kiwi.sparql.builder.ProjectionType;
 import org.apache.marmotta.kiwi.sparql.builder.SQLBuilder;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.builder.collect.SupportedFinder;
 import org.apache.marmotta.kiwi.sparql.builder.model.SQLVariable;
 import org.apache.marmotta.kiwi.sparql.exception.UnsatisfiableQueryException;
@@ -243,7 +243,7 @@ public class KiWiEvaluationStrategy extends 
EvaluationStrategyImpl{
                         long[] nodeIds = new long[vars.size()];
                         for(int i=0; i<vars.size(); i++) {
                             SQLVariable sv = vars.get(i);
-                            if(sv.getProjectionType() == ProjectionType.NODE 
&& (builder.getProjectedVars().isEmpty() || 
builder.getProjectedVars().contains(sv.getSparqlName()))) {
+                            if(sv.getProjectionType() == ValueType.NODE && 
(builder.getProjectedVars().isEmpty() || 
builder.getProjectedVars().contains(sv.getSparqlName()))) {
                                 nodeIds[i] = row.getLong(sv.getName());
                             }
                         }
@@ -254,7 +254,7 @@ public class KiWiEvaluationStrategy extends 
EvaluationStrategyImpl{
                             if(nodes[i] != null) {
                                 // resolved node
                                 resultRow.addBinding(sv.getSparqlName(), 
nodes[i]);
-                            } else if(sv.getProjectionType() != 
ProjectionType.NONE && (builder.getProjectedVars().isEmpty() || 
builder.getProjectedVars().contains(sv.getSparqlName()))) {
+                            } else if(sv.getProjectionType() != ValueType.NONE 
&& (builder.getProjectedVars().isEmpty() || 
builder.getProjectedVars().contains(sv.getSparqlName()))) {
                                 // literal value
                                 String svalue;
                                 switch (sv.getProjectionType()) {

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/NativeFunction.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/NativeFunction.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/NativeFunction.java
index f9f7fd3..76db249 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/NativeFunction.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/NativeFunction.java
@@ -18,7 +18,7 @@
 package org.apache.marmotta.kiwi.sparql.function;
 
 import org.apache.marmotta.kiwi.persistence.KiWiDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.openrdf.query.algebra.evaluation.function.Function;
 
 /**
@@ -51,7 +51,7 @@ public interface NativeFunction extends Function {
      * Get the return type of the function. This is needed for SQL type 
casting inside KiWi.
      * @return
      */
-    public OPTypes getReturnType();
+    public ValueType getReturnType();
 
     /**
      * Get the argument type of the function for the arg'th argument (starting 
to count at 0).
@@ -60,7 +60,7 @@ public interface NativeFunction extends Function {
      * @param arg
      * @return
      */
-    public OPTypes getArgumentType(int arg);
+    public ValueType getArgumentType(int arg);
 
     /**
      * Return the minimum number of arguments this function requires.

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NBooleanCast.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NBooleanCast.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NBooleanCast.java
index 7edf93d..e2dbd87 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NBooleanCast.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NBooleanCast.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.BooleanCast;
 
@@ -68,8 +68,8 @@ public class NBooleanCast extends BooleanCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.BOOL;
+    public ValueType getReturnType() {
+        return ValueType.BOOL;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NBooleanCast extends BooleanCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.VALUE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDateTimeCast.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDateTimeCast.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDateTimeCast.java
index 4aa3233..b2db68e 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDateTimeCast.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDateTimeCast.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.DateTimeCast;
 
@@ -68,8 +68,8 @@ public class NDateTimeCast extends DateTimeCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.DATE;
+    public ValueType getReturnType() {
+        return ValueType.DATE;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NDateTimeCast extends DateTimeCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.VALUE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDecimalCast.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDecimalCast.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDecimalCast.java
index a92ab51..138eb02 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDecimalCast.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDecimalCast.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.DecimalCast;
 
@@ -61,8 +61,8 @@ public class NDecimalCast extends DecimalCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.DOUBLE;
+    public ValueType getReturnType() {
+        return ValueType.DOUBLE;
     }
 
     /**
@@ -73,8 +73,8 @@ public class NDecimalCast extends DecimalCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.VALUE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDoubleCast.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDoubleCast.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDoubleCast.java
index 9d5c207..eaed1ab 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDoubleCast.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NDoubleCast.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.DoubleCast;
 
@@ -68,8 +68,8 @@ public class NDoubleCast extends DoubleCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.DOUBLE;
+    public ValueType getReturnType() {
+        return ValueType.DOUBLE;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NDoubleCast extends DoubleCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.VALUE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NFloatCast.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NFloatCast.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NFloatCast.java
index 8607d6b..44bccb0 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NFloatCast.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NFloatCast.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.FloatCast;
 
@@ -68,8 +68,8 @@ public class NFloatCast extends FloatCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.DOUBLE;
+    public ValueType getReturnType() {
+        return ValueType.DOUBLE;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NFloatCast extends FloatCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.VALUE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NIntegerCast.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NIntegerCast.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NIntegerCast.java
index aadfe2f..0617da1 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NIntegerCast.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NIntegerCast.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.IntegerCast;
 
@@ -68,8 +68,8 @@ public class NIntegerCast extends IntegerCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.INT;
+    public ValueType getReturnType() {
+        return ValueType.INT;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NIntegerCast extends IntegerCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.VALUE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NStringCast.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NStringCast.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NStringCast.java
index df7f838..0dc54ae 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NStringCast.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/cast/NStringCast.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.StringCast;
 
@@ -61,8 +61,8 @@ public class NStringCast extends StringCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.STRING;
+    public ValueType getReturnType() {
+        return ValueType.STRING;
     }
 
     /**
@@ -73,8 +73,8 @@ public class NStringCast extends StringCast implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.VALUE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextQueryFunction.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextQueryFunction.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextQueryFunction.java
index 5376475..37158c7 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextQueryFunction.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextQueryFunction.java
@@ -18,7 +18,7 @@ package org.apache.marmotta.kiwi.sparql.function.custom;
 
 import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.apache.marmotta.kiwi.vocabulary.FN_MARMOTTA;
 import org.openrdf.model.Value;
@@ -101,8 +101,8 @@ public class FulltextQueryFunction implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.BOOL;
+    public ValueType getReturnType() {
+        return ValueType.BOOL;
     }
 
     /**
@@ -113,8 +113,8 @@ public class FulltextQueryFunction implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.STRING;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextSearchFunction.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextSearchFunction.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextSearchFunction.java
index 81459cc..435edfc 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextSearchFunction.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/FulltextSearchFunction.java
@@ -18,7 +18,7 @@ package org.apache.marmotta.kiwi.sparql.function.custom;
 
 import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.apache.marmotta.kiwi.vocabulary.FN_MARMOTTA;
 import org.openrdf.model.Value;
@@ -101,8 +101,8 @@ public class FulltextSearchFunction implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.BOOL;
+    public ValueType getReturnType() {
+        return ValueType.BOOL;
     }
 
     /**
@@ -113,8 +113,8 @@ public class FulltextSearchFunction implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.STRING;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Stddev.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Stddev.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Stddev.java
index 24898de..37127ff 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Stddev.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Stddev.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.AggregationFunction;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.apache.marmotta.kiwi.vocabulary.FN_MARMOTTA;
@@ -70,8 +70,8 @@ public class Stddev extends AggregationFunction implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.DOUBLE;
+    public ValueType getReturnType() {
+        return ValueType.DOUBLE;
     }
 
     /**
@@ -82,8 +82,8 @@ public class Stddev extends AggregationFunction implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.DOUBLE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.DOUBLE;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Variance.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Variance.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Variance.java
index 7d94ac6..5686379 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Variance.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/custom/Variance.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.AggregationFunction;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.apache.marmotta.kiwi.vocabulary.FN_MARMOTTA;
@@ -70,8 +70,8 @@ public class Variance extends AggregationFunction implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.DOUBLE;
+    public ValueType getReturnType() {
+        return ValueType.DOUBLE;
     }
 
     /**
@@ -82,8 +82,8 @@ public class Variance extends AggregationFunction implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.DOUBLE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.DOUBLE;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NDay.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NDay.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NDay.java
index f0e87ff..f1e70c4 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NDay.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NDay.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.datetime.Day;
 
@@ -68,8 +68,8 @@ public class NDay extends Day implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.INT;
+    public ValueType getReturnType() {
+        return ValueType.INT;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NDay extends Day implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.DATE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.DATE;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NHours.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NHours.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NHours.java
index 00e44ef..5cedf083 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NHours.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NHours.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.datetime.Hours;
 
@@ -68,8 +68,8 @@ public class NHours extends Hours implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.INT;
+    public ValueType getReturnType() {
+        return ValueType.INT;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NHours extends Hours implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.DATE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.DATE;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMinutes.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMinutes.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMinutes.java
index f8aaae6..4dd255b 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMinutes.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMinutes.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.datetime.Minutes;
 
@@ -68,8 +68,8 @@ public class NMinutes extends Minutes implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.INT;
+    public ValueType getReturnType() {
+        return ValueType.INT;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NMinutes extends Minutes implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.DATE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.DATE;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMonth.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMonth.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMonth.java
index d0a38e6..8db6b13 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMonth.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NMonth.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.datetime.Month;
 
@@ -68,8 +68,8 @@ public class NMonth extends Month implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.INT;
+    public ValueType getReturnType() {
+        return ValueType.INT;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NMonth extends Month implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.DATE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.DATE;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NNow.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NNow.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NNow.java
index ef6d9be..d35391c 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NNow.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NNow.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.datetime.Now;
 
@@ -61,8 +61,8 @@ public class NNow extends Now implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.DATE;
+    public ValueType getReturnType() {
+        return ValueType.DATE;
     }
 
     /**
@@ -73,8 +73,8 @@ public class NNow extends Now implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.ANY;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.NODE;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NSeconds.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NSeconds.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NSeconds.java
index 72d01d4..db2bce5 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NSeconds.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NSeconds.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.datetime.Seconds;
 
@@ -68,8 +68,8 @@ public class NSeconds extends Seconds implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.DOUBLE;
+    public ValueType getReturnType() {
+        return ValueType.DOUBLE;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NSeconds extends Seconds implements 
NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.DATE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.DATE;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NYear.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NYear.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NYear.java
index 3846d9d..1bf044b 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NYear.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/datetime/NYear.java
@@ -21,7 +21,7 @@ import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.h2.H2Dialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.datetime.Year;
 
@@ -68,8 +68,8 @@ public class NYear extends Year implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.INT;
+    public ValueType getReturnType() {
+        return ValueType.INT;
     }
 
     /**
@@ -80,8 +80,8 @@ public class NYear extends Year implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.DATE;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.DATE;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NMD5.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NMD5.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NMD5.java
index 8aa9fc2..9f4f7e1 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NMD5.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NMD5.java
@@ -20,7 +20,7 @@ package org.apache.marmotta.kiwi.sparql.function.hash;
 import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.hash.MD5;
 
@@ -65,8 +65,8 @@ public class NMD5 extends MD5 implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.STRING;
+    public ValueType getReturnType() {
+        return ValueType.STRING;
     }
 
     /**
@@ -77,8 +77,8 @@ public class NMD5 extends MD5 implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.STRING;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA1.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA1.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA1.java
index 8c49ac3..3f9c4ad 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA1.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA1.java
@@ -20,7 +20,7 @@ package org.apache.marmotta.kiwi.sparql.function.hash;
 import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.hash.SHA1;
 
@@ -65,8 +65,8 @@ public class NSHA1 extends SHA1 implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.STRING;
+    public ValueType getReturnType() {
+        return ValueType.STRING;
     }
 
     /**
@@ -77,8 +77,8 @@ public class NSHA1 extends SHA1 implements NativeFunction {
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.STRING;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/marmotta/blob/b7ba8ff3/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA256.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA256.java
 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA256.java
index 64e7e54..1d81b3f 100644
--- 
a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA256.java
+++ 
b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/hash/NSHA256.java
@@ -20,7 +20,7 @@ package org.apache.marmotta.kiwi.sparql.function.hash;
 import org.apache.marmotta.kiwi.persistence.KiWiDialect;
 import org.apache.marmotta.kiwi.persistence.mysql.MySQLDialect;
 import org.apache.marmotta.kiwi.persistence.pgsql.PostgreSQLDialect;
-import org.apache.marmotta.kiwi.sparql.builder.OPTypes;
+import org.apache.marmotta.kiwi.sparql.builder.ValueType;
 import org.apache.marmotta.kiwi.sparql.function.NativeFunction;
 import org.openrdf.query.algebra.evaluation.function.hash.SHA256;
 
@@ -65,8 +65,8 @@ public class NSHA256 extends SHA256 implements NativeFunction 
{
      * @return
      */
     @Override
-    public OPTypes getReturnType() {
-        return OPTypes.STRING;
+    public ValueType getReturnType() {
+        return ValueType.STRING;
     }
 
     /**
@@ -77,8 +77,8 @@ public class NSHA256 extends SHA256 implements NativeFunction 
{
      * @return
      */
     @Override
-    public OPTypes getArgumentType(int arg) {
-        return OPTypes.STRING;
+    public ValueType getArgumentType(int arg) {
+        return ValueType.STRING;
     }
 
     /**

Reply via email to