A claim-level provenance framework for scientific research
Project description
ClaimKit
ClaimKit is a claim-level provenance framework for scientific research.
It makes every scientific claim, numerical result, figure, and table traceable to the evidence that supports it. A claim registered in ClaimKit has a well-defined provenance, can be validated against its current evidence, and is flagged as stale when that evidence changes. ClaimKit is designed to be both human- and agent-friendly, with stable machine-readable interfaces throughout.
ClaimKit does not replace workflow managers, experiment trackers, version control, or manuscript tools — it links to and builds on them.
Core concepts
- Claim — a scientific assertion with a stable id and a validation status.
- Evidence — a link from a claim to an artefact (code, data, a run, literature, …) that supports, refutes, or contextualises it.
- Activity — a process (computation, measurement, analysis, review) that consumed and produced artefacts.
- ProvenanceRelation — a typed, directed edge connecting claims, evidence, activities, artefacts, and agents into a graph.
- ProvenanceGraph — the container of nodes and edges; supports traversal, validation, staleness detection, and reporting.
A claim's status is one of unresolved, valid, invalid, stale, or
needs_review.
Installation
pip install claimkit
Requires Python 3.12+.
Command-line quickstart
Build a graph, link evidence, and check it — all from the terminal:
claimkit init graph.json
CLAIM=$(claimkit add-claim graph.json "Half-life measured at 5.2 days." --tag decay)
claimkit add-evidence graph.json "$CLAIM" \
--kind workflow --reference run-42 --digest sha256:abc123
claimkit validate graph.json # resolve status from evidence
claimkit stale graph.json # flag claims whose artefacts changed
claimkit report graph.json # human-readable Markdown report
claimkit export graph.json -o prov.json # export to W3C PROV-JSON
claimkit import prov.json restored.json # import PROV-JSON back into a graph
validate and stale accept --json for machine-readable output; report and
export accept -o to write to a file. Run claimkit --help for the full
command list.
Python quickstart
from claimkit import (
Claim, Evidence, EvidenceKind, NodeType,
ProvenanceGraph, ProvenancePredicate, ProvenanceRelation,
validate_claim, render_report,
)
graph = ProvenanceGraph()
graph.add_claim(Claim(statement="Half-life measured at 5.2 days.", id="c1"))
graph.add_evidence(
Evidence(claim_id="c1", kind=EvidenceKind.WORKFLOW, reference="run-42", id="e1")
)
graph.add_relation(
ProvenanceRelation(
subject_type=NodeType.CLAIM, subject_id="c1",
predicate=ProvenancePredicate.SUPPORTED_BY,
object_type=NodeType.EVIDENCE, object_id="e1",
)
)
result = validate_claim(graph, "c1")
print(result.status, "—", result.reason) # valid — supported by 1 piece(s) of evidence
print(render_report(graph))
Interoperability
ClaimKit graphs serialise to a versioned JSON format for storage (save_graph /
load_graph) and export to / import from
W3C PROV-JSON (to_prov /
from_prov) for interchange with the wider provenance ecosystem.
License
BSD 3-Clause. See LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claimkit-0.1.1.tar.gz.
File metadata
- Download URL: claimkit-0.1.1.tar.gz
- Upload date:
- Size: 122.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87ab9ad705498e046d8b12f911b277ce5fdaad5e9e8b1f27377a6f65e51e84f9
|
|
| MD5 |
af2b2b3a27c415804c14cf3c3d2bfe8b
|
|
| BLAKE2b-256 |
360d4fd6632123200cc52aad54cbbf1388895aa3312b52ed5c3b5e408314db69
|
File details
Details for the file claimkit-0.1.1-py3-none-any.whl.
File metadata
- Download URL: claimkit-0.1.1-py3-none-any.whl
- Upload date:
- Size: 39.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9c2bd2311507f03c40c4b58638c006d227ff610d86ba33bfeafd7219745f958
|
|
| MD5 |
6fded621dba2b4541a90c5028981075d
|
|
| BLAKE2b-256 |
18531f896c2f49bb7514b692a7a9b96d97d0041539e9299b1471cca268935e62
|