Over the weekend, I experimented a bit with this proposal from Andrii, that was of positive discussion on this list a few months back, that helped bring some formality to the idea of making match() step take any declarative query language (like GQL) such that its results would be returned into a Gremlin traversal stream :
https://github.com/apache/tinkerpop/blob/master/docs/src/dev/future/proposal-declarative-match-step-9.asciidoc I have the basics of it working: gremlin> g.match("MATCH (a:person)-[:knows]->(b:person)").select("a","b") ==>[a:v[1],b:v[2]] ==>[a:v[1],b:v[4]] gremlin> g.match("MATCH (a:person)-[:knows]->(b:person)").select("a","b").by('name') ==>[a:marko,b:vadas] ==>[a:marko,b:josh] gremlin> g.match("MATCH (a:person)-[:knows]->(b:person), (b)-[:created]->(s:software)"). ......1> select("a","b","s").by("name").by("name").by("name") ==>[a:marko,b:josh,s:lop] ==>[a:marko,b:josh,s:ripple] initially, I think this feature will come with the added restriction that match() is a provider implemented step for 4.0. In other words, there won't be generic support provided by the TinkerPop query processing engine. At least, that would not be the initial main goal. It could however be reserved for a future goal that arrives for 4.1 or some other later version. For 4.0, the focus would be a basic implementation for TinkerGraph only with a simple "TinkerGQL" grammar (i.e. a subset supported by TinkerGraph that focuses on pattern matching and basic filtering). I think that with these sorts of restrictions, this feature can comfortably land for 4.0 among the myriad of other things 4.0 will contain. It will allow both provider and user feedback on the feature in general and help set the stage for future work in this area. It will take a few days yet to get this to a PR stage - in the meantime please let me know if you have any thoughts on this.
