Module:WikidataCheck
![]() | This Lua module is used on approximately 504,000 pages, or roughly 1% 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. |
![]() | This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
![]() | 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. |
![]() | 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
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}}
To make comparison case insensitive for "different from" category:
{{WikidataCheck|property=P###|value={{{value|}}}|category=Category prefix|ignorecase=1}}
Parameters
- 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. 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.|ignorecase=
if set to any value will ignore upper/lower case differences between value in template and value in Wikidata when adding pages to a "different from" category.|qid=
if specified will check a a different Wikidata item than the current article.|onlysourced=
if set to "yes" will ignore unsourced Wikidata properties, equivalent to Module:WikidataIB's|onlysourced=yes
.
Example
For {{MusicBrainz artist}}
, which checks MusicBrainz artist ID (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
- {{Tracks Wikidata}} for use in template documentation
- {{Wikidata tracking category}} for use in hidden tracking categories
- Category:Wikipedia categories tracking data not in Wikidata
- Category:Wikipedia categories tracking data same as Wikidata
- Category:Wikipedia categories tracking Wikidata differences
localp={}functionp.wikidatacheck(frame)localpframe=frame:getParent()localconfig=frame.args-- the arguments passed BY the template, in the wikitext of the template itselflocalargs=pframe.args-- the arguments passed TO the template, in the wikitext that transcludes the templatelocalproperty=config.propertylocalvalue=config.valueor""localcatbase=config.categorylocalnamespaces=config.namespaceslocalnocatsame=config.nocatsameor""localignorecase=config.ignorecaseor""localqid=config.qidor""localonlysourced=(config.onlysourced=='yes')orfalselocalok=false-- one-way flag to check if we're in a good namespacelocalns=mw.title.getCurrentTitle().namespaceforvinmw.text.gsplit(namespaces,",",true)doiftonumber(v)==nsthenok=trueendendifnotokthen-- not in one of the approved namespacesreturn""endlocalentityifqid==""thenentity=mw.wikibase.getEntityObject()elseentity=mw.wikibase.getEntityObject(qid)endifnotentitythen-- no Wikidata itemreturn"[[Category:"..catbase.." not in Wikidata]]"endifvalue==""thenreturnnil-- Using Wikidataendlocalclaims=entity.claimsor{}localhasProp=claims[property]ifnothasPropthen-- no claim of that propertyreturn"[[Category:"..catbase.." not in Wikidata]]"-- bad. Bot needs to add the propertyendifignorecase~=""thenvalue=string.lower(value)endfori,vinipairs(hasProp)do-- Now we try to iterate over all possible values?propValue=(v.mainsnak.datavalueor{}).valueifignorecase~=""thenpropValue=string.lower(propValue)endlocalsourced=false-- check for external refs a la Module:WikidataIB onlysourcedifv.referencesthenforj,vrinipairs(v.references)dolocalref=mw.wikibase.renderSnaks(vr.snaks)ifnotref:find("Wiki")thensourced=truebreakendendendifpropValue==valueand(notonlysourcedorsourced)thenifnocatsame==""thenreturn"[[Category:"..catbase.." same as Wikidata]]"-- yay!elsereturnnil-- if nocatsame, the "same as" category is not addedendendendreturn"[[Category:"..catbase.." different from Wikidata]]"-- needs human review :(endreturnp