Skip to main content

Indicium mark

Indicium

A versioned standard for a typed scientific claim bound to the evidence that grounds it.

License: MIT Python 3.11+ Tests


What it is

Indicium is a small, standalone, versioned standard for a typed scientific claim bound to the evidence that grounds it. One LinkML source of truth generates pydantic models, JSON Schema, SHACL shapes and OWL. It reuses community ontologies rather than reinventing them:

Axis Standard
Evidence type ECO (Evidence & Conclusion Ontology)
Claim to citation relation CiTO
Source and document type DoCO and IAO
Article type FaBiO
Assertion and evidence structure SEPIO
Provenance PROV-O
Claim structure Bucur et al. 5-slot SuperPattern (K-CAP 2021)

The one thing Indicium mints is the binding: a claim, its typed evidence, and the source that evidence points to, provenance-stamped. That binding is the load-bearing contribution. The claim structure is borrowed from Bucur; the value Indicium standardizes is the typed grounding of claims in evidence.

Indicium is a vocabulary and a standard, not a tool and not a store. Every tool that mints claims imports it, so a claim minted by any of them is structurally identical to one minted by another, merges with it, and never travels without its evidence trace.

Part Where
LinkML schema, the source of truth src/indicium/schema/indicium.yaml
Pydantic models (Claim, Evidence, Source, CitationLink, ClaimLink, IndiciumDocument, ...) indicium.generated.model, re-exported from indicium
SHACL shapes, OWL ontology, JSON Schema src/indicium/generated/, copied to docs/schema-assets/; the published SHACL file adds the supplemental shapes of src/indicium/augmentation/
JSON-LD context src/indicium/schema/context.jsonld
SHACL validation indicium.validate_graph
Quote verification kernel indicium.verify_quote
Projections to ASB task cards, ASTRA and KGmemory indicium.adapters, indicium.astra_bridge

The name

Indicium (Latin) is "a sign or mark that points to the truth"; in law, the evidentiary indication. The package is named for what it standardizes: every claim carries its indicia, the traces that justify believing it.

  • indicium (singular) is the standard and this package.
  • indicia (plural) is the body of evidence attached to a claim, and the term consumer APIs use for the produced collection.

Install

Requires Python 3.11 or newer.

pip install indicium-standard      # distribution name
python -c "import indicium"        # import name

Optional extras:

pip install "indicium-standard[astra]"     # ASTRA bridge (PyYAML)
pip install "indicium-standard[codegen]"   # regenerate the artefacts from the LinkML source

The 2.0.0 upload to PyPI is pending (RELEASING.md). Until pip install indicium-standard finds it, install from the repository:

pip install "git+https://github.com/HolobiomicsLab/indicium"

The distribution is indicium-standard; the import package is indicium. The PyPI name indicium belongs to an unrelated, abandoned key-value-store package that also ships a top-level indicium module. Installing both into the same environment will clobber the import. Always depend on indicium-standard.

Quickstart

Validate a claim against the SHACL shapes (adapted from tests/test_validate.py):

import rdflib
from indicium import ASB_BASE, validate_graph

claim = f"""
@prefix asb: <{ASB_BASE}> .
<urn:claim:1> a asb:Claim ;
    asb:context "in vitro" ;
    asb:subject "compound A" ;
    asb:qualifier "inhibits" ;
    asb:relation "inhibits growth of" ;
    asb:object "cell line B" .
"""
conforms, report = validate_graph(rdflib.Graph().parse(data=claim, format="turtle"))
print(conforms)  # True

incomplete = f"""
@prefix asb: <{ASB_BASE}> .
<urn:claim:2> a asb:Claim ; asb:context "in vitro" .
"""
conforms, report = validate_graph(rdflib.Graph().parse(data=incomplete, format="turtle"))
print(conforms)  # False

report names each missing slot. The quickstart continues with the typed model and the adapters; every Python example in this README and on the Home, Quickstart and URI scheme pages runs in the test suite (tests/test_docs_examples.py).

Vocabulary and IRIs

Import the namespace bases; never copy the IRI string into your own code. A hardcoded base keeps pointing at the old namespace when the standard moves, and the SHACL shapes then match nothing: every graph validates as conforms=True while no constraint is actually checked.

from indicium import ASB_BASE, INDICIUM_BASE, asb_term

asb_term("Claim")   # 'https://w3id.org/asb#Claim'
ASB = "https://w3id.org/asb#"   # don't: silently dead after a move
Prefix Namespace Names Resolves (measured 2026-10-30)
asb: https://w3id.org/asb# asb:Claim and its SuperPattern slots (context, subject, qualifier, relation, object), plus domainQualifier, sourceTaskKind and workflowCoupling Yes. Registered on w3id.org on 29 October 2026; 303 to holobiomicslab.eu/ns/asb, which serves Turtle, JSON-LD and HTML
asbval: https://w3id.org/asb/validation# Validation assertion terms used beside asb: by ASB Yes. Same registration; 303 to holobiomicslab.eu/ns/asbval
indicium: https://w3id.org/indicium/ The schema id, the JSON-LD context prefix, and every class and slot without its own IRI binding: claim metadata, the evidence and source slots, ClaimLink, CitationLink, IndiciumDocument No (404). Not registered yet; the request files are in docs/release/w3id-indicium/

