Skip to content

All versions since 0.2.0

0.2.0

Added

  • A LinkML rendering of gist 14.1.0. scripts/gist_to_linkml.py converts the vendored release under upstream/, folds in its RDFS annotations and subclass assertions, and gives the same output on every run.
  • SSSOM mappings to other vocabularies, in src/gist/mappings/, matched to schema elements by IRI and merged into the schema by scripts/apply_sssom_overlay.py.
  • Every gist term keeps its Semantic Arts IRI. What this project adds lives under gist_linkml:, and the tests check both rules against the vendored release.
  • The package is built for PyPI as gist-linkml; the import package stays gist. Nothing is uploaded until PyPI releases are switched on.
  • A .lokf/ knowledge bundle describes the repository, kept current by the scheduled librarian and checked by knowledge-registrar.yaml.
  • NOTICE credits the third-party work this project carries or derives from: gist and its validation files (CC BY 4.0, with the changes made), the mapping sets’ terms, linkml-project-copier (MIT) and the sidecar templates. The package ships it beside LICENSE.
  • Governance files to the family standard: AI_COVENANT.md, SECURITY.md, a checklist CONTRIBUTING.md, Contributor Covenant 2.1, and issue and pull-request templates.
  • Semantic release. The version is computed from Conventional Commits on main; this file’s ## [Unreleased] section becomes the release notes, behind the release Environment. The PyPI upload it dispatches stays off until the PYPI_RELEASE_ENABLED repository variable is true.
  • lint-and-docs.yaml runs ShellCheck, actionlint, markdownlint, lychee and codespell over every tracked Markdown file, and holds CONTRIBUTING.md and SECURITY.md to their word budgets.
  • CI fails when src/gist/schema/ differs from what the converter generates, so a hand edit to the schema cannot land.
  • No release before the v0.1.0 baseline tag exists, which would otherwise make the first release 1.0.0.

Security

  • Every workflow pins its actions to commit SHAs and runs harden-runner in audit mode. Dependabot now also watches the Python trees at / and /.lokf, and CI installs with uv sync --locked.

0.2.1

Added

  • CI also fails on stale artefacts and schema errors. just verify-generated compares project/ and the datamodel with a fresh gen-project by content, and linkml-lint fails the run on errors.
  • upstream-watch.yaml checks weekly what the build depends on but cannot control: whether Semantic Arts has released a newer gist, whether upstream/ still matches its release byte for byte, and whether every mapped target term still exists on its schema’s default branch. A failure opens or updates an issue.
  • just verify-mapping-targets checks that every mapped term exists in its target schema, fetched at a pinned commit, and runs in CI.

Fixed

  • The converter no longer loses or bends what gist says. A union domain was written as an any_of range and functional properties were marked multivalued; both are corrected. It now carries gist:domainIncludes and rangeIncludes as slot annotations, union datatype ranges as any_of, owl:qualifiedCardinality, rdfs:seeAlso, the editorial notes on reference individuals, the gist:uniqueText of each media type, and each module’s ontology header (definition, license, release history, version IRI).
  • disjoint_with is always a list, as the LinkML metamodel requires, so linkml-lint reports no errors on the schema.
  • The SSSOM mappings name real terms. The CDM and DPV sets bound their prefixes to namespaces that do not exist, and one DPV target was misspelt; each mapping set’s file is now named after its set. Reversed broad and narrow matches and overstated close and exact matches are corrected, two unsupported mappings are dropped, and the files pass the SSSOM validator except for semapv:LLMBasedMatching, which SEMAPV defines but the SSSOM schema does not yet list.

0.3.0

Added

  • gist_to_linkml.py --rename OLD=NEW gives a gist class or slot another LinkML name and keeps its gist IRI, for a schema that imports gist beside another vocabulary with the same names. LOKF’s Person, Organization, name, description and license are the case in point. Default output is unchanged.
  • Each release carries gist-linkml-lokf-<tag>.yaml, gist_core.yaml with those five renamed, so a LOKF domain schema can import it beside lokf.yaml in either order. just gen-lokf-copy builds it and fails on any name still shared with the lokf.yaml the sidecar locks; CI runs the same check on every pull request.

Changed

  • Release assets are named gist-linkml, the published package name, instead of the repository’s name gist: the bundle zip is knowledge-<tag>-gist-linkml.zip and the Copilot skill ktl-docent-m365-<tag>-gist-linkml.zip. knowledge-release.yaml is refreshed from the ktl-sidecar template, which reads the name from the KNOWLEDGE_RELEASE_NAME repository variable.

0.3.1

Fixed

  • An object property gist leaves unranged now ranges over Any, not string. Its value is an individual, so a JSON-LD context reads it as an IRI, and the generated OWL declares it an object property again rather than a datatype property.

0.3.2

Fixed

  • .lokf/justfile takes a domain schema as one variable. It was the copy from before ktl-sidecar v0.38.0, which the sidecar sync never carried. The generated schema is unchanged.

0.3.3

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Security

  • The sidecar copies and the skills pin match ktl-sidecar v0.43.1. The pin had stayed at v0.27.1; the sync adds the apply and report scripts and the gate’s newer conventions checks.

