You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ja...@apache.org on 2013/03/27 16:54:06 UTC

[1/5] git commit: Did some improvements in sesame-commons/ResourceUtils (MARMOTTA-66)

Updated Branches:
  refs/heads/develop cd88cb0c8 -> 101ac6b86


Did some improvements in sesame-commons/ResourceUtils (MARMOTTA-66)


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

Branch: refs/heads/develop
Commit: b75ca1c642701863adad5e6c2167add35fd15ccb
Parents: cd88cb0
Author: Jakob Frank <ja...@apache.org>
Authored: Tue Mar 26 09:56:06 2013 +0100
Committer: Jakob Frank <ja...@apache.org>
Committed: Wed Mar 27 16:34:52 2013 +0100

----------------------------------------------------------------------
 .../commons/sesame/repository/ResourceUtils.java   |  130 ++++++++++++---
 1 files changed, 110 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/b75ca1c6/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/repository/ResourceUtils.java
----------------------------------------------------------------------
diff --git a/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/repository/ResourceUtils.java b/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/repository/ResourceUtils.java
index 199f3ec..9e0cab5 100644
--- a/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/repository/ResourceUtils.java
+++ b/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/repository/ResourceUtils.java
@@ -49,16 +49,18 @@ public class ResourceUtils {
     // *****************************************************************************************************
     
     /**
-     * Check whenever the resource actually exists. Since this could be under different
-     * interpretations, this implementation only checks for outgoing triples.
+     * Check whenever the uri actually exists. 
+     * Existence of a URI (Resource) is bound to the existence of a
+     * Statement referencing the Resource, so this method simply delegates to {@link #isUsed(RepositoryConnection, String)}.
      * 
      * @param conn connection with the repository
      * @param uri uri of the resource to check
      * @return resource exists or not
-     * @deprecated the name of this method is missleading. use {@link #isSubject(RepositoryConnection, String)}.
+     * @deprecated the name of this method is missleading. use {@link #isUsed(RepositoryConnection, String)}.
      */
+    @Deprecated
     public static boolean existsResource(RepositoryConnection conn, String uri) {
-    	return existsStatement(conn, conn.getValueFactory().createURI(uri), null, null, null);
+    	return isUsed(conn, conn.getValueFactory().createURI(uri));
     }
     
     /**
@@ -68,19 +70,109 @@ public class ResourceUtils {
      * @return true if the uri is ever used as subject.
      */
     public static boolean isSubject(RepositoryConnection conn, String uri) {
-    	return existsStatement(conn, conn.getValueFactory().createURI(uri), null, null, null);
+    	return isSubject(conn, conn.getValueFactory().createURI(uri));
     }
 
     /**
+     * Check whether the {@link Resource} is ever used as subject. 
+     * @param conn connection with the repository
+     * @param uri the {@link Resource} to check
+     * @return true if the {@link Resource} is ever used as subject.
+     */
+	public static boolean isSubject(RepositoryConnection conn, final Resource rsc) {
+		return existsStatement(conn, rsc, null, null, null);
+	}
+
+    /**
+     * Check whether the uri is ever used as predicate. 
+     * @param conn connection with the repository
+     * @param uri uri of the resource to check
+     * @return true if the uri is ever used as predicate.
+     */
+	public static boolean isPredicate(RepositoryConnection conn, final String uri) {
+		return isPredicate(conn, conn.getValueFactory().createURI(uri));
+	}
+	
+    /**
+     * Check whether the {@link URI} is ever used as predicate. 
+     * @param conn connection with the repository
+     * @param uri the {@link URI} to check
+     * @return true if the {@link URI} is ever used as predicate.
+     */
+	public static boolean isPredicate(RepositoryConnection conn, final URI uri) {
+		return existsStatement(conn, null, uri, null, null);
+	}
+
+	   /**
+     * Check whether the uri is ever used as object. 
+     * @param conn connection with the repository
+     * @param uri uri of the resource to check
+     * @return true if the uri is ever used as predicate.
+     */
+	public static boolean isObject(RepositoryConnection conn, final String uri) {
+		return isObject(conn, conn.getValueFactory().createURI(uri));
+	}
+	
+    /**
+     * Check whether the {@link Value} is ever used as object. 
+     * @param conn connection with the repository
+     * @param val {@link Value} to check
+     * @return true if the {@link Value} is ever used as predicate.
+     */
+	public static boolean isObject(RepositoryConnection conn, final Value val) {
+		return existsStatement(conn, null, null, val, null);
+	}
+
+	
+    /**
      * Check whether the uri is ever used as context. 
      * @param conn connection with the repository
      * @param uri uri of the resource to check
      * @return true if the uri is ever used as context.
      */
     public static boolean isContext(RepositoryConnection conn, String uri) {
-    	return existsStatement(conn, null, null, null, conn.getValueFactory().createURI(uri));
+    	return isContext(conn, conn.getValueFactory().createURI(uri));
     }
+
+    /**
+     * Check whether the {@link Resource} is ever used as context. 
+     * @param conn connection with the repository
+     * @param rsc the {@link Resource} to check
+     * @return true if the {@link Resource} is ever used as context.
+     */
+	public static boolean isContext(RepositoryConnection conn, Resource rsc) {
+		return existsStatement(conn, null, null, null, rsc);
+	}
+	
+	/**
+	 * Check whether the {@link Resource} is used in any statement.
+	 * Checks if the provided {@link Resource} is used as
+	 * <ol>
+	 * <li>subject
+	 * <li>context
+	 * <li>object
+	 * <li>predicate (if the resource is a {@link URI})
+	 * </ol>
+	 * @param conn {@link ResourceConnection} to check on
+	 * @param rsc the {@link Resource} to check
+	 * @return true if the {@link Resource} is ever used in a {@link Statement}
+	 */
+	public static boolean isUsed(RepositoryConnection conn, Resource rsc) {
+		if (isSubject(conn, rsc) || isContext(conn, rsc) || isObject(conn, rsc)) return true;
+		if (rsc instanceof URI && isPredicate(conn, (URI) rsc)) return true;
+		return false;
+	}
     
+	/**
+	 * Check for the existence of a {@link Statement} with the provided constraints. <code>null</code> is a wildcard.
+	 * <br>This is a convenience method and does not really fit whith <em>Resource</em>Utils. 
+	 * @param conn the {@link ResourceConnection} to check on
+	 * @param subj the subject of the {@link Statement} or <code>null</code> for a wildcard.
+	 * @param pred the predicate of the {@link Statement} or <code>null</code> for a wildcard.
+	 * @param object the object of the {@link Statement} or <code>null</code> for a wildcard.
+	 * @param ctx the context of the {@link Statement} or <code>null</code> for a wildcard.
+	 * @return true if a {@link Statement} with the provided constraints exists.
+	 */
     public static boolean existsStatement(RepositoryConnection conn, Resource subj, URI pred, Value object, Resource ctx) {
     	try {
     		RepositoryResult<Statement> stmts = conn.getStatements(subj, pred, object, true, ctx);
@@ -100,21 +192,18 @@ public class ResourceUtils {
      * A Resource exists if and only if it is used in a Statement, i.e. it is uses either as Subject, Context, Predicate or Object.
      * @param uri
      * @return the URI or null if the Resource is not used.
-     * @deprecated this method does not work as promised. <b>DO NOT USE IT</b>
+     * @deprecated this method is easy to misinterpret. Use {@link #isUsed(RepositoryConnection, Resource)}, 
+     * {@link #isSubject(RepositoryConnection, String)}, {@link #isPredicate(RepositoryConnection, String)}, 
+     * {@link #isObject(RepositoryConnection, String)} or {@link #isContext(RepositoryConnection, String)} according to your usecase. 
      */
     @Deprecated
     public static URI getUriResource(RepositoryConnection con, String uri) {
-    	URI r = con.getValueFactory().createURI(uri);
-    	if (isSubject(con, uri) || isContext(con, uri) || existsStatement(con, null, r, null, null) || existsStatement(con, null, null, r, null)) {
-    		return r;
+    	URI rsc = con.getValueFactory().createURI(uri);
+    	if (isUsed(con, rsc)) {
+    		return rsc;
     	} else {
     		return null;
     	}
-//        if(con instanceof SailRepositoryConnection && ((SailRepositoryConnection)con).getSailConnection() instanceof ResourceConnection) {
-//            return ((ResourceConnection) ((SailRepositoryConnection) con).getSailConnection()).getURI(uri);
-//        } else {
-//            return r;
-//        }
     }
 
     /**
@@ -123,11 +212,12 @@ public class ResourceUtils {
      * @return
      */
     public static BNode getAnonResource(RepositoryConnection con, String id) {
-        if(con instanceof SailRepositoryConnection && ((SailRepositoryConnection)con).getSailConnection() instanceof ResourceConnection) {
-            return ((ResourceConnection) ((SailRepositoryConnection) con).getSailConnection()).getBNode(id);
-        } else {
-            return con.getValueFactory().createBNode(id);
-        }
+    	final BNode bNode = con.getValueFactory().createBNode(id);
+    	if (isUsed(con, bNode)) {
+    		return bNode;
+    	} else {
+    		return null;
+    	}
     }
 
     /**


[5/5] git commit: some cleanup (MARMOTTA-110)

Posted by ja...@apache.org.
some cleanup (MARMOTTA-110)

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

Branch: refs/heads/develop
Commit: bee275f2fabd0ff9bd4f2c7f36619a7d1673cfbc
Parents: 4dd5de6
Author: Jakob Frank <ja...@apache.org>
Authored: Wed Mar 27 15:43:09 2013 +0100
Committer: Jakob Frank <ja...@apache.org>
Committed: Wed Mar 27 16:34:53 2013 +0100

----------------------------------------------------------------------
 .../marmotta/ldpath/backend/file/ParserTest.java   |   13 +++----------
 .../marmotta/ldpath/backend/file/PathTest.java     |    1 -
 2 files changed, 3 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/bee275f2/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/ParserTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/ParserTest.java b/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/ParserTest.java
index a30029d..0eb7b99 100644
--- a/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/ParserTest.java
+++ b/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/ParserTest.java
@@ -37,7 +37,7 @@ import java.util.Map;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
-import org.apache.marmotta.ldpath.backend.sesame.SesameRepositoryBackend;
+import org.apache.marmotta.ldpath.backend.sesame.SesameValueBackend;
 import org.apache.marmotta.ldpath.model.programs.Program;
 import org.apache.marmotta.ldpath.model.selectors.PathSelector;
 import org.apache.marmotta.ldpath.model.selectors.PropertySelector;
@@ -50,11 +50,7 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.openrdf.model.Value;
-import org.openrdf.repository.Repository;
 import org.openrdf.repository.RepositoryException;
-import org.openrdf.repository.sail.SailRepository;
-import org.openrdf.sail.memory.MemoryStore;
-
 
 import com.google.common.collect.ImmutableMap;
 
@@ -65,14 +61,11 @@ import com.google.common.collect.ImmutableMap;
  */
 public class ParserTest {
 
-    private static SesameRepositoryBackend backend;
+    private static SesameValueBackend backend;
 
     @BeforeClass
     public static void setupRepository() throws RepositoryException {
-        Repository repository = new SailRepository(new MemoryStore());
-        repository.initialize();
-
-        backend = new SesameRepositoryBackend(repository);
+        backend = new SesameValueBackend();
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/bee275f2/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java b/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java
index 9749b78..aceb25a 100644
--- a/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java
+++ b/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java
@@ -33,7 +33,6 @@ package org.apache.marmotta.ldpath.backend.file;
  */
 
 import static org.hamcrest.Matchers.hasItem;
-import static org.hamcrest.Matchers.hasItems;
 
 import java.util.Collection;
 import java.util.HashMap;


[2/5] MARMOTTA-110 created super-interface of RDFBackend for parsing: NodeBaclend

Posted by ja...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/AndTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/AndTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/AndTest.java
index d2a5f95..0344e3c 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/AndTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/AndTest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.tests;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
 
@@ -58,7 +59,7 @@ public class AndTest<Node> extends ComplexTest<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
         return String.format("%s & %s", left.getPathExpression(rdfBackend), right.getPathExpression(rdfBackend));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/FunctionTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/FunctionTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/FunctionTest.java
index 6612035..301b64d 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/FunctionTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/FunctionTest.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.functions.TestFunction;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
@@ -62,7 +63,7 @@ public class FunctionTest<Node> extends NodeTest<Node> {
     }
 
     @Override
-    public String getPathExpression(RDFBackend<Node> backend) {
+    public String getPathExpression(NodeBackend<Node> backend) {
         final StringBuilder sb = new StringBuilder("fn:");
         sb.append(test.getLocalName());
         sb.append("(");

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralLanguageTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralLanguageTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralLanguageTest.java
index 7445910..94d58d4 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralLanguageTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralLanguageTest.java
@@ -20,6 +20,7 @@ package org.apache.marmotta.ldpath.model.tests;
 
 import java.util.Locale;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
 
@@ -69,7 +70,7 @@ public class LiteralLanguageTest<Node> extends NodeTest<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
         return "@" + lang;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java
index 32fefac..58bbad0 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/LiteralTypeTest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.tests;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
 
@@ -71,7 +72,7 @@ public class LiteralTypeTest<Node> extends NodeTest<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
         return "^^" + typeUri;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/NotTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/NotTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/NotTest.java
index 5d12f1e..ad468fd 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/NotTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/NotTest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.tests;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
 
@@ -34,7 +35,7 @@ public class NotTest<Node> extends NodeTest<Node> {
     }
 
     @Override
-    public String getPathExpression(RDFBackend<Node> backend) {
+    public String getPathExpression(NodeBackend<Node> backend) {
         if (delegate instanceof ComplexTest<?>) {
             return String.format("!(%s)", delegate.getPathExpression(backend));
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/OrTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/OrTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/OrTest.java
index bdeaf60..20de073 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/OrTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/OrTest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.tests;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
 
@@ -55,7 +56,7 @@ public class OrTest<Node> extends ComplexTest<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
         return String.format("%s | %s", left.getPathExpression(rdfBackend), right.getPathExpression(rdfBackend));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathEqualityTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathEqualityTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathEqualityTest.java
index 457d4f1..5b6a044 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathEqualityTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathEqualityTest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.tests;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
@@ -64,7 +65,7 @@ public class PathEqualityTest<Node> extends NodeTest<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
         if (rdfBackend.isURI(node)) {
             return String.format("%s is <%s>", path.getPathExpression(rdfBackend), rdfBackend.stringValue(node));
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathTest.java
index c7f5382..cf76d64 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/PathTest.java
@@ -20,6 +20,7 @@ package org.apache.marmotta.ldpath.model.tests;
 
 import java.util.Collection;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
@@ -65,7 +66,7 @@ public class PathTest<Node> extends NodeTest<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
         return path.getPathExpression(rdfBackend);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/functions/BinaryNumericTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/functions/BinaryNumericTest.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/functions/BinaryNumericTest.java
index b7422d6..d59e5d2 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/functions/BinaryNumericTest.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/tests/functions/BinaryNumericTest.java
@@ -20,6 +20,7 @@ package org.apache.marmotta.ldpath.model.tests.functions;
 
 import java.util.Collection;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.functions.TestFunction;
 import org.apache.marmotta.ldpath.model.transformers.DoubleTransformer;
@@ -48,7 +49,7 @@ public abstract  class BinaryNumericTest<Node> extends TestFunction<Node> {
         return true;
     }
 
-    protected boolean test(RDFBackend<Node> backend, Node leftNode, Node rightNode) {
+    protected boolean test(NodeBackend<Node> backend, Node leftNode, Node rightNode) {
         try {
             return test(transformer.transform(backend, leftNode, null), transformer.transform(backend, rightNode, null));
         } catch (IllegalArgumentException e) {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigDecimalTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigDecimalTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigDecimalTransformer.java
index 543ae9b..d15b185 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigDecimalTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigDecimalTransformer.java
@@ -21,7 +21,7 @@ package org.apache.marmotta.ldpath.model.transformers;
 import java.math.BigDecimal;
 import java.util.Map;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 /**
@@ -32,7 +32,7 @@ import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 public class BigDecimalTransformer<Node> implements NodeTransformer<BigDecimal,Node> {
 
     @Override
-    public BigDecimal transform(RDFBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public BigDecimal transform(NodeBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(backend.isLiteral(node)) {
             return backend.decimalValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigIntegerTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigIntegerTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigIntegerTransformer.java
index f4c95cb..02398a9 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigIntegerTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BigIntegerTransformer.java
@@ -20,7 +20,7 @@ package org.apache.marmotta.ldpath.model.transformers;
 import java.math.BigInteger;
 import java.util.Map;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 
@@ -32,7 +32,7 @@ import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 public class BigIntegerTransformer<Node> implements NodeTransformer<BigInteger,Node> {
 
     @Override
-    public BigInteger transform(RDFBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public BigInteger transform(NodeBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(backend.isLiteral(node)) {
             return backend.integerValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BooleanTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BooleanTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BooleanTransformer.java
index d8d908f..bd57ecd 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BooleanTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/BooleanTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -39,7 +39,7 @@ public class BooleanTransformer<Node> implements NodeTransformer<Boolean,Node> {
      * @return
      */
     @Override
-    public Boolean transform(RDFBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Boolean transform(NodeBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(rdfBackend.isLiteral(node)) {
             return rdfBackend.booleanValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ByteTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ByteTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ByteTransformer.java
index 6088f39..03f001c 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ByteTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ByteTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -25,7 +25,7 @@ import java.util.Map;
 public class ByteTransformer<Node> implements NodeTransformer<Byte,Node> {
 
     @Override
-    public Byte transform(RDFBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Byte transform(NodeBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(backend.isLiteral(node)) {
             return backend.decimalValue(node).byteValueExact();
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTimeTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTimeTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTimeTransformer.java
index 8d855ec..3e6e173 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTimeTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTimeTransformer.java
@@ -21,7 +21,7 @@ package org.apache.marmotta.ldpath.model.transformers;
 import java.util.Date;
 import java.util.Map;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 /**
@@ -42,7 +42,7 @@ public class DateTimeTransformer<Node> implements NodeTransformer<Date,Node> {
      * @return
      */
     @Override
-    public Date transform(RDFBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Date transform(NodeBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(rdfBackend.isLiteral(node)) {
             return rdfBackend.dateTimeValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTransformer.java
index 60a1181..c47387a 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DateTransformer.java
@@ -20,7 +20,7 @@ package org.apache.marmotta.ldpath.model.transformers;
 import java.util.Date;
 import java.util.Map;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 /**
@@ -41,7 +41,7 @@ public class DateTransformer<Node> implements NodeTransformer<Date,Node> {
      * @return
      */
     @Override
-    public Date transform(RDFBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Date transform(NodeBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(rdfBackend.isLiteral(node)) {
             return rdfBackend.dateValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DoubleTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DoubleTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DoubleTransformer.java
index 37b37b5..83bec9c 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DoubleTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DoubleTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -38,7 +38,7 @@ public class DoubleTransformer<Node> implements NodeTransformer<Double,Node> {
      * @return
      */
     @Override
-    public Double transform(RDFBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Double transform(NodeBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(rdfBackend.isLiteral(node)) {
             return rdfBackend.doubleValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DurationTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DurationTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DurationTransformer.java
index 57a50c6..37d7f54 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DurationTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/DurationTransformer.java
@@ -21,7 +21,7 @@ import javax.xml.datatype.DatatypeConfigurationException;
 import javax.xml.datatype.DatatypeFactory;
 import javax.xml.datatype.Duration;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -58,7 +58,7 @@ public class DurationTransformer<Node> implements NodeTransformer<Duration,Node>
         return xmlDatatypeFactory;
     }
     @Override
-    public Duration transform(RDFBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Duration transform(NodeBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(backend.isLiteral(node)) {
             return toDuration(backend.stringValue(node), false);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/FloatTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/FloatTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/FloatTransformer.java
index d2bbab5..f019df3 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/FloatTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/FloatTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -40,7 +40,7 @@ public class FloatTransformer<Node> implements NodeTransformer<Float,Node> {
      * @return
      */
     @Override
-    public Float transform(RDFBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Float transform(NodeBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(rdfBackend.isLiteral(node)) {
             return rdfBackend.floatValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IdentityTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IdentityTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IdentityTransformer.java
index 0b3571d..f0fc6eb 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IdentityTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IdentityTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -39,7 +39,7 @@ public class IdentityTransformer<Node> implements NodeTransformer<Node,Node> {
      * @return
      */
     @Override
-    public Node transform(RDFBackend<Node> nodeRDFBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Node transform(NodeBackend<Node> nodeRDFBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         return node;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IntTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IntTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IntTransformer.java
index ed18452..d0a33c9 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IntTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/IntTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -39,7 +39,7 @@ public class IntTransformer<Node> implements NodeTransformer<Integer,Node> {
      * @return
      */
     @Override
-    public Integer transform(RDFBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Integer transform(NodeBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(rdfBackend.isLiteral(node)) {
             return rdfBackend.intValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/LongTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/LongTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/LongTransformer.java
index 0d4227d..4188e02 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/LongTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/LongTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -38,7 +38,7 @@ public class LongTransformer<Node> implements NodeTransformer<Long,Node> {
      * @return
      */
     @Override
-    public Long transform(RDFBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Long transform(NodeBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(rdfBackend.isLiteral(node)) {
             return rdfBackend.longValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ShortTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ShortTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ShortTransformer.java
index 352f6a1..66fcfa1 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ShortTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/ShortTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -25,7 +25,7 @@ import java.util.Map;
 public class ShortTransformer<Node> implements NodeTransformer<Short,Node> {
 
     @Override
-    public Short transform(RDFBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Short transform(NodeBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(backend.isLiteral(node)) {
             return backend.decimalValue(node).shortValueExact();
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/StringTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/StringTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/StringTransformer.java
index 5dfc973..addb444 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/StringTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/StringTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 import java.util.Map;
@@ -39,7 +39,7 @@ public class StringTransformer<Node> implements NodeTransformer<String,Node> {
      * @return
      */
     @Override
-    public String transform(RDFBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public String transform(NodeBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         return backend.stringValue(node);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/TimeTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/TimeTransformer.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/TimeTransformer.java
index 0289ddb..887c0eb 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/TimeTransformer.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/transformers/TimeTransformer.java
@@ -21,7 +21,7 @@ package org.apache.marmotta.ldpath.model.transformers;
 import java.util.Date;
 import java.util.Map;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 
 /**
@@ -40,7 +40,7 @@ public class TimeTransformer<Node> implements NodeTransformer<Date,Node> {
      * @return
      */
     @Override
-    public Date transform(RDFBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
+    public Date transform(NodeBackend<Node> rdfBackend, Node node, Map<String, String> configuration) throws IllegalArgumentException {
         if(rdfBackend.isLiteral(node)) {
             return rdfBackend.timeValue(node);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj b/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj
index b490fb8..dc5d308 100644
--- a/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj
+++ b/libraries/ldpath/ldpath-core/src/main/javacc/at/newmedialab/ldpath/parser/rdfpath.jj
@@ -76,17 +76,17 @@ public class RdfPathParser<Node> {
          */
         private Map<String,String> namespaces = new HashMap<String,String>();
 
-        private RDFBackend<Node> backend;
+        private NodeBackend<Node> backend;
 
         private Configuration config;
 
         private Mode mode = Mode.PROGRAM;
 
-        public RdfPathParser(RDFBackend<Node> backend, Reader in) {
+        public RdfPathParser(NodeBackend<Node> backend, Reader in) {
             this(backend,null,in);
         }
 
-        public RdfPathParser(RDFBackend<Node> backend, Configuration config, Reader in) {
+        public RdfPathParser(NodeBackend<Node> backend, Configuration config, Reader in) {
             this(in);
             this.backend = backend;
             if(config == null) {
@@ -98,11 +98,11 @@ public class RdfPathParser<Node> {
             initialise();
         }
 
-        public RdfPathParser(RDFBackend<Node> backend, InputStream in) {
+        public RdfPathParser(NodeBackend<Node> backend, InputStream in) {
             this(backend,null,in);
         }
 
-        public RdfPathParser(RDFBackend<Node> backend, Configuration config, InputStream in) {
+        public RdfPathParser(NodeBackend<Node> backend, Configuration config, InputStream in) {
             this(in);
             this.backend = backend;
             if(config == null) {
@@ -114,11 +114,11 @@ public class RdfPathParser<Node> {
             initialise();
         }
 
-        public RdfPathParser(RDFBackend<Node> backend, InputStream in, String encoding) {
+        public RdfPathParser(NodeBackend<Node> backend, InputStream in, String encoding) {
             this(backend,null,in,encoding);
         }
 
-        public RdfPathParser(RDFBackend<Node> backend, Configuration config, InputStream in, String encoding) {
+        public RdfPathParser(NodeBackend<Node> backend, Configuration config, InputStream in, String encoding) {
             this(in,encoding);
             this.backend = backend;
             if(config == null) {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/EmptyTestingBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/EmptyTestingBackend.java b/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/EmptyTestingBackend.java
index dfaf5cd..65329f0 100644
--- a/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/EmptyTestingBackend.java
+++ b/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/EmptyTestingBackend.java
@@ -19,93 +19,57 @@ package org.apache.marmotta.ldpath.parser;
 
 
 import java.net.URI;
-import java.util.Collection;
 import java.util.Locale;
-import java.util.concurrent.ThreadPoolExecutor;
 
 import org.apache.marmotta.ldpath.model.backend.AbstractBackend;
 
 
 public class EmptyTestingBackend extends
 		AbstractBackend<String> {
-	@Override
-	public boolean supportsThreading() {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public ThreadPoolExecutor getThreadPool() {
-		// TODO Auto-generated method stub
-		return null;
-	}
 
 	@Override
 	public boolean isLiteral(String n) {
-		// TODO Auto-generated method stub
 		return false;
 	}
 
 	@Override
 	public boolean isURI(String n) {
-		// TODO Auto-generated method stub
 		return false;
 	}
 
 	@Override
 	public boolean isBlank(String n) {
-		// TODO Auto-generated method stub
 		return false;
 	}
 
 	@Override
 	public Locale getLiteralLanguage(String n) {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
 	@Override
 	public URI getLiteralType(String n) {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
 	@Override
 	public String createLiteral(String content) {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
 	@Override
 	public String createLiteral(String content, Locale language,
 			URI type) {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
 	@Override
 	public String createURI(String uri) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Collection<String> listObjects(String subject,
-			String property) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Collection<String> listSubjects(String property,
-			String object) {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
 	@Override
 	public String stringValue(String node) {
-		// TODO Auto-generated method stub
 		return null;
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/ParserTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/ParserTest.java b/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/ParserTest.java
index b914628..f7bcbe8 100644
--- a/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/ParserTest.java
+++ b/libraries/ldpath/ldpath-core/src/test/java/org/apache/marmotta/ldpath/parser/ParserTest.java
@@ -17,17 +17,11 @@
  */
 package org.apache.marmotta.ldpath.parser;
 
-import org.apache.marmotta.ldpath.parser.ParseException;
-import org.apache.marmotta.ldpath.parser.RdfPathParser;
-import org.apache.commons.io.IOUtils;
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
-import org.apache.marmotta.ldpath.api.tests.NodeTest;
-import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
-import org.apache.marmotta.ldpath.model.programs.Program;
-import org.hamcrest.CoreMatchers;
-import org.junit.Assume;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.io.IOException;
 import java.io.StringReader;
@@ -36,12 +30,20 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.junit.Assert.*;
+import org.apache.commons.io.IOUtils;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
+import org.apache.marmotta.ldpath.api.tests.NodeTest;
+import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
+import org.apache.marmotta.ldpath.model.programs.Program;
+import org.hamcrest.CoreMatchers;
+import org.junit.Assume;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 
 public class ParserTest {
 
-    private static RDFBackend<String> backend;
+    private static NodeBackend<String> backend;
     private static final String NS_TEST = "http://example.com/";
     private static final String NS_FOO = "http://foo.com/some/path#";
 
@@ -113,7 +115,7 @@ public class ParserTest {
         RdfPathParser<String> rdfPathParser = new RdfPathParser<String>(backend,new StringReader(IOUtils.toString(resource)));
         rdfPathParser.registerTransformer(NS_TEST + "type", new NodeTransformer<String, String>() {
             @Override
-            public String transform(RDFBackend<String> backend, String node, Map<String,String> configuration)
+            public String transform(NodeBackend<String> backend, String node, Map<String,String> configuration)
                     throws IllegalArgumentException {
                 return node;
             }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-functions-collections/src/main/java/org/apache/marmotta/ldpath/model/functions/coll/AbstractCollFunction.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-functions-collections/src/main/java/org/apache/marmotta/ldpath/model/functions/coll/AbstractCollFunction.java b/libraries/ldpath/ldpath-functions-collections/src/main/java/org/apache/marmotta/ldpath/model/functions/coll/AbstractCollFunction.java
index 9d550f0..ff6af3a 100644
--- a/libraries/ldpath/ldpath-functions-collections/src/main/java/org/apache/marmotta/ldpath/model/functions/coll/AbstractCollFunction.java
+++ b/libraries/ldpath/ldpath-functions-collections/src/main/java/org/apache/marmotta/ldpath/model/functions/coll/AbstractCollFunction.java
@@ -20,6 +20,7 @@ package org.apache.marmotta.ldpath.model.functions.coll;
 
 import java.util.Collection;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.functions.SelectorFunction;
 
@@ -27,7 +28,7 @@ public abstract class AbstractCollFunction<Node> extends SelectorFunction<Node>
 
     protected static final String RDF = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
 
-    protected int getIndex(RDFBackend<Node> backend, Collection<Node> collection) {
+    protected int getIndex(NodeBackend<Node> backend, Collection<Node> collection) {
         if (collection.size() != 1) { throw new IllegalArgumentException("index must be a singel integer literal"); }
         return backend.intValue(collection.iterator().next());
     }
@@ -36,7 +37,7 @@ public abstract class AbstractCollFunction<Node> extends SelectorFunction<Node>
         return backend.listObjects(node, backend.createURI(RDF + "type")).contains(backend.createURI(type));
     }
 
-    protected boolean isNil(RDFBackend<Node> backend, Node node) {
+    protected boolean isNil(NodeBackend<Node> backend, Node node) {
         return backend.isURI(node) && backend.stringValue(node).equals(RDF + "nil");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MaxFunction.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MaxFunction.java b/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MaxFunction.java
index 67bad62..a403303 100644
--- a/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MaxFunction.java
+++ b/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MaxFunction.java
@@ -22,6 +22,7 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.model.Constants;
 import org.apache.marmotta.ldpath.model.transformers.DoubleTransformer;
@@ -45,7 +46,7 @@ public class MaxFunction<Node> extends MathFunction<Node> {
         return result;
     }
 
-    protected Node calc(RDFBackend<Node> backend, Collection<Node> arg) {
+    protected Node calc(NodeBackend<Node> backend, Collection<Node> arg) {
         /* MAX */
         double d = Double.MIN_VALUE;
         Node max = null;

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MinFunction.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MinFunction.java b/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MinFunction.java
index ababd26..ada8303 100644
--- a/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MinFunction.java
+++ b/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/MinFunction.java
@@ -22,6 +22,7 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.model.Constants;
 import org.apache.marmotta.ldpath.model.transformers.DoubleTransformer;
@@ -46,7 +47,7 @@ public class MinFunction<Node> extends MathFunction<Node> {
         return result;
     }
 
-    protected Node calc(RDFBackend<Node> backend, Collection<Node> arg) {
+    protected Node calc(NodeBackend<Node> backend, Collection<Node> arg) {
         /* MIN */
         double d = Double.MAX_VALUE;
         Node min = null;

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/RoundFunction.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/RoundFunction.java b/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/RoundFunction.java
index af68edd..9a18a8e 100644
--- a/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/RoundFunction.java
+++ b/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/RoundFunction.java
@@ -22,6 +22,7 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.model.Constants;
 import org.apache.marmotta.ldpath.model.transformers.DoubleTransformer;
@@ -48,7 +49,7 @@ public class RoundFunction<Node> extends MathFunction<Node> {
         return result;
     }
 
-    protected Node calc(RDFBackend<Node> backend, Node node) {
+    protected Node calc(NodeBackend<Node> backend, Node node) {
         /* SUM */
         try {
             Double val = doubleTransformer.transform(backend, node, null);

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/SumFunction.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/SumFunction.java b/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/SumFunction.java
index 264cb6a..a78d68b 100644
--- a/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/SumFunction.java
+++ b/libraries/ldpath/ldpath-functions-math/src/main/java/org/apache/marmotta/ldpath/model/functions/math/SumFunction.java
@@ -22,6 +22,7 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.model.Constants;
 import org.apache.marmotta.ldpath.model.transformers.DoubleTransformer;
@@ -45,7 +46,7 @@ public class SumFunction<Node> extends MathFunction<Node> {
         return result;
     }
 
-    protected Node calc(RDFBackend<Node> backend, Collection<Node> arg) {
+    protected Node calc(NodeBackend<Node> backend, Collection<Node> arg) {
         /* SUM */
         Double d = 0d;
         for (Node n : arg) {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathDirective.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathDirective.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathDirective.java
index 32a4983..78902e8 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathDirective.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathDirective.java
@@ -26,6 +26,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.marmotta.ldpath.LDPath;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.exception.LDPathParseException;
 import org.apache.marmotta.ldpath.model.Constants;
@@ -68,7 +69,7 @@ public class LDPathDirective<Node> implements TemplateDirectiveModel {
 
 
     private LDPath<Node>     ldpath;
-    private RDFBackend<Node> backend;
+    private NodeBackend<Node> backend;
 
     public LDPathDirective(RDFBackend<Node> backend) {
         this.ldpath  = new LDPath<Node>(backend);

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathMethod.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathMethod.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathMethod.java
index a2c8584..e1a175d 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathMethod.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/engine/LDPathMethod.java
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.marmotta.ldpath.LDPath;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.exception.LDPathParseException;
 import org.apache.marmotta.ldpath.model.Constants;
@@ -45,7 +46,7 @@ public class LDPathMethod<Node> implements TemplateMethodModel {
 
 
     private LDPath<Node> ldpath;
-    private RDFBackend<Node> backend;
+    private NodeBackend<Node> backend;
 
     public LDPathMethod(RDFBackend<Node> backend) {
         this.ldpath  = new LDPath<Node>(backend);

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/freemarker/TemplateNodeModel.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/freemarker/TemplateNodeModel.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/freemarker/TemplateNodeModel.java
index 89a507e..91fc21c 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/freemarker/TemplateNodeModel.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/freemarker/TemplateNodeModel.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.template.model.freemarker;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 
 import freemarker.template.*;
 
@@ -29,9 +29,9 @@ import freemarker.template.*;
 public class TemplateNodeModel<Node> implements TemplateModel, TemplateHashModel, AdapterTemplateModel {
 
     private Node node;
-    private RDFBackend<Node> backend;
+    private NodeBackend<Node> backend;
 
-    public TemplateNodeModel(Node node, RDFBackend<Node> backend) {
+    public TemplateNodeModel(Node node, NodeBackend<Node> backend) {
         this.node    = node;
         this.backend = backend;
     }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateBooleanTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateBooleanTransformer.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateBooleanTransformer.java
index 5ea2d96..b6df026 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateBooleanTransformer.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateBooleanTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.template.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 import org.apache.marmotta.ldpath.model.transformers.BooleanTransformer;
 
@@ -50,7 +50,7 @@ public class TemplateBooleanTransformer<Node> implements NodeTransformer<Templat
      * @return
      */
     @Override
-    public TemplateBooleanModel transform(final RDFBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
+    public TemplateBooleanModel transform(final NodeBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
         return new TemplateBooleanModel() {
             @Override
             public boolean getAsBoolean() throws TemplateModelException {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDateTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDateTransformer.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDateTransformer.java
index 4bee1de..57f0a70 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDateTransformer.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDateTransformer.java
@@ -23,7 +23,7 @@ import freemarker.template.TemplateModelException;
 import java.util.Date;
 import java.util.Map;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 import org.apache.marmotta.ldpath.model.transformers.DateTimeTransformer;
 
@@ -57,7 +57,7 @@ public class TemplateDateTransformer<Node> implements NodeTransformer<TemplateDa
      * @return
      */
     @Override
-    public TemplateDateModel transform(final RDFBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
+    public TemplateDateModel transform(final NodeBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
         return new TemplateDateModel() {
             @Override
             public Date getAsDate() throws TemplateModelException {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDoubleTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDoubleTransformer.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDoubleTransformer.java
index b19f327..594ea93 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDoubleTransformer.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateDoubleTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.template.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 import org.apache.marmotta.ldpath.model.transformers.DoubleTransformer;
 
@@ -52,7 +52,7 @@ public class TemplateDoubleTransformer<Node> implements NodeTransformer<Template
      * @return
      */
     @Override
-    public TemplateNumberModel transform(final RDFBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
+    public TemplateNumberModel transform(final NodeBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
         return new TemplateNumberModel() {
             @Override
             public Number getAsNumber() throws TemplateModelException {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateFloatTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateFloatTransformer.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateFloatTransformer.java
index 71610ef..d8d2c2a 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateFloatTransformer.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateFloatTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.template.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 import org.apache.marmotta.ldpath.model.transformers.FloatTransformer;
 
@@ -50,7 +50,7 @@ public class TemplateFloatTransformer<Node> implements NodeTransformer<TemplateN
      * @return
      */
     @Override
-    public TemplateNumberModel transform(final RDFBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
+    public TemplateNumberModel transform(final NodeBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
         return new TemplateNumberModel() {
             @Override
             public Number getAsNumber() throws TemplateModelException {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateIntegerTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateIntegerTransformer.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateIntegerTransformer.java
index e7d03a9..5df8bd6 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateIntegerTransformer.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateIntegerTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.template.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 import org.apache.marmotta.ldpath.model.transformers.IntTransformer;
 
@@ -50,7 +50,7 @@ public class TemplateIntegerTransformer<Node> implements NodeTransformer<Templat
      * @return
      */
     @Override
-    public TemplateNumberModel transform(final RDFBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
+    public TemplateNumberModel transform(final NodeBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
         return new TemplateNumberModel() {
             @Override
             public Number getAsNumber() throws TemplateModelException {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateLongTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateLongTransformer.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateLongTransformer.java
index 509e32a..9fc20b0 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateLongTransformer.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateLongTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.template.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 import org.apache.marmotta.ldpath.model.transformers.LongTransformer;
 
@@ -50,7 +50,7 @@ public class TemplateLongTransformer<Node> implements NodeTransformer<TemplateNu
      * @return
      */
     @Override
-    public TemplateNumberModel transform(final RDFBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
+    public TemplateNumberModel transform(final NodeBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
         return new TemplateNumberModel() {
             @Override
             public Number getAsNumber() throws TemplateModelException {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateScalarTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateScalarTransformer.java b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateScalarTransformer.java
index 148c5ff..980a030 100644
--- a/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateScalarTransformer.java
+++ b/libraries/ldpath/ldpath-template/src/main/java/org/apache/marmotta/ldpath/template/model/transformers/TemplateScalarTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.template.model.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
 import org.apache.marmotta.ldpath.model.transformers.StringTransformer;
 
@@ -51,7 +51,7 @@ public class TemplateScalarTransformer<Node> implements NodeTransformer<Template
      * @return
      */
     @Override
-    public TemplateScalarModel transform(final RDFBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
+    public TemplateScalarModel transform(final NodeBackend<Node> nodeRDFBackend, final Node node, final Map<String, String> configuration) throws IllegalArgumentException {
         return new TemplateScalarModel() {
             @Override
             public String getAsString() throws TemplateModelException {


[4/5] git commit: Improved javadoc

Posted by ja...@apache.org.
Improved javadoc

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

Branch: refs/heads/develop
Commit: 101ac6b86b0a0fbb271f0b5360956501e04e4beb
Parents: bee275f
Author: Jakob Frank <ja...@apache.org>
Authored: Wed Mar 27 15:46:47 2013 +0100
Committer: Jakob Frank <ja...@apache.org>
Committed: Wed Mar 27 16:34:53 2013 +0100

----------------------------------------------------------------------
 .../backend/sesame/SesameRepositoryBackend.java    |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/101ac6b8/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java
index d055504..d98575a 100644
--- a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java
+++ b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java
@@ -32,13 +32,13 @@ import org.openrdf.repository.RepositoryException;
  * Generic implementation of a Sesame backend for LDPath. A Sesame repository is passed as argument to the
  * constructor.
  * <p/>
+ * <strong>ATTENTION:</strong> This backend is creating an independent (new) transaction for each invocation of {@link #listObjects(Value, Value)} or {@link #listSubjects(Value, Value)}.
+ * Consider using the {@link SesameConnectionBackend} for inproved performance!
+ * <p/>
  * Implementatins can either use this class directly or implement their own Sesame-based backend by subclassing
  * and calling the super constructor.
  * <p/>
- * Author: Sebastian Schaffert
- * @deprecated Use a {@link SesameConnectionBackend} with explicit transaction handling.
  */
-@Deprecated
 public class SesameRepositoryBackend extends AbstractSesameBackend {
 
     private Repository repository;


[3/5] git commit: MARMOTTA-110 created super-interface of RDFBackend for parsing: NodeBaclend

Posted by ja...@apache.org.
MARMOTTA-110 created super-interface of RDFBackend 
    for parsing: NodeBaclend

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

Branch: refs/heads/develop
Commit: 4dd5de63c2ce12397c37b59a6371f7882593cae6
Parents: b75ca1c
Author: Jakob Frank <ja...@apache.org>
Authored: Wed Mar 27 14:33:00 2013 +0100
Committer: Jakob Frank <ja...@apache.org>
Committed: Wed Mar 27 16:34:53 2013 +0100

----------------------------------------------------------------------
 libraries/ldpath/ldpath-api/pom.xml                |    1 -
 .../marmotta/ldpath/api/LDPathConstruct.java       |    4 +-
 .../marmotta/ldpath/api/backend/NodeBackend.java   |  226 +++++++++++
 .../marmotta/ldpath/api/backend/RDFBackend.java    |  239 +-----------
 .../ldpath/api/functions/SelectorFunction.java     |    4 +-
 .../ldpath/api/functions/TestFunction.java         |    4 +-
 .../ldpath/api/selectors/NodeSelector.java         |    3 +-
 .../ldpath/api/transformers/NodeTransformer.java   |    4 +-
 .../marmotta/ldpath/backend/file/PathTest.java     |    3 +-
 .../backend/sesame/AbstractSesameBackend.java      |  306 +++------------
 .../backend/sesame/SesameConnectionBackend.java    |    7 +-
 .../backend/sesame/SesameRepositoryBackend.java    |    9 +-
 .../ldpath/backend/sesame/SesameValueBackend.java  |  257 ++++++++++++
 .../backend/sesame/ThreadingSesameBackend.java     |    4 +-
 libraries/ldpath/ldpath-core/pom.xml               |    1 -
 .../ldpath/model/backend/AbstractBackend.java      |    5 +-
 .../marmotta/ldpath/model/fields/FieldMapping.java |    3 +-
 .../marmotta/ldpath/model/programs/Program.java    |    3 +-
 .../ldpath/model/selectors/FunctionSelector.java   |    5 +-
 .../model/selectors/IntersectionSelector.java      |    5 +-
 .../ldpath/model/selectors/PathSelector.java       |    5 +-
 .../ldpath/model/selectors/PropertySelector.java   |    5 +-
 .../model/selectors/RecursivePathSelector.java     |    5 +-
 .../model/selectors/ReversePropertySelector.java   |    5 +-
 .../ldpath/model/selectors/SelfSelector.java       |    5 +-
 .../model/selectors/StringConstantSelector.java    |    5 +-
 .../ldpath/model/selectors/TestingSelector.java    |    5 +-
 .../ldpath/model/selectors/UnionSelector.java      |    5 +-
 .../ldpath/model/selectors/WildcardSelector.java   |    4 +-
 .../marmotta/ldpath/model/tests/AndTest.java       |    3 +-
 .../marmotta/ldpath/model/tests/FunctionTest.java  |    3 +-
 .../ldpath/model/tests/LiteralLanguageTest.java    |    3 +-
 .../ldpath/model/tests/LiteralTypeTest.java        |    3 +-
 .../marmotta/ldpath/model/tests/NotTest.java       |    3 +-
 .../apache/marmotta/ldpath/model/tests/OrTest.java |    3 +-
 .../ldpath/model/tests/PathEqualityTest.java       |    3 +-
 .../marmotta/ldpath/model/tests/PathTest.java      |    3 +-
 .../model/tests/functions/BinaryNumericTest.java   |    3 +-
 .../model/transformers/BigDecimalTransformer.java  |    4 +-
 .../model/transformers/BigIntegerTransformer.java  |    4 +-
 .../model/transformers/BooleanTransformer.java     |    4 +-
 .../ldpath/model/transformers/ByteTransformer.java |    4 +-
 .../model/transformers/DateTimeTransformer.java    |    4 +-
 .../ldpath/model/transformers/DateTransformer.java |    4 +-
 .../model/transformers/DoubleTransformer.java      |    4 +-
 .../model/transformers/DurationTransformer.java    |    4 +-
 .../model/transformers/FloatTransformer.java       |    4 +-
 .../model/transformers/IdentityTransformer.java    |    4 +-
 .../ldpath/model/transformers/IntTransformer.java  |    4 +-
 .../ldpath/model/transformers/LongTransformer.java |    4 +-
 .../model/transformers/ShortTransformer.java       |    4 +-
 .../model/transformers/StringTransformer.java      |    4 +-
 .../ldpath/model/transformers/TimeTransformer.java |    4 +-
 .../javacc/at/newmedialab/ldpath/parser/rdfpath.jj |   14 +-
 .../ldpath/parser/EmptyTestingBackend.java         |   36 --
 .../apache/marmotta/ldpath/parser/ParserTest.java  |   30 +-
 .../model/functions/coll/AbstractCollFunction.java |    5 +-
 .../ldpath/model/functions/math/MaxFunction.java   |    3 +-
 .../ldpath/model/functions/math/MinFunction.java   |    3 +-
 .../ldpath/model/functions/math/RoundFunction.java |    3 +-
 .../ldpath/model/functions/math/SumFunction.java   |    3 +-
 .../ldpath/template/engine/LDPathDirective.java    |    3 +-
 .../ldpath/template/engine/LDPathMethod.java       |    3 +-
 .../model/freemarker/TemplateNodeModel.java        |    6 +-
 .../transformers/TemplateBooleanTransformer.java   |    4 +-
 .../transformers/TemplateDateTransformer.java      |    4 +-
 .../transformers/TemplateDoubleTransformer.java    |    4 +-
 .../transformers/TemplateFloatTransformer.java     |    4 +-
 .../transformers/TemplateIntegerTransformer.java   |    4 +-
 .../transformers/TemplateLongTransformer.java      |    4 +-
 .../transformers/TemplateScalarTransformer.java    |    4 +-
 71 files changed, 715 insertions(+), 646 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-api/pom.xml
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-api/pom.xml b/libraries/ldpath/ldpath-api/pom.xml
index 23e7793..174121e 100644
--- a/libraries/ldpath/ldpath-api/pom.xml
+++ b/libraries/ldpath/ldpath-api/pom.xml
@@ -59,7 +59,6 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-scr-plugin</artifactId>
-                <version>1.8.0</version>
                 <executions>
                     <execution>
                         <id>generate-scr-scrdescriptor</id>

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/LDPathConstruct.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/LDPathConstruct.java b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/LDPathConstruct.java
index 572c7c7..dab46f5 100644
--- a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/LDPathConstruct.java
+++ b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/LDPathConstruct.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.api;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 
 /**
  * Add file description here!
@@ -31,6 +31,6 @@ public interface LDPathConstruct<Node> {
      * @return
      * @param backend
      */
-    public String getPathExpression(RDFBackend<Node> backend);
+    public String getPathExpression(NodeBackend<Node> backend);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/backend/NodeBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/backend/NodeBackend.java b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/backend/NodeBackend.java
new file mode 100644
index 0000000..2a96269
--- /dev/null
+++ b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/backend/NodeBackend.java
@@ -0,0 +1,226 @@
+/**
+ * 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.ldpath.api.backend;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URI;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Value centered Backend for LDPath, conatins all methods required for parsing and serializing a LDPath-Program
+ */
+public interface NodeBackend<Node> {
+
+	/**
+	 * Test whether the node passed as argument is a literal
+	 * @param n the node to check
+	 * @return true if the node is a literal
+	 */
+	public boolean isLiteral(Node n);
+
+	/**
+	 * Test whether the node passed as argument is a URI
+	 * @param n the node to check
+	 * @return true if the node is a URI
+	 */
+	public boolean isURI(Node n);
+
+	/**
+	 * Test whether the node passed as argument is a blank node
+	 * @param n the node to check
+	 * @return true if the node is a blank node
+	 */
+	public boolean isBlank(Node n);
+
+	/**
+	 * Return the language of the literal node passed as argument.
+	 *
+	 * @param n the literal node for which to return the language
+	 * @return a Locale representing the language of the literal, or null if the literal node has no language
+	 * @throws IllegalArgumentException in case the node is no literal
+	 */
+	public Locale getLiteralLanguage(Node n);
+
+	/**
+	 * Return the URI of the type of the literal node passed as argument.
+	 *
+	 * @param n the literal node for which to return the typer
+	 * @return a URI representing the type of the literal content, or null if the literal is untyped
+	 * @throws IllegalArgumentException in case the node is no literal
+	 */
+	public URI getLiteralType(Node n);
+
+	/**
+	 * Create a literal node with the content passed as argument
+	 * @param content  string content to represent inside the literal
+	 * @return a literal node in using the model used by this backend
+	 */
+	public Node createLiteral(String content);
+
+	/**
+	 * Create a literal node with the content passed as argument
+	 * @param content  string content to represent inside the literal
+	 * @return a literal node in using the model used by this backend
+	 */
+	public Node createLiteral(String content, Locale language, URI type);
+
+	/**
+	 * Create a URI mode with the URI passed as argument
+	 * @param uri  URI of the resource to create
+	 * @return a URI node using the model used by this backend
+	 */
+	public Node createURI(String uri);
+
+	/**
+	 * Return the lexial representation of a node. For a literal, this will be the content, for a URI node it will be the
+	 * URI itself, and for a blank node it will be the identifier of the node.
+	 * @param node
+	 * @return
+	 */
+	public String stringValue(Node node);
+
+	/**
+	 * Return the double value of a literal node. Depending on the backend implementing this method,
+	 * the value can be retrieved directly or must be parsed from the string representation. The method can throw
+	 * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as double, and an
+	 * IllegalArgumentException, indicating that the passed node is not a literal
+	 *
+	 * @param node the literal node for which to return the double value
+	 * @return double value of the literal node
+	 * @throws NumberFormatException in case the literal cannot be represented as double value
+	 * @throws ArithmeticException in case the literal cannot be represented as double value
+	 * @throws IllegalArgumentException in case the node passed as argument is not a literal
+	 */
+	public Double doubleValue(Node node);
+
+	/**
+	 * Return the long value of a literal node. Depending on the backend implementing this method,
+	 * the value can be retrieved directly or must be parsed from the string representation. The method can throw
+	 * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as long, and an
+	 * IllegalArgumentException, indicating that the passed node is not a literal
+	 *
+	 * @param node the literal node for which to return the long value
+	 * @return long value of the literal node
+	 * @throws NumberFormatException in case the literal cannot be represented as long value
+	 * @throws ArithmeticException in case the literal cannot be represented as long value
+	 * @throws IllegalArgumentException in case the node passed as argument is not a literal
+	 */
+	public Long longValue(Node node);
+
+	/**
+	 * Return the boolean value of a literal node. Depending on the backend implementing this method,
+	 * the value can be retrieved directly or must be parsed from the string representation. 
+	 * TODO: Define:<ul>
+	 * <li> Do we also support '0' '1', 'yes', 'no'; whats about case insensitive 
+	 *      such as TRUE, False
+	 * <li> should we throw an RuntimeException of not an boolean value or return
+	 *      false as {@link Boolean#parseBoolean(String)}
+	 * </ul>
+	 * @param node the literal node for which to return the boolean value
+	 * @return long value of the literal node
+	 * @throws IllegalArgumentException in case the node passed as argument is not a literal
+	 */
+	public Boolean booleanValue(Node node);
+
+	/**
+	 * TODO
+	 * @param node the literal node for which to return the dateTime value
+	 * @return long value of the literal node
+	 * @throws IllegalArgumentException in case the node passed as argument is not a literal
+	 */
+	public Date dateTimeValue(Node node);
+
+	/**
+	 * TODO
+	 * @param node the literal node for which to return the date value
+	 * @return long value of the literal node
+	 * @throws IllegalArgumentException in case the node passed as argument is not a literal
+	 */
+	public Date dateValue(Node node);
+
+	/**
+	 * TODO
+	 * @param node the literal node for which to return the time value
+	 * @return long value of the literal node
+	 * @throws IllegalArgumentException in case the node passed as argument is not a literal
+	 */
+	public Date timeValue(Node node);
+
+	/**
+	 * Return the float value of a literal node. Depending on the backend implementing this method,
+	 * the value can be retrieved directly or must be parsed from the string representation. The method can throw
+	 * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as float, and an
+	 * IllegalArgumentException, indicating that the passed node is not a literal
+	 * 
+	 * @param node the literal node for which to return the float value
+	 * @return long value of the literal node
+	 * @throws NumberFormatException in case the literal cannot be represented as float value
+	 * @throws ArithmeticException in case the literal cannot be represented as float value
+	 * @throws IllegalArgumentException in case the node passed as argument is not a literal
+	 */
+	public Float floatValue(Node node);
+
+	/**
+	 * Return the 32bit integer value of a literal node. Depending on the backend implementing this method,
+	 * the value can be retrieved directly or must be parsed from the string representation. The method can throw
+	 * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as integer, and an
+	 * IllegalArgumentException, indicating that the passed node is not a literal.
+	 * <p>
+	 * Note that this is restricted to 32bit singed integer values as defined by
+	 * xsd:int and {@link Integer}. For bigger nuber one might want to use
+	 * xsd:integer represented by {@link BigInteger}.
+	 * 
+	 * @param node the literal node for which to return the Integer (xsd:int) value
+	 * @return long value of the literal node
+	 * @throws NumberFormatException in case the literal cannot be represented as 32 bit integer value
+	 * @throws ArithmeticException in case the literal cannot be represented as 32 bit integer value
+	 * @throws IllegalArgumentException in case the node passed as argument is not a literal
+	 */
+	public Integer intValue(Node node);
+
+	/**
+	 * Return the arbitrary length integer value of a literal node. Depending on the backend implementing this method,
+	 * the value can be retrieved directly or must be parsed from the string representation. The method can throw
+	 * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as integer, and an
+	 * IllegalArgumentException, indicating that the passed node is not a literal.
+	 *
+	 * @param node the literal node for which to return the {@link BigInteger xsd:integer} value
+	 * @return long value of the literal node
+	 * @throws NumberFormatException in case the literal cannot be represented as integer value
+	 * @throws ArithmeticException in case the literal cannot be represented as long value
+	 * @throws IllegalArgumentException in case the node passed as argument is integer a literal
+	 */
+	public BigInteger integerValue(Node node);
+
+	/**
+	 * Return the decimal number of a literal node. Depending on the backend implementing this method,
+	 * the value can be retrieved directly or must be parsed from the string representation. The method can throw
+	 * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as decimal, and an
+	 * IllegalArgumentException, indicating that the passed node is not a literal.
+	 *
+	 * @param node the literal node for which to return the xsd:decimal value
+	 * @return long value of the literal node
+	 * @throws NumberFormatException in case the literal cannot be represented as decimal value
+	 * @throws ArithmeticException in case the literal cannot be represented as decimal value
+	 * @throws IllegalArgumentException in case the node passed as argument is not a literal
+	 */
+	public BigDecimal decimalValue(Node node);
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/backend/RDFBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/backend/RDFBackend.java b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/backend/RDFBackend.java
index 0074af8..dc73789 100644
--- a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/backend/RDFBackend.java
+++ b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/backend/RDFBackend.java
@@ -17,241 +17,32 @@
  */
 package org.apache.marmotta.ldpath.api.backend;
 
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.URI;
 import java.util.Collection;
-import java.util.Date;
-import java.util.Locale;
 import java.util.concurrent.ThreadPoolExecutor;
 
 /**
  * A generic API for RDF models and triple stores; provides the testing and navigation functions needed for LDPath.
- * Implementations exist for Sesame, LMF, Jena and Clerezza. The API is somewhat typesafe by making use of a generic
+ * Implementations exist for Sesame, Jena and Clerezza. The API is somewhat typesafe by making use of a generic
  * for nodes.
- * <p/>
- * Author: Sebastian Schaffert
+ * 
+ * @param <Node> most generic type of a Node (e.g. Value in Sesame).
  */
-public interface RDFBackend<Node> {
-
-
-    /**
-     * Return true if the underlying backend supports the parallel execution of queries.
-     *
-     * @return
-     */
-    public boolean supportsThreading();
-
-
-    /**
-     * In case the backend supports threading, this method should return the ExecutorService representing the
-     * thread pool. LDPath lets the backend manage the thread pool to avoid excessive threading.
-     * @return
-     */
+public interface RDFBackend<Node> extends NodeBackend<Node> {
+
+	/**
+	 * @deprecated subject to be removed in the next release
+	 */
+	@Deprecated
+	public boolean supportsThreading();
+	
+	/**
+	 * @deprecated subject to be removed in the next release
+	 */
+	@Deprecated
     public ThreadPoolExecutor getThreadPool();
 
-    /**
-     * Test whether the node passed as argument is a literal
-     * @param n the node to check
-     * @return true if the node is a literal
-     */
-    public boolean isLiteral(Node n);
-
-    /**
-     * Test whether the node passed as argument is a URI
-     * @param n the node to check
-     * @return true if the node is a URI
-     */
-    public boolean isURI(Node n);
 
     /**
-     * Test whether the node passed as argument is a blank node
-     * @param n the node to check
-     * @return true if the node is a blank node
-     */
-    public boolean isBlank(Node n);
-
-    /**
-     * Return the language of the literal node passed as argument.
-     *
-     * @param n the literal node for which to return the language
-     * @return a Locale representing the language of the literal, or null if the literal node has no language
-     * @throws IllegalArgumentException in case the node is no literal
-     */
-    public Locale getLiteralLanguage(Node n);
-
-
-    /**
-     * Return the URI of the type of the literal node passed as argument.
-     *
-     * @param n the literal node for which to return the typer
-     * @return a URI representing the type of the literal content, or null if the literal is untyped
-     * @throws IllegalArgumentException in case the node is no literal
-     */
-    public URI getLiteralType(Node n);
-
-
-
-    /**
-     * Create a literal node with the content passed as argument
-     * @param content  string content to represent inside the literal
-     * @return a literal node in using the model used by this backend
-     */
-    public Node createLiteral(String content);
-
-    /**
-     * Create a literal node with the content passed as argument
-     * @param content  string content to represent inside the literal
-     * @return a literal node in using the model used by this backend
-     */
-    public Node createLiteral(String content, Locale language, URI type);
-
-    /**
-     * Create a URI mode with the URI passed as argument
-     * @param uri  URI of the resource to create
-     * @return a URI node using the model used by this backend
-     */
-    public Node createURI(String uri);
-
-
-    /**
-     * Return the lexial representation of a node. For a literal, this will be the content, for a URI node it will be the
-     * URI itself, and for a blank node it will be the identifier of the node.
-     * @param node
-     * @return
-     */
-    public String stringValue(Node node);
-
-    /**
-     * Return the double value of a literal node. Depending on the backend implementing this method,
-     * the value can be retrieved directly or must be parsed from the string representation. The method can throw
-     * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as double, and an
-     * IllegalArgumentException, indicating that the passed node is not a literal
-     *
-     * @param node the literal node for which to return the double value
-     * @return double value of the literal node
-     * @throws NumberFormatException in case the literal cannot be represented as double value
-     * @throws ArithmeticException in case the literal cannot be represented as double value
-     * @throws IllegalArgumentException in case the node passed as argument is not a literal
-     */
-    public Double doubleValue(Node node);
-
-
-    /**
-     * Return the long value of a literal node. Depending on the backend implementing this method,
-     * the value can be retrieved directly or must be parsed from the string representation. The method can throw
-     * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as long, and an
-     * IllegalArgumentException, indicating that the passed node is not a literal
-     *
-     * @param node the literal node for which to return the long value
-     * @return long value of the literal node
-     * @throws NumberFormatException in case the literal cannot be represented as long value
-     * @throws ArithmeticException in case the literal cannot be represented as long value
-     * @throws IllegalArgumentException in case the node passed as argument is not a literal
-     */
-    public Long longValue(Node node);
-
-    
-    /**
-     * Return the boolean value of a literal node. Depending on the backend implementing this method,
-     * the value can be retrieved directly or must be parsed from the string representation. 
-     * TODO: Define:<ul>
-     * <li> Do we also support '0' '1', 'yes', 'no'; whats about case insensitive 
-     *      such as TRUE, False
-     * <li> should we throw an RuntimeException of not an boolean value or return
-     *      false as {@link Boolean#parseBoolean(String)}
-     * </ul>
-     * @param node the literal node for which to return the boolean value
-     * @return long value of the literal node
-     * @throws IllegalArgumentException in case the node passed as argument is not a literal
-     */
-    public Boolean booleanValue(Node node);
-
-    /**
-     * TODO
-     * @param node the literal node for which to return the dateTime value
-     * @return long value of the literal node
-     * @throws IllegalArgumentException in case the node passed as argument is not a literal
-     */
-    public Date dateTimeValue(Node node);
-    
-    /**
-     * TODO
-     * @param node the literal node for which to return the date value
-     * @return long value of the literal node
-     * @throws IllegalArgumentException in case the node passed as argument is not a literal
-     */
-    public Date dateValue(Node node);
-    
-    /**
-     * TODO
-     * @param node the literal node for which to return the time value
-     * @return long value of the literal node
-     * @throws IllegalArgumentException in case the node passed as argument is not a literal
-     */
-    public Date timeValue(Node node);
-    
-    /**
-     * Return the float value of a literal node. Depending on the backend implementing this method,
-     * the value can be retrieved directly or must be parsed from the string representation. The method can throw
-     * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as float, and an
-     * IllegalArgumentException, indicating that the passed node is not a literal
-     * 
-     * @param node the literal node for which to return the float value
-     * @return long value of the literal node
-     * @throws NumberFormatException in case the literal cannot be represented as float value
-     * @throws ArithmeticException in case the literal cannot be represented as float value
-     * @throws IllegalArgumentException in case the node passed as argument is not a literal
-     */
-    public Float floatValue(Node node);
-    
-    /**
-     * Return the 32bit integer value of a literal node. Depending on the backend implementing this method,
-     * the value can be retrieved directly or must be parsed from the string representation. The method can throw
-     * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as integer, and an
-     * IllegalArgumentException, indicating that the passed node is not a literal.
-     * <p>
-     * Note that this is restricted to 32bit singed integer values as defined by
-     * xsd:int and {@link Integer}. For bigger nuber one might want to use
-     * xsd:integer represented by {@link BigInteger}.
-     * 
-     * @param node the literal node for which to return the Integer (xsd:int) value
-     * @return long value of the literal node
-     * @throws NumberFormatException in case the literal cannot be represented as 32 bit integer value
-     * @throws ArithmeticException in case the literal cannot be represented as 32 bit integer value
-     * @throws IllegalArgumentException in case the node passed as argument is not a literal
-     */
-    public Integer intValue(Node node);
-    
-    /**
-     * Return the arbitrary length integer value of a literal node. Depending on the backend implementing this method,
-     * the value can be retrieved directly or must be parsed from the string representation. The method can throw
-     * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as integer, and an
-     * IllegalArgumentException, indicating that the passed node is not a literal.
-     *
-     * @param node the literal node for which to return the {@link BigInteger xsd:integer} value
-     * @return long value of the literal node
-     * @throws NumberFormatException in case the literal cannot be represented as integer value
-     * @throws ArithmeticException in case the literal cannot be represented as long value
-     * @throws IllegalArgumentException in case the node passed as argument is integer a literal
-     */
-    public BigInteger integerValue(Node node);
-    
-    /**
-     * Return the decimal number of a literal node. Depending on the backend implementing this method,
-     * the value can be retrieved directly or must be parsed from the string representation. The method can throw
-     * a NumberFormatException or ArithmeticException indicating that the value cannot be represented as decimal, and an
-     * IllegalArgumentException, indicating that the passed node is not a literal.
-     *
-     * @param node the literal node for which to return the xsd:decimal value
-     * @return long value of the literal node
-     * @throws NumberFormatException in case the literal cannot be represented as decimal value
-     * @throws ArithmeticException in case the literal cannot be represented as decimal value
-     * @throws IllegalArgumentException in case the node passed as argument is not a literal
-     */
-    public BigDecimal decimalValue(Node node);
-    
-    /**
      * List the objects of triples in the triple store underlying this backend that have the subject and
      * property given as argument.
      *

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/SelectorFunction.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/SelectorFunction.java b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/SelectorFunction.java
index f8d7eff..8b5bba4 100644
--- a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/SelectorFunction.java
+++ b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/SelectorFunction.java
@@ -20,7 +20,7 @@ package org.apache.marmotta.ldpath.api.functions;
 
 import java.util.Collection;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 
 /**
  * Intermediate Interface for {@link NodeFunction}s used in the
@@ -32,7 +32,7 @@ import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 public abstract class SelectorFunction<Node> implements NodeFunction<Collection<Node>, Node> {
 
     @Override
-    public String getPathExpression(RDFBackend<Node> backend) {
+    public String getPathExpression(NodeBackend<Node> backend) {
         return getLocalName();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/TestFunction.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/TestFunction.java b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/TestFunction.java
index b723e1a..eb3889f 100644
--- a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/TestFunction.java
+++ b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/functions/TestFunction.java
@@ -17,12 +17,12 @@
  */
 package org.apache.marmotta.ldpath.api.functions;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 
 public abstract class TestFunction<Node> implements NodeFunction<Boolean, Node> {
 
     @Override
-    public String getPathExpression(RDFBackend<Node> backend) {
+    public String getPathExpression(NodeBackend<Node> backend) {
         return getLocalName();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/selectors/NodeSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/selectors/NodeSelector.java b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/selectors/NodeSelector.java
index d7d1ff8..994b484 100644
--- a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/selectors/NodeSelector.java
+++ b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/selectors/NodeSelector.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.marmotta.ldpath.api.LDPathConstruct;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 
 /**
@@ -55,5 +56,5 @@ public interface NodeSelector<Node> extends LDPathConstruct<Node> {
      *
      * @throws UnsupportedOperationException in case returning a name is not reasonable
      */
-    public String getName(RDFBackend<Node> backend);
+    public String getName(NodeBackend<Node> backend);
 }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/transformers/NodeTransformer.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/transformers/NodeTransformer.java b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/transformers/NodeTransformer.java
index e1fa236..44b07cc 100644
--- a/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/transformers/NodeTransformer.java
+++ b/libraries/ldpath/ldpath-api/src/main/java/org/apache/marmotta/ldpath/api/transformers/NodeTransformer.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.api.transformers;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 
 import java.util.Map;
 
@@ -41,6 +41,6 @@ public interface NodeTransformer<T,Node> {
      * @param configuration the field configuration used when defining the LDPath rule
      * @return
      */
-    public T transform(RDFBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException;
+    public T transform(NodeBackend<Node> backend, Node node, Map<String, String> configuration) throws IllegalArgumentException;
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java b/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java
index 6ccf825..9749b78 100644
--- a/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java
+++ b/libraries/ldpath/ldpath-backend-file/src/test/java/org/apache/marmotta/ldpath/backend/file/PathTest.java
@@ -43,6 +43,7 @@ import java.util.Map;
 import org.apache.marmotta.ldpath.LDPath;
 import org.apache.marmotta.ldpath.backend.file.FileBackend;
 import org.apache.marmotta.ldpath.backend.sesame.SesameRepositoryBackend;
+import org.hamcrest.CoreMatchers;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -73,7 +74,7 @@ public class PathTest {
         Map<Value, List<Value>> paths = new HashMap<Value, List<Value>>();
         Collection<Value> values = ldPath.pathQuery(backend.createURI("http://localhost:8080/LMF/resource/hans_meier"), "foaf:interest", null, paths);
         Assert.assertEquals(4,values.size());
-        Assert.assertThat(values,hasItems(
+        Assert.assertThat(values,CoreMatchers.<Value>hasItems(
                     backend.createURI("http://rdf.freebase.com/ns/en.software_engineering"),
                     backend.createURI("http://rdf.freebase.com/ns/en.linux"),
                     backend.createURI("http://dbpedia.org/resource/Java"),

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/AbstractSesameBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/AbstractSesameBackend.java b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/AbstractSesameBackend.java
index 1663a3e..93daedf 100644
--- a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/AbstractSesameBackend.java
+++ b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/AbstractSesameBackend.java
@@ -17,22 +17,15 @@
  */
 package org.apache.marmotta.ldpath.backend.sesame;
 
-import java.math.BigDecimal;
-import java.math.BigInteger;
 import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.Collection;
-import java.util.Date;
-import java.util.GregorianCalendar;
 import java.util.HashSet;
 import java.util.Locale;
 import java.util.Set;
 import java.util.concurrent.ThreadPoolExecutor;
 
-import javax.xml.datatype.XMLGregorianCalendar;
 
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
-import org.openrdf.model.BNode;
 import org.openrdf.model.Literal;
 import org.openrdf.model.Resource;
 import org.openrdf.model.Statement;
@@ -45,281 +38,84 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 
-public abstract class AbstractSesameBackend implements RDFBackend<Value> {
+public abstract class AbstractSesameBackend extends SesameValueBackend implements RDFBackend<Value> {
 
 	private static final Logger log = LoggerFactory.getLogger(AbstractSesameBackend.class);
 
-	/**
-	 * Return true if the underlying backend supports the parallel execution of queries.
-	 *
-	 * @return
-	 */
-	@Override
-	public boolean supportsThreading() {
-	    return false;
-	}
-
-	/**
-	 * In case the backend supports threading, this method should return the ExecutorService representing the
-	 * thread pool. LDPath lets the backend manage the thread pool to avoid excessive threading.
-	 *
-	 * @return
-	 */
-	@Override
-	public ThreadPoolExecutor getThreadPool() {
-	    return null;
-	}
-
-	/**
-	 * Test whether the node passed as argument is a literal
-	 *
-	 * @param n the node to check
-	 * @return true if the node is a literal
-	 */
-	@Override
-	public boolean isLiteral(Value n) {
-	    return n instanceof Literal;
-	}
-
-	/**
-	 * Test whether the node passed as argument is a URI
-	 *
-	 * @param n the node to check
-	 * @return true if the node is a URI
-	 */
-	@Override
-	public boolean isURI(Value n) {
-	    return n instanceof org.openrdf.model.URI;
-	}
-
-	/**
-	 * Test whether the node passed as argument is a blank node
-	 *
-	 * @param n the node to check
-	 * @return true if the node is a blank node
-	 */
-	@Override
-	public boolean isBlank(Value n) {
-	    return n instanceof BNode;
-	}
-
-	/**
-	 * Return the language of the literal node passed as argument.
-	 *
-	 * @param n the literal node for which to return the language
-	 * @return a Locale representing the language of the literal, or null if the literal node has no language
-	 * @throws IllegalArgumentException in case the node is no literal
-	 */
-	@Override
-	public Locale getLiteralLanguage(Value n) {
-	    try {
-	        if(((Literal)n).getLanguage() != null) {
-	            return new Locale( ((Literal)n).getLanguage() );
-	        } else {
-	            return null;
-	        }
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+n.stringValue()+" is not a literal" +
-	                "but of type "+debugType(n));
-	    }
-	}
-
-	/**
-	 * Return the URI of the type of the literal node passed as argument.
-	 *
-	 * @param n the literal node for which to return the typer
-	 * @return a URI representing the type of the literal content, or null if the literal is untyped
-	 * @throws IllegalArgumentException in case the node is no literal
-	 */
-	@Override
-	public URI getLiteralType(Value n) {
-	    try {
-	        if(((Literal)n).getDatatype() != null) {
-	            try {
-	                return new URI(((Literal)n).getDatatype().stringValue());
-	            } catch (URISyntaxException e) {
-	                log.error("literal datatype was not a valid URI: {}",((Literal) n).getDatatype());
-	                return null;
-	            }
-	        } else {
-	            return null;
-	        }
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+n.stringValue()+" is not a literal" +
-	                "but of type "+debugType(n));
-	    }
+	protected org.openrdf.model.URI createURIInternal(final ValueFactory valueFactory, String uri) {
+		return valueFactory.createURI(uri);
 	}
 
-	/**
-	 * Return the string value of a node. For a literal, this will be the content, for a URI node it will be the
-	 * URI itself, and for a blank node it will be the identifier of the node.
-	 *
-	 * @param value
-	 * @return
-	 */
-	@Override
-	public String stringValue(Value value) {
-	    return value.stringValue();
+	protected Literal createLiteralInternal(final ValueFactory valueFactory, String content) {
+		log.debug("creating literal with content \"{}\"",content);
+		return valueFactory.createLiteral(content);
 	}
 
-	@Override
-	public BigDecimal decimalValue(Value node) {
-	    try {
-	        return ((Literal)node).decimalValue();
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
-	                "but of type "+debugType(node));
-	    }
+	protected Literal createLiteralInternal(final ValueFactory valueFactory, String content,
+			Locale language, URI type) {
+		log.debug("creating literal with content \"{}\", language {}, datatype {}",new Object[]{content,language,type});
+		if(language == null && type == null) {
+			return valueFactory.createLiteral(content);
+		} else if(type == null) {
+			return valueFactory.createLiteral(content,language.getLanguage());
+		} else  {
+			return valueFactory.createLiteral(content, valueFactory.createURI(type.toString()));
+		}
 	}
 
-	@Override
-	public BigInteger integerValue(Value node) {
-	    try {
-	        return ((Literal)node).integerValue();
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
-	                "but of type "+debugType(node));
-	    }
+	protected Collection<Value> listObjectsInternal(RepositoryConnection connection, Resource subject, org.openrdf.model.URI property)
+			throws RepositoryException {
+		Set<Value> result = new HashSet<Value>();
+		RepositoryResult<Statement> qResult = connection.getStatements(subject, property, null, true);
+		try {
+			while(qResult.hasNext()) {
+				result.add(qResult.next().getObject());
+			}
+		} finally {
+			qResult.close();
+		}
+		return  result;
 	}
 
-	@Override
-	public Boolean booleanValue(Value node) {
-	    try {
-	        return ((Literal)node).booleanValue();
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
-	                "but of type "+debugType(node));
-	    }
+	protected Collection<Value> listSubjectsInternal(final RepositoryConnection connection, org.openrdf.model.URI property, Value object)
+			throws RepositoryException {
+		Set<Value> result = new HashSet<Value>();
+		RepositoryResult<Statement> qResult = connection.getStatements(null, property, object, true);
+		try {
+			while(qResult.hasNext()) {
+				result.add(qResult.next().getSubject());
+			}
+		} finally {
+			qResult.close();
+		}
+		return  result;
 	}
 
 	@Override
-	public Date dateTimeValue(Value node) {
-	    try {
-	        XMLGregorianCalendar cal = ((Literal)node).calendarValue();
-	        //TODO: check if we need to deal with timezone and Local here
-	        return cal.toGregorianCalendar().getTime();
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
-	                "but of type "+debugType(node));
-	    }
-	}
+	public abstract Literal createLiteral(String content);
 
 	@Override
-	public Date dateValue(Value node) {
-	    try {
-	        XMLGregorianCalendar cal = ((Literal)node).calendarValue();
-	        return new GregorianCalendar(cal.getYear(), cal.getMonth(), cal.getDay()).getTime();
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
-	                "but of type "+debugType(node));
-	    }
-	}
+	public abstract Literal createLiteral(String content, Locale language, URI type);
 
 	@Override
-	public Date timeValue(Value node) {
-	    //TODO: Unless someone knwos how to create a Date that only has the time
-	    //      from a XMLGregorianCalendar
-	    return dateTimeValue(node);
-	}
+	public abstract org.openrdf.model.URI createURI(String uri);
 
 	@Override
-	public Long longValue(Value node) {
-	    try {
-	        return ((Literal)node).longValue();
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
-	                "but of type "+debugType(node));
-	    }
-	}
+	public abstract Collection<Value> listObjects(Value subject, Value property);
 
 	@Override
-	public Double doubleValue(Value node) {
-	    try {
-	        return ((Literal)node).doubleValue();
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
-	                "but of type "+debugType(node));
-	    }
-	}
+	public abstract Collection<Value> listSubjects(Value property, Value object);
 
 	@Override
-	public Float floatValue(Value node) {
-	    try {
-	        return ((Literal)node).floatValue();
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
-	                "but of type "+debugType(node));
-	    }
+	@Deprecated
+	public boolean supportsThreading() {
+		return false;
 	}
 
 	@Override
-	public Integer intValue(Value node) {
-	    try {
-	        return ((Literal)node).intValue();
-	    } catch (ClassCastException e) {
-	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
-	                "but of type "+debugType(node));
-	    }
-	}
-
-	protected Collection<Value> listObjectsInternal(RepositoryConnection connection, Resource subject, org.openrdf.model.URI property)
-			throws RepositoryException {
-				Set<Value> result = new HashSet<Value>();
-				RepositoryResult<Statement> qResult = connection.getStatements(subject, property, null, true);
-				try {
-					while(qResult.hasNext()) {
-						result.add(qResult.next().getObject());
-					}
-				} finally {
-					qResult.close();
-				}
-				return  result;
-			}
-
-	protected Collection<Value> listSubjectsInternal(final RepositoryConnection connection, org.openrdf.model.URI property, Value object)
-			throws RepositoryException {
-				Set<Value> result = new HashSet<Value>();
-				RepositoryResult<Statement> qResult = connection.getStatements(null, property, object, true);
-				try {
-				    while(qResult.hasNext()) {
-				        result.add(qResult.next().getSubject());
-				    }
-				} finally {
-					qResult.close();
-				}
-				return  result;
-			}
-
-	protected Value createURIInternal(final ValueFactory valueFactory, String uri) {
-		return valueFactory.createURI(uri);
-	}
-
-	protected Value createLiteralInternal(final ValueFactory valueFactory, String content) {
-		log.debug("creating literal with content \"{}\"",content);
-		return valueFactory.createLiteral(content);
-	}
-
-	protected Value createLiteralInternal(final ValueFactory valueFactory, String content, Locale language, URI type) {
-		log.debug("creating literal with content \"{}\", language {}, datatype {}",new Object[]{content,language,type});
-		if(language == null && type == null) {
-	        return valueFactory.createLiteral(content);
-	    } else if(type == null) {
-	        return valueFactory.createLiteral(content,language.getLanguage());
-	    } else  {
-	        return valueFactory.createLiteral(content, valueFactory.createURI(type.toString()));
-	    }
-	}
-
-	/**
-	 * Prints the type (URI,bNode,literal) by inspecting the parsed {@link Value}
-	 * to improve error messages and other loggings. In case of literals 
-	 * also the {@link #getLiteralType(Value) literal type} is printed
-	 * @param value the value or <code>null</code> 
-	 * @return the type as string.
-	 */
-	protected String debugType(Value value) {
-	    return value == null ? "null":isURI(value)?"URI":isBlank(value)?"bNode":
-	            "literal ("+getLiteralType(value)+")";
+	@Deprecated
+	public ThreadPoolExecutor getThreadPool() {
+		return null;
 	}
 
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameConnectionBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameConnectionBackend.java b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameConnectionBackend.java
index 12ff162..b6a4f51 100644
--- a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameConnectionBackend.java
+++ b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameConnectionBackend.java
@@ -21,6 +21,7 @@ import java.net.URI;
 import java.util.Collection;
 import java.util.Locale;
 
+import org.openrdf.model.Literal;
 import org.openrdf.model.Resource;
 import org.openrdf.model.Value;
 import org.openrdf.model.ValueFactory;
@@ -38,17 +39,17 @@ public class SesameConnectionBackend extends AbstractSesameBackend {
 	}
 
 	@Override
-	public Value createLiteral(String content) {
+	public Literal createLiteral(String content) {
 		return createLiteralInternal(valueFactory, content);
 	}
 
 	@Override
-	public Value createLiteral(String content, Locale language, URI type) {
+	public Literal createLiteral(String content, Locale language, URI type) {
 		return createLiteralInternal(valueFactory, content, language, type);
 	}
 
 	@Override
-	public Value createURI(String uri) {
+	public org.openrdf.model.URI createURI(String uri) {
 		return createURIInternal(valueFactory, uri);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java
index e009b35..d055504 100644
--- a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java
+++ b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameRepositoryBackend.java
@@ -21,6 +21,7 @@ import java.net.URI;
 import java.util.Collection;
 import java.util.Locale;
 
+import org.openrdf.model.Literal;
 import org.openrdf.model.Resource;
 import org.openrdf.model.Value;
 import org.openrdf.repository.Repository;
@@ -35,7 +36,9 @@ import org.openrdf.repository.RepositoryException;
  * and calling the super constructor.
  * <p/>
  * Author: Sebastian Schaffert
+ * @deprecated Use a {@link SesameConnectionBackend} with explicit transaction handling.
  */
+@Deprecated
 public class SesameRepositoryBackend extends AbstractSesameBackend {
 
     private Repository repository;
@@ -71,7 +74,7 @@ public class SesameRepositoryBackend extends AbstractSesameBackend {
      * @return a literal node in using the model used by this backend
      */
     @Override
-    public Value createLiteral(String content) {
+    public Literal createLiteral(String content) {
     	return createLiteralInternal(repository.getValueFactory(), content);
     }
 
@@ -83,7 +86,7 @@ public class SesameRepositoryBackend extends AbstractSesameBackend {
      * @return a literal node in using the model used by this backend
      */
     @Override
-    public Value createLiteral(String content, Locale language, URI type) {
+    public Literal createLiteral(String content, Locale language, URI type) {
     	return createLiteralInternal(repository.getValueFactory(), content, language, type);
     }
 
@@ -95,7 +98,7 @@ public class SesameRepositoryBackend extends AbstractSesameBackend {
      * @return a URI node using the model used by this backend
      */
     @Override
-    public Value createURI(String uri) {
+    public org.openrdf.model.URI createURI(String uri) {
         return createURIInternal(repository.getValueFactory(), uri);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameValueBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameValueBackend.java b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameValueBackend.java
new file mode 100644
index 0000000..4afda47
--- /dev/null
+++ b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/SesameValueBackend.java
@@ -0,0 +1,257 @@
+package org.apache.marmotta.ldpath.backend.sesame;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
+import org.openrdf.model.BNode;
+import org.openrdf.model.Literal;
+import org.openrdf.model.Value;
+import org.openrdf.model.impl.LiteralImpl;
+import org.openrdf.model.impl.URIImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SesameValueBackend implements NodeBackend<Value>{
+
+	private static final Logger log = LoggerFactory.getLogger(SesameValueBackend.class);
+
+	public SesameValueBackend() {
+		super();
+	}
+
+	/**
+	 * Test whether the node passed as argument is a literal
+	 *
+	 * @param n the node to check
+	 * @return true if the node is a literal
+	 */
+	@Override
+	public boolean isLiteral(Value n) {
+	    return n instanceof Literal;
+	}
+
+	/**
+	 * Test whether the node passed as argument is a URI
+	 *
+	 * @param n the node to check
+	 * @return true if the node is a URI
+	 */
+	@Override
+	public boolean isURI(Value n) {
+	    return n instanceof org.openrdf.model.URI;
+	}
+
+	/**
+	 * Test whether the node passed as argument is a blank node
+	 *
+	 * @param n the node to check
+	 * @return true if the node is a blank node
+	 */
+	@Override
+	public boolean isBlank(Value n) {
+	    return n instanceof BNode;
+	}
+
+	/**
+	 * Return the language of the literal node passed as argument.
+	 *
+	 * @param n the literal node for which to return the language
+	 * @return a Locale representing the language of the literal, or null if the literal node has no language
+	 * @throws IllegalArgumentException in case the node is no literal
+	 */
+	@Override
+	public Locale getLiteralLanguage(Value n) {
+	    try {
+	        if(((Literal)n).getLanguage() != null) {
+	            return new Locale( ((Literal)n).getLanguage() );
+	        } else {
+	            return null;
+	        }
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+n.stringValue()+" is not a literal" +
+	                "but of type "+debugType(n));
+	    }
+	}
+
+	/**
+	 * Return the URI of the type of the literal node passed as argument.
+	 *
+	 * @param n the literal node for which to return the typer
+	 * @return a URI representing the type of the literal content, or null if the literal is untyped
+	 * @throws IllegalArgumentException in case the node is no literal
+	 */
+	@Override
+	public URI getLiteralType(Value n) {
+	    try {
+	        if(((Literal)n).getDatatype() != null) {
+	            try {
+	                return new URI(((Literal)n).getDatatype().stringValue());
+	            } catch (URISyntaxException e) {
+	                log.error("literal datatype was not a valid URI: {}",((Literal) n).getDatatype());
+	                return null;
+	            }
+	        } else {
+	            return null;
+	        }
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+n.stringValue()+" is not a literal" +
+	                "but of type "+debugType(n));
+	    }
+	}
+
+	/**
+	 * Return the string value of a node. For a literal, this will be the content, for a URI node it will be the
+	 * URI itself, and for a blank node it will be the identifier of the node.
+	 *
+	 * @param value
+	 * @return
+	 */
+	@Override
+	public String stringValue(Value value) {
+	    return value.stringValue();
+	}
+
+	@Override
+	public BigDecimal decimalValue(Value node) {
+	    try {
+	        return ((Literal)node).decimalValue();
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
+	                "but of type "+debugType(node));
+	    }
+	}
+
+	@Override
+	public BigInteger integerValue(Value node) {
+	    try {
+	        return ((Literal)node).integerValue();
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
+	                "but of type "+debugType(node));
+	    }
+	}
+
+	@Override
+	public Boolean booleanValue(Value node) {
+	    try {
+	        return ((Literal)node).booleanValue();
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
+	                "but of type "+debugType(node));
+	    }
+	}
+
+	@Override
+	public Date dateTimeValue(Value node) {
+	    try {
+	        XMLGregorianCalendar cal = ((Literal)node).calendarValue();
+	        //TODO: check if we need to deal with timezone and Local here
+	        return cal.toGregorianCalendar().getTime();
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
+	                "but of type "+debugType(node));
+	    }
+	}
+
+	@Override
+	public Date dateValue(Value node) {
+	    try {
+	        XMLGregorianCalendar cal = ((Literal)node).calendarValue();
+	        return new GregorianCalendar(cal.getYear(), cal.getMonth(), cal.getDay()).getTime();
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
+	                "but of type "+debugType(node));
+	    }
+	}
+
+	@Override
+	public Date timeValue(Value node) {
+	    //TODO: Unless someone knows how to create a Date that only has the time
+	    //      from a XMLGregorianCalendar
+	    return dateTimeValue(node);
+	}
+
+	@Override
+	public Long longValue(Value node) {
+	    try {
+	        return ((Literal)node).longValue();
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
+	                "but of type "+debugType(node));
+	    }
+	}
+
+	@Override
+	public Double doubleValue(Value node) {
+	    try {
+	        return ((Literal)node).doubleValue();
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
+	                "but of type "+debugType(node));
+	    }
+	}
+
+	@Override
+	public Float floatValue(Value node) {
+	    try {
+	        return ((Literal)node).floatValue();
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
+	                "but of type "+debugType(node));
+	    }
+	}
+
+	@Override
+	public Integer intValue(Value node) {
+	    try {
+	        return ((Literal)node).intValue();
+	    } catch (ClassCastException e) {
+	        throw new IllegalArgumentException("Value "+node.stringValue()+" is not a literal" +
+	                "but of type "+debugType(node));
+	    }
+	}
+
+
+	/**
+	 * Prints the type (URI,bNode,literal) by inspecting the parsed {@link Value}
+	 * to improve error messages and other loggings. In case of literals 
+	 * also the {@link #getLiteralType(Value) literal type} is printed
+	 * @param value the value or <code>null</code> 
+	 * @return the type as string.
+	 */
+	protected String debugType(Value value) {
+	    return value == null ? "null":isURI(value)?"URI":isBlank(value)?"bNode":
+	            "literal ("+getLiteralType(value)+")";
+	}
+
+	@Override
+	public Literal createLiteral(String content) {
+		return new LiteralImpl(content);
+	}
+
+	@Override
+	public Literal createLiteral(String content, Locale language, URI type) {
+		log.debug("creating literal with content \"{}\", language {}, datatype {}",new Object[]{content,language,type});
+		if(language == null && type == null) {
+			return createLiteral(content);
+		} else if(type == null) {
+			return new LiteralImpl(content,language.getLanguage());
+		} else  {
+			return new LiteralImpl(content, createURI(type.toString()));
+		}
+	}
+
+	@Override
+	public org.openrdf.model.URI createURI(String uri) {
+		return new URIImpl(uri);
+	}
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/ThreadingSesameBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/ThreadingSesameBackend.java b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/ThreadingSesameBackend.java
index 6d9de3f..c596d1d 100644
--- a/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/ThreadingSesameBackend.java
+++ b/libraries/ldpath/ldpath-backend-sesame/src/main/java/org/apache/marmotta/ldpath/backend/sesame/ThreadingSesameBackend.java
@@ -27,7 +27,9 @@ import java.util.concurrent.ThreadPoolExecutor;
  * A threading version of the sesame backend.
  * <p/>
  * Author: Sebastian Schaffert
+ * @deprecated threading must be handled explicitly.
  */
+@Deprecated
 public class ThreadingSesameBackend extends SesameRepositoryBackend {
 
     private ThreadPoolExecutor workers;
@@ -54,7 +56,6 @@ public class ThreadingSesameBackend extends SesameRepositoryBackend {
      *
      * @return
      */
-    @Override
     public boolean supportsThreading() {
         return true;
     }
@@ -65,7 +66,6 @@ public class ThreadingSesameBackend extends SesameRepositoryBackend {
      *
      * @return
      */
-    @Override
     public ThreadPoolExecutor getThreadPool() {
         return workers;
     }

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/pom.xml
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/pom.xml b/libraries/ldpath/ldpath-core/pom.xml
index c6c0eb2..00a8dbf 100644
--- a/libraries/ldpath/ldpath-core/pom.xml
+++ b/libraries/ldpath/ldpath-core/pom.xml
@@ -140,7 +140,6 @@
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.7</version>
                 <executions>
                     <execution>
                         <id>add-source</id>

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/backend/AbstractBackend.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/backend/AbstractBackend.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/backend/AbstractBackend.java
index a0b4b98..9a36752 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/backend/AbstractBackend.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/backend/AbstractBackend.java
@@ -23,6 +23,7 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.util.FormatUtils;
 
@@ -64,9 +65,9 @@ import org.apache.marmotta.ldpath.util.FormatUtils;
  * </pre></code>
  * It will depend on the use cases what of the two implementations performs 
  * better.
- * @see org.apache.marmotta.ldpath.api.backend.RDFBackend#stringValue(java.lang.Object)
+ * @see org.apache.marmotta.ldpath.api.backend.NodeBackend#stringValue(java.lang.Object)
  */
-public abstract class AbstractBackend<Node> implements RDFBackend<Node> {
+public abstract class AbstractBackend<Node> implements NodeBackend<Node> {
 
     /**
      * A clone of the DateFormat provided by {@link FormatUtils} to parse xsd:date 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java
index b555d01..538be06 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/fields/FieldMapping.java
@@ -26,6 +26,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.marmotta.ldpath.api.LDPathConstruct;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 import org.apache.marmotta.ldpath.api.transformers.NodeTransformer;
@@ -147,7 +148,7 @@ public class FieldMapping<T,Node> implements LDPathConstruct<Node> {
 
     
     
-    public String getPathExpression(RDFBackend<Node> backend) {
+    public String getPathExpression(NodeBackend<Node> backend) {
         StringBuilder fc = new StringBuilder();
         if (fieldConfig != null) {
             fc.append("(");

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/programs/Program.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/programs/Program.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/programs/Program.java
index be85f3e..b09d9e9 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/programs/Program.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/programs/Program.java
@@ -24,6 +24,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.marmotta.ldpath.api.LDPathConstruct;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
 import org.apache.marmotta.ldpath.model.Constants;
@@ -159,7 +160,7 @@ public class Program<Node> implements LDPathConstruct<Node> {
 
     
     
-    public String getPathExpression(RDFBackend<Node> backend) {
+    public String getPathExpression(NodeBackend<Node> backend) {
         StringBuilder sb = new StringBuilder();
         // Filter (?)
         if (filter != null) {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/FunctionSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/FunctionSelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/FunctionSelector.java
index 9b85c8a..83aeb6c 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/FunctionSelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/FunctionSelector.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.functions.NodeFunction;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
@@ -100,7 +101,7 @@ public class FunctionSelector<Node> implements NodeSelector<Node> {
      * @param backend
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> backend) {
+    public String getPathExpression(NodeBackend<Node> backend) {
         final StringBuilder format = new StringBuilder();
         format.append(String.format("fn:%s(", function.getPathExpression(backend)));
         boolean first = true;
@@ -120,7 +121,7 @@ public class FunctionSelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> nodeRDFBackend) {
+    public String getName(NodeBackend<Node> nodeRDFBackend) {
         throw new UnsupportedOperationException("cannot use functions in unnamed field definitions because the name is ambiguous");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/IntersectionSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/IntersectionSelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/IntersectionSelector.java
index 4f1956d..b50a5d6 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/IntersectionSelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/IntersectionSelector.java
@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 
@@ -63,7 +64,7 @@ public class IntersectionSelector<Node> implements NodeSelector<Node> {
 	}
 
 	@Override
-	public String getPathExpression(RDFBackend<Node> backend) {
+	public String getPathExpression(NodeBackend<Node> backend) {
 		return String.format("(%s & %s)", left.getPathExpression(backend), right.getPathExpression(backend));
 	}
 
@@ -73,7 +74,7 @@ public class IntersectionSelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> nodeRDFBackend) {
+    public String getName(NodeBackend<Node> nodeRDFBackend) {
         throw new UnsupportedOperationException("cannot use intersections in unnamed field definitions because the name is ambiguous");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PathSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PathSelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PathSelector.java
index bc1fac3..7af7ee0 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PathSelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PathSelector.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 
@@ -80,7 +81,7 @@ public class PathSelector<Node> implements NodeSelector<Node> {
 
 
     @Override
-    public String getPathExpression(RDFBackend<Node> backend) {
+    public String getPathExpression(NodeBackend<Node> backend) {
         return String.format("%s / %s", left.getPathExpression(backend), right.getPathExpression(backend));
     }
 
@@ -90,7 +91,7 @@ public class PathSelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> nodeRDFBackend) {
+    public String getName(NodeBackend<Node> nodeRDFBackend) {
         return left.getName(nodeRDFBackend);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PropertySelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PropertySelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PropertySelector.java
index 7f23812..68ed8df 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PropertySelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/PropertySelector.java
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 
@@ -71,7 +72,7 @@ public class PropertySelector<Node> implements NodeSelector<Node> {
 	}
 
 	@Override
-	public String getPathExpression(RDFBackend<Node> backend) {
+	public String getPathExpression(NodeBackend<Node> backend) {
 		if (property != null) {
 			return String.format("<%s>", backend.stringValue(property));
 		} else {
@@ -86,7 +87,7 @@ public class PropertySelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> backend) {
+    public String getName(NodeBackend<Node> backend) {
         if(property != null) {
             return backend.stringValue(property);
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/RecursivePathSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/RecursivePathSelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/RecursivePathSelector.java
index 07121c6..e97b2e5 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/RecursivePathSelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/RecursivePathSelector.java
@@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableList;
 
 import java.util.*;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 
@@ -85,7 +86,7 @@ public class RecursivePathSelector<Node> implements NodeSelector<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
     	if (maxRecursions != Integer.MAX_VALUE) {
     		if (minRecursions <= 0) {
     	    	return String.format("(%s){,%d}", delegate.getPathExpression(rdfBackend), maxRecursions);
@@ -109,7 +110,7 @@ public class RecursivePathSelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> nodeRDFBackend) {
+    public String getName(NodeBackend<Node> nodeRDFBackend) {
         return delegate.getName(nodeRDFBackend);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/ReversePropertySelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/ReversePropertySelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/ReversePropertySelector.java
index 33f6576..4411ec5 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/ReversePropertySelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/ReversePropertySelector.java
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 
@@ -69,7 +70,7 @@ public class ReversePropertySelector<Node> implements NodeSelector<Node> {
 	}
 
 	@Override
-	public String getPathExpression(RDFBackend<Node> backend) {
+	public String getPathExpression(NodeBackend<Node> backend) {
 		if (property != null) {
 			return String.format("^<%s>", backend.stringValue(property));
 		} else {
@@ -83,7 +84,7 @@ public class ReversePropertySelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> nodeRDFBackend) {
+    public String getName(NodeBackend<Node> nodeRDFBackend) {
         return nodeRDFBackend.stringValue(property);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/SelfSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/SelfSelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/SelfSelector.java
index 2151a04..299036c 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/SelfSelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/SelfSelector.java
@@ -26,6 +26,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 
@@ -60,7 +61,7 @@ public class SelfSelector<Node> implements NodeSelector<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
         return ".";
     }
 
@@ -70,7 +71,7 @@ public class SelfSelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> nodeRDFBackend) {
+    public String getName(NodeBackend<Node> nodeRDFBackend) {
         throw new UnsupportedOperationException("cannot use self selections in unnamed field definitions because the name is ambiguous");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/StringConstantSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/StringConstantSelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/StringConstantSelector.java
index 3e1d803..6470c1c 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/StringConstantSelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/StringConstantSelector.java
@@ -23,6 +23,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 
@@ -63,7 +64,7 @@ public class StringConstantSelector<Node> implements NodeSelector<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
 		return String.format("\"%s\"", constant);
 	}
 
@@ -74,7 +75,7 @@ public class StringConstantSelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> nodeRDFBackend) {
+    public String getName(NodeBackend<Node> nodeRDFBackend) {
         return constant;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/TestingSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/TestingSelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/TestingSelector.java
index 0ef7da3..a97d21a 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/TestingSelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/TestingSelector.java
@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 import org.apache.marmotta.ldpath.api.tests.NodeTest;
@@ -78,7 +79,7 @@ public class TestingSelector<Node> implements NodeSelector<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
         return String.format("%s[%s]", delegate.getPathExpression(rdfBackend), test.getPathExpression(rdfBackend));
     }
 
@@ -88,7 +89,7 @@ public class TestingSelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> nodeRDFBackend) {
+    public String getName(NodeBackend<Node> nodeRDFBackend) {
         return delegate.getName(nodeRDFBackend);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/UnionSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/UnionSelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/UnionSelector.java
index aee30e0..963c38a 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/UnionSelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/UnionSelector.java
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.backend.RDFBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 
@@ -72,7 +73,7 @@ public class UnionSelector<Node> implements NodeSelector<Node> {
      * @return
      */
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
         return String.format("(%s | %s)", left.getPathExpression(rdfBackend), right.getPathExpression(rdfBackend));
     }
 
@@ -82,7 +83,7 @@ public class UnionSelector<Node> implements NodeSelector<Node> {
      * occurrence of an atomic selector.
      */
     @Override
-    public String getName(RDFBackend<Node> nodeRDFBackend) {
+    public String getName(NodeBackend<Node> nodeRDFBackend) {
         throw new UnsupportedOperationException("cannot use unions in unnamed field definitions because the name is ambiguous");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/4dd5de63/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/WildcardSelector.java
----------------------------------------------------------------------
diff --git a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/WildcardSelector.java b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/WildcardSelector.java
index 2b34168..4c26880 100644
--- a/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/WildcardSelector.java
+++ b/libraries/ldpath/ldpath-core/src/main/java/org/apache/marmotta/ldpath/model/selectors/WildcardSelector.java
@@ -17,7 +17,7 @@
  */
 package org.apache.marmotta.ldpath.model.selectors;
 
-import org.apache.marmotta.ldpath.api.backend.RDFBackend;
+import org.apache.marmotta.ldpath.api.backend.NodeBackend;
 import org.apache.marmotta.ldpath.api.selectors.NodeSelector;
 
 /**
@@ -32,7 +32,7 @@ public class WildcardSelector<Node> extends PropertySelector<Node> implements No
 	}
 
     @Override
-    public String getPathExpression(RDFBackend<Node> rdfBackend) {
+    public String getPathExpression(NodeBackend<Node> rdfBackend) {
 		return "*";
 	}