docs/uri-scheme.md has the redirect chains, the identifier conventions for claims and evidence, and what the /indicium registration will point at. tests/test_namespace_resolves.py fetches each namespace when INDICIUM_NETWORK_TESTS=1 is set.

Ecosystem

Indicium is the shared layer; the projects below mint, store or consume its claims.

Project What it is Relation to Indicium
ASTRA A declarative YAML format for scientific analyses: inputs, outputs, decisions and evidence (astra-spec) indicium.astra_bridge turns claims into ASTRA insights and reads ASTRA findings back as claims
AgenticScienceBuilder (ASB) Distils research articles into agent skills, task cards and capsules Depends on indicium-standard>=2.0.0,<3; its claims use the asb: vocabulary
asb-skill-collections Registry and release tooling of the ASB skill collections The v1 trees carry Indicium documents written before 2.0.0 (earlier asb: base, not 2.0.0-conformant); later versions will carry 2.0.0 documents
asb-skills-<domain> The skill collections, one repository per domain Built by ASB; same vocabulary
Perspicacité Local-first retrieval-augmented system for searching and organizing the scientific literature Uses the Indicium stack, when installed, for claim validation, the claim graph and the ASTRA export
Scriptorium Manuscript authoring Depends on indicium-standard>=2.0.0,<3 and the adapters
KGmemory Where claims are stored and reasoned over indicium.adapters.kgmemory emits a JSON-LD node typed mem:SemanticMemory
indicium-adapters The DomainAdapter and SHACLProvider protocols and entry-point discovery Domain shapes reach validate_graph(..., extra_shapes=...)
indicium-adapters-<domain> Domain bundles: agentic-ai, astronomy, epigenomics, genomics, metabarcoding, metabolomics, metagenomics, multi-omics, proteomics, transcriptomics Ontology terms and SHACL shapes per domain

AgenticScienceBuilder, Scriptorium, KGmemory, the asb-skills-<domain> collections and the indicium-adapters family are not public yet.

Development

uv sync --frozen --extra codegen --extra docs
uv run pytest -q              # includes the conformance suite (parity with the Scriptorium SHACL)
make lint                     # ruff over src/ and scripts/
make gen                      # regenerate model.py, shapes.ttl, ontology.ttl, schema.json
make context                  # regenerate the packaged JSON-LD context from the LinkML URI bindings
make schema-assets            # make gen and make context, then copy the artefacts and the changelog into docs/
uv run mkdocs build --strict  # the documentation site, as docs.yml deploys it

docs/changelog.md is a copy of CHANGELOG.md (make docs-changelog); edit only the latter. make gen writes canonical Turtle, so a second run is byte-identical to the committed files; release.yml fails when it is not.

Namespace bases are stable identifiers. Their registration and the vocabulary site are prepared separately from the Python release; they do not provide an instance store. Read the URI scheme and the SEPIO compatibility notes before exporting RDF.

Release and versioning policy

Indicium follows Semantic Versioning, read for a vocabulary:

  • Term IRIs are immutable after a tagged release. Published data embeds them.
  • Additive changes are minor: a new class, slot or enum value.
  • An IRI change or a slot removal is major, as is a tighter cardinality. This is why the move of the asb: base to https://w3id.org/asb# is 2.0.0.

A tag v<version> that matches pyproject.toml and a dated CHANGELOG.md section runs the release (.github/workflows/release.yml): the checks, tests, documentation build and installed-wheel check first, then the upload of the wheel and the sdist to PyPI through Trusted Publishing, then the GitHub release with the same files and the three schema artefacts. RELEASING.md is the maintainer checklist. Changes are listed in CHANGELOG.md.

Citation

CITATION.cff holds the citation metadata, which GitHub offers as "Cite this repository". No DOI exists yet. BibTeX, derived from that file with cffconvert -f bibtex (citation key renamed):

@misc{nothias_indicium,
  author = {Nothias, Louis-Félix},
  title  = {Indicium: a standard for typed scientific claims bound to their evidence},
  url    = {https://github.com/HolobiomicsLab/indicium}
}

License

MIT, see LICENSE. Developed at the Holobiomics Lab, CNRS / Université Côte d'Azur.

Metadata

Release files for indicium-standard 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for indicium-standard 2.0.0
File Size Uploaded Provenance Actions
indicium_standard-2.0.0.tar.gz 59.4 kB With provenance Details for indicium_standard-2.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for indicium-standard 2.0.0
File Interpreter ABI Platform Actions
indicium_standard-2.0.0-py3-none-any.whl Python 3 none any Details for indicium_standard-2.0.0-py3-none-any.whl

Total release size: 122.0 kB

Release files / indicium_standard-2.0.0.tar.gz

Download URL indicium_standard-2.0.0.tar.gz
Size 59.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c71006e86cd46d96cf03dda7c265fc8ffd19ef633fde3e57e1403de958cf7aa4
BLAKE2b-256 checksum
How to use checksums
9cbcd6afea82433a76a239ca8fa0b66ee17d4f34b2a871f5e8365c82ff609d4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Release files / indicium_standard-2.0.0-py3-none-any.whl

Download URL indicium_standard-2.0.0-py3-none-any.whl
Size 62.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5aec742bad6953234a1c038fbb51dd2f1e210fe5a34ad41f8803347ccb0c103e
BLAKE2b-256 checksum
How to use checksums
3122abe9169fd7eda167397546fd90547cd078ff9f364158d5472c4101e40741
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Security for indicium-standard 2.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for indicium_standard-2.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page