Unify Logo Footer.svg
Unify Data
Logo
Context Graph Builder

Context Graph Builder

Logo

4 mins read READ

The Context Graph Builder is the visual canvas where you see your schema as a graph and draw the relationships — called edges — that connect your node types together. It lives on the Graph tab of the Enterprise Context Graph, alongside a dedicated Edges tab for managing relationships as a list.

Overview

Open the Graph tab and your schema renders as an interactive canvas inside a framed card: every node type appears as a dot with its icon and name, and every edge appears as a line between two dots. A node navigator on the left lists every node type alphabetically, with a search box and a node count — click a row to select that node on the canvas, or collapse the navigator to reclaim space. A legend in the bottom-left shows the three node categories, Core, Secondary, and Derived; click a category to highlight only its nodes, and click again to clear the filter. A Counts toggle next to the legend shows or hides each node's record count. Zoom controls in the bottom-right give you a minimap, zoom in/out, and fit-to-view. A View / Edit toggle sits at the bottom centre and switches the whole canvas between the two modes described below.

Hovering or selecting a node highlights it and its direct neighbours while everything else fades back; relationship names only appear along that highlighted path, not at rest. If you haven't created any node types yet, the navigator shows "No nodes yet" with an Add node button that takes you to the Nodes tab. On very large graphs, the canvas, navigator, and node pickers cap out at the first 200 node types.

View mode and the inspector

In View mode, selecting a node opens an inspector panel on the right. It shows the node's icon, name, and description, three stat tiles for Records, Properties, and Edges, and two sur-tabs. The Properties sub-tab lists each property with its key, type, and flag pills — PK for primary key, REQ for required, IDX for indexed, and PII for personal data. The Edges sub-tab groups the node's relationships into Outgoing and Incoming, each row showing the relationship label and the node on the other end; click a row to jump straight to that node. An Edit schema button switches the canvas into Edit mode. You'll also see a View details button, but it doesn't currently navigate anywhere — open the node from the Nodes tab instead to see its full detail page.

Editing the canvas

Edit mode adds a toolbar at the bottom: Select and Add node cursors (Add node is active by default when you enter), plus Undo, Redo, Duplicate, and Delete. Entering Edit clears whatever you had selected and tucks the navigator away; it reopens when you return to View. Keyboard shortcuts work throughout: Cmd+Z to undo, Cmd+Shift+Z or Cmd+Y to redo, Cmd+D to duplicate, and Delete or Backspace to delete.

You can drag nodes to rearrange the layout — note that rearranging still counts as a change, so it bumps the graph's version number. Click empty canvas with the Add node cursor to open the New Node modal at that spot. Hover over a node to reveal a small + handle you can drag onto another node, which opens the New Edge modal pre-filled with those two endpoints. The drag handle won't let you connect a node to itself, though the New Edge modal will accept the same node at both ends if you genuinely want a self-relationship.

One important distinction: duplicate and delete on the canvas only change your working copy, not the saved schema. Dragging a node into a new position, and anything you create through the New Node or New Edge modals, is saved. But deleting or duplicating a node directly on the canvas is undone the next time the view refreshes — creating another node or edge, switching modes, or reloading the page. To actually remove a node type, use the Nodes tab; to remove an edge, use the Edges tab.

Creating edges and their attributes

New Edge opens a two-step modal. The first step, Identity, asks for a Relationship label, a Source node, and a Target node, all through searchable pickers, and all required. Writing labels in UPPER_SNAKE style (for example WORKS_AT) is a convention rather than a rule — any non-empty label works and is displayed uppercase in lists — but since the label doubles as the relationship name in graph queries, a query-friendly label is worth the extra thought. Only one edge with a given label can exist between the same two nodes, and both endpoints must already exist as real node types.

The second step, Attributes, lets you either define attributes manually or skip them for now and add them later. Attributes use the same editor as node properties — string, number, integer, boolean, datetime, object, array, with Idx, PII, and GQ flags and support for nesting — except an edge attribute can never be a primary key, and every attribute needs its own unique key. Save the edge with Create edge; when you're editing an existing one, the source and target are locked and the button reads Save changes instead. You can also list, search, and manage every relationship from the Edges tab, which shows each edge's label, source, target, owner, and last-updated time, with Edit and Delete on each row.

How an edge becomes a real relationship

An edge is a design-time object: it declares that two node types can relate, but it doesn't connect any actual records by itself. The record-level relationship is created when you map a source onto the edge during source setup — the join keys you choose there determine how records actually pair up, and a single edge can back several different mappings, one per join-key combination. Whether a record can link to one match or many on the other side is derived automatically from the join key you pick, not something you choose directly: joining on a primary key produces a one-to-one link, joining on any other field produces a one-to-many link.

Attribute values you define on an edge are stored on the relationship itself, not on either record. When your sources sync and a relationship forms between two golden records, the attribute values published with that record are written onto the connection, so a graph query can read a value like role or since straight off the edge. Empty attribute values aren't stored, and object or list values are stored in their text form.

Notes

  • Deleting an edge also removes every record-level relationship it backs; deleting a node type removes all edges touching it.

  • All node dots on the canvas are the same size — size doesn't carry any meaning, so don't read anything into it.

  • The legend's colors are a filter, not a color key — nodes on the canvas are typically tinted per node type, which can differ from the legend swatches.

  • Rearranging node positions on the canvas is saved and bumps the graph's version, even though it doesn't change the schema itself.