Data Model

As a user, you normally think in four layers: KV records, graph structure, vector embeddings, and optional semantic facts.

Entity UIDs

Use one UID for the same thing everywhere.

product UID 9001
  KV:     namespace products, key 9001 -> JSON bytes
  Vector: index products_text_vec, entity_id 9001 -> embedding
  Graph:  (product:Product {uid: 9001})-[:MADE_BY]->(brand)
  OWL:    product rdf:type ProductClass

This shape keeps multimodal queries simple and makes result hydration predictable.

KV

KV data is namespaced by a resource/schema ID at the gRPC layer. Use KV for opaque payloads, JSON records, cached documents, and agent-readable result bodies.

resource_id: 42
key:         9001
value:       bytes(JSON product document)

Use:

  • PutKeyValue and GetKeyValue for single records.

  • BulkPutKeyValue and BulkGetKeyValue for batch paths.

  • Transaction KV APIs when a KV write must commit with graph/vector changes.

Graph

Graph writes enter as graph blocks or transaction graph edges. Cypher and graph scan APIs then query the published graph state.

entity UID -> relationship -> entity UID
      |
      v
query with MATCH, GraphScan, or BulkNeighbors

Use graph edges for:

  • relationships and provenance,

  • explainability around vector hits,

  • anomaly motifs,

  • taxonomy and semantic context,

  • temporal/geospatial facts represented as properties or connected nodes.

Vector

Vector rows bind an entity_id to an index name and embedding. Use separate indexes for different embedding spaces.

Index name Typical content

products_text_vec

Text embedding of product title, description, and reviews.

products_image_vec

Image embedding for product photos.

products_mm_vec

Pre-fused multimodal embedding.

accounts_behavior_vec

Behavioral embedding for anomaly retrieval.

Semantic facts

Imported ontology triples describe classes and relationships. Optional materialization adds supported inferred facts. A semantic profile connects application labels and fields to that domain vocabulary; see Import and reason over ontologies and Profiles and domain vocabulary.

Geographic observations

Geospatial indexes store append-only observations containing an event ID, entity ID, timestamp, and position. An entity may have many observations. Use the same entity UID as a graph node when you need to join tracks with graph context. Put graph and geospatial writes in one transaction when they must become visible together; see Geospatial and spatiotemporal indexing.