/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.atlas.groovy; /** * Types of graph traversal steps. These are based on the traversal steps * described in the TinkerPop documentation at * http://tinkerpop.apache.org/docs/current/reference/#graph-traversal-steps. */ public enum TraversalStepType { /** * Indicates that the expression is not part of a graph traversal. */ NONE, /** * Indicates that the expression is a * {@link org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource}. * This is not technically a graph traversal step. This is the expression the traversal is started from ("g"). */ SOURCE, /** * A Start step adds vertices or edges to the traversal. These include "V", "E", and "inject". */ START, /** * An End step causes the traversal to be executed. This includes steps such as "toList", "toSet", and "fill" */ END, /** * Map steps map the current traverser value to exactly one new value. These * steps include "map" and "select". Here, we make a further distinction * based on the type of expression that things are being mapped to. * <p> * MAP_TO_ELEMENT indicates that the traverser value is being mapped * to either a Vertex or an Edge. */ MAP_TO_ELEMENT, /** * Map steps map the current traverser value to exactly one new value. These * steps include "map" and "select". Here, we make a further distinction * based on the type of expression that things are being mapped to. * <p> * MAP_TO_VALUE indicates that the traverser value is being mapped * to something that is not a Vertex or an Edge. */ MAP_TO_VALUE, /** * FlatMap steps map the current value of the traverser to an iterator of objects that * are streamed to the next step. These are steps like "in, "out", "inE", and * so forth which map the current value of the traverser from some vertex or edge * to some other set of vertices or edges that is derived from the original set based * on the structure of the graph. This also includes "values", which maps a vertex or * edge to the set of values for a given property. Here, we make a further distinction * based on the type of expression that things are being mapped to. * <p> * FLAT_MAP_TO_ELEMENTS indicates that the traverser value is being mapped * to something that is a Vertex or an Edge (in, out, outE fall in this category). */ FLAT_MAP_TO_ELEMENTS, /** * FlatMap steps map the current value of the traverser to an iterator of objects that * are streamed to the next step. These are steps like "in, "out", "inE", and * so forth which map the current value of the traverser from some vertex or edge * to some other set of vertices or edges that is derived from the original set based * on the structure of the graph. This also includes "values", which maps a vertex or * edge to the set of values for a given property. Here, we make a further distinction * based on the type of expression that things are being mapped to. * <p> * FLAT_MAP_TO_VALUES indicates that the traverser value is being mapped * to something that not is a Vertex or an Edge (values falls in this category). */ FLAT_MAP_TO_VALUES, /** * Filter steps filter things out of the traversal. These include "has", "where", * "and", "or", and "filter". */ FILTER, /** * Side effect steps do not affect the traverser value, but do something * that affects the state of the traverser. These include things such as * "enablePath()", "as", and "by". */ SIDE_EFFECT, /** * Branch steps split the traverser, for example, "repeat", "branch", "choose", and "union". */ BRANCH, /** * Barrier steps in Gremlin force everything before them to be executed * before moving on to the steps after them. We also use this to indicate * steps that need to do some aggregation or processing that requires the * full query result to be present in order for the step to work correctly. * This includes "range", "group", and "order", and "cap" */ BARRIER, }