Link types
Typed edges between object types — how relationships are projected at query time, not modelled as a separate store.
A link type defines a typed relationship between two object types: Customer → owns → Account, Transaction → involves → RegulatedEntity, RegulatedEntity → supervisedBy → Regulator.
Links are projected at query time from the underlying joining structure. The platform doesn't maintain a separate "edges" store you have to keep in sync — instead, each link type declares how its rows are derived from the source data.
Anatomy
| Field | Purpose |
|---|---|
id | The link type's identifier (e.g. owns). |
from | The source object type (Customer). |
to | The target object type (Account). |
cardinality | One of one-to-one, one-to-many, many-to-many. |
binding | How rows are derived. |
Where links come from
Three common patterns:
Joining column
A column on the source table holds the target's identity:
LinkType: "supervisedBy"
from: RegulatedEntity
to: Regulator
cardinality: many-to-one
binding:
source: silver_table (regulated_entities)
fromKey: id
toKey: primary_regulator_idJoin table
A separate table holds (sourceId, targetId) pairs:
LinkType: "owns"
from: Customer
to: Account
cardinality: many-to-many
binding:
source: silver_table (customers_accounts)
fromKey: customer_id
toKey: account_idCross-store
Source and target live in different stores (e.g. a managed table on one side, a knowledge-base page on the other):
LinkType: "documentedIn"
from: RegulatedEntity
to: KbPage
cardinality: many-to-many
binding:
source: silver_table (entity_documents)
fromKey: entity_id
toKey: document_slugTraversal
From a workflow or the analyst, traversing a link is a typed operation:
Traverse Ontology Linkstool — given an instance ID and a link type, returns the connected instances (paginated, masking-applied).- Graph view — renders the projected graph for the selected instance and one hop out.
Both go through the same projection path; the result respects the caller's classification, masks, and row filters.
Performance
Link traversal is bounded by the underlying join. If the joining table is large, paginate.
- The default page size is 100.
- The maximum page size is 1,000.
- Multi-hop traversal (e.g. "find me all customers of regulated entities supervised by regulator X") is supported but is a separate query against the context engine — the platform doesn't blindly walk arbitrary depths.
Related
- Object types — the nodes.
- Bindings — where the join data comes from.
- Using in workflows — the workflow tools.