Ограничения для графовых моделей - PullRequest
0 голосов
/ 10 мая 2018

У меня есть четыре возможных цепочки, которые могут быть сформированы из 6 различных звеньев цепи:

 G0 -> G1 -> G2
 E0 -> E1 -> E2
 G0 -> E1 -> G2
 E0 -> G1 -> G2

Теперь я хочу выразить эти четыре цепочки, используя графовую модель, которая будет выглядеть следующим образом:

enter image description here

Если я использую язык запросов графа для запроса, например, дам мне все пути с G0 в качестве первой вершины и E2 в качестве последней вершины, я получу путь G0 -> E1 -> E2, который не является допустимым путем или цепочкой из четыре ...

Итак, мой вопрос: есть ли возможность выразить такие ограничения так, что я получаю только «действительные» пути?

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Я не понимаю, почему вы говорите, что путь G0 -> E1 -> E2 недействителен. По вашему определению, это должен быть единственный допустимый путь. Этот запрос должен вернуть желаемый результат:

g.V(G0).               /* G0 as first vertex */
  repeat(out()).
    until(__.is(E2)).  /* E2 as last vertex  */
  path()               /* all paths          */
0 голосов
/ 10 мая 2018

В девизе самое простое решение, как правило, лучшее, я бы сделал это.

1) Для каждой цепочки создайте узел, представляющий эту цепочку.

2) Создайтеотношение от этого узла к каждому узлу в цепочке, и добавьте свойство индекса в отношении.(Вы можете использовать отношение первый / конец для первого и последнего элемента или добавить его как свойство для более простых Cyphers)

3) Вместо этого запустите Cyphers на ваших «цепочечных» узлах.

Любой другой способ сделать это сделает Cypher слишком сложным или рискует испортить ваши исходные данные до такой степени, что они пригодны для использования ячменя.Это самая простая и гибкая настройка.

...