{"id":44954216,"url":"https://github.com/quadriga-dk/quadriga-schema","last_synced_at":"2026-02-18T11:17:28.426Z","repository":{"id":301123755,"uuid":"1007838017","full_name":"quadriga-dk/quadriga-schema","owner":"quadriga-dk","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-16T13:20:26.000Z","size":14909,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-16T20:56:23.916Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://quadriga-dk.github.io/quadriga-schema/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quadriga-dk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-CODE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-24T15:54:07.000Z","updated_at":"2026-02-16T13:20:28.000Z","dependencies_parsed_at":"2025-06-25T09:33:34.094Z","dependency_job_id":"b81e5bb0-02a2-47d7-865c-0f8d2539ee70","html_url":"https://github.com/quadriga-dk/quadriga-schema","commit_stats":null,"previous_names":["quadriga-dk/quadriga-schema"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/quadriga-dk/quadriga-schema","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quadriga-dk%2Fquadriga-schema","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quadriga-dk%2Fquadriga-schema/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quadriga-dk%2Fquadriga-schema/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quadriga-dk%2Fquadriga-schema/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quadriga-dk","download_url":"https://codeload.github.com/quadriga-dk/quadriga-schema/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quadriga-dk%2Fquadriga-schema/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29577085,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T08:38:15.585Z","status":"ssl_error","status_checked_at":"2026-02-18T08:38:14.917Z","response_time":162,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-18T11:17:27.700Z","updated_at":"2026-02-18T11:17:28.418Z","avatar_url":"https://github.com/quadriga-dk.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QUADRIGA Metadata Schema\n\n[![DOI](https://zenodo.org/badge/1007838017.svg)](https://doi.org/10.5281/zenodo.18184772)\n\n**Table of Contents**\n\n- [QUADRIGA Metadata Schema](#quadriga-metadata-schema)\n  - [About This Repository](#about-this-repository)\n  - [Schema Structure](#schema-structure)\n    - [Canonical order of the elements in `metadata.yml`](#canonical-order-of-the-elements-in-metadatayml)\n    - [Diagrams](#diagrams)\n  - [Usage](#usage)\n    - [Creating Metadata Files](#creating-metadata-files)\n    - [Vocabulary Mappings (x-mappings)](#vocabulary-mappings-x-mappings)\n      - [Structure](#structure)\n      - [Target Vocabularies](#target-vocabularies)\n      - [SKOS Relation Types](#skos-relation-types)\n      - [Meta-Schema](#meta-schema)\n  - [Documentation](#documentation)\n\n\nThe QUADRIGA Metadata Schema is a JSON-Schema designed for describing Open\nEducational Resources (OER) in German academic contexts. It provides structured\nmetadata for learning materials, integrating competency frameworks, Bloom's\ntaxonomy, and multilingual support to enable comprehensive resource description\nand discovery. It is used primarily withing QUADRIGA as ground truth within a\nJupyter Book repository and to allow the Navigator to ingest this metadata for\nretrieval purposes.\n\nThe schema emphasizes semantic web compatibility through [Dublin\nCore](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/) and\n[Schema.org](https://schema.org/) mappings, while supporting flexible person\nrepresentation, learning objectives tracking, and quality assurance workflows\ntailored for educational content creation and management.\n\n## About This Repository\n\nThis repository contains the complete QUADRIGA schema definition split into\nmodular JSON files for maintainability. It features a versioning system with a\n`latest/` symlink pointing to the current version, automated HTML documentation\ngeneration via GitHub Actions, and deployment to GitHub Pages for easy access\nand reference.\n\n**Entry Point:** `schema.json`\n\n**Licensing:** The schema is licensed under CC0 (see `LICENSE-SCHEMA.txt`). Any\ncode in this repository is licensed under MIT (see `LICENSE-CODE.txt`).\n\n**Archiving:** The schema is archived on Zenodo for long-term preservation and\ncitable DOI assignment. Zenodo metadata is maintained in `.zenodo.json`.\n\n## Schema Structure\n\nThe schema describes educational resources with the following key components:\n\n- **Basic metadata**: Title, description, identifiers, publication dates, and\n  versioning\n- **Authors and contributors**: Structured person information with\n  [ORCID](https://orcid.org/) and [CRediT](https://credit.niso.org) support\n- **Content organization**: Chapter-based structure with individual learning\n  objectives\n- **Competency mapping**: Integration with [QUADRIGA data literacy\n  framework](https://doi.org/10.5281/zenodo.14747822), data flow categories, and\n  Bloom's taxonomy\n- **Context information**: Discipline, target groups, and research object types\n- **Technical details**: Git repository links and multilingual text support\n\nSee [`examples/minimal_metadata.yml`](./examples/minimal_metadata.yml) for a minimal example showing how these\nelements work together to describe an educational resource.\n\n### Canonical order of the elements in `metadata.yml`\nThe following order of elements is recommended (required fields have an asterisk after their name):\n\n```\n- title*\n- authors*\n  - (definition of each author)\n    - family-names*\n    - given-names*\n- keywords*\n- description*\n- table-of-contents*\n- discipline*\n- research-object-type*\n- target-group*\n- time-required*\n- language*\n- contributors*\n  - (definition of each contributor)\n    - family-names*\n    - given-names*\n- identifier*\n- git*\n- url*\n- prerequisites\n- used-tools\n  - (definition for each tool)\n    - name\n    - url\n- chapters*\n  - (definition of each chapter)\n    - title*\n    - description*\n    - url*\n    - time-required*\n    - learning-goal*\n    - learning-objectives*\n      - (definition for each learning-objective)\n        - learning-objective*\n        - competency*\n        - data-flow*\n        - blooms-category*\n        - assessment\n        - jupyter-book-glue-id (only for internal use)\n    - supplemented-by\n      - (definition for each supplemental material)\n        - title*\n        - url*\n        - note\n    - language (only allowed if it overwrites the books language)\n- date-issued*\n- date-modified*\n- version*\n- context-of-creation*\n- quality-assurance*\n- learning-resource-type*\n- schema-version*\n- license*\n  - content*\n  - code\n```\n\n### Diagrams\n\nYou can find an approximation of the schema in the form of UML class diagrams \u003ca href=\"https://quadriga-dk.github.io/quadriga-schema/diagrams/\" target=\"_blank\"\u003ehere\u003c/a\u003e.\n\nTo rebuild the diagrams make sure [Docker](https://www.docker.com) (recommended) or [PlantUML](https://plantuml.com) is installed and run `just diagrams`.\n\n## Usage\n\n### Creating Metadata Files\n\nCreate a YAML file following the schema structure. Start with the minimal\nexample in [`examples/minimal_metadata.yml`](./examples/minimal_metadata.yml).\n\nYou can use `latest` in the schema URL, but in production we recommend picking\na specific `schema-version` like `v1.0.0`.\n\n### Vocabulary Mappings (x-mappings)\n\nThe QUADRIGA schema uses a custom `x-mappings` extension field to document how\nschema elements (properties or types) map to standard vocabularies. This approach\nco-locates crosswalk mappings directly within the schema definition, making them\nmachine-readable and version-controlled alongside the schema itself.\n\n#### Structure\n\nEach schema element can include an `x-mappings` field that maps to seven target\nvocabularies:\n\n```json\n{\n  \"title\": {\n    \"type\": \"string\",\n    \"description\": \"Titel des Buchs\",\n    \"x-mappings\": {\n      \"dc\": {\n        \"relation\": \"skos:exactMatch\",\n        \"target\": \"dc:title\"\n      },\n      \"dcat\": null,\n      \"dcterms\": {\n        \"relation\": \"skos:exactMatch\",\n        \"target\": \"dcterms:title\"\n      },\n      \"hermes\": {\n        \"relation\": \"skos:exactMatch\",\n        \"target\": \"hermes:title\"\n      },\n      \"lrmi\": null,\n      \"modalia\": null,\n      \"schema\": {\n        \"relation\": \"skos:exactMatch\",\n        \"target\": \"schema:name\"\n      }\n    }\n  }\n}\n```\n\n#### Target Vocabularies\n\n- **dc**: [Dublin Core Elements](http://purl.org/dc/elements/1.1/)\n- **dcat**: [Data Catalog Vocabulary](http://www.w3.org/ns/dcat#)\n- **dcterms**: [DCMI Metadata Terms](http://purl.org/dc/terms/)\n- **hermes**: [HERMES OER metadata schema](https://zenodo.org/records/17279619)\n- **lrmi**: [Learning Resource Metadata Initiative](http://purl.org/dcx/lrmi-terms/)\n- **modalia**: [Modalia ontology](https://purl.org/ontology/modalia#)\n- **schema**: [Schema.org](http://schema.org/)\n\n#### SKOS Relation Types\n\nMappings use [SKOS mapping relations](https://www.w3.org/TR/skos-reference/#mapping)\nto indicate semantic relationships:\n\n- `skos:exactMatch`: Properties are semantically equivalent\n- `skos:closeMatch`: Properties are closely related but not identical\n- `skos:broadMatch`: Target property is broader in meaning\n- `skos:narrowMatch`: Target property is narrower in meaning\n- `skos:relatedMatch`: Properties are related but not hierarchically\n\nUse `null` when no appropriate mapping was identified for a vocabulary.\n\n#### Mapping Matrix\n\nAn interactive mapping matrix showing all schema elements mapped against the\ntarget vocabularies is available for each schema version:\n\n- **Latest:**\n  [https://quadriga-dk.github.io/quadriga-schema/latest/mapping-matrix.html](https://quadriga-dk.github.io/quadriga-schema/latest/mapping-matrix.html)\n- **v1.0.0:**\n  [https://quadriga-dk.github.io/quadriga-schema/v1.0.0/mapping-matrix.html](https://quadriga-dk.github.io/quadriga-schema/v1.0.0/mapping-matrix.html)\n\nThe matrix is color-coded by SKOS relation type (using a colorblind-safe\npalette), includes links to the schema elements and target vocabulary terms,\nand shows mapping comments as tooltips.\n\nTo build the mapping matrix locally, run `just mapping-matrix` (output will be\nin `_build/\u003cversion\u003e/mapping-matrix.html`).\n\n#### Meta-Schema\n\nThe `x-mappings` structure is validated by\n[x-mappings-meta-schema.json](./x-mappings-meta-schema.json), which ensures\nconsistent mapping documentation across all schema files.\n\n## Documentation\n\n- **HTML Documentation:**\n  [https://quadriga-dk.github.io/quadriga-schema/](https://quadriga-dk.github.io/quadriga-schema/)\n- **Latest Schema:**\n  [https://quadriga-dk.github.io/quadriga-schema/latest/schema.json](https://quadriga-dk.github.io/quadriga-schema/latest/schema.json)\n\nTo build the HTML documentation locally, run `just html` (output will be in\n`_build/`).\n\n### Local Development\n\nThis project uses [just](https://just.systems) as a command runner. Install it\nwith `brew install just` (macOS) or see the\n[installation docs](https://just.systems/man/en/packages.html) for other\nplatforms. Run `just --list` to see all available recipes:\n\n```\njust validate           # Validate x-mappings in all schema files\njust diagrams           # Build all PlantUML diagrams (auto-detect Docker vs local)\njust diagrams docker    # Force Docker for building diagrams\njust diagrams list      # List available diagrams\njust diagram \u003cname\u003e     # Build a single diagram by name\njust html               # Build HTML documentation (validates first)\njust mapping-matrix     # Generate mapping matrix HTML for all versions\njust build              # Build everything: diagrams + HTML docs + mapping matrix\njust serve              # Serve built HTML at http://localhost:8000\njust clean              # Clean build artifacts\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquadriga-dk%2Fquadriga-schema","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquadriga-dk%2Fquadriga-schema","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquadriga-dk%2Fquadriga-schema/lists"}