Я постараюсь объяснить проблему... после выполнения:
delete edge SOME_EDGE from (select from SourceNode where foo=bar) to (select from TargetNode where foo=bar)
Когда последняя ссылка на ребро удаляется, имя типа все еще сохраняется в SomeClass с пустым списком, т.е.:
"out_SOME_EDGE": []
Аналогично in_SOME_EDGE и обратное отношение.
Затем при выполнении запроса:
select from SourceNode where out_SOME_EDGE is not null
эти классы с пустыми ссылками списка все еще возвращаются.
Очевидно
select from SourceNode where out_SOME_EDGE=[]
ничего не делает. Как я могу найти и/или удалить эти устаревшие/пустые ссылки на ребра?
update SourceNode remove out_SOME_EDGE where out_SOME_EDGE is not null
update TargetNode remove in_SOME_EDGE where in_SOME_EDGE is not null
работает, конечно, но это не лучший способ, поскольку TargetNode все еще может иметь действительные ссылки.
Чем глубже я пытаюсь найти решение, тем больше кажется ошибкой то, что вершинам разрешено иметь ребра с пустыми списками ссылок, или что эти ребра не удаляются при удалении последней целевой ссылки.