Сценарий
Gremlin — это язык обхода графов в открытом исходном графовом вычислительном фреймворке Apache TinkerPop. Вы можете использовать Gremlin для запросов, изменения и обхода графовых данных, а также фильтрации свойств.
Процедура
- Войдите в графический редактор GES. Для подробностей смотрите Доступ к графическому редактору GES.
- В области запросов графовых данных щёлкните кнопку раскрывающегося списка, чтобы выбрать запрос Gremlin. Введите оператор запроса и нажмите Enter для выполнения оператора.
Рисунок 1 Переключение на запрос Gremlin

Оператор Gremlin
Типичные команды запросов выглядят следующим образом:
- Запрос вершин
g.V().limit(100): Эта команда используется для запроса всех вершин и возврата только 100 вершин. Вы также можете использовать range (x, y) оператор для получения вершин в пределах указанного количества.
g.V().hasLabel('movie'): Эта команда используется для запроса вершин, значение метки которых равно movie.
g.V('11'): Эта команда используется для запроса вершины, чей ID равен 11.
Note- Эта g.V () не рекомендуется, поскольку результат запроса может не полностью отображаться, если масштаб вершин велик.
- Чтобы предотвратить тайм‑аут запроса из‑за большого объёма данных, добавьте limit параметр и укажите значение меньше чем 1,000.
- Запрос ребер
g.E(): Эта команда используется для запроса всех ребер. Не рекомендуется использовать эту команду без критериев фильтрации или ограничения возвращаемых результатов.
g.E('55-81-5'): Эта команда запрашивает ребро, чей ID равен 55-81-5.
g.E().hasLabel('rate'): Эта команда запрашивает ребра, значение метки которых равно rate.
g.V('46').outE('rate'): Эта команда запрашивает ребро, чей ID равен 46 и все его метки rate.
- Запрос свойств
g.V().limit(3).valueMap(): Эта команда используется для запроса всех свойств вершины. (Можно указать параметр для запроса только одной вершины. Все свойства вершины будут отображаться в одной строке.)
g.V().limit(1).label(): Эта команда используется для запроса метки вершины.
g.V().limit(10).values('userid'): Эта команда используется для запроса имя свойство вершины. (Можно оставить параметр пустым, чтобы запросить все свойства. Каждое значение свойства отображается в одной строке без ключа).
- Добавление вершины
g.addV('user').property(id,'600').property('age','18-24'): Эта команда добавляет вершину, метка которой пользователь, ID равен 600, а возраст варьируется от 18 по 24.
- Удаление вершины
g.V('600').drop(): Эта команда удаляет вершину с идентификатором 600.
- Добавление ребра
g.addV('user').property(id,'501').property('age','18-24')
g.addV('movie').property(id,'502').property('title','love')
g.addE('rate').property('Rating', '4').from(V('501')).to(V('502'))
Предыдущие команды добавляют две вершины и ребро. Идентификаторы двух вершин: 501 и 502.
- Удаление ребра
g.E('501-502-0').drop(): Эта команда удаляет ребро с идентификатором 501-502-0.
- Вы можете нажимать клавиши со стрелками вверх и вниз в текстовом поле, чтобы просматривать ранее выполненные запросы.
- Когда вы вводите ключевое слово синтаксиса, система автоматически отображает исторические запросы с тем же ключевым словом.
Рисунок 2 Исторические запросы

- Ключевые слова в текстовом поле отображаются разными цветами.
- Зарезервированные слова серым цветом
Примечание: зарезервированное слово предопределено в синтаксической системе языка программирования. Зарезервированные слова различаются в зависимости от языков программирования.
- Строковые значения оранжевым
- Разделители красным. Обычные разделители, включая квадратные скобки [], фигурные скобки {}, круглые скобки (), запятые (,), и точки с запятой (;).
- Переменные в зелёном
Рисунок 3 Ключевые слова Gremlin

- Зарезервированные слова серым цветом
Оптимизация синтаксиса Gremlin
GES интегрирует OLTP‑функцию Gremlin, улучшает некоторые возможности и оптимизирует стратегию.
- Улучшенный текстовый предикат
g.V().has('name', Text.textSubString('xx'))
Предикат
Описание
textSubString
Подстрока
textCISubString
Подстрока без учёта регистра
textFuzzy
Нечеткое совпадение
textPrefix
Префиксный запрос
textRegex
Сопоставление с регулярным выражением
NoteПри указании схемы не задавайте имена атрибутов ид, метка, свойство, или свойства.
Когда вы выполняете запросы Gremlin с множеством шагов, результаты будут преобразованы в карту. Два одинаковых ключа не допускаются в структуре карты. Если в карту вставляются несколько одинаковых ключей, значение ключа будет перезаписано или эта операция будет отменена. Если вы задаёте имя атрибута ид, метка, свойство, или свойства, возвращаемые результаты будут неполными, потому что во многих запросах ID графа возвращается вместе с ID атрибута.
Ссылка
Таблица 1 показывает, как Gremlin в GES отличается от Gremlin с открытым исходным кодом.
Различие | Описание |
|---|---|
Идентификаторы вершин и ребер | Идентификатор ребра состоит из идентификатора исходной вершины, идентификатора целевой вершины и индекса, который отличает дублирующие ребра. Три части соединяются дефисами (-), например, sid-tid-index. Идентификаторы ребер и вершин должны быть строкового типа. |
Пользовательские идентификаторы | Пользователи могут указывать только идентификаторы вершин без дефисов (-). |
Идентификаторы свойств вершин | Свойства ребер и вершин не имеют идентификаторов. Возвращаемые идентификаторы – идентификаторы вершин. |
Свойство вершины и ребра | Свойства вершин и ребер определяются метаданными в GES. Поэтому вы не можете добавлять или удалять свойства, но можете использовать property() и remove() для изменения значений свойств. Значение, установленное property() определяется соответствующим параметром. remove() преобразует строковые свойства в пустые строки, цифровые свойства в 0 и списковые свойства в пустые списки. |
Переменные | Структура графа GES не поддерживает переменные функцию. |
Кардинальность | GES поддерживает одиночную и списковую кардинальность. Тип значения свойства вершины определяется файлом метаданных. Поэтому новое свойство не добавляется, когда вы задаёте значение свойства. |
Транзакции | Во время реализации GES Gremlin транзакции не используются явно. |
Вы можете использовать функцию функцию для просмотра поддерживаемых возможностей Gremlin. Если false отображается, GES не поддерживает эту функцию. Если true отображается, GES поддерживает эту функцию.
gremlin> graph.features()==>FEATURES
В настоящее время следующие команды шага не поддерживаются:
- tryNext()
- explain()
- tree()
- Сценарий
- Процедура
- Gremlin Statement
- Gremlin Syntax Optimization
- Ссылка