Если вы хотите «восстановить» соединения, я думаю, вы не должны их вообще отбрасывать.
Просто сохраните свойство на краю, которое указывает состояние края (активное / неактивное) или, возможно, сохраните дату начала и окончания на краю.
Таким образом, когда вы пересекаете свой график, вам нужно убедиться, что используются только активные ребра, но старые все равно легко найти, если вы хотите восстановить их.
например:
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