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, sRECEIPT · Cypher emit · edge labels verified against ontology.rs · last verified 2026-08-16
Chartbuilt from a chartPlanetbuilt from a chartSignbuilt from a chartHousebuilt from a chartNakshatradefined, not chart-builtPadadefined, not chart-builtPatterndefined, not chart-builtDashaPerioddefined, not chart-builtFixedStardefined, not chart-builtRECEIPT · 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).
PlacedInPlanet → Signbuilt from a chartOccupiesPlanet → Housebuilt from a chartAspectsPlanet → Planetbuilt from a chartRulesPlanet → Signbuilt from a chartDispositsPlanet → Planetbuilt from a chartCuspOfHouse → Signbuilt from a chartBelongsToNode → Chartbuilt from a chartPartOfPatternPlanet → Patterndefined, not chart-builtInNakshatraPlanet → Nakshatradefined, not chart-builtConjunctStarPlanet → FixedStardefined, not chart-builtDashaLordDashaPeriod → Planetdefined, not chart-builtContainsPeriodDashaPeriod → DashaPerioddefined, not chart-builtRECEIPT · 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::IdentifiedRECEIPT · DataClassification · 3 variants from classification.rs · last verified 2026-08-16