Skip to content

Write a Wikibase manifest

Deniz Erdogan edited this page Sep 2, 2023 · 6 revisions

This is a tutorial on how to write a manifest for a given Wikibase instance.

Before you start

Before you start writing a manifest for a given Wikibase, you should take a look at wikibase-manifests to check if there is already a manifest for the Wikibase.

If there is no manifest for the given Wikibase, then you can write one according to the following tutorial.

The format of the manifest

Here is the manifest of Wikidata:

{
  "version": "1.0",
  "mediawiki": {
    "name": "Wikidata",
    "root": "https://www.wikidata.org/wiki/",
    "main_page": "https://www.wikidata.org/wiki/Wikidata:Main_Page",
    "api": "https://www.wikidata.org/w/api.php"
  },
  "wikibase": {
    "site_iri": "http://www.wikidata.org/entity/",
    "maxlag": 5,
    "properties": {
      "instance_of": "P31",
      "subclass_of": "P279"
    },
    "constraints": {
      "property_constraint_pid": "P2302",
      "exception_to_constraint_pid": "P2303",
      "constraint_status_pid": "P2316",
      "mandatory_constraint_qid": "Q21502408",
      "suggestion_constraint_qid": "Q62026391",
      "distinct_values_constraint_qid": "Q21502410",
      // ...
    }
  },
  "oauth": {
    "registration_page": "https://meta.wikimedia.org/wiki/Special:OAuthConsumerRegistration/propose"
  },
  "reconciliation": {
    "endpoint": "https://wdreconcile.toolforge.org/${lang}/api"
  },
  "editgroups": {
    "url_schema": "([[:toollabs:editgroups/b/OR/${batch_id}|details]])"
  }
}

In general, there are several parts of the manifest: version, mediawiki, wikibase, oauth, reconciliation and editgroups.

version

The version should in the format "1.x". The minor version should be increased when you update the manifest in a backward-compatible manner. The major version should be "1" if the manifest is in the format specified by wikibase-manifest-schema-v1.json.

mediawiki

This part contains some basic information of the Wikibase.

name

The name of the Wikibase, should be unique for different Wikibase instances.

root

The root of the Wikibase. Typically in the form "https://foo.bar/wiki/". The trailing slash cannot be omitted.

main_page

The main page of the Wikibase. Typically in the form "https://foo.bar/wiki/Main_Page".

api

The MediaWiki API endpoint of the Wikibase. Typically in the form "https://foo.bar/w/api.php".

wikibase

This part contains configurations of the Wikibase extension.

site_iri

The IRI of the Wikibase, in the form 'http://foo.bar/entity/'. This should match the IRI prefixes used in RDF serialization. Be careful about using "http" or "https", because any variation will break comparisons at various places. The trailing slash cannot be omitted.

maxlag

Maxlag is a parameter that controls how aggressive a mass-editing tool should be when uploading edits to a Wikibase instance. See https://www.mediawiki.org/wiki/Manual:Maxlag_parameter for more details. The value should be adapted according to the actual traffic of the Wikibase.

properties

Some special properties of the Wikibase.

instance_of

The ID of the property "instance of".

subclass_of

The ID of the property "subclass of".

constraints

Not required. Should be configured if the Wikibase has the WikibaseQualityConstraints extension installed. Configurations of constraints consists of IDs of constraints related properties and items. For Wikidata, these IDs are retrieved from extension.json. To configure this for another Wikibase instance, you should contact an admin of the Wikibase instance to get the content of extension.json.

oauth

Not required. Should be configured if the Wikibase has the OAuth extension installed.

registration_page

The page to register an OAuth consumer of the Wikibase. Typically in the form "https://foo.bar/wiki/Special:OAuthConsumerRegistration/propose".

reconciliation

The Wikibase instance must have at least a reconciliation service endpoint linked to it. If there is no reconciliation service for the Wikibase, you can run one with openrefine-wikibase.

endpoint

The default reconciliation service endpoint of the Wikibase instance. The endpoint must contain the "${lang}" variable such as "https://wdreconcile.toolforge.org/${lang}/api", since the reconciliation service is expected to work for different languages.

editgroups

Not required. Should be configured if the Wikibase instance has EditGroups service(s).

url_schema

The URL schema used in edits summary. This is used for EditGroups to extract the batch id from a batch of edits and for linking to the EditGroups page of the batch. The URL schema must contains the variable '${batch_id}', such as '(:toollabs:editgroups/b/OR/${batch_id})' for Wikidata.

Check the format of the manifest

As mentioned above, the manifest should be in the format specified by wikibase-manifest-schema-v1.json. You can check the format by adding the manifest directly to OpenRefine, and OpenRefine will complain if there is anything wrong with the format.

test-validate-manifest-format

Clone this wiki locally