@Override public Traversal<Vertex, Number> get_g_VX1_2X_localXunionXcountXX(final Object v1Id, final Object v2Id) { return g.V(v1Id, v2Id).local(union((Traversal) count())); } }
@Override public Traversal<Vertex, Map<String, Long>> get_g_V_hasXlangX_group_byXlangX_byXcountX() { return g.V().has("lang").<String, Long>group().by("lang").by(count()); }
@Override public Traversal<Vertex, Map<String, Long>> get_g_withSideEffectsXa__linkedhashmapX_withSideEffectXb__arraylist__addAllX_withSideEffectXc__arrayList__addAllX_V_groupXaX_byXlabelX_byXcountX_sideEffectXb__1_2_3X_out_out_out_sideEffectXc__bob_danielX_capXaX() { return g.withSideEffect("a", new LinkedHashMapSupplier()) .withSideEffect("b", ArrayListSupplier.instance(), Operator.addAll) .withSideEffect("c", ArrayListSupplier.instance(), Operator.addAll) .V().group("a").by(T.label).by(__.count()) .sideEffect(t -> t.sideEffects("b", new LinkedList<>(Arrays.asList(1, 2, 3)))) .out().out().out() .sideEffect(t -> t.sideEffects("c", new LinkedList<>(Arrays.asList("bob", "daniel")))) .cap("a"); }
@Override public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() { return g.V().repeat(both("followedBy")).times(2).<String, Long>group().by("songType").by(count()); }
@Override public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupXaX_byXnameX_byXcountX_timesX2X_capXaX() { return g.V().repeat(out().group("a").by("name").by(count())).times(2).cap("a"); }
@Override public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX() { return g.V().repeat(both("followedBy")).times(2).<String, Long>group("a").by("songType").by(count()).cap("a"); }
@Override public Traversal<Vertex, Map<String, Map<Object, Object>>> get_g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX() { return g.V().repeat(__.union(__.out("knows").group("a").by("age"), __.out("created").group("b").by("name").by(count())).group("a").by("name")).times(2).cap("a", "b"); }
@Override public Traversal<Vertex, Map<String, Map<String, Map<String, Object>>>> getCoworkerSummary() { return g.V().hasLabel("person").filter(outE("created")).aggregate("p").as("p1").values("name").as("p1n") .select("p").unfold().where(neq("p1")).as("p2").values("name").as("p2n").select("p2") .out("created").choose(in("created").where(eq("p1")), values("name"), constant(emptyList())) .<String, Map<String, Map<String, Object>>>group().by(select("p1n")). by(group().by(select("p2n")). by(unfold().fold().project("numCoCreated", "coCreated").by(count(local)).by())); }
@Override public Traversal<Vertex, Map<String, Map<String, Map<String, Object>>>> getCoworkerSummaryOLTP() { return g.V().hasLabel("person").filter(outE("created")).as("p1") .V().hasLabel("person").where(neq("p1")).filter(outE("created")).as("p2") .map(out("created").where(in("created").as("p1")).values("name").fold()) .<String, Map<String, Map<String, Object>>>group().by(select("p1").by("name")). by(group().by(select("p2").by("name")). by(project("numCoCreated", "coCreated").by(count(local)).by())); }
@Override public Traversal<Vertex, Number> get_g_VX1_2X_localXunionXcountXX(final Object v1Id, final Object v2Id) { return g.V(v1Id, v2Id).local(union((Traversal) count())); } }
private <T, U> Page<U> page(GraphTraversal<?, ? extends T> traversal, Pager pager, Function<T, U> transform) { @SuppressWarnings("unchecked") GraphTraversal<?, Map<String, Object>> paged = applyOrdering(traversal, pager) .fold().as("results", "total").select("results", "total") .by(__.coalesce(__.range(Scope.local, pager.getStart(), pager.getEnd()), __.constant(emptyList()))) .by(__.count(Scope.local)); if (!paged.hasNext()) { return new Page<>(Collections.emptyIterator(), pager, 0); } Map<String, Object> data = paged.next(); long total = (Long) data.get("total"); Object res = data.get("results"); @SuppressWarnings("unchecked") List<T> results = res instanceof List ? (List<T>) res : Collections.singletonList((T) res); return new Page<>(results.stream().map(transform).iterator(), pager, total); }
@Override public Traversal<Vertex, Map<String, Long>> get_g_V_hasXlangX_group_byXlangX_byXcountX() { return g.V().has("lang").<String, Long>group().by("lang").by(count()); }
@Override public Traversal<Vertex, Map<String, Long>> get_g_withSideEffectsXa__linkedhashmapX_withSideEffectXb__arraylist__addAllX_withSideEffectXc__arrayList__addAllX_V_groupXaX_byXlabelX_byXcountX_sideEffectXb__1_2_3X_out_out_out_sideEffectXc__bob_danielX_capXaX() { return g.withSideEffect("a", new LinkedHashMapSupplier()) .withSideEffect("b", ArrayListSupplier.instance(), Operator.addAll) .withSideEffect("c", ArrayListSupplier.instance(), Operator.addAll) .V().group("a").by(T.label).by(__.count()) .sideEffect(t -> t.sideEffects("b", new LinkedList<>(Arrays.asList(1, 2, 3)))) .out().out().out() .sideEffect(t -> t.sideEffects("c", new LinkedList<>(Arrays.asList("bob", "daniel")))) .cap("a"); }
@Override public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX() { return g.V().repeat(both("followedBy")).times(2).<String, Long>group().by("songType").by(count()); }
@Override public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXout_groupXaX_byXnameX_byXcountX_timesX2X_capXaX() { return g.V().repeat(out().group("a").by("name").by(count())).times(2).cap("a"); }
@Override public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX() { return g.V().repeat(both("followedBy")).times(2).<String, Long>group("a").by("songType").by(count()).cap("a"); }
@Override public Traversal<Vertex, List<Object>> getAllShortestPaths() { // TODO: remove .withoutStrategies(PathRetractionStrategy.class) return g.withoutStrategies(ComputerVerificationStrategy.class, PathRetractionStrategy.class). V().as("v").both().as("v"). project("src", "tgt", "p"). by(select(first, "v")). by(select(last, "v")). by(select(all, "v")).as("triple"). group("x"). by(select("src", "tgt")). by(select("p").fold()).select("tgt").barrier(). repeat(both().as("v"). project("src", "tgt", "p"). by(select(first, "v")). by(select(last, "v")). by(select(all, "v")).as("t"). filter(select(all, "p").count(local).as("l"). select(last, "t").select(all, "p").dedup(local).count(local).where(eq("l"))). select(last, "t"). not(select(all, "p").as("p").count(local).as("l"). select(all, "x").unfold().filter(select(keys).where(eq("t")).by(select("src", "tgt"))). filter(select(values).unfold().or(count(local).where(lt("l")), where(eq("p"))))). barrier(). group("x"). by(select("src", "tgt")). by(select(all, "p").fold()).select("tgt").barrier()). cap("x").select(values).unfold().unfold().map(unfold().id().fold()); }
@Override public Traversal<Vertex, Map<String, Map<Object, Object>>> get_g_V_repeatXunionXoutXknowsX_groupXaX_byXageX__outXcreatedX_groupXbX_byXnameX_byXcountXX_groupXaX_byXnameXX_timesX2X_capXa_bX() { return g.V().repeat(__.union(__.out("knows").group("a").by("age"), __.out("created").group("b").by("name").by(count())).group("a").by("name")).times(2).cap("a", "b"); }
@Override public Traversal<Vertex, Map<String, Map<String, Map<String, Object>>>> getCoworkerSummary() { return g.V().hasLabel("person").filter(outE("created")).aggregate("p").as("p1").values("name").as("p1n") .select("p").unfold().where(neq("p1")).as("p2").values("name").as("p2n").select("p2") .out("created").choose(in("created").where(eq("p1")), values("name"), constant(emptyList())) .<String, Map<String, Map<String, Object>>>group().by(select("p1n")). by(group().by(select("p2n")). by(unfold().fold().project("numCoCreated", "coCreated").by(count(local)).by())); }
@Override public Traversal<Vertex, Map<String, Map<String, Map<String, Object>>>> getCoworkerSummaryOLTP() { return g.V().hasLabel("person").filter(outE("created")).as("p1") .V().hasLabel("person").where(neq("p1")).filter(outE("created")).as("p2") .map(out("created").where(in("created").as("p1")).values("name").fold()) .<String, Map<String, Map<String, Object>>>group().by(select("p1").by("name")). by(group().by(select("p2").by("name")). by(project("numCoCreated", "coCreated").by(count(local)).by())); }