Graph ontology

The property graph schema.

Every chart computation produces a typed property graph using this schema, emittable as Cypher, SurrealQL, JSON-LD, plain JSON graph (the default for MCP tool responses), or embedding text. The schema is the full vocabulary; a computed chart builds 4 of the 9 node types and 7 of the 12 edge types, and each row below says which.

Example

What it looks like in Cypher.

Deterministic IDs make re-emitting the same chart idempotent. Multi-chart queries become graph patterns.

// vedaksha-graph, emitters feature · CypherEmitter
// 9 node types · 12 edge types
MERGE (c:Chart {id:"chart_2024_03_20"})
MERGE (sun:Planet {name:"Sun"})
MERGE (sun)-[:Occupies]->(:House {number:4})
MERGE (sun)-[:PlacedIn]->(:Sign {name:"Pisces"})
MERGE (sun)-[:InNakshatra]->(:Nakshatra {name:"U.Bhadrapada"})

// traverse like any graph
MATCH (m:Planet {name:'Mars'})
   -[:Aspects]->(s:Planet {name:'Saturn'})
RETURN m, s

RECEIPT · Cypher emit · edge labels verified against ontology.rs · last verified 2026-08-16

Schema, nodes

9 node types.

Sourced from crates/vedaksha-graph/src/ontology.rs.

Chartbuilt from a chart
Root node, holds julian_day, latitude, longitude, DataClassification tag.
Planetbuilt from a chart
Planetary body with longitude, latitude, distance, speed, retrograde flag, sign index, house.
Signbuilt from a chart
Zodiac sign with name, index (0–11), element, modality.
Housebuilt from a chart
House cusp with number (1–12), cusp longitude, house system name.
Nakshatradefined, not chart-built
Lunar mansion with name, index (0–26), lord, deity.
Padadefined, not chart-built
Sub-division of a nakshatra: nakshatra index, pada number (1–4), start longitude.
Patterndefined, not chart-built
Geometric pattern (e.g. T-Square) described by pattern_type and description.
DashaPerioddefined, not chart-built
A period in Vimshottari or other dasha system: lord, level, start/end JD.
FixedStardefined, not chart-built
Fixed star with name, longitude, latitude, magnitude.

RECEIPT · 9 node types from the NodeType enum · 4 built by chart_to_graph · last verified 2026-08-18

Schema, edges

12 edge types.

Each edge carries an optional properties payload (e.g. Aspects carries orb, applying, strength).

PlacedInPlanetSignbuilt from a chart
Planet is placed in Sign.
OccupiesPlanetHousebuilt from a chart
Planet occupies House.
AspectsPlanetPlanetbuilt from a chart
Planet aspects Planet. Edge carries aspect_type, orb, applying, strength.
RulesPlanetSignbuilt from a chart
Planet rules Sign (domicile ruler).
DispositsPlanetPlanetbuilt from a chart
Planet disposits Planet (dispositor chain).
CuspOfHouseSignbuilt from a chart
House cusp falls in Sign.
BelongsToNodeChartbuilt from a chart
Any node belongs to its Chart.
PartOfPatternPlanetPatterndefined, not chart-built
Planet participates in Pattern.
InNakshatraPlanetNakshatradefined, not chart-built
Planet is in Nakshatra.
ConjunctStarPlanetFixedStardefined, not chart-built
Planet is conjunct a FixedStar. Edge carries orb.
DashaLordDashaPeriodPlanetdefined, not chart-built
DashaPeriod is ruled by Planet.
ContainsPeriodDashaPeriodDashaPerioddefined, not chart-built
DashaPeriod contains child DashaPeriod (antardasha nesting).

RECEIPT · 12 edge types from the EdgeType enum · 7 built by chart_to_graph · last verified 2026-08-18

Privacy

Every chart is tagged at construction.

DataClassification is set at the Chart node. Upgrading to Pseudonymized or Identified is an explicit caller decision, never the default.

// crates/vedaksha-graph/src/classification.rs
// ChartGraph is always constructed Anonymous by default.
ChartGraph {
  …,
  classification: DataClassification::Anonymous,
}
// caller upgrades explicitly: never automatic:
// DataClassification::Pseudonymized
// DataClassification::Identified

RECEIPT · DataClassification · 3 variants from classification.rs · last verified 2026-08-16