CHANGELOG

v1.1.0 (2026-05-28)

Bug fixes

  • fix(context): update rdfs, xsd, and gsqtime namespace URIs (21fc1c9)

  • fix: align JSON-LD @context with SOSO guidance (#349) (94fb076)

Build system

  • build: update environment (4671715)

  • build: update environment (c509c7c)

  • build: update environment (1f14d62)

Features

  • feat: improve indexability and other fixes (9ee6734)

v1.0.1 (2026-04-08)

Bug fixes

  • fix: use URL parsing for location header validation (2da8a6a)

  • fix: address incomplete URL substring sanitization (e0adc36)

Build system

  • build(deps): bump requests in the uv group across 1 directory (3ee4651)

  • build: migrate to uv and ruff for tooling (#326) (2d73033)

  • build: switch to Poetry-only dependency management (94ad668)

  • build: refine package dependency constraints (5d4e569)

Continuous integration

  • ci: split ci/cd workflows and update workflow docs (4a5c401)

Documentation

  • docs: update project status to active (0510fc9)

Refactoring

  • refactor: format code and address pylint issues (85e0d2d)

v1.0.0 (2026-02-18)

Bug fixes

  • fix: validate SPDX license URL host and path (17e1aed)

  • fix: use strict host validation for SPDX identifiers (7b48a76)

  • fix: loosen version constraints for dependencies (f66bb03)

  • fix: import pyshacl instead of specific function (2038e83)

Build system

  • build: update environment (c1b4c18)

Continuous integration

  • ci: define explicit permissions for CI/CD pipeline (21b8c3b)

v0.7.1 (2026-01-30)

Bug fixes

  • fix: remove null kwargs appearances in JSON output (4f2de82)

Build system

Refactoring

  • refactor: add warning suppression to validation utility (d07a6cb)

v0.7.0 (2025-11-26)

Build system

Features

  • feat: update for SPASE 2.7.1 and other minor fixes (c92fb2c)

Refactoring

  • refactor: apply formatting to c92fb2c (339f14e)

v0.6.2 (2025-10-31)

Bug fixes

  • fix: rename logging.py to avoid standard library conflict (66295f9)

v0.6.1 (2025-10-23)

Bug fixes

  • fix: fix reference to soso PyPI listing (71c4781)

v0.6.0 (2025-10-23)

Continuous integration

  • ci: check for release before uploading to PyPI (a2ecce9)

Features

  • feat: support bundled and local SHACL shape files (#302) (1e06fc4)

  • feat: implement daiquiri for structured logging (#302) (cedf21f)

  • feat: reorganize validation code into dedicated module (#302) (52e285c)

Refactoring

  • refactor: group validation code into a single file module (#302) (bc9ba6f)

  • refactor: return dictionary with provenance and report (#302) (c2bedd9)

v0.5.4 (2025-10-07)

Bug fixes

  • fix: address suffixes and first name initials (5041016)

v0.5.3 (2025-09-02)

Bug fixes

  • fix: update sidebar HTML _template/ reference (8217482)

v0.5.2 (2025-09-02)

Bug fixes

  • fix: bump Zenodo release workflow (828fa5f)

Continuous integration

  • ci: fix .zenodo.json contributor types (ef66b31)

v0.5.1 (2025-09-02)

Bug fixes

  • fix: conditionally run release steps in workflow (3c83694)

Continuous integration

  • ci: revert to previous PyPI release method (d470cbc)

  • ci: add role and type to .zenodo.json contributors (ef32646)

  • ci: use Trusted Publishing in CD (1508e28)

v0.5.0 (2025-09-02)

Bug fixes

  • fix: ensure temporary SPASE file is properly closed (8532d89)

  • fix: standardize MIME type guessing with fallback (#263) (bb2906f)

  • fix: use platform-agnostic pathlib.Path type (#261) (7db7198)

  • fix: subject/object order in EML SSSOM is reversed (#240) (990ab8a)

Build system

  • build: remove deprecated Poetry dev dependencies (#255) (d4615ab)

Continuous integration

  • ci: add to PyPI on release (f1e5c24)

  • ci: add CODEOWNERS to streamline maintenance (#235) (bd90e6a)

  • ci: run CI on pull requests to any branch (aa2454e)

  • ci: remove redundant Poetry and package installation (#257) (25acabd)

  • ci: harmonize black formatting versions (#252) (e57d7b4)

Documentation

  • docs: add missing docstring (d7eaea0)

  • docs: remove text from logo to be DRY (9b98e21)

  • docs: add example vignette for more complex cases (#237) (f76cbda)

  • docs: support unrecognized properties in SOSO records (#243) (adcf6af)

  • docs: accommodating shared infrastructure code (#237) (913deb5)

  • docs: add Zenodo DOI badge (#241) (e2b730b)

  • docs: update the documentation on skipping tests (ca734f4)

  • docs: fix sidebar, changelog, and logo references (eac4ff1)

  • docs: make minor editing for consistency (4133086)

  • docs: add a logo for branding (40b12b8)

  • docs: improve the visibility of the Code of Conduct (#239) (fead0ee)

  • docs: enhance contributing guidelines for clarity (#238) (1565297)

  • docs: refine project scope for clarity and focus (#236) (4cf2b23)

  • docs: update pyproject.toml with SPASE authors (#234) (abf7963)

Features

  • feat: complete SPASE strategy implementation (df49632)

Refactoring

  • refactor: add strategy specific directories (#242) (d331dac)

  • refactor: ensure SPASE strategy passes linting (5eca6bd)

Testing

  • test: remove unused argument to fix pylint issue (38ad988)

  • test: fix pytest.skipif declarations (595b2a5)

v0.4.0 (2025-01-17)

Bug fixes

  • fix: translate docstrings into comments (#213, #222) (ba74a46)

Build system

  • build: configure Read the Docs for explicit path to config.py (a1a54c0)

Features

  • feat: add spatial coverage support for SPASE (#213) (4c3154b)

Refactoring

  • refactor: address Pylint issues in SPASE strategy integrations (e793798)

v0.3.0 (2024-12-12)

Bug fixes

  • fix: prevent invalid property assignments in SOSO records (#218) (de3b430)

  • fix: correct XML declaration in example SPASE file (#213) (599807e)

  • fix: enhance generate_citation_from_doi for invalid input handling (ceb6706)

Features

  • feat: first set of mapping implementation #213 (6b07636)

  • feat: establish SPASE conversion strategy (#213) (3ce2b25)

  • feat: add SPASE empty file #213 (b4f5ad1)

  • feat: create example spase.xml for testing (#213) (cbef3a1)

Testing

  • test: add missing @id property to test fixture (#213) (5d980c8)

v0.2.0 (2024-09-27)

Bug fixes

  • fix: add @id for Organization type in EML strategy (0765e08)

  • fix: add @id for MonetaryGrant type in EML strategy (cdbdafd)

  • fix: incorrect comparison of bytes and string objects (f883bfd)

  • fix: add @id for identifier of Person and Org type in EML strategy (98887ee)

Continuous integration

  • ci: fix code coverage report generation (3bed01d)

Documentation

  • docs: enforce schema:URL type for @id in EML strategy SSSOM (9a5149d)

  • docs: update SSSOM file for EML strategy (97ad0b7)

  • docs: update codecov badge to reflect current coverage (8f70c10)

  • docs: correct branch reference for codecov and documentation (490d382)

  • docs: enhance README with installation and quickstart (851ed49)

  • docs: correct _templates/ structure for proper rendering (5a3e878)

Features

  • feat: add @id for Dataset type in EML strategy (b41a572)

  • feat: add @id for Dataset type in strategy interface (bf86774)

  • feat: implement heuristic URL validation utility (0c7729f)

v0.1.0 (2024-07-30)

Bug fixes

  • fix: adjust mapping implementations (df72499)

  • fix: future deprecation warning (5a74275)

  • fix: geo time xsd:decimal could be string (635d0ed)

  • fix: add missing contributors (daaf1e3)

  • fix: limit textual properties to 5000 characters (c53bce9)

  • fix: get_description returns incomplete value (ea993a3)

  • fix: get_checksum errors on no checksum value (f64de9c)

  • fix: get_content_size errors when unit not present (f85f972)

  • fix: strategy_instance returns class, not PosixPath (16c205d)

  • fix: don’t list nested properties as “unmappable” (316c525)

  • fix: consistent representation of metadata acronyms (fad2836)

  • fix: convert SPDX license URL to URI for EML (dea8bfe)

  • fix: add missing prefixes to top-level properties (88e956f)

  • fix: use contentUrl not contentURL (158330e)

  • fix: correct typo in EML SSSOM (114080b)

  • fix: differentiate persons from organizations (#5) (4d3218e)

  • fix: resolve pylint warning regarding long line (f3bd1ea)

  • fix: note publisher is unmappable (#5) (215d24c)

  • fix: note provider is unmappable (#5) (e664f01)

  • fix: return None creator/contributor for readability (0d62bdf)

  • fix: add missing return type to method docstring (#5) (3654bd1)

  • fix: update spatialCoverage mapping dates (#5) (bcb2a4f)

  • fix: fix distribution in EML SSSOM (#5) (5c29cc2)

  • fix: revert to previous SSSOM practices (#5) (05816b3)

  • fix: fully represent properties with ‘schema’ prefix (#5) (17e5953)

  • fix: add missing note to EML strategy (#5) (5978c78)

  • fix: specify expected string format (a3f9b30)

  • fix: deprecation warnings issued by pytest (fcee9df)

  • fix: return JSON-LD str not JSON dict (6fa9ff8)

Build system

  • build: clean up env build files (07277f5)

  • build: update dependencies (7d87a08)

  • build: remove unused Pandas (b08101a)

  • build: synchronize environment files (f163ffd)

  • build: remove invalid package metadata (3e1a8e3)

Continuous integration

  • ci: fix failing release workflow (ee76c39)

  • ci: ignore Pylint too-many-instance-attributes (25d33e2)

  • ci: ignore Pylint ‘too many arguments’ (83ca931)

  • ci: ignore pylint R0912 for is_property_type (e64906b)

  • ci: use ‘black’ version 23.7.0 (c84d8b3)

  • ci: ignore pylint c-extension-no-member messages (7d6e9cc)

  • ci: simplify pylint calls with pyproject.toml (7578728)

Documentation

  • docs: reformat changelog for better readability (11a952e)

  • docs: encourage contribution (60b6e5d)

  • docs: review and edit documentation (04df73f)

  • docs: update mapping guidelines (042db8e)

  • docs: update SSSOM mapping for EML (b0f0baa)

  • docs: improve design requirement clarity (f44c8d7)

  • docs: define “acceptable mapping implementation” (93b5526)

  • docs: don’t coerce SSSOM mapping predicates (318c6a6)

  • docs: install from GitHub (3c9e17b)

  • docs: clean up code in “Wrapping it All Up” demo (4a882e6)

  • docs: establish consistent mapping terminology (622b25c)

  • docs: new strategy methods should use delete_null_values (1b58b0b)

  • docs: remove “precision-based property control” (955b895)

  • docs: de-emphasize section headings of quickstart notes (504521d)

  • docs: consistently emphasize package name (fc6e357)

  • docs: remove mention of Numpy docstrings (ac7b2f2)

  • docs: relocate code of conduct (2024f40)

  • docs: sync sidebar html docs (9d203c7)

  • docs: use Poetry in dev workflow (119fdb7)

  • docs: link to quickstart guide for customization (63428c3)

  • docs: add support for a new metadata standard (43b45ed)

  • docs: remove architecture heading from design docs (0cb7200)

  • docs: design docs don’t belong in contributor guide (6334512)

  • docs: refactor remaining system details of design docs (ccf46be)

  • docs: simplify detailed testing section of design docs (3290bcc)

  • docs: remove unused advanced section (249e4da)

  • docs: add quickstart notes (2cbfe2d)

  • docs: remove lingering docstring type descriptions (05711b8)

  • docs: demo wrapper function construction (3fb2796)

  • docs: demo property method override (75fcf95)

  • docs: demo property overwrite (11fa452)

  • docs: update title of property addition demo (e6d091d)

  • docs: note how to test positive and negative cases (db90863)

  • docs: use reST rather than Numpy formatting for consistency (f971227)

  • docs: describe new approach to property override with kwargs (6e7a9e4)

  • docs: disambiguate property definitions (918ff1a)

  • docs: override methods for advanced customization (50769f8)

  • docs: note mapping via params (#111) (21056b9)

  • docs: eliminate redundant statement (f6aaa9b)

  • docs: add unmappable EML properties via parameters (9f25733)

  • docs: streamline customization via parameters (72d6885)

  • docs: create unmappable properties with params (634bca8)

  • docs: stay up-to-date with Science-On-Schema.Org (13eec9e)

  • docs: explain logic of is_property_type function (531d7f0)

  • docs: add basic usage to the quickstart guide (4f54279)

  • docs: fix reference to old GitHub (823fcd1)

  • docs: improve narrative in opening examples (d03f96b)

  • docs: remove short list of features (e344d86)

  • docs: fix typo in opening example (072d4df)

  • docs: align project description with SOSO (bfe3914)

  • docs: update project description in README (644c48a)

  • docs: list features of this application (997e93f)

  • docs: demonstrate basic usage (5aa0cd4)

  • docs: add design docs for effective contributions (f93f568)

  • docs: note unmappable property for CRS (1a1863f)

  • docs: improve delete_unused_vocabularies description (01ad124)

  • docs: define “null” in rm_null_values function (69ad083)

  • docs: improve strategy return type descriptions (fc8c0e5)

  • docs: fix broken reference URLs in Maintainer Guide (d2f17d6)

  • docs: fix local test instructions (9da4dce)

  • docs: note nuances of EML object identifiers (#5) (a281c93)

  • docs: refine project descriptions (9933d45)

Features

  • feat: convert multiple versions of source metadata (0a200f5)

  • feat: cast value to numeric type (503fc52)

  • feat: make ‘file’ argument accessible to strategy methods (a132797)

  • feat: override any top-level SOSO property via kwargs (158a924)

  • feat: create expires via parameter for EML (b1bde5b)

  • feat: create dateCreated via parameter for EML (e55a3ef)

  • feat: create includedInDataCatalog via parameter for EML (0388a78)

  • feat: create citation via parameter for EML (475cc62)

  • feat: create isAccessibleForFree via parameter for EML (1198b09)

  • feat: create version via parameter for EML (7bff72b)

  • feat: create sameAs via parameter for EML (da8b3d8)

  • feat: create url via parameter for EML (e912c7e)

  • feat: get checksum from EML (14026f8)

  • feat: generate citation from DOI (f7a3faf)

  • feat: add measurementTechnique to EML strategy (df81edb)

  • feat: add get_subject_of method for EML strategy (3791795)

  • feat: get encoding format of EML record (2966cf0)

  • feat: apply rm_null_values to strategy methods (76c7cd0)

  • feat: remove null values from properties (d229402)

  • feat: get encodingFormat from file extension (#5) (d663bc4)

  • feat: get wasGeneratedBy from argument (#5) (7fddca7)

  • feat: get isBasedOn from EML (#5) (150e044)

  • feat: get wasDerivedFrom from EML (#5) (ab43abc)

  • feat: get wasRevisionOf from argument (#5) (c90caaa)

  • feat: get license from EML (#5) (ba18e06)

  • feat: get funding from EML (#5) (667d043)

  • feat: get provider from argument (#5) (ed2911f)

  • feat: get publisher from EML (#5) (f5f8f82)

  • feat: get contributor from EML (#5) (a42bd11)

  • feat: get creator from EML (#5) (eb89309)

  • feat: get spatialCoverage from EML (#5) (e888fb7)

  • feat: get temporalCoverage from EML (#5) (ff55894)

  • feat: get expires from argument (#5) (c684ab2)

  • feat: get datePublished from EML (#5) (85050cf)

  • feat: get dateModified from EML (#5) (d94c583)

  • feat: get dateCreated from argument (#5) (f7720c0)

  • feat: get potentialAction from argument (#5) (5a4e9d8)

  • feat: get distribution property from EML (#5) (dc5cb9d)

  • feat: get subjectOf from argument (#5) (b0f89ce)

  • feat: get includedInDataCatalog from argument (#5) (#29) (48e06fe)

  • feat: get variableMeasured property from EML (#5) (42f6a86)

  • feat: get citation property from argument (#5) (9cc297e)

  • feat: get identifier property from EML (#5) (60c7373)

  • feat: get keywords property from EML (#5) (e78012d)

  • feat: get isAccessibleForFree property from argument (#5) (707bf1a)

  • feat: get version property from argument (#5) (2a336ed)

  • feat: get sameAs property from argument (#5) (6460d08)

  • feat: remove empty properties from graph (1228b05)

  • feat: get url property from argument (#5) (d81d719)

  • feat: get description property from EML (#5) (ff96f2b)

  • feat: get name from EML (#5) (ee9f2f7)

  • feat: read metadata for strategy method access (3598d06)

  • feat: read SSSOM for flow control logic (4301349)

  • feat: map SOSO to EML with SSSOM (#5) (2a7dfe6)

  • feat: validate graph against the dataset SHACL shape (a1abc3f)

Refactoring

  • refactor: remove unused SSSOM functions (0157622)

  • refactor: list subjectOf as unmappable, not contentUrl (d76eade)

  • refactor: improve parsing of empty metadata (e467c86)

  • refactor: exception handling for EML file types (4ea27cb)

  • refactor: add missing type hints to strategies (860f826)

  • refactor: use type hints for static code analysis (ec9eab8)

  • refactor: use method override for unmapped properties (dd276b8)

  • refactor: apply consistent name prefixes for clarity (65491ee)

  • refactor: remove unused vocabularies from @context (74622ce)

  • refactor: add common vocabularies to @context (00a1e9e)

  • refactor: fix typo (e667878)

  • refactor: use consistent variable names for readability (eb6b491)

  • refactor: rename method for readability (dcf34e8)

  • refactor: enhance clarity of the public-facing API (de7260d)

  • refactor: re-enable pylint checks to improve code (dee39e9)

  • refactor: use “strategy” instead of “standard” (941c37f)

  • refactor: comment out stubs for implementation (f5f5829)

  • refactor: remove TODO and FIXME to silence pylint (7def44d)

  • refactor: match test and code module names (baeb00e)

Testing

  • test: nest abstract of test EML (c4c0f59)

  • test: use empty metadata for testing negative cases (336dd7b)

  • test: instantiate strategy with parameters (c881dcd)

  • test: fix typo in test code (68bf7c9)

  • test: add missing info to test EML file (11346c1)

  • test: update rationale for skipped test (15e9fb7)

  • test: reduce false positive test results (fbc8ce5)

  • test: add verification test for conversion strategies (292ce9a)

  • test: add missing negative cases for is_not_null (e0be5cf)

  • test: strategy methods return None, not null values (7313f1b)

  • test: implement function for property type testing (542aea2)

  • test: add full EML record for tests and examples (4cf04ea)

Unknown

  • Stub out codebase following a Strategy Design Pattern (faa473a)

  • Initialize git repository (ecbb794)