Skip to main content

An open-source metadata standard for documenting and sharing Dzaleka's digital heritage.

Project description

Dzaleka Metadata Standard (DMS)

License: MIT License: CC BY 4.0 Python 3.9+ Schema: v1.0.0

An open-source metadata specification and toolkit for describing, organising, and sharing digital heritage content from Dzaleka Refugee Camp.


What is DMS?

The Dzaleka Metadata Standard (DMS) is an open-source metadata specification and toolkit designed to describe, organise, and share digital heritage content from Dzaleka Refugee Camp in Malawi.

It provides a standardised, interoperable, and reusable schema for heritage items such as stories, photos, documents, audio, and events.

๐Ÿงญ Purpose

The purpose of DMS is to:

  • Enable consistent metadata creation for heritage assets
  • Support discoverability, interoperability, and reuse of heritage data
  • Provide tools to validate, manage, and export metadata
  • Serve as an open standard for heritage documentation

DMS helps both technical systems and community contributors work with heritage content in a structured way.

๐Ÿ“ฆ What DMS Includes

๐Ÿ“Œ Metadata Schema

A machine-readable specification defining fields, types, and constraints for heritage metadata.

Available formats:

๐Ÿ› ๏ธ Python Tools & Web UI

A suite of tools for creating, validating, and converting metadata records. Includes both a command-line interface (CLI) and a local premium Web UI (DMS Vault). See Quick Start below.

๐Ÿ“– Documentation

Field definitions, best practices, and tutorials for metadata entry. See Documentation.

๐Ÿ“ Example Records

Sample records covering stories, photos, documents, audio, and events. See Examples.


Quick Start

Installation

# Clone the repository
git clone https://github.com/Dzaleka-Connect/Dzaleka-Metadata-Standard.git
cd dzaleka-metadata-standard

# Install the CLI tools
pip install -e .

The Web UI (DMS Vault)

The easiest way to build, validate, and manage records is using the built-in local Web UI:

dms web --port 8080 --dir records/

Create a Record via CLI

# Interactive wizard
dms init

# Skip type selection prompt
dms init --type poem

# Save to specific file
dms init --output my-record.json

Validate a Record

# Single file
dms validate examples/story.json

# All files in a directory
dms validate --dir examples/

Search & Analyze

# Search records by type, subject, or free-text
dms search --dir records/ --type poem -q "displacement"

# View collection analytics (types, languages, completion)
dms stats --dir records/

# Generate a browsable HTML catalogue of your collection
dms report --dir records/ --output catalogue.html

Interoperability Tools

# Export record(s) as JSON-LD for semantic web
dms export examples/story.json

# Convert CSV batch to JSON records
dms convert csv2json examples/batch.csv

# Compare two records field-by-field
dms diff record_v1.json record_v2.json

View Schema Info

dms info

Schema Overview

A DMS record describes a single heritage item with these fields:

Field Required Description
id โœ… Unique identifier (UUID)
title โœ… Name of the item
type โœ… Category: story, photo, document, audio, video, event, map, artwork, site, poem
description โœ… Narrative context
language โœ… Language code (BCP 47)
creator Recommended Who created it (name, role, affiliation)
date Recommended When it was created or occurred
subject Recommended Tags and keywords
location Recommended Place name, area, coordinates
rights Recommended License, access level, holder
source Optional Contributor, collection, original format
format Optional MIME type of the digital object
relation Optional IDs of related records
coverage Optional Time period covered

All fields map to Dublin Core for broad interoperability, with Dzaleka-specific extensions for camp areas and access levels.

Repository Structure

โ”œโ”€โ”€ schema/              Schema definitions
โ”‚   โ”œโ”€โ”€ dms.json         JSON Schema (Draft 2020-12)
โ”‚   โ”œโ”€โ”€ dms.yaml         YAML version
โ”‚   โ””โ”€โ”€ dms.jsonld       JSON-LD context for linked data
โ”‚
โ”œโ”€โ”€ dms/                 Python CLI tools
โ”‚   โ”œโ”€โ”€ cli.py           Command entry points
โ”‚   โ”œโ”€โ”€ validator.py     Schema validation engine
โ”‚   โ”œโ”€โ”€ generator.py     Interactive record creator
โ”‚   โ””โ”€โ”€ converter.py     CSV โ†” JSON converter
โ”‚
โ”œโ”€โ”€ docs/                Documentation
โ”‚   โ”œโ”€โ”€ field-guide.md   Field definitions & guidelines
โ”‚   โ”œโ”€โ”€ best-practices.md Metadata entry best practices
โ”‚   โ””โ”€โ”€ getting-started.md Installation & tutorial
โ”‚
โ”œโ”€โ”€ examples/            Sample records
โ”‚   โ”œโ”€โ”€ story.json       Oral history
โ”‚   โ”œโ”€โ”€ photo.json       Photograph
โ”‚   โ”œโ”€โ”€ document.json    Administrative record
โ”‚   โ”œโ”€โ”€ audio.json       Music recording
โ”‚   โ”œโ”€โ”€ event.json       Community event
โ”‚   โ”œโ”€โ”€ site.json        Heritage site (Site Register)
โ”‚   โ”œโ”€โ”€ mural.json       Public artwork (Art Catalogue)
โ”‚   โ”œโ”€โ”€ poem.json        Poetry
โ”‚   โ””โ”€โ”€ batch.csv        CSV batch import example
โ”‚
โ””โ”€โ”€ tests/               Test suite

