Ontology
Object types
The typed entities at the heart of the ontology — properties, identity, classifications, searchability.
An object type is the typed view of an entity in your domain. Define it once, bind it to a real source, and the rest of the platform reasons about it as a first-class type.
Anatomy
| Field | Purpose |
|---|---|
id | The stable identifier of the type (e.g. RegulatedEntity). Cannot be renamed. |
title | Human-readable name shown in the UI (e.g. "Regulated Entity"). |
description | Free-text description shown in the workbench and exported to LLM tools. |
icon | Emoji or icon key shown in the graph view. |
properties | The list of typed properties. |
identity | The rule for deriving a stable instance ID. See Concepts → Identity rules. |
dlpLabels | Optional default DLP labels applied to every instance. |
Properties
Each property declares a name, type, and optional flags:
| Flag | Effect |
|---|---|
required | Instances missing this property are rejected. |
searchable | The property is indexed for retrieval — searchable in the analyst, used in semantic queries. |
pii | The property is treated as PII — automatic masking applies for callers without clearance. |
classification | One of public, internal, confidential, restricted — drives the column-level masking. |
link | The property is a reference to another typed Object. |
Example
defineObjectType({
id: "RegulatedEntity",
title: "Regulated Entity",
icon: "🏛️",
description: "A legal entity subject to a regulator's oversight.",
properties: {
id: { type: "string", required: true },
legalName: { type: "string", required: true, searchable: true },
riskClassification: {
type: "enum",
values: ["low", "medium", "high", "critical"],
required: true,
},
headquartersCountry: { type: "string" },
primaryRegulator: { type: "link", target: "Regulator" },
annualSARVolume: {
type: "number",
classification: "confidential",
},
},
identity: { columns: ["id"] },
});What you can do with one
Once an object type is defined and bound:
- Read instances from a workflow with the
Get Objectblock. - Search by searchable properties through the context engine.
- Traverse to linked objects (e.g. from a
RegulatedEntityto itsRegulator). - Visualise in the graph view.
- Dispatch actions that operate on instances of this type.
- Bind to real data via Bindings.
Renaming and breaking changes
Once published on main, an object type's id is immutable. To rename, you have to:
- Create a new object type with the new id.
- Migrate bindings, actions, and workflows.
- Archive the old type.
Changing a property's type or removing a property is similarly a breaking change. Both happen through a proposal branch so reviewers can see the impact before publishing.
Related
- Bindings — connect an object type to a real source.
- Link types — define the edges between objects.
- Concepts → Property types — the full type system.
- Authoring SDK → Ontologies — define object types in TypeScript.