@Test @LoadGraphWith(LoadGraphWith.GraphData.MODERN) public void shouldSerializePath() throws Exception { final ObjectMapper mapper = graph.io(GraphSONIo.build(GraphSONVersion.V1_0)).mapper().version(GraphSONVersion.V1_0).create().createMapper(); final Path p = g.V(convertToVertexId("marko")).as("a").outE().as("b").inV().as("c").path() .filter(t -> ((Vertex) t.get().objects().get(2)).value("name").equals("lop")).next(); final String json = mapper.writeValueAsString(p); final Map<String, Object> m = mapper.readValue(json, mapTypeReference); assertEquals(2, m.size()); final List<List<String>> labels = (List<List<String>>) m.get(GraphSONTokens.LABELS); assertEquals(3, labels.size()); assertEquals("a", labels.get(0).get(0)); assertEquals(1, labels.get(0).size()); assertEquals("b", labels.get(1).get(0)); assertEquals(1, labels.get(1).size()); assertEquals("c", labels.get(2).get(0)); assertEquals(1, labels.get(2).size()); final List<Object> objects = (List<Object>) m.get(GraphSONTokens.OBJECTS); assertEquals(3, objects.size()); assertEquals("marko", ((List<Map>) ((Map) ((Map) objects.get(0)).get(GraphSONTokens.PROPERTIES)).get("name")).get(0).get(GraphSONTokens.VALUE).toString()); assertEquals("created", ((Map) objects.get(1)).get(GraphSONTokens.LABEL)); assertEquals("lop", ((List<Map>) ((Map) ((Map) objects.get(2)).get(GraphSONTokens.PROPERTIES)).get("name")).get(0).get(GraphSONTokens.VALUE).toString()); }
@Test @LoadGraphWith(LoadGraphWith.GraphData.MODERN) public void shouldSerializePath() throws Exception { final ObjectMapper mapper = graph.io(GraphSONIo.build(GraphSONVersion.V3_0)).mapper().version(GraphSONVersion.V3_0).create().createMapper(); final Path p = g.V(convertToVertexId("marko")).as("a").outE().as("b").inV().as("c").path() .filter(t -> ((Vertex) t.get().objects().get(2)).value("name").equals("lop")).next(); final String json = mapper.writeValueAsString(p); assertEquals(p.labels().size(), detached.labels().size()); assertEquals(p.labels().get(0).size(), detached.labels().get(0).size()); assertEquals(p.labels().get(1).size(), detached.labels().get(1).size()); assertEquals(p.labels().get(2).size(), detached.labels().get(2).size()); assertTrue(p.labels().stream().flatMap(Collection::stream).allMatch(detached::hasLabel)); final Vertex vOut = p.get("a"); final Vertex detachedVOut = detached.get("a"); assertEquals(vOut.label(), detachedVOut.label()); assertEquals(vOut.id(), detachedVOut.id()); final Edge e = p.get("b"); final Edge detachedE = detached.get("b"); assertEquals(e.label(), detachedE.label());
@Test public void runTransitiveClosureTestOnCyclicGraph() { ChronoGraph g = this.getGraph(); Collection<Path> paths = g.traversal().V(v1).repeat(out("connect").simplePath()).emit().until(t -> false).path().toList(); assertEquals(7, closureVertices.size()); assertTrue(closureVertices.contains(v2)); assertTrue(closureVertices.contains(v3)); assertTrue(closureVertices.contains(v4)); assertTrue(closureVertices.contains(v5)); assertTrue(closureVertices.contains(v6));
GraphTraversal<Vertex, Vertex> vertexs = g.V(); System.out.println(">>>> query all vertices: size=" + vertexs.toList().size()); edges.size()); List<Object> names = g.V().inE("knows").limit(2) .outV().values("name").toList(); System.out.println(">>>> query vertex(with props) of edges: " + names); assert names.size() == 2 : names.size(); names = g.V().as("a") .out("knows") .and() assert vertex.size() == 1 && vertex.get(0).value("name").equals("lop"); List<Path> paths = g.V(markoId).out().out().path().by("name").toList(); System.out.println(">>>> test out path: " + paths); assert paths.size() == 2; assert paths.get(0).get(0).equals("marko"); assert paths.get(0).get(1).equals("josh"); assert paths.get(0).get(2).equals("lop"); assert paths.get(1).get(0).equals("marko"); assert paths.get(1).get(1).equals("josh");
.V(schemaVertex) .out(SQLG_SCHEMA_SCHEMA_VERTEX_EDGE).as("vertex") __.out(SQLG_SCHEMA_OUT_EDGES_EDGE).as("outEdgeVertex") .in(SQLG_SCHEMA_IN_EDGES_EDGE).as("inVertex") .in(SQLG_SCHEMA_SCHEMA_VERTEX_EDGE).as("inSchema") .path() .toList(); for (Path inEdgePath : inEdges) { switch (label) { case "vertex": vertexVertex = inEdgePath.get("vertex"); break; case "outEdgeVertex": outEdgeVertex = inEdgePath.get("outEdgeVertex"); break; case "inVertex": inVertex = inEdgePath.get("inVertex"); break; case "inSchema":
private void mapRelations( Features features, GraphTraversalSource fromTraversal, GraphTraversalSource destTraversal) { fromTraversal .V() .in(MENTION_OF) .outE(RELATION) .inV() .out(MENTION_OF) .path() .sideEffect( tp -> { Path path = tp.get(); Vertex source = path.get(0); Edge relation = path.get(2); Vertex target = path.get(4); GraphTraversal<Vertex, Vertex> sourceTraversal = destTraversal.V(source.id()); GraphTraversal<Vertex, Vertex> targetTraversal = destTraversal.V(target.id()); if (sourceTraversal.hasNext() && targetTraversal.hasNext()) { Vertex destSource = sourceTraversal.next(); Vertex destTarget = targetTraversal.next(); Edge destRelation = destSource.addEdge(RELATION, destTarget, id, relation.id()); copyProperties(features, relation, destRelation); } }) .iterate(); }
@Test @LoadGraphWith(LoadGraphWith.GraphData.MODERN) public void shouldSerializePath() throws Exception { final ObjectMapper mapper = graph.io(GraphSONIo.build(GraphSONVersion.V2_0)).mapper().version(GraphSONVersion.V2_0).create().createMapper(); final Path p = g.V(convertToVertexId("marko")).as("a").outE().as("b").inV().as("c").path() .filter(t -> ((Vertex) t.get().objects().get(2)).value("name").equals("lop")).next(); final String json = mapper.writeValueAsString(p); assertEquals(p.labels().size(), detached.labels().size()); assertEquals(p.labels().get(0).size(), detached.labels().get(0).size()); assertEquals(p.labels().get(1).size(), detached.labels().get(1).size()); assertEquals(p.labels().get(2).size(), detached.labels().get(2).size()); assertTrue(p.labels().stream().flatMap(Collection::stream).allMatch(detached::hasLabel)); final Vertex vOut = p.get("a"); final Vertex detachedVOut = detached.get("a"); assertEquals(vOut.label(), detachedVOut.label()); assertEquals(vOut.id(), detachedVOut.id()); final Edge e = p.get("b"); final Edge detachedE = detached.get("b"); assertEquals(e.label(), detachedE.label());
@Test @LoadGraphWith(LoadGraphWith.GraphData.MODERN) public void shouldSerializePath() throws Exception { final ObjectMapper mapper = graph.io(GraphSONIo.build(GraphSONVersion.V1_0)).mapper().version(GraphSONVersion.V1_0).create().createMapper(); final Path p = g.V(convertToVertexId("marko")).as("a").outE().as("b").inV().as("c").path() .filter(t -> ((Vertex) t.get().objects().get(2)).value("name").equals("lop")).next(); final String json = mapper.writeValueAsString(p); final Map<String, Object> m = mapper.readValue(json, mapTypeReference); assertEquals(2, m.size()); final List<List<String>> labels = (List<List<String>>) m.get(GraphSONTokens.LABELS); assertEquals(3, labels.size()); assertEquals("a", labels.get(0).get(0)); assertEquals(1, labels.get(0).size()); assertEquals("b", labels.get(1).get(0)); assertEquals(1, labels.get(1).size()); assertEquals("c", labels.get(2).get(0)); assertEquals(1, labels.get(2).size()); final List<Object> objects = (List<Object>) m.get(GraphSONTokens.OBJECTS); assertEquals(3, objects.size()); assertEquals("marko", ((List<Map>) ((Map) ((Map) objects.get(0)).get(GraphSONTokens.PROPERTIES)).get("name")).get(0).get(GraphSONTokens.VALUE).toString()); assertEquals("created", ((Map) objects.get(1)).get(GraphSONTokens.LABEL)); assertEquals("lop", ((List<Map>) ((Map) ((Map) objects.get(2)).get(GraphSONTokens.PROPERTIES)).get("name")).get(0).get(GraphSONTokens.VALUE).toString()); }
.V(schemaVertex) .out(SQLG_SCHEMA_SCHEMA_VERTEX_EDGE).as("vertex") __.out(SQLG_SCHEMA_OUT_EDGES_EDGE).as("outEdgeVertex") .in(SQLG_SCHEMA_IN_EDGES_EDGE).as("inVertex") .in(SQLG_SCHEMA_SCHEMA_VERTEX_EDGE).as("inSchema") .path() .toList(); for (Path inEdgePath : inEdges) { switch (label) { case "vertex": vertexVertex = inEdgePath.get("vertex"); break; case "outEdgeVertex": outEdgeVertex = inEdgePath.get("outEdgeVertex"); break; case "inVertex": inVertex = inEdgePath.get("inVertex"); break; case "inSchema":
private void mapRelations( Features features, GraphTraversalSource fromTraversal, GraphTraversalSource destTraversal) { fromTraversal .V() .in(MENTION_OF) .outE(RELATION) .inV() .out(MENTION_OF) .path() .sideEffect( tp -> { Path path = tp.get(); Vertex source = path.get(0); Edge relation = path.get(2); Vertex target = path.get(4); GraphTraversal<Vertex, Vertex> sourceTraversal = destTraversal.V(source.id()); GraphTraversal<Vertex, Vertex> targetTraversal = destTraversal.V(target.id()); if (sourceTraversal.hasNext() && targetTraversal.hasNext()) { Vertex destSource = sourceTraversal.next(); Vertex destTarget = targetTraversal.next(); Edge destRelation = destSource.addEdge(RELATION, destTarget, id, relation.id()); copyProperties(features, relation, destRelation); } }) .iterate(); }
@Test @LoadGraphWith(LoadGraphWith.GraphData.MODERN) public void shouldSerializePathAsDetached() throws Exception { final GryoReader gryoReader = gryoIo.reader().create(); final Path p = g.V(convertToVertexId("marko")).as("a").outE().as("b").inV().as("c").path() .filter(t -> ((Vertex) t.get().objects().get(2)).value("name").equals("lop")).next(); final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); final Path detached = gryoReader.readObject(inputStream, DetachedPath.class); assertNotNull(detached); assertEquals(p.labels().size(), detached.labels().size()); assertEquals(p.labels().get(0).size(), detached.labels().get(0).size()); assertEquals(p.labels().get(1).size(), detached.labels().get(1).size()); assertEquals(p.labels().get(2).size(), detached.labels().get(2).size()); assertTrue(p.labels().stream().flatMap(Collection::stream).allMatch(detached::hasLabel)); final Vertex vOut = p.get("a"); final Vertex detachedVOut = detached.get("a"); assertEquals(vOut.label(), detachedVOut.label()); assertEquals(vOut.id(), detachedVOut.id()); final Edge e = p.get("b"); final Edge detachedE = detached.get("b"); assertEquals(e.label(), detachedE.label());
.V(schemaVertex) .out(SQLG_SCHEMA_SCHEMA_VERTEX_EDGE).as("vertex") ).as("edgeToProperty").otherV().as("property_partition") .optional( __.repeat(__.out(SQLG_SCHEMA_PARTITION_PARTITION_EDGE)).emit().as("subPartition") .path() .toList(); for (Path vertexPath : vertices) { case "subPartition": Preconditions.checkState(vertexPropertyPartitionVertex != null); subPartition = vertexPath.get("subPartition"); .V(schemaVertex) .out(SQLG_SCHEMA_SCHEMA_VERTEX_EDGE).as("vertex") __.out(SQLG_SCHEMA_OUT_EDGES_EDGE).as("outEdgeVertex") .optional( __.outE(SQLG_SCHEMA_EDGE_PROPERTIES_EDGE, .path() .toList(); for (Path outEdgePath : outEdges) {