Я пытаюсь написать запрос, который извлекает все пути, достижимые из указанной вершины. Другими словами, я пытаюсь получить весь кластер / подграф, к которому подключена вершина. Еще пара ограничений на запрос:
- внутренние ребра должны быть пройдены и включены в результат (я ищу все пути, которые каким-либо образом связаны с корневой вершиной.
- поиск должен останавливаться на указанной глубине, скажем, в 10 шагах от корневой вершины.
- Бонусное ограничение: я бы предпочел, чтобы результат не включал пути, которые являются полными подпутьями других путей, возвращаемых в результате.
В настоящее время у меня есть следующие два запроса, которые, похоже, работают с небольшими игрушечными графами, на которых я их тестировал. Однако в нашем большом производственном графе, похоже, есть некоторые граничные случаи, которые не возвращают все пути / ребра / вершины, которые я ожидал бы, но я не могу объяснить, почему это происходит. Два запроса также иногда возвращают несколько отличных друг от друга вершин.
Я бы предпочел свежий взгляд на то, как подойти к этому запросу, а не пытаться настроить то, что у меня есть в настоящее время, поэтому, пожалуйста, попробуйте предоставить решение, прежде чем смотреть на мое текущее решение ниже.
Запрос 1:
gV (uid) .repeat (bothE (). bothV (). simplePath ()). until (loops (). is_ (10)). emit (). dedup (). path (). by (valueMap (True) )
Запрос 2:
gV (uid) .repeat (bothE (). bothV (). simplePath ()). until (bothE (). simplePath (). count (). is_ (0) .or _ (). loops (). is_ (10 )). dedup (). path (). by (valueMap (True))
.subgraph()
? - person KOB   schedule 15.09.2020subgraph
, который вернет подграф, посещенный запросом yes - так что в качестве альтернативыpath
вы можете выбрать возврат подграфа, если вы хотите исключить любую часть пути, дублирующуюся. - person Kelvin Lawrence   schedule 15.09.2020path
, так иsubgraph
- person Kelvin Lawrence   schedule 15.09.2020