Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 01 Jun 10:49
· 4 commits to main since this release

Protocol Schemas, STM Seed Schema & Compact Self-Describing JSON

This release adds the Protocol schema category (ISCC Discovery Protocol wire records) alongside the existing Metadata, Seed, and Service categories, introduces an STM seed schema for scholarly works, makes compact self-describing JSON the default for Seed and Protocol records, and version-pins the $schema and @context of every standalone schema. The $schema reference makes compact data recoverable to JSON-LD on demand, conformant with IEP-0002 which accepts both application/json and application/ld+json as meta element formats.

New Schemas

  • IsccNote protocol schema (exported as iscc_schema.IsccNote) — the permanent ISCC Declaration log record for the ISCC Discovery Protocol HUB, and the first member of the new Protocol category. Serializes to compact JSON by default and requires $schema as the sole version anchor; $schema is part of the signed jcs() bytes, pinning the schema version into the signed record. Required: $schema, iscc_code, datahash, nonce, signature.
  • STM seed schema (exported as iscc_schema.STM) — Scientific/Technical/Medical seed metadata for DOI-identified scholarly works, for interoperable Meta-Code generation (IEP-0002). Required: doi, resource_type, title, publisher, pubyear. Optional: version_type (NISO JAV stage), container_title, issn. resource_type carries 17 DataCite-style work-type tokens mapped to resolvable schema.org/FaBiO class IRIs.

Breaking Changes

  • IsccMeta is unaffected. It still defaults to ld=True and serializes full JSON-LD exactly as before. The breaking changes below apply only to the standalone Seed/Service/Protocol models.
  • Seed models (ISBN, ISRC, STM) now default to compact JSON (ld=False): .dict(), .json(), and .jcs() emit $schema only, with no @context/@type. Pass ld=True to restore full JSON-LD.
  • Standalone schema $schema URLs are now version-pinned (e.g. …/isbn-0.7.0.json, …/tdm-0.7.0.json, …/iscc-note-0.7.0.json). Code that matched the old unversioned $schema string must account for the -X.Y.Z suffix. recover_context() resolves both forms, so v0.6.0 records still recover.
  • $schema is now a required field on the ISBN, ISRC, STM, and IsccNote schemas (auto-populated from its const default on construction, so existing construction code keeps working).

Serialization

  • Added ld parameter to .dict(), .json(), .jcs() for controlling JSON-LD output
  • Seed models (ISBN, ISRC, STM) default to ld=False (compact JSON with $schema only)
  • Service models (TDM, GenAI) default to ld=True (full JSON-LD for registry/gateway interop)
  • Protocol model (IsccNote) defaults to ld=False (compact JSON, $schema as version anchor)
  • IsccMeta defaults to ld=True (full JSON-LD, backward compatible)
  • Changed seed metadata examples to compact recoverable JSON format (no @context/@type)
  • .json() now accepts an indent argument for pretty-printing compact records and forwards exclude_unset, so the compact path offers the same formatting controls as the JSON-LD path

Versioning

  • All standalone schemas (seed, service, protocol) now uniformly version both $schema and the default @context, and write a version-pinned archive (<name>-0.7.0.json) next to the latest file; the latest file keeps an unversioned $id
  • Added x-iscc-jsonld extension to every standalone JSON Schema documenting the JSON-LD upgrade path (versioned context URL, @type, human-readable recipe) for compact records
  • Versioned the @context/$schema URLs shown in the main IsccMeta docs example

Field Status & Tooling

  • Promoted $schema, nonce, signature, generator, and tdm_reservation to stable
  • Documented the field-stability contract (stable/draft, one-way promotion) and the bump-first release workflow in the versioning guide
  • Added a release-archive build guard: the schema and context builds abort if a git tag already exists for the current version, preventing silent mutation of released archives (fails open when git is unavailable)

Fixes

  • End-anchored the IsccNote gateway URL pattern ($) so values with embedded whitespace or trailing characters are rejected rather than silently accepted into a permanent declaration record
  • Corrected the IsccNote @type description ("service metadata" → "protocol metadata")

Documentation

  • Templated the version string in hand-written docs (guide, examples, versioning) via Zensical's macros extension, so version-pinned example URLs derive from iscc_schema.__version__ and never go stale on a release bump
  • Made the README version-free (it renders on GitHub/PyPI where macros do not run) and taught the llms-full.txt generator to resolve the version token

Links

Full Changelog: v0.6.0...v0.7.0