diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..740eb6a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog + +## Current + +- Enriched the KJV source manifest with translation, edition, contributor, feature, attachment, license, and catalog-display metadata. +- Recorded the reusable manifest convention for future Bible translations and study resources. +- Adopted the convention that each named implementation phase bumps the repo version and is committed locally and remotely. + +## 0.1.1 - 2026-07-12 + +- Phase 1 metadata foundation: expanded the KJV manifest and manifest documentation so future translations can describe editions, source text basis, contributors, concordance links, study notes, commentaries, maps, and other attachments. + +## 0.1.0 - 2026-07-12 + +- Initial LibreBible data repository with KJV `eng-kjv2006` source manifest, checksum checking, USFM import, generated JSONL packages, and generated JSON catalog output. diff --git a/CONVENTIONS.md b/CONVENTIONS.md index 22235d5..d80a46a 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -21,6 +21,8 @@ The long-term goal is a dynamic resource library that applications can search, i - Local development happens in the workspace repo on drive `W:`. - The Christ Unscripted Gitea remote is the remote backup, collaboration, and publishing copy. - Do not treat resource work as durable until it is committed locally and pushed to Gitea. +- Every named implementation phase should bump the repo version and be recorded in Git both locally and remotely. +- Phase completion means the version bump, code/data/docs changes, and validation result are committed locally and pushed to Gitea. - The normal flow is local import/check, generated package verification, local commit, push to Gitea, then publish generated catalogs or releases from the pushed state. - The local repo and the Gitea repo are both intentional copies. Either should be enough to recover the project if the other system fails. - Do not publish generated resources or release artifacts from a dirty worktree unless Jason explicitly asks for that exact operation. @@ -62,8 +64,11 @@ Every source resource needs a manifest in `sources/`. Each manifest should record: - Stable resource id. +- Resource type, such as `translation`, `study_notes`, `commentary`, `map`, `lexicon`, `dictionary`, `cross_reference`, or `timeline`. - Human title and abbreviation. -- Language. +- Language code, language name, script, and dialect when relevant. +- Translation date, edition date, source text basis, tradition, and public description when the resource is a Bible translation. +- Contributors and maintainers with their roles. - Upstream provider. - Upstream human URL. - Upstream download URL. @@ -74,7 +79,18 @@ Each manifest should record: - Last checked timestamp. - Importer name and version. - Generated package paths. -- Feature flags such as `strongs`, `notes`, `morphology`, `commentary`, `maps`, or `cross-references`. +- Structured features and attachment metadata such as `strongs`, `notes`, `morphology`, `commentary`, `maps`, or `cross-references`. + +Bible translation manifests should be broad enough to describe editions that include more than plain verse text. A translation may include or later connect to Hebrew, Greek, or Aramaic concordance entries, morphology, lemma links, study notes, commentaries, maps, timelines, media, and cross-reference resources. Do not encode KJV-only assumptions into the manifest shape. + +Attachment metadata should identify: + +- Attachment resource type. +- Whether the attachment is embedded in the source package or external. +- Relationship type, such as `word-to-strongs`, `verse-to-note`, `range-to-commentary`, `place-to-map`, or `event-to-timeline`. +- Anchor types, such as translation, book, chapter, verse, verse range, word/token, Strong's number, lemma, topic, place, or timeline event. +- Languages and systems involved, such as Hebrew, Greek, Aramaic, Strong's, morphology, or source-language lemmas. +- Generated package path when the attachment is packaged. ## Metadata Truth diff --git a/docs/resource-manifest.md b/docs/resource-manifest.md index 64a08a7..eb373bf 100644 --- a/docs/resource-manifest.md +++ b/docs/resource-manifest.md @@ -1,25 +1,47 @@ # Resource Manifest -Each `sources/*.json` file describes one upstream resource. +Each `sources/*.json` file describes one upstream resource. The first resource is a Bible translation, but the same manifest discipline should also cover study notes, commentaries, maps, lexicons, dictionaries, timelines, cross-references, and other Bible-study resources. Required fields: - `id`: Stable package id used by apps. +- `resource_type`: Type of resource, such as `translation`, `study_notes`, `commentary`, `map`, `lexicon`, `dictionary`, `cross_reference`, or `timeline`. - `title`: Human-readable title. +- `short_title`: Short human title when different from `title`. - `abbreviation`: Short label. -- `language`: BCP-47-ish language code. +- `alternate_ids`: Upstream or ecosystem ids for the same resource. +- `language`: Object with language code, name, and dialect when relevant. +- `script`: Script code when useful. +- `canon`: Scope and notes for biblical canon coverage. +- `translation`: Translation-specific metadata, including translation year, edition year, source text basis, tradition, and public description. +- `contributors`: Names and roles for translators, maintainers, publishers, source providers, or package providers. +- `features`: Structured feature list, not just strings. +- `attachments`: Included and future-supported attachment metadata. - `source.provider`: Upstream publisher or repository. - `source.url`: Human-facing upstream page. - `source.download_url`: Machine download URL used by importers. - `source.format`: Upstream source format, such as `usfm-zip`. +- `source.upstream_id`: Upstream resource id. +- `source.upstream_last_updated`: Upstream last-updated date when known. - `license.name`: License or rights label. - `license.redistribution`: Whether this repo may redistribute normalized outputs. -- `license.notes`: Practical rights notes. +- `license.jurisdiction_notes`: Practical rights notes. +- `license.attribution`: Attribution text when needed. - `checks.expected_sha256`: Last accepted source archive checksum. - `checks.last_checked_at`: Last automated check timestamp. - `importer.name`: Script/importer id. - `importer.version`: Importer version. - `packages`: Generated package paths. +- `catalog_display`: Human-facing summary and primary feature labels. + +Attachment metadata should record: + +- `resource_type`: Attachment type, such as `concordance_links`, `study_notes`, `commentary`, `map`, `morphology`, `lexicon`, or `timeline`. +- `relationship`: How the attachment connects, such as `word-to-strongs`, `verse-to-note`, `range-to-commentary`, or `place-to-map`. +- `anchor_types`: The target surfaces it can attach to: translation, book, chapter, verse, verse range, word/token, Strong's number, lemma, topic, place, or timeline event. +- `languages`: Original or target languages involved, including Hebrew, Greek, and Aramaic when applicable. +- `systems`: Concordance or tagging systems involved, such as Strong's or morphology codes. +- `package`: Generated package path when the attachment is packaged. Update flow: diff --git a/package-lock.json b/package-lock.json index cfb27ba..1181c00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "libre-bible-data", - "version": "0.1.0", + "version": "0.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "libre-bible-data", - "version": "0.1.0", + "version": "0.1.1", "dependencies": { "adm-zip": "^0.5.16" } diff --git a/package.json b/package.json index f83957e..d264b21 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "libre-bible-data", - "version": "0.1.0", + "version": "0.1.1", "private": true, "type": "module", "scripts": { diff --git a/packages/json/catalog.json b/packages/json/catalog.json index c16938d..a7e1198 100644 --- a/packages/json/catalog.json +++ b/packages/json/catalog.json @@ -1,20 +1,58 @@ { - "generated_at": "2026-07-12T02:30:18.202Z", + "generated_at": "2026-07-12T02:51:51.354Z", "resources": [ { "id": "kjv-eng-kjv2006", "title": "King James (Authorized) Version", "abbreviation": "KJV", - "language": "eng", + "language": { + "code": "eng", + "name": "English", + "dialect": "archaic British" + }, "features": [ - "strongs", - "usfm" + { + "id": "bible-text", + "type": "translation_text", + "label": "Bible text", + "languages": [ + "eng" + ], + "embedded": true + }, + { + "id": "strongs-links", + "type": "concordance_links", + "label": "Strong's-linked words", + "languages": [ + "hebrew", + "aramaic", + "greek" + ], + "systems": [ + "strongs" + ], + "embedded": true, + "package": "packages/json/kjv-eng-kjv2006/strongs-links.jsonl" + }, + { + "id": "usfm-source", + "type": "source_format", + "label": "USFM source", + "format": "usfm", + "embedded": false + } ], "license": { "name": "Public Domain", "redistribution": true, "jurisdiction_notes": "eBible states this work is firmly public domain outside the United Kingdom; UK printing/import may be restricted by Crown letters patent.", - "source_license_url": "https://ebible.org/find/show.php?id=eng-kjv2006" + "source_license_url": "https://ebible.org/find/show.php?id=eng-kjv2006", + "attribution": "This free text is provided courtesy of CrossWire Bible Society and eBible.org.", + "public_domain_outside": [ + "United Kingdom" + ], + "restricted_notes": "Printing this translation in the United Kingdom or importing printed copies into the UK may require permission from the Crown patent holders." }, "package_path": "packages/json/kjv-eng-kjv2006/catalog.json", "counts": { diff --git a/packages/json/kjv-eng-kjv2006/catalog.json b/packages/json/kjv-eng-kjv2006/catalog.json index 49dc209..d15cb09 100644 --- a/packages/json/kjv-eng-kjv2006/catalog.json +++ b/packages/json/kjv-eng-kjv2006/catalog.json @@ -2,10 +2,43 @@ "id": "kjv-eng-kjv2006", "title": "King James (Authorized) Version", "abbreviation": "KJV", - "language": "eng", + "language": { + "code": "eng", + "name": "English", + "dialect": "archaic British" + }, "features": [ - "strongs", - "usfm" + { + "id": "bible-text", + "type": "translation_text", + "label": "Bible text", + "languages": [ + "eng" + ], + "embedded": true + }, + { + "id": "strongs-links", + "type": "concordance_links", + "label": "Strong's-linked words", + "languages": [ + "hebrew", + "aramaic", + "greek" + ], + "systems": [ + "strongs" + ], + "embedded": true, + "package": "packages/json/kjv-eng-kjv2006/strongs-links.jsonl" + }, + { + "id": "usfm-source", + "type": "source_format", + "label": "USFM source", + "format": "usfm", + "embedded": false + } ], "source": { "provider": "eBible.org", @@ -13,19 +46,37 @@ "download_url": "https://ebible.org/Scriptures/eng-kjv2006_usfm.zip", "format": "usfm-zip", "upstream_id": "eng-kjv2006", - "upstream_last_updated": "2026-05-16" + "upstream_last_updated": "2026-05-16", + "available_formats": [ + "browser", + "mobile-html", + "epub", + "pdf", + "sword", + "plain-text", + "vpl-sql", + "browser-bible", + "usfx", + "usfm", + "xetex" + ] }, "license": { "name": "Public Domain", "redistribution": true, "jurisdiction_notes": "eBible states this work is firmly public domain outside the United Kingdom; UK printing/import may be restricted by Crown letters patent.", - "source_license_url": "https://ebible.org/find/show.php?id=eng-kjv2006" + "source_license_url": "https://ebible.org/find/show.php?id=eng-kjv2006", + "attribution": "This free text is provided courtesy of CrossWire Bible Society and eBible.org.", + "public_domain_outside": [ + "United Kingdom" + ], + "restricted_notes": "Printing this translation in the United Kingdom or importing printed copies into the UK may require permission from the Crown patent holders." }, "importer": { "name": "scripts/import-usfm.js", "version": "0.1.0" }, - "generated_at": "2026-07-12T02:30:18.202Z", + "generated_at": "2026-07-12T02:51:51.354Z", "source_sha256": "4ea6952590d070bfa22985aded48a49581e31b568a60aa09e25f73462e700e7d", "counts": { "books": 66, diff --git a/sources/kjv-eng-kjv2006.json b/sources/kjv-eng-kjv2006.json index cdb178b..5695cc4 100644 --- a/sources/kjv-eng-kjv2006.json +++ b/sources/kjv-eng-kjv2006.json @@ -1,23 +1,125 @@ { "id": "kjv-eng-kjv2006", + "resource_type": "translation", + "project_name": "LibreBible", "title": "King James (Authorized) Version", + "short_title": "King James Version", "abbreviation": "KJV", - "language": "eng", - "canon": "protocanon", - "features": ["strongs", "usfm"], + "alternate_ids": ["ENGKJV", "eng-kjv2006"], + "language": { + "code": "eng", + "name": "English", + "dialect": "archaic British" + }, + "script": "Latn", + "canon": { + "scope": "protocanon", + "notes": "eBible describes this package as protocanon only." + }, + "translation": { + "base_title": "King James Version", + "edition": "1769 standardized text with Strong's numbers added", + "translation_year": 1611, + "edition_year": 1769, + "source_text_basis": "Authorized Version / King James Version standardized text of 1769", + "tradition": "Protestant", + "public_description": "The King James Version or Authorized Version of the Holy Bible, using the standardized text of 1769, protocanon only, with Strong's numbers added." + }, + "contributors": [ + { + "name": "King James Version translators", + "role": "translation" + }, + { + "name": "CrossWire Bible Society", + "role": "source text provider" + }, + { + "name": "eBible.org", + "role": "publisher and package provider" + } + ], + "features": [ + { + "id": "bible-text", + "type": "translation_text", + "label": "Bible text", + "languages": ["eng"], + "embedded": true + }, + { + "id": "strongs-links", + "type": "concordance_links", + "label": "Strong's-linked words", + "languages": ["hebrew", "aramaic", "greek"], + "systems": ["strongs"], + "embedded": true, + "package": "packages/json/kjv-eng-kjv2006/strongs-links.jsonl" + }, + { + "id": "usfm-source", + "type": "source_format", + "label": "USFM source", + "format": "usfm", + "embedded": false + } + ], + "attachments": { + "included": [ + { + "id": "kjv-eng-kjv2006-strongs-links", + "resource_type": "concordance_links", + "label": "Strong's links", + "relationship": "word-to-strongs", + "anchor_types": ["verse", "word", "strongs_number"], + "languages": ["hebrew", "aramaic", "greek"], + "systems": ["strongs"], + "source": "Embedded in the eBible USFM package.", + "package": "packages/json/kjv-eng-kjv2006/strongs-links.jsonl" + } + ], + "supported_future_types": [ + "study_notes", + "commentary", + "cross_references", + "morphology", + "lemma_links", + "lexicon", + "dictionary", + "maps", + "timeline", + "media" + ] + }, "source": { "provider": "eBible.org", "url": "https://ebible.org/find/show.php?id=eng-kjv2006", "download_url": "https://ebible.org/Scriptures/eng-kjv2006_usfm.zip", "format": "usfm-zip", "upstream_id": "eng-kjv2006", - "upstream_last_updated": "2026-05-16" + "upstream_last_updated": "2026-05-16", + "available_formats": [ + "browser", + "mobile-html", + "epub", + "pdf", + "sword", + "plain-text", + "vpl-sql", + "browser-bible", + "usfx", + "usfm", + "xetex" + ] }, "license": { "name": "Public Domain", "redistribution": true, "jurisdiction_notes": "eBible states this work is firmly public domain outside the United Kingdom; UK printing/import may be restricted by Crown letters patent.", - "source_license_url": "https://ebible.org/find/show.php?id=eng-kjv2006" + "source_license_url": "https://ebible.org/find/show.php?id=eng-kjv2006", + "attribution": "This free text is provided courtesy of CrossWire Bible Society and eBible.org.", + "public_domain_outside": ["United Kingdom"], + "restricted_notes": "Printing this translation in the United Kingdom or importing printed copies into the UK may require permission from the Crown patent holders." }, "checks": { "expected_sha256": "4ea6952590d070bfa22985aded48a49581e31b568a60aa09e25f73462e700e7d", @@ -31,5 +133,9 @@ "json_catalog": "packages/json/kjv-eng-kjv2006/catalog.json", "verses_jsonl": "packages/json/kjv-eng-kjv2006/verses.jsonl", "strongs_jsonl": "packages/json/kjv-eng-kjv2006/strongs-links.jsonl" + }, + "catalog_display": { + "primary_features": ["Bible text", "Strong's-linked words", "USFM source"], + "summary": "Public-domain KJV package based on the 1769 standardized text, with Strong's numbers embedded in the source USFM." } }