v0.7.0
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$schemaas the sole version anchor;$schemais part of the signedjcs()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_typecarries 17 DataCite-style work-type tokens mapped to resolvable schema.org/FaBiO class IRIs.
Breaking Changes
IsccMetais unaffected. It still defaults told=Trueand 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$schemaonly, with no@context/@type. Passld=Trueto restore full JSON-LD. - Standalone schema
$schemaURLs 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$schemastring must account for the-X.Y.Zsuffix.recover_context()resolves both forms, so v0.6.0 records still recover. $schemais 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
ldparameter to.dict(),.json(),.jcs()for controlling JSON-LD output - Seed models (ISBN, ISRC, STM) default to
ld=False(compact JSON with$schemaonly) - Service models (TDM, GenAI) default to
ld=True(full JSON-LD for registry/gateway interop) - Protocol model (IsccNote) defaults to
ld=False(compact JSON,$schemaas 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 anindentargument for pretty-printing compact records and forwardsexclude_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
$schemaand 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-jsonldextension to every standalone JSON Schema documenting the JSON-LD upgrade path (versioned context URL,@type, human-readable recipe) for compact records - Versioned the
@context/$schemaURLs shown in the main IsccMeta docs example
Field Status & Tooling
- Promoted
$schema,nonce,signature,generator, andtdm_reservationtostable - 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
gatewayURL pattern ($) so values with embedded whitespace or trailing characters are rejected rather than silently accepted into a permanent declaration record - Corrected the IsccNote
@typedescription ("service metadata" → "protocol metadata")
Documentation
- Templated the version string in hand-written docs (guide, examples, versioning) via Zensical's
macrosextension, so version-pinned example URLs derive fromiscc_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.txtgenerator to resolve the version token
Links
- Documentation: https://schema.iscc.codes
- PyPI: https://pypi.org/project/iscc-schema/0.7.0/
- JSON Schema: https://schema.iscc.codes/schema/0.7.0.json
- JSON-LD Context: https://schema.iscc.codes/context/0.7.0.jsonld
Full Changelog: v0.6.0...v0.7.0