Python Package and API#
Quick Example (Load, Validate, Save)#
from models import DatasetSchema
from fair_data_schema.validator import validate_schema
# 1. Load schema from file
schema = DatasetSchema.from_file("my-schema.json")
# 2. Validate schema against FAIR meta-schema
errors = validate_schema(schema.to_dict())
assert not errors, f"Validation failed: {errors}"
print("✓ Schema is valid FAIR Data JSON Schema!")
# 3. Save modified schema to file
schema.title = "Updated FAIR Dataset 2024"
schema.to_file("my-schema-output.json")
Package API Reference#
fair_data_schema — Python tooling for the FAIR Data JSON Schema dialect.
CLI entry point: fair-data-schema (see cli.py)
- fair_data_schema.to_ro_crate(schema)[source]#
Convert a FAIR Data JSON Schema into an RO-Crate 1.1 compliant metadata dictionary.
- Parameters:
schema (
dict[str,Any] |Path|str) – A schema dictionary, or path (Path/str) to a schema JSON file.- Return type:
dict[str,Any]- Returns:
A dictionary formatted as a flat @graph RO-Crate 1.1 metadata document.
Schema URI registry.
Maps canonical https://highvaluedata.net/fair-data-schema/ URIs to local file-system paths so that cross-schema $ref resolution works during development without network access, and so that tests are fully offline.
- fair_data_schema.registry.all_schemas()[source]#
Return a dict mapping full URIs to parsed schema dicts.
- Return type:
dict[str,Any]
- fair_data_schema.registry.resolve_uri(uri)[source]#
Resolve a canonical schema URI to a local Path.
- Return type:
Path
- fair_data_schema.registry.schema_uris()[source]#
Return all registered canonical schema URIs.
- Return type:
list[str]
Schema validator.
Wraps jsonschema’s Draft202012Validator with a local referencing.Registry so that cross-schema $ref resolution works offline using the local file mappings defined in registry.py.
- fair_data_schema.validator.is_valid_json(path)[source]#
Return True if path contains valid JSON, False otherwise.
- Return type:
bool
- fair_data_schema.validator.validate(instance, schema)[source]#
Validate instance against schema using the FAIR dialect-aware validator.
Returns a (possibly empty) list of ValidationError objects. Raises nothing — all errors are collected and returned.
- Return type:
list[ValidationError]
- fair_data_schema.validator.validate_file(schema_path, instance_path=None)[source]#
Validate a schema file (optionally against an instance file).
If instance_path is None, validates the schema itself against the standard JSON Schema 2020-12 meta-schema (i.e. checks the schema is a valid schema document).
- Return type:
list[ValidationError]
CLI entry point for fair-data-schema.
- Commands:
validate – validate a JSON instance against a schema (or a schema against the meta-schema) lint – check all schema files for JSON syntax validity info – show registered schema URIs
- fair_data_schema.cli.export_cdif(schema, output=None)[source]#
Export a FAIR Data JSON Schema into a CDIF v1.1 profile JSON-LD metadata document.
- Return type:
None
- fair_data_schema.cli.export_croissant(schema, output=None)[source]#
Export a FAIR Data JSON Schema into an MLCommons Croissant 1.1 JSON-LD metadata document.
- Return type:
None
- fair_data_schema.cli.export_ro_crate(schema, output=None)[source]#
Export a FAIR Data JSON Schema into an RO-Crate 1.1 metadata document.
- Return type:
None
- fair_data_schema.cli.info()[source]#
Show registered schema URIs and their local file mappings.
- Return type:
None
- fair_data_schema.cli.lint(directory=PosixPath('.'))[source]#
Check all JSON files in schemas/ and examples/ for syntax validity.
- Return type:
None
- fair_data_schema.cli.serve(host='127.0.0.1', port=8000, root_path='', reload=False, workers=1)[source]#
Start the FAIR Data JSON Schema REST API server.
- Return type:
None
FAIR Pydantic Models (Standalone)#
FAIR Data Schema — Pydantic models (auto-generated).
- class models.DatasetSchema(**data)[source]#
Root-level FAIR dataset schema.
Extends
SchemaNodewith a$schemadeclaration that defaults to the FAIR dialect URI for version dev.
- models.I18nString = str | dict[str, str]#
“Âge”}.
- Type:
A string or a BCP-47 language-mapped dict, e.g. {“en”
- Type:
“Age”, “fr”
- models.I18nText = str | dict[str, str]#
A Markdown-formatted string or a language-mapped dict of Markdown strings.
- models.JsonType#
Valid JSON Schema
typevalues.alias of
Literal[‘string’, ‘integer’, ‘number’, ‘boolean’, ‘array’, ‘object’, ‘null’]
- class models.SchemaNode(**data)[source]#
A node in a FAIR-extended JSON Schema document.
Covers the full JSON Schema Draft 2020-12 vocabulary (all seven vocabularies declared in the FAIR dialect) plus FAIR annotation extensions.
All FAIR extension fields use the
fair_prefix to mirror thefair:JSON prefix and to prevent any naming collision with standard JSON Schema keywords, both present and future.