fix: use link objects instead of IDs in graph model