# Apache TinkerPop Documentation > Documentation for Apache TinkerPop, a graph computing framework and the Gremlin graph traversal language. ## dev/developer - [Developer Documentation](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/developer/index.md): Documentation for TinkerPop contributors and committers: setting up a development environment, contribution process, release process, governance, and community meetings. - [For Committers](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/developer/_for_committers.md): Guidelines for TinkerPop committers: the Review-then-Commit (RTC) process, commit conventions, branch and merge practices, and committer responsibilities. - [Release Process](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/developer/_release_process.md): The step-by-step process for cutting an official Apache TinkerPop release, including building, staging, voting, and publishing artifacts and documentation. - [Development Environment](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/developer/development-environment.md): Setting up a TinkerPop development environment: build prerequisites, Maven and Docker workflows, and how to build and test the code and documentation. - [Meetings](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/developer/meetings.md): Records and scheduling of TinkerPop community meetings, where project direction and contributions are discussed. - [Review then Commit](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/developer/rtc.md): The Review-then-Commit (RTC) process TinkerPop uses for changes: how contributions are proposed, reviewed, voted on, and merged. ## dev/future - [TinkerPop Future](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/future/index.md): Forward-looking design documents and proposals for future directions of Apache TinkerPop and the Gremlin language. ## dev/io - [IO Reference](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/io/index.md): Details of TinkerPop's graph serialization formats — GraphML, GraphSON, Gryo, and GraphBinary — with format samples and implementation notes for producing and consuming graphs. - [Extended](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/io/_extended_2.md): GraphSON 3.0 extended types: the additional data types (e.g. temporal and numeric types) enabled by registering the separate GraphSONXModuleV3d0 module. - [RequestMessage](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/io/_requestmessage_2.md): The GraphSON 2.0 encodings of Gremlin Server RequestMessage types (session eval, sessionless eval, authentication response, and their aliased forms). - [Version 1.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/io/graphson-1d0.md): GraphSON 1.0: the original format, with per-type sample encodings for graph structure and request/response messages. - [Version 2.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/io/graphson-2d0.md): GraphSON 2.0: the type-embedding format introduced in TinkerPop 3.2.2, with per-type sample encodings for graph structure and request/response messages. - [Version 3.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/io/graphson-3d0.md): GraphSON 3.0: the current format (TinkerPop 3.3.0+, application/vnd.gremlin-v3.0+json), with per-type sample encodings for graph structure and request/response messages. - [GraphSON](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/io/graphson.md): The JSON-based GraphSON serialization format: its purpose, the differences across versions 1.0/2.0/3.0, and how graphs and types are represented. ## dev/provider - [Introduction](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/index.md): Provider documentation overview: what graph system providers, graph driver providers, and language variant providers must implement to integrate with TinkerPop. - [Graph Driver Provider Requirements](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/_graph_driver_provider_requirements.md): What a driver provider must implement to connect a language to Gremlin Server: the wire protocol, serialization formats, and connection handling. - [Steps](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/_steps.md): Per-step semantic definitions: the precise input/output behavior each Gremlin step must exhibit, used to verify provider implementations for correctness. - [all()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/all-step.md): The formal semantics of the all() step: filters array data from the Traversal Stream if all of the array's items match the supplied predicate. - [any()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/any-step.md): The formal semantics of the any() step: filters array data from the Traversal Stream if any of the array's items match the supplied predicate. - [asDate()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/asDate-step.md): The formal semantics of the asDate() step: parse the value of incoming traverser as date. - [asString()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/asString-step.md): The formal semantics of the asString() step: returns the value of incoming traverser as strings, or if Scope.local is specified, returns each element inside incoming list traverser as string. - [call()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/call-step.md): The formal semantics of the call() step: provides support for provider-specific service calls. - [combine()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/combine-step.md): The formal semantics of the combine() step: its exact expected behavior when merging an incoming list with a supplied list argument. - [concat()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/concat-step.md): The formal semantics of the concat() step: concatenates the incoming String traverser with the input String arguments, and return the joined String. - [conjoin()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/conjoin-step.md): The formal semantics of the conjoin() step: joins every element in a list together into a String. - [dateAdd()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/dateAdd-step.md): The formal semantics of the dateAdd() step: increase value of input Date. - [dateDiff()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/dateDiff-step.md): The formal semantics of the dateDiff() step: returns the difference between two Dates in epoch time. - [dedup()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/dedup-step.md): The formal semantics of the dedup() step: removes repeatedly seen results from the Traversal Stream. - [difference()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/difference-step.md): The formal semantics of the difference() step: adds the difference of two lists to the Traversal Stream. - [disjunct()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/disjunct-step.md): The formal semantics of the disjunct() step: adds the disjunct set to the Traversal Stream. - [element()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/element-step.md): The formal semantics of the element() step: traverse from Property to its Element. - [format()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/format-step.md): The formal semantics of the format() step: a mid-traversal step which will handle result formatting to string values. - [Graph System Provider Requirements](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/graph-system-provider-requirements.md): What a graph system provider must implement: the structure/process APIs, OLTP and OLAP support, and how to validate the implementation with the Gremlin test suite. - [Gremlin Plugins](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/gremlin-plugins.md): How to author Gremlin Console/Server plugins as a provider: the plugin interface, dependency management, and registering custom bindings and DSLs. - [Gremlin Semantics](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/gremlin-semantics.md): The formal semantics of the Gremlin language: the type system, traverser model, and the precise expected behavior of each step, as a specification for providers. - [intersect()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/intersect-step.md): The formal semantics of the intersect() step: adds the intersection to the Traversal Stream. - [lTrim()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/lTrim-step.md): The formal semantics of the lTrim() step: returns a string with leading whitespace removed. - [length()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/length-step.md): The formal semantics of the length() step: returns the length of the incoming string or list, if Scope.local is specified, returns the length of each string elements inside incoming list traverser. - [mergeE()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/merge-e-step.md): The formal semantics of the mergeE() step: provides upsert-like functionality for edges. - [merge()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/merge-step.md): The formal semantics of the merge() step: adds the union of two sets (or two maps) to the Traversal Stream. - [mergeV()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/merge-v-step.md): The formal semantics of the mergeV() step: provides upsert-like functionality for vertices. - [product()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/product-step.md): The formal semantics of the product() step: adds the cartesian product to the Traversal Stream. - [Provider Documentation](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/providers.md): Guidance for those building on TinkerPop: implementing a graph system, a driver, or a language variant, and validating it against the test suite. - [rTrim()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/rTrim-step.md): The formal semantics of the rTrim() step: returns a string with trailing whitespace removed. - [repeat()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/repeat-step.md): The formal semantics of the repeat() step: iteratively applies a traversal (the "loop body") to each incoming traverser until a stopping condition is met. - [replace()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/replace-step.md): The formal semantics of the replace() step: returns a string with the specified characters in the original string replaced with the new characters. - [reverse()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/reverse-step.md): The formal semantics of the reverse() step: returns the reverse of the incoming traverser - [split()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/split-step.md): The formal semantics of the split() step: returns a list of strings created by splitting the incoming string traverser around the matches of the given separator. - [substring()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/substring-step.md): The formal semantics of the substring() step: its exact expected behavior extracting a portion of a string by index. - [toLower()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/toLower-step.md): The formal semantics of the toLower() step: returns the lowercase representation of incoming string traverser, or if Scope.local is specified, returns the lowercase representation of each string elemen - [toUpper()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/toUpper-step.md): The formal semantics of the toUpper() step: returns the uppercase representation of incoming string traverser, or if Scope.local is specified, returns the uppercase representation of each string elemen - [trim()](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/trim-step.md): The formal semantics of the trim() step: returns a string with leading and trailing whitespace removed. - [Validating with Gremlin-Test](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/dev/provider/validating-with-gremlin-test.md): Using the gremlin-test suite to validate a graph implementation: the structure and process test standards and how to opt in or out of feature-gated tests. ## recipes - [Recipes](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/index.md): A collection of practical Gremlin traversal patterns and solutions to common graph problems, with runnable examples. - [Traversal Recipes](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/_traversal_recipes.md): Recipes covering common traversal tasks — between-vertices patterns, centrality, collections, connected components, cycle detection, pagination, recommendation, shortest path, trees, and more. - [Between Vertices](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/between-vertices.md): Recipe: It is quite common to have a situation where there are two particular vertices of a graph and a need to execute some traversal on the paths found between them. - [Centrality](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/centrality.md): Recipe: There are many measures of centrality which are meant to help identify the most important vertices in a graph. - [Collections](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/collections.md): Recipe: reshaping List and Map collections within a traversal — unfolding, folding, grouping, and reformatting side-effect data. - [Connected Components](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/connected-components.md): Recipe for finding weakly and strongly connected components in a graph with Gremlin, in both OLTP and OLAP form. - [How to Contribute a Recipe](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/contributing.md): How to contribute a new recipe to the TinkerPop documentation, including the expected structure and testing conventions. - [Cycle Detection](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/cycle-detection.md): Recipe: A cycle occurs in a graph where a path loops back on itself to the originating vertex. - [Duplicate Edge Detection](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/duplicate-edge.md): Recipe: Whether part of a graph maintenance process or for some other analysis need, it is sometimes necessary to detect if there is more than one edge between two vert - [Duplicate Vertex Detection](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/duplicate-vertex.md): Recipe: The pattern for finding duplicate vertices is quite similar to the pattern defined in the Duplicate Edge section. - [Moving an Edge](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/edge-move.md): Recipe: moving an existing edge from one incident vertex to another by recreating it with new endpoints and dropping the original. - [Element Existence](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/element-existence.md): Recipe: Checking for whether or not a graph element is present in the graph is simple: - [If-Then Based Grouping](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/if-then-based-grouping.md): Recipe: bucketing elements into groups by if/then-style conditions using choose() within group(). - [Looping](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/looping.md): Recipe: One common use case when working with Gremlin is to perform complex looping statements using the repeat() step. - [OLAP traversals with Spark on YARN](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/olap-spark-yarn.md): Recipe: TinkerPop's combination of SparkGraphComputer and HadoopGraph allows for running distributed, analytical graph queries (OLAP) on a computer cluster. - [Operating on Dropped Elements](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/operating-on-dropped-elements.md): Recipe: One common scenario that happens when dropping elements using a traversal is the desire to perform some sort of operation on the elements being removed. - [Pagination](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/pagination.md): Recipe: In most database applications, it is oftentimes desirable to return discrete blocks of data for a query rather than all of the data that the total results would - [Recommendation](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/recommendation.md): Recipe for building recommendations with Gremlin using collaborative-filtering-style traversals over a graph. - [Shortest Path](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/shortest-path.md): Recipe: finding the shortest path between vertices with Gremlin, using repeat()/until() and path-length comparison. - [Traversal Induced Values](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/traversal-induced-values.md): Recipe: The parameters of a Traversal can be known ahead of time as constants or might otherwise be passed in as dynamic arguments. - [Tree](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/recipes/tree.md): Recipe for working with tree-shaped data in Gremlin: building, traversing, and extracting hierarchical structures from a graph. ## reference - [TinkerPop Documentation](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/index.md): The main TinkerPop reference guide: the structure API, the Gremlin traversal language and its step catalog, OLAP with GraphComputer, the Gremlin applications, language variants, and provided implementations. - [Best Practices](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/_best_practices.md): Recommended practices for working with Gremlin Server, including connection handling, parameterized scripts, and result serialization. - [A Note on Barrier Steps](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/a-note-on-barrier-steps.md): A note on barrier steps in Gremlin, including collecting, reducing, and supplying barriers. - [A Note On Lambdas](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/a-note-on-lambdas.md): A note on lambdas in Gremlin, including their usage, limitations, and alternatives. - [A Note on Maps](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/a-note-on-maps.md): A note on maps in Gremlin, including differences in behavior between embedded and remote contexts. - [A Note on Predicates](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/a-note-on-predicates.md): A note on predicates used in Gremlin traversals, including standard and text predicates. - [A Note on Scopes](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/a-note-on-scopes.md): A note on scopes in Gremlin, including local and global scope usage. - [AddE Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/addedge-step.md): The addE()-step (map/sideEffect) adds an edge between vertices in the graph. - [AddV Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/addvertex-step.md): The addV()-step is used to add vertices to the graph (map/sideEffect). - [Aggregate Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/aggregate-step.md): The aggregate()-step (sideEffect) is used to aggregate all the objects at a particular point of traversal into a Collection. - [All Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/all-step.md): It is possible to filter list traversers using all()-step (filter). - [And Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/and-step.md): The and()-step ensures that all provided traversals yield a result (filter). - [Any Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/any-step.md): It is possible to filter list traversers using any()-step (filter). - [As Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/as-step.md): The as()-step is not a real step, but a "step modulator" similar to by() and option(). - [AsDate Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/asDate-step.md): The asDate()-step (map) converts string or numeric input to Date. - [AsString Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/asString-step.md): The asString()-step (map) returns the value of incoming traverser as strings. - [Barrier Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/barrier-step.md): The barrier()-step (barrier) turns the lazy traversal pipeline into a bulk-synchronous pipeline. - [Branch Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/branch-step.md): The branch() step splits the traverser to all the child traversals provided to it. - [By Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/by-step.md): The by()-step is not an actual step, but instead is a "step-modulator" similar to as() and option(). - [Call Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/call-step.md): The call() step allows for custom, provider-specific service calls either at the start of a traversal or mid-traversal. - [Cap Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/cap-step.md): The cap()-step (barrier) iterates the traversal up to itself and emits the sideEffect referenced by the provided key. - [Choose Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/choose-step.md): The choose()-step (branch) routes the current traverser to a particular traversal branch option. - [Coalesce Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/coalesce-step.md): The coalesce()-step evaluates the provided traversals in order and returns the first traversal that emits at least one element. - [Coin Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/coin-step.md): To randomly filter out a traverser, use the coin()-step (filter). - [Combine Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/combine-step.md): The combine() step (map) merges the elements of the incoming list traverser with a provided list argument into a single list. - [Gremlin Compilers](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/compilers.md): Gremlin compilers translate other query languages into Gremlin bytecode; covers SPARQL-Gremlin for querying graphs with SPARQL. - [Concat Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/concat-step.md): The concat()-step (map) concatenates one or more String values together to the incoming String traverser. - [Conjoin Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/conjoin-step.md): The conjoin()-step (map) joins together the elements in the incoming list traverser together with the provided argument as a delimiter. - [ConnectedComponent Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/connectedcomponent-step.md): The connectedComponent() step performs a computation to identify Connected Component instances in a graph. - [Constant Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/constant-step.md): To specify a constant value for a traverser, use the constant()-step (map). - [Count Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/count-step.md): The count()-step (map) counts the total number of represented traversers in the streams (i.e. the bulk count). - [CyclicPath Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/cyclicpath-step.md): The cyclicPath()-step (filter) retains only traversers whose path contains a cycle (a repeated element). - [DateAdd Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/dateAdd-step.md): The dateAdd()-step (map) returns the value with the addition of the value number of units as specified by the DateToken. - [DateDiff Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/dateDiff-step.md): The dateDiff()-step (map) returns the difference between two Dates in epoch time. - [Dedup Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/dedup-step.md): With dedup()-step (filter), repeatedly seen objects are removed from the traversal stream. - [Difference Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/difference-step.md): The difference()-step (map) calculates the difference between the incoming list traverser and the provided list argument. - [Disjunct Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/disjunct-step.md): The disjunct()-step (map) calculates the disjunct set between the incoming list traverser and the provided list argument. - [Drop Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/drop-step.md): The drop()-step (filter/sideEffect) is used to remove element and properties from the graph (i.e. remove). - [E Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/e-step.md): The E()-step is meant to read edges from the graph and is usually used to start a GraphTraversal, but can also be used mid-traversal. - [Element Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/element-step.md): The element() step is a no-argument step that traverses from a Property to the Element that owns it. - [ElementMap Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/elementmap-step.md): The elementMap()-step yields a Map representation of the structure of an element. - [Emit Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/emit-step.md): The emit-step is not an actual step, but is instead a step modulator for repeat() (find more documentation on the emit() there). - [Explain Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/explain-step.md): The explain()-step (terminal) will return a TraversalExplanation. - [Fail Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/fail-step.md): The fail()-step provides a way to force a traversal to immediately fail with an exception. - [Filter Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/filter-step.md): The filter() step maps the traverser from the current object to either true or false where the latter will not pass the traverser to the next step in the proces - [FlatMap Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/flatmap-step.md): The flatMap() step maps the traverser from the current object to an Iterator of objects for the next step in the process. - [Fold Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/fold-step.md): The fold()-step (map) aggregates all objects in the stream into a single list (or reduces them with a supplied seed and function). - [Format Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/format-step.md): The format()-step (map) builds a string from a template with placeholders filled by traverser values and properties. - [From Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/from-step.md): The from()-step is not an actual step, but instead is a "step-modulator" similar to as() and by(). - [General Steps](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/general-steps.md): The five general steps (map, flatMap, filter, sideEffect, branch) from which all other Gremlin steps are derived. - [Graph Traversal Steps](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/graph-traversal-steps.md): Reference catalog of the individual Gremlin steps (map, filter, sideEffect, branch, and more) with syntax and examples for each. - [The Graph](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/graph.md): The structure API: graphs, vertices, edges, properties, meta- and multi-properties, transactions, variables, and the features a graph implementation can support. - [The GraphComputer](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/graphcomputer.md): OLAP graph processing with GraphComputer: running VertexPrograms (e.g. PageRank, PeerPressure) and MapReduce jobs for whole-graph analytics. - [GraphSON](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/graphson.md): How the io() step reads and writes graphs in the JSON-based GraphSON format, including its use for import and export. - [Gremlin Applications](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/gremlin-applications.md): The applications that ship with TinkerPop: the Gremlin Console for interactive use and Gremlin Server for exposing graphs to remote clients. - [Gremlin Drivers and Variants](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/gremlin-drivers-variants.md): How Gremlin is embedded in host programming languages (Java, Groovy, Python, JavaScript, .NET, Go) and how language variants and drivers connect to a remote server. - [Gremlin-Go](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/gremlin-go.md): Using Gremlin from Go: installing gremlin-go, building traversals, Go syntax differences, and connecting to a remote Gremlin Server. - [Gremlin-Groovy](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/gremlin-groovy.md): Using Gremlin from Groovy: the JVM-based Gremlin-Groovy variant backed by Gremlin-Java, its role as the language of the Gremlin Console and Server, and its syntax differences. - [Gremlin-Java](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/gremlin-java.md): Using Gremlin from Java: the reference implementation of the language, GraphTraversalSource construction, and connecting to a remote Gremlin Server. - [Gremlin-JavaScript](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/gremlin-javascript.md): Using Gremlin from JavaScript/Node.js: installing the gremlin package, building traversals, and connecting to a remote Gremlin Server. - [Gremlin Plugins](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/gremlin-plugins.md): Extending the Gremlin Console and Server with plugins that add dependencies, DSLs, and bindings; covers the plugins that ship with TinkerPop. - [Gremlin-Python](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/gremlin-python.md): Using Gremlin from Python: installing gremlinpython, building traversals, Pythonic syntax differences, and connecting to a remote Gremlin Server. - [Gremlin Server](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/gremlin-server.md): Gremlin Server exposes graphs to remote clients over WebSocket/HTTP: how to run it, its request lifecycle, serializers, and connecting from drivers. - [Group Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/group-step.md): The group()-step (map/sideEffect) organizes objects into a Map by a key, optionally folding each group's values. - [GroupCount Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/groupcount-step.md): When it is important to know how many times a particular object has been at a particular part of a traversal, groupCount()-step (map/sideEffect) is used. - [Hadoop-Gremlin](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/hadoop-gremlin.md): Running Gremlin OLAP over Hadoop: HadoopGraph, graph input/output formats, and executing traversals with SparkGraphComputer. - [Has Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/has-step.md): The has() step (filter) and its variants (hasLabel, hasId, hasKey, hasValue, hasNot) filter vertices, edges, and properties by label, key, and value. - [Id Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/id-step.md): The id()-step (map) takes an Element and extracts its identifier from it. - [Identity Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/identity-step.md): The identity()-step (map) is an identity function which maps the current object to itself. - [Implementations](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/implementations.md): Graph system and processor implementations that ship with TinkerPop, including TinkerGraph, Neo4j, and the Hadoop/Spark OLAP engines. - [Index Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/index-step.md): The index()-step (map) indexes each element in the current collection. - [Inject Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/inject-step.md): The inject()-step inserts arbitrary objects into the traversal stream. - [Intersect Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/intersect-step.md): The intersect()-step (map) calculates the intersection between the incoming list traverser and the provided list argument. - [Introduction](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/intro.md): Introduction to TinkerPop and Gremlin: graph computing concepts (structure vs. process), the ways to connect to Gremlin (embedded, Gremlin Server, remote providers), and how to stay implementation-agnostic. - [IO Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/io-step.md): The task of importing and exporting the data of Graph instances is the job of the io()-step. - [Is Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/is-step.md): It is possible to filter scalar values using is()-step (filter). - [Key Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/key-step.md): The key()-step (map) takes a Property and extracts the key from it. - [LTrim Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/lTrim-step.md): The lTrim()-step (map) returns a string with leading whitespace removed. - [Label Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/label-step.md): The label()-step (map) takes an Element and extracts its label from it. - [Length Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/length-step.md): The length()-step (map) returns the length incoming string or list of string traverser. - [Limit Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/limit-step.md): The limit()-step is analogous to range()-step save that the lower end range is set to 0. - [Local Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/local-step.md): The local()-step (branch) runs a child traversal locally on each single input object rather than the whole stream. - [Loops Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/loops-step.md): The loops()-step (map) extracts the number of times the Traverser has gone through the current loop. - [Map Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/map-step.md): The map() step maps the traverser from the current object to the next step in the process. - [Match Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/match-step.md): The match() step (map) provides declarative, pattern-matching graph querying by combining traversal fragments bound to shared variables. - [Math Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/math-step.md): The math()-step (math) enables scientific calculator functionality within Gremlin. - [Max Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/max-step.md): The max()-step (map) operates on a stream of comparable objects and determines which is the last object according to its natural order in the stream. - [Mean Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/mean-step.md): The mean()-step (map) operates on a stream of numbers and determines the average of those numbers. - [Merge Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/merge-step.md): The merge()-step (map) combines collections like lists and maps. - [MergeEdge Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/mergeedge-step.md): The mergeE() step is used to add edges and their properties to a graph in a "create if not exist" fashion. - [MergeVertex Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/mergevertex-step.md): The mergeV() -step is used to add vertices and their properties to a graph in a "create if not exist" fashion. - [Min Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/min-step.md): The min()-step (map) operates on a stream of comparable objects and determines which is the first object according to its natural order in the stream. - [None Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/none-step.md): The none()-step (filter) filters all objects from a traversal stream. - [Not Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/not-step.md): The not() step (filter) removes traversers for which the provided sub-traversal returns a result, negating a pattern. - [Option Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/option-step.md): The option()-step is a modulator that supplies branch choices to choose(), branch(), and mergeV()/mergeE(). - [Optional Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/optional-step.md): The optional()-step (branch/flatMap) returns the result of the specified traversal if it yields a result else it returns the calling element, i.e. the identity( - [Or Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/or-step.md): The or()-step ensures that at least one of the provided traversals yield a result (filter). - [Order Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/order-step.md): When the objects of the traversal stream need to be sorted, order()-step (map) can be leveraged. - [PageRank Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/pagerank-step.md): The pageRank()-step (map/sideEffect) calculates PageRank using PageRankVertexProgram. - [Path Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/path-step.md): The path()-step (map) returns the full history (path) of each traverser through the traversal. - [PeerPressure Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/peerpressure-step.md): The peerPressure()-step (map/sideEffect) clusters vertices using PeerPressureVertexProgram. - [Product Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/product-step.md): The product()-step (map) calculates the cartesian product between the incoming list traverser and the provided list argument. - [Profile Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/profile-step.md): The profile()-step (sideEffect) exists to allow developers to profile their traversals to determine statistical information like step runtime, counts, etc. - [Program Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/program-step.md): The program()-step (map/sideEffect) is the "lambda" step for GraphComputer jobs. - [Project Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/project-step.md): The project()-step (map) projects the current object into a Map<String,Object> keyed by provided labels. - [Properties Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/properties-step.md): The properties()-step (map) extracts properties from an Element in the traversal stream. - [Property Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/property-step.md): The property()-step is used to add properties to the elements of the graph (sideEffect). - [PropertyMap Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/propertymap-step.md): The propertiesMap()-step yields a Map representation of the properties of an element. - [RTrim Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/rTrim-step.md): The rTrim()-step (map) returns a string with trailing whitespace removed. - [Range Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/range-step.md): As traversers propagate through the traversal, it is possible to only allow a certain number of them to pass through with range()-step (filter). - [Read Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/read-step.md): The read()-step is not really a "step" but a step modulator in that it modifies the functionality of the io()-step. - [Repeat Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/repeat-step.md): The repeat()-step (branch) is used for looping over a traversal given some break predicate. - [Replace Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/replace-step.md): The replace()-step (map) returns a string with the specified characters in the original string replaced with the new characters. - [Reverse Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/reverse-step.md): The reverse()-step (map) returns the reverse of the incoming list traverser. - [Sack Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/sack-step.md): The sack() step (sideEffect or map) reads and writes a per-traverser local data structure (the sack), used to carry and accumulate values along a traversal. - [Sample Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/sample-step.md): The sample()-step is useful for sampling some number of traversers previous in the traversal. - [Security](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/security.md): Securing Gremlin Server: authentication (SASL/PLAIN, Kerberos), authorization, TLS/SSL, and sandboxing script execution. - [Select Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/select-step.md): The select()-step (map) selects labeled steps, side-effects, columns, or map entries from the traverser. - [Configuring](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/server-configuring.md): Reference for Gremlin Server's YAML configuration options: graphs, serializers, channelizers, thread pools, SSL, and metrics. - [ShortestPath step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/shortestpath-step.md): The shortestPath()-step provides an easy way to find shortest non-cyclic paths in a graph. - [SideEffect Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/sideeffect-step.md): The sideEffect() step performs some operation on the traverser and passes it to the next step in the process. - [SimplePath Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/simplepath-step.md): When it is important that a traverser not repeat its path through the graph, simplePath()-step should be used (filter). - [Skip Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/skip-step.md): The skip()-step is analogous to range()-step save that the higher end range is set to -1. - [Split Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/split-step.md): The split()-step (map) returns a list of strings created by splitting the incoming string traverser around the matches of the given separator. - [Subgraph Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/subgraph-step.md): The subgraph()-step (sideEffect) extracts a portion of the graph into a new edge-induced subgraph. - [Substring Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/substring-step.md): The substring() step (map) extracts a portion of an incoming string by start (and optional end) index. - [Sum Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/sum-step.md): The sum()-step (map) operates on a stream of numbers and sums the numbers together to yield a result. - [Tail Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/tail-step.md): The tail()-step is analogous to limit()-step, except that it emits the last n-objects instead of the first n-objects. - [Terminal Steps](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/terminal-steps.md): Terminal steps (e.g. next(), toList(), iterate(), hasNext()) that execute a traversal and return concrete results rather than another traversal. - [TimeLimit Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/timelimit-step.md): The timeLimit()-step (filter) halts a traversal branch after a specified time has elapsed. - [Times Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/times-step.md): The times-step is not an actual step, but is instead a step modulator for repeat() (find more documentation on the times() there). - [To Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/to-step.md): The to() step-modulator supplies direction and destination arguments to steps like from(), addE(), and path-oriented steps. - [ToLower Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/toLower-step.md): The toLower()-step (map) returns the lowercase representation of incoming string or list of string traverser. - [ToUpper Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/toUpper-step.md): The toUpper()-step (map) returns the uppercase representation of incoming string or list of string traverser. - [The Traversal](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/traversal.md): The core of Gremlin: how traversals are constructed from steps, the traverser model, and the catalog of graph traversal steps used to query and mutate graphs. - [TraversalStrategy](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/traversalstrategy.md): How TraversalStrategy implementations analyze and rewrite traversals at compile time (decoration, optimization, finalization, verification) and how to author custom strategies. - [Tree Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/tree-step.md): The tree()-step (sideEffect) aggregates the paths emanating from elements into a tree structure. - [Trim Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/trim-step.md): The trim()-step (map) returns a string with leading and leading whitespace removed. - [Unfold Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/unfold-step.md): The unfold()-step (flatMap) unrolls an iterator, iterable, or map in the stream into a linear sequence of objects. - [Union Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/union-step.md): The union()-step (branch) supports the merging of the results of an arbitrary number of traversals. - [Until Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/until-step.md): The until-step is not an actual step, but is instead a step modulator for repeat() (find more documentation on the until() there). - [V Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/v-step.md): The V()-step is meant to read vertices from the graph and is usually used to start a GraphTraversal, but can also be used mid-traversal. - [Value Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/value-step.md): The value()-step (map) takes a Property and extracts the value from it. - [ValueMap Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/valuemap-step.md): The valueMap()-step yields a Map representation of the properties of an element. - [Values Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/values-step.md): The values()-step (map) extracts the values of properties from an Element in the traversal stream. - [Vertex Steps](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/vertex-steps.md): The vertex steps (out(), in(), both(), outE(), V(), etc.) move between vertices and edges and are fundamental to graph navigation. - [Where Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/where-step.md): The where()-step filters the current object based on either the object itself (Scope.local) or the path history of the object (Scope.global) (filter). - [With Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/with-step.md): The with()-step is not an actual step, but is instead a "step modulator" which modifies the behavior of the step prior to it. - [Write Step](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/reference/write-step.md): The write()-step is not really a "step" but a step modulator in that it modifies the functionality of the io()-step. ## tutorials/getting-started - [Getting Started](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/tutorials/getting-started/index.md): A beginner's tutorial introducing graphs, vertices, edges, and basic Gremlin traversals to get started with Apache TinkerPop. - [Getting Started](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/tutorials/getting-started/_getting_started.md): A beginner's tutorial introducing graphs, vertices, edges, and basic Gremlin traversals to get started with Apache TinkerPop. ## tutorials/gremlin-language-variants - [Gremlin Language Variants](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/tutorials/gremlin-language-variants/index.md): A stub tutorial that redirects to the reference documentation on Gremlin drivers and language variants. - [Gremlin Language Variants](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/tutorials/gremlin-language-variants/_gremlin_language_variants.md): A stub tutorial that redirects to the reference documentation on Gremlin drivers and language variants. ## tutorials/gremlins-anatomy - [Gremlin’s Anatomy](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/tutorials/gremlins-anatomy/index.md): A tutorial breaking down the anatomy of a Gremlin traversal — its steps, modulators, tokens, and how they compose — to build a deeper understanding of the language. - [Gremlin’s Anatomy](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/tutorials/gremlins-anatomy/_gremlins_anatomy.md): A tutorial breaking down the anatomy of a Gremlin traversal — its steps, modulators, tokens, and how they compose — to build a deeper understanding of the language. ## tutorials/the-gremlin-console - [The Gremlin Console](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/tutorials/the-gremlin-console/index.md): A tutorial on using the Gremlin Console: the interactive REPL for working with graphs, running traversals, and connecting to remote servers. - [The Gremlin Console](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/tutorials/the-gremlin-console/_the_gremlin_console.md): A tutorial on using the Gremlin Console: the interactive REPL for working with graphs, running traversals, and connecting to remote servers. ## upgrade - [TinkerPop Upgrade Information](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/index.md): Version-by-version upgrade notes for Apache TinkerPop, covering breaking changes, new features, and migration guidance for each release line from 3.0 onward. - [TinkerPop 3.0.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_0_0.md): Upgrade notes for the TinkerPop 3.0.x release line: the initial 3.x releases, their features, and migration guidance. - [TinkerPop 3.1.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_1_0.md): Upgrade notes for the TinkerPop 3.1.x release line: breaking changes, new features, and provider migration guidance across its releases. - [TinkerPop 3.2.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_2_0.md): Upgrade notes for the TinkerPop 3.2.x release line: breaking changes, new features, and provider migration guidance across its releases. - [TinkerPop 3.2.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_2_0_2.md): Upgrade notes specific to the TinkerPop 3.2.0 release: its breaking changes, new features, and changelog. - [TinkerPop 3.2.3](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_2_3.md): Upgrade notes specific to the TinkerPop 3.2.3 release: its changes and changelog. - [TinkerPop 3.3.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_3_0.md): Upgrade notes for the TinkerPop 3.3.x release line: breaking changes, new features, and provider migration guidance across its releases. - [TinkerPop 3.3.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_3_0_2.md): Upgrade notes specific to the TinkerPop 3.3.0 release: its breaking changes, new features, and changelog. - [TinkerPop 3.4.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_4_0.md): Upgrade notes for the TinkerPop 3.4.x release line: breaking changes, new features, and provider migration guidance across its releases. - [TinkerPop 3.4.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_4_0_2.md): Upgrade notes specific to the TinkerPop 3.4.0 release: its breaking changes, new features, and changelog. - [TinkerPop 3.5.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_5_0.md): Upgrade notes for the TinkerPop 3.5.x release line: breaking changes, new features, and provider migration guidance across its releases. - [TinkerPop 3.5.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_5_0_2.md): Upgrade notes specific to the TinkerPop 3.5.0 release: its breaking changes, new features, and changelog. - [TinkerPop 3.6.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_6_0.md): Upgrade notes for the TinkerPop 3.6.x release line: breaking changes, new features, and provider migration guidance across its releases. - [TinkerPop 3.7.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_7_0.md): Upgrade notes for the TinkerPop 3.7.x release line: breaking changes, new features, and provider migration guidance across its releases. - [TinkerPop 3.7.0](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_tinkerpop_3_7_0_2.md): Upgrade notes specific to the TinkerPop 3.7.0 release: its breaking changes, new features, and changelog. - [Upgrading for Providers](https://tinkerpop.apache.org/docs/3.7.7-SNAPSHOT/upgrade/_upgrading_for_providers_9.md): Provider-facing upgrade notes for TinkerPop 3.5.0: changes graph system and driver providers must account for, including server authorization and strategy changes.