github dathere/qsv 28.0.0

pre-release4 hours ago

[28.0.0] - 2026-11-01 🧠 The "DCAT-US v3.0 neuro-symbolic FAIRification" Release 🏛️

Highlights

~58 commits since 27.0.1, and the banner feature is profile writing much more of a DCAT-US v3.0 record for you, the metadata standard data.gov is moving to.

qsv is a neuro-symbolic FAIRification engine, and this release puts both halves to work on the same record:

  • Symbolic: properties measured from the data. profile computes what is tedious and error-prone to write by hand from the stats and frequency it already runs, plus a SQL pass over the file: temporalResolution as an exact duration, accrualPeriodicity only when the dates really are a regular series, a spatial bounding box that drops out-of-range and "null island" rows, the dataset's language, DQV quality measurements, and CSVW column constraints and a primary key. --locate names the places a dataset covers, from the offline GeoNames index or the US Census Geocoder, and a WKT POINT column (the shape Socrata exports) now counts as coordinates.
  • Neural: metadata an LLM proposes, checked before it is used. --describegpt or --infer adds a describegpt description, tags and data dictionary. Tags can be held to a controlled vocabulary, dictionary entries must name real columns, and a generated description says so in the description itself.

Every value records where it came from: values the publisher supplies win over inferred ones, and values measured from the file win over everything discovered. A new projection_provenance block lists which tier each value came from, and llm_attribution keeps the LLM run's command line, API URL and timestamp out of the published record. See the DCAT-US v3 and Metadata Profiling wiki pages.

Also in this release:

  • describegpt's answer cache works as documented. --fresh, --forget and multi-phase JSON/TOON runs all hit, replace or remove the entries they should, on disk and on Redis.
  • Data Schematics size themselves when embedded. A framed viz smart page reports its height to the host page, so CKAN can fit the iframe without injecting a script, and a map in a sandboxed iframe explains why it is blank.
  • Benchmarks on hyperfine 2.0, with peak memory recorded, suspect results quarantined, and new geocode geoclient benchmarks.
  • Least-privilege CI. Every workflow declares the GITHUB_TOKEN permissions it needs, and third-party actions are pinned to commit SHAs.

Read Breaking Changes before upgrading if you consume profile's DCAT-US v3 output: two of its properties changed shape.

🙏 Contributors

Thanks to everyone who made 28.0.0 possible:

Don't miss a new qsv release

NewReleases is sending notifications on new releases.