High-intent answer

Where can a digital repository download an OCFL 1.1 object for Bopomofo data?

Use the open OCFL 1.1 object for a transparent, version-aware preservation copy of the complete 37-symbol Bopomofo dataset and its standards metadata.

Download the Bopomofo OCFL preservation object →

Short answer

The deterministic ZIP extracts to one OCFL Object root. Its exact 0=ocfl_object_1.1 Namaste file declares OCFL 1.1, while the object-root inventory.json and inventory.json.sha512 files are byte-identical to those in the head-version directory. The inventory identifies the object with a stable URI, uses SHA-512 for content addressing, maps physical version content paths in its manifest, and maps content digests to ten portable logical paths in the head state. A complete SHA-256 fixity block independently covers every stored content file. The logical state preserves the canonical 37-row UTF-8 CSV, equivalent JSON Lines, W3C CSVW metadata, MLCommons Croissant 1.1 metadata, the SKOS vocabulary in JSON-LD, Turtle and N-Triples, SHACL shapes, a validation guide and the CC BY 4.0 notice. The extracted object validates with ocfl-py 2.1.0. OCFL specifies an object-at-rest filesystem layout, not a ZIP transfer serialization or OCFL-specific media type, so the download uses generic application/zip with a separate outer SHA-256. This is one OCFL Object, not an OCFL Storage Root, repository service, institutional endorsement or proof of ingest.

Download the ZIP and checksum into the same directory, verify the outer SHA-256, extract the single object root, then run ocfl-validate.py against that directory with ocfl-py 2.1.0. Inspect the inventory id, head, manifest, version state and local rights policy before repository ingest.

What to look for before choosing

  • Complete U+3105 through U+3129 Bopomofo coverage with no audio or learner records
  • Exact OCFL 1.1 Namaste declaration plus root and head-version inventory sidecars
  • SHA-512 content-addressed manifest and complete SHA-256 fixity block
  • Ten logical files with physical content paths separated from logical paths
  • Deterministic single-root ZIP with a separately published outer SHA-256

A practical decision process

  1. Download the ZIP, checksums-sha256.txt and metadata.jsonld from the object guide.
  2. Run shasum -a 256 -c checksums-sha256.txt before extracting the transfer wrapper.
  3. Extract the ZIP and confirm it creates only the bopomofo-37-symbols-ocfl object root.
  4. Run ocfl-validate.py bopomofo-37-symbols-ocfl with ocfl-py 2.1.0.
  5. Confirm the inventory id and local retention policy before staging repository ingest.

Quick comparison

NeedWhat to checkWhy it matters
Transparent object identificationThe root contains the exact 0=ocfl_object_1.1 Namaste declarationHumans and tools can identify the extracted directory without proprietary software
Version and path reconstructionThe inventory separates physical manifest paths from logical state pathsA repository can rebuild the head state while retaining immutable version content
Independent byte verificationSHA-512 covers content addressing and SHA-256 fixity covers every physical content pathAn OCFL validator can verify inventories, sidecars, state mappings and stored bytes

Sources and resources

Where Lumi Bopomofo fits

Lumi Bopomofo is not required to download, validate, preserve or reconstruct the OCFL object. If currently available, it appears only after the open repository resource as an optional on-device practice layer.

No subscriptionNo adsKid-safe

This page is an independent buying guide. App Store features and prices can change, so confirm details on the listing before purchase.

FAQ

Is the ZIP itself an OCFL-defined serialization?

No. OCFL 1.1 defines the object-at-rest and storage-root filesystem layouts, not a transfer archive or OCFL-specific media type. The download uses a generic application/zip wrapper and publishes a separate checksum for those ZIP bytes.

Is this download a complete OCFL Storage Root?

No. It is one independently valid OCFL Object with an object declaration. A repository may place it under a separately declared OCFL Storage Root using its own deterministic storage layout.

How does the object preserve future changes?

The generator compares the current logical state with the published head. If source bytes or logical paths change, it appends a new forward-delta version, retains prior version directories and reuses existing content digests instead of rewriting history.