Proposition
A proposition is a natural language statement with typed entity mentions. Propositions are the system of record - all other representations (Neo4j relationships, Prolog facts, vector embeddings) derive from them.
Design: One Proposition = One Relationship
Each proposition should express a single fact with at most two entity mentions (SUBJECT and OBJECT). This maps cleanly to graph relationships during promotion. Complex sentences with multiple relationships should be extracted as multiple propositions during the extraction stage.
Constructors
Properties
LLM-generated certainty (0.0-1.0)
When the proposition's content last changed (text, mentions, confidence). This is the decay anchor: effectiveConfidence measures age from here.
Java-friendly accessor for contextId value.
How much this fact matters (0.0-1.0). Orthogonal to confidence.
The most recent update of any kind — the later of contentRevised and metadataRevised. Use for "last touched / recently updated" ordering, where an administrative touch (status change, pin, re-grounding) should still count as activity. Distinct from contentRevised, the decay anchor, which deliberately ignores administrative touches. Body-level getter: excluded from copy()/equals/hashCode.
Entity references within the text (typically 1-2, with SUBJECT/OBJECT roles)
When the proposition's administrative metadata last changed (status, grounding, temporal, pinned). Does NOT reset the decay clock.
Rich grounding entries linking this proposition to source material via com.embabel.dice.provenance.SourceLocator. Complements the legacy chunk-id-only grounding list.
How many times this proposition has been merged or reinforced. Provides a frequency/importance signal complementary to confidence and decay.
Legacy alias for the last-updated timestamp. Retained for backward compatibility (existing readers and JSON serialization) as a read-only computed property equal to contentRevised. Because it is a body-level getter, it is excluded from copy()/equals/hashCode.
Current lifecycle status
Optional bitemporal metadata (observed/valid time, supersession, contradiction). Null when temporal correctness is not tracked for this proposition.
Functions
Fold another proposition's evidence onto this one: grounding, provenance entries, and source ids, all appended and deduplicated. Bumps reinforceCount by one — treating the absorbed proposition as a single fresh confirmation, not + other.reinforceCount (which would double-count whatever it had already been reinforced by).
Calculate the effective confidence after applying time-based decay. Uses exponential decay formula from GUM paper: γ = exp(-decay * k * age_days)
Calculate the effective confidence as of a specific point in time. Useful for historical analysis where you want to know what the confidence was at a past date, not relative to now.
Whether all entity mentions have been resolved to known entities.
Find the object mention (if any).
Get all resolved entity IDs from mentions.
Find the subject mention (if any).
Create a copy with adjusted confidence.
Create a copy with decay applied to confidence. Useful for retrieval ranking where older propositions should be weighted less.
Create a copy with additional grounding.
Create a copy with an additional (or replaced) metadata entry.
Create a copy with exactly groundingToRemove, provenanceRefsToRemove and sourceIdsToRemove taken out of this proposition's evidence — the inverse of absorbEvidence for one loser's contribution. Provenance refs use the shared evidence-key contract so current refs identify one full entry while legacy locator refs match only revisionless evidence.
Create a copy with the pin flag set. Administrative change: touches only metadataRevised and preserves the decay clock (contentRevised).
Create a copy whose provenance is exactly entries, replacing any existing entries.
Create a copy with additional rich grounding entries (appended, deduplicated).
Create a copy with updated mentions.
Create a copy with updated status. Administrative change: touches only metadataRevised and preserves the decay clock (contentRevised).
Create a copy with the given temporal metadata.
Create a copy with updated text. Resets the decay clock (content anchor).