validate_semantics
validate_semantics(
dictionary,
require_iris=False,
entity_defaults=None,
vocab_priority=None,
)Validate semantics with graceful gap reporting.
Ensures structural requirements, adds a required column if missing, runs validate_dictionary(), and reports missing term_iri for measurement columns. In default mode validate_dictionary() warns (instead of raising) when semantic fields are missing, so the caller can continue.
Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| dictionary | pd.DataFrame | Dictionary tibble/data frame | required |
| require_iris | bool | If True, require IRIs in all semantic fields | False |
| entity_defaults | pd.DataFrame | Data frame with table_prefix and entity_iri (not applied automatically here but reserved for future use) |
None |
| vocab_priority | List[str] | Character vector of vocab sources (reserved for future use) | None |
Returns
| Name | Type | Description |
|---|---|---|
| Dict[str, pd.DataFrame] | Dictionary with elements: - dict: normalized dictionary with required column - issues: DataFrame of structural issues (empty if none) - missing_terms: DataFrame of measurement rows missing term_iri - missing_semantics: DataFrame of measurement rows missing any semantic field (core + optional) |
Examples
>>> import pandas as pd
>>> from metasalmonpy import validate_semantics
>>> dict_df = pd.read_csv("column_dictionary.csv")
>>> result = validate_semantics(dict_df, require_iris=False)
>>> print(result['issues']) # Structural problems
>>> print(result['missing_terms']) # Measurements needing term_iri
>>> # Suggest terms for missing measurements
>>> if not result['missing_terms'].empty:
... print("Proposed terms:")
... print(result['missing_terms'][['term_label', 'term_definition']])