JanusGraph uses Gremlin graph query language to retrieve data from and modify data in the graph. Gremlin is a functional language whereby traversal operators are chained together to form path-like expressions, expressing query or data modification on graphs.
A Gremlin query is a chain of operations/functions that are evaluated from left to right. A simple example of gremlin language to query the name of Alex's grandson on his genealogy graph is provided below
g.V().has('name', 'Alex').out('father').out('father').values('name')
The query can be read as
g: for the current graph
V: for the vertices in the graph
has('name', 'Alex'): filters the vertices down to those with the "name" property "Alex"
out('father'): traverse outgoing through edges whose type is "father" from "Alex" (Notice here the result can be more than one vertices)
out('father'): traverse outgoing through edges whose type is "father" from "Alex"' son (the result from the last traversal)
values('name'): get the property of "name"
https://github.com/JanusGraph/janusgraph/
https://docs.janusgraph.org/latest/
The Linux Foundation
2012
Titan
DataStax