linkml/linkml-map: v0.3.9
Year: 2025
Type: software
Abstract: 26 commits since v0.5.3. Validated as v0.5.4-rc1 against schema-automator and dm-bip before release; this ships the identical tree. Heads up: enum expressions now respect --unrestricted-eval Enum expressions were bypassing the --unrestricted-eval gate, evaluating unrestricted even when the flag was absent. They now route through the gated path like every other expression. This can turn a previously-working spec into a failure. If you have enum expressions that need unrestricted evaluation, they were silently getting it before and now require the flag explicitly. That's the intended behaviour — the gate exists so unrestricted evaluation is always a deliberate choice — but it is a behaviour change rather than a pure fix, so it is worth checking before you upgrade. Python 3.14 The <3.14 upper cap on requires-python is gone. It was conservative rather than a real incompatibility — the full dependency tree resolves and the suite passes on 3.14. Downstream packages that support 3.14 could not install a valid linkml-map before this. New: columnar output formats map-data can now write Parquet and DuckDB directly: linkml-map map-data -T transform.yaml -s schema.yaml \ --source-type Person -o agents.parquet data/Person.tsv Unlike TSV and CSV, these preserve nested structure — a nested object becomes a STRUCT column and a list of them STRUCT[], so consumers read nested fields with a column access instead of a join. DuckDB output writes one table per run (--table-name, defaulting to the file stem), so repeated runs against one path build up a database covering several target classes. Both work as -O targets alongside a text primary output. No new dependency: duckdb was already required by the join engine. Fixes -q/--quiet was unusable. Declared without is_flag=True, so click treated it as value-taking and it swallowed the following argument — linkml-map -q map-data ... consumed map-data and printed the group help instead of running anything. jsonschema is now declared. It is imported at runtime by validator.py but was only resolving transitively through linkml. Clearer error for comprehension variables. [c.code for c in codes] reported unknown 'c' ... Typo or stale reference?, sending you after a typo that did not exist. It now names the real cause and points at class_derivations. ucumvert held at 0.2.x while Python 3.10 is supported; 0.3 requires pint>=0.25, which is 3.11+. Deprecations The function-based stream writers still work but now emit DeprecationWarning. map-data uses a single writer stack whether or not -O was passed. You may see new warnings without having changed anything. Internal Substantial cleanup that should not be user-visible: ~750 lines of unreferenced source removed, the per-row join fallback given real coverage (it had never once been exercised with an actual join), mock-based unit-conversion tests replaced with end-to-end ones, and the pivot, unit-conversion and spec-normalizer blocks extracted out of oversized modules. A ReferenceValidator is now cached in _shape_normalize. The compliance doc generates reproducibly and is drift-checked in CI. Full changelog: https://github.com/linkml/linkml-map/compare/v0.5.3...v0.5.4
Authors: Corey Cox, Chris Mungall, Sierra Moxon, i alarmed alien, Patrick Kalita, Silvano Cirujano Cuesta, Martin Wellman, Harshad, Yaroslav Halchenko, Nico Matentzoglu, Mark Andrew Miller, madanucd, Kevin Schaper, Jack Higgs, Patrick Golden, Sigfried Gold
Language: English
Topic: Semantic Web and Ontologies
Subfield: Artificial Intelligence
Field: Computer Science
Domain: Physical Sciences
Open Access status: green
OpenAlex ID: W6931219804
