Hi All,

There are a number of useful operations that Gremlin users often wish to
perform that are not provided today in the form of traversal steps or
predicates (P/TextP). For historical reasons these functions were omitted
and users were able to accomplish these tasks by specifying anonymous code
blocks or “closures” to perform these tasks. For example, below is an
example of how you can achieve a case-insensitive search for any cities
that contain “Miami”.

g.V().hasLabel('city').

has('name',filter{it.get().toLowerCase().contains('Miami'.toLowerCase())})

While this is a powerful fallback mechanism in Gremlin to handle use cases
where there is no functionality within the Gremlin language to meet the
requirements. However, for a variety of reasons such as security and
performance, many/most remote providers of TinkerPop do not allow users to
execute closures as part of a query. This leaves users with a problem, as
the mechanism provided to solve these sorts of use cases is not allowed. I
have come up with a proposed framework for removing the need for closures
by adding the most commonly requested functions as new Gremlin steps.
Below is a proposal to highlight this and propose a first set of these
steps for string manipulation, list manipulation, and data manipulation.

What are your thoughts on this approach?
Any items we missed?
Concerns?

Thanks,
Dave

Reply via email to