Skip to content

Releases: alea-institute/folio-python

v0.3.6

08 Apr 17:00
b7c18e7

Choose a tag to compare

Changes

  • Docs: Migrated user-facing documentation to openlegalstandard.org/resources/folio-python-library — a comprehensive 9-page reference covering install, search, structured queries, taxonomy, properties and triples, serialization, LLM integration, and a complete API surface for FOLIO, OWLClass, OWLObjectProperty, and FOLIOConfiguration. Every code snippet is validated against the published wheel.
  • Removed: docs/ directory (Sphinx site that targeted the broken folio-python.readthedocs.io)
  • Removed: .readthedocs.yaml (RTD config no longer needed)
  • Removed: .github/workflows/publish.yml (Trusted Publisher workflow that was never wired up; releases are published locally via uv build && uvx twine upload)
  • Updated: README documentation link now points at openlegalstandard.org; logo path moved from docs/_static/folio-logo.png to assets/folio-logo.png
  • Updated: CONTRIBUTING.md notes that user-facing docs live in the openlegalstandard.org repo

Closes #14.

Full Changelog

v0.3.5...v0.3.6

v0.3.5

08 Apr 14:00

Choose a tag to compare

Changes

  • Added: case_sensitive parameter (default False) on search_by_prefix() — lowercase and mixed-case queries now match labels via a parallel lowercase MARISA trie using str.casefold() for Unicode-safe folding
  • Changed: search_by_prefix() ranks primary-label matches before alt-label matches and deduplicates results by IRI; affects default ordering for queries like Mich, Tax, and Cal
  • Fixed: Case-sensitive search_by_prefix() no longer returns duplicate entries when a class matches a prefix via both its label and an alt-label
  • Fixed: Prefix caches are now cleared on refresh() to avoid stale results
  • Fixed: folio.__version__ was stuck at 0.3.0 since v0.3.0; now tracks pyproject.toml

Thanks to @damienriehl for the implementation in #16. Follow-up #17 tracks the larger ranking-function rework.

Note: The ReadTheDocs documentation site is currently down (#14). Documentation is being migrated to https://openlegalstandard.org — link updates will follow in a separate change.

Full Changelog

v0.3.4...v0.3.5

v0.3.4

17 Mar 02:47

Choose a tag to compare

Changes

  • Fix: Include lang-tagged altLabels in search index with deduplication — 90% of altLabels (52K of 57K) were previously invisible to search_by_label()
  • Backfilled CHANGES.md for v0.3.1–v0.3.3

Full Changelog

v0.3.0...v0.3.4

v0.3.0

16 Mar 01:31

Choose a tag to compare

What's Changed

New Features

  • FOLIO.query() — Structured concept queries with composable text and structural filters (label, definition, alt_label, example, any_text, branch, parent_iri, has_children, deprecated, country). Supports substring, exact, regex, and fuzzy match modes.
  • FOLIO.query_properties() — Structured property queries with text filters (label, definition) and structural filters (domain_iri, range_iri, has_inverse).

Bug Fixes

  • Fix: Make alea_llm_client import optional — Base install (pip install folio-python) no longer crashes with ModuleNotFoundError. LLM features require pip install folio-python[search]. (Closes #10)

Documentation

  • Document [search] extra in installation instructions (Closes #10)
  • Add soli-python migration note for users hitting httpx conflicts (Closes #9)
  • Add Structured Queries section with query() and query_properties() examples
  • Add CLAUDE.md with project conventions

Other

  • Add regression tests for prefLabel indexing fix from v0.2.1 (Closes #12)
  • Replace black with ruff in dev dependencies (resolves CVE in black < 26.3.1)
  • Apply ruff format across codebase
  • Add Python 3.13 and 3.14 classifiers
  • Published to PyPI (supersedes v0.2.1 which was GitHub-only)

Full Changelog: v0.2.1...v0.3.0

v0.2.1

15 Mar 19:29

Choose a tag to compare

What's Changed

Bug Fixes

  • Index preferred_label (skos:prefLabel) for search — Add preferred_label to alt_label_to_index during class parsing and property_label_to_index during property parsing, so that prefLabels are included in the marisa-trie and found by search_by_prefix() and search_by_label(). Previously, preferred_label was parsed and stored but never indexed, making entities unfindable by their canonical name.

Full Changelog: v0.2.0...v0.2.1