As a new Wikibase user, I would like to copy entities, primarily properties and items from an existing Wikibase to my new one, so that I can have a starting point in my knowledge graph from which to build.
After doing some small prototyping exercise in our Wikibase.cloud team week we attempted to build a tool using pywikibot to enable copying pages from one Wiki to another. We attempted to use the transferbot.py script under-the-hood but realised that this does not work on Wikibase entities.
In order to make an incremental step towards this goal we want to try an alternative technical implementation that could tell us how realistic it would be to use this as a foundation for a future user facing feature. This ticket however doesn't anticipate a complete user facing feature; although we are aware that we (or some other technically minded user) might use the outcome of this to do some real-world importing.
We realised that a sensible architecture for this would be a container image that we can run which takes the following parameters:
- a source wiki
- a target wiki (+ credentials to edit there; maybe OAuth)
- a list of entities to move (or perhaps optionally all entities in the case of a smaller source Wikibase)
One way to do this would be using wikibase-cli which we investigated a little further and seemed plausible.
When a property with a data type missing on the target wiki gets copied over we should log a warning, don't copy the property and continue.
Out of scope for now:
- copy all statements
- for when we do copy over statements: what should happen about statements referencing entities that are not present (i.e. the depth of copy)?
- don't bother with allowing for specific languages to be copied
- (not a probem while we're not copying statements) figuring out what to do with statements with a datatype missing on target wiki?
Acceptance Criteria:
- A container image (i.e. a Dockerfile and some tooling to build it)
- That takes as either ENV variables, a file mounted in or standard input
- a list of entities
- A source wiki
- A target wiki
- That after completing has imported items and properties with their labels, descriptions and alias in all languages and the datatype of properties to the target wiki