Published May 13, 2026
| Version v1.11.0
Software
Open
LinkML: A Linked Open Data Modeling Language
Authors/Creators
-
Moxon, Sierra A.T.
- Solbrig, Harold
-
Harris, Nomi L.
- Kalita, Patrick
- Miller, Mark A.
- Patil, Sujay
- Schaper, Kevin
- Bizon, Chris
- Caufield, J. Harry
- Cirujano Cuesta, Silvano
- Cox, Corey
- Dekervel, Frank
- Dooley, Damion M.
- Duncan, William D.
- Fliss, Tim
- Gehrke, Sarah
- Graefe, Adam S.L.
- Hegde, Harshad
- Ireland, AJ
- Jacobsen, Julius O.B.
- Krishnamurthy, Madan
- Kroll, Carlo
-
Linke, David
- Ly, Ryan
- Matentzoglu, Nicolas
- Overton, James A.
- Saunders, Jonny L.
- Unni, Deepak R.
- Vaidya, Gaurav
- Vierdag, Wouter-Michiel A.M.
- Putman, Tim
- LinkML Community Contributors
- Ruebel, Oliver
- Chute, Christopher G.
- Brush, Matthew H.
-
Haendel, Melissa A.
-
Mungall, Christopher J.
Description
linkml-lint note
linkml-lintis now more strict about type validation in schema files. The Python runtime still coerces many shorthand forms at load time, but schemas that previously passedlinkml-lintmay now fail type checks. Some specific patterns:- Multivalued slots must be YAML lists. Bare scalar shorthands under
comments,notes,in_subset,see_also,aliases, the*_mappingsfamily, and other multivalued metamodel slots are no longer accepted — you'll need to wrap them in a list. deprecatedis a string, not a boolean. The slot is defined to carry a human-readable reason for deprecation. To mark an element deprecated without a reason, it works to use a quoted string (e.g.deprecated: "true") — a bare value that yaml coerces to a boolean will fail the type check.examples.valuemust be a string. Useexamples.valuefor the canonical textual representation of an example. Non-string examples (mappings, numbers, booleans, nested objects) belong underexamples.object.
- Multivalued slots must be YAML lists. Bare scalar shorthands under
What's Changed
- Fix induced_slot setting alias equal to slot name by @kevinschaper in https://github.com/linkml/linkml/pull/3135
- fix: skip subproperty_of Literal expansion when range is class or enum by @vladistan in https://github.com/linkml/linkml/pull/3185
- Feature: Improve YARRRML generator object semantics & inline handling by @lapkinvladimir in https://github.com/linkml/linkml/pull/3131
- feat(plantumlgen): enum rendering, --all flag, format fix, mixin improvements by @mgskjaeveland in https://github.com/linkml/linkml/pull/3201
- mark more tests that use the metamodel as slow by @sneakers-the-rat in https://github.com/linkml/linkml/pull/3210
- Emit URIRef for xsd:anyURI values in RDF serialization by @amc-corey-cox in https://github.com/linkml/linkml/pull/3221
- Use vendored JSON-LD context in generators by @amc-corey-cox in https://github.com/linkml/linkml/pull/3224
- fix(owlgen): implement children_are_mutually_disjoint by @mgskjaeveland in https://github.com/linkml/linkml/pull/3187
- Submit releases to the LinkML Zenodo community by @dalito in https://github.com/linkml/linkml/pull/3206
- Add configurable list formatting for CSV/TSV serialization by @turbomam in https://github.com/linkml/linkml/pull/3134
- dont leave files open by @sneakers-the-rat in https://github.com/linkml/linkml/pull/3207
- build(deps): bump the github-actions group with 5 updates by @dependabot[bot] in https://github.com/linkml/linkml/pull/3232
- Add alumni section with contributors by @matentzn in https://github.com/linkml/linkml/pull/3195
- javagen: Represent boolean slots as Boolean-typed fields by default. by @gouttegd in https://github.com/linkml/linkml/pull/3178
- handle special ifabsent cases in ifabsent processor by @sneakers-the-rat in https://github.com/linkml/linkml/pull/2366
- Relax
clickdependency specification by @pkalita-lbl in https://github.com/linkml/linkml/pull/3240 - Fix/suppress vacuous axioms by @mgskjaeveland in https://github.com/linkml/linkml/pull/3192
- Create new generator sqlvalidationgen by @FlorianK13 in https://github.com/linkml/linkml/pull/3127
- Update Community-Meetings.md by @sagehrke in https://github.com/linkml/linkml/pull/3252
- cheaper docgen test and use threadpoolexecutor to generate classes by @sneakers-the-rat in https://github.com/linkml/linkml/pull/3220
- Add plugin-link for interactive LinkML viewing by @dkapitan in https://github.com/linkml/linkml/pull/3257
- downgrade null/empty enum errors to warnings for optional slots by @madanucd in https://github.com/linkml/linkml/pull/3227
- Fix: use kwargs in _normalize_inlined to support inherited classes by @dalito in https://github.com/linkml/linkml/pull/3247
- Remove obsolete info on testing from pre-monorepo times by @dalito in https://github.com/linkml/linkml/pull/3268
- Clean up obsolete files in linkml-runtime package and update references to new home by @dalito in https://github.com/linkml/linkml/pull/3271
- Follow-up of PR #3271 - remove xfails by @dalito in https://github.com/linkml/linkml/pull/3275
- Update index.rst by @sagehrke in https://github.com/linkml/linkml/pull/3288
- Create office-hours.md by @sagehrke in https://github.com/linkml/linkml/pull/3286
- improve plantuml generator help by @Silvanoc in https://github.com/linkml/linkml/pull/3290
- feat(owlgen): add covering axiom for abstract classes by @mgskjaeveland in https://github.com/linkml/linkml/pull/3219
- fix(generators): omit sh:class linkml:Any from SHACL output by @jdsika in https://github.com/linkml/linkml/pull/3278
- Add new decorator feature for compliance tests by @matentzn in https://github.com/linkml/linkml/pull/3302
- Implementing range_expression in jsonschemagen by @cmungall in https://github.com/linkml/linkml/pull/2860
- Fix pydantic generator ifabsent=bnode producing invalid code by @amc-corey-cox in https://github.com/linkml/linkml/pull/3238
- fix(rdflib): support Pydantic models in RDFLibDumper by @emmanuel-ferdman in https://github.com/linkml/linkml/pull/3234
- Sort type declaration classes in
pythongenaccording to inheritence graph by @christian-monch in https://github.com/linkml/linkml/pull/3045 - fix(generators): prefer literal coercion in mixed any_of unions by @jdsika in https://github.com/linkml/linkml/pull/3276
- fix(shacl): emit sh:BlankNodeOrIRI for nodeidentifier type by @jdsika in https://github.com/linkml/linkml/pull/3291
- feat(context): add --exclude-imports flag to ContextGenerator by @jdsika in https://github.com/linkml/linkml/pull/3294
- Fix issue #3011 test and add documentation for SHACL naming modes by @kevinschaper in https://github.com/linkml/linkml/pull/3090
- fix(shaclgen): migrate ShaclGenerator from SchemaLoader to SchemaView by @jdsika in https://github.com/linkml/linkml/pull/3293
- Enable parallel test execution with pytest-xdist by @amc-corey-cox in https://github.com/linkml/linkml/pull/3306
- Add AI-Assisted Discussions guidelines by @matentzn in https://github.com/linkml/linkml/pull/3150
- Make delimited file loader schema-aware to preserve string/enum columns by @Sigfried in https://github.com/linkml/linkml/pull/3289
- Consolidate GOLR biolink snapshots into single file by @amc-corey-cox in https://github.com/linkml/linkml/pull/3307
- Misc improvements to the Java code generator by @gouttegd in https://github.com/linkml/linkml/pull/3255
- Validate tutorial as part of standard tests by @dalito in https://github.com/linkml/linkml/pull/3272
- Refactor: cleanup dead code by @Silvanoc in https://github.com/linkml/linkml/pull/3265
- ifabsent enum serialization fix by @kevinschaper in https://github.com/linkml/linkml/pull/3308
- fix: handle None preconditions in doc-gen class template by @saschabuehrle in https://github.com/linkml/linkml/pull/3310
- Generator-level governance: add first stab at team proposal based on git blame line count by @matentzn in https://github.com/linkml/linkml/pull/3137
- fix(gen-json): include mixins/abstracts for union(anyof) support by @noelmcloughlin in https://github.com/linkml/linkml/pull/3274
- Add boolean truthy/falsy handling for CSV/TSV by @turbomam in https://github.com/linkml/linkml/pull/3144
- Fix linkml-runtime version floor for multivalued inlined slots (#3182) by @turbomam in https://github.com/linkml/linkml/pull/3183
- Fix broken doctests across both packages by @cmungall in https://github.com/linkml/linkml/pull/3230
- Update metamodel test fixtures from linkml-model by @github-actions[bot] in https://github.com/linkml/linkml/pull/3170
- normalize: Correctly recognise linkml:Any classes. by @gouttegd in https://github.com/linkml/linkml/pull/3328
- add doc and examples for instantiates vs implements by @sierra-moxon in https://github.com/linkml/linkml/pull/3284
- Create a pull request template by @matentzn in https://github.com/linkml/linkml/pull/3335
- Update Community-Meetings.md by @sagehrke in https://github.com/linkml/linkml/pull/3339
- Update CITATION.cff. by @gouttegd in https://github.com/linkml/linkml/pull/3342
- Fixes issue #3235: Summary generator prefixes enums in ranges with "Unknown_" by @sveinugu in https://github.com/linkml/linkml/pull/3236
- javagen: Render
uriorcurie-typed slots as String fields. by @gouttegd in https://github.com/linkml/linkml/pull/3311 - fix(example-runner): normalize hyphenated key names / linkml:Any handling by @noelmcloughlin in https://github.com/linkml/linkml/pull/3319
- oocodegen/javagen: Add option to honour slot aliases when deriving field names by @gouttegd in https://github.com/linkml/linkml/pull/3326
- Generate compliance dashboard by @matentzn in https://github.com/linkml/linkml/pull/3303
- Identifiers cannot be null by @Silvanoc in https://github.com/linkml/linkml/pull/2449
- Pydanticgen support class alias for class names which aren't valid python classes by @kevinschaper in https://github.com/linkml/linkml/pull/2534
- feat(sqla): add SQLAlchemy 2.x declarative code generation by @kevinschaper in https://github.com/linkml/linkml/pull/3231
- Consolidate SchemaBuilder: deprecate linkml copy in favor of linkml_runtime by @dalito in https://github.com/linkml/linkml/pull/3334
- Fix bug in generation of OWL union, intersection, and none of by @cthoyt in https://github.com/linkml/linkml/pull/3359
- Jinja template changes for documentation pages search bar optimizations by @sujaypatil96 in https://github.com/linkml/linkml/pull/3350
- Update CITATION.cff with new ORCID entries and paper by @matentzn in https://github.com/linkml/linkml/pull/3340
- test: warn when OWL coherency checks are skipped by @SproutSeeds in https://github.com/linkml/linkml/pull/3312
- test: reduce issue snapshot file count first pass by @SproutSeeds in https://github.com/linkml/linkml/pull/3315
- Make gen_doc output ordering deterministic by @sveinugu in https://github.com/linkml/linkml/pull/3368
- Update Community-Meetings.md by @sagehrke in https://github.com/linkml/linkml/pull/3385
- Add regression tests for _normalize_inlined with comma-containing values by @matentzn in https://github.com/linkml/linkml/pull/3371
- docs: update feature dashboard by @github-actions[bot] in https://github.com/linkml/linkml/pull/3346
- feat(generators): add --exclude-external-imports flag for JSON-LD context generator by @jdsika in https://github.com/linkml/linkml/pull/3279
- doc: do point to Zenodo "transient" DOI by @yarikoptic in https://github.com/linkml/linkml/pull/3394
- fix(linter): always validate schema against metamodel before linting by @amc-corey-cox in https://github.com/linkml/linkml/pull/3403
- Fix identifier/key slots not marked required in induced_slot by @amc-corey-cox in https://github.com/linkml/linkml/pull/3348
- Update validation docs with details on rules by @matentzn in https://github.com/linkml/linkml/pull/3345
- feat: add TypeDB generator (gen-typedb) by @GullyBurns in https://github.com/linkml/linkml/pull/3382
- New tabular structure to render
unitmetaslot information on generated docs pages by @sujaypatil96 in https://github.com/linkml/linkml/pull/3404 - Update metamodel test fixtures from linkml-model by @github-actions[bot] in https://github.com/linkml/linkml/pull/3424
- cli: Accept -h as a short equivalent of --help. by @gouttegd in https://github.com/linkml/linkml/pull/3412
- fix(pythongen): skip runtime-computed ifabsent bakes for the metamodel by @amc-corey-cox in https://github.com/linkml/linkml/pull/3414
- YARRRML generator bug fixes and E2E tests update by @lapkinvladimir in https://github.com/linkml/linkml/pull/3338
- fix(induced_slot): resolve spaced/underscored slots to generators names by @noelmcloughlin in https://github.com/linkml/linkml/pull/3322
- feat: add C++ header generator (gen-cpp-header) by @Kieleth in https://github.com/linkml/linkml/pull/3332
- Bump the github-actions group with 8 updates by @dependabot[bot] in https://github.com/linkml/linkml/pull/3341
- fix(sqltablegen): performance optimization #3355 by @noelmcloughlin in https://github.com/linkml/linkml/pull/3356
- Convert leaf test files from unittest to pytest style by @amc-corey-cox in https://github.com/linkml/linkml/pull/3243
- Add support for schema dicts in SchemaLoader.importmap by @rly in https://github.com/linkml/linkml/pull/3391
- Clarify and consolidate schema validation tools by @amc-corey-cox in https://github.com/linkml/linkml/pull/3410
- [codex] Fix owlgen crash on none_of rule expressions by @cmungall in https://github.com/linkml/linkml/pull/3362
- fix(pythongen): improved sort_classes performance by @noelmcloughlin in https://github.com/linkml/linkml/pull/3363
- fix(schemaview): improve induced_slot #3352, _closure #3354 performance by @noelmcloughlin in https://github.com/linkml/linkml/pull/3364
- Update Schedule on the Community-Meetings.md by @sagehrke in https://github.com/linkml/linkml/pull/3452
- Update Linkml docs with new Slack signup form by @sagehrke in https://github.com/linkml/linkml/pull/3455
- Fix
enum.md.jinja2so that it can correctly expand/render dynamic enum elements by @sujaypatil96 in https://github.com/linkml/linkml/pull/3469 - Update Community-Meetings.md with Guidelines for presenting by @sagehrke in https://github.com/linkml/linkml/pull/3460
- Trigger CI on merge_group events to unblock the merge queue by @kevinschaper in https://github.com/linkml/linkml/pull/3472
- build(deps): bump the github-actions group across 1 directory with 5 updates by @dependabot[bot] in https://github.com/linkml/linkml/pull/3470
- Use
linkml.validatorinlinkml.utils.converterby @sneakers-the-rat in https://github.com/linkml/linkml/pull/2385 - terminusdb: updates to the modern schema format by @philocalyst in https://github.com/linkml/linkml/pull/3258
- feat(generators): add --xsd-anyuri-as-iri flag for cross-generator IRI consistency by @jdsika in https://github.com/linkml/linkml/pull/3292
- fix(jsonldcontextgen): emit scoped contexts for class-level range overrides by @amc-corey-cox in https://github.com/linkml/linkml/pull/3336
- fix(excelgen): move workbook.save outside loop by @noelmcloughlin in https://github.com/linkml/linkml/pull/3420
- Adding test for any_of at the class level. by @cmungall in https://github.com/linkml/linkml/pull/2292
- Update Metamodel files for 1.11.0-rc2 by @matentzn in https://github.com/linkml/linkml/pull/3484
- Fix 2687: Make
class_uribeskos:exactMatchof the element URI on JSON-LD and RDF by @Silvanoc in https://github.com/linkml/linkml/pull/2693 - docs: update feature dashboard by @github-actions[bot] in https://github.com/linkml/linkml/pull/3486
- Fix empty multivalued cells crashing loader with --list-wrapper none by @turbomam in https://github.com/linkml/linkml/pull/3251
- first working version openapi generator by @Silvanoc in https://github.com/linkml/linkml/pull/3300
- Emit
examplesin JSON Schema output by @sveinugu in https://github.com/linkml/linkml/pull/3378 - Add --include flag to linkml validate for schema rules overlay composition by @amc-corey-cox in https://github.com/linkml/linkml/pull/3400
- feat(contextgen): add @type: @vocab coercion for eligible enums by @jdsika in https://github.com/linkml/linkml/pull/3447
- Update metamodel test fixtures from linkml-model by @github-actions[bot] in https://github.com/linkml/linkml/pull/3510
New Contributors
- @dkapitan made their first contribution in https://github.com/linkml/linkml/pull/3257
- @jdsika made their first contribution in https://github.com/linkml/linkml/pull/3278
- @christian-monch made their first contribution in https://github.com/linkml/linkml/pull/3045
- @Sigfried made their first contribution in https://github.com/linkml/linkml/pull/3289
- @saschabuehrle made their first contribution in https://github.com/linkml/linkml/pull/3310
- @sveinugu made their first contribution in https://github.com/linkml/linkml/pull/3236
- @cthoyt made their first contribution in https://github.com/linkml/linkml/pull/3359
- @SproutSeeds made their first contribution in https://github.com/linkml/linkml/pull/3312
- @GullyBurns made their first contribution in https://github.com/linkml/linkml/pull/3382
- @Kieleth made their first contribution in https://github.com/linkml/linkml/pull/3332
- @philocalyst made their first contribution in https://github.com/linkml/linkml/pull/3258
Full Changelog: https://github.com/linkml/linkml/compare/v1.10.0...v1.11.0
Files
linkml/linkml-v1.11.0.zip
Files
(44.8 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:de7b775f3d34aba0e797f165682ac40e
|
44.8 MB | Preview Download |
Additional details
Related works
- Is supplement to
- 10.48550/arXiv.2511.16935 (DOI)
- https://github.com/linkml/linkml (URL)
Software
- Repository URL
- https://github.com/linkml/linkml