Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ described in `VERSIONING.md`.

### Changed

- A `custodyChain` agent may be the `id` of any Sourcelume record, including a
`TrainingProvenanceRecord`, no longer only of a `ProvenanceRecord`. Data that validated before
still does; the schemas are unchanged.
- New section "One IRI, one record": an IRI denotes exactly one record, of one type, for its whole
life; references resolve across record types, and a Registry reports the referenced record's
current state when the referencing record is read (one hop, status only).
- Namespace moved to the stable `https://sourcelume.apache.org/ns#`. The context URL stays
versioned (`/context/0.0.1/`).
- The JSON Schema accepts only the canonical context IRI as `@context`. Inline context objects
Expand Down
16 changes: 14 additions & 2 deletions spec/0.0.1/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,11 @@ Each `custodyChain` entry's `agent` is an IRI. That IRI may point to either:

- an opaque external identifier with no corresponding Sourcelume record (e.g. a
organization's homepage, a DOI, a repository URL), or
- the `id` of another Sourcelume `ProvenanceRecord`.
- the `id` of another Sourcelume record: a `ProvenanceRecord`, or a
`TrainingProvenanceRecord` when the agent is a model that processed the data
(for example, one that rewrote it).

When `agent` refers to another `ProvenanceRecord`, that upstream record's own
When `agent` refers to another Sourcelume record, that upstream record's own
provenance is **not** nested or embedded inside the current record. A consumer
who wants to trace further back resolves `agent` as a reference — for example,
via the Registry's query API — to a separately-signed record of its own.
Expand Down Expand Up @@ -104,6 +106,16 @@ node's full data using standard JSON-LD node inlining, rather than a bare
`@id` reference. This is a serialization choice available to any JSON-LD
consumer already, and does not require any change to this schema.

### One IRI, one record

An IRI denotes exactly one record, of one type, for the whole life of that record. The `id` names
the record, not the thing the record describes: an `agent` that is the `id` of a
`TrainingProvenanceRecord` refers to that record, not to the model itself.

References between records (`custodyChain[].agent`, `trainingData[].dataset`) are by IRI alone
and resolve across record types. A Registry reports the current state of the record a reference
names when the referencing record is read: one hop, status only, nothing stored in either record.

## TrainingProvenanceRecord

A `ProvenanceRecord` says where a dataset came from. It says nothing about which models were
Expand Down
Loading