Wikibase Migrator
WikibaseMigrator is a tool to migrate wikibase entities from one wikibase instance to another. During the migration process all used Item and Property IDs are mapped to the IDs from the target Wikibase instance.
Installation
pip install wikibasemigrator
for Development
Install WikibaseMigrator after cloning with
pip install .
for development with
pip install .[test]
How to use
- WikibaseMigrator offers a cli tool and a web UI.
- Migration is defined with a migration profile which needs to be defined. For details on the definition see Wikibase Migration Profile Configuration
Docker
docker run -p 8009:8080 -v ~/.config/WikibaseMigrator/profiles/WikibaseMigrationTest.yaml:/config.yaml tholzheim/wbmigrator
Exchange
~/.config/WikibaseMigrator/profiles/WikibaseMigrationTest.yamlwith the location of your migration profile configuration if needed
Web UI
The webserver can be started over the cli with
wbmigrate webserver --config FactGrid.yaml --host localhost --port 9100
or with docker
CLI Tool
After installing the project cli is available under the name ẁbmigrate
wbmigrate --help
Usage: wbmigrate [OPTIONS] COMMAND [ARGS]...
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy it or customize the │
│ installation. │
│ --help Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────────────╮
│ app Run the WikibaseMigrator web server as local app Note: Experimental feature as some of the │
│ imported resources are not localized yet │
│ webserver Start the WikibaseMigrator web server │
│ migrate Migrate the provided entities │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
wbmigrate migrate
wbmigrate migrate --help
Usage: wbmigrate migrate [OPTIONS]
Migrate the provided entities
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ * --config TEXT The configuration file defining the Wikibases │
│ [default: None] │
│ [required] │
│ * --summary TEXT Summary message to add to the wikibase edits │
│ [default: None] │
│ [required] │
│ --entity TEXT The items to migrate [default: None] │
│ --query TEXT The query querying the items to migrate. The items to │
│ migrate must have the binding ?items │
│ [default: None] │
│ --query-file TEXT The query file with a query querying the items to migrate. │
│ The items to migrate must have the binding ?item │
│ [default: None] │
│ --show-details --no-show-details Show detailed information during the migration process │
│ [default: no-show-details] │
│ --force --no-force If True migrate items directly to target wikibase │
│ [default: no-force] │
│ --help Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
wbmigrate webserver
wbmigrate webserver --help
Usage: wbmigrate webserver [OPTIONS]
Start the WikibaseMigrator web server
╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ * --config TEXT The configuration file defining the Wikibases [default: None] [required] │
│ --host TEXT host of the webserver [default: 0.0.0.0] │
│ --port INTEGER port of the webserver [default: 8080] │
│ --help Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Migration Pipeline
flowchart TD
source[(source Wikibase)]
target[(target Wikibase)]
config@{ shape: doc, label: "Mapping Profile" }
A@{ shape: circle, label: "Start" }
A-- provide --> B(Entity IDs)
B--start-->t
config-->t
q1<-.query.->target
q3<-.query.->target
subgraph Migrate
subgraph Translation
direction LR
t@{ shape: sm-circ, label: "Small start" }
t-->q1
q1[[query mappings]]
t-->q2[[query entity records]]
ser@{ shape: docs, label: "Source Entity Records"}
q2--result-->ser
map@{ shape: doc, label: "Mapping Table" }
q1--result-->map
translate[translate]
map-->translate
ser-->translate
translate-->TranslationResults@{ shape: docs, label: "Translated Entities"}
end
ex{exists<br>in target?}
TranslationResults --> ex
ex --noo-->TranslationResultsFinal
ex --yes-->m
TranslationResultsFinal@{ shape: docs, label: "Translated & Merged Entities"}
mergedEntities-->TranslationResultsFinal
subgraph merge
m@{ shape: sm-circ, label: "Small start" }
q3[[query entity records]]
m-->q3
targetEntities@{ shape: docs, label: "Target Entities"}
translatedEntities@{ shape: docs, label: "Translated Entities"}
q3--result-->targetEntities
m-->translatedEntities
merger[merge]
translatedEntities-->merger
targetEntities-->merger
mergedEntities@{ shape: docs, label: "Merged Entities"}
merger-->mergedEntities
end
migrator[migrate]
end
q2<-.query.->source
TranslationResultsFinal-->migrator
migrator --write--> target
stop@{ shape: framed-circle, label: "Stop" }
migrator-->stop
Merging Entities
If an entity already exists in the target wikibase instance the source entity is first translated to the target and then merged with the target entity. The merging of entities differs from the default wikibase entity merging for cases where the statement does not have qualifiers. In this case if the statement value is equal the qualifiers of the source are merged into the target. Otherwise, the merge results in an additional statement to preserve both qualifier information (equal to the wikibase entity merge)
Acknowledgements
This project was funded by FactGrid
Licence
This repository is licensed under the Apache 2.0
Metadata
Release files for wikibasemigrator 0.0.27
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wikibasemigrator-0.0.27.tar.gz | 405.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wikibasemigrator-0.0.27-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 583.9 kB
Release files / wikibasemigrator-0.0.27.tar.gz
| Download URL | wikibasemigrator-0.0.27.tar.gz |
|---|---|
| Size | 405.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ef3c8a4399e10de7b18631a03846b5cbd5897114656d5bbd61b4e848bdcef0f
|
|
BLAKE2b-256 checksum How to use checksums |
a457b1e9aeb03e4992cfe9c7163dbb57bd7253b2144bdb4d01902ed2fed32abf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 8, 2026.
Transparency logRelease files / wikibasemigrator-0.0.27-py3-none-any.whl
| Download URL | wikibasemigrator-0.0.27-py3-none-any.whl |
|---|---|
| Size | 178.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
05fb9ef660e90efb2c61216d9ef490eda1db9c1888286105c058e7720a8e1957
|
|
BLAKE2b-256 checksum How to use checksums |
3d99be9132089fec327403a8a105fbb15124071ab858ce929a8a90b5a7353398
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 8, 2026.
Transparency log