/** * @see GraphTraversal#map(Function) */ public static <A, B> GraphTraversal<A, B> map(final Function<Traverser<A>, B> function) { return __.<A>start().map(function); }
/** * @see GraphTraversal#map(Traversal) */ public static <A, B> GraphTraversal<A, B> map(final Traversal<?, B> mapTraversal) { return __.<A>start().map(mapTraversal); }
private static GraphTraversal<Vertex, Long> getTraversalWithLambda(final GraphTraversalSource g) { assumeThat("This test is not enabled for this ScriptEngine: " + ENGINE_TO_TEST, ENGINE_TO_TEST, anyOf(is("gremlin-python"), is("gremlin-jython"), is("gremlin-groovy"))); if (ENGINE_TO_TEST.equals("gremlin-groovy")) return g.V().out("created").map(Lambda.function("{x -> x.get().values('name')}")).count(); else if (ENGINE_TO_TEST.equals("gremlin-python") || ENGINE_TO_TEST.equals("gremlin-jython")) return g.V().out("created").map(Lambda.function("x : x.get().values('name')")).count(); else throw new RuntimeException("The " + ENGINE_TO_TEST + " ScriptEngine is not supported by this test"); }
@Override public Traversal<Vertex, Vertex> get_g_V_mapXselectXaXX() { return g.V().as("a").map(select("a")); } }
@Override public Traversal<Vertex, String> get_g_V_valueMap_unfold_mapXkeyX() { return g.V().valueMap().<Map.Entry<String, List>>unfold().map(m -> m.get().getKey()); }
@Override public Traversal<Vertex, String> get_g_VX1X_mapXnameX(final Object v1Id) { return g.V(v1Id).<String>map(v -> v.get().value("name")); }
@Override public Traversal<Vertex, Integer> get_g_VX1X_outE_label_mapXlengthX(final Object v1Id) { return g.V(v1Id).outE().label().map(l -> l.get().length()); }
@Test @LoadGraphWith public void shouldNeverPropagateANullValuedTraverser() { try { assertFalse(g.V().map(t -> null).hasNext()); assertEquals(0, g.V().map(t -> null).toList().size()); g.V().map(t -> null).sideEffect(t -> fail("this should not have happened")).iterate(); } catch (VerificationException e) { // its okay if lambdas can't be serialized by the test suite } }
@Override public Traversal<Vertex, Map<Integer, Integer>> get_g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX(final Object v1Id) { return g.V(v1Id).hasLabel("person").map(v -> { final Map<Integer, Integer> map = new HashMap<>(); map.put(1, (int) v.get().value("age")); map.put(2, (int) v.get().value("age") * 2); map.put(3, (int) v.get().value("age") * 3); map.put(4, (int) v.get().value("age")); return map; }).order(Scope.local).by(Column.values, Order.desc).by(Column.keys, Order.asc); }
@Override public Traversal<Vertex, Path> get_g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path(final Object v1Id) { return g.V(v1Id).out().<String>values("name").inject("daniel").as("a").map(t -> t.get().length()).path(); }
@Override public Traversal<Vertex, String> get_g_withPath_V_asXaX_out_mapXa_nameX() { return g.withPath().V().as("a").out().<String>map(v -> v.<Vertex>path("a").value("name")); }
@Test @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES) @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES) public void g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX() { final Traversal<Vertex, Edge> traversal = get_g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX(); printTraversalForm(traversal); assertEquals("next", traversal.next().label()); assertFalse(traversal.hasNext()); assertEquals(6L, g.V().count().next().longValue()); assertEquals(6L, g.E().count().next().longValue()); assertEquals(Arrays.asList(2L, 2L, 2L, 2L, 2L, 2L), g.V().map(bothE().count()).toList()); assertEquals(Arrays.asList(1L, 1L, 1L, 1L, 1L, 1L), g.V().map(inE().count()).toList()); assertEquals(Arrays.asList(1L, 1L, 1L, 1L, 1L, 1L), g.V().map(outE().count()).toList()); }
@Override public Traversal<Vertex, List<Double>> get_g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_descX() { return g.V().map(__.bothE().<Double>values("weight").fold()).order().by(__.sum(Scope.local), Order.desc); }
@Override public Traversal<Vertex, Map<String, Object>> get_g_V_hasLabelXpersonX_asXpX_mapXbothE_label_groupCountX_asXrX_selectXp_rX() { return g.V().hasLabel("person").as("p").map(__.bothE().label().groupCount()).as("r").select("p", "r"); }
@Override public Traversal<Vertex, String> get_g_withPath_V_asXaX_out_out_mapXa_name_it_nameX() { return g.withPath().V().as("a").out().out().map(v -> v.<Vertex>path("a").<String>value("name") + v.get().<String>value("name")); }
@Override public Traversal<Vertex, Map<String, Object>> get_g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX() { return g.V().as("v").map(__.bothE().<Double>values("weight").fold()).sum(Scope.local).as("s").select("v", "s").order().by(__.select("s"), Order.desc); }
@Override public Traversal<Vertex, String> get_g_V_matchXa_hasXsong_name_sunshineX__a_mapX0followedBy_weight_meanX_b__a_0followedBy_c__c_filterXweight_whereXgteXbXXX_outV_dX_selectXdX_byXnameX() { return g.V().match( as("a").has("song", "name", "HERE COMES SUNSHINE"), as("a").map(inE("followedBy").values("weight").mean()).as("b"), as("a").inE("followedBy").as("c"), as("c").filter(values("weight").where(P.gte("b"))).outV().as("d")). <String>select("d").by("name"); }
@Benchmark public GraphTraversal.Admin<Vertex,Vertex> testTranslationLong() { return translator.translate(g.V().match( as("a").has("song", "name", "HERE COMES SUNSHINE"), as("a").map(inE("followedBy").values("weight").mean()).as("b"), as("a").inE("followedBy").as("c"), as("c").filter(values("weight").where(P.gte("b"))).outV().as("d")). <String>select("d").by("name").asAdmin().getBytecode()); }
@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())); }