Janusgraph - Как скрыть отношение краев между двумя вершинами и установить / получить заново на основе условия? - PullRequest
1 голос
/ 25 июня 2019

Я новичок в базе данных Janusgraph.У меня есть требование, когда мне нужно скрыть отношение (ребро) между двумя вершинами, не отбрасывая их, и позже я смогу снова получить / установить такое же отношение между этими вершинами на основе условия.

Я знаю только, какопустить края, но я не знаю, как восстановить / восстановить связь снова.Не могли бы вы помочь мне здесь.

Большое спасибо за ваше время.

1 Ответ

3 голосов
/ 25 июня 2019

Если вы хотите «восстановить» соединения, я думаю, вы не должны их вообще отбрасывать.

Просто сохраните свойство на краю, которое указывает состояние края (активное / неактивное) или, возможно, сохраните дату начала и окончания на краю. Таким образом, когда вы пересекаете свой график, вам нужно убедиться, что используются только активные ребра, но старые все равно легко найти, если вы хотите восстановить их.

например:

g.addV('person').property('id', 'bob').property('name', 'Bob')
g.addV('person').property('id', 'alice').property('name', 'Alice')
g.addV('person').property('id', 'eve').property('name', 'Eve')
g.V('bob').addE('friend').to(g.V('alice'))
g.V('bob').addE('friend').to(g.V('eve'))

Итак, Боб дружит с Алисой и Евой:

g.V('bob').out('friend').values("name")
==>Alice
==>Eve

Допустим, у Боба и Алисы произошел конфликт, и они больше не друзья:

g.V('bob').outE('friend').where(inV().hasId('alice')).property('status', 'inactive')

теперь вы можете запрашивать только активных друзей Боба, не отбрасывая старые грани:

g.V('bob').outE('friend').not(has('status', 'inactive')).inV().values("name")
==> Eve
...