All versions since 0.2.0
0.2.0
Added
- A LinkML rendering of gist 14.1.0.
scripts/gist_to_linkml.pyconverts the vendored release underupstream/, 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 byscripts/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 staysgist. Nothing is uploaded until PyPI releases are switched on. - A
.lokf/knowledge bundle describes the repository, kept current by the scheduled librarian and checked byknowledge-registrar.yaml. NOTICEcredits 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 besideLICENSE.- Governance files to the family standard:
AI_COVENANT.md,SECURITY.md, a checklistCONTRIBUTING.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 thereleaseEnvironment. The PyPI upload it dispatches stays off until thePYPI_RELEASE_ENABLEDrepository variable istrue. lint-and-docs.yamlruns ShellCheck, actionlint, markdownlint, lychee and codespell over every tracked Markdown file, and holdsCONTRIBUTING.mdandSECURITY.mdto 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.0baseline 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 withuv sync --locked.
0.2.1
Added
- CI also fails on stale artefacts and schema errors.
just verify-generatedcomparesproject/and the datamodel with a freshgen-projectby content, andlinkml-lintfails the run on errors. upstream-watch.yamlchecks weekly what the build depends on but cannot control: whether Semantic Arts has released a newer gist, whetherupstream/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-targetschecks 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_ofrange and functional properties were marked multivalued; both are corrected. It now carriesgist:domainIncludesandrangeIncludesas slot annotations, union datatype ranges asany_of,owl:qualifiedCardinality,rdfs:seeAlso, the editorial notes on reference individuals, thegist:uniqueTextof each media type, and each module’s ontology header (definition, license, release history, version IRI). disjoint_withis always a list, as the LinkML metamodel requires, solinkml-lintreports 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=NEWgives 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’sPerson,Organization,name,descriptionandlicenseare 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 besidelokf.yamlin either order.just gen-lokf-copybuilds it and fails on any name still shared with thelokf.yamlthe 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 namegist: the bundle zip isknowledge-<tag>-gist-linkml.zipand the Copilot skillktl-docent-m365-<tag>-gist-linkml.zip.knowledge-release.yamlis refreshed from the ktl-sidecar template, which reads the name from theKNOWLEDGE_RELEASE_NAMErepository variable.
0.3.1
Fixed
- An object property gist leaves unranged now ranges over
Any, notstring. 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/justfiletakes a domain schema as one variable. It was the copy from before ktl-sidecarv0.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 atv0.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.tsandwebsite/src/styles/catalogue.csshere; 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.pyand.lokf/scripts/knowledge-federate.pyhere; 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.jsonandwebsite/package.jsonhere; 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.mdand.lokf/scripts/knowledge-sync.shhere.
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.shand.lokf/scripts/knowledge-sync.shhere.
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.pyand.lokf/scripts/knowledge-sync.shhere.
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/.gitignoreand.lokf/justfilehere.
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.shand.lokf/scripts/knowledge-sync.shhere.
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.shand.lokf/scripts/knowledge-sync.shhere.
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/.gitignorehere.
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.jsonnames the Conventional Commits preset, so afeat!: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’sgen-docpages and the bundle, andknowledge-website.yamlbuilds it on every pull request. It deploys to Pages onceKNOWLEDGE_WEBSITE_ENABLEDistrue.
Removed
- The mkdocs site.
mkdocs.yml,deploy-docs.yamland 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:domainnames, and theGistThingmixin, 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 beyondnameanddescription, such as aMagnitudewith anumeric_valueand ahas_unit_of_measure;docs/about.mdsays 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 typesconversion_factorandnumeric_valueas numbers. The Java classes thatgen-javanow 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
deprecatedreads “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. Theskos:prefLabel, or else therdfs: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 asdcterms:title, notskos: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-generatedcompares 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, whichgen-projectregenerates.- 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-projectover five minutes and 4 GB to write, so.linkml/generators.yamlskipssqltableandproject/sqlschema/is gone. just testdocandjust deploy.testdocranmkdocs serve, which 0.4.0 removed, anddeploycalledmkd-gh-deploy, which nothing defines.npm run devinwebsite/previews the site, andknowledge-website.yamldeploys 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:domainIncludesandgist:rangeIncludesstay hints. They no longer become a slot’sdomainorrange, which gist’s own axioms step outside (aFormattedContentis expressed in aMediaType, not aLanguage), so eleven slots lose a domain and nine are ranged overAny.- A datatype gist names keeps its own IRI.
xsd:doublebecame LinkML’sfloat, and XSD’s other integer types and OWL’srationalandrealbecameintegerordecimal, so the SHACL shapes rejected alatitudeor anumeric_valuegist allows. gist_core declares a type for each datatype linkml:types lacks, and.linkmllint.yamllets itsxsd:intthrough. - 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’sdeprecated, so each of the five also carries anowl:deprecated: trueannotation, which it does write. - A superproperty outside gist is a broad mapping.
domain_includesandrange_includes, subproperties ofskos:scopeNote, named it as a related mapping by its full IRI. - The data tests check the examples.
tests/test_data.pypassed 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’sConcept. A bundle writestype: Requirementdirectly, and a slot ranged over a gist class takes a concept IRI thatlokf validate --check-refschecks; the copy now importslokf, so save it besidelokf.yamlasgist_core_lokf.yamland importgist_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.jsonandwebsite/scripts/config.mjshere.