blob: fde88147c7305e7e1483c9408bb41410c67c3a8c [file] [log] [blame]
/**
* 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,
}