diff --git a/spring-data-graph-parent/pom.xml b/spring-data-graph-parent/pom.xml
index d36db2269..bfce9fcc2 100644
--- a/spring-data-graph-parent/pom.xml
+++ b/spring-data-graph-parent/pom.xml
@@ -18,6 +18,8 @@
1.1.0.BUILD-SNAPSHOT
1.4
1.6.12.M1
+ 0.8
+ 1.1
@@ -184,6 +186,21 @@
runtime
+
+
+ com.tinkerpop.blueprints
+ blueprints-neo4j-graph
+ ${blueprints.version}
+ optional
+
+
+
+ com.tinkerpop
+ gremlin
+ ${gremlin.version}
+ optional
+
+
javax.annotation
jsr250-api
diff --git a/spring-data-neo4j/pom.xml b/spring-data-neo4j/pom.xml
index b3a4a18ab..e60c9c0ca 100644
--- a/spring-data-neo4j/pom.xml
+++ b/spring-data-neo4j/pom.xml
@@ -129,9 +129,15 @@
org.neo4j
server-api
- provided
+ optional
+
+ com.tinkerpop.blueprints
+ blueprints-neo4j-graph
+ optional
+
+
commons-configuration
commons-configuration
diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/query/GremlinQueryEngine.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/query/GremlinQueryEngine.java
new file mode 100644
index 000000000..d6d22b484
--- /dev/null
+++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/support/query/GremlinQueryEngine.java
@@ -0,0 +1,171 @@
+/**
+ * Copyright 2011 the original author or authors.
+ *
+ * Licensed 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.springframework.data.neo4j.support.query;
+
+import com.tinkerpop.blueprints.pgm.Edge;
+import com.tinkerpop.blueprints.pgm.Graph;
+import com.tinkerpop.blueprints.pgm.Vertex;
+import com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jEdge;
+import com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jGraph;
+import com.tinkerpop.blueprints.pgm.impls.neo4j.Neo4jVertex;
+import com.tinkerpop.gremlin.pipes.util.Table;
+
+import org.neo4j.cypher.commands.Query;
+import org.neo4j.cypher.javacompat.CypherParser;
+import org.neo4j.cypher.javacompat.ExecutionResult;
+import org.neo4j.graphdb.GraphDatabaseService;
+import org.neo4j.server.rest.repr.ListRepresentation;
+import org.neo4j.server.rest.repr.Representation;
+import org.neo4j.server.rest.repr.RepresentationType;
+import org.neo4j.server.rest.repr.ValueRepresentation;
+import org.springframework.dao.InvalidDataAccessResourceUsageException;
+import org.springframework.data.neo4j.conversion.DefaultConverter;
+import org.springframework.data.neo4j.conversion.QueryResult;
+import org.springframework.data.neo4j.conversion.QueryResultBuilder;
+import org.springframework.data.neo4j.conversion.ResultConverter;
+import sun.security.provider.certpath.Vertex;
+
+import javax.script.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class GremlinQueryEngine implements QueryEngine {
+
+ private final String g = "g";
+ private static final ScriptEngine engine = new ScriptEngineManager().getEngineByName("gremlin");
+
+
+ private ResultConverter resultConverter;
+ private final DefaultQueryOperations queryOperations;
+ private final GraphDatabaseService graphDatabaseService;
+
+ public GremlinQueryEngine(GraphDatabaseService graphDatabaseService) {
+ this(graphDatabaseService, new DefaultConverter());
+ }
+
+
+ public GremlinQueryEngine(GraphDatabaseService graphDatabaseService, ResultConverter resultConverter) {
+ this.graphDatabaseService = graphDatabaseService;
+ this.resultConverter = resultConverter != null ? resultConverter : new DefaultConverter();
+ this.queryOperations = new DefaultQueryOperations(this);
+ }
+
+
+ @Override
+ public QueryResult