Good day. I would like to share with you our ideas regarding the implementation of the match step and GQL queries.
Initially, we thought of implementing our own version of the match step first. However, such an approach leads to an increased risk of greater fragmentation within the graph community. Therefore, we decided to contribute to the implementation of match to the TinkerPop project and subsequently create our own version based on this implementation. That obviously implies coordination with the core TinkerPop team. We believe our implementation should be divided into the following steps. 1. Initially, we create a specification of GQL supported by Gremlin, as that will be only a subset of the whole GQL language. Here is a trick: if we create and implement the specification as a whole, it may take figuratively years for us to provide the final version. Instead, we want to split it into several parts. Currently, we see three parts that will be implemented separately through iterations: a. Filtering by node label and relations. b. Addition of conditional filtering. c. support of GQL functions. The specification will be created as a whole but will be split by iterations. After the final iteration, a new specification will be created that merges all the parts together in a more understandable manner. 2. Then we create a semantic specification of the match step as was suggested by Stephen Mallette https://github.com/apache/tinkerpop/blob/master/docs/src/dev/provider/gremlin-semantics.asciidoc . 3. We create a public fork/branch of the TinkerPop project, invite everybody who wants to help, and start our implementation by iterations. 4. Once it is ready, we will incorporate it into our project (YouTrackDB) and provide a version tailored for our database internals. WDYT?
