Filtering

The five filter types and how they compose

Filters control which nodes are visible on the canvas. They’re the primary way to focus large graphs, and understanding how they compose is essential to using Schematify well.

The five filter types

Each filter type serves a distinct purpose. Some reduce the visible set, others expand it.

Isolate

Strips the graph down to specific nodes, including their ancestors and descendants to maintain hierarchy. Everything else is hidden.

Use this when you want to focus on a small subset and ignore the rest. For example, isolating three database nodes gives you just those databases and the structural hierarchy connecting them.

Isolate with Relations

Like Isolate, but also keeps any nodes that are connected to your targets via relations (edges). Only considers relations that are currently visible, so previously filtered-out nodes stay hidden.

Use this when you care about a node and its immediate connections. Isolating a service node with relations shows that service plus every database, queue, and dependency it links to.

Exclude

Removes targeted nodes from view. Excluding a group also removes its descendants because they cannot remain without their parent hierarchy.

Use this to strip out noise such as test servers or an irrelevant branch.

Expand

Adds nodes to the current view without hiding anything. If a node is currently hidden (by a previous filter), Expand brings it back.

Use this to progressively build up a view. You’ve isolated a section of the graph, but you also want to see every node whose document defines the base critical status. An Expand filter for node-status.type:base/critical adds those nodes to whatever is already visible.

Expand with Relations

Adds specific nodes and all their relations to the current view. Like Expand, but also pulls in everything the target connects to.

Use this when you’re looking at a filtered view and want to bring in a node’s full context. You’ve isolated the database layer, but now you want to see what connects to a specific database. Expand with Relations on that database adds it and all its linked services, without disturbing the rest of your view.

Creating filters

From the context menu

Right-click any node to access filter options. The available actions depend on whether the node is currently visible or hidden, and whether you have a selection active.

When you have multiple nodes selected, filter actions apply to the entire selection. Isolate three nodes at once, or exclude a batch in one action.

Search results include a smart filter menu. After running a query, you can:

  • Isolate results: Show only nodes matching the query.
  • Add hidden results: Expand hidden matches into the current view.
  • Exclude results: Remove matching nodes from view.

These create smart filters based on the search expression rather than a fixed list of nodes. The query uses the same rules as interactive search. For example, node-status.type:base/critical follows literal status values in updated documents, while channels.health=critical follows a declared realtime channel. Channel-backed queries update after live batches and after stale-after fallback transitions.

How filters compose

Filters apply as a sequential stack, each operating on the result of the previous one. The exception is Isolation filters: they always evaluate against the full, unfiltered tree, so they can include nodes that earlier filters removed.

The practical effect:

  • Removal then Isolation: The isolation filter ignores the removal and works from the full graph.
  • Isolation then Removal: The removal filter strips nodes from the already-isolated set.
  • Isolation then Expand: The expand filter adds nodes on top of the isolated set.

The Filter panel shows your full stack in order. You can remove any individual filter to see how the view changes, or clear them all to start fresh.

Tip

If a filter combination isn’t producing what you expect, check the order in the Filter panel. Removing and re-applying filters in a different sequence can produce very different results.

Smart filters vs node filters

Filters created from the context menu target specific nodes by their path. They’re static: if the graph data changes, the filter still targets the same nodes.

Filters created from search target a query expression. They’re dynamic: the set of matching nodes is re-evaluated when the graph document updates or a resolved channel value changes. Realtime values are searchable only through explicit channels.<key> predicates, never through free text.

Bookmarks and compressed URL view state preserve smart filters. Schematify automatically retains the grouping of queries saved by older versions. An invalid historical query remains visible with an error and selects no nodes.

What’s next