Skip to content

Repository files navigation

Static FAIR Data Point

A framework for publishing a FAIR Data Point (FDP) backed entirely by static files on GitHub — no running server required.

Metadata is maintained as RDF Turtle in a Git repository, validated with ShEx, and published to GitHub Pages. Community contributions arrive via GitHub Issue forms (or optional web forms) and are automatically converted into DCAT-compliant datasets by GitHub Actions.

How it works

flowchart TD
A[Contributors] -->|GitHub Issue forms| B[GitHub Issues]
A -->|Web forms\nCloudflare Worker| B
B --> C[GitHub Actions]
C --> D[issues_to_datasets.py]
C --> E[publish.yml]
D --> F["datasets/{slug}/\ndocs/datasets/"]
E --> G["docs/fdp/ (RDF)\ngenerated/ (SHACL)"]
F --> H[GitHub Pages\nstatic FAIR Data Point]
G --> H
H -.->|optional| I[FDP Index]
style A fill:#4a90d9,color:#fff
style B fill:#f5a623,color:#fff
style C fill:#7b68ee,color:#fff
style H fill:#50c878,color:#fff
style I fill:#ccc,color:#333,stroke-dasharray: 5 5
Loading
  1. Contribute — submit structured data via a GitHub Issue form or web form
  2. Validate — ShEx schemas check every RDF resource on every PR
  3. Convert — GitHub Actions transform issues into per-topic FAIR datasets
  4. Publish — Turtle, JSON-LD, and HTML are served from GitHub Pages
  5. Index — an optional FDP index crawls and aggregates published FDPs

Quick start

git clone https://github.com/StaticFDP/static-fdp.git
cd static-fdp
chmod +x setup.sh
./setup.sh \
--name "my-project" \
--title "My FAIR Data Point" \
--org "MyOrg" \
--publisher "My Working Group" \
--publisher-url "https://example.org/" \
--domain "fdp.example.org" \
--output ./my-new-fdp

This generates a ready-to-push repository with ShEx profiles, GitHub Actions workflows, issue templates, and a DCAT catalog — all parameterized for your project.

See DEPLOY.md for the full deployment guide, including prerequisites and optional components (Cloudflare Worker, ORCID, FDP Index).

Repository layout

graph LR
root[static-fdp/] --> readme[README.md]
root --> deploy[DEPLOY.md]
root --> setup[setup.sh]
root --> profiles[profiles/]
root --> templates[templates/]
root --> fdpindex[fdp-index/]
root --> examples[examples/]
root --> docs[docs/]
root --> license[LICENSE]
profiles --> shex1[FairDataPoint.shex]
profiles --> shex2[Catalog.shex]
profiles --> shex3[Dataset.shex]
templates --> catalog[catalog.ttl]
templates --> wrangler[wrangler.toml]
templates --> issuetpl[issue-templates/]
templates --> workflows[workflows/]
issuetpl --> contrib[01-contribution.yml]
issuetpl --> config[config.yml]
workflows --> validate[validate.yml]
workflows --> publish[publish.yml]
workflows --> convert[convert-issues.yml]
workflows --> deployworker[deploy-worker.yml]
fdpindex --> fdpreadme[README.md]
examples --> leiden[leiden-longevity-study/]
docs --> spec[spec/]
docs --> images[images/]
style root fill:#4a90d9,color:#fff
style profiles fill:#50c878,color:#fff
style templates fill:#f5a623,color:#fff
style workflows fill:#f5a623,color:#fff
Loading

Validation

ShEx is the primary validation gate — PRs cannot merge if ShEx validation fails. SHACL schemas are generated automatically from ShEx for ecosystem compatibility but are not blocking.

SchemaValidates
profiles/FairDataPoint.shexFDP root resource
profiles/Catalog.shexdcat:Catalog entries
profiles/Dataset.shexdcat:Dataset entries

FDP Index

The companion fdp-index repository provides a serverless FDP index that crawls registered FDPs daily and publishes a searchable catalog at staticfdp.github.io/fdp-index.

See fdp-index/README.md for how to register your FDP or deploy your own index.

Live deployments

FDPRepository
GA4GH Rare Disease TrajectoriesStaticFDP/ga4gh-rare-disease-trajectories

Specification

The FDP Layout specification describes the RDF graph structures required to construct a conformant FAIR Data Point, based on DCAT2.

Authors

NameORCID
Rajaram Kaliyaperumal0000-0002-1215-167X
Eric G. Prud'hommeaux0000-0003-1775-9921
Egon Willighagen0000-0001-7542-0286
Andra Waagmeester0000-0001-9773-4008

Previous version

The original EJP-RD-specific implementation is preserved on the archive/v0-ejprd branch.

License

MIT

About

a FAIR Data Point backed by static content

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages