Files
semantica/docs/reference/provenance.md
T
KaifAhmad1 37e640e7b4 docs: comprehensive audit and DX overhaul of all reference modules
llms.md:
- Only Groq/OpenAI/LiteLLM/HuggingFaceLLM are exported — remove non-exported
  Anthropic/Ollama/Gemini/DeepSeek/Novita as direct imports
- Rename HuggingFace -> HuggingFaceLLM (correct class name)
- Remove non-existent create_provider() — replace with LiteLLM provider/model pattern
- Add LiteLLM 100+ providers section with provider/model string examples
- Add Exported Classes table (class -> provider -> API key)
- Update Provider Comparison table to show correct import per provider

ontology.md:
- Remove non-existent OntologyManager — replace with OntologyEngine facade
- Remove non-existent start_explorer() — replace with CLI: semantica-explorer
- SHACLValidator -> OntologyValidator (correct exported name)
- OWLExporter -> OWLGenerator (correct exported name)
- Add Exported Classes block with all 15+ exported symbols
- Add LLMOntologyGenerator section, NamespaceManager section
- Add OntologyEvaluator section with coverage/completeness metrics
- Add ingest_ontology() section
- Add versioning moved-to note (change_management module)

kg.md:
- TemporalKnowledgeGraph does not exist — replace with TemporalGraphQuery
- DistanceCalculator does not exist — replace with SimilarityCalculator
- Add Exported Classes block with all 20+ exported symbols
- Fix temporal example to use TemporalGraphQuery + TemporalVersionManager correctly
- Add SimilarityCalculator section with NodeEmbedder integration example

provenance.md:
- ActivityTracker not exported — remove; ProvenanceManager handles tracking
- Fix track_entity() signature: add source_location, source_quote params
- Fix GraphBuilderWithProvenance import: from semantica.kg, not semantica.provenance
- Add Exported Classes block with storage backends and checksum utilities
- Add SourceReference section with DOI/page/quote fields
- Add tamper-evident checksum section (compute_checksum/verify_checksum)
- Add Enable Provenance in Extractors section
- Fix duplicate heading (W3C PROV-O Export appeared twice)

reasoning.md:
- Add Exported Classes block with all engines + data types + explanation types
- Add Quick Start section
- Add Choosing an Engine comparison table
- Add InferenceResult/Explanation/ReasoningStep type annotations in examples
- Add Tip: use DatalogReasoner for recursive rules

semantic_extract.md:
- Add Exported Classes block with NamedEntityRecognizer, EventDetector, Entity,
  Relation, Event, CoreferenceChain, EntityClassifier, TemporalEventProcessor
- Add Quick Start section (one-liner extraction pipeline)
- Rename EventExtractor -> EventDetector (correct exported name)
- Clarify NERExtractor vs NamedEntityRecognizer distinction
- Add return type annotations to EventDetector example

core.md:
- Add Exported Classes block
- Add When to Use Core vs. Individual Modules decision table
- Add Tip: LifecycleManager only for long-running apps
- Fix MethodRegistry example to import build_knowledge_base correctly

parse.md:
- Add Exported Classes block with all format-specific parsers + data types
- Add DoclingParser optional import note

utils.md:
- Add Exported Classes block with logging/validation/progress/helpers/exceptions

deduplication.md:
- Add Exported Classes block with PropertyMergeRule, MergeStrategyManager,
  method_registry, and all convenience functions

export.md:
- Add Exported Classes block with all exporters, NamespaceManager,
  SemanticNetworkYAMLExporter, and all convenience functions
2026-05-24 14:41:57 +05:30

188 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Provenance Module"
description: "W3C PROV-O compliant lineage tracking, source attribution, tamper-evident checksums, and audit trails across all modules."
icon: "link"
---
`semantica.provenance` tracks the full lineage of every fact — from raw ingestion through extraction, reasoning, and export. Compliant with W3C PROV-O, suitable for HIPAA, SOX, GDPR, and FDA 21 CFR Part 11 environments.
## Exported Classes
```python
from semantica.provenance import (
ProvenanceManager, # track entities, get lineage, export PROV-O
ProvenanceEntry, # single provenance record (entity_id, source, method, ...)
SourceReference, # rich source pointer (DOI, page, quote, URL)
ProvenanceStorage, # abstract storage backend
InMemoryStorage, # default in-memory backend
SQLiteStorage, # persistent SQLite backend for production
compute_checksum, # compute tamper-evident hash for an entry
verify_checksum, # verify integrity of a stored entry
)
# GraphBuilderWithProvenance is in semantica.kg, not semantica.provenance
from semantica.kg import GraphBuilderWithProvenance
```
## What You Get
- **`ProvenanceManager`** — track entities and relationships with source attribution and lineage retrieval
- **`ProvenanceEntry`** / **`SourceReference`** — structured records with DOI, page, quote, confidence, and timestamp
- **`InMemoryStorage`** / **`SQLiteStorage`** — swappable persistence backends
- **`compute_checksum`** / **`verify_checksum`** — tamper-evident integrity verification
- **Lineage graph** — full upstream lineage from any entity back to its source document
- **W3C PROV-O export** — serialize lineage as Turtle RDF or JSON-LD for compliance reporting
- **`GraphBuilderWithProvenance`** (in `semantica.kg`) — drop-in replacement that auto-tracks every node and edge
## ProvenanceManager
```python
from semantica.provenance import ProvenanceManager, InMemoryStorage, SQLiteStorage
# In-memory (default) — fast, not persisted across restarts
manager = ProvenanceManager(storage=InMemoryStorage())
# SQLite — persisted, production-ready
manager = ProvenanceManager(storage=SQLiteStorage("provenance.db"))
# Track an extracted entity (with rich source reference)
manager.track_entity(
entity_id="apple_inc",
source="annual_report_2023.pdf",
source_location="Page 12, Section 3.1",
source_quote="Apple Inc. was incorporated on January 3, 1977.",
confidence=0.98,
)
# Track an extracted relationship
manager.track_entity(
entity_id="steve_jobs_founded_apple",
source="annual_report_2023.pdf",
confidence=0.92,
)
# Retrieve full lineage for any entity
entry = manager.get_lineage("apple_inc")
print(f"Source: {entry.source}")
print(f"Quote: {entry.source_quote}")
print(f"Confidence: {entry.confidence}")
print(f"Tracked at: {entry.tracked_at}")
```
## SourceReference
`SourceReference` provides a rich, citable pointer to the exact location in a source document:
```python
from semantica.provenance import SourceReference
ref = SourceReference(
document_id="annual_report_2023.pdf",
page=12,
section="3.1",
quote="Apple Inc. was incorporated on January 3, 1977.",
url="https://investor.apple.com/sec-filings/annual-reports/",
doi="10.0000/example.doi",
)
manager.track_entity(
entity_id="apple_inc",
source_reference=ref,
confidence=0.98,
)
```
## Tamper-Evident Checksums
Verify that provenance records have not been modified after creation:
```python
from semantica.provenance import compute_checksum, verify_checksum
entry = manager.get_lineage("apple_inc")
# Compute and store a checksum on first write
checksum = compute_checksum(entry)
# Later: verify the entry hasnt been altered
is_valid = verify_checksum(entry, checksum)
if not is_valid:
raise RuntimeError("Provenance record has been tampered with!")
```
## W3C PROV-O Export
Export lineage as W3C PROV-O Turtle for compliance reporting:
```python
# Single entity lineage
prov_ttl = manager.export_prov_o("apple_inc", format="turtle")
# Full provenance graph for all tracked entities
manager.export_all(path="provenance.ttl", format="turtle")
# Compliance-ready JSON-LD export
manager.export_all(path="provenance.jsonld", format="json-ld")
```
## Integration with GraphBuilder
`GraphBuilderWithProvenance` (from `semantica.kg`) automatically records provenance for every node and edge constructed:
```python
from semantica.kg import GraphBuilderWithProvenance
from semantica.provenance import ProvenanceManager, SQLiteStorage
prov_manager = ProvenanceManager(storage=SQLiteStorage("provenance.db"))
builder = GraphBuilderWithProvenance(provenance_manager=prov_manager)
kg = builder.build_single_source(graph_data)
# Every node and edge now has full source attribution
entry = prov_manager.get_lineage("apple_inc")
print(f"Source document: {entry.source}")
print(f"Confidence: {entry.confidence}")
```
## Enable Provenance in Extractors
```python
from semantica.semantic_extract import NERExtractor
from semantica.provenance import ProvenanceManager
prov_manager = ProvenanceManager()
ner = NERExtractor(method="llm", llm_provider=llm, provenance=True)
entities = ner.extract(text)
# Retrieve lineage for the first extracted entity
entry = prov_manager.get_lineage(entities[0]["id"])
print(f"Source: {entry.source}")
```
## Compliance Standards
Provenance tracking in Semantica is designed to satisfy:
| Standard | Requirement Met |
| -------- | --------------- |
| **W3C PROV-O** | Full PROV-O compliant serialization (Turtle and JSON-LD) |
| **HIPAA** | Complete audit trail linking clinical facts to source documents |
| **SOX** | Immutable change history with timestamps and actor IDs |
| **GDPR** | Data lineage supporting right-to-erasure impact analysis |
| **FDA 21 CFR Part 11** | Electronic records with origination timestamp and extraction method |
<CardGroup cols={2}>
<Card title="Change Management" icon="clock-rotate-left" href="change_management">
Version control and snapshot audit trails.
</Card>
<Card title="Ingest" icon="database" href="ingest">
Provenance begins at the ingestion stage.
</Card>
<Card title="Export" icon="file-export" href="export">
Include provenance metadata in RDF exports.
</Card>
<Card title="Context" icon="brain" href="context">
Decision provenance via AgentContext.
</Card>
</CardGroup>