Skip to content

Latest commit

 

History

History
75 lines (51 loc) · 2.55 KB

File metadata and controls

75 lines (51 loc) · 2.55 KB

CLAUDE.md — ZineCore2 Specification

What This Repo Is

A metadata specification repository (not a software project). It defines four Dublin Core application profiles for zines and produces machine-readable artifacts for implementers.

Build Command

node scripts/build-vocabularies.js

Transforms vocabularies/canonical/*.json into CSV, SKOS/Turtle, JSON-LD, and Django fixtures in vocabularies/generated/. Always commit canonical and generated files together.

The Four Pillars Pattern

Each profile (ZineCore2, AgentCore2, HoldingCore2, RepoCore2) has five synchronized artifacts:

  1. DCAP Narrative (docs/<profile>-profile.md) — authoritative source
  2. DC TAP Table (profiles/<profile>-tap.csv) — machine-readable constraints
  3. JSON-LD Context (contexts/<profile>-context.jsonld) — IRI mappings
  4. JSON Schema (schemas/<profile>.schema.json) — validation rules
  5. TypeScript Types (types/<Profile>.d.ts) — manually maintained interfaces

When modifying a profile, update all five artifacts plus the implementers guide (zinecore2-implementers-guide.md) if applicable.

Profile Relationships

ZineCore2.creator → AgentCore2.display_name
HoldingCore2.zine_id → ZineCore2.id
HoldingCore2.repository_id → RepoCore2.id

Namespaces

  • 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:).

Critical ZineCore2 Mappings

  • series_titledcterms:isPartOf (not a custom property)
  • issue_designationzine:issueDesignation
  • genrezine:genre
  • public_noteszine:publicNotes

ZineCore2 Required Fields

Every conformant record MUST include: title, creator, subject, genre, date, language, rights

Controlled Vocabularies

Eight vocabularies: subjects, genres, rights_statements, agent_kinds, agent_roles, repo_kinds, holding_access_statuses, holding_distro_statuses.

Canonical JSON format:

{
  "id": "genres",
  "title": "Zine Genres",
  "namespace": "https://zinecore.org/vocab/genres/",
  "terms": [
    { "code": "perzine", "label": "Perzine" }
  ]
}

The build script's DJANGO_MODELS mapping must stay aligned with the server repo's load_vocabularies management command.

Vocabulary API Reference

See vocabularies/API-REFERENCE.md for the HTTP content-negotiation API hosted at https://zinecore.org/api/vocabularies/.