<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wikiminati.blogmanju.com/wikim/index.php?action=history&amp;feed=atom&amp;title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%3AWikidata_table</id>
	<title>モジュール:Wikidata table - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wikiminati.blogmanju.com/wikim/index.php?action=history&amp;feed=atom&amp;title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%3AWikidata_table"/>
	<link rel="alternate" type="text/html" href="https://wikiminati.blogmanju.com/wikim/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Wikidata_table&amp;action=history"/>
	<updated>2026-04-22T04:10:22Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://wikiminati.blogmanju.com/wikim/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Wikidata_table&amp;diff=1070&amp;oldid=prev</id>
		<title>WikiminatiWebMaster: 1版 をインポートしました: Authority control</title>
		<link rel="alternate" type="text/html" href="https://wikiminati.blogmanju.com/wikim/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Wikidata_table&amp;diff=1070&amp;oldid=prev"/>
		<updated>2023-03-19T04:02:24Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました: Authority control&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2023年3月19日 (日) 13:02時点における版&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key xs666319_wikiminati:diff::1.12:old-1069:rev-1070 --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiminatiWebMaster</name></author>
	</entry>
	<entry>
		<id>https://wikiminati.blogmanju.com/wikim/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Wikidata_table&amp;diff=1069&amp;oldid=prev</id>
		<title>Authority control&gt;Uzume: avoid &quot;preprocess&quot; where not needed as it needlessly increases preprocessor visited node count and post-expand include size</title>
		<link rel="alternate" type="text/html" href="https://wikiminati.blogmanju.com/wikim/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Wikidata_table&amp;diff=1069&amp;oldid=prev"/>
		<updated>2023-02-16T05:39:52Z</updated>

		<summary type="html">&lt;p&gt;avoid &amp;quot;preprocess&amp;quot; where not needed as it needlessly increases preprocessor visited node count and post-expand include size&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local debugging = false&lt;br /&gt;
&lt;br /&gt;
local sep = &amp;quot;, &amp;quot; -- separator for multiple values of same property, changed from &amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
local sep2 = &amp;quot;&amp;lt;br&amp;gt;&amp;quot; -- separator for values of different properties&lt;br /&gt;
local maxrefs = 3 -- maximum number of references displayed for each statement&lt;br /&gt;
&lt;br /&gt;
-- Internationalisation&lt;br /&gt;
&lt;br /&gt;
-- takes optional string language code (e.g. &amp;quot;en&amp;quot;) and returns a language object&lt;br /&gt;
local findLang = function(langcode)&lt;br /&gt;
	local langobj&lt;br /&gt;
	langcode = mw.text.trim(langcode or &amp;quot;&amp;quot;)&lt;br /&gt;
	if mw.language.isKnownLanguageTag(langcode) then&lt;br /&gt;
		langobj = mw.language.new( langcode )&lt;br /&gt;
	else&lt;br /&gt;
		langcode = mw.getCurrentFrame():callParserFunction('int', {'lang'})&lt;br /&gt;
		if mw.language.isKnownLanguageTag(langcode) then&lt;br /&gt;
			langobj = mw.language.new( langcode )&lt;br /&gt;
		else&lt;br /&gt;
			langobj = mw.language.getContentLanguage()&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return langobj&lt;br /&gt;
