Data Model
DASH's data model is { claim, evidence[], edges[] }. The claim is the atomic assertion; each piece of evidence records a source that supports, contradicts, or is neutral toward the claim; edges connect claims to other claims.
Claim
The atomic, source-bound assertion. Every claim carries:
| Field | Description |
|---|---|
claim_id | Unique identifier |
tenant_id | Owning tenant |
canonical_text | The assertion itself |
confidence | 0.0 - 1.0, validated server-side |
event_time_unix | When the asserted fact occurred |
valid_from / valid_to | Temporal validity window (valid_from <= valid_to enforced) |
chunk_id | Optional link back to the source chunk |
doc_id | Optional source document |
extraction_model | Which model extracted the claim |
Evidence
An evidence record binds one source to one claim with a stance:
| Field | Description |
|---|---|
evidence_id | Unique identifier (must differ per record, even for the same claim) |
claim_id | The claim this evidence bears on |
source_id | URI-style source reference, e.g. news://nyt/2025-09-03 |
stance | supports, contradicts, or neutral |
source_quality | 0.0 - 1.0, validated server-side |
A claim accumulates evidence over time. Ingesting a second evidence record for a claim with a conflicting stance is how contradictions enter the graph - the claim is never edited in place, the evidence accumulates.
Edges
Edges connect claims to other claims:
| Relation | Meaning |
|---|---|
supports | This claim backs another claim |
contradicts | This claim refutes another claim |
refines | This claim narrows another claim's scope |
duplicates | This claim restates another claim |
depends_on | This claim's validity needs another claim |
ClaimEdge { relation: Contradicts } participates in demotion exactly like contradicting evidence.
Retrieval result
Every retrieval returns an array of RetrievalResult:
{
"claim_id": "c1",
"canonical_text": "Company X acquired Company Y",
"score": 0.93,
"supports": 1,
"contradicts": 0,
"citations": [
{
"evidence_id": "e1",
"source_id": "news://nyt/2025-09-03",
"stance": "supports",
"source_quality": 0.95
}
]
}Citations additionally expose chunk_id, span_start, and span_end for character-level traceability back into source documents.
Stance modes
The retrieval planner combines ANN candidates with metadata filters, time-range filters, stance demotion/filtering, and optional graph expansion:
stance_mode | Behavior |
|---|---|
balanced (default) | Contradicted claims are kept but demoted in score |
support_only | Any claim with a contradicting evidence record is removed from results |
Time ranges
time_range: { "from_unix": ..., "to_unix": ... } constrains results to a validity window, so facts that were true but have expired are never surfaced.