If you've been following this list for some time now you have probably seen some prior posts mentioning sparql-gremlin. Now that 3.4.0 is here, that module is now officially available for use and represents a major new feature for Apache TinkerPop. This module converts SPARQL queries to Gremlin bytecode so that SPARQL can be executed on any TinkerPop-enabled graph system. Here's an example taken from the documentation:
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal(SparqlTraversalSource)
==>sparqltraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.sparql("""SELECT ?name ?age
WHERE { ?person v:name ?name . ?person v:age ?age }
ORDER BY ASC(?age)""")
==>[name:vadas,age:27]
==>[name:marko,age:29]
==>[name:josh,age:32]
==>[name:peter,age:35]
You can read more about this feature here:
Also note that sparql-gremlin is a reference implementation for Gremlin Compilers. Just as it is possible to convert the SPARQL query language to Gremlin bytecode, it is equally possible to apply the same conversion tactic to other query languages (like Cypher or perhaps it's successor GQL). While this represents yet more choice for users within the TinkerPop ecosystem, it is massively helpful to graph providers who implement TinkerPop in some way as they become insulated from having to support different execution engines beyond Gremlin's and can still have wide support of whatever query languages that users want.
At this time, sparql-gremlin works best with the JVM and there is no implementation for language variants (i.e. js, python and .NET). We still need to determine how best to implement this capability in the language variant context.