Metadata specification for the Core2 family of Dublin Core application profiles for describing zines, their creators, holdings, and repositories.
| Profile | Describes | Required Fields |
|---|---|---|
| ZineCore2 | Zines and DIY publications | title, creator, subject, genre, date, language, rights |
| AgentCore2 | Creators, contributors, publishers | id, kind, display_name, public |
| HoldingCore2 | Specific copies at repositories | id, repository_id, zine_id |
| RepoCore2 | Libraries, archives, distros | id, name, kind, country |
spec/
├── docs/ # DCAP narratives (human-readable specs)
├── profiles/ # DC TAP CSV files (machine-readable profiles)
├── contexts/ # JSON-LD contexts (semantic mappings)
├── schemas/ # JSON Schemas (validation)
├── types/ # TypeScript type definitions
├── vocabularies/
│ ├── canonical/ # Canonical JSON sources (edit these)
│ └── generated/ # Auto-generated: CSV, SKOS, JSON-LD, Django fixtures
└── scripts/
└── build-vocabularies.js
Each profile has five synchronized artifacts (the "Four Pillars" + TypeScript):
- DCAP Narrative (
docs/<profile>-profile.md) - DC TAP Table (
profiles/<profile>-tap.csv) - JSON-LD Context (
contexts/<profile>-context.jsonld) - JSON Schema (
schemas/<profile>.schema.json) - TypeScript Types (
types/<Profile>.d.ts)
Eight vocabularies in vocabularies/canonical/:
| Vocabulary | Used By |
|---|---|
subjects |
ZineCore2 |
genres |
ZineCore2 |
rights_statements |
ZineCore2 |
agent_kinds |
AgentCore2 |
agent_roles |
AgentCore2 |
repo_kinds |
RepoCore2 |
holding_access_statuses |
HoldingCore2 |
holding_distro_statuses |
HoldingCore2 |
Edit canonical sources in vocabularies/canonical/*.json, then regenerate all formats:
node scripts/build-vocabularies.jsThis produces CSV, SKOS/Turtle, JSON-LD, and Django fixture formats in vocabularies/generated/.
Always commit both canonical and generated files together.
npx ajv-cli validate -s schemas/zinecore2.schema.json -d <your-record.json>zine:→https://zinecore.org/v2/zine#zine-agent:→https://zinecore.org/v2/agent#zine-holding:→https://zinecore.org/v2/holding#zine-repo:→https://zinecore.org/v2/repo#
All DC mappings use dcterms: (not legacy dc:).
- ZineCore2/website — Documentation site at zinecore.org
- ZineCore2/server — Django REST API backend