Behaviour for graph storage backends.
Default implementation uses PostgreSQL recursive CTEs. Can be swapped for KuzuDB, Apache AGE, or other graph stores.
Summary
Types
Callbacks
@callback get_neighbors( owner_id :: String.t(), entity_id :: String.t(), hops :: pos_integer() ) :: {:ok, [entity()]} | {:error, term()}
Get entities within N hops of a starting entity.
@callback get_relations(owner_id :: String.t(), entity_id :: String.t()) :: {:ok, [relation()]} | {:error, term()}
Get all relations involving an entity.