Replace sl:agreement-supplied IRI with SPDX NoAssertionLicense

Drops the self-referential Sourcelume-native IRI in favor of an
externally-grounded SPDX standard IRI, per the alignment principle
(Sourcelume aligns with existing efforts rather than inventing slightly
different conventions).

Change:
- license field: 5 records that carried
  https://sourcelume.apache.org/ns#agreement-supplied now carry
  https://spdx.org/rdf/3.0.1/terms/ExpandedLicensing/NoAssertionLicense
  (bloom-roots-pseudo-crawled-websites, bloom-roots-s2orc-academic-papers,
   dfm-mimir-dbc, dfm-mimir-lexdk-articles, olmo-dolma-the-stack-code).
- licenseNote: added/adjusted on those 5 records to carry the
  private/non-redistributable qualifier (the nuance SPDX's NoAssertionLicense
  doesn't express by itself — it signals "no public license assertion",
  licenseNote says "because the terms are private").
- licenseCategory: "agreement-supplied" KEPT as an enum value — it's a
  Sourcelume classification of the licensing *model*, not a license IRI.
  4 records now set licenseCategory: agreement-supplied explicitly.
- schema + spec: licenseCategory description and License IRI conventions
  subsection (b) updated to point at the SPDX NoAssertionLicense IRI and
  describe the licenseNote + licenseCategory pairing.
- notes: updated the 4 stress-test notes' IRI references.

Honesty caveat (flagged on dev list): SPDX defines NoAssertionLicense for
"cannot determine / made no attempt / intentionally no info", not
explicitly for "license exists but is private". We extend its use
slightly; licenseNote carries the distinction. The dev-list thread
proposes this and awaits consensus.

Validation: 30/30 records PASS (JSON Schema + SHACL) with the new IRI.

Apache-ai: Yes
Generated-by: pi (anthropic/claude-opus-4-1)
Reviewed-by: anierbeck
11 files changed
tree: 95b5703365148297f30b61bea41d05cc150d143f
  1. .github/
  2. context/
  3. dev/
  4. examples/
  5. mappings/
  6. notes/
  7. schema/
  8. spec/
  9. tests/
  10. tools/
  11. .asf.yaml
  12. .gitignore
  13. AGENTS.md
  14. CHANGELOG.md
  15. LICENSE
  16. NOTICE
  17. pom.xml
  18. pyproject.toml
  19. README.md
  20. SETUP.md
  21. uv.lock
  22. VERSIONING.md
README.md

Apache Sourcelume — Spec (sourcelume-spec)

Overview

This repository contains our Apache Sourcelume specification.

ssourcelume-spec/
├── LICENSE                     # Apache 2.0 (code/tooling)
├── README.md
├── NOTICE                      # required for ASF releases
├── CHANGELOG.md
├── context/
│   ├── 0.0.1/
│   │   └── sourcelume.jsonld    # the JSON-LD @context document, pinned
│   └── latest -> 0.0.1/        # symlink or redirect, NOT a moving target for actual releases
├── schema/
│   ├── 0.0.1/
│   │   ├── sourcelume.schema.json   # JSON Schema for structural validation
│   │   └── sourcelume.shacl.ttl     # SHACL shapes for RDF-level validation (optional but common for JSON-LD vocabs)
│   └── ...
├── spec/                         # the prose specification
│   ├── 0.0.1/
│   │   └── index.md (or .adoc)   # human-readable spec text, versioned alongside schema
├── examples/
│   ├── minimal-record.jsonld
│   ├── full-provenance-card.jsonld
│   └── crosswalk/                # worked examples showing mapping to Croissant / SPDX / OTDI fields
├── mappings/
│   ├── croissant-crosswalk.md
│   ├── spdx-ai-profile-crosswalk.md
│   └── otdi-crosswalk.md
├── tools/
│   ├── validate.py               # or JS — validates examples/ against schema/shacl on every PR
│   └── render-docs.py            # generates human-readable HTML/MD from schema
├── .github/workflows/
│   └── validate.yml              # CI: lint JSON-LD, run schema+SHACL validation, check examples
└── .gitignore

Versioning

This project follows Semantic Versioning. See VERSIONING.md for how MAJOR, MINOR, and PATCH apply to specification changes, and for the rules around the latest pointer and immutable released versions.

Get involved

License

This project is licensed under Apache License, Version 2.0.