Module:WikidataCheck
![]() | This Lua module is used onapproximately 488,000 pages, or roughly 1% of all pages. To avoid major disruption and server load, any changes should be tested in the module's/sandboxor/testcasessubpages, or in your ownmodule sandbox.The tested changes can be added to this page in a single edit. Consider discussing changes on thetalk pagebefore implementing them. |
![]() | This module issubject to page protection.It is ahighly visible modulein use by a very large number of pages, or issubstitutedvery frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it isprotectedfrom editing. |
![]() | The following is the documentation forTemplate:WikidataCheck. |
Template:WikidataCheckcompares 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 moduleModule:WikidataCheck.
Usage
To add onlyarticlesto the categories:
{{WikidataCheck|property=P###|value={{{value|}}}|category=Category prefix}}
To add pages in othernamespacesto 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 comparisoncase insensitivefor "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 toModule:WikidataIB's|onlysourced=yes
.
Example
For{{MusicBrainz artist}}
,which checksMusicBrainz 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 itself
localargs=pframe.args-- the arguments passed TO the template, in the wikitext that transcludes the template
localproperty=config.property
localvalue=config.valueor""
localcatbase=config.category
localnamespaces=config.namespaces
localnocatsame=config.nocatsameor""
localignorecase=config.ignorecaseor""
localqid=config.qidor""
localonlysourced=(config.onlysourced=='yes')orfalse
localok=false-- one-way flag to check if we're in a good namespace
localns=mw.title.getCurrentTitle().namespace
forvinmw.text.gsplit(namespaces,",",true)do
iftonumber(v)==nsthen
ok=true
end
end
ifnotokthen-- not in one of the approved namespaces
return""
end
localentity
ifqid==""then
entity=mw.wikibase.getEntityObject()
else
entity=mw.wikibase.getEntityObject(qid)
end
ifnotentitythen-- no Wikidata item
return"[[Category:"..catbase.."not in Wikidata]]"
end
ifvalue==""then
returnnil-- Using Wikidata
end
localclaims=entity.claimsor{}
localhasProp=claims[property]
ifnothasPropthen-- no claim of that property
return"[[Category:"..catbase.."not in Wikidata]]"-- bad. Bot needs to add the property
end
ifignorecase~=""then
value=string.lower(value)
end
fori,vinipairs(hasProp)do-- Now we try to iterate over all possible values?
propValue=(v.mainsnak.datavalueor{}).value
ifignorecase~=""then
propValue=string.lower(propValue)
end
localsourced=false-- check for external refs a la Module:WikidataIB onlysourced
ifv.referencesthen
forj,vrinipairs(v.references)do
localref=mw.wikibase.renderSnaks(vr.snaks)
ifnotref:find("Wiki")then
sourced=true
break
end
end
end
ifpropValue==valueand(notonlysourcedorsourced)then
ifnocatsame==""then
return"[[Category:"..catbase.."same as Wikidata]]"-- yay!
else
returnnil-- if nocatsame, the "same as" category is not added
end
end
end
return"[[Category:"..catbase.."different from Wikidata]]"-- needs human review:(
end
returnp