Prophecy Tracking Knowledge Graph Design - Source Excerpt 02 - Identifiers, provenance, and versioning
Back to Prophecy Tracking Knowledge Graph Design
Summary
This source excerpt begins near Identifiers, provenance, and versioning and preserves the surrounding evidence from Antichrist.net/agent-file-handoff/Archive/2026-05-12-content-reports/Prophecy-Tracking Knowledge Graph Design.md.
**Source path:** Antichrist.net/agent-file-handoff/Archive/2026-05-12-content-reports/Prophecy-Tracking Knowledge Graph Design.md
For edges, the essential predicates are: `HAS_EXPRESSION`, `HAS_PASSAGE`, `MENTIONS`, `ABOUT`, `PREDICTS`, `INTERPRETS`, `REFERS_TO`, `CITES`, `DERIVED_FROM`, `SUPPORTED_BY`, `CONTRADICTS`, `COMPETES_WITH`, `SUPERSEDES`, `SAME_AS`, `LOCATED_IN`, `OCCURS_DURING`, `OCCURS_AT`, `REVIEWED_BY`, and `GENERATED_BY`. In an RDF implementation, many of these can be ordinary predicates, while contradiction judgments, reviewer actions, and machine extraction results are usually better reified as resources or placed into named graphs. In a property graph, ordinary semantic links can be direct relationships, but contradiction and review results still benefit from reification whenever you need per-assertion provenance, scores, or audit history. citeturn19view1turn29view0turn19view0
### Identifiers, provenance, and versioning
Use **two identifier layers**. The first is a **stable conceptual ID** for the thing itself, such as a person, place, text work, or canonical claim. The second is a **versioned record ID** for mutable graph records. In RDF form, the stable ID is an IRI; versions can be related through PAV and Dublin Core versioning terms. In a property graph, store both `kg_id` and `version_id` on the node and never overwrite version history destructively. citeturn19view1turn19view12turn19view10
Every machine-created assertion should carry enough provenance to be replayed or challenged later. The minimum high-value fields are: `source_id`, `passage_id`, `source_locator`, `source_checksum`, `pipeline_version`, `model_name`, `model_version`, `prompt_hash` if prompting is used, `run_timestamp`, `extractor_confidence`, and `wasDerivedFrom`. That recommendation follows directly from the role PROV-O and PAV play in provenance interchange and version traceability. citeturn19view0turn19view12
A practical versioning rule is: **stable sources and passages are immutable; claims, alignments, contradictions, and review decisions are append-only**. If a reviewer changes an interpretation or contradiction ruling, create a new version and link it with `SUPERSEDES` and a provenance edge rather than rewriting the old one. Nanopublication practice is especially useful here because it explicitly separates assertion, assertion provenance, and publication information in distinct graphs. citeturn29view0turn19view1turn19view0
### Example schema diagram
The diagram below shows a recommended logical model. It is illustrative rather than exhaustive.
' ' ' mermaid
classDiagram
class TextWork {
kg_id
canonical_title
tradition
tags
}
class TextExpression {
kg_id
language
edition
translator
publication_date
}
class Passage {
kg_id
locator
quoted_text
token_offsets
ocr_confidence
}
class SourceDocument {
kg_id
source_type
author_or_attributor
date
reliability_score
rights
}
class ProphecyStatement {
kg_id
statement_text
literalness_score
hedge_score
confidence
}
class PredictionClaim {
kg_id
canonical_form
predicate
polarity
modality
confidence
}
class InterpretationClaim {
kg_id
interpretation_text
school
confidence
}
class Entity {
kg_id
type
canonical_label
external_ids
}
class Event {
kg_id
label
start_time
end_time
place_id
}
class ContradictionAssertion {
kg_id
relation_type
contradiction_score
aligned_facets
threshold_version
}
class ReviewDecision {
kg_id
status
reviewer_role
reviewed_at
rationale
}
class ExtractionRun {
kg_id
pipeline_version
model_name
model_version
prompt_hash
run_at
}
TextWork "1" --> "*" TextExpression : HAS_EXPRESSION
TextExpression "1" --> "*" Passage : HAS_PASSAGE
Passage "1" --> "1" SourceDocument : ANCHORED_IN
Passage "1" --> "*" ProphecyStatement : EVIDENCES
ProphecyStatement "1" --> "*" PredictionClaim : NORMALIZES_TO
ProphecyStatement "1" --> "*" InterpretationClaim : INTERPRETED_AS
PredictionClaim "*" --> "*" Entity : ABOUT
PredictionClaim "*" --> "*" Event : PREDICTS
InterpretationClaim "*" --> "*" Entity : REFERS_TO
InterpretationClaim "*" --> "*" Event : REFERS_TO
ContradictionAssertion "*" --> "1" PredictionClaim : CLAIM_A
ContradictionAssertion "*" --> "1" PredictionClaim : CLAIM_B
ContradictionAssertion "*" --> "*" ReviewDecision : REVIEWED_BY
PredictionClaim "*" --> "*" ExtractionRun : GENERATED_BY
InterpretationClaim "*" --> "*" ExtractionRun : GENERATED_BY
' ' '
The modeling choice to keep `Passage`, `Claim`, and `ContradictionAssertion` separate is strongly supported by provenance and named-graph standards, and it aligns with nanopublication practice for granular, citable assertions. citeturn19view1turn19view0turn29view0
### Illustrative sample records
The table below is **synthetic** and only illustrates how records can fit together.
| Record ID | Type | Canonical text or label | Key links | Source | Confidence | Contradiction state | Review status |
|---|---|---|---|---|---:|---|---|
| `txt:oracle-scroll-a` | `TextWork` | Oracle Scroll A | `HAS_EXPRESSION -> expr:osa-en-1987` | `src:archive-item-001` | 1.00 | — | verified |
| `ps:osa-3-14` | `ProphecyStatement` | “Within three moons, the northern ruler will fall.” | `EVIDENCES <- passage:osa-p3-l14` | `src:archive-item-001` | 0.97 | — | verified |
| `pc:northern-ruler-falls` | `PredictionClaim` | `RulerOf(North) FALLS WITHIN [T0,T0+3 months]` | `NORMALIZES_TO <- ps:osa-3-14` | `src:archive-item-001` | 0.83 | candidate conflict with `pc:northern-ruler-victorious` | under_review |
| `ic:commentary-b-1` | `InterpretationClaim` | “The statement refers to the Siege of City X.” | `INTERPRETED_AS <- ps:osa-3-14`, `REFERS_TO -> evt:siege-city-x` | `src:commentary-b-1987` | 0.71 | competing interpretation with `ic:commentary-c-2` | disputed |
| `ca:conflict-009` | `ContradictionAssertion` | `pc:northern-ruler-falls` contradicts `pc:northern-ruler-victorious` | aligned on entity/time; conflict on outcome | derived from multiple sources | 0.78 | partial contradiction | under_review |
| `rv:review-2241` | `ReviewDecision` | reviewer notes + evidence | `target -> ca:conflict-009` | internal review | — | conflict retained | verified |
## Extraction Pipeline
### Ingestion from web, OCR, and archives
A prophecy-tracking KG needs an ingestion layer that can handle born-digital documents, scanned manuscripts, archive facsimiles, and derivative PDFs without discarding layout evidence. IIIF Presentation API manifests are useful for interoperable access to compound digital objects and their navigable structure, while the Internet Archive Metadata API and OCR pipeline expose item metadata, OCR artifacts, hOCR files, searchable text, and page-level indexes. Tesseract and TrOCR are both relevant OCR options: Tesseract is widely used and can emit hOCR, TSV, ALTO, PAGE, and searchable PDF output, and TrOCR is a modern transformer-based OCR approach for end-to-end text recognition. citeturn35view0turn21view2turn36view0turn31search1turn31search3turn21view9
For scanned or archival texts, the system should store four parallel artifacts for every ingestible document whenever feasible: the source image or PDF, the extracted text, the page/line or bounding-box anchor, and the ingest/OCR metadata. Internet Archive’s hOCR design is a good model here because it explicitly preserves text, word-level bounding boxes, per-word confidence, page indexing, and searchable derivatives. In a prophecy-tracking workflow, those anchors are important because later reviewers often need to inspect an exact page, line, or image crop to judge transcription quality or interpretive ambiguity. citeturn36view0
### NLP pipeline for entities, claims, relations, and events
A practical NLP stack should be staged rather than monolithic. The first pass performs language identification, sentence and passage segmentation, quote detection, and canonicalization. The second pass does entity mention detection, entity linking, and coreference. The third pass performs relation extraction and event extraction. The fourth pass converts raw passages into normalized propositions suitable for graph insertion. Research on document-level relation extraction and cross-document event extraction is important here because many prophecy interpretations depend on information dispersed across multiple sentences or sources, not on one sentence alone. citeturn19view11turn21view7turn23view4turn21view19