Extension:WikibaseMediaInfo/Data Model/JSON

From Linux Web Expert

This document describes the canonical JSON format used to represent Mediainfo entities in the API. This format is currently unstable and subject to change.

For an explanation of the terms used in this document, please refer to the Wikibase Glossary. For a specification of the semantics of the data structures described here, see the MediaInfo Data Model.

Difference from Wikibase

There are several difference between WikibaseMediaInfo and Wikibase JSON format. Note WikibaseMediaInfo JSON format is currently not a stable interface, so these may change in the future.

  • MediaInfo serialization uses "statements" as key instead of "claims" (phab:T149410); however, you need to use "claims" in wbeditentity
  • WikibaseMediaInfo serializes empty statements as empty array [] instead of empty object {} in JSON (phab:T222159)
  • In statements there is no datatype field (phab:T246809)

JSON Flavor

WikibaseMediaInfo follows the same conventions as Wikibase, as described in Wikibase DataModel JSON Flavor.

Top Level Structure

{
  "entities": {
    "M83198284": {
      "pageid": 83198284,
      "ns": 6,
      "title": "File:Straßenbahn Haltestelle Freizeit- und Erholungszentrum-3.jpg",
      "lastrevid": 371115009,
      "modified": "2019-10-19T08:16:04Z",
      "type": "mediainfo",
      "id": "M83198284",
      "labels": {
        "en": {
          "language": "en",
          "value": "Tram stop in Berlin, Germany"
        },
        "de": {
          "language": "de",
          "value": "Straßenbahn Haltestelle in Berlin"
        }
      },
      "descriptions": {},
      "statements": []
    }
  }
}

The JSON representation consists of the following fields in the top level structure:

pageid
The page id the entity is stored on
title
The title of the page the entity is stored on (this could also include namespace such as 'Item:Q60')
ns
The namespace id the entity is stored in
lastrevid
The JSON document's version (this is a MediaWiki revision ID).
modified
The JSON document's publication date (this is a MediaWiki revision timestamp).
type
The entity type identifier, "mediainfo" for MediaInfo entities.
id
The canonical ID of the entity.
labels
Contains the labels (also known as "captions") in different languages, see Labels below.
descriptions
This field is superseded; see [1] for more information.
statements
Contains any number of statements, grouped by property. See Statements below.

Labels

{
  "labels": {
    "en": {
      "language": "en",
      "value": "Tram stop in Berlin, Germany"
    },
    "de": {
      "language": "de",
      "value": "Straßenbahn Haltestelle in Berlin"
    }
  },
}

For each language, there is a record using the following fields:

language
The language code.
value
The actual label.

Statements

{
  "statements": {
      "P180": [
          {
              "mainsnak": {
                  "snaktype": "value",
                  "property": "P180",
                  "hash": "db55dd32d9ab75e7cc6a40f7217f4dab2e162ae7",
                  "datavalue": {
                      "value": {
                          "entity-type": "item",
                          "numeric-id": 158942,
                          "id": "Q158942"
                      },
                      "type": "wikibase-entityid"
                  }
              },
              "type": "statement",
              "qualifiers": {
                  "P1354": [
                      {
                          "snaktype": "value",
                          "property": "P1354",
                          "hash": "fc66de241219792376d16240f4305b4d7a140c83",
                          "datavalue": {
                              "value": {
                                  "entity-type": "item",
                                  "numeric-id": 4590598,
                                  "id": "Q4590598"
                              },
                              "type": "wikibase-entityid"
                          }
                      }
                  ]
              },
              "qualifiers-order": [
                  "P1354"
              ],
              "id": "M53735917$C95AE483-800F-4E34-A278-4F129A027099",
              "rank": "normal"
          }
      ],
      "P170": [
          {
              "mainsnak": {
                  "snaktype": "value",
                  "property": "P170",
                  "hash": "15b3ae706ad0e4de1fd911e2c108f422d290213a",
                  "datavalue": {
                      "value": {
                          "entity-type": "item",
                          "numeric-id": 34788025,
                          "id": "Q34788025"
                      },
                      "type": "wikibase-entityid"
                  }
              },
              "type": "statement",
              "id": "M53735917$DC230D2B-F11B-496B-8169-6CB713670AB1",
              "rank": "preferred"
          }
      ]
      "P6731": [
          {
              "mainsnak": {
                  "snaktype": "value",
                  "property": "P6731",
                  "hash": "caf86f67082da0e2d10079a79bedf327335b0459",
                  "datavalue": {
                      "value": {
                          "entity-type": "item",
                          "numeric-id": 63348069,
                          "id": "Q63348069"
                      },
                      "type": "wikibase-entityid"
                  }
              },
              "type": "statement",
              "id": "M53735917$9A2D4A40-7DAB-43B6-9252-FD0D72E1A064",
              "rank": "normal"
          },
          {
              "mainsnak": {
                  "snaktype": "value",
                  "property": "P6731",
                  "hash": "00effd845d313cc188e25302a8712c2d48647171",
                  "datavalue": {
                      "value": {
                          "entity-type": "item",
                          "numeric-id": 63348049,
                          "id": "Q63348049"
                      },
                      "type": "wikibase-entityid"
                  }
              },
              "type": "statement",
              "id": "M53735917$AAE1B58B-B553-4F46-A138-9F2FBA649423",
              "rank": "normal"
          }
      ]
  }
}

The JSON "statement" entry of a MediaInfo entity corresponds directly to the JSON "claim" entry of a Wikibase entity.

A Statement consists of a main Snak and a (possibly empty) list of qualifier Snaks.

Statements are described in full in the Statements section of the Wikibase DataModel JSON documentation, with three differences described above.

There are no restrictions on which properties can be used. WikibaseMediaInfo on production uses properties and Wikibase items federated from Wikidata.