Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dcat-ap (LinkML)

A LinkML approximation of SEMICeu DCAT-AP 3.0.1, built as a continuous evaluation harness for LinkML itself.

What this is (and isn't)

This is a scoping / demo schema, not a production DCAT-AP profile. The deliverable is the evaluation: by trying to reproduce the upstream SEMIC SHACL, JSON-LD context, and HTML spec from a single LinkML source schema, we surface exactly where LinkML can and can't express what DCAT-AP needs.

The findings live in COMPARISON.md — a running ledger of "what matches / what's missing / what LinkML can't yet express". Individual gaps get filed as issues under issues/ and (manually) cross-linked to upstream linkml/linkml tickets.

How it works

src/dcat_ap/schema/dcat_ap.yaml         ← the only hand-edited file
            │
            │  just gen-project / just gen-doc
            ▼
project/{shacl,owl,jsonschema,...}      ← generated artefacts
docs/elements/*.md                       ← generated documentation
src/dcat_ap/datamodel/*.py               ← generated Python / Pydantic
            │
            │  diff against
            ▼
original/releases/3.0.1/{shacl,context,html,...}   ← upstream truth
            │
            ▼
COMPARISON.md  + issues/issue_*.md       ← what's still off, and why

original/ is a gitignored clone of https://github.com/SEMICeu/DCAT-AP; refresh it with git clone --depth=1 https://github.com/SEMICeu/DCAT-AP original. The clone is read-only — never edit it.

LinkML version

The project intentionally pins both linkml and linkml-runtime to git linkml/linkml@main (the linkml repo is now a uv workspace with both packages under packages/). This is permanent: the whole point is to evaluate against unreleased LinkML so we can see what will be possible, not just what is. Pull the latest commits with:

uv sync --group dev --refresh

Quick start

just install      # uv sync --group dev (LinkML from git@main)
just gen-project  # SHACL, OWL, JSON Schema, ShEx, Pydantic, dataclasses, ...
just gen-doc      # mkdocs sources under docs/
just test         # schema regen + pytest + linkml-run-examples

Run just with no arguments for the full recipe list.

Iterative workflow

When something in DCAT-AP doesn't translate cleanly:

  1. Document the gap in COMPARISON.md.
  2. File it as issues/issue_<topic>.md (see the track-issues skill in .claude/skills/).
  3. Work around it in the LinkML schema if a reasonable approximation exists.
  4. Re-run the align-model skill against the latest LinkML main to check whether a recent merge has closed the gap.

Both skills (align-model, track-issues) are stored as Claude Code project skills under .claude/skills/ and are invoked automatically when their triggering conditions match.

Repository layout

Path Purpose
src/dcat_ap/schema/dcat_ap.yaml The LinkML schema — only hand-edited file
src/dcat_ap/datamodel/ Generated Python dataclasses + Pydantic
project/ Generated SHACL, OWL, JSON Schema, ShEx, GraphQL, Java, TypeScript, Protobuf, SQL DDL, JSON-LD context, prefix map (gitignored)
docs/elements/ Generated per-class/per-slot Markdown (gitignored)
original/ Read-only clone of SEMICeu/DCAT-AP (gitignored)
tests/data/{valid,invalid}/ Example data tested by linkml-run-examples
issues/ Local issue files describing LinkML gaps
COMPARISON.md Running gap analysis between generated and upstream artefacts
CLAUDE.md Operating manual for Claude Code working on the repo
.claude/skills/ Project-local Claude Code skills (align-model, track-issues)

Credits

Bootstrapped from the linkml-project-copier template (doi:10.5281/zenodo.15163584).

About

A evaluation repo to explore LinkML-alignability of SEMICs DCAT-AP

Resources

Code of conduct

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Contributors

Languages