end&lt;br /&gt;
local currentlang = findLang().code&lt;br /&gt;
&lt;br /&gt;
local i18n = {&lt;br /&gt;
	filespace = &amp;quot;File&amp;quot;,&lt;br /&gt;
	editonwikidata = &amp;quot;Edit this on Wikidata&amp;quot;,&lt;br /&gt;
	ordinal = {&lt;br /&gt;
		[1] = &amp;quot;st&amp;quot;,&lt;br /&gt;
		[2] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
		[3] = &amp;quot;rd&amp;quot;,&lt;br /&gt;
		[&amp;quot;default&amp;quot;] = &amp;quot;th&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local months = { &amp;quot;January&amp;quot;, &amp;quot;February&amp;quot;, &amp;quot;March&amp;quot;, &amp;quot;April&amp;quot;, &amp;quot;May&amp;quot;, &amp;quot;June&amp;quot;, &amp;quot;July&amp;quot;, &amp;quot;August&amp;quot;, &amp;quot;September&amp;quot;, &amp;quot;October&amp;quot;, &amp;quot;November&amp;quot;, &amp;quot;December&amp;quot; }&lt;br /&gt;
local mnths = {}&lt;br /&gt;
for idx, val in ipairs(months) do&lt;br /&gt;
	mnths[idx] = val:sub(1,3)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- makeOrdinal needs to be internationalised along with the above i18n&lt;br /&gt;
-- takes cardinal number as a numeric and returns the ordinal as a string&lt;br /&gt;
-- we need three exceptions in English for 1st, 2nd, 3rd, 21st, .. 31st, etc.&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
p.makeOrdinal = function(cardinal)&lt;br /&gt;
	local card = tonumber(cardinal)&lt;br /&gt;
	if not card then return cardinal end&lt;br /&gt;
	local ordsuffix = i18n.ordinal.default&lt;br /&gt;
	if card % 10 == 1 then&lt;br /&gt;
		ordsuffix = i18n.ordinal[1]&lt;br /&gt;
	elseif card % 10 == 2 then&lt;br /&gt;
		ordsuffix = i18n.ordinal[2]&lt;br /&gt;
	elseif card % 10 == 3 then&lt;br /&gt;
		ordsuffix = i18n.ordinal[3]&lt;br /&gt;
	end&lt;br /&gt;
	-- In English, 1, 21, 31, etc. use 'st', but 11, 111, etc. use 'th'&lt;br /&gt;
	-- similarly for 12 and 13, etc.&lt;br /&gt;
	if (card % 100 == 11) or (card % 100 == 12) or (card % 100 == 13) then&lt;br /&gt;
		ordsuffix = i18n.ordinal.default&lt;br /&gt;
	end&lt;br /&gt;
	return card .. ordsuffix&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local unitsymbol = {&lt;br /&gt;
	Q218593 = &amp;quot;in&amp;quot;,&lt;br /&gt;
	Q3710 = &amp;quot;ft&amp;quot;,&lt;br /&gt;
	Q482798 = &amp;quot;yd&amp;quot;,&lt;br /&gt;
	Q253276 = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	Q93318 = &amp;quot;nmi&amp;quot;,&lt;br /&gt;
	Q11573 = &amp;quot;m&amp;quot;,&lt;br /&gt;
	Q174728 = &amp;quot;cm&amp;quot;,&lt;br /&gt;
	Q174789 = &amp;quot;mm&amp;quot;,&lt;br /&gt;
	Q828224 = &amp;quot;km&amp;quot;,&lt;br /&gt;
	Q81292 = &amp;quot;acres&amp;quot;,&lt;br /&gt;
	Q35852 = &amp;quot;ha&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- prefixes for particular qualifiers&lt;br /&gt;
local prefix = {&lt;br /&gt;
	P580 = &amp;quot;from &amp;quot;,&lt;br /&gt;
	P582 = &amp;quot;until &amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- external ids which have a formatter url (P1630)&lt;br /&gt;
local formaturl = {&lt;br /&gt;
	P3563 = &amp;quot;https://wikidata-externalid-url.toolforge.org/?url=https%3A%2F%2Fmsi.nga.mil%2FqueryResults%3Fpublications%2Fngalol%2Flights-buoys%3Fvolume%3D%251%26featureNumber%3D%252%26includeRemovals%3Dfalse%26output%3Dhtml&amp;amp;exp=(%5Cd%7B3%7D)-(.*)&amp;amp;id=$1&amp;quot;, -- NGA number&lt;br /&gt;
	P613 = &amp;quot;http://nearby.org.uk/coord.cgi?p=$1&amp;quot;, -- OS grid reference&lt;br /&gt;
	P373 = &amp;quot;https://commons.wikimedia.org/wiki/Category:$1&amp;quot;, -- Commons category&lt;br /&gt;
	P11235 = &amp;quot;http://damnet.or.jp/cgi-bin/binranA/enAll.cgi?db4=$1&amp;quot; -- Dams in Japan&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- date format default to dmy&lt;br /&gt;
local df = &amp;quot;dmy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-- fallbacks for common properties:&lt;br /&gt;
-- property-to-fallback-from = &amp;quot;property-to-fallback-to&amp;quot;&lt;br /&gt;
local fallback = {&lt;br /&gt;
	P276 = &amp;quot;P131&amp;quot;,&lt;br /&gt;
	P571 = &amp;quot;P1619&amp;quot;,&lt;br /&gt;
	P729 = &amp;quot;P1619&amp;quot;,&lt;br /&gt;
	P4755 = &amp;quot;P296&amp;quot;,&lt;br /&gt;
	P18 = &amp;quot;P8592&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local statedIDs = {&lt;br /&gt;
	Q36578 = {&amp;quot;GND&amp;quot;, name=1},&lt;br /&gt;
	Q547473 = {&amp;quot;MacTutor&amp;quot;, name=&amp;quot;id&amp;quot;},&lt;br /&gt;
	Q19938912 = {&amp;quot;BNF&amp;quot;, name=1},&lt;br /&gt;
	Q6973052 = {&amp;quot;National Heritage List for England&amp;quot;, name=&amp;quot;num&amp;quot;},&lt;br /&gt;
	Q19842847 = {&amp;quot;Historic Scotland listed building number&amp;quot;, name=1}&lt;br /&gt;
}&lt;br /&gt;
-- error messages&lt;br /&gt;
local function errmsg(txt)&lt;br /&gt;
	if debugging then&lt;br /&gt;
		return &amp;quot;Error: &amp;quot; .. txt&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- formats the first character of linked item to uppercase&lt;br /&gt;
local function ucf(lnk)&lt;br /&gt;
	local tbl = mw.text.split( lnk, &amp;quot;|&amp;quot;, true )&lt;br /&gt;
	local ret&lt;br /&gt;
	if tbl[2] then -- piped link&lt;br /&gt;
		tbl[2] = tbl[2]:gsub(&amp;quot;^(%l)&amp;quot;, mw.ustring.upper)&lt;br /&gt;
		ret = table.concat(tbl, &amp;quot;|&amp;quot;)&lt;br /&gt;
	elseif lnk:sub(1,2) == &amp;quot;[[&amp;quot; then -- unpiped link&lt;br /&gt;
		ret = lnk:gsub(&amp;quot;^(%[%[%l)&amp;quot;, mw.ustring.upper)&lt;br /&gt;
	else -- unlinked&lt;br /&gt;
		ret = lnk:gsub(&amp;quot;^(%l)&amp;quot;, mw.ustring.upper)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
-- entrypoint for invoke&lt;br /&gt;
function p.ucf(frame)&lt;br /&gt;
	return ucf(frame.args.text or &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return a number rounded to a precision&lt;br /&gt;
local function decimalprecision(x, prec)&lt;br /&gt;
	local s = 1&lt;br /&gt;
	if x &amp;lt; 0 then&lt;br /&gt;
		x = -x&lt;br /&gt;
		s = -1&lt;br /&gt;
	end&lt;br /&gt;
	-- if prec is not suplied, pick an arbitrary precision&lt;br /&gt;
	if not tonumber(prec) then prec = 1e-4&lt;br /&gt;
	elseif prec &amp;gt; 1 then prec = 1&lt;br /&gt;
	elseif prec &amp;lt; 1e-6 then prec = 1e-6&lt;br /&gt;
	else prec = 10 ^ math.floor(math.log10(prec))&lt;br /&gt;
	end&lt;br /&gt;
	x = math.floor(x / prec + 0.5) * prec * s&lt;br /&gt;
	-- if it's integral, cast to an integer:&lt;br /&gt;
	if  x == math.floor(x) then x = math.floor(x) end&lt;br /&gt;
	-- if it's less than 1e-4, it will be in exponent form, so return a string with 6dp&lt;br /&gt;
	-- 9e-5 becomes 0.000090&lt;br /&gt;
	if math.abs(x) &amp;lt; 1e-4 then x = string.format(&amp;quot;%f&amp;quot;, x) end&lt;br /&gt;
	return x&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- creates an icon that links to the relevant Wikidata entity&lt;br /&gt;
local function createicon(entityID, propertyID, langcode)&lt;br /&gt;
	langcode = langcode or &amp;quot;&amp;quot;&lt;br /&gt;
	if not entityID or entityID == &amp;quot;&amp;quot; then entityID= mw.wikibase.getEntityIdForCurrentPage() end&lt;br /&gt;
	propertyID = propertyID or &amp;quot;&amp;quot;&lt;br /&gt;
	local icon = &amp;quot;&amp;amp;nbsp;&amp;lt;span class='penicon autoconfirmed-show'&amp;gt;[[&amp;quot;&lt;br /&gt;
	-- &amp;quot;&amp;amp;nbsp;&amp;lt;span data-bridge-edit-flow='overwrite' class='penicon'&amp;gt;[[&amp;quot; -&amp;gt; enable Wikidata Bridge&lt;br /&gt;
	.. i18n.filespace&lt;br /&gt;
	.. &amp;quot;:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=&amp;quot;&lt;br /&gt;
	.. i18n.editonwikidata&lt;br /&gt;
	.. &amp;quot;|link=https://www.wikidata.org/wiki/&amp;quot; .. entityID&lt;br /&gt;
	if langcode ~= &amp;quot;&amp;quot; then icon = icon .. &amp;quot;?uselang=&amp;quot; .. langcode end&lt;br /&gt;
	if propertyID ~= &amp;quot;&amp;quot; then icon = icon .. &amp;quot;#&amp;quot; .. propertyID end&lt;br /&gt;
	icon = icon .. &amp;quot;|&amp;quot; .. i18n.editonwikidata .. &amp;quot;]]&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	return icon&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- takes a statement tuple supplied from Wikidata and returns any references&lt;br /&gt;
function p._getrefs(statement, qid)&lt;br /&gt;
	if not statement.references then return nil end&lt;br /&gt;
	local rtbl = {}&lt;br /&gt;
	local frm = mw.getCurrentFrame()&lt;br /&gt;
	for idx, ref in ipairs(statement.references) do&lt;br /&gt;
		if ref.snaks.P854 then -- reference url&lt;br /&gt;
			local url = ref.snaks.P854[1].datavalue.value&lt;br /&gt;
			if ref.snaks.P1476 then -- title (monolingual text)&lt;br /&gt;
				local title&lt;br /&gt;
				for idx1, titles in ipairs(ref.snaks.P1476) do&lt;br /&gt;
					if titles.datavalue.value.language == currentlang then&lt;br /&gt;
						title = titles.datavalue.value.text&lt;br /&gt;
						local website = &amp;quot;&amp;quot;&lt;br /&gt;
						if ref.snaks.P248 then&lt;br /&gt;
							local rqid = ref.snaks.P248[1].datavalue.value.id&lt;br /&gt;
							local label = mw.wikibase.label(rqid,currentlang)&lt;br /&gt;
							if label then&lt;br /&gt;
								local sitelink = mw.wikibase.sitelink(rqid)&lt;br /&gt;
								if sitelink then&lt;br /&gt;
									website = &amp;quot;[[&amp;quot; .. sitelink .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
								else&lt;br /&gt;
									website = label&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						local citeweb = frm:expandTemplate{ title = &amp;quot;Cite web&amp;quot;, args = { url=url, title=title, website=website} }&lt;br /&gt;
						local hash = &amp;quot;WD&amp;quot; .. mw.hash.hashValue(&amp;quot;crc32&amp;quot;, citeweb)&lt;br /&gt;
						rtbl[#rtbl+1] = frm:callParserFunction{ name = &amp;quot;#tag:ref&amp;quot;, args = { citeweb, name=hash } }&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				local bnf = url:match(&amp;quot;https?://data.bnf.fr/ark:/12148/cb([0-9][a-Za-Z0-9]+)&amp;quot;) or url:match(&amp;quot;https?://catalogue.bnf.fr/ark:/12148/cb([0-9][a-Za-Z0-9]+)&amp;quot;)&lt;br /&gt;
				if bnf then&lt;br /&gt;
					rtbl[#rtbl+1] = frm:callParserFunction{ name = &amp;quot;#tag:ref&amp;quot;, args = { frm:expandTemplate{title=&amp;quot;BNF&amp;quot;,args={bnf}}, name=&amp;quot;bnf&amp;quot;..bnf} }&lt;br /&gt;
				else&lt;br /&gt;
					local hash = &amp;quot;WD&amp;quot; .. mw.hash.hashValue(&amp;quot;crc32&amp;quot;, url)&lt;br /&gt;
					rtbl[#rtbl+1] = frm:callParserFunction{ name = &amp;quot;#tag:ref&amp;quot;, args = { url, name=hash } }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		elseif ref.snaks.P248 then&lt;br /&gt;
			local rqid = ref.snaks.P248[1].datavalue.value.id&lt;br /&gt;
			if statedIDs[rqid] then&lt;br /&gt;
				local template = statedIDs[rqid]&lt;br /&gt;
				local propid = mw.wikibase.getBestStatements(rqid,&amp;quot;P1687&amp;quot;)&lt;br /&gt;
				propid = propid[1].mainsnak.datavalue.value.id&lt;br /&gt;
				for num, propdata in ipairs(mw.wikibase.getBestStatements(qid, propid)) do&lt;br /&gt;
					local property = propdata.mainsnak.datavalue.value&lt;br /&gt;
					local args = {[template.name] = property}&lt;br /&gt;
					if rqid == &amp;quot;Q547473&amp;quot; then&lt;br /&gt;
						args.title = mw.wikibase.label(qid)&lt;br /&gt;
					end&lt;br /&gt;
					local result = frm:expandTemplate{title=template[1],args=args}&lt;br /&gt;
					rtbl[#rtbl+1] = frm:callParserFunction{ name = &amp;quot;#tag:ref&amp;quot;, args = { result, name=qid .. propid .. num} }&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				local citeq = frm:expandTemplate{ title = &amp;quot;Cite Q&amp;quot;, args = { rqid } }&lt;br /&gt;
				rtbl[#rtbl+1] = frm:callParserFunction{ name = &amp;quot;#tag:ref&amp;quot;, args = { citeq, name=rqid } }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if #rtbl&amp;gt;=maxrefs then break end -- maximum number of references reached&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(rtbl)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- takes a qid and attempts to return a linked name for it&lt;br /&gt;
-- otherwise an unlinked name; otherwise the qid&lt;br /&gt;
function p._getLink(qid)&lt;br /&gt;
	local lbl = &amp;quot;&amp;quot;&lt;br /&gt;
	local slink = mw.wikibase.sitelink(qid)&lt;br /&gt;
	local label = mw.wikibase.getLabel(qid)&lt;br /&gt;
	if slink and label then&lt;br /&gt;
		if slink:lower() == label:lower() then&lt;br /&gt;
			if label:find(&amp;quot;^%u&amp;quot;) then -- match label's case&lt;br /&gt;
				lbl = &amp;quot;[[&amp;quot; .. slink:gsub(&amp;quot;^(%l)&amp;quot;, mw.ustring.upper) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				lbl = &amp;quot;[[&amp;quot; .. slink:gsub(&amp;quot;^(%u)&amp;quot;, mw.ustring.lower) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			lbl = &amp;quot;[[&amp;quot; .. slink .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	elseif slink then&lt;br /&gt;
		lbl = &amp;quot;[[&amp;quot; .. slink .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	elseif label then&lt;br /&gt;
		lbl = label&lt;br /&gt;
	else&lt;br /&gt;
		lbl = qid&lt;br /&gt;
	end&lt;br /&gt;
	return lbl&lt;br /&gt;
end&lt;br /&gt;
-- entrypoint for #invoke getLink&lt;br /&gt;
function p.getLink(frame)&lt;br /&gt;
	local qid = (frame.args.qid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
	return p._getLink(qid)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- takes a snak for a time property and returns the date&lt;br /&gt;
local function _getDate(snak, prec)&lt;br /&gt;
	local retval&lt;br /&gt;
	retval = mw.wikibase.renderSnak(snak)&lt;br /&gt;
	if prec == 7 then -- century&lt;br /&gt;
		local num, txt = retval:match(&amp;quot;^(%d+)%.(.+)$&amp;quot;)&lt;br /&gt;
		retval = p.makeOrdinal(num) .. txt&lt;br /&gt;
	elseif prec == 10 then&lt;br /&gt;
		local m, y, e = retval:match(&amp;quot;^(%a+) (%d+)(.*)&amp;quot;)&lt;br /&gt;
		retval = m:sub(1,3) .. &amp;quot; &amp;quot; .. y .. e&lt;br /&gt;
	elseif prec == 11 then&lt;br /&gt;
		local d, m, y, e = retval:match(&amp;quot;^(%d+) (%a+) (%d+)(.*)&amp;quot;)&lt;br /&gt;
		retval = d .. &amp;quot; &amp;quot; .. m:sub(1,3) .. &amp;quot; &amp;quot; .. y .. e&lt;br /&gt;
	end&lt;br /&gt;
	return retval&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- takes a qid and a property id and returns the corresponding values or nil&lt;br /&gt;
-- maxvals greater than zero sets the maximum number of values to return&lt;br /&gt;
-- the string quals contains property ids of qualifiers to be returned ('-' is the separator)&lt;br /&gt;
function p._getWD(qid, pid, maxvals, quals, colunit)&lt;br /&gt;
	maxvals = maxvals or 0&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local sortkey&lt;br /&gt;
	for idx, prop in ipairs(mw.wikibase.getBestStatements(qid, pid)) do&lt;br /&gt;
		local retval&lt;br /&gt;
		if prop.mainsnak.snaktype ~= &amp;quot;value&amp;quot; then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		local dtype = prop.mainsnak.datatype&lt;br /&gt;
		local dval = prop.mainsnak.datavalue.value&lt;br /&gt;
		if dtype == &amp;quot;wikibase-item&amp;quot; then&lt;br /&gt;
			retval = p._getLink(dval.id)&lt;br /&gt;
		elseif dtype == &amp;quot;monolingualtext&amp;quot; then&lt;br /&gt;
			retval = dval.text&lt;br /&gt;
		elseif dtype == &amp;quot;commonsMedia&amp;quot; or dtype == &amp;quot;url&amp;quot; then&lt;br /&gt;
			retval = dval&lt;br /&gt;
		elseif dtype == &amp;quot;external-id&amp;quot; or dtype == &amp;quot;string&amp;quot; then&lt;br /&gt;
			if formaturl[pid] then&lt;br /&gt;
				retval = &amp;quot;[&amp;quot; .. mw.ustring.gsub(formaturl[pid], &amp;quot;$1&amp;quot;, dval) .. &amp;quot; &amp;quot; .. dval .. &amp;quot;]&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				retval = dval&lt;br /&gt;
			end&lt;br /&gt;
		elseif dtype == &amp;quot;time&amp;quot; then&lt;br /&gt;
			retval = _getDate(prop.mainsnak, dval.precision)&lt;br /&gt;
			if dval.precision == 11 and df == &amp;quot;mdy&amp;quot; then&lt;br /&gt;
				local d, m, y, e = retval:match(&amp;quot;^(%d+) (%a+) (%d+)(.*)&amp;quot;)&lt;br /&gt;
				retval = m .. &amp;quot; &amp;quot; .. d .. &amp;quot;, &amp;quot; .. y  .. e&lt;br /&gt;
			end&lt;br /&gt;
			if not sortkey then&lt;br /&gt;
				sortkey = prop.mainsnak.datavalue.value.time&lt;br /&gt;
			end&lt;br /&gt;
		elseif dtype == &amp;quot;quantity&amp;quot; then&lt;br /&gt;
			local amount = tonumber(dval.amount)&lt;br /&gt;
			local unit = string.match( dval.unit, &amp;quot;(Q%d+)&amp;quot; )&lt;br /&gt;
			if unit then&lt;br /&gt;
				if unit == colunit then -- unit matches default for this column, so do not display unit&lt;br /&gt;
					retval = amount&lt;br /&gt;
				else&lt;br /&gt;
					if unitsymbol[unit] then&lt;br /&gt;
						if colunit then -- attempt to convert to default unit&lt;br /&gt;
							retval = mw.getCurrentFrame():expandTemplate{ title = &amp;quot;cvt&amp;quot;, args = {amount, unitsymbol[unit], unitsymbol[colunit], disp='number'} }&lt;br /&gt;
								.. mw.getCurrentFrame():expandTemplate{title=&amp;quot;efn&amp;quot;, args = {'Value calculated by converting '..amount..unitsymbol[unit]..' into '..unitsymbol[colunit]..'.'}}&lt;br /&gt;
						else -- show unit and default conversion&lt;br /&gt;
							retval = mw.getCurrentFrame():expandTemplate{ title = &amp;quot;cvt&amp;quot;, args = {amount, unitsymbol[unit]} }&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						retval = amount  .. &amp;quot; &amp;quot; .. mw.wikibase.getLabel(unit)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				retval = amount&lt;br /&gt;
			end&lt;br /&gt;
		elseif dtype == &amp;quot;globe-coordinate&amp;quot; then&lt;br /&gt;
			local lat = decimalprecision(dval.latitude, dval.precision)&lt;br /&gt;
			local long = decimalprecision(dval.longitude, dval.precision)&lt;br /&gt;
			retval = &amp;quot;&amp;lt;span style='font-size:90%;'&amp;gt;&amp;quot;&lt;br /&gt;
			.. mw.wikibase.formatValue(prop.mainsnak)&lt;br /&gt;
			.. &amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			retval = dval&lt;br /&gt;
		end&lt;br /&gt;
		-- get references&lt;br /&gt;
		retval = retval .. (p._getrefs(prop, qid) or &amp;quot;&amp;quot;)&lt;br /&gt;
		-- get qualifiers&lt;br /&gt;
		if quals and prop.qualifiers and retval then&lt;br /&gt;
			local qtbl = {}&lt;br /&gt;
			for qpid in quals:gmatch(&amp;quot;P%d+&amp;quot;) do&lt;br /&gt;
				if prop.qualifiers[qpid] then&lt;br /&gt;
					for i, qv in ipairs(prop.qualifiers[qpid]) do&lt;br /&gt;
						if qv.snaktype ~= &amp;quot;value&amp;quot; then break end&lt;br /&gt;
						local fqv&lt;br /&gt;
						if qv.datatype == &amp;quot;globe-coordinate&amp;quot; then&lt;br /&gt;
							fqv = mw.wikibase.formatValue(qv) -- linked&lt;br /&gt;
						elseif qv.datatype == &amp;quot;time&amp;quot; then&lt;br /&gt;
							fqv = _getDate(qv, qv.datavalue.value.precision)&lt;br /&gt;
							if qv.datavalue.value.precision == 11 then -- trim to month&lt;br /&gt;
								fqv = fqv:match(&amp;quot;%d+ (.+)&amp;quot;)&lt;br /&gt;
							end&lt;br /&gt;
						else&lt;br /&gt;
							fqv = mw.wikibase.renderSnak(qv) -- plaintext&lt;br /&gt;
						end&lt;br /&gt;
						if fqv and fqv ~= &amp;quot;&amp;quot; then&lt;br /&gt;
							qtbl[#qtbl+1] = (prefix[qpid] or &amp;quot;&amp;quot;) .. fqv&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if #qtbl &amp;gt; 0 then&lt;br /&gt;
				retval = retval .. &amp;quot;&amp;lt;span style='font-size:90%;'&amp;gt; (&amp;quot; .. table.concat(qtbl, &amp;quot;&amp;amp;nbsp;&amp;quot;) .. &amp;quot;)&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		ret[#ret+1] = retval&lt;br /&gt;
		if maxvals &amp;gt; 0 and #ret &amp;gt;= maxvals then break end&lt;br /&gt;
	end&lt;br /&gt;
	if #ret &amp;lt; 1 then&lt;br /&gt;
		return nil&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(ret, sep),sortkey&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- entrypoint for #invoke getWD&lt;br /&gt;
function p.getWD(frame)&lt;br /&gt;
	local qid = (frame.args.qid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if qid == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
	local pid = (frame.args.pid or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if pid == &amp;quot;&amp;quot; then return nil end&lt;br /&gt;
	local maxvals = tonumber(frame.args.maxvals) or 0&lt;br /&gt;
	local quals = (frame.args.quals or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if quals == &amp;quot;&amp;quot; then quals = nil end&lt;br /&gt;
	return p._getWD(qid, pid, maxvals, quals)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- make multiple table rows, one for each qid in args.qids,&lt;br /&gt;
-- with one table cell for each pid in args.pids&lt;br /&gt;
function p._makerows(args)&lt;br /&gt;
	args.qids = (args.qids or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if args.qids == &amp;quot;&amp;quot; then return errmsg(&amp;quot;missing qids&amp;quot;) end&lt;br /&gt;
	args.pids = (args.pids or &amp;quot;&amp;quot;):upper()&lt;br /&gt;
	if args.pids == &amp;quot;&amp;quot; then return errmsg(&amp;quot;missing pids&amp;quot;) end&lt;br /&gt;
	local qids, pids = {}, {}&lt;br /&gt;
	for qid in args.qids:gmatch(&amp;quot;Q%d+&amp;quot;) do&lt;br /&gt;
		qids[#qids+1] = qid&lt;br /&gt;
	end&lt;br /&gt;
	for pid in args.pids:gmatch(&amp;quot;P%d+&amp;quot;) do&lt;br /&gt;
		pids[#pids+1] = pid&lt;br /&gt;
	end&lt;br /&gt;
	args.df = args.df or &amp;quot;&amp;quot;&lt;br /&gt;
	if args.df ~= &amp;quot;&amp;quot; then df = args.df end&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for r, qid in ipairs(qids) do&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;tr&amp;gt;&amp;quot;&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;th scope='row'&amp;gt;&amp;quot; .. p._getLink(qid) .. &amp;quot;&amp;lt;/th&amp;gt;&amp;quot;&lt;br /&gt;
		for c, pid in ipairs(pids) do&lt;br /&gt;
			if pid == &amp;quot;P18&amp;quot; then -- image&lt;br /&gt;
				local img = p._getWD(qid, pid, 1)&lt;br /&gt;
				if img then&lt;br /&gt;
					out = out .. '&amp;lt;td style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[File:' .. img .. '|100px]]&amp;lt;/td&amp;gt;'&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				local statement,sortkey = p._getWD(qid, pid, 0)&lt;br /&gt;
				if not statement then&lt;br /&gt;
					statement = &amp;quot; &amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
				if sortkey then&lt;br /&gt;
					sortkey = 'data-sort-value=&amp;quot;' .. sortkey .. '&amp;quot;'&lt;br /&gt;
				else&lt;br /&gt;
					sortkey = ''&lt;br /&gt;
				end&lt;br /&gt;
				out = out .. '&amp;lt;td ' .. sortkey .. 'style=&amp;quot;text-align:center;&amp;quot;&amp;gt;' .. statement .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- entry point for #invoke makerows&lt;br /&gt;
function p.makerows(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for key, value in pairs(frame:getParent().args) do&lt;br /&gt;
		args[key] = value&lt;br /&gt;
	end&lt;br /&gt;
	for key, value in pairs(frame.args) do&lt;br /&gt;
		args[key] = value&lt;br /&gt;
	end&lt;br /&gt;
	return p._makerows(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- make a single table row, one cell per value passed in args.pids&lt;br /&gt;
-- each value may be a combination of properties and qualifiers&lt;br /&gt;
function p._makerow(args)&lt;br /&gt;
	local qid = (args.qid or &amp;quot;&amp;quot;):upper():match(&amp;quot;Q%d+&amp;quot;)&lt;br /&gt;
	-- qid can be nil if we want a row without wikidata&lt;br /&gt;
	-- remove whitespace, uppercase, trap nil&lt;br /&gt;
	args.pids = (args.pids or &amp;quot;&amp;quot;):upper():gsub(&amp;quot;%s&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	if args.pids == &amp;quot;&amp;quot; then return errmsg(&amp;quot;missing pids&amp;quot;) end&lt;br /&gt;
	local summary = (args.summary or &amp;quot;&amp;quot;)&lt;br /&gt;
	local linecolor = (args.line or &amp;quot;&amp;quot;)&lt;br /&gt;
	local linestyle = ''&lt;br /&gt;
	if linecolor ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		linestyle = 'style=&amp;quot;border-top:solid #' .. linecolor .. ';&amp;quot;'&lt;br /&gt;
	end&lt;br /&gt;
	local rows&lt;br /&gt;
	if summary == &amp;quot;&amp;quot; then rows=1 else rows=2 end&lt;br /&gt;
	local cols = 0&lt;br /&gt;
	-- collect any parameters c1, c2, etc. as cell replacements; c1+, c2+, etc. as addenda&lt;br /&gt;
	local cellrep, celladd = {}, {}&lt;br /&gt;
	for key, value in pairs(args) do&lt;br /&gt;
		local colr = (type(key) == &amp;quot;string&amp;quot;) and tonumber(key:match(&amp;quot;^[Cc](%d+)$&amp;quot;))&lt;br /&gt;
		if colr then&lt;br /&gt;
			cellrep[colr] = value&lt;br /&gt;
		end&lt;br /&gt;
		local cola = (type(key) == &amp;quot;string&amp;quot;) and tonumber(key:match(&amp;quot;^[Cc](%d+)%+$&amp;quot;))&lt;br /&gt;
		if cola then&lt;br /&gt;
			celladd[cola] = value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if args.refname and args.refname ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		local c1 = celladd[1] or &amp;quot;&amp;quot;&lt;br /&gt;
		celladd[1] = c1 .. mw.getCurrentFrame():extensionTag{name = 'ref', args = {name = args.refname}}&lt;br /&gt;
	end&lt;br /&gt;
	-- set date format if passed&lt;br /&gt;
	args.df = args.df or &amp;quot;&amp;quot;&lt;br /&gt;
	if args.df ~= &amp;quot;&amp;quot; then df = args.df end&lt;br /&gt;
	-- create the html to return&lt;br /&gt;
	local out = &amp;quot;&amp;lt;tr &amp;quot; .. linestyle ..&amp;quot;&amp;gt;&amp;lt;th scope='row' rowspan=&amp;quot; .. rows .. &amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
	if cellrep[1] and qid then&lt;br /&gt;
		out = out .. cellrep[1] .. createicon(qid) .. &amp;quot;&amp;lt;/th&amp;gt;&amp;quot;&lt;br /&gt;
	elseif not qid then&lt;br /&gt;
		out = out .. (cellrep[1] or &amp;quot; &amp;quot;) .. &amp;quot;&amp;lt;/th&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		out = out .. ucf(p._getLink(qid)) .. (celladd[1] or &amp;quot;&amp;quot;) .. createicon(qid) .. &amp;quot;&amp;lt;/th&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- split args.pids at comma separators into sequence of cellpids (each may be like P12+P34/P456-P789)&lt;br /&gt;
	local cellpids = mw.text.split(args.pids, &amp;quot;,+&amp;quot;)&lt;br /&gt;
	for c, val in ipairs(cellpids) do&lt;br /&gt;
		cols = cols+1&lt;br /&gt;
		if cellrep[c+1] then&lt;br /&gt;
			out = out .. '&amp;lt;td&amp;gt;' .. cellrep[c+1] .. '&amp;lt;/td&amp;gt;'&lt;br /&gt;
		elseif not qid then&lt;br /&gt;
			out = out .. &amp;quot;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			-- separate multiple properties in same cell, sep=+&lt;br /&gt;
			local ptbl = {} -- sequence of values for one cell&lt;br /&gt;
			local sortkeyf&lt;br /&gt;
			for propandquals in mw.text.gsplit(val, &amp;quot;+&amp;quot;, true) do&lt;br /&gt;
				-- for each property, split off property from qualifiers, sep=/&lt;br /&gt;
				local pid = mw.text.split(propandquals, &amp;quot;/&amp;quot;)[1]&lt;br /&gt;
				local unit = pid:match(&amp;quot;%((Q%d+)%)&amp;quot;) -- capture unit of quantity if specified&lt;br /&gt;
				pid = pid:match(&amp;quot;P%d+&amp;quot;)&lt;br /&gt;
				local quals = mw.text.split(propandquals, &amp;quot;/&amp;quot;)[2]&lt;br /&gt;
				if pid == &amp;quot;P18&amp;quot; then -- image&lt;br /&gt;
					local img = p._getWD(qid, &amp;quot;P18&amp;quot;, 1)&lt;br /&gt;
					if not img and fallback[&amp;quot;P18&amp;quot;] then&lt;br /&gt;
						img = p._getWD(qid, fallback[&amp;quot;P18&amp;quot;], 1)&lt;br /&gt;
					end&lt;br /&gt;
					if img then&lt;br /&gt;
						ptbl[#ptbl+1] = &amp;quot;[[File:&amp;quot; .. img .. &amp;quot;|100px]]&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					local wdval,sortkey = p._getWD(qid, pid, 0, quals, unit)&lt;br /&gt;
					if not wdval and fallback[pid] then&lt;br /&gt;
						wdval,sortkey = p._getWD(qid, fallback[pid], 0, quals, unit)&lt;br /&gt;
					end&lt;br /&gt;
					if not sortkeyf then&lt;br /&gt;
						sortkeyf = sortkey&lt;br /&gt;
					end&lt;br /&gt;
					ptbl[#ptbl+1] = wdval and ucf(wdval)&lt;br /&gt;
				end&lt;br /&gt;
			end -- of loop through multiple properties in same cell&lt;br /&gt;
			if sortkeyf then&lt;br /&gt;
					sortkeyf = 'data-sort-value=&amp;quot;' .. mw.ustring.sub(sortkeyf,2) .. '&amp;quot;'&lt;br /&gt;
				else&lt;br /&gt;
					sortkeyf = ''&lt;br /&gt;
			end&lt;br /&gt;
			out = out .. '&amp;lt;td ' .. sortkeyf .. 'style=&amp;quot;text-align:center;&amp;quot;&amp;gt;' .. table.concat(ptbl, sep2) .. (celladd[c+1] or &amp;quot;&amp;quot;) .. '&amp;lt;/td&amp;gt;'&lt;br /&gt;
		end&lt;br /&gt;
	end -- of loop through all of the cells in the row&lt;br /&gt;
	out = out .. &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
	if summary ~= &amp;quot;&amp;quot; then&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;.. cols .. &amp;quot;&amp;gt;&amp;quot; .. summary .. &amp;quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- entry point for #invoke makerow&lt;br /&gt;
function p.makerow(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for key, value in pairs(frame:getParent().args) do&lt;br /&gt;
		args[key] = value&lt;br /&gt;
	end&lt;br /&gt;
	for key, value in pairs(frame.args) do&lt;br /&gt;
		args[key] = value&lt;br /&gt;
	end&lt;br /&gt;
	local isdoc&lt;br /&gt;
	if args.doc and args.doc==&amp;quot;no&amp;quot; then&lt;br /&gt;
		isdoc = false&lt;br /&gt;
	else&lt;br /&gt;
		isdoc = mw.title.getCurrentTitle():inNamespace(10)&lt;br /&gt;
	end&lt;br /&gt;
	if isdoc then&lt;br /&gt;
		args.qid = args.example&lt;br /&gt;
		return p.doc(args)&lt;br /&gt;
	else&lt;br /&gt;
		return p._makerow(args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.convert(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local pargs = frame:getParent().args&lt;br /&gt;
	local input = args[1] or pargs[1]&lt;br /&gt;
	local template = args.template or pargs.template&lt;br /&gt;
	if input == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local resolveEntity = require( &amp;quot;Module:ResolveEntityId&amp;quot; )&lt;br /&gt;
	local articlelist = mw.text.split(input,&amp;quot;%*%s*&amp;quot;)&lt;br /&gt;
	local qidlist = {}&lt;br /&gt;
	for i,article in ipairs(articlelist) do&lt;br /&gt;
		local rawarticle=string.match(article,'%[%[(.+)%|') or string.match(article,'%[%[(.+)%]%]')&lt;br /&gt;
		if rawarticle then&lt;br /&gt;
			local qid = resolveEntity._id(rawarticle)&lt;br /&gt;
	 		if qid then&lt;br /&gt;
				qidlist[#qidlist+1] = &amp;quot;{{&amp;quot; .. template .. &amp;quot;|qid=&amp;quot; .. qid..&amp;quot;&amp;lt;!-- &amp;quot;..rawarticle..&amp;quot; --&amp;gt;}}&amp;quot;&lt;br /&gt;
	 		else&lt;br /&gt;
	 			qidlist[#qidlist+1] = &amp;quot;{{&amp;quot; .. template .. &amp;quot;|qid=|c1=&amp;quot;..rawarticle..&amp;quot;}}&amp;quot;&lt;br /&gt;
	 		end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(qidlist,&amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.convert2(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local pargs = frame:getParent().args&lt;br /&gt;
	local input = args[1] or pargs[1]&lt;br /&gt;
	local template = args.template or pargs.template&lt;br /&gt;
	if input == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local qidlist = mw.text.split(input,&amp;quot;%*%s*&amp;quot;)&lt;br /&gt;
	local out = &amp;quot;&amp;quot;&lt;br /&gt;
	for i,qid in ipairs(qidlist) do&lt;br /&gt;
		qid = mw.text.trim(qid)&lt;br /&gt;
		out = out .. &amp;quot;{{&amp;quot; .. template .. &amp;quot;|qid=&amp;quot; .. qid&lt;br /&gt;
		local label = mw.wikibase.getLabel(qid)&lt;br /&gt;
		if label then&lt;br /&gt;
			out = out .. &amp;quot;&amp;lt;!-- &amp;quot; .. label .. &amp;quot; --&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. &amp;quot;}}\n&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function proplink(pid)&lt;br /&gt;
	local out&lt;br /&gt;
	if pid == &amp;quot;P1&amp;quot; then&lt;br /&gt;
		out = &amp;quot;Custom input&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		out = mw.getCurrentFrame():expandTemplate{ title = 'Wikidata entity link', args = {pid} }&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.doc(args)&lt;br /&gt;
	local pids = args.pids&lt;br /&gt;
	local article = args.article&lt;br /&gt;
	local qid = args.qid&lt;br /&gt;
	local documentation = require('Module:Documentation').main&lt;br /&gt;
	pids = (pids or &amp;quot;&amp;quot;):upper():gsub(&amp;quot;%s&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	if pids == &amp;quot;&amp;quot; then return errmsg(&amp;quot;Missing PIDs&amp;quot;) end&lt;br /&gt;
	local pidtable = {}&lt;br /&gt;
	for c1,val in ipairs(mw.text.split(pids, &amp;quot;,&amp;quot;)) do&lt;br /&gt;
		pidtable[c1] = {}&lt;br /&gt;
		for c2,propandquals in ipairs(mw.text.split(val, &amp;quot;+&amp;quot;)) do&lt;br /&gt;
			pidtable[c1][c2] = {}&lt;br /&gt;
			pidtable[c1][c2].property = mw.text.split(propandquals, &amp;quot;/&amp;quot;)[1]&lt;br /&gt;
			pidtable[c1][c2].unit = pidtable[c1][c2].property:match(&amp;quot;%((Q%d+)%)&amp;quot;)&lt;br /&gt;
			pidtable[c1][c2].property = pidtable[c1][c2].property:match(&amp;quot;P%d+&amp;quot;)&lt;br /&gt;
			local quals = mw.text.split(propandquals, &amp;quot;/&amp;quot;)[2]&lt;br /&gt;
			if quals then&lt;br /&gt;
				pidtable[c1][c2].quals = {}&lt;br /&gt;
				for qpid in quals:gmatch(&amp;quot;P%d+&amp;quot;) do&lt;br /&gt;
					pidtable[c1][c2].quals[1] = qpid&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local function unit(qid)&lt;br /&gt;
		if qid then&lt;br /&gt;
			local unit = mw.wikibase.sitelink(qid)&lt;br /&gt;
			if unit then&lt;br /&gt;
				unit = &amp;quot;[[&amp;quot; .. unit .. &amp;quot;|&amp;quot; .. unitsymbol[qid] .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				unit = unitsymbol[qid]&lt;br /&gt;
			end&lt;br /&gt;
			return &amp;quot; (in &amp;quot; .. unit .. &amp;quot;)&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local out = &amp;quot;This template will retrieve certain data from [[Wikidata]] for use in a table in an article. It is a wrapper template for [[Module:Wikidata table]] function ''makerow'', using predefined properties.\n\n&amp;quot;&lt;br /&gt;
	if article then&lt;br /&gt;
		out = out .. &amp;quot;It was designed for use on [[&amp;quot; .. article .. &amp;quot;]] but may also be used on other articles. ([[Special:WhatLinksHere/&amp;quot; .. mw.title.getCurrentTitle().fullText .. &amp;quot;|Search]])\n&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	out = out .. &amp;quot;&amp;lt;h3&amp;gt;Usage&amp;lt;/h3&amp;gt;&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;The data that is displayed in each column is as follows:&amp;quot;&lt;br /&gt;
	out = out .. '&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;'&lt;br /&gt;
	for c = 1,#pidtable+1 do&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;th&amp;gt;Column &amp;quot; .. c .. &amp;quot;&amp;lt;/th&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	out = out .. &amp;quot;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Label&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
	for c1 = 1,#pidtable do&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;td&amp;gt;&amp;quot;&lt;br /&gt;
		for c2 = 1,#pidtable[c1] do&lt;br /&gt;
			out = out .. proplink(pidtable[c1][c2].property) .. unit(pidtable[c1][c2].unit)&lt;br /&gt;
			if pidtable[c1][c2].quals then&lt;br /&gt;
				out = out .. &amp;quot; qualified by &amp;quot;&lt;br /&gt;
				for c3 = 1,#pidtable[c1][c2].quals do&lt;br /&gt;
					out = out .. proplink(pidtable[c1][c2].quals[c3])&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			out = out .. &amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	out = out .. &amp;quot;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;quot;&lt;br /&gt;
	if qid then&lt;br /&gt;
		local langobj = mw.language.new(&amp;quot;en&amp;quot;)&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;h3&amp;gt;Example&amp;lt;/h3&amp;gt;The Wikidata QID for &amp;quot;&lt;br /&gt;
		local sitelink = mw.wikibase.getSitelink(qid)&lt;br /&gt;
		if sitelink then&lt;br /&gt;
			out = out .. &amp;quot;[[&amp;quot; .. sitelink .. &amp;quot;]]&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			out = out .. mw.wikibase.getLabel(qid)&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. &amp;quot; is [[:d:Special:EntityPage/&amp;quot; .. qid .. &amp;quot;|&amp;quot; .. qid .. &amp;quot;]]. Typing the following:\n&amp;quot;&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;code&amp;gt;{{&amp;quot; .. mw.title.getCurrentTitle().text .. &amp;quot;|qid=&amp;quot; .. qid .. &amp;quot;}}&amp;lt;/code&amp;gt;\n produces&amp;quot;&lt;br /&gt;
		out = out .. '&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;'&lt;br /&gt;
		for c = 1,#pidtable do&lt;br /&gt;
			local proplabel&lt;br /&gt;
			if pidtable[c][1].property == &amp;quot;P1&amp;quot; then&lt;br /&gt;
				proplabel = &amp;quot;Column &amp;quot; .. c+1&lt;br /&gt;
			else&lt;br /&gt;
				proplabel = langobj:ucfirst(mw.wikibase.getLabel(pidtable[c][1].property)) .. unit(pidtable[c][1].unit)&lt;br /&gt;
			end&lt;br /&gt;
			out = out .. &amp;quot;&amp;lt;th&amp;gt;&amp;quot; .. proplabel .. &amp;quot;&amp;lt;/th&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot; .. p._makerow(args) .. &amp;quot;&amp;lt;/table&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	out = out .. &amp;quot;&amp;lt;h3&amp;gt;Notes&amp;lt;/h3&amp;gt;\n&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;* The table caption, column headings, etc. need to be added manually.\n&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;* Please be careful about making changes to this template, as corresponding changes will need to be made to the column headings on &amp;quot;&lt;br /&gt;
	if article then&lt;br /&gt;
		out = out .. &amp;quot;[[&amp;quot; .. article .. &amp;quot;]] and any other &amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		out = out .. &amp;quot;any &amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	out = out .. &amp;quot;article using it. ([[Special:WhatLinksHere/&amp;quot; .. mw.title.getCurrentTitle().fullText .. &amp;quot;|Search]])\n&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;&amp;lt;h3&amp;gt;Overriding columns&amp;lt;/h3&amp;gt;&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;It is possible to override or append to data values obtained from Wikidata in any column in the table.\n&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;* To completely override column ''n'' with some custom content, use parameter &amp;lt;code&amp;gt;cn=&amp;lt;/code&amp;gt;\n&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;*: For example, to replace column 5 with the number 1957 use &amp;lt;code&amp;gt;c5=1957&amp;lt;/code&amp;gt;\n&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;* To append some custom content to the end of column ''n'' use parameter &amp;lt;code&amp;gt;cn+=&amp;lt;/code&amp;gt;\n&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;*: For example, to add a footnote to column 6 use &amp;lt;code&amp;gt;c6+={{efn|This value is approximate.}}&amp;lt;/code&amp;gt;\n&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;&amp;lt;h3&amp;gt;Add named reference&amp;lt;/h3&amp;gt;&amp;quot;&lt;br /&gt;
	out = out .. &amp;quot;If you [[Help:List-defined references|define references in a list]] then you can cite one of these by using the parameter &amp;lt;code&amp;gt;refname&amp;lt;/code&amp;gt;. This will add a reference to column 1 directly after the label.\n&amp;quot;&lt;br /&gt;
	out = out .. 'For example you can define a reference called Smith1 by using &amp;lt;pre&amp;gt;{{reflist|refs=\n&amp;lt;ref name=&amp;quot;Smith1&amp;quot;&amp;gt;reference&amp;lt;/ref&amp;gt;\n}}&amp;lt;/pre&amp;gt;\n'&lt;br /&gt;
	out = out .. &amp;quot;Then use &amp;lt;code&amp;gt;refname=Smith1&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
	if qid then&lt;br /&gt;
		out = out .. &amp;quot;&amp;lt;h3&amp;gt;References&amp;lt;/h3&amp;gt;&amp;quot; .. mw.getCurrentFrame():expandTemplate{title='Reflist'}&lt;br /&gt;
	end&lt;br /&gt;
	out = out .. &amp;quot;&amp;lt;h3&amp;gt;TemplateData&amp;lt;/h3&amp;gt;&amp;quot;&lt;br /&gt;
	local td = '{&amp;quot;params&amp;quot;: {&amp;quot;qid&amp;quot;: {&amp;quot;label&amp;quot;: &amp;quot;QID&amp;quot;,	&amp;quot;description&amp;quot;: &amp;quot;Enter the Wikidata QID, which is a number beginning with Q. You can also add the name of the item as an HTML comment.&amp;quot;,&amp;quot;example&amp;quot;: &amp;quot;'&lt;br /&gt;
	if qid then&lt;br /&gt;
		td = td .. qid .. '&amp;lt;!-- ' .. mw.wikibase.getLabel(qid) .. ' --&amp;gt;'&lt;br /&gt;
	else&lt;br /&gt;
		td = td .. 'Q1234567'&lt;br /&gt;
	end&lt;br /&gt;
	td = td  .. '&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&amp;quot;suggested&amp;quot;: true}'&lt;br /&gt;
	td = td .. ',&amp;quot;refname&amp;quot;: {&amp;quot;label&amp;quot;: &amp;quot;Add named reference&amp;quot;,&amp;quot;description&amp;quot;: &amp;quot;Add a named reference defined in a list&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;,&amp;quot;example&amp;quot;: &amp;quot;ref1&amp;quot;}'&lt;br /&gt;
	td = td .. ',&amp;quot;c1&amp;quot;: {&amp;quot;label&amp;quot;: &amp;quot;Override label&amp;quot;,&amp;quot;description&amp;quot;: &amp;quot;Override the label (column 1) with this value&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;}'&lt;br /&gt;
	td = td .. ',&amp;quot;c1+&amp;quot;: {&amp;quot;label&amp;quot;: &amp;quot;Append to label&amp;quot;,&amp;quot;description&amp;quot;: &amp;quot;Append this content to the label (column 1)&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;}'&lt;br /&gt;
	for c = 1,#pidtable do&lt;br /&gt;
		if pidtable[c][1].property == &amp;quot;P1&amp;quot; then&lt;br /&gt;
			td = td .. ',&amp;quot;c' .. c+1 .. '&amp;quot;: {&amp;quot;label&amp;quot;: &amp;quot;Define column ' .. c+1 .. '&amp;quot;,&amp;quot;description&amp;quot;: &amp;quot;Define column ' .. c+1 .. ' with this content&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;}'&lt;br /&gt;
		else&lt;br /&gt;
			local label = mw.wikibase.getLabel(pidtable[c][1].property)&lt;br /&gt;
			td = td .. ',&amp;quot;c' .. c+1 .. '&amp;quot;: {&amp;quot;label&amp;quot;: &amp;quot;Override ' .. label .. '&amp;quot;,&amp;quot;description&amp;quot;: &amp;quot;Override the ' .. label .. ' (column ' .. c+1 .. ') with this content&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;}'&lt;br /&gt;
			td = td .. ',&amp;quot;c' .. c+1 .. '+&amp;quot;: {&amp;quot;label&amp;quot;: &amp;quot;Append to ' .. label .. '&amp;quot;,&amp;quot;description&amp;quot;: &amp;quot;Append this content to the ' .. label .. ' (column ' .. c+1 .. ')&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;content&amp;quot;}'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	td = td .. '},&amp;quot;description&amp;quot;: &amp;quot;This template reads some data from Wikidata while also allowing an editor to override or append their own content.&amp;quot;,&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;}'&lt;br /&gt;
	return documentation{content = out .. mw.getCurrentFrame():extensionTag{ name = 'templatedata', content = td}}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Authority control&gt;Uzume</name></author>
	</entry>
</feed>