0.3.4

Security

  • The skills pin matches v0.44.0. The release changed none of the sidecar copies this repository carries.

0.3.5

Security

  • The lock takes the patched tornado, urllib3, mistune and jupyter-server. It closes every open security alert on uv.lock, the critical jupyter-server one included. The published package’s own dependencies are unchanged.

0.3.6

Security

  • The sidecar copies and the skills pin match v0.45.0. The release changed .lokf/scripts/knowledge-report.sh, .lokf/m365/ktl-docent-m365.md, website/scripts/sync.mjs, website/src/components/ConceptCard.astro, website/src/content.config.ts and website/src/styles/catalogue.css here; its changelog says how.

0.3.7

Security

  • The sidecar copies and the skills pin match v0.45.1. The release changed .lokf/scripts/knowledge-apply.py and .lokf/scripts/knowledge-federate.py here; its changelog says how.

0.3.8

Security

  • The sidecar copies and the skills pin match v0.46.0. The release changed .github/workflows/knowledge-release.yaml, .lokf/scripts/knowledge-federate.py, website/package-lock.json and website/package.json here; its changelog says how.

0.3.9

Security

  • The sidecar copies and the skills pin are at Knowledge Trust Ladder v0.47.0. The release changed .lokf/scripts/knowledge-preflight.sh, .github/workflows/knowledge-sync.yaml, .github/PULL_REQUEST_TEMPLATE/knowledge-sync.md and .lokf/scripts/knowledge-sync.sh here.

0.3.10

Security

  • The sidecar copies and the skills pin are at Knowledge Trust Ladder v0.52.0. The release changed .github/workflows/knowledge-registrar.yaml, .github/PULL_REQUEST_TEMPLATE/knowledge-sync.md, .lokf/scripts/knowledge-conventions.sh, .lokf/scripts/knowledge-conventions.py, .lokf/scripts/knowledge-preflight.sh, .lokf/scripts/knowledge-report.sh and .lokf/scripts/knowledge-sync.sh here.

0.3.11

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Security

  • The sidecar copies and the skills pin are at Knowledge Trust Ladder v0.53.0. The release changed .github/workflows/knowledge-librarian.yaml, .github/workflows/knowledge-sync.yaml, .github/PULL_REQUEST_TEMPLATE/knowledge-sync.md, .lokf/scripts/knowledge-librarian.sh, .lokf/scripts/knowledge-apply.py and .lokf/scripts/knowledge-sync.sh here.

0.3.12

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Security

  • The sidecar copies and the skills pin are at Knowledge Trust Ladder v0.55.0. The release changed .github/workflows/knowledge-registrar.yaml, .github/workflows/knowledge-release.yaml, .github/workflows/knowledge-sync.yaml, .lokf/scripts/knowledge-librarian.sh, .lokf/scripts/knowledge-conventions.sh, .lokf/scripts/knowledge-conventions.py, .lokf/scripts/knowledge-preflight.sh, .lokf/scripts/knowledge-provenance.sh, .lokf/scripts/knowledge-feedback.sh, .lokf/scripts/knowledge-apply.sh, .lokf/scripts/knowledge-apply.py, .lokf/scripts/knowledge-report.sh, .lokf/scripts/knowledge-sync.sh, .lokf/.gitignore and .lokf/justfile here.

0.3.13

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Security

  • The sidecar copies and the skills pin are at Knowledge Trust Ladder v0.55.2. The release changed .lokf/scripts/knowledge-preflight.sh and .lokf/scripts/knowledge-sync.sh here.

0.3.14

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Security

  • The sidecar copies and the skills pin are at Knowledge Trust Ladder v0.56.1. The release changed .github/workflows/knowledge-registrar.yaml, .github/workflows/knowledge-librarian.yaml, .github/workflows/knowledge-release.yaml, .lokf/scripts/knowledge-preflight.sh and .lokf/scripts/knowledge-sync.sh here.

0.3.15

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Security

  • The sidecar copies and the skills pin are at Knowledge Trust Ladder v0.56.2. The release changed .lokf/.gitignore here.

0.3.16

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Fixed

  • A ! after the type marks a breaking change. .releaserc.json names the Conventional Commits preset, so a feat!: commit bumps the minor version instead of releasing nothing.

0.4.0

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Added

  • A website for the schema and the knowledge bundle. website/ is an Astro Starlight site built from the README, docs/, the changelog, the schema’s gen-doc pages and the bundle, and knowledge-website.yaml builds it on every pull request. It deploys to Pages once KNOWLEDGE_WEBSITE_ENABLED is true.

Removed

  • The mkdocs site. mkdocs.yml, deploy-docs.yaml and the five dev dependencies only mkdocs used are gone, and the website redirects the old /elements/<Term>/ and /about/ addresses to their new pages.

0.5.0

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Added

  • gist’s properties attach to the classes that may carry them. A property’s slot goes to each class its rdfs:domain names, and the GistThing mixin, which every class takes, holds the 89 that gist declares without a domain, since OWL lets those describe any individual. The JSON Schema, the Python models and the SHACL shapes now accept gist data beyond name and description, such as a Magnitude with a numeric_value and a has_unit_of_measure; docs/about.md says where they stay stricter than gist.

