Skip to content
Authors
  • Sem Tadema
    Sem TademaCTO

This post explains how Object, Property, and Relation work together to define the platform schema and graph behavior.

  • Object defines a data type (for example candidate, vacancy)
  • Property defines reusable field definitions attached to objects
  • Relation defines links between objects
  • Record (data) then stores values that follow that schema

Think of this as schema-first graph modeling: objects shape records, properties shape values, and relations shape connectivity.

Object: schema root

Object contains naming, grouping, traits, and schema relationships.

Property: field definition + object relationship metadata

Property is not just a key name. It also includes:

  • validation-related rules (required, unique, format/type rules)
  • options and format settings serialization
  • per-object relationship metadata (group, hidden, index)
  • index lifecycle (indexed creates/drops DB indexes)

Relation: graph connector between objects

Relation stores relations and drives object-level graph edges.

At record level, relation endpoints in RecordController use relation names to connect actual records through this schema.

Design guidelines

  • Keep object names stable and lowercased.
  • Reuse properties intentionally; avoid creating near-duplicates.
  • Use relation names that clearly describe business meaning.
  • Plan indexed properties for real query/filter needs, not by default.