You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/04/24 22:49:32 UTC

[1/8] incubator-tinkerpop git commit: g.V.has('age', gt(30)), g.V.has('age', inside(20, 30), g.V.count.is(gt(30)). #comment TINKERPOP3-626

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 594dc82d3 -> aebc644cd


g.V.has('age',gt(30)), g.V.has('age',inside(20,30), g.V.count.is(gt(30)). #comment TINKERPOP3-626


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

Branch: refs/heads/master
Commit: 5ae2fd5cbc24498f279dcd7206e68008b5c1a5c2
Parents: 1ea7692
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 24 13:40:17 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 24 13:40:17 2015 -0600

----------------------------------------------------------------------
 .../traversal/dsl/graph/GraphTraversal.java     |  50 ++++-----
 .../gremlin/process/traversal/dsl/graph/__.java |  25 +++--
 .../process/traversal/step/filter/IsStep.java   |  24 ++---
 .../optimization/RangeByIsCountStrategy.java    |   4 +-
 .../apache/tinkerpop/gremlin/structure/P.java   | 108 +++++++++++++++++++
 .../step/filter/ConjunctionStepTest.java        |   6 +-
 .../RangeByIsCountStrategyTest.java             |   3 +-
 .../ser/GryoMessageSerializerV1D0Test.java      |   2 +-
 .../JsonMessageSerializerGremlinV1d0Test.java   |   2 +-
 .../ser/JsonMessageSerializerV1d0Test.java      |   3 +-
 .../traversal/step/filter/GroovyAndTest.groovy  |  11 +-
 .../traversal/step/filter/GroovyHasTest.groovy  |  14 +--
 .../traversal/step/filter/GroovyIsTest.groovy   |  14 +--
 .../traversal/step/filter/GroovyOrTest.groovy   |  16 +--
 .../traversal/step/map/GroovyVertexTest.groovy  |   6 +-
 .../engine/GremlinExecutorPerformanceTest.java  |   4 +-
 .../GremlinGroovyScriptEngineOverGraphTest.java |   6 +-
 .../gremlin/groovy/loaders/SugarLoader.groovy   |   2 -
 .../AbstractImportCustomizerProvider.java       |   7 +-
 .../process/traversal/CoreTraversalTest.java    |   2 +-
 .../process/traversal/step/filter/AndTest.java  |  15 ++-
 .../process/traversal/step/filter/HasTest.java  |  11 +-
 .../process/traversal/step/filter/IsTest.java   |   7 +-
 .../process/traversal/step/filter/OrTest.java   |  12 +--
 .../process/traversal/step/map/VertexTest.java  |   3 +-
 .../decoration/EventStrategyProcessTest.java    |  13 ++-
 .../tinkerpop/gremlin/structure/IoTest.java     |   6 +-
 .../gremlin/structure/VertexPropertyTest.java   |   2 +-
 .../tinkergraph/structure/TinkerGraphTest.java  |  48 +++++----
 29 files changed, 265 insertions(+), 161 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 35b3874..7547faf 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.ElementValueTraversal;
@@ -117,36 +116,33 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.ElementFunctionC
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ElementValueComparator;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.NoOpBarrierStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.PathIdentityStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.TraversalComparator;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
-import org.apache.tinkerpop.gremlin.structure.Compare;
-import org.apache.tinkerpop.gremlin.structure.Contains;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Order;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.PropertyType;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.function.BiFunction;
 import java.util.function.BiPredicate;
 import java.util.function.BinaryOperator;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Predicate;
-import java.util.function.Supplier;
-import java.util.function.UnaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -471,60 +467,60 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.asAdmin().addStep(new HasTraversalStep<>(this.asAdmin(), (Traversal.Admin<E, ?>) hasNotNextTraversal, true));
     }
 
+    public default GraphTraversal<S, E> has(final String key, final P<?> predicate) {
+        return this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(key, predicate.getBiPredicate(), predicate.getValue())));
+    }
+
     public default GraphTraversal<S, E> has(final String key) {
-        return this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(key, Contains.within)));
+        return this.has(key, P.within());
     }
 
     public default GraphTraversal<S, E> has(final String key, final Object value) {
-        return this.has(key, Compare.eq, value);
+        return this.has(key, P.eq(value));
     }
 
     public default GraphTraversal<S, E> has(final T accessor, final Object value) {
         return this.has(accessor.getAccessor(), value);
     }
 
-    public default GraphTraversal<S, E> has(final String key, final BiPredicate predicate, final Object value) {
-        return this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(key, predicate, value)));
-    }
-
-    public default GraphTraversal<S, E> has(final T accessor, final BiPredicate predicate, final Object value) {
-        return this.has(accessor.getAccessor(), predicate, value);
+    public default GraphTraversal<S, E> has(final T accessor, final P<?> predicate) {
+        return this.has(accessor.getAccessor(), predicate);
     }
 
     public default GraphTraversal<S, E> has(final String label, final String key, final Object value) {
-        return this.has(label, key, Compare.eq, value);
+        return this.has(label, key, P.eq(value));
     }
 
-    public default GraphTraversal<S, E> has(final String label, final String key, final BiPredicate predicate, final Object value) {
-        return this.has(T.label, label).has(key, predicate, value);
+    public default GraphTraversal<S, E> has(final String label, final String key, final P<?> predicate) {
+        return this.has(T.label, label).has(key, predicate);
     }
 
     public default GraphTraversal<S, E> hasNot(final String key) {
-        return this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(key, Contains.without)));
+        return this.has(key, P.without());
     }
 
     public default GraphTraversal<S, E> hasLabel(final String... labels) {
-        return labels.length == 1 ? this.has(T.label, labels[0]) : this.has(T.label, Contains.within, Arrays.asList(labels));
+        return labels.length == 1 ? this.has(T.label, labels[0]) : this.has(T.label.getAccessor(), P.within(labels));
     }
 
     public default GraphTraversal<S, E> hasId(final Object... ids) {
-        return ids.length == 1 ? this.has(T.id, ids[0]) : this.has(T.id, Contains.within, Arrays.asList(ids));
+        return ids.length == 1 ? this.has(T.id, ids[0]) : this.has(T.id.getAccessor(), P.within(ids));
     }
 
     public default GraphTraversal<S, E> hasKey(final String... keys) {
-        return keys.length == 1 ? this.has(T.key, keys[0]) : this.has(T.key, Contains.within, Arrays.asList(keys));
+        return keys.length == 1 ? this.has(T.key, keys[0]) : this.has(T.key.getAccessor(), P.within(keys));
     }
 
     public default GraphTraversal<S, E> hasValue(final Object... values) {
-        return values.length == 1 ? this.has(T.value, values[0]) : this.has(T.value, Contains.within, Arrays.asList(values));
+        return values.length == 1 ? this.has(T.value, values[0]) : this.has(T.value.getAccessor(), P.within(values));
     }
 
