Java源码示例:org.apache.tinkerpop.gremlin.structure.Column
示例1
@Test
public void shouldHaveProperHashAndEquality() {
final GraphTraversalSource g = EmptyGraph.instance().traversal();
final Traversal.Admin traversal1 = g.V().out().repeat(__.out().in()).times(2).groupCount().by(__.outE().count()).select(Column.keys).order().by(Order.desc).asAdmin();
final Traversal.Admin traversal2 = g.V().out().repeat(__.out().in()).times(2).groupCount().by(__.outE().count()).select(Column.keys).order().by(Order.desc).asAdmin();
final Traversal.Admin traversal3 = g.V().out().repeat(__.out().in()).times(2).groupCount().by(__.outE().count()).select(Column.values).order().by(Order.desc).asAdmin();
assertEquals(traversal1, traversal2);
assertNotEquals(traversal1, traversal3);
assertNotEquals(traversal2, traversal3);
//
assertEquals(traversal1.hashCode(), traversal2.hashCode());
assertNotEquals(traversal1.hashCode(), traversal3.hashCode());
assertNotEquals(traversal2.hashCode(), traversal3.hashCode());
//
assertEquals(traversal1.getBytecode(), traversal2.getBytecode());
assertNotEquals(traversal1.getBytecode(), traversal3.getBytecode());
assertNotEquals(traversal2.getBytecode(), traversal3.getBytecode());
//
assertEquals(traversal1.getBytecode().hashCode(), traversal2.getBytecode().hashCode());
assertNotEquals(traversal1.getBytecode().hashCode(), traversal3.getBytecode().hashCode());
assertNotEquals(traversal2.getBytecode().hashCode(), traversal3.getBytecode().hashCode());
}
示例2
@Test
public void g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX() {
loadModern();
final Traversal<Vertex, Map<Vertex, Long>> traversal = this.sqlgGraph.traversal().V().both().groupCount("a").out().cap("a").select(Column.keys).unfold().both().groupCount("a").cap("a");
printTraversalForm(traversal);
// [{v[1]=6, v[2]=2, v[3]=6, v[4]=6, v[5]=2, v[6]=2}]
final Map<Vertex, Long> map = traversal.next();
assertFalse(traversal.hasNext());
assertEquals(6, map.size());
assertEquals(6l, map.get(convertToVertex(this.sqlgGraph, "marko")).longValue());
assertEquals(2l, map.get(convertToVertex(this.sqlgGraph, "vadas")).longValue());
assertEquals(6l, map.get(convertToVertex(this.sqlgGraph, "lop")).longValue());
assertEquals(6l, map.get(convertToVertex(this.sqlgGraph, "josh")).longValue());
assertEquals(2l, map.get(convertToVertex(this.sqlgGraph, "ripple")).longValue());
assertEquals(6l, map.get(convertToVertex(this.sqlgGraph, "marko")).longValue());
// checkSideEffects(traversal.asAdmin().getSideEffects(), "a", HashMap.class);
}
示例3
@Test
public void g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup() {
loadModern();
final Traversal<Vertex, Collection<String>> traversal = this.sqlgGraph.traversal()
.V().as("a")
.repeat(__.both()).times(3).emit().values("name").as("b")
.group()
.by(__.select("a"))
.by(__.select("b").dedup().order().fold())
.select(Column.values).<Collection<String>>unfold().dedup();
final List<String> vertices = new ArrayList<>(traversal.next());
Assert.assertFalse(traversal.hasNext());
Assert.assertEquals(6, vertices.size());
Assert.assertEquals("josh", vertices.get(0));
Assert.assertEquals("lop", vertices.get(1));
Assert.assertEquals("marko", vertices.get(2));
Assert.assertEquals("peter", vertices.get(3));
Assert.assertEquals("ripple", vertices.get(4));
Assert.assertEquals("vadas", vertices.get(5));
}
示例4
public default void modulateBy(final Function function) throws UnsupportedOperationException {
if (function instanceof T)
this.modulateBy((T) function);
else if (function instanceof Column)
this.modulateBy(new ColumnTraversal((Column) function));
else
this.modulateBy(__.map(new FunctionTraverser<>(function)).asAdmin());
}
示例5
public default void modulateBy(final Function function, final Comparator comparator) {
if (function instanceof T)
this.modulateBy((T) function, comparator);
else if (function instanceof Column)
this.modulateBy((Column) function, comparator);
else
this.modulateBy(__.map(new FunctionTraverser<>(function)).asAdmin(), comparator);
}
示例6
@Test
public void shouldReadWriteColumn() throws Exception {
final String resourceName = "column";
assumeCompatibility(resourceName);
final Column resource = findModelEntryObject(resourceName);
final Column fromStatic = read(getCompatibility().readFromResource(resourceName), Column.class);
final Column recycled = read(write(fromStatic, Column.class), Column.class);
assertEquals(fromStatic, recycled);
assertEquals(resource, fromStatic);
assertEquals(resource, recycled);
}
示例7
@SuppressWarnings({"RedundantCast", "unchecked"})
private DefaultGraphTraversal query2(GraphTraversalSource g) {
return (DefaultGraphTraversal)g.withSack(0).V().outE("tsw").as("e").inV().emit().repeat(
__.flatMap(
__.outE("tsw").filter(__.as("edge").select(last, "e").where(P.eq("edge")).by("speed")).
group().by(__.inV()).
by(__.project("curr", "time").by().
by(__.sack(Operator.assign).by("depTime").select(last, "e").sack(Operator.minus).by("arrTime").sack()).
filter(__.select("time").is(P.gte(0))).fold()).
select(Column.values).unfold().order(local).by(__.select("time")).limit(local, 1).select("curr")
).as("e").inV().simplePath()
).times(20).map(__.union((Traversal) __.select(last, "e").by("speed"), (Traversal) __.path().by(T.id).by(__.valueMap("arrTime", "depTime"))).fold());
}
示例8
@Test
public void testGroupByByFailure() {
loadModern();
this.sqlgGraph.tx().commit();
DefaultGraphTraversal<Vertex, Collection<Vertex>> traversal = (DefaultGraphTraversal<Vertex, Collection<Vertex>>) this.sqlgGraph.traversal()
.V().as("a")
.repeat(__.both()).times(3).emit().as("b")
.group()
.by(__.select("a"))
.by(__.select("b").dedup().order().by(T.id).fold())
.select(Column.values)
.<Collection<Vertex>>unfold()
.dedup();
Assert.assertEquals(6, traversal.getSteps().size());
printTraversalForm(traversal);
Assert.assertEquals(5, traversal.getSteps().size());
final Collection<Vertex> vertices = traversal.next();
Assert.assertFalse(traversal.hasNext());
Assert.assertEquals(6, vertices.size());
Assert.assertTrue(vertices.contains(convertToVertex(this.sqlgGraph, "marko")));
Assert.assertTrue(vertices.contains(convertToVertex(this.sqlgGraph, "vadas")));
Assert.assertTrue(vertices.contains(convertToVertex(this.sqlgGraph, "josh")));
Assert.assertTrue(vertices.contains(convertToVertex(this.sqlgGraph, "peter")));
Assert.assertTrue(vertices.contains(convertToVertex(this.sqlgGraph, "lop")));
Assert.assertTrue(vertices.contains(convertToVertex(this.sqlgGraph, "ripple")));
}
示例9
@Override
protected Class getClassFromObject(final Object o) {
final Class c = o.getClass();
if (classMap.containsKey(c))
return classMap.get(c);
final Class mapped;
if (Map.class.isAssignableFrom(c)) {
if (Tree.class.isAssignableFrom(c))
mapped = Tree.class;
else
mapped = Map.class;
} else if (List.class.isAssignableFrom(c))
mapped = List.class;
else if (Set.class.isAssignableFrom(c) && !BulkSet.class.isAssignableFrom(c)) // we have special handling of BulkSet
mapped = Set.class;
else if (Vertex.class.isAssignableFrom(c))
mapped = Vertex.class;
else if (Edge.class.isAssignableFrom(c))
mapped = Edge.class;
else if (Path.class.isAssignableFrom(c))
mapped = Path.class;
else if (VertexProperty.class.isAssignableFrom(c))
mapped = VertexProperty.class;
else if (Metrics.class.isAssignableFrom(c))
mapped = Metrics.class;
else if (TraversalMetrics.class.isAssignableFrom(c))
mapped = TraversalMetrics.class;
else if (Property.class.isAssignableFrom(c))
mapped = Property.class;
else if (ByteBuffer.class.isAssignableFrom(c))
mapped = ByteBuffer.class;
else if (InetAddress.class.isAssignableFrom(c))
mapped = InetAddress.class;
else if (Traverser.class.isAssignableFrom(c))
mapped = Traverser.class;
else if (Lambda.class.isAssignableFrom(c))
mapped = Lambda.class;
else if (VertexProperty.Cardinality.class.isAssignableFrom(c))
mapped = VertexProperty.Cardinality.class;
else if (Column.class.isAssignableFrom(c))
mapped = Column.class;
else if (Direction.class.isAssignableFrom(c))
mapped = Direction.class;
else if (Operator.class.isAssignableFrom(c))
mapped = Operator.class;
else if (Order.class.isAssignableFrom(c))
mapped = Order.class;
else if (Pop.class.isAssignableFrom(c))
mapped = Pop.class;
else if (SackFunctions.Barrier.class.isAssignableFrom(c))
mapped = SackFunctions.Barrier.class;
else if (TraversalOptionParent.Pick.class.isAssignableFrom(c))
mapped = TraversalOptionParent.Pick.class;
else if (Scope.class.isAssignableFrom(c))
mapped = Scope.class;
else if (T.class.isAssignableFrom(c))
mapped = T.class;
else
mapped = c;
classMap.put(c, mapped);
return mapped;
}
示例10
@Override
protected Class getClassFromObject(final Object o) {
final Class c = o.getClass();
if (classMap.containsKey(c))
return classMap.get(c);
final Class mapped;
if (Vertex.class.isAssignableFrom(c))
mapped = Vertex.class;
else if (Edge.class.isAssignableFrom(c))
mapped = Edge.class;
else if (Path.class.isAssignableFrom(c))
mapped = Path.class;
else if (VertexProperty.class.isAssignableFrom(c))
mapped = VertexProperty.class;
else if (Metrics.class.isAssignableFrom(c))
mapped = Metrics.class;
else if (TraversalMetrics.class.isAssignableFrom(c))
mapped = TraversalMetrics.class;
else if (Property.class.isAssignableFrom(c))
mapped = Property.class;
else if (ByteBuffer.class.isAssignableFrom(c))
mapped = ByteBuffer.class;
else if (InetAddress.class.isAssignableFrom(c))
mapped = InetAddress.class;
else if (Traverser.class.isAssignableFrom(c))
mapped = Traverser.class;
else if (Lambda.class.isAssignableFrom(c))
mapped = Lambda.class;
else if (VertexProperty.Cardinality.class.isAssignableFrom(c))
mapped = VertexProperty.Cardinality.class;
else if (Column.class.isAssignableFrom(c))
mapped = Column.class;
else if (Direction.class.isAssignableFrom(c))
mapped = Direction.class;
else if (Operator.class.isAssignableFrom(c))
mapped = Operator.class;
else if (Order.class.isAssignableFrom(c))
mapped = Order.class;
else if (Pop.class.isAssignableFrom(c))
mapped = Pop.class;
else if (SackFunctions.Barrier.class.isAssignableFrom(c))
mapped = SackFunctions.Barrier.class;
else if (TraversalOptionParent.Pick.class.isAssignableFrom(c))
mapped = TraversalOptionParent.Pick.class;
else if (Scope.class.isAssignableFrom(c))
mapped = Scope.class;
else if (T.class.isAssignableFrom(c))
mapped = T.class;
else
mapped = c;
classMap.put(c, mapped);
return mapped;
}
示例11
public ColumnTraversal(final Column column) {
this.column = column;
}
示例12
public Column getColumn() {
return this.column;
}
示例13
/**
* @see GraphTraversal#select(Column)
*/
public static <A, B> GraphTraversal<A, Collection<B>> select(final Column column) {
return __.<A>start().select(column);
}
示例14
public default void modulateBy(final Column column, final Comparator comparator) {
this.modulateBy(new ColumnTraversal(column), comparator);
}
示例15
@Parameterized.Parameters(name = "{0}")
public static Iterable<Object[]> generateTestParameters() {
final Function<Traverser<Vertex>, Vertex> mapFunction = t -> t.get().vertices(Direction.OUT).next();
return Arrays.asList(new Object[][]{
{__.V().out().count(), __.V().outE().count(), Collections.singletonList(AdjacentToIncidentStrategy.instance())},
{__.V().in().count(), __.V().local(__.inE().id()).count(), Collections.singletonList(AdjacentToIncidentStrategy.instance())},
{__.V().id(), __.V().id(), Collections.emptyList()},
{__.V().local(out()), __.V().local(out()), Collections.emptyList()},
{__.V().local(in()), __.V().local(in()), Collections.emptyList()},
{__.V().local(out()).count(), __.V().local(out()).count(), Collections.emptyList()},
{__.V().local(in()).count(), __.V().local(in()).count(), Collections.emptyList()},
{__.V().out().count(), __.V().local(out().id()).count(), Collections.emptyList()},
{__.V().out().label().count(), __.V().out().label().count(), Collections.emptyList()},
{__.V().in().id(), __.V().local(in().id()), Collections.emptyList()},
{in().id(), __.local(in().id()), Collections.emptyList()}, // test inject
{__.V().out().id(), __.V().local(out().id()), Collections.emptyList()},
{__.V().both().id(), __.V().local(__.both().id()), Collections.emptyList()},
{__.V().outE().inV().id().count(), __.V().local(outE().inV().id()).count(), Collections.emptyList()},
{__.V().map(outE().inV()).count(), __.V().local(__.map(outE().inV()).id()).count(), Collections.emptyList()},
{__.V().out().map(outE().inV()).count(), __.V().out().map(outE().inV()).count(), Collections.emptyList()},
{__.V().outE().map(__.inV()).id().count(), __.V().local(__.outE().map(__.inV()).id()).count(), Collections.emptyList()},
{__.V().outE().map(__.inV()).count(), __.V().local(outE().map(__.inV()).id()).count(), Collections.emptyList()},
{__.V().outE().map(__.inV()).values("name").count(), __.V().outE().map(__.inV()).values("name").count(), Collections.emptyList()},
{__.V().outE().inV().count(), __.V().local(outE().inV().id()).count(), Collections.emptyList()},
{__.V().out().id().count(), __.V().local(out().id()).count(), Collections.emptyList()},
{__.V().in().id().count(), __.V().local(in().id()).count(), Collections.emptyList()},
{__.V().in().id().select("id-map").dedup().count(), __.V().local(in().id().select("id-map")).dedup().count(), Collections.emptyList()},
{__.V().in().id().groupCount().select(keys).unfold().dedup().count(), __.V().local(in().id()).groupCount().select(keys).unfold().dedup().count(), Collections.emptyList()},
{__.V().outE().hasLabel("knows").values("weight"), __.V().local(outE().hasLabel("knows").values("weight")), Collections.emptyList()},
{__.V().outE().values("weight").sum(), __.V().local(outE().values("weight")).sum(), Collections.emptyList()},
{__.V().inE().values("weight"), __.V().local(inE().values("weight")), Collections.emptyList()},
{__.V().inE().values("weight").sum(), __.V().local(inE().values("weight")).sum(), Collections.emptyList()},
{__.V().inE().values("weight").sum().dedup().count(), __.V().local(inE().values("weight")).sum().dedup().count(), Collections.emptyList()},
{__.V().as("a").out("knows").as("b").select("a", "b"), __.V().as("a").out("knows").as("b").select("a", "b"), Collections.emptyList()},
{__.V().out().groupCount("x").cap("x"), __.V().out().groupCount("x").cap("x"), Collections.emptyList()},
{__.V().outE().inV().groupCount().select(Column.values).unfold().dedup().count(), __.V().outE().inV().groupCount().select(Column.values).unfold().dedup().count(), Collections.emptyList()},
{__.V().outE().inV().groupCount(), __.V().outE().inV().groupCount(), Collections.emptyList()},
{__.V().outE().inV().groupCount().by("name"), __.V().outE().inV().groupCount().by("name"), Collections.emptyList()},
{__.V().inE().id().groupCount(), __.V().local(inE().id()).groupCount(), Collections.emptyList()},
{__.V().inE().values("weight").groupCount(), __.V().local(inE().values("weight")).groupCount(), Collections.emptyList()},
{__.V().outE().inV().tree(), __.V().outE().inV().tree(), Collections.emptyList()},
{__.V().in().values("name").groupCount(), __.V().in().values("name").groupCount(), Collections.emptyList()},
{__.V().outE().inV().groupCount("x"), __.V().outE().inV().groupCount("x"), Collections.emptyList()},
{__.V().in().dedup().count(), __.V().local(in().id()).dedup().count(), Collections.emptyList()},
{__.V().bothE().dedup().count(), __.V().local(bothE().id()).dedup().count(), Collections.emptyList()},
{__.V().bothE().dedup().by("name").count(), __.V().bothE().dedup().by("name").count(), Collections.emptyList()},
{__.V().map(mapFunction).inV().count(), __.V().map(mapFunction).inV().count(), Collections.emptyList()},
{__.V().groupCount().by(__.out().count()), __.V().groupCount().by(__.out().count()), Collections.emptyList()},
{__.V().identity().out().identity().count(), __.V().local(__.identity().out().identity().id()).count(), Collections.emptyList()},
{__.V().identity().out().identity().dedup().count(), __.V().local(__.identity().out().identity().id()).dedup().count(), Collections.emptyList()},
});
}
示例16
@Override
public Traversal<Vertex, Map<String, Number>> get_g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_orderXlocalX_byXvaluesX() {
return g.V().hasLabel("person").<String, Number>group().by("name").by(outE().values("weight").sum()).order(Scope.local).by(Column.values);
}
示例17
@Override
public Traversal<Vertex, Map.Entry<String, Number>> get_g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_unfold_order_byXvalues_descX() {
return g.V().hasLabel("person").group().by("name").by(outE().values("weight").sum()).<Map.Entry<String, Number>>unfold().order().by(Column.values, desc);
}
示例18
@Override
public Traversal<Vertex, Long> get_g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum() {
return g.V().union(out("knows"), out("created").in("created")).groupCount().select(Column.values).unfold().sum();
}
示例19
@Override
public Traversal<Vertex, Map<Vertex, Long>> get_g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX() {
return g.V().both().groupCount("a").out().cap("a").select(Column.keys).unfold().both().groupCount("a").cap("a");
}
示例20
@Test
@LoadGraphWith(CREW)
public void shouldFilterVertexProperties() throws Exception {
GraphTraversalSource sg = g.withStrategies(SubgraphStrategy.create(new MapConfiguration(new HashMap<String, Object>() {{
put(SubgraphStrategy.VERTEX_PROPERTIES, has("startTime", P.gt(2005)));
}})));
checkResults(Arrays.asList("purcellville", "baltimore", "oakland", "seattle", "aachen"), sg.V().properties("location").value());
checkResults(Arrays.asList("purcellville", "baltimore", "oakland", "seattle", "aachen"), sg.V().values("location"));
if (sg.getStrategies().getStrategy(InlineFilterStrategy.class).isPresent())
assertFalse(TraversalHelper.hasStepOfAssignableClassRecursively(TraversalFilterStep.class, sg.V().properties("location").value().iterate().asAdmin()));
// check to make sure edge properties are not analyzed
sg = g.withStrategies(SubgraphStrategy.build().vertexProperties(has("startTime", P.gt(2005))).create());
checkResults(Arrays.asList("purcellville", "baltimore", "oakland", "seattle", "aachen"), sg.V().as("a").properties("location").as("b").select("a").outE().properties().select("b").value().dedup());
checkResults(Arrays.asList("purcellville", "baltimore", "oakland", "seattle", "aachen"), sg.V().as("a").values("location").as("b").select("a").outE().properties().select("b").dedup());
if (sg.getStrategies().getStrategy(InlineFilterStrategy.class).isPresent())
assertFalse(TraversalHelper.hasStepOfAssignableClassRecursively(TraversalFilterStep.class, sg.V().as("a").values("location").as("b").select("a").outE().properties().select("b").dedup().iterate().asAdmin()));
//
sg = g.withStrategies(SubgraphStrategy.build().vertices(has("name", P.neq("stephen"))).vertexProperties(has("startTime", P.gt(2005))).create());
checkResults(Arrays.asList("baltimore", "oakland", "seattle", "aachen"), sg.V().properties("location").value());
checkResults(Arrays.asList("baltimore", "oakland", "seattle", "aachen"), sg.V().values("location"));
//
sg = g.withStrategies(SubgraphStrategy.build().vertices(has("name", P.not(P.within("stephen", "daniel")))).vertexProperties(has("startTime", P.gt(2005))).create());
checkResults(Arrays.asList("baltimore", "oakland", "seattle"), sg.V().properties("location").value());
checkResults(Arrays.asList("baltimore", "oakland", "seattle"), sg.V().values("location"));
//
sg = g.withStrategies(SubgraphStrategy.build().vertices(has("name", P.eq("matthias"))).vertexProperties(has("startTime", P.gte(2014))).create());
checkResults(makeMapList(1, "seattle", 1L), sg.V().groupCount().by("location"));
//
sg = g.withStrategies(SubgraphStrategy.build().vertices(has("location")).vertexProperties(hasNot("endTime")).create());
checkOrderedResults(Arrays.asList("aachen", "purcellville", "santa fe", "seattle"), sg.V().order().by("location", Order.asc).values("location"));
//
sg = g.withStrategies(SubgraphStrategy.create(new MapConfiguration(new HashMap<String, Object>() {{
put(SubgraphStrategy.VERTICES, has("location"));
put(SubgraphStrategy.VERTEX_PROPERTIES, hasNot("endTime"));
}})));
checkResults(Arrays.asList("aachen", "purcellville", "santa fe", "seattle"), sg.V().valueMap("location").select(Column.values).unfold().unfold());
checkResults(Arrays.asList("aachen", "purcellville", "santa fe", "seattle"), sg.V().propertyMap("location").select(Column.values).unfold().unfold().value());
//
sg = g.withStrategies(SubgraphStrategy.build().edges(__.<Edge>hasLabel("uses").has("skill", 5)).create());
checkResults(Arrays.asList(5, 5, 5), sg.V().outE().valueMap().select(Column.values).unfold());
checkResults(Arrays.asList(5, 5, 5), sg.V().outE().propertyMap().select(Column.values).unfold().value());
//
sg = g.withStrategies(SubgraphStrategy.build().vertexProperties(hasNot("skill")).create());
checkResults(Arrays.asList(3, 3, 3, 4, 4, 5, 5, 5), sg.V().outE("uses").values("skill"));
checkResults(Arrays.asList(3, 3, 3, 4, 4, 5, 5, 5), sg.V().as("a").properties().select("a").dedup().outE().values("skill"));
checkResults(Arrays.asList(3, 3, 3, 4, 4, 5, 5, 5), sg.V().as("a").properties().select("a").dedup().outE().properties("skill").as("b").identity().select("b").by(__.value()));
}
示例21
@Test
public void shouldHandleColumn() {
assertNonParameterizedTranslation("Column.keys", Column.keys);
}
示例22
@Test
public void shouldHandleColumn() {
assertTranslation("Column.keys", Column.keys);
}
示例23
/**
* A version of {@code select} that allows for the extraction of a {@link Column} from objects in the traversal.
*
* @param column the column to extract
* @return the traversal with an appended {@link TraversalMapStep}
* @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#select-step" target="_blank">Reference Documentation - Select Step</a>
* @since 3.1.0-incubating
*/
public default <E2> GraphTraversal<S, Collection<E2>> select(final Column column) {
this.asAdmin().getBytecode().addStep(Symbols.select, column);
return this.asAdmin().addStep(new TraversalMapStep<>(this.asAdmin(), new ColumnTraversal(column)));
}