Changed

  • The generated artefacts come from linkml 1.12.1. The Protobuf file is now valid proto3, the JSON Schema carries each element’s examples, the JSON-LD names exact mappings exact_mappings, and the Python datamodel types conversion_factor and numeric_value as numbers. The Java classes that gen-java now writes are git-ignored.
  • gist’s long notes keep their paragraphs and nesting, and lose their Turtle layout. Windows line ends, outer blank lines and the tab indent a note’s lines share are gone, and a deeper indent becomes two spaces a tab, so the schema holds each note as a YAML block.
  • A deprecated term gives a reason. Its deprecated reads “gist marks this term owl:deprecated.” in place of 'true', as LinkML expects a reason there; gist’s removal guidance stays in the term’s notes.
  • An element’s gist label is its title. The skos:prefLabel, or else the rdfs:label, was the first of its aliases; other labels stay aliases. The docs pages head each element with it, the JSON Schema and the Pydantic fields carry it, and the OWL writes it as dcterms:title, not skos:altLabel.
  • The JSON Schema, the Pydantic module and the SHACL shapes are larger. They repeat each inherited slot in every class, so with the slots above they grow to about 5 MB, 7 MB and 2.4 MB.
  • just verify-generated compares the OWL and the SHACL in seconds. Their blank nodes form trees, so it compares a digest of each tree; rdflib’s general isomorphism check took many minutes on the larger shapes. It also puts back the schema, which gen-project regenerates.
  • The OWL leaves out the restrictions that repeat a property’s range or a minimum of none. gen-owl’s coming defaults, set now, take its 3,533 triples to 2,617, and GistThing’s restrictions from 215 to 45.

Removed

  • The SQL DDL. With the slots above, it would hold some 5,400 tables, one for each multivalued slot of each class, and take gen-project over five minutes and 4 GB to write, so .linkml/generators.yaml skips sqltable and project/sqlschema/ is gone.
  • just testdoc and just deploy. testdoc ran mkdocs serve, which 0.4.0 removed, and deploy called mkd-gh-deploy, which nothing defines. npm run dev in website/ previews the site, and knowledge-website.yaml deploys it.

Fixed

  • The OWL types each gist property as gist does. A union of classes left nine object properties on the default string range, so the OWL declared them datatype properties (and gist’s four annotation properties too) and the Python datamodel typed six as strings.
  • gist:domainIncludes and gist:rangeIncludes stay hints. They no longer become a slot’s domain or range, which gist’s own axioms step outside (a FormattedContent is expressed in a MediaType, not a Language), so eleven slots lose a domain and nine are ranged over Any.
  • A datatype gist names keeps its own IRI. xsd:double became LinkML’s float, and XSD’s other integer types and OWL’s rational and real became integer or decimal, so the SHACL shapes rejected a latitude or a numeric_value gist allows. gist_core declares a type for each datatype linkml:types lacks, and .linkmllint.yaml lets its xsd:int through.
  • The converter stops at a domain it cannot carry faithfully, such as two domains or a class gist does not declare, rather than put the slot on too many classes or too few. A class also takes the domain slots of a second superclass, an unranged object subproperty its parent’s range, and enum values whose keys collide stay apart; gist 14.1.0 meets none of these.
  • The OWL marks the terms gist deprecates owl:deprecated. gen-owl writes no triple for LinkML’s deprecated, so each of the five also carries an owl:deprecated: true annotation, which it does write.
  • A superproperty outside gist is a broad mapping. domain_includes and range_includes, subproperties of skos:scopeNote, named it as a related mapping by its full IRI.
  • The data tests check the examples. tests/test_data.py passed whether a file loaded or not; it now validates each example with closed classes, and checks that each counter-example fails for the one reason its file name states.

0.6.0

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Added

  • The documentation site’s home page has a Schema button, which opens the schema’s pages.

Changed

  • The knowledge bundle needs lokf 0.9.0, and the release’s LOKF copy comes from its lokf adapt, with gist’s top classes re-rooted on LOKF’s Concept. A bundle writes type: Requirement directly, and a slot ranged over a gist class takes a concept IRI that lokf validate --check-refs checks; the copy now imports lokf, so save it beside lokf.yaml as gist_core_lokf.yaml and import gist_core_lokf.

0.6.1 Latest

As it stood at this release: the repository · the docs · the knowledge bundle · the release

Security

  • The sidecar copies and the skills pin are at Knowledge Trust Ladder v0.59.0. The release changed .github/workflows/knowledge-librarian.yaml, .github/workflows/knowledge-release.yaml, .lokf/scripts/knowledge-conventions.sh, .lokf/scripts/knowledge-conventions.py, .lokf/scripts/knowledge-preflight.sh, .lokf/scripts/knowledge-apply.sh, .lokf/scripts/knowledge-apply.py, .lokf/scripts/knowledge-report.sh, .lokf/m365/ktl-docent-m365.md, website/package-lock.json, website/package.json and website/scripts/config.mjs here.