Refine search
@Test @LoadGraphWith public void shouldNeverPropagateANoBulkTraverser() { try { assertFalse(g.V().dedup().sideEffect(t -> t.asAdmin().setBulk(0)).hasNext()); assertEquals(0, g.V().dedup().sideEffect(t -> t.asAdmin().setBulk(0)).toList().size()); g.V().dedup().sideEffect(t -> t.asAdmin().setBulk(0)).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, Integer> get_g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX() { return g.withSideEffect("a", 0, Operator.sum).V().out().sideEffect(t -> t.sideEffects("a", (int) t.bulk())).cap("a"); }
@Override public Traversal<Vertex, String> get_g_VX1X_sideEffectXstore_aX_name(final Object v1Id) { return g.withSideEffect("a", ArrayList::new).V(v1Id).sideEffect(traverser -> { traverser.<List>sideEffects("a").clear(); traverser.<List<Vertex>>sideEffects("a").add(traverser.get()); }).values("name"); }
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); final Path detached = mapper.readValue(json, Path.class); assertEquals(vOut.label(), detachedVOut.label()); assertEquals(vOut.id(), detachedVOut.id());
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(); }
private void mapEvents( Features features, GraphTraversalSource fromTraversal, GraphTraversalSource destTraversal) { fromTraversal .V() .hasLabel(DocumentGraphFactory.EVENT) .sideEffect( tv -> { Vertex origEvent = tv.get(); Vertex transEvent = destTraversal.addV(EVENT).property(id, origEvent.id()).next(); copyProperties(features, origEvent, transEvent); origEvent .edges(Direction.BOTH) .forEachRemaining( origEdge -> destTraversal .V(origEdge.inVertex().id()) .addE(PARTICIPANT_IN) .to(transEvent) .iterate()); }) .iterate(); }
public D3Graph get(String type, UUID uuid, List<String> relationNames, int depth) throws NotFoundException { final String vreId = (String) graphWrapper.getGraph().traversal().V() .hasLabel(Collection.DATABASE_LABEL) .has(Collection.ENTITY_TYPE_NAME_PROPERTY_NAME, type) .in(Vre.HAS_COLLECTION_RELATION_NAME).next() .property(Vre.VRE_NAME_PROPERTY_NAME).value(); final String relationTypeName = (String) graphWrapper.getGraph().traversal().V() .hasLabel(Collection.DATABASE_LABEL) .has(Collection.ENTITY_TYPE_NAME_PROPERTY_NAME, type) .in(Vre.HAS_COLLECTION_RELATION_NAME).out(Vre.HAS_COLLECTION_RELATION_NAME) .where(__.has(Collection.IS_RELATION_COLLECTION_PROPERTY_NAME, true)).next() .property(Collection.ENTITY_TYPE_NAME_PROPERTY_NAME).value(); GraphTraversal<Vertex, Vertex> result = graphWrapper.getGraph().traversal().V() .has("tim_id", uuid.toString()).filter( x -> ((String) x.get().property("types").value()).contains("\"" + type + "\"") ).has("isLatest", true) .not(__.has("deleted", true)); if (!result.hasNext()) { throw new NotFoundException(); } Vertex vertex = result.next(); D3Graph d3Graph = new D3Graph(); generateD3Graph(relationTypeName, vreId, d3Graph, vertex, relationNames, depth, 1); return d3Graph; }
protected void createMissingFiles() { GraphTraversalSource g = traversal(); // Loop until we can't find anymore missing files long implicitCreation = 1; while (implicitCreation > 0) { implicitCreation = g.V().hasLabel(Bdio.Class.File.name()) .as("f").values(Bdio.DataProperty.path.name()).dedup().aggregate("paths") .select("f").values(options().fileParentKey().get()).where(without("paths")) .dedup().as("path") .addV(Bdio.Class.File.name()) .property(Bdio.DataProperty.path.name(), select("path")) .property(Bdio.DataProperty.fileSystemType.name(), Bdio.FileSystemType.DIRECTORY.toString()) .sideEffect(t -> { HID.from(t.path("path")).tryParent().map(HID::toUriString).ifPresent(v -> t.get().property(options().fileParentKey().get(), v)); options().identifierKey().ifPresent(key -> t.get().property(key, BdioObject.randomId())); }) .count().next(); } }
@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()); }
/** * Return a global application index (not associated with a specific {@link ProjectModel}). */ public ApplicationReportIndexModel getOrCreateGlobalApplicationIndex() { GraphTraversal<Vertex, Vertex> pipeline = getGraphContext().getGraph().traversal().V(); pipeline.has(WindupVertexFrame.TYPE_PROP, ApplicationReportModel.TYPE); pipeline.filter(it -> !it.get().edges(Direction.OUT, ApplicationReportIndexModel.APPLICATION_REPORT_INDEX_TO_PROJECT_MODEL).hasNext()); final ApplicationReportIndexModel result = pipeline.hasNext() ? frame(pipeline.next()) : create(); return result; }
public String generateGremlin() { final int targetStepCount = rand.nextInt(10); final StringBuilder sb = new StringBuilder("g.V()"); final Vertex start = syntaxGraph.traversal().V().has("starter", true).order().by(this::shuffle).next(); sb.append((String) start.value("step")); syntaxGraph.traversal().V(start).times(targetStepCount - 1).repeat( __.local(__.outE().has("weight", P.gte(rand.nextDouble())) .inV().order().by(this::shuffle).limit(1)).sideEffect(t -> sb.append((String) t.get().value("step"))) ).iterate(); return sb.toString(); }
public Iterable<FileModel> findByFilenameRegex(String filenameRegex) { filenameRegex = TitanUtil.titanifyRegex(filenameRegex); Iterable<Vertex> vertices = getGraphContext().getGraph() .traversal() .V() .has(FileModel.FILE_NAME, Text.textRegex(filenameRegex)) // I'm not sure why this is necessary, but for some reason ".has(WindupFrame.TYPE_PROP, FileModel.TYPE)" // seems to be unreliable with this query. Doing it with this filter seems to fix it. .filter(traversal -> { Iterator<VertexProperty<String>> typeIterator = traversal.get().properties(WindupFrame.TYPE_PROP); while (typeIterator.hasNext()) { if (FileModel.TYPE.equals(typeIterator.next().value())) { return true; } } return false; }) .toList(); return new FramedVertexIterable<>(getGraphContext().getFramed(), vertices, FileModel.class); }
final Memory memory1 = result1.memory(); assertEquals(5, memory1.getIteration()); assertEquals(6, graph1.traversal().V().count().next().intValue()); assertEquals(6, graph1.traversal().E().count().next().intValue()); assertEquals(6, graph1.traversal().V().values(PageRankVertexProgram.PAGE_RANK).count().next().intValue()); assertEquals(18, graph1.traversal().V().values().count().next().intValue()); List<Traverser<String>> traversers = IteratorUtils.list(memory3.<TraverserSet>get(TraversalVertexProgram.HALTED_TRAVERSERS).iterator()); assertEquals(6l, traversers.stream().map(Traverser::bulk).reduce((a, b) -> a + b).get().longValue()); assertEquals(4l, traversers.stream().filter(s -> s.get().equals("person")).map(Traverser::bulk).reduce((a, b) -> a + b).get().longValue()); assertEquals(2l, traversers.stream().filter(s -> s.get().equals("software")).map(Traverser::bulk).reduce((a, b) -> a + b).get().longValue()); assertEquals(6, graph3.traversal().V().count().next().intValue()); assertEquals(6, graph3.traversal().E().count().next().intValue());
private Set<Collection> getCollections(Vertex foundVertex, String vreName) { return traversal() .V(foundVertex.id()) .in(HAS_ENTITY_RELATION_NAME) .in(HAS_ENTITY_NODE_RELATION_NAME) .where( __.in(Vre.HAS_COLLECTION_RELATION_NAME) .has(Vre.VRE_NAME_PROPERTY_NAME, vreName) ).map(collectionT -> { return new Collection(vreName, collectionT.get(), graphWrapper); }).toSet(); }
@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); }