Cypher - это декларативный язык запросов для запросов к базам данных графов. Термин декларативный важен, потому что это другой способ программирования, чем такие парадигмы программирования, как императив.
В декларативном языке запросов, таком как Cypher и SQL, мы сообщаем базовому механизму, какие данные мы хотим получить, и не указываем, как мы хотим получать эти данные.
В Cypher пользователь определяет интересующий подграф в предложении MATCH. Затем базовая машина запускает алгоритм сопоставления с образцом для поиска похожих вхождений подграфа в базе данных графов.
Gremlin имеет декларативную и императивную функции. Это язык обхода графа, где пользователь должен дать явные инструкции относительно того, как перемещаться по графу.
Разница между этими языками в данном случае заключается в том, что в Cypher мы можем использовать звездообразный оператор Клини для поиска путей между любыми двумя заданными узлами в базе данных графа. Однако в Gremlin мы должны явно определить все такие пути. Но мы можем использовать оператор повтора в Gremlin, чтобы найти несколько вхождений таких явных путей в базе данных графов. Однако выполнение итераций над явными структурами в Cypher невозможно.