Gremlin: как найти другие ребра с тем же свойством

#gremlin

#гремлин

Вопрос:

У меня есть граф с двумя вершинами, имеющими идентификаторы ‘a’ и ‘b’.

gremlin> g.V()

==>v[b]

==>v[a]

Есть два ребра от ‘a’ до ‘b’.

gremlin> g.E()

==>e[a6b4bead-c161-5a61-d232-abfa2bfad54e][a-LIKES->b]

==>e[10b4bead-a0fc-8d2c-d69f-26b3e9e4c5d8][a-ЗНАЕТ->b]

gremlin> g.E().ValueMap(true)

==>{id=a6b4bead-c161-5a61-d232-abfa2bfad54e, семантика = социальная, метка = ЛАЙКИ}

==>{id=10b4bead-a0fc-8d2c-d69f-26b3e9e4c5d8, семантика = социальная, метка = ЗНАЕТ}

Мой вопрос: учитывая идентификатор для одного из ребер, я хотел бы найти все остальные ребра с тем же значением для свойства «семантика». Например, учитывая a.LIKES.id Я хотел бы выполнить запрос, который вернет a.KNOWS, используя значение a.LIKES.semantics.

Я начал с:

например(‘a6b4bead-c161-5a61-d232-abfa2bfad54e’) .property(‘семантика’).as(‘семантика’)…вот где я застрял

Спасибо, Джоэл

Комментарии:

1. Вы хотите рассмотреть все ребра в графике или только ребра, которые инцидентны a (и / или b )?

2. только те, которые соответствуют ‘a’

Ответ №1:

where() в сочетании с by() модулятором выполнит эту работу:

 g.E('a6b4bead-c161-5a61-d232-abfa2bfad54e').as('e').
  outV().inE().
  where(eq('e')).by('semantics'). // return edges with the same semantics property value
  where(neq('e'))                 // ... except the one we started with