Module:WikidataCheck
File:Ambox warning orange.svg | This Lua module is used on approximately 457,000 pages, or roughly 36531% of all pages. To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them. |
File:Full-protection-shackle.svg | This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
File:Information icon4.svg | The following is the documentation for Template:WikidataCheck. |
Template:WikidataCheck compares a template parameter to a Wikidata property and adds pages using the template to one of three categories: not in, same as, or different from Wikidata. It is powered by the Lua module Module:WikidataCheck.
Usage[edit source]
To add only articles to the categories:
{{WikidataCheck|property=P###|value={{{value|}}}|category=Category prefix}}
To add pages in other namespaces to the categories:
{{WikidataCheck|property=P###|value={{{value|}}}|category=Category prefix|namespaces=0,14}}
To prevent adding pages to a "same as" category:
{{WikidataCheck|property=P###|value={{{value|}}}|category=Category prefix|nocatsame=1}}
Parameters[edit source]
- Required
|property=
is the P### of the property. The "P" must be uppercase.|value=
is the value to use from the template. This would be something like{{{id|}}}
or{{{id|{{{1|}}}}}}
|category=
is the prefix to use in front of the category names. The categories created are "[prefix] not in Wikidata", "[prefix] same as Wikidata", and "[prefix] different from Wikidata".- It is recommended you create these categories with
{{hiddencat}}
before applying this template.
- It is recommended you create these categories with
- Optional
|namespaces=
is a comma separated list of the numerical namespaces to apply the template in. The default is 0, which is just article space.|nocatsame=
if set to any value will prevent adding pages to a "same as" category. The "not in" and "different from" categories are still added, where applicable.|qid=
if specified will check a a different Wikidata item than the current article
Example[edit source]
For {{MusicBrainz artist}}
, which checks (P434), the following code would be added:
{{WikidataCheck|property=P434|value={{{mbid|{{{id|{{{1|}}}}}}}}}|category=MusicBrainz artist}}
Articles using that template with an ID would be placed in one of the following categories:
- Category:MusicBrainz artist not in Wikidata
- Category:MusicBrainz artist same as Wikidata
- Category:MusicBrainz artist different from Wikidata
See also[edit source]
- {{Tracks Wikidata}} for use in template documentation
- {{Wikidata tracking category}} for use in hidden tracking categories
local p = {} function p.wikidatacheck(frame) local pframe = frame:getParent() local config = frame.args -- the arguments passed BY the template, in the wikitext of the template itself local args = pframe.args -- the arguments passed TO the template, in the wikitext that transcludes the template local property = config.property local value = config.value or "" local catbase = config.category local namespaces = config.namespaces local nocatsame = config.nocatsame or "" local qid = config.qid or "" local ok = false -- one-way flag to check if we're in a good namespace local ns = mw.title.getCurrentTitle().namespace for v in mw.text.gsplit( namespaces, ",", true) do if tonumber(v) == ns then ok = true end end if not ok then -- not in one of the approved namespaces return "" end local entity if qid == "" then entity = mw.wikibase.getEntityObject() else entity = mw.wikibase.getEntityObject(qid) end if not entity then -- no Wikidata item return "[[Category:" .. catbase .. " not in Wikidata]]" end if value == "" then return nil -- Using Wikidata end local claims = entity.claims or {} local hasProp = claims[property] if not hasProp then -- no claim of that property return "[[Category:" .. catbase .. " not in Wikidata]]" -- bad. Bot needs to add the property end for i, v in ipairs(hasProp) do -- Now we try to iterate over all possible values? propValue = (v.mainsnak.datavalue or {}).value if propValue == value then if nocatsame == "" then return "[[Category:" .. catbase .. " same as Wikidata]]" -- yay! else return nil -- if nocatsame, the "same as" category is not added end end end return "[[Category:" .. catbase .. " different from Wikidata]]" -- needs human review :( end return p