Core interoperability specification for CDIF (Cross-Domain Interoperability Framework). The CDIF Core profile defines the mandatory and optional base properties for any CDIF metadata record, implemented using the schema.org vocabulary.
- CDIFCoreImplementationGuide.md — Complete documentation of all classes and properties for the CDIF Core profile, including required/optional properties, data types, and JSON-LD implementation guidance.
- cdifCoreStructuredSchema.json — JSON Schema (Draft 2020-12) for validating CDIF Core profile instances. Generated from the metadataBuildingBlocks source schemas.
- coreRules.shacl — SHACL validation shapes for CDIF Core. Copied from
metadataBuildingBlocks/_sources/cdifProperties/cdifCore/rules.shacland should be updated whenever the source changes.
Every valid CDIF Core instance must include:
@id— Resource identifier (IRI)@type— Must includeschema:Dataset@context— JSON-LD context withschema,dcterms,dcat,provprefixesschema:name— Descriptive nameschema:identifier— Primary identifier (string or PropertyValue)schema:dateModified— Last update date (ISO 8601)schema:licenseORschema:conditionsOfAccess— Rights/access informationschema:urlORschema:distribution— Access to the resourceschema:subjectOf— CatalogRecord withdcterms:conformsToincludinghttps://w3id.org/cdif/core/1.0
The examples/ directory contains 40+ validated JSON-LD dataset examples that conform to the CDIF Core profile. These are records that do NOT use Discovery-level properties (spatialCoverage, temporalCoverage, variableMeasured) — records with those properties are in the Discovery repository.
Sources include:
| Source | Count | Description |
|---|---|---|
| CDIF/ESIP/ODIS | 9 | Minimal, simple, and template examples |
| ADA | 10 | Core-stripped records from ADA test corpus |
| Kaggle | 10 | Iris, Netflix, Titanic, etc. — harvested from landing page JSON-LD |
| Dataverse | 7 | Harvard, Borealis, DANS, JHU — via Dataverse schema.org export API |
| PSDI DCAT | 5 | CSD, ChASe, AFLOW, etc. — converted from DCAT via DCAT/dcat_to_cdif.py |
| FEDEO | 1 | Satellite data collection with WebAPI distribution (OpenSearch) |
All examples pass cdifCore JSON Schema validation.
FrameAndValidate.py frames a JSON-LD document against the CDIF Core schema and optionally validates it:
# Frame and validate
python FrameAndValidate.py examples/exampleCdifCoreMinimal.json --validate
# Frame and save output
python FrameAndValidate.py examples/exampleCdifCoreMinimal.json -o framed.json
# Use a different schema
python FrameAndValidate.py input.jsonld --validate --schema my-schema.jsonThe script uses cdifCore-frame.jsonld to frame JSON-LD documents into the expected property structure. Context prefixes from the input document are automatically merged into the frame, so domain-specific prefixes (e.g. ada:, xas:) work without being pre-declared in the frame.
Requirements: pyld, jsonschema (pip install pyld jsonschema)
coreRules.shacl contains SHACL shapes for validating CDIF Core instances. This file is copied from metadataBuildingBlocks/_sources/cdifProperties/cdifCore/rules.shacl and should be updated whenever the source changes.
├── CDIFCoreImplementationGuide.md Classes and properties documentation
├── cdifCoreStructuredSchema.json JSON Schema for validation
├── cdifCore-frame.jsonld JSON-LD frame for document framing
├── FrameAndValidate.py JSON-LD framing and JSON Schema validation
├── coreRules.shacl SHACL validation shapes (synced from metadataBuildingBlocks)
├── examples/ 40+ validated Core-only JSON-LD examples
├── ODIS/ Archived ODIS type-specific templates and examples
└── LICENSE
- Discovery — Extends Core with spatialCoverage, temporalCoverage, variableMeasured, measurementTechnique, quality
- metadataBuildingBlocks — Source building block schemas, SHACL rules, and profile definitions
- validation — Framing, batch validation, conformance checking, harvesting, and DCAT conversion tools
See LICENSE.