Connectors
Connectors bring operational data into the platform. They extract from source systems, normalize records, and map them into the ontology — turning raw tags and rows into typed, evidence-backed knowledge.
Ingestion flow
Each connector follows the same path: extract from a source, normalize the payload, map it onto ontology types, and assert it into the graph with evidence attached. Change-data-capture, batch, and streaming modes share this pipeline.
Supported sources
| Category | Examples | Typical mode |
|---|---|---|
| Control systems | OPC-UA, Modbus, SCADA | CDC / stream |
| Historians | PI, Aspen, Canary | Batch / stream |
| Enterprise | SAP, Oracle ERP, Maximo | CDC / batch |
| Manufacturing | MES, LIMS, QMS | CDC |
| Documents | PDFs, SOPs, P&IDs | Batch (extract + index) |
Configuring a connector
Connectors are declared as versioned config. A mapping block ties each source field to an ontology type and attaches an evidence source, so provenance is captured at ingestion.
# connectors/scada-plant04.yaml
source:
type: opc-ua
endpoint: opc.tcp://plant04.local:4840
mode: cdc # cdc | batch | stream
mapping:
- from: "ns=2;s=Pump.1183.PV"
to: { entity: Asset, tag: "PUMP-1183", event: reading }
evidence: { source: "scada:PLANT-04" }
schedule: "*/30 * * * * *" # every 30sCustom normalization
When a source needs logic beyond declarative mapping, attach a transform. Transforms run before facts reach the graph and must emit ontology-typed entities and events.
// Custom normalization runs before facts hit the graph.
export const normalize = defineTransform((raw) => ({
entity: { type: "Asset", tag: raw.tagId.toUpperCase() },
event: {
kind: "reading",
value: Number(raw.value),
at: raw.timestamp,
},
evidence: [{ source: raw.channel, ref: raw.tagId }],
}))Operating connectors
- 1Validate against the ontologyDry-run mappings so type mismatches surface before data flows.
- 2Backfill, then streamBatch-load history first, then switch to CDC/stream for live updates.
- 3Monitor freshness & lagAlert on ingestion lag and dropped evidence to catch source outages early.