-    public default GraphTraversal<S, E> is(final Object value) {
-        return this.is(Compare.eq, value);
+    public default GraphTraversal<S, E> is(final P<E> predicate) {
+        return this.asAdmin().addStep(new IsStep<>(this.asAdmin(), predicate));
     }
 
-    public default GraphTraversal<S, E> is(final BiPredicate predicate, final Object value) {
-        return this.asAdmin().addStep(new IsStep(this.asAdmin(), predicate, value));
+    public default GraphTraversal<S, E> is(final Object value) {
+        return this.is((P<E>)P.eq(value));
     }
 
     public default GraphTraversal<S, E> coin(final double probability) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index a6345d8..f13b313 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -20,13 +20,14 @@ package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
-import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
@@ -41,8 +42,6 @@ import java.util.function.BinaryOperator;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Predicate;
-import java.util.function.Supplier;
-import java.util.function.UnaryOperator;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -331,20 +330,20 @@ public class __ {
         return __.<A>start().has(accessor, value);
     }
 
-    public static <A> GraphTraversal<A, A> has(final String key, final BiPredicate predicate, final Object value) {
-        return __.<A>start().has(key, predicate, value);
+    public static <A> GraphTraversal<A, A> has(final String key, final P<?> predicate) {
+        return __.<A>start().has(key, predicate);
     }
 
-    public static <A> GraphTraversal<A, A> has(final T accessor, final BiPredicate predicate, final Object value) {
-        return __.<A>start().has(accessor, predicate, value);
+    public static <A> GraphTraversal<A, A> has(final T accessor, final P<?> predicate) {
+        return __.<A>start().has(accessor, predicate);
     }
 
     public static <A> GraphTraversal<A, A> has(final String label, final String key, final Object value) {
         return __.<A>start().has(label, key, value);
     }
 
-    public static <A> GraphTraversal<A, A> has(final String label, final String key, final BiPredicate predicate, final Object value) {
-        return __.<A>start().has(label, key, predicate, value);
+    public static <A> GraphTraversal<A, A> has(final String label, final String key, final P<?> predicate) {
+        return __.<A>start().has(label, key, predicate);
     }
 
     public static <A> GraphTraversal<A, A> hasNot(final String key) {
@@ -379,12 +378,12 @@ public class __ {
         return __.<A>start().where(constraint);
     }
 
-    public static <A> GraphTraversal<A, A> is(final Object value) {
-        return __.<A>start().is(value);
+    public static <A> GraphTraversal<A, A> is(final P<A> predicate) {
+        return __.<A>start().is(predicate);
     }
 
-    public static <A> GraphTraversal<A, A> is(final BiPredicate predicate, final Object value) {
-        return __.<A>start().is(predicate, value);
+    public static <A> GraphTraversal<A, A> is(final Object value) {
+        return __.<A>start().is(value);
     }
 
     public static <A> GraphTraversal<A, A> coin(final double probability) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java
index 0f33178..4f7da24 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsStep.java
@@ -20,35 +20,33 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.structure.P;
 
 import java.util.Collections;
 import java.util.Set;
-import java.util.function.BiPredicate;
 
 /**
  * @author Daniel Kuppitz (http://gremlin.guru)
  */
 public final class IsStep<S> extends FilterStep<S> {
 
-    private final Object value;
-    private final BiPredicate<S, Object> biPredicate;
+    private final P<S> predicate;
 
-    public IsStep(final Traversal.Admin traversal, final BiPredicate<S, Object> biPredicate, final Object value) {
+    public IsStep(final Traversal.Admin traversal, final P<S> predicate) {
         super(traversal);
-        this.value = value;
-        this.biPredicate = biPredicate;
+        this.predicate = predicate;
     }
 
     @Override
     protected boolean filter(final Traverser.Admin<S> traverser) {
-        return this.biPredicate.test(traverser.get(), this.value);
+        return this.predicate.test(traverser.get());
     }
 
     @Override
     public String toString() {
-        return TraversalHelper.makeStepString(this, this.biPredicate, this.value);
+        return TraversalHelper.makeStepString(this, this.predicate);
     }
 
     @Override
@@ -56,11 +54,7 @@ public final class IsStep<S> extends FilterStep<S> {
         return Collections.singleton(TraverserRequirement.OBJECT);
     }
 
-    public Object getValue() {
-        return value;
-    }
-
-    public BiPredicate<S, Object> getPredicate() {
-        return biPredicate;
+    public P<S> getPredicate() {
+        return this.predicate;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java
index 9ef6826..fd37985 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategy.java
@@ -61,8 +61,8 @@ public final class RangeByIsCountStrategy extends AbstractTraversalStrategy impl
                 final Step next = traversal.getSteps().get(i + 1);
                 if (next instanceof IsStep && !(prev instanceof RangeGlobalStep)) { // if a RangeStep was provided, assume that the user knows what he's doing
                     final IsStep isStep = (IsStep) next;
-                    final Object value = isStep.getValue();
-                    final BiPredicate predicate = isStep.getPredicate();
+                    final Object value = isStep.getPredicate().getValue();
+                    final BiPredicate predicate = isStep.getPredicate().getBiPredicate();
                     if (value instanceof Number) {
                         final long highRangeOffset = INCREASED_OFFSET_SCALAR_PREDICATES.contains(predicate) ? 1L : 0L;
                         final long highRange = ((Number) value).longValue() + highRangeOffset;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
new file mode 100644
index 0000000..43fcd5a
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
@@ -0,0 +1,108 @@
+/*
+ *
+ *  * 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.tinkerpop.gremlin.structure;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.function.BiPredicate;
+import java.util.function.Predicate;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class P<V> implements Predicate<V>, Serializable {
+
+    private final BiPredicate<V, V> biPredicate;
+    private final V value;
+
+    public P(final BiPredicate<V, V> biPredicate, final V value) {
+        this.value = value;
+        this.biPredicate = biPredicate;
+    }
+
+    public BiPredicate<V, V> getBiPredicate() {
+        return this.biPredicate;
+    }
+
+    public V getValue() {
+        return this.value;
+    }
+
+    public boolean test(final V testValue) {
+        return this.biPredicate.test(testValue, this.value);
+    }
+
+    //////////////// statics
+
+    public static <V> P<V> eq(final V value) {
+        return new P(Compare.eq, value);
+    }
+
+    public static <V> P<V> neq(final V value) {
+        return new P(Compare.neq, value);
+    }
+
+    public static <V> P<V> lt(final V value) {
+        return new P(Compare.lt, value);
+    }
+
+    public static <V> P<V> lte(final V value) {
+        return new P(Compare.lte, value);
+    }
+
+    public static <V> P<V> gt(final V value) {
+        return new P(Compare.gt, value);
+    }
+
+    public static <V> P<V> gte(final V value) {
+        return new P(Compare.gte, value);
+    }
+
+    public static <V> P<V> inside(final V first, final V second) {
+        return new P(Compare.inside, Arrays.asList(first, second));
+    }
+
+    public static <V> P<V> outside(final V first, final V second) {
+        return new P(Compare.outside, Arrays.asList(first, second));
+    }
+
+    public static <V> P<V> within(final V... values) {
+        return new P(Contains.within, values.length == 0 ? null : Arrays.asList(values));
+    }
+
+    public static <V> P<V> within(final Collection<V> value) {
+        return new P(Contains.within, value);
+    }
+
+    public static <V> P<V> without(final V... values) {
+        return new P(Contains.without, values.length == 0 ? null : Arrays.asList(values));
+    }
+
+    public static <V> P<V> without(final Collection<V> value) {
+        return new P(Contains.without, value);
+    }
+
+    public static P test(final BiPredicate biPredicate, final Object value) {
+        return new P(biPredicate, value);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ConjunctionStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ConjunctionStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ConjunctionStepTest.java
index d982e7f..ee3802c 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ConjunctionStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/ConjunctionStepTest.java
@@ -20,8 +20,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.ConjunctionStep;
 import org.apache.tinkerpop.gremlin.structure.Compare;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.junit.Test;
 
 import java.util.Iterator;
@@ -36,7 +36,7 @@ public class ConjunctionStepTest {
 
     @Test
     public void shouldGetHasContainers() {
-        final GraphTraversal.Admin<?, ?> traversal = and(has("name"), has("age", Compare.gt, 30).or(has("lang", "java"))).asAdmin();
+        final GraphTraversal.Admin<?, ?> traversal = and(has("name"), has("age", P.gt(30)).or(has("lang", "java"))).asAdmin();
         assertTrue(((ConjunctionStep) traversal.getStartStep()).isConjunctionHasTree());
         final ConjunctionStep.ConjunctionTree conjunctionTree = (((ConjunctionStep<?>) traversal.getStartStep()).getConjunctionHasTree());
         final Iterator<ConjunctionStep.ConjunctionTree.Entry> iterator = conjunctionTree.iterator();
@@ -63,7 +63,7 @@ public class ConjunctionStepTest {
 
     @Test
     public void shouldNotGetHasContainers() {
-        final GraphTraversal.Admin<?, ?> traversal = and(has("name"), has("age", Compare.gt, 30).or(has("lang", "java"), out().has("name","josh"))).asAdmin();
+        final GraphTraversal.Admin<?, ?> traversal = and(has("name"), has("age", P.gt(30)).or(has("lang", "java"), out().has("name", "josh"))).asAdmin();
         assertFalse(((ConjunctionStep) traversal.getStartStep()).isConjunctionHasTree());
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
index 8c29505..135e9da 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RangeByIsCountStrategyTest.java
@@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrat
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.Compare;
 import org.apache.tinkerpop.gremlin.structure.Contains;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.runners.Enclosed;
@@ -154,7 +155,7 @@ public class RangeByIsCountStrategyTest {
 
         public void doTest(final BiPredicate predicate, final Object value, final long expectedHighRange) {
             final AtomicInteger counter = new AtomicInteger(0);
-            final Traversal traversal = __.out().count().is(predicate, value);
+            final Traversal traversal = __.out().count().is(P.test(predicate,value));
             applyRangeByIsCountStrategy(traversal);
 
             final List<RangeGlobalStep> steps = TraversalHelper.getStepsOfClass(RangeGlobalStep.class, traversal.asAdmin());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1D0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1D0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1D0Test.java
index 20bc308..6093648 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1D0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1D0Test.java
@@ -229,7 +229,7 @@ public class GryoMessageSerializerV1D0Test {
         final TinkerGraph graph = TinkerFactory.createClassic();
         final GraphTraversalSource g = graph.traversal();
         final Map<Vertex, Integer> map = new HashMap<>();
-        map.put(g.V().has("name", Compare.eq, "marko").next(), 1000);
+        map.put(g.V().has("name", "marko").next(), 1000);
 
         final ResponseMessage response = convertBinary(map);
         assertCommon(response);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java
index adf42be..afc3db2 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerGremlinV1d0Test.java
@@ -206,7 +206,7 @@ public class JsonMessageSerializerGremlinV1d0Test {
         final TinkerGraph graph = TinkerFactory.createClassic();
         final GraphTraversalSource g = graph.traversal();
         final Map<Vertex, Integer> map = new HashMap<>();
-        map.put(g.V().has("name", Compare.eq, "marko").next(), 1000);
+        map.put(g.V().has("name", "marko").next(), 1000);
 
         final ResponseMessage response = convert(map);
         assertCommon(response);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java
index c29d892..782e2fc 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/JsonMessageSerializerV1d0Test.java
@@ -22,7 +22,6 @@ import org.apache.tinkerpop.gremlin.driver.message.RequestMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseMessage;
 import org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.structure.Compare;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -264,7 +263,7 @@ public class JsonMessageSerializerV1d0Test {
         final TinkerGraph graph = TinkerFactory.createClassic();
         final GraphTraversalSource g = graph.traversal();
         final Map<Vertex, Integer> map = new HashMap<>();
-        map.put(g.V().has("name", Compare.eq, "marko").next(), 1000);
+        map.put(g.V().has("name", "marko").next(), 1000);
 
         final String results = SERIALIZER.serializeResponseAsString(ResponseMessage.build(msg).result(map).create());
         final JSONObject json = new JSONObject(results);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
index 7f787d8..8581464 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyAndTest.groovy
@@ -27,8 +27,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex
 
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE
-import static org.apache.tinkerpop.gremlin.structure.Compare.gt
-import static org.apache.tinkerpop.gremlin.structure.Compare.gte
+import static org.apache.tinkerpop.gremlin.structure.P.*;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -40,12 +39,12 @@ public abstract class GroovyAndTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXhasXage_gt_27X__outE_count_gt_2X_name() {
-            g.V.and(has('age', gt, 27), outE().count.is(gte, 2l)).name
+            g.V.and(has('age', gt(27)), outE().count.is(gte(2l))).name
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name() {
-            g.V.and(outE(), has(T.label, 'person') & has('age', gte, 32)).name
+            g.V.and(outE(), has(T.label, 'person') & has('age', gte(32))).name
         }
     }
 
@@ -54,12 +53,12 @@ public abstract class GroovyAndTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXhasXage_gt_27X__outE_count_gt_2X_name() {
-            ComputerTestHelper.compute("g.V.and(has('age', gt, 27), outE().count.is(gte, 2l)).name", g)
+            ComputerTestHelper.compute("g.V.and(has('age',gt(27)), outE().count.is(gte(2l))).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name() {
-            ComputerTestHelper.compute("g.V.and(outE(), has(T.label, 'person') & has('age', gte, 32)).name", g)
+            ComputerTestHelper.compute("g.V.and(outE(), has(T.label, 'person') & has('age', gte(32))).name", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
index 8f45471..630b103 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyHasTest.groovy
@@ -23,7 +23,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.structure.Compare
+import static org.apache.tinkerpop.gremlin.structure.P.*;
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
@@ -72,7 +72,7 @@ public abstract class GroovyHasTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXage_gt_30X(final Object v1Id) {
-            g.V(v1Id).has('age', Compare.gt, 30)
+            g.V(v1Id).has('age', gt(30))
         }
 
         @Override
@@ -82,7 +82,7 @@ public abstract class GroovyHasTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXage_gt_30X() {
-            g.V.has('age', Compare.gt, 30)
+            g.V.has('age', gt(30))
         }
 
         @Override
@@ -112,7 +112,7 @@ public abstract class GroovyHasTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_hasXweight_inside_0_06X_inV(final Object v1Id) {
-            g.V(v1Id).outE.has('weight', Compare.inside, [0.0d, 0.6d]).inV
+            g.V(v1Id).outE.has('weight',inside(0.0d, 0.6d)).inV
         }
     }
 
@@ -155,7 +155,7 @@ public abstract class GroovyHasTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXage_gt_30X(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(${v1Id}).has('age', Compare.gt, 30)", g);
+            ComputerTestHelper.compute("g.V(${v1Id}).has('age', gt(30))", g);
         }
 
         @Override
@@ -165,7 +165,7 @@ public abstract class GroovyHasTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXage_gt_30X() {
-            ComputerTestHelper.compute("g.V.has('age', Compare.gt, 30)", g);
+            ComputerTestHelper.compute("g.V.has('age', gt(30))", g);
         }
 
         @Override
@@ -195,7 +195,7 @@ public abstract class GroovyHasTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_hasXweight_inside_0_06X_inV(final Object v1Id) {
-            ComputerTestHelper.compute("g.V(${v1Id}).outE.has('weight', Compare.inside, [0.0d, 0.6d]).inV", g);
+            ComputerTestHelper.compute("g.V(${v1Id}).outE.has('weight', inside(0.0d, 0.6d)).inV", g);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
index 6e57af9..d1b2051 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyIsTest.groovy
@@ -22,7 +22,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.structure.Compare
+import static org.apache.tinkerpop.gremlin.structure.P.*;
 import org.apache.tinkerpop.gremlin.structure.Vertex
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 /**
@@ -40,12 +40,12 @@ public abstract class GroovyIsTest {
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXlte_30X() {
-            return g.V().values('age').is(Compare.lte, 30);
+            return g.V().values('age').is(lte(30));
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXgte_29X_isXlt_34X() {
-            return g.V().values('age').is(Compare.gte, 29).is(Compare.lt, 34);
+            return g.V().values('age').is(gte(29)).is(lt(34));
         }
 
         @Override
@@ -55,7 +55,7 @@ public abstract class GroovyIsTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasXinXcreatedX_count_isXgte_2XX_valuesXnameX() {
-            return g.V().has(__.in('created').count().is(Compare.gte, 2l)).values('name');
+            return g.V().has(__.in('created').count().is(gte(2l))).values('name');
         }
     }
 
@@ -69,12 +69,12 @@ public abstract class GroovyIsTest {
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXlte_30X() {
-            ComputerTestHelper.compute("g.V().values('age').is(Compare.lte, 30)", g)
+            ComputerTestHelper.compute("g.V().values('age').is(lte(30))", g)
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXgte_29X_isXlt_34X() {
-            ComputerTestHelper.compute("g.V().values('age').is(Compare.gte, 29).is(Compare.lt, 34)", g)
+            ComputerTestHelper.compute("g.V().values('age').is(gte(29)).is(lt(34))", g)
         }
 
         @Override
@@ -84,7 +84,7 @@ public abstract class GroovyIsTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasXinXcreatedX_count_isXgte_2XX_valuesXnameX() {
-            ComputerTestHelper.compute("g.V().has(__.in('created').count().is(Compare.gte, 2l)).values('name')", g)
+            ComputerTestHelper.compute("g.V().has(__.in('created').count().is(gte(2l))).values('name')", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
index b82c3a3..1e711fe 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyOrTest.groovy
@@ -18,17 +18,17 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.filter
 
+import org.apache.tinkerpop.gremlin.process.UseEngine
 import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
-import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
-import org.apache.tinkerpop.gremlin.process.UseEngine
+import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE
-import static org.apache.tinkerpop.gremlin.structure.Compare.gt
-import static org.apache.tinkerpop.gremlin.structure.Compare.gte
+import static org.apache.tinkerpop.gremlin.structure.P.gt
+import static org.apache.tinkerpop.gremlin.structure.P.gte;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -40,12 +40,12 @@ public abstract class GroovyOrTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXhasXage_gt_27X__outE_count_gte_2X_name() {
-            g.V.or(has('age', gt, 27), outE().count.gte(2l)).name
+            g.V.or(has('age', gt(27)), outE().count.is(gte(2l))).name
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name() {
-            g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte, 35)).name
+            g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte(35))).name
         }
     }
 
@@ -54,12 +54,12 @@ public abstract class GroovyOrTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXhasXage_gt_27X__outE_count_gte_2X_name() {
-            ComputerTestHelper.compute("g.V.or(has('age', gt, 27), outE().count.gte(2l)).name", g)
+            ComputerTestHelper.compute("g.V.or(has('age', gt(27)), outE().count.is(gte(2l))).name", g)
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name() {
-            ComputerTestHelper.compute("g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte, 35)).name", g)
+            ComputerTestHelper.compute("g.V.or(outE('knows'), has(T.label, 'software') | has('age', gte(35))).name", g)
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
index bb3506c..c1a07bb 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
@@ -22,7 +22,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.structure.Compare
+import static org.apache.tinkerpop.gremlin.structure.P.*;
 import org.apache.tinkerpop.gremlin.structure.Direction
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
@@ -158,7 +158,7 @@ public abstract class GroovyVertexTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_bothE_hasXweight_lt_1X_otherV(final Object v4Id) {
-            g.V(v4Id).bothE.has('weight', Compare.lt, 1.0d).otherV
+            g.V(v4Id).bothE.has('weight', lt(1.0d)).otherV
         }
 
         @Override
@@ -292,7 +292,7 @@ public abstract class GroovyVertexTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_bothE_hasXweight_lt_1X_otherV(final Object v4Id) {
-            ComputerTestHelper.compute("g.V(${v4Id}).bothE.has('weight', Compare.lt, 1.0d).otherV", g);
+            ComputerTestHelper.compute("g.V(${v4Id}).bothE.has('weight', lt(1.0d)).otherV", g);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorPerformanceTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorPerformanceTest.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorPerformanceTest.java
index 651aaab..9155036 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorPerformanceTest.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorPerformanceTest.java
@@ -28,8 +28,8 @@ import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.structure.Compare;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Rule;
 import org.junit.Test;
@@ -111,7 +111,7 @@ public class GremlinExecutorPerformanceTest extends AbstractGremlinTest {
             sb.append((String) start.value("step"));
 
             syntaxGraph.traversal().V(start).times(targetStepCount - 1).repeat(
-                    __.local(__.outE().has("weight", Compare.gte, rand.nextDouble())
+                    __.local(__.outE().has("weight", P.gte(rand.nextDouble()))
                             .inV().order().by(this::shuffle).limit(1)).sideEffect(t -> sb.append((String) t.get().value("step")))
             ).iterate();
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineOverGraphTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineOverGraphTest.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineOverGraphTest.java
index da24479..7eb892b 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineOverGraphTest.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineOverGraphTest.java
@@ -81,7 +81,7 @@ public class GremlinGroovyScriptEngineOverGraphTest extends AbstractGremlinTest
         final ScriptEngine engineWithImports = new GremlinGroovyScriptEngine(new DefaultImportCustomizerProvider());
         engineWithImports.put("g", g);
         assertEquals(Vertex.class.getName(), engineWithImports.eval("Vertex.class.getName()"));
-        assertEquals(2l, engineWithImports.eval("g.V().has('age',Compare.gt,30).count().next()"));
+        assertEquals(2l, engineWithImports.eval("g.V().has('age',gt(30)).count().next()"));
         assertEquals(Direction.IN, engineWithImports.eval("Direction.IN"));
         assertEquals(Direction.OUT, engineWithImports.eval("Direction.OUT"));
         assertEquals(Direction.BOTH, engineWithImports.eval("Direction.BOTH"));
@@ -94,7 +94,7 @@ public class GremlinGroovyScriptEngineOverGraphTest extends AbstractGremlinTest
         final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(new DefaultImportCustomizerProvider());
         engine.put("g", g);
         assertEquals(Vertex.class.getName(), engine.eval("Vertex.class.getName()"));
-        assertEquals(2l, engine.eval("g.V().has('age',Compare.gt,30).count().next()"));
+        assertEquals(2l, engine.eval("g.V().has('age',gt(30)).count().next()"));
         assertEquals(Direction.IN, engine.eval("Direction.IN"));
         assertEquals(Direction.OUT, engine.eval("Direction.OUT"));
         assertEquals(Direction.BOTH, engine.eval("Direction.BOTH"));
@@ -110,7 +110,7 @@ public class GremlinGroovyScriptEngineOverGraphTest extends AbstractGremlinTest
         engine.put("g", g);
         assertEquals(YamlConfiguration.class.getName(), engine.eval("YamlConfiguration.class.getName()"));
         assertEquals(Vertex.class.getName(), engine.eval("Vertex.class.getName()"));
-        assertEquals(2l, engine.eval("g.V().has('age',Compare.gt,30).count().next()"));
+        assertEquals(2l, engine.eval("g.V().has('age',gt(30)).count().next()"));
         assertEquals(Direction.IN, engine.eval("Direction.IN"));
         assertEquals(Direction.OUT, engine.eval("Direction.OUT"));
         assertEquals(Direction.BOTH, engine.eval("Direction.BOTH"));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoader.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoader.groovy b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoader.groovy
index e256db1..21a2bcd 100644
--- a/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoader.groovy
+++ b/gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/SugarLoader.groovy
@@ -51,8 +51,6 @@ class SugarLoader {
         GraphTraversal.metaClass.methodMissing = { final String name, final def args ->
             if (name.toLowerCase().equals(FROM))
                 return ((GraphTraversal.Admin) args[0]).addStep(((GraphTraversal.Admin) delegate).getSteps()[0]);
-            else if (Compare.hasCompare(name))
-                return ((GraphTraversal) delegate).is(Compare.valueOf(name), *args);
             else
                 return ((GraphTraversal) delegate).values(name);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
index 19f5537..c9d2228 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/AbstractImportCustomizerProvider.java
@@ -28,6 +28,7 @@ import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.Pee
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
@@ -98,12 +99,14 @@ public abstract class AbstractImportCustomizerProvider implements ImportCustomiz
         staticImports.add(__.class.getCanonicalName() + DOT_STAR);
         staticImports.add(TraversalOptionParent.Pick.class.getCanonicalName() + DOT_STAR);
         staticImports.add(GraphTraversalSource.class.getCanonicalName() + DOT_STAR);
-        staticImports.add(Compare.class.getCanonicalName() + DOT_STAR);
-        staticImports.add(Contains.class.getCanonicalName() + DOT_STAR);
+        //staticImports.add(Compare.class.getCanonicalName() + DOT_STAR);
+        //staticImports.add(Contains.class.getCanonicalName() + DOT_STAR);
+        staticImports.add(P.class.getCanonicalName() + DOT_STAR);
         staticImports.add(Order.class.getCanonicalName() + DOT_STAR);
         staticImports.add(Operator.class.getCanonicalName() + DOT_STAR);
         staticImports.add(Scope.class.getCanonicalName() + DOT_STAR);
 
+
         // utils
         imports.add(Gremlin.class.getPackage().getName() + DOT_STAR);
         imports.add(GremlinLoader.class.getPackage().getName() + DOT_STAR);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
index c98489a..975f8ac 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
@@ -194,7 +194,7 @@ public class CoreTraversalTest extends AbstractGremlinProcessTest {
     @Test
     @LoadGraphWith(MODERN)
     public void shouldTraversalResetProperly() {
-        final Traversal<Object, Vertex> traversal = as("a").out().out().has("name", Contains.within, Arrays.asList("ripple", "lop")).as("b");
+        final Traversal<Object, Vertex> traversal = as("a").out().out().has("name", P.within("ripple", "lop")).as("b");
         if (new Random().nextBoolean()) traversal.asAdmin().reset();
         assertFalse(traversal.hasNext());
         traversal.asAdmin().addStarts(traversal.asAdmin().getTraverserGenerator().generateIterator(g.V(), traversal.asAdmin().getSteps().get(0), 1l));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndTest.java
index 7283c35..2881e42 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/AndTest.java
@@ -20,20 +20,19 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
-import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
-import org.apache.tinkerpop.gremlin.structure.Compare;
+import org.apache.tinkerpop.gremlin.structure.P;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 
 import java.util.Arrays;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
-import static org.apache.tinkerpop.gremlin.structure.Compare.gt;
-import static org.apache.tinkerpop.gremlin.structure.Compare.gte;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
 
 
 /**
@@ -68,12 +67,12 @@ public abstract class AndTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXhasXage_gt_27X__outE_count_gt_2X_name() {
-            return g.V().and(has("age", gt, 27), outE().count().is(gte, 2l)).values("name");
+            return g.V().and(has("age", P.gt(27)), outE().count().is(P.gte(2l))).values("name");
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name() {
-            return g.V().and(outE(), has(T.label, "person").and().has("age", Compare.gte, 32)).values("name");
+            return g.V().and(outE(), has(T.label, "person").and().has("age", P.gte(32))).values("name");
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
index d0733dc..3ec0001 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/HasTest.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
@@ -209,7 +210,7 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(CREW)
-    public void g_E_hasXlabelXuses_traversesX() {
+    public void g_E_hasLabelXuses_traversesX() {
         final Traversal<Edge, Edge> traversal = get_g_E_hasLabelXuses_traversesX();
         printTraversalForm(traversal);
         int counter = 0;
@@ -223,7 +224,7 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(CREW)
-    public void g_V_hasXlabelXperson_software_blahX() {
+    public void g_V_hasLabelXperson_software_blahX() {
         final Traversal<Vertex, Vertex> traversal = get_g_V_hasLabelXperson_software_blahX();
         printTraversalForm(traversal);
         int counter = 0;
@@ -322,7 +323,7 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_hasXage_gt_30X(final Object v1Id) {
-            return g.V(v1Id).has("age", Compare.gt, 30);
+            return g.V(v1Id).has("age", P.gt(30));
         }
 
         @Override
@@ -332,7 +333,7 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_V_hasXage_gt_30X() {
-            return g.V().has("age", Compare.gt, 30);
+            return g.V().has("age", P.gt(30));
         }
 
         @Override
@@ -362,7 +363,7 @@ public abstract class HasTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_outE_hasXweight_inside_0_06X_inV(final Object v1Id) {
-            return g.V(v1Id).outE().has("weight", Compare.inside, Arrays.asList(0.0d, 0.6d)).inV();
+            return g.V(v1Id).outE().has("weight", P.inside(0.0d, 0.6d)).inV();
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsTest.java
index 628902f..eb5b9ea 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/IsTest.java
@@ -24,6 +24,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.structure.Compare;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 
@@ -104,12 +105,12 @@ public abstract class IsTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXlte_30X() {
-            return g.V().<Integer>values("age").is(Compare.lte, 30);
+            return g.V().<Integer>values("age").is(P.lte(30));
         }
 
         @Override
         public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXgte_29X_isXlt_34X() {
-            return g.V().<Integer>values("age").is(Compare.gte, 29).is(Compare.lt, 34);
+            return g.V().<Integer>values("age").is(P.gte(29)).is(P.lt(34));
         }
 
         @Override
@@ -119,7 +120,7 @@ public abstract class IsTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_hasXinXcreatedX_count_isXgte_2XX_valuesXnameX() {
-            return g.V().has(in("created").count().is(Compare.gte, 2l)).values("name");
+            return g.V().has(in("created").count().is(P.gte(2l))).values("name");
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrTest.java
index d0df0a4..a342f38 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/OrTest.java
@@ -20,11 +20,11 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
-import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.UseEngine;
-import org.apache.tinkerpop.gremlin.structure.Compare;
+import org.apache.tinkerpop.gremlin.structure.P;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 
@@ -33,8 +33,6 @@ import java.util.Arrays;
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.has;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
-import static org.apache.tinkerpop.gremlin.structure.Compare.gt;
-import static org.apache.tinkerpop.gremlin.structure.Compare.gte;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -66,12 +64,12 @@ public abstract class OrTest extends AbstractGremlinProcessTest {
     public static class Traversals extends OrTest {
         @Override
         public Traversal<Vertex, String> get_g_V_orXhasXage_gt_27X__outE_count_gte_2X_name() {
-            return g.V().or(has("age", gt, 27), outE().count().is(gte, 2l)).values("name");
+            return g.V().or(has("age", P.gt(27)), outE().count().is(P.gte(2l))).values("name");
         }
 
         @Override
         public Traversal<Vertex, String> get_g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name() {
-            return g.V().or(outE("knows"), has(T.label, "software").or().has("age", Compare.gte, 35)).values("name");
+            return g.V().or(outE("knows"), has(T.label, "software").or().has("age", P.gte(35))).values("name");
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
index 098615c..1aa2bab 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
@@ -26,6 +26,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.Compare;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 
@@ -620,7 +621,7 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX4X_bothE_hasXweight_lt_1X_otherV(Object v4Id) {
-            return g.V(v4Id).bothE().has("weight", Compare.lt, 1d).otherV();
+            return g.V(v4Id).bothE().has("weight", P.lt(1d)).otherV();
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
index 12b9b15..854dcab 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/EventStrategyProcessTest.java
@@ -25,7 +25,6 @@ import org.apache.tinkerpop.gremlin.process.UseEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.MutationListener;
-import org.apache.tinkerpop.gremlin.structure.Compare;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -60,7 +59,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         final GraphTraversalSource gts = create(eventStrategy);
         gts.V().addV("any", "thing").next();
 
-        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", Compare.eq, "thing"))));
+        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", "thing"))));
         assertEquals(1, listener1.addVertexEventRecorded());
         assertEquals(1, listener2.addVertexEventRecorded());
     }
@@ -78,7 +77,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         final GraphTraversalSource gts = create(eventStrategy);
         gts.addV("any", "thing").next();
 
-        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", Compare.eq, "thing"))));
+        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", "thing"))));
         assertEquals(1, listener1.addVertexEventRecorded());
         assertEquals(1, listener2.addVertexEventRecorded());
     }
@@ -145,7 +144,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         final GraphTraversalSource gts = create(eventStrategy);
         gts.V().addV("any", "thing").property(VertexProperty.Cardinality.single, "this", "thing").next();
 
-        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("this", Compare.eq, "thing"))));
+        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("this", "thing"))));
 
         assertEquals(1, listener1.addVertexEventRecorded());
         assertEquals(1, listener2.addVertexEventRecorded());
@@ -168,7 +167,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         final Vertex vAny = gts.V().addV("any", "thing").next();
         gts.V(vAny).property(VertexProperty.Cardinality.single, "any", "thing else").next();
 
-        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", Compare.eq, "thing else"))));
+        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", "thing else"))));
 
         assertEquals(1, listener1.addVertexEventRecorded());
         assertEquals(1, listener2.addVertexEventRecorded());
@@ -192,7 +191,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         final Vertex vAny = gts.V().addV("any", "thing").next();
         gts.V(vAny).properties("any").property("is", "bad").next();
 
-        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", Compare.eq, "thing"))));
+        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", "thing"))));
 
         assertEquals(1, listener1.addVertexEventRecorded());
         assertEquals(1, listener2.addVertexEventRecorded());
@@ -351,7 +350,7 @@ public class EventStrategyProcessTest extends AbstractGremlinProcessTest {
         gts.V(vAny).properties("any").property("is", "bad").next();
         gts.V(vAny).properties("any").properties("is").drop().iterate();
 
-        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", Compare.eq, "thing"))));
+        tryCommit(graph, g -> assertEquals(1, IteratorUtils.count(gts.V().has("any", "thing"))));
 
         assertEquals(1, listener1.addVertexEventRecorded());
         assertEquals(1, listener2.addVertexEventRecorded());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
index 5a28680..429326e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
@@ -1266,7 +1266,7 @@ public class IoTest extends AbstractGremlinTest {
     public void shouldReadWriteVerticesNoEdgesToGryoManual() throws Exception {
         try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
             final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeVertices(os, g.V().has("age", Compare.gt, 30));
+            writer.writeVertices(os, g.V().has("age", P.gt(30)));
 
             final AtomicInteger called = new AtomicInteger(0);
             final GryoReader reader = graph.io(gryo).reader().create();
@@ -1297,7 +1297,7 @@ public class IoTest extends AbstractGremlinTest {
     public void shouldReadWriteVerticesNoEdgesToGryo() throws Exception {
         try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
             final GryoWriter writer = graph.io(gryo).writer().create();
-            writer.writeVertices(os, g.V().has("age", Compare.gt, 30));
+            writer.writeVertices(os, g.V().has("age", P.gt(30)));
 
             final AtomicInteger called = new AtomicInteger(0);
             final GryoReader reader = graph.io(gryo).reader().create();
@@ -1324,7 +1324,7 @@ public class IoTest extends AbstractGremlinTest {
     public void shouldReadWriteVerticesNoEdgesToGraphSONManual() throws Exception {
         try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
             final GraphSONWriter writer = graph.io(graphson).writer().create();
-            writer.writeVertices(os, g.V().has("age", Compare.gt, 30));
+            writer.writeVertices(os, g.V().has("age", P.gt(30)));
 
             final AtomicInteger called = new AtomicInteger(0);
             final GraphSONReader reader = graph.io(graphson).reader().create();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexPropertyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexPropertyTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexPropertyTest.java
index 1d70416..6f42be4 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexPropertyTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/VertexPropertyTest.java
@@ -454,7 +454,7 @@ public class VertexPropertyTest extends AbstractGremlinTest {
                 assertEquals(0, IteratorUtils.count(marko.properties("blah")));
             });
 
-            g.V().properties("name").has(T.value, (a, b) -> ((Class) b).isAssignableFrom(a.getClass()), Integer.class).forEachRemaining(Property::remove);
+            g.V().properties("name").has(T.value, P.test((a, b) -> ((Class) b).isAssignableFrom(a.getClass()), Integer.class)).forEachRemaining(Property::remove);
             tryCommit(graph, graph -> {
                 assertVertexEdgeCounts(1, 0);
                 assertEquals(2, IteratorUtils.count(marko.properties("name")));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/5ae2fd5c/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index 23ff040..36f108b 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.TestHelper;
 import org.apache.tinkerpop.gremlin.algorithm.generator.DistributionGenerator;
 import org.apache.tinkerpop.gremlin.algorithm.generator.PowerLawDistribution;
+import org.apache.tinkerpop.gremlin.structure.P;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
@@ -193,6 +194,13 @@ public class TinkerGraphTest {
         t.forEachRemaining(System.out::println);
     }
 
+    @Test
+    @Ignore
+    public void testPlay5() throws Exception {
+        GraphTraversalSource g = TinkerFactory.createModern().traversal();
+        g.V().has("age").values("name").forEachRemaining(System.out::println);
+    }
+
     /**
      * No assertions.  Just write out the graph for convenience.
      */
@@ -475,10 +483,10 @@ public class TinkerGraphTest {
         // is used because only "stephen" ages should pass through the pipeline due to the inclusion of the
         // key index lookup on "name".  If there's an age of something other than 35 in the pipeline being evaluated
         // then something is wrong.
-        assertEquals(new Long(1), g.traversal().V().has("age", (t, u) -> {
+        assertEquals(new Long(1), g.traversal().V().has("age", P.test((t, u) -> {
             assertEquals(35, t);
             return true;
-        }, 35).has("name", "stephen").count().next());
+        },35)).has("name", "stephen").count().next());
     }
 
     @Ignore
@@ -496,16 +504,16 @@ public class TinkerGraphTest {
         // is used because only "stephen" ages should pass through the pipeline due to the inclusion of the
         // key index lookup on "name".  If there's an age of something other than 35 in the pipeline being evaluated
         // then something is wrong.
-        assertEquals(new Long(2), g.traversal().V().has("age", (t, u) -> {
+        assertEquals(new Long(2), g.traversal().V().has("age", P.test((t, u) -> {
             assertEquals(35, t);
             return true;
-        }, 35).has("name", "stephen").count().next());
+        },35)).has("name", "stephen").count().next());
 
         v.remove();
-        assertEquals(new Long(1), g.traversal().V().has("age", (t, u) -> {
+        assertEquals(new Long(1), g.traversal().V().has("age", P.test((t, u) -> {
             assertEquals(35, t);
             return true;
-        }, 35).has("name", "stephen").count().next());
+        },35)).has("name", "stephen").count().next());
     }
 
     @Ignore
@@ -519,10 +527,10 @@ public class TinkerGraphTest {
         // a tricky way to evaluate if indices are actually being used is to pass a fake BiPredicate to has()
         // to get into the Pipeline and evaluate what's going through it.  in this case, we know that at index
         // is not used because "stephen" and "marko" ages both pass through the pipeline.
-        assertEquals(new Long(1), g.traversal().V().has("age", (t, u) -> {
+        assertEquals(new Long(1), g.traversal().V().has("age", P.test((t, u) -> {
             assertTrue(t.equals(35) || t.equals(29));
             return true;
-        }, 35).has("name", "stephen").count().next());
+        }, 35)).has("name", "stephen").count().next());
 
         g.createIndex("name", Vertex.class);
 
@@ -530,10 +538,10 @@ public class TinkerGraphTest {
         // is used because only "stephen" ages should pass through the pipeline due to the inclusion of the
         // key index lookup on "name".  If there's an age of something other than 35 in the pipeline being evaluated
         // then something is wrong.
-        assertEquals(new Long(1), g.traversal().V().has("age", (t, u) -> {
+        assertEquals(new Long(1), g.traversal().V().has("age", P.test((t, u) -> {
             assertEquals(35, t);
             return true;
-        }, 35).has("name", "stephen").count().next());
+        }, 35)).has("name", "stephen").count().next());
     }
 
     @Ignore
@@ -551,10 +559,10 @@ public class TinkerGraphTest {
         // is used because only oid 1 should pass through the pipeline due to the inclusion of the
         // key index lookup on "oid".  If there's an weight of something other than 0.5f in the pipeline being
         // evaluated then something is wrong.
-        assertEquals(new Long(1), g.traversal().E().has("weight", (t, u) -> {
+        assertEquals(new Long(1), g.traversal().E().has("weight", P.test((t, u) -> {
             assertEquals(0.5f, t);
             return true;
-        }, 0.5).has("oid", "1").count().next());
+        }, 0.5)).has("oid", "1").count().next());
     }
 
     @Ignore
@@ -573,16 +581,16 @@ public class TinkerGraphTest {
         // is used because only oid 1 should pass through the pipeline due to the inclusion of the
         // key index lookup on "oid".  If there's an weight of something other than 0.5f in the pipeline being
         // evaluated then something is wrong.
-        assertEquals(new Long(2), g.traversal().E().has("weight", (t, u) -> {
+        assertEquals(new Long(2), g.traversal().E().has("weight", P.test((t, u) -> {
             assertEquals(0.5f, t);
             return true;
-        }, 0.5).has("oid", "1").count().next());
+        }, 0.5)).has("oid", "1").count().next());
 
         e.remove();
-        assertEquals(new Long(1), g.traversal().E().has("weight", (t, u) -> {
+        assertEquals(new Long(1), g.traversal().E().has("weight", P.test((t, u) -> {
             assertEquals(0.5f, t);
             return true;
-        }, 0.5).has("oid", "1").count().next());
+        }, 0.5)).has("oid", "1").count().next());
     }
 
     @Ignore
@@ -597,10 +605,10 @@ public class TinkerGraphTest {
         // a tricky way to evaluate if indices are actually being used is to pass a fake BiPredicate to has()
         // to get into the Pipeline and evaluate what's going through it.  in this case, we know that at index
         // is not used because "1" and "2" weights both pass through the pipeline.
-        assertEquals(new Long(1), g.traversal().E().has("weight", (t, u) -> {
+        assertEquals(new Long(1), g.traversal().E().has("weight", P.test((t, u) -> {
             assertTrue(t.equals(0.5f) || t.equals(0.6f));
             return true;
-        }, 0.5).has("oid", "1").count().next());
+        }, 0.5)).has("oid", "1").count().next());
 
         g.createIndex("oid", Edge.class);
 
@@ -608,10 +616,10 @@ public class TinkerGraphTest {
         // is used because only oid 1 should pass through the pipeline due to the inclusion of the
         // key index lookup on "oid".  If there's an weight of something other than 0.5f in the pipeline being
         // evaluated then something is wrong.
-        assertEquals(new Long(1), g.traversal().E().has("weight", (t, u) -> {
+        assertEquals(new Long(1), g.traversal().E().has("weight", P.test((t, u) -> {
             assertEquals(0.5f, t);
             return true;
-        }, 0.5).has("oid", "1").count().next());
+        }, 0.5)).has("oid", "1").count().next());
     }
 
     @Test


[4/8] incubator-tinkerpop git commit: P now has toString(), hashCode(), and equals() implemented.

Posted by ok...@apache.org.
P now has toString(), hashCode(), and equals() implemented.


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

Branch: refs/heads/master
Commit: 4be24b6109b832c073f0c863c0d6d752d3e15f90
Parents: 1cdcf1f
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 24 14:07:41 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 24 14:07:41 2015 -0600

----------------------------------------------------------------------
 .../org/apache/tinkerpop/gremlin/structure/P.java | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4be24b61/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
index 43fcd5a..f0e162e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
@@ -48,10 +48,28 @@ public class P<V> implements Predicate<V>, Serializable {
         return this.value;
     }
 
+    @Override
     public boolean test(final V testValue) {
         return this.biPredicate.test(testValue, this.value);
     }
 
+    @Override
+    public int hashCode() {
+        return this.biPredicate.hashCode() + this.value.hashCode();
+    }
+
+    @Override
+    public boolean equals(final Object other) {
+        return other instanceof P && (
+                (P) other).getBiPredicate().equals(this.biPredicate) &&
+                ((((P) other).getValue() == null && this.getValue() == null) || ((P) other).getValue().equals(this.getValue()));
+    }
+
+    @Override
+    public String toString() {
+        return this.biPredicate.toString() + "(" + this.value + ")";
+    }
+
     //////////////// statics
 
     public static <V> P<V> eq(final V value) {


[3/8] incubator-tinkerpop git commit: Merge branch 'master' into p-predicate-model

Posted by ok...@apache.org.
Merge branch 'master' into p-predicate-model


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

Branch: refs/heads/master
Commit: 1cdcf1fdde0f93dec18c4a7fc9adc8eb68f7ea5b
Parents: d678844 bd182de
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 24 14:04:31 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 24 14:04:31 2015 -0600

----------------------------------------------------------------------
 .../gremlin/structure/io/GraphReader.java       | 19 ++--
 .../gremlin/structure/io/gryo/GryoMapper.java   |  6 +-
 .../gremlin/structure/io/gryo/GryoWriter.java   | 14 +--
 .../gremlin/structure/util/star/StarGraph.java  | 23 ++---
 .../util/star/StarGraphSerializer.java          | 17 ++--
 .../tinkerpop/gremlin/util/tools/BiMap.java     | 92 --------------------
 .../io/gryo/GryoRecordReaderWriterTest.java     |  1 -
 7 files changed, 32 insertions(+), 140 deletions(-)
----------------------------------------------------------------------



[2/8] incubator-tinkerpop git commit: Merge branch 'master' into p-predicate-model

Posted by ok...@apache.org.
Merge branch 'master' into p-predicate-model


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

Branch: refs/heads/master
Commit: d67884402b30d3c1078b5142a9f14a27eb30f919
Parents: 5ae2fd5 86b78b7
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 24 13:40:56 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 24 13:40:56 2015 -0600

----------------------------------------------------------------------
 .../gremlin/structure/io/GraphReader.java       | 29 +++++-----
 .../structure/io/graphml/GraphMLReader.java     | 15 +++---
 .../structure/io/graphson/GraphSONReader.java   | 31 ++++++-----
 .../io/graphson/LegacyGraphSONReader.java       | 14 +++--
 .../gremlin/structure/io/gryo/GryoReader.java   | 44 +++++++++------
 .../tinkerpop/gremlin/structure/IoTest.java     | 57 ++++++--------------
 .../io/graphson/GraphSONRecordReader.java       |  2 +-
 .../structure/io/gryo/GryoRecordReader.java     |  2 +-
 8 files changed, 99 insertions(+), 95 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/d6788440/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/IoTest.java
----------------------------------------------------------------------


[5/8] incubator-tinkerpop git commit: organized GraphTraversal steps with new P work.

Posted by ok...@apache.org.
organized GraphTraversal steps with new P work.


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

Branch: refs/heads/master
Commit: 83fec556549490a665de96a8444fb7a5a674d5d4
Parents: 4be24b6
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 24 14:16:17 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 24 14:16:17 2015 -0600

----------------------------------------------------------------------
 .../traversal/dsl/graph/GraphTraversal.java     | 26 ++++++++++----------
 .../gremlin/process/traversal/dsl/graph/__.java | 20 +++++++--------
 2 files changed, 23 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/83fec556/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 7547faf..b57baae 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -471,22 +471,18 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(key, predicate.getBiPredicate(), predicate.getValue())));
     }
 
-    public default GraphTraversal<S, E> has(final String key) {
-        return this.has(key, P.within());
-    }
-
     public default GraphTraversal<S, E> has(final String key, final Object value) {
         return this.has(key, P.eq(value));
     }
 
-    public default GraphTraversal<S, E> has(final T accessor, final Object value) {
-        return this.has(accessor.getAccessor(), value);
-    }
-
     public default GraphTraversal<S, E> has(final T accessor, final P<?> predicate) {
         return this.has(accessor.getAccessor(), predicate);
     }
 
+    public default GraphTraversal<S, E> has(final T accessor, final Object value) {
+        return this.has(accessor.getAccessor(), value);
+    }
+
     public default GraphTraversal<S, E> has(final String label, final String key, final Object value) {
         return this.has(label, key, P.eq(value));
     }
@@ -495,24 +491,28 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.has(T.label, label).has(key, predicate);
     }
 
+    public default GraphTraversal<S, E> has(final String key) {
+        return this.has(key, P.within());
+    }
+
     public default GraphTraversal<S, E> hasNot(final String key) {
         return this.has(key, P.without());
     }
 
     public default GraphTraversal<S, E> hasLabel(final String... labels) {
-        return labels.length == 1 ? this.has(T.label, labels[0]) : this.has(T.label.getAccessor(), P.within(labels));
+        return labels.length == 1 ? this.has(T.label, labels[0]) : this.has(T.label, P.within(labels));
     }
 
     public default GraphTraversal<S, E> hasId(final Object... ids) {
-        return ids.length == 1 ? this.has(T.id, ids[0]) : this.has(T.id.getAccessor(), P.within(ids));
+        return ids.length == 1 ? this.has(T.id, ids[0]) : this.has(T.id, P.within(ids));
     }
 
     public default GraphTraversal<S, E> hasKey(final String... keys) {
-        return keys.length == 1 ? this.has(T.key, keys[0]) : this.has(T.key.getAccessor(), P.within(keys));
+        return keys.length == 1 ? this.has(T.key, keys[0]) : this.has(T.key, P.within(keys));
     }
 
     public default GraphTraversal<S, E> hasValue(final Object... values) {
-        return values.length == 1 ? this.has(T.value, values[0]) : this.has(T.value.getAccessor(), P.within(values));
+        return values.length == 1 ? this.has(T.value, values[0]) : this.has(T.value, P.within(values));
     }
 
     public default GraphTraversal<S, E> is(final P<E> predicate) {
@@ -520,7 +520,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     public default GraphTraversal<S, E> is(final Object value) {
-        return this.is((P<E>)P.eq(value));
+        return this.is((P<E>) P.eq(value));
     }
 
     public default GraphTraversal<S, E> coin(final double probability) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/83fec556/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index f13b313..eb512df 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -318,26 +318,22 @@ public class __ {
         return __.<A>start().hasNot(hasNotNextTraversal);
     }
 
-    public static <A> GraphTraversal<A, A> has(final String key) {
-        return __.<A>start().has(key);
+    public static <A> GraphTraversal<A, A> has(final String key, final P<?> predicate) {
+        return __.<A>start().has(key, predicate);
     }
 
     public static <A> GraphTraversal<A, A> has(final String key, final Object value) {
         return __.<A>start().has(key, value);
     }
 
-    public static <A> GraphTraversal<A, A> has(final T accessor, final Object value) {
-        return __.<A>start().has(accessor, value);
-    }
-
-    public static <A> GraphTraversal<A, A> has(final String key, final P<?> predicate) {
-        return __.<A>start().has(key, predicate);
-    }
-
     public static <A> GraphTraversal<A, A> has(final T accessor, final P<?> predicate) {
         return __.<A>start().has(accessor, predicate);
     }
 
+    public static <A> GraphTraversal<A, A> has(final T accessor, final Object value) {
+        return __.<A>start().has(accessor, value);
+    }
+
     public static <A> GraphTraversal<A, A> has(final String label, final String key, final Object value) {
         return __.<A>start().has(label, key, value);
     }
@@ -346,6 +342,10 @@ public class __ {
         return __.<A>start().has(label, key, predicate);
     }
 
+    public static <A> GraphTraversal<A, A> has(final String key) {
+        return __.<A>start().has(key);
+    }
+
     public static <A> GraphTraversal<A, A> hasNot(final String key) {
         return __.<A>start().hasNot(key);
     }


[8/8] incubator-tinkerpop git commit: merged master/ and fixed GroovyTests around where(a, neq(b)).

Posted by ok...@apache.org.
merged master/ and fixed GroovyTests around where(a,neq(b)).


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

Branch: refs/heads/master
Commit: aebc644cd4cf3c0d40f76ce05cfe480dd26c97a3
Parents: bdd29e9
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 24 14:49:14 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 24 14:49:14 2015 -0600

----------------------------------------------------------------------
 .../process/traversal/step/filter/GroovyWhereTest.groovy  | 10 +++++-----
 .../process/traversal/step/map/GroovyMatchTest.groovy     |  4 ++--
 .../gremlin/process/traversal/step/filter/WhereTest.java  |  2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/aebc644c/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
index b248f40..e7a4caa 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyWhereTest.groovy
@@ -22,7 +22,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.computer.ComputerTestHelper
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.structure.Compare
+import static org.apache.tinkerpop.gremlin.structure.P.*;
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
@@ -37,12 +37,12 @@ public abstract class GroovyWhereTest {
     public static class StandardTraversals extends WhereTest {
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_eq_bX() {
-            g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', Compare.eq, 'b');
+            g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', eq('b'));
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_neq_bX() {
-            g.V.has('age').as('a').out.in.has('age').as('b').select().where('a',Compare.neq, 'b');
+            g.V.has('age').as('a').out.in.has('age').as('b').select().where('a',neq('b'));
         }
 
         @Override
@@ -60,12 +60,12 @@ public abstract class GroovyWhereTest {
     public static class ComputerTraversals extends WhereTest {
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_eq_bX() {
-            ComputerTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', Compare.eq, 'b')", g);
+            ComputerTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', eq('b'))", g);
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_neq_bX() {
-            ComputerTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', Compare.neq, 'b')", g);
+            ComputerTestHelper.compute("g.V.has('age').as('a').out.in.has('age').as('b').select().where('a', neq('b'))", g);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/aebc644c/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
index e0c9c98..aae6f26 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
@@ -22,7 +22,7 @@ import org.apache.tinkerpop.gremlin.structure.T
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine
 import org.apache.tinkerpop.gremlin.process.UseEngine
-import org.apache.tinkerpop.gremlin.structure.Compare
+import static org.apache.tinkerpop.gremlin.structure.P.*;
 import org.apache.tinkerpop.gremlin.structure.Vertex
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 /**
@@ -164,7 +164,7 @@ public abstract class GroovyMatchTest {
             g.V().match('a',
                     __.as('a').out('created').as('b'),
                     __.as('b').in('created').as('c'))
-                    .where('a', Compare.neq, 'c')
+                    .where('a', neq('c'))
                     .select('a', 'c').by('name')
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/aebc644c/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
index 0b5ffef..112626d 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
@@ -145,7 +145,7 @@ public abstract class WhereTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_neq_bX() {
-            return g.V().has("age").as("a").out().in().has("age").as("b").select().where("a", eq("b"));
+            return g.V().has("age").as("a").out().in().has("age").as("b").select().where("a", neq("b"));
         }
 
         @Override


[7/8] incubator-tinkerpop git commit: Merge branch 'master' into p-predicate-model

Posted by ok...@apache.org.
Merge branch 'master' into p-predicate-model


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

Branch: refs/heads/master
Commit: bdd29e965b8e72e7b97cfd4f8fbb3e0cfcd77b69
Parents: eb78cfd 594dc82
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 24 14:38:12 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 24 14:38:12 2015 -0600

----------------------------------------------------------------------
 data/grateful-dead-vertices.kryo                | Bin 391510 -> 335733 bytes
 data/grateful-dead-vertices.ldjson              | 422 +++++++++----------
 data/grateful-dead.kryo                         | Bin 391510 -> 332385 bytes
 data/tinkerpop-classic-vertices.kryo            | Bin 1129 -> 729 bytes
 data/tinkerpop-classic.kryo                     | Bin 1129 -> 729 bytes
 data/tinkerpop-crew-vertices.kryo               | Bin 1949 -> 1386 bytes
 data/tinkerpop-crew.kryo                        | Bin 1949 -> 1386 bytes
 data/tinkerpop-modern-vertices.kryo             | Bin 1181 -> 781 bytes
 data/tinkerpop-modern.kryo                      | Bin 1181 -> 781 bytes
 .../gremlin/structure/util/star/StarGraph.java  |   2 +-
 gremlin-server/data/sample.kryo                 | Bin 2817115 -> 2416891 bytes
 .../io/gryo/grateful-dead-vertices.kryo         | Bin 391510 -> 335733 bytes
 .../structure/io/gryo/grateful-dead.kryo        | Bin 391510 -> 332385 bytes
 .../io/gryo/tinkerpop-classic-vertices.kryo     | Bin 1129 -> 729 bytes
 .../structure/io/gryo/tinkerpop-classic.kryo    | Bin 1129 -> 729 bytes
 .../io/gryo/tinkerpop-crew-vertices.kryo        | Bin 1949 -> 1386 bytes
 .../structure/io/gryo/tinkerpop-crew.kryo       | Bin 1949 -> 1386 bytes
 .../io/gryo/tinkerpop-modern-vertices.kryo      | Bin 1181 -> 781 bytes
 .../structure/io/gryo/tinkerpop-modern.kryo     | Bin 1181 -> 781 bytes
 19 files changed, 212 insertions(+), 212 deletions(-)
----------------------------------------------------------------------



[6/8] incubator-tinkerpop git commit: where(a,neq(b))

Posted by ok...@apache.org.
where(a,neq(b))


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

Branch: refs/heads/master
Commit: eb78cfdef00dca5cbdbd9c651e1d926148f1233a
Parents: 83fec55
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Apr 24 14:37:56 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Apr 24 14:37:56 2015 -0600

----------------------------------------------------------------------
 docs/src/the-traversal.asciidoc                 | 28 ++++++++++----------
 .../traversal/dsl/graph/GraphTraversal.java     |  8 ++----
 .../gremlin/process/traversal/dsl/graph/__.java |  8 ++----
 .../traversal/step/filter/WhereStep.java        | 11 ++++----
 .../traversal/step/filter/WhereTest.java        |  6 ++---
 .../process/traversal/step/map/MatchTest.java   |  4 +--
 6 files changed, 29 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eb78cfde/docs/src/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/the-traversal.asciidoc b/docs/src/the-traversal.asciidoc
index 270d4dd..0a0d60b 100644
--- a/docs/src/the-traversal.asciidoc
+++ b/docs/src/the-traversal.asciidoc
@@ -313,7 +313,7 @@ The `choose()`-step (*branch*) routes the current traverser to a particular trav
 [gremlin-groovy,modern]
 ----
 g.V().hasLabel('person').
-      choose(values('age').is(lte, 30),
+      choose(values('age').is(lte(30)),
         __.in(),
         __.out()).values('name') <1>
 g.V().hasLabel('person').
@@ -519,7 +519,7 @@ image::has-step.png[width=670]
 It is possible to filter vertices, edges, and vertex properties based on their properties using `has()`-step (*filter*). There are numerous variations on `has()` including:
 
   * `has(key,value)`: Remove the traverser if its element does not have the provided key/value property.
-  * `has(key,bi-predicate,object)`: Remove the traverser if its element does not have a key value that satisfies the bi-predicate.
+  * `has(key,predicate)`: Remove the traverser if its element does not have a key value that satisfies the bi-predicate.
   * `hasLabel(labels...)`: Remove the traverser if its element does not have any of the labels.
   * `hasId(ids...)`: Remove the traverser if its element does not have any of the ids.
   * `hasKey(keys...)`: Remove the traverser if its property does not have any of the keys.
@@ -531,11 +531,11 @@ It is possible to filter vertices, edges, and vertex properties based on their p
 [gremlin-groovy,modern]
 ----
 g.V().hasLabel('person')
-g.V().hasLabel('person').out().has('name',within,['vadas','josh'])
+g.V().hasLabel('person').out().has('name',within('vadas','josh'))
 g.V().hasLabel('person').out().has('name',within,['vadas','josh']).
       outE().hasLabel('created')
-g.V().has('age',inside,[20,30]).values('age') <1>
-g.V().has('age',outside,[20,30]).values('age') <2>
+g.V().has('age',inside(20,30)).values('age') <1>
+g.V().has('age',outside(20,30)).values('age') <2>
 ----
 
 <1> Find all vertices whose ages are between 20 (inclusive) and 30 (exclusive).
@@ -547,7 +547,7 @@ It is also possible to filter any arbitrary object based on a anonymous traversa
 ----
 g.V().has(out('created')).values('name') <1>
 g.V().out('knows').has(out('created')).values('name') <2>
-g.V().has(out('created').count().is(gte, 2L)).values('name') <3>
+g.V().has(out('created').count().is(gte(2L))).values('name') <3>
 g.V().has(out('knows').has(out('created'))).values('name') <4>
 ----
 
@@ -591,12 +591,12 @@ It is possible to filter scalar values using `is()`-step (*filter*).
 [gremlin-groovy,modern]
 ----
 g.V().values('age').is(32)
-g.V().values('age').is(lte, 30)
-g.V().values('age').is(inside, [30, 40])
+g.V().values('age').is(lte(30))
+g.V().values('age').is(inside(30, 40))
 g.V().has(__.in('created').count().is(1l)).values('name') <1>
-g.V().has(__.in('created').count().is(gte, 2l)).values('name') <2>
+g.V().has(__.in('created').count().is(gte(2l))).values('name') <2>
 g.V().has(__.in('created').values('age').
-                           mean().is(inside, [30d, 35d])).values('name') <3>
+                           mean().is(inside(30d, 35d))).values('name') <3>
 ----
 
 <1> Find projects having exactly one contributor.
@@ -741,7 +741,7 @@ Match is typically used in conjunction with both `select()` (demonstrated previo
 g.V().match('a',
         __.as('a').out('created').as('b'),
         __.as('b').in('created').as('c')).
-          where('a', neq, 'c').select('a','c').by('name')
+          where('a', neq('c')).select('a','c').by('name')
 ----
 
 The `where()`-step can take either a `BiPredicate` (first example below) or a `Traversal` (second example below). Using `MatchWhereStrategy`, `where()`-clauses can be automatically folded into `match()` and thus, subject to `match()`-steps budget-match algorithm.
@@ -820,7 +820,7 @@ The `or()`-step ensures that at least one of the provided traversals yield a res
 ----
 g.V().or(
    __.outE('created'),
-   __.inE('created').count().is(gt,1l)).
+   __.inE('created').count().is(gt(1l))).
      values('name')
 ----
 
@@ -1181,10 +1181,10 @@ Finally, like <<match-step,`match()`>>-step, it is possible to use `where()`, as
 ----
 g.V().as('a').out('created').in('created').as('b').select().by('name') <1>
 g.V().as('a').out('created').in('created').as('b').
-      select().by('name').where('a',neq,'b') <2>
+      select().by('name').where('a',neq('b')) <2>
 g.V().as('a').out('created').in('created').as('b').
       select(). <3>
-      where('a',neq,'b').
+      where('a',neq('b')).
       where(__.as('a').out('knows').as('b')).
       select().by('name')
 ----

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eb78cfde/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index b57baae..0f7204c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -447,12 +447,8 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.asAdmin().addStep(new ExceptStep<>(this.asAdmin(), exceptCollection));
     }
 
-    public default <E2> GraphTraversal<S, Map<String, E2>> where(final String firstKey, final String secondKey, final BiPredicate predicate) {
-        return this.asAdmin().addStep(new WhereStep(this.asAdmin(), firstKey, secondKey, predicate));
-    }
-
-    public default <E2> GraphTraversal<S, Map<String, E2>> where(final String firstKey, final BiPredicate predicate, final String secondKey) {
-        return this.where(firstKey, secondKey, predicate);
+    public default <E2> GraphTraversal<S, Map<String, E2>> where(final String firstKey, final P<?> predicate) {
+        return this.asAdmin().addStep(new WhereStep<>(this.asAdmin(), firstKey, predicate));
     }
 
     public default <E2> GraphTraversal<S, Map<String, E2>> where(final Traversal constraint) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eb78cfde/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index eb512df..c869d48 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -366,12 +366,8 @@ public class __ {
         return __.<A>start().hasValue(values);
     }
 
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> where(final String firstKey, final String secondKey, final BiPredicate predicate) {
-        return __.<A>start().where(firstKey, secondKey, predicate);
-    }
-
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> where(final String firstKey, final BiPredicate predicate, final String secondKey) {
-        return __.<A>start().where(firstKey, predicate, secondKey);
+    public static <A, E2> GraphTraversal<A, Map<String, E2>> where(final String firstKey, final P<?> secondKeyPredicate) {
+        return __.<A>start().where(firstKey, secondKeyPredicate);
     }
 
     public static <A, E2> GraphTraversal<A, Map<String, E2>> where(final Traversal constraint) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eb78cfde/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
index 14c541a..8414001 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStep.java
@@ -21,10 +21,11 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.MarkerIdentityStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.MarkerIdentityStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+import org.apache.tinkerpop.gremlin.structure.P;
 
 import java.util.Collections;
 import java.util.List;
@@ -43,11 +44,11 @@ public final class WhereStep<E> extends FilterStep<Map<String, E>> implements Tr
     private Traversal.Admin constraint;
 
 
-    public WhereStep(final Traversal.Admin traversal, final String firstKey, final String secondKey, final BiPredicate<E, E> biPredicate) {
+    public WhereStep(final Traversal.Admin traversal, final String firstKey, final P<?> secondKeyPredicate) {
         super(traversal);
         this.firstKey = firstKey;
-        this.secondKey = secondKey;
-        this.biPredicate = biPredicate;
+        this.secondKey = (String) secondKeyPredicate.getValue();
+        this.biPredicate = secondKeyPredicate.getBiPredicate();
         this.constraint = null;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eb78cfde/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
index da75411..0b5ffef 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereTest.java
@@ -24,7 +24,7 @@ import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.UseEngine;
-import org.apache.tinkerpop.gremlin.structure.Compare;
+import static org.apache.tinkerpop.gremlin.structure.P.*;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 
@@ -140,12 +140,12 @@ public abstract class WhereTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_eq_bX() {
-            return g.V().has("age").as("a").out().in().has("age").as("b").select().where("a", Compare.eq, "b");
+            return g.V().has("age").as("a").out().in().has("age").as("b").select().where("a", eq("b"));
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_select_whereXa_neq_bX() {
-            return g.V().has("age").as("a").out().in().has("age").as("b").select().where("a", Compare.neq, "b");
+            return g.V().has("age").as("a").out().in().has("age").as("b").select().where("a", eq("b"));
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/eb78cfde/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
index 3be7759..4393a8e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
@@ -34,7 +34,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.match.IteratorEnu
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.match.MatchStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
-import org.apache.tinkerpop.gremlin.structure.Compare;
+import static org.apache.tinkerpop.gremlin.structure.P.*;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 
@@ -780,7 +780,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
             return g.V().match("a",
                     as("a").out("created").as("b"),
                     as("b").in("created").as("c"))
-                    .where("a", Compare.neq, "c")
+                    .where("a", neq("c"))
                     .<String>select("a", "c").by("name");
         }