У меня есть древовидная структура данных в виде графика, как показано на диаграмме ниже. Каждый цвет представляет узел с разными метками с отношением, например, сотрудник -> приложение -> проект -> pv -> сканирование).
Вопрос №1:
Я хочу найти все листовые узлы (зеленые) верхнего узла 0.
Я пробовал ниже код с циклом, который возвращает все узлы с меткой сотрудника. Не только листовые узлы.
g.V().has('person', 'id', '0').repeat(__.in('reportsTo')).emit().values('id')
Образец графика можно найти в gremlinbin.
Как найти все узлы с зелеными листьями?
Обновление №1:
Как упоминалось в комментариях, я попробовал шаблон дерева. Но это не позволяет мне вызывать getLeafObjects () для дерева. Не уверен, чего не хватает. Кроме того, я снова могу создать дерево только узлов сотрудников. Как пройти к узлам сканирования?
> tree = g.V().has('person', 'id', '0').repeat(__.in('reportsTo')).emit().tree()
> tree.getLeafObjects()
No signature of method: org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.getLeafObjects() is applicable for argument types: () values: []
Вопрос № 2:
Как мне получить дочернюю вершину среди дочерних элементов каждого родителя на основе max (id)? Итак, в моем примере графа каждая черная вершина может иметь одну или несколько зеленых дочерних вершин. Я хочу найти зеленые вершины с max (свойство) под каждой черной вершиной.