Examples

The examples/ directory contains sample records for common heritage item types:

  • story.json โ€” "Journey to Dzaleka: A Story of Hope" (oral history)
  • photo.json โ€” "Market Day at Dzaleka" (daily life photography)
  • document.json โ€” "Community School Registration Records, 2018"
  • audio.json โ€” "Traditional Songs of the Great Lakes Region"
  • event.json โ€” "World Refugee Day Celebration 2024"
  • site.json โ€” "Dzaleka Health Centre" (from Site Register)
  • mural.json โ€” "Child Early Marriage Awareness Mural" (from Art Catalogue)
  • poem.json โ€” "Home Is a Word I Carry" (poetry)
  • batch.csv โ€” Records in CSV format for batch import

Documentation

Interoperability

DMS is designed to work with existing standards and systems. The dms.jsonld context enables linked data publishing with mappings to:

Vocabulary Prefix Used for
Dublin Core dc:, dcterms: Core metadata fields (title, creator, subject, rights, etc.)
FOAF foaf: Person/Agent descriptions (foaf:name, foaf:Person, foaf:Image)
BIBO bibo: Bibliographic roles (bibo:editor, bibo:translator, bibo:interviewer)
Schema.org schema: Creative works, places, events, affiliations
W3C Geo geo: Geographic coordinates (geo:lat, geo:long)
SKOS skos: Subject vocabularies and concept schemes

Additional format support:

  • CSV โ€” Import/export for spreadsheet-based workflows
  • JSON Schema โ€” Machine-readable validation for any language or platform

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Areas where you can help:

  • ๐Ÿ“ Adding example records from the Dzaleka community
  • ๐ŸŒ Translating documentation into Swahili, French, or Kinyarwanda
  • ๐Ÿ”ง Improving the CLI tools
  • ๐Ÿ“– Writing guides for specific use cases
  • ๐Ÿ› Reporting bugs and suggesting improvements

License

Acknowledgments

  • The Dzaleka refugee community for their heritage, stories, and resilience
  • Dublin Core Metadata Initiative for the foundational metadata standard
  • All contributors and volunteers who help preserve Dzaleka's digital heritage

Preserving heritage. Empowering community. Building the future.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dzaleka_metadata_standard-1.0.0.tar.gz (50.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dzaleka_metadata_standard-1.0.0-py3-none-any.whl (51.1 kB view details)

Uploaded Python 3

File details

Details for the file dzaleka_metadata_standard-1.0.0.tar.gz.

File metadata

File hashes

Hashes for dzaleka_metadata_standard-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0102f19eb836d3d055e2a57b1942a356a720bf14a4940668154e3617f9f672db
MD5 1d473fea1d7154c110ff887260de7118
BLAKE2b-256 da6df654e16efb354e97abd1b34f3922f80938b52535606493e42ab71b492cf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for dzaleka_metadata_standard-1.0.0.tar.gz:

Publisher: pypi-publish.yml on Dzaleka-Connect/Dzaleka-Metadata-Standard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dzaleka_metadata_standard-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for dzaleka_metadata_standard-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ffec0c105b1be1adf1714824ff54f6f2bfc7413219827959d13c0c565c399afd
MD5 96cfb3c2643ba244ce728ba758e84093
BLAKE2b-256 bec0386fa8a442867c4746510be6b2d3fa7030c799a97f42f85e658d12f61d40

See more details on using hashes here.

Provenance

The following attestation bundles were made for dzaleka_metadata_standard-1.0.0-py3-none-any.whl:

Publisher: pypi-publish.yml on Dzaleka-Connect/Dzaleka-Metadata-Standard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page