The property graph schema.
Every chart computation produces a typed property graph using this schema, emittable as Cypher, SurrealQL, JSON-LD, or embedding text.
Example
What it looks like in Cypher.
Deterministic IDs make re-emitting the same chart idempotent. Multi-chart queries become graph patterns.
// vedaksha-emit · CypherEmitter
// 10 node types · 13 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, sRECEIPT · Cypher emit · edge labels verified against ontology.rs · last verified 2026-05-04
ChartRoot node — holds julian_day, latitude, longitude, DataClassification tag.PlanetPlanetary body with longitude, latitude, distance, speed, retrograde flag, sign index, house.SignZodiac sign with name, index (0–11), element, modality.HouseHouse cusp with number (1–12), cusp longitude, house system name.NakshatraLunar mansion with name, index (0–26), lord, deity.PadaSub-division of a nakshatra: nakshatra index, pada number (1–4), start longitude.PatternGeometric pattern (e.g. T-Square) described by pattern_type and description.DashaPeriodA period in Vimshottari or other dasha system: lord, level, start/end JD.YogaAn astrological yoga with name, yoga_type, description.FixedStarFixed star with name, longitude, latitude, magnitude.RECEIPT · 10 node types · sourced from NodeType enum · last verified 2026-05-04
Schema — edges
13 edge types.
Each edge carries an optional properties payload (e.g. Aspects carries orb, applying, strength).
PlacedInPlanet → SignOccupiesPlanet → HouseAspectsPlanet → PlanetRulesPlanet → SignDispositsPlanet → PlanetCuspOfHouse → SignBelongsToNode → ChartPartOfPatternPlanet → PatternInNakshatraPlanet → NakshatraConjunctStarPlanet → FixedStarDashaLordDashaPeriod → PlanetContainsPeriodDashaPeriod → DashaPeriodHasYogaChart → YogaRECEIPT · 13 edge types · sourced from EdgeType enum · last verified 2026-05-04
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::IdentifiedRECEIPT · DataClassification · classification.rs · last verified 2026-05-04