Good day, TP team.
To implement this feature, we need to update ANTLR to the latest version.
Do you have any objections ?
If not, we will provide PR soon.

On Mon, Jan 19, 2026 at 4:39 PM Andrii Lomakin <[email protected]>
wrote:

> Good day.
> As part of our efforts to implement GQL, we started working on this issue:
> https://youtrack.jetbrains.com/issue/YTDB-505/Implement-the-ability-to-convert-non-standard-method-calls-into-the-registered-service-calls
> .
> Sandra will provide PR once it is ready.
>
> On Fri, Nov 21, 2025 at 1:52 PM Andrii Lomakin <[email protected]>
> wrote:
>
>> Good day,
>>
>> Following up on Ken's point about the discrepancy between scripts and
>> traversals, I have an alternative idea that could resolve this issue, in
>> addition to the proposal I mentioned in the other thread.
>>
>> The proposal is to introduce a mechanism that allows a user to create a
>> part of a graph traversal in script form, such as:
>> `g.gScript("V(id).hasName()")`
>>
>> The responsibility for handling this script would then fall to the GLV,
>> which would have two primary options:
>>
>> 1. Pass the script string to the server for parsing.
>> 2. Convert the script to local steps before passing the steps to the
>> server
>> (my preferred approach).
>>
>> For the latter, a more advanced option could be available for vendors
>> working on Java: they could use a ClassLoader to dynamically download the
>> vendor’s JAR from Gremlin Server into the client’s classpath. If this
>> approach were adopted, the ClassLoading mechanism would need to become a
>> formal part of the Gremlin Server protocol, as the vendor does not control
>> the client at this stage.
>>
>> This dynamic approach could also address issues related to custom
>> serializers, though it would likely only be applicable to Java and other
>> dynamic languages, and not to languages like Go. However, for drivers such
>> as .NET, JavaScript, and Python, a similar level of abstraction could
>> potentially be implemented within the protocol to achieve the same result.
>>
>> Best regards,
>>
>> Andrii Lomakin
>> YouTrackDB development lead.
>>
>> On Thu, Nov 20, 2025 at 7:09 PM Ken Hu <[email protected]> wrote:
>>
>> > I think the initial challenge that I pointed out still exists, which is,
>> > scripts and traversals won't have the same capabilities out-of-the-box.
>> > Again, I'm in favor of this proposal and would like to see it
>> implemented.
>> > All I'm trying to say is, can we also come up with an equivalent
>> proposal
>> > for remote traversals.
>> >
>> > On Thu, Nov 20, 2025 at 5:18 AM Stephen Mallette <[email protected]>
>> > wrote:
>> >
>> > > I think Ken provides a good point to consider about external
>> > dependencies.
>> > > Andrii, for further context, traditionally, we've found that users
>> tend
>> > to
>> > > expect TinkerPop to just work with any provider. They want to
>> download a
>> > > driver in their programming language and get to work writing their
>> > > applications. What they have found is that in some cases it's not
>> quite
>> > as
>> > > easy as that. For example, Ken alludes to the serializers where users
>> > often
>> > > learn in a very hard way that if they use JanusGraph they need to add
>> in
>> > a
>> > > customer serializer for certain operations to work. We've made it a
>> goal
>> > > for TinkerPop 4.x to not require TinkerPop drivers to have those
>> kinds of
>> > > dependencies that complicate the user experience.
>> > >
>> > > I think in this case, a DSL offers as a separate dependency by a
>> provider
>> > > doesn't exactly conflict with this goal because the DSL simply
>> enhances
>> > the
>> > > experience the user has, but doesn't require it for standard TinkerPop
>> > > features to work. A user could even fallback to raw call() steps
>> without
>> > > using the DSL at all and still access the same functionality. The DSL
>> is
>> > > merely a (highly useful) convenience in this case. Ken, do you think
>> that
>> > > perspective helps align this idea to the goal of trying to keep things
>> > > working out-of-the-box?
>> > >
>> > > On Wed, Nov 19, 2025 at 12:25 PM Ken Hu <[email protected]> wrote:
>> > >
>> > > > That's not necessarily the case. If you think that there are users
>> that
>> > > > don't mind doing that then it is fine. I've just seen questions from
>> > > users
>> > > > in the past about how to make the GLV work with specific providers
>> > > because
>> > > > they didn't realize they needed additional dependencies and where to
>> > find
>> > > > those dependencies. I'm just wondering how and if it impacts user
>> > > > experience.
>> > > >
>> > > > On Wed, Nov 19, 2025 at 9:18 AM Andrii Lomakin
>> > > > <[email protected]> wrote:
>> > > >
>> > > > > Is my understanding correct that you don't support this change if
>> it
>> > > > > requires additional dependencies from vendor ?
>> > > > >
>> > > > > On Wed, 19 Nov 2025, 17:51 Ken Hu, <[email protected]> wrote:
>> > > > >
>> > > > > > I don't think this proposal requires custom serializers. I was
>> > trying
>> > > > to
>> > > > > > say that based on my understanding of this proposal, there may
>> be
>> > an
>> > > > > issue
>> > > > > > that is similar to the one we see with custom serializers. That
>> > issue
>> > > > > > being, how is this custom provider DSL packaged with the GLV so
>> > that
>> > > > > users
>> > > > > > can gain access to those additional methods in remote traversals
>> > > > without
>> > > > > > needing to add an additional dependency from the provider
>> itself?
>> > > > > >
>> > > > > > On Tue, Nov 18, 2025 at 10:46 PM Andrii Lomakin
>> > > > > > <[email protected]> wrote:
>> > > > > >
>> > > > > > > Good day, Ken.
>> > > > > > >
>> > > > > > > Could you clarify why you think that this proposal requires
>> > custom
>> > > > > > > serializers?
>> > > > > > >
>> > > > > > > On Tue, Nov 18, 2025 at 11:39 PM Ken Hu <[email protected]>
>> > > wrote:
>> > > > > > >
>> > > > > > > > I guess I'm still not certain how this DSL would get
>> packaged
>> > > with
>> > > > > the
>> > > > > > > > GLVs. One of the situations I'm trying to avoid is the one
>> we
>> > > face
>> > > > > with
>> > > > > > > > custom type serialization. Providers with custom types
>> > generally
>> > > > need
>> > > > > > to
>> > > > > > > > package their serializers as a separate module which users
>> of
>> > the
>> > > > GLV
>> > > > > > > will
>> > > > > > > > then add as a dependency. This creates confusion for users
>> as
>> > > they
>> > > > > > aren't
>> > > > > > > > able to just use the GLV by itself. They need to grab an
>> > > additional
>> > > > > > > > dependency from their provider as well. It isn't always
>> clear
>> > to
>> > > > them
>> > > > > > > that
>> > > > > > > > this is the case.
>> > > > > > > >
>> > > > > > > > On Fri, Nov 14, 2025 at 10:04 AM Andrii Lomakin <
>> > > > > > > [email protected]>
>> > > > > > > > wrote:
>> > > > > > > >
>> > > > > > > > > Hi Ken,
>> > > > > > > > >
>> > > > > > > > > To clarify, the functionality you mentioned regarding
>> remote
>> > > > > > Traversal
>> > > > > > > > > from a GLV is already fully supported by TinkerPop.
>> > > > > > > > >
>> > > > > > > > > While there are some current issues with the DSL
>> processor,
>> > > they
>> > > > > are
>> > > > > > > > > implementation details that we intend to resolve through
>> the
>> > > > > > > > > contribution of our version of an annotation processor,
>> which
>> > > > will
>> > > > > > not
>> > > > > > > > > require any changes to the TinkerPop documentation.
>> > > > > > > > >
>> > > > > > > > > For a concrete example of our implementation of DSL,
>> please
>> > see
>> > > > the
>> > > > > > > > > following:
>> > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://github.com/JetBrains/youtrackdb/blob/develop/core/src/main/java/com/jetbrains/youtrackdb/api/gremlin/YTDBGraphTraversalDSL.java
>> > > > > > > > > (
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://github.com/JetBrains/youtrackdb/blob/develop/core/src/main/java/com/jetbrains/youtrackdb/api/gremlin/YTDBGraphTraversalDSL.java
>> > > > > > > > > )
>> > > > > > > > >
>> > > > > > > > > Andrii Lomakin,
>> > > > > > > > > YouTrackDB development lead.
>> > > > > > > > >
>> > > > > > > > > On Fri, Nov 14, 2025 at 6:59 PM Andrii Lomakin <
>> > > > > > > [email protected]
>> > > > > > > > >
>> > > > > > > > > wrote:
>> > > > > > > > > >
>> > > > > > > > > > Hi Ken,
>> > > > > > > > > >
>> > > > > > > > > > The scenario you described regarding remote Traversal
>> from
>> > a
>> > > > GLV
>> > > > > is
>> > > > > > > > > > automatically handled.
>> > > > > > > > > >
>> > > > > > > > > > The GLV would provide code similar to the existing
>> > > > implementation
>> > > > > > we
>> > > > > > > > > > already have, which can be found here:
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://github.com/JetBrains/youtrackdb/blob/develop/core/src/main/java/com/jetbrains/youtrackdb/api/gremlin/YTDBGraphTraversalSourceDSL.java#L95
>> > > > > > > > > >
>> > > > > > > > > > Andrii Lomakin,
>> > > > > > > > > > YouTrackDB development lead.
>> > > > > > > > > >
>> > > > > > > > > > On Fri, Nov 14, 2025 at 6:40 PM Ken Hu <
>> [email protected]
>> > >
>> > > > > wrote:
>> > > > > > > > > > >
>> > > > > > > > > > > What does this mean if someone tries to send a remote
>> > > > Traversal
>> > > > > > > from
>> > > > > > > > a
>> > > > > > > > > GLV?
>> > > > > > > > > > > I'm guessing that is what makes "1. Providing DSL that
>> > does
>> > > > the
>> > > > > > > same
>> > > > > > > > > call"
>> > > > > > > > > > > necessary. I think that scripts and traversals need to
>> > have
>> > > > the
>> > > > > > > same
>> > > > > > > > > > > capabilities "out of the box" when using the GLVs. So
>> > > while I
>> > > > > > think
>> > > > > > > > > this is
>> > > > > > > > > > > a good idea, I would also like to see a proposal on
>> what
>> > > can
>> > > > be
>> > > > > > > done
>> > > > > > > > > for
>> > > > > > > > > > > remote Traversals.
>> > > > > > > > > > >
>> > > > > > > > > > > On Thu, Nov 6, 2025 at 9:47 AM Andrea Child
>> > > > > > > > > > > <[email protected]> wrote:
>> > > > > > > > > > >
>> > > > > > > > > > > > Hi Andrii,
>> > > > > > > > > > > >
>> > > > > > > > > > > > I like your idea as it would improve readability of
>> > > > > traversals
>> > > > > > to
>> > > > > > > > be
>> > > > > > > > > able
>> > > > > > > > > > > > to reference the service directly in the grammar
>> > instead
>> > > of
>> > > > > via
>> > > > > > > the
>> > > > > > > > > call
>> > > > > > > > > > > > step. Looking forward to the contribution!
>> > > > > > > > > > > >
>> > > > > > > > > > > > Andrea
>> > > > > > > > > > > >
>> > > > > > > > > > > > From: Andrii Lomakin <[email protected]
>> > > > .INVALID>
>> > > > > > > > > > > > Date: Wednesday, November 5, 2025 at 8:15 AM
>> > > > > > > > > > > > To: [email protected] <
>> [email protected]
>> > >
>> > > > > > > > > > > > Subject: Proposal: Intorduction of equalence between
>> > > > > > > > > call(serviceName,
>> > > > > > > > > > > > args:List) and method call in scripts
>> > > > > > > > > > > >
>> > > > > > > > > > > > Good day, colleagues.
>> > > > > > > > > > > >
>> > > > > > > > > > > > I would like to propose an approach to enhancing the
>> > > > > > > extensibility
>> > > > > > > > > of the
>> > > > > > > > > > > > Gremlin script, which, although it does not solve
>> all
>> > > > > problems,
>> > > > > > > > will
>> > > > > > > > > make
>> > > > > > > > > > > > many Gremlin extensions feel native.
>> > > > > > > > > > > > The Idea, as you may have already guessed from the
>> > title,
>> > > > is
>> > > > > > > > simple:
>> > > > > > > > > if a
>> > > > > > > > > > > > service is registered in TinkerPop to treat it as a
>> > > method
>> > > > > call
>> > > > > > > > with
>> > > > > > > > > > > > parameters, such as args: List<Object> as an
>> argument.
>> > > > > > > > > > > >
>> > > > > > > > > > > > So call like: g.schemClass("User") will be
>> translated
>> > to
>> > > > > > > > > > > > g.call("schemaClass", "args" : ["User])
>> > > > > > > > > > > >
>> > > > > > > > > > > > In such a case, providers will extend Gremlin
>> twofold:
>> > > > > > > > > > > > 1. Providing DSL that does the same call.
>> > > > > > > > > > > > 2. Registering related service.
>> > > > > > > > > > > >
>> > > > > > > > > > > > If you agree with this proposal, I would be glad to
>> > > > > contribute
>> > > > > > > it,
>> > > > > > > > > as I
>> > > > > > > > > > > > mentioned, it does not solve all issues, such as the
>> > > usage
>> > > > of
>> > > > > > > > custom
>> > > > > > > > > > > > predicates, but I am under the impression that it
>> can
>> > be
>> > > > > > extended
>> > > > > > > > to
>> > > > > > > > > that
>> > > > > > > > > > > > case too in the future.
>> > > > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>
>
> --
> Andrii Lomakin
> YouTrackDB development lead
>


-- 
Andrii Lomakin
YouTrackDB development lead

Reply via email to