assertCount(2, g.V().or(__.and(__.has("name", "Totoro"), __.has("age", 1)),__.has("age", 2))); assertTraversal(g.V().has("length", P.lte(100)).or(__.has("name", "Totoro"),__.has("age", P.gte(2))), hiro); assertTraversal(g.V().or(__.has("name", "Totoro"),__.has("age", P.gte(2))).has("length", P.lte(100)), hiro); assertTraversal(g.V().or(__.has("name", "Hiro"),__.has("age", 2)).order().by(ORDER_AGE_INCR), hiro); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(120)).order().by(ORDER_LENGTH_DECR)), totoro, john, hiro); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(120)).order().by(ORDER_LENGTH_INCR)), totoro, hiro, john); assertTraversal(g.V().or(__.has("name", "John"), __.has("length", P.lte(120)).order().by(ORDER_LENGTH_INCR)), john, hiro); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(120)).order().by(ORDER_AGE_DECR)), totoro, john, hiro); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(120)).order().by(ORDER_AGE_INCR)), totoro, hiro, john); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(120)).order().by(ORDER_LENGTH_DECR)).order().by(ORDER_AGE_INCR), totoro, hiro, john); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(120)).order().by(ORDER_LENGTH_INCR)).order().by(ORDER_AGE_DECR), john, hiro, totoro); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(120))).order().by(ORDER_AGE_INCR).limit(2), totoro, hiro); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(120))).order().by(ORDER_AGE_INCR).range(2, 3), john); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(130)).order().by(ORDER_LENGTH_INCR).limit(1)), totoro, hiro); assertTraversal(g.V().or(__.has("name", "Hiro"), __.has("length", P.lte(130)).order().by(ORDER_LENGTH_INCR).limit(1)), hiro); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(130)).order().by(ORDER_LENGTH_INCR).range(1, 2)), totoro, john); assertTraversal(g.V().or(__.has("name", "Totoro"), __.has("length", P.lte(130)).order().by(ORDER_LENGTH_INCR).range(1, 3)).limit(2), totoro, john);
@Override public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXlte_30X() { return g.V().<Integer>values("age").is(P.lte(30)); }
@Test public void testQueryByIntPropUsingLteWithMultiResults() { // age <= 20 HugeGraph graph = graph(); initPersonIndex(false); init5Persons(); List<Vertex> vertexes = graph.traversal().V() .hasLabel("person").has("age", P.lte(20)) .toList(); Assert.assertEquals(4, vertexes.size()); }
private static GraphTraversal<?, ?> transform(final E_LessThanOrEqual expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.lte(value)); }
@Override <V> P<V> gremlinPredicate(V value) { return P.lte(value); } }
@Override public P lte(Object value) { return P.lte(value); }
@Override public P<Object> getPredicate() { return P.lte(value); }
@Test public void testQueryWithMultiLayerConditions() { HugeGraph graph = graph(); initPersonIndex(false); init5Persons(); List<Object> vertices = graph.traversal().V().hasLabel("person").has( "age", P.not(P.lte(10).and(P.not(P.between(11, 20)))) .and(P.lt(29).or(P.eq(35)).or(P.gt(45))) ).values("name").toList(); Assert.assertEquals(4, vertices.size()); Set<String> names = ImmutableSet.of("Hebe", "James", "Tom Cat", "Lisa"); for (Object name : vertices) { Assert.assertTrue(names.contains(name)); } }
@Override public Traversal<Vertex, String> get_g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name() { return g.V().hasLabel("person").has("age", P.not(P.lte(10).and(P.not(P.between(11, 20)))).and(P.lt(29).or(P.eq(35)))).values("name"); }
@Override public P lte(Object value) { return P.lte(inlineParameter(value)); }
@Override public Traversal<Vertex, Integer> get_g_V_valuesXageX_isXlte_30X() { return g.V().<Integer>values("age").is(P.lte(30)); }
break; case "$lte": predicate = P.lte(val); break; case "$ne":
public static GraphTraversal<?, ?> transform(final E_LessThanOrEqual expression) { final Object value = expression.getArg2().getConstant().getNode().getLiteralValue(); return __.as(expression.getArg1().getVarName()).is(P.lte(value)); }
@Override public Traversal<Vertex, String> get_g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name() { return g.V().hasLabel("person").has("age", P.not(P.lte(10).and(P.not(P.between(11, 20)))).and(P.lt(29).or(P.eq(35)))).values("name"); }
return P.lt(val.stringValue()); case ExprType.LE: return P.lte(val.stringValue()); case ExprType.GE: return P.gte(val.stringValue());
@Test public void simpleLongQueryUsingGremlinWorks() { ChronoGraph g = this.getGraph(); g.getIndexManager().create().longIndex().onVertexProperty("number").build(); { // insert some data g.addVertex("name", "a", "number", 24); g.addVertex("name", "b", "number", 37); g.addVertex("name", "c", "number", 58); } this.assertCommitAssert(() -> { // query the graph this.assertNamesEqual("a", g.traversal().V().has("number", P.eq(24))); this.assertNamesEqual("a", g.traversal().V().has("number", 24)); this.assertNamesEqual("c", g.traversal().V().has("number", P.gt(37))); this.assertNamesEqual("b", "c", g.traversal().V().has("number", P.gte(37))); this.assertNamesEqual("a", "b", g.traversal().V().has("number", P.lt(58))); this.assertNamesEqual("a", "b", g.traversal().V().has("number", P.lte(37))); }); }
@Test public void simpleDoubleQueryUsingGremlinWorks() { ChronoGraph g = this.getGraph(); g.getIndexManager().create().doubleIndex().onVertexProperty("number").build(); { // insert some data g.addVertex("name", "a", "number", 3.1415); g.addVertex("name", "b", "number", 24.36); g.addVertex("name", "c", "number", 27.58); } this.assertCommitAssert(() -> { // query the graph this.assertNamesEqual("a", g.traversal().V().has("number", P.eq(3.1415))); this.assertNamesEqual("a", g.traversal().V().has("number", 3.1415)); this.assertNamesEqual("c", g.traversal().V().has("number", P.gt(24.36))); this.assertNamesEqual("b", "c", g.traversal().V().has("number", P.gte(24.36))); this.assertNamesEqual("a", "b", g.traversal().V().has("number", P.lt(27.58))); this.assertNamesEqual("a", "b", g.traversal().V().has("number", P.lte(24.36))); }); }