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