This repository contains the pipeline and data model for the long-term preservation of the research data of Stadt.Geschichte.Basel (SGB) on the DaSCH Service Platform (DSP).
It enables the transfer of metadata and media files from the SGB Omeka S instance to the DSP. The pipeline detects changes, updates existing records, and ensures reproducible and open research.
Comprehensive documentation is available in the docs/ directory:
- π Complete Documentation -- Full system documentation
- ποΈ Architecture Overview -- System design and components
- π Workflows -- Data migration workflows with Mermaid diagrams
- π§ API Reference -- Python function documentation
- π§© Data Model -- Data model documentation
- β‘ Installation & Setup
- βοΈ Configuration
- π Usage
- π οΈ Development
- π Troubleshooting
We recommend using GitHub Codespaces for a reproducible setup.
- Click the green
<> Codebutton β "Codespaces" β "Create codespace onmain" - Configure environment:
cp example.env .envand edit with your credentials - Test installation:
uv run python scripts/api_get_project.py
# Clone repository
git clone https://github.com/Stadt-Geschichte-Basel/omeka2dsp.git
cd omeka2dsp
# Install dependencies
pnpm install # Node.js development tools
uv sync # Python dependencies with uv
# Configure environment
cp example.env .env
# Edit .env with your credentials
# Test installation
uv run python scripts/api_get_project.py# Run sample data migration (recommended first test)
python scripts/data_2_dasch.py -m sample_data
# Run full migration
python scripts/data_2_dasch.py -m all_data
# Run test data migration
python scripts/data_2_dasch.py -m test_data| Mode | Description | Use Case |
|---|---|---|
all_data |
Process entire collection | Production migrations |
sample_data |
Process random subset | Testing and validation |
test_data |
Process predefined items | Development, debugging |
graph LR
A[Omeka API] --> B[Data Extraction]
B --> C[Data Transformation]
C --> D[DSP Upload]
D --> E[DSP API]
F[Configuration] --> B
F --> C
F --> D
style A fill:#86bbd8
style E fill:#dbfe87
style B fill:#ffe880
style C fill:#ffe880
style D fill:#ffe880
- β Automated synchronization: detects and applies only necessary changes
- β Media file handling: transfers and processes associated files
- β Data validation: ensures data integrity throughout the process
- β Error recovery: robust error handling and retry mechanisms
This repository follows the Turing Way advanced structure:
assets/β images, logos, etc.data/β data filesdocs/β documentation of the repository and dataproject-management/β project management documentsscripts/β source code (migration scripts, utilities)report.qmdβ report describing the analysis of the data
The omeka2dsp system transforms data from Omeka's metadata structure to the DaSCH Service Platform (DSP) using a specialized data model developed by Stadt.Geschichte.Basel's research data management team.
- Resource Classes: Maps Omeka item types to DSP ontology classes (e.g.,
sgb_PHOTO,sgb_DOCUMENT) - Property Mappings: Converts Omeka metadata fields to DSP property values with appropriate data types
- Value Transformations: Handles text values, URIs, dates, and linked resources according to DSP specifications
- Media Integration: Processes and uploads associated files while maintaining metadata relationships
The data model follows the manual for creating non-discriminatory metadata for historical sources and research data, ensuring inclusive and accessible metadata practices.
For detailed data model documentation, see Data Model Reference.
This project is maintained by Stadt.Geschichte.Basel. Support is provided publicly through GitHub.
| Type | Platform |
|---|---|
| π¨ Bug Reports | GitHub Issues |
| π Report bad data | GitHub Issues |
| π Docs Issue | GitHub Issues |
| π Feature Requests | GitHub Issues |
| π‘ Security vulnerabilities | SECURITY.md |
| π¬ General Questions | GitHub Discussions |
No changes are currently planned.
Contributions are welcome. Please see CONTRIBUTING.md for guidelines. If you find errors, propose new features, or want to extend the dataset, open an issue or a pull request.
We use Semantic Versioning. Available versions are listed in the tags.
- Stadt.Geschichte.Basel β Initial work β Stadt-Geschichte-Basel
- Nico GΓΆrlich β Initial scripting β koilebeit
See also the list of contributors.
- Code: GNU Affero General Public License v3.0 β see LICENSE-AGPL.md
- Data: Creative Commons Attribution 4.0 International (CC BY 4.0) β see LICENSE-CCBY.md
By using this repository, you agree to provide appropriate credit and share modifications under the same license terms.