Jump to content
Wikipedia The Free Encyclopedia

Module:WikidataCheck

From Wikipedia, the free encyclopedia
Module documentation[view] [edit] [history] [purge]
Warning This Lua module is used on approximately 505,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.
‹ The template below (Module rating ) is being considered for merging with Template rating. See templates for discussion to help reach a consensus. ›
[画像:Ready for use] 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.
[画像:Protected] 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.
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:

See also

The above documentation is transcluded from Module:WikidataCheck/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Subpages of this module.

 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 ignorecase = config.ignorecase or ""
	local qid = config.qid or ""
	local onlysourced = (config.onlysourced == 'yes') or false
	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
	if ignorecase ~= "" then
		value = string.lower( value )
	end
	for i, v in ipairs(hasProp) do -- Now we try to iterate over all possible values?
		propValue = (v.mainsnak.datavalue or {}).value
		if ignorecase ~= "" then
			propValue = string.lower( propValue )
		end
		local sourced = false -- check for external refs a la Module:WikidataIB onlysourced
		if v.references then
			for j, vr in ipairs(v.references) do
				local ref = mw.wikibase.renderSnaks(vr.snaks)
				if not ref:find("Wiki") then
					sourced = true
					break
				end
			end
		end
		if propValue == value and (not onlysourced or sourced) 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

AltStyle によって変換されたページ (->オリジナル) /