<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nb">
	<id>https://www.wikisida.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3ASandkasse%2FCocu%2FWikidata</id>
	<title>Modul:Sandkasse/Cocu/Wikidata - Sideversjonshistorikk</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikisida.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3ASandkasse%2FCocu%2FWikidata"/>
	<link rel="alternate" type="text/html" href="https://www.wikisida.no/index.php?title=Modul:Sandkasse/Cocu/Wikidata&amp;action=history"/>
	<updated>2026-05-10T08:20:47Z</updated>
	<subtitle>Versjonshistorikk for denne siden på wikien</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.wikisida.no/index.php?title=Modul:Sandkasse/Cocu/Wikidata&amp;diff=38606&amp;oldid=prev</id>
		<title>Wikisida: Én sideversjon ble importert</title>
		<link rel="alternate" type="text/html" href="https://www.wikisida.no/index.php?title=Modul:Sandkasse/Cocu/Wikidata&amp;diff=38606&amp;oldid=prev"/>
		<updated>2026-02-19T19:47:26Z</updated>

		<summary type="html">&lt;p&gt;Én sideversjon ble importert&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;nb&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Eldre sideversjon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Sideversjonen fra 19. feb. 2026 kl. 19:47&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;nb&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Ingen forskjell)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key c1wiki:diff:1.41:old-38605:rev-38606 --&gt;
&lt;/table&gt;</summary>
		<author><name>Wikisida</name></author>
	</entry>
	<entry>
		<id>https://www.wikisida.no/index.php?title=Modul:Sandkasse/Cocu/Wikidata&amp;diff=38605&amp;oldid=prev</id>
		<title>nb&gt;Tholme: Tilbakestilte endring av Tholme (bidrag) til siste versjon av Amir Sarabadani (WMDE)</title>
		<link rel="alternate" type="text/html" href="https://www.wikisida.no/index.php?title=Modul:Sandkasse/Cocu/Wikidata&amp;diff=38605&amp;oldid=prev"/>
		<updated>2021-08-24T19:16:45Z</updated>

		<summary type="html">&lt;p&gt;Tilbakestilte endring av &lt;a href=&quot;/index.php?title=Brukerdiskusjon:Tholme&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Brukerdiskusjon:Tholme (siden finnes ikke)&quot;&gt;Tholme&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Spesial:Bidrag/Tholme&quot; title=&quot;Spesial:Bidrag/Tholme&quot;&gt;bidrag&lt;/a&gt;) til siste versjon av Amir Sarabadani (WMDE)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
 &lt;br /&gt;
-- module local variables&lt;br /&gt;
local wiki = &lt;br /&gt;
{&lt;br /&gt;
	langcode = mw.language.getContentLanguage().code&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
-- internationalisation&lt;br /&gt;
local i18n = {&lt;br /&gt;
    [&amp;quot;errors&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;property-not-found&amp;quot;] = &amp;quot;Egenskap ikke funnet.&amp;quot;,&lt;br /&gt;
        [&amp;quot;entity-not-found&amp;quot;] = &amp;quot;Wikidata-entitet ikke funnet.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-claim-type&amp;quot;] = &amp;quot;Ukjent utsagnstype.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-entity-type&amp;quot;] = &amp;quot;Ukjent entitettype.&amp;quot;,&lt;br /&gt;
        [&amp;quot;qualifier-not-found&amp;quot;] = &amp;quot;Kvalifikator ikke funnet.&amp;quot;,&lt;br /&gt;
        [&amp;quot;site-not-found&amp;quot;] = &amp;quot;Wikimedia-prosjekt ikke funnet.&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;datetime&amp;quot;] =&lt;br /&gt;
	{&lt;br /&gt;
		-- $1 is a placeholder for the actual number&lt;br /&gt;
		[0] = &amp;quot;$1 milliarder år&amp;quot;,	-- precision: billion years&lt;br /&gt;
		[1] = &amp;quot;$100 millioner år&amp;quot;,	-- precision: hundred million years&lt;br /&gt;
		[2] = &amp;quot;$10 millioner år&amp;quot;,	-- precision: ten million years&lt;br /&gt;
		[3] = &amp;quot;$1 million år&amp;quot;,		-- precision: million years&lt;br /&gt;
		[4] = &amp;quot;$100 000 år&amp;quot;,		-- precision: hundred thousand years&lt;br /&gt;
		[5] = &amp;quot;$10 000 år&amp;quot;,			-- precision: ten thousand years&lt;br /&gt;
		[6] = &amp;quot;$1 millenium&amp;quot;,	 	-- precision: millennium&lt;br /&gt;
		[7] = &amp;quot;$1 århundre&amp;quot;,		-- precision: century&lt;br /&gt;
		[8] = &amp;quot;$1&amp;quot;,				-- precision: decade&lt;br /&gt;
		-- the following use the format of #time parser function&lt;br /&gt;
		[9]  = &amp;quot;Y&amp;quot;,					-- precision: year, &lt;br /&gt;
		[10] = &amp;quot;F Y&amp;quot;,				-- precision: month&lt;br /&gt;
		[11] = &amp;quot;F j, Y&amp;quot;,			-- precision: day&lt;br /&gt;
		[12] = &amp;quot;F j, Y ga&amp;quot;,			-- precision: hour&lt;br /&gt;
		[13] = &amp;quot;F j, Y g:ia&amp;quot;,		-- precision: minute&lt;br /&gt;
		[14] = &amp;quot;F j, Y g:i:sa&amp;quot;,		-- precision: second&lt;br /&gt;
		[&amp;quot;beforenow&amp;quot;] = &amp;quot;$1 fvt.&amp;quot;,	-- how to format negative numbers for precisions 0 to 5&lt;br /&gt;
		[&amp;quot;afternow&amp;quot;] = &amp;quot;$1 evt.&amp;quot;,	-- how to format positive numbers for precisions 0 to 5&lt;br /&gt;
		[&amp;quot;bc&amp;quot;] = &amp;#039;$1 &amp;quot;fvt.&amp;quot;&amp;#039;,		-- how print negative years&lt;br /&gt;
		[&amp;quot;ad&amp;quot;] = &amp;quot;$1&amp;quot;				-- how print positive years&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;monolingualtext&amp;quot;] = &amp;#039;&amp;lt;span lang=&amp;quot;%language&amp;quot;&amp;gt;%text&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
local function printError(code)&lt;br /&gt;
	return &amp;#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&amp;#039; .. (i18n.errors[code] or code) .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.descriptionIn(frame)&lt;br /&gt;
	local langcode = frame.args[1]&lt;br /&gt;
	local id = frame.args[2]	-- &amp;quot;id&amp;quot; must be nil, as access to other Wikidata objects is disabled in Mediawiki configuration&lt;br /&gt;
	-- return description of a Wikidata entity in the given language or the default language of this Wikipedia site&lt;br /&gt;
	return mw.wikibase.getEntityObject(id).descriptions[langcode or wiki.langcode].value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.labelIn(frame)&lt;br /&gt;
	local langcode = frame.args[1]&lt;br /&gt;
	local id = frame.args[2]	-- &amp;quot;id&amp;quot; must be nil, as access to other Wikidata objects is disabled in Mediawiki configuration&lt;br /&gt;
	-- return label of a Wikidata entity in the given language or the default language of this Wikipedia site&lt;br /&gt;
	return mw.wikibase.getEntityObject(id).labels[langcode or wiki.langcode].value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This is used to get a value, or a comma separated list of them if multiple values exist&lt;br /&gt;
p.getValue = function(frame)&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local input_parm = mw.text.trim(frame.args[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if input_parm == &amp;quot;hent_wikidata&amp;quot; then&lt;br /&gt;
		local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
		local claims&lt;br /&gt;
		if entity and entity.claims then&lt;br /&gt;
			claims = entity.claims[propertyID]&lt;br /&gt;
		end&lt;br /&gt;
		if claims then&lt;br /&gt;
			-- if wiki-linked value output as link if possible&lt;br /&gt;
			if (claims[1] and claims[1].mainsnak.snaktype == &amp;quot;value&amp;quot; and claims[1].mainsnak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot;) then&lt;br /&gt;
				local out = {}&lt;br /&gt;
				for k, v in pairs(claims) do&lt;br /&gt;
					local sitelink = mw.wikibase.sitelink(&amp;quot;Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;])&lt;br /&gt;
					local label = mw.wikibase.label(&amp;quot;Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;])&lt;br /&gt;
					if label == nil then label = &amp;quot;Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;] end&lt;br /&gt;
							&lt;br /&gt;
					if sitelink then&lt;br /&gt;
						out[#out + 1] = &amp;quot;[[&amp;quot; .. sitelink .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
					else&lt;br /&gt;
						out[#out + 1] = &amp;quot;[[:d:Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;] .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;lt;abbr title=&amp;#039;Artikkelen er foreløpig ikke opprettet på denne wikien&amp;#039;&amp;gt;&amp;lt;sup&amp;gt;[!]&amp;lt;/sup&amp;gt;&amp;lt;/abbr&amp;gt;[[Kategori:Artikler med informasjon i infoboks som mangler artikkel på nowiki]]&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				return table.concat(out, &amp;quot;, &amp;quot;)&lt;br /&gt;
			else&lt;br /&gt;
				-- just return best vakues&lt;br /&gt;
				return entity:formatPropertyValues(propertyID).value&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return input_parm&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This is used to get a value, or a comma separated list of them if multiple values exist&lt;br /&gt;
-- from an arbitrary entry by using its QID.&lt;br /&gt;
-- Use : {{#invoke:Wikidata|getValueFromID|&amp;lt;ID&amp;gt;|&amp;lt;Property&amp;gt;|hent_wikidata}}&lt;br /&gt;
-- E.g.: {{#invoke:Wikidata|getValueFromID|Q151973|P26|hent_wikidata}} - to fetch value of &amp;#039;spouse&amp;#039; (P26) from &amp;#039;Richard Burton&amp;#039; (Q151973)&lt;br /&gt;
-- Please use sparingly - this is an *expensive call*.&lt;br /&gt;
p.getValueFromID = function(frame)&lt;br /&gt;
	local itemID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local input_parm = mw.text.trim(frame.args[3] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if input_parm == &amp;quot;hent_wikidata&amp;quot; then&lt;br /&gt;
		local entity = mw.wikibase.getEntity(itemID)&lt;br /&gt;
		local claims = entity.claims[propertyID]&lt;br /&gt;
		if claims then&lt;br /&gt;
			-- if wiki-linked value output as link if possible&lt;br /&gt;
			if (claims[1] and claims[1].mainsnak.snaktype == &amp;quot;value&amp;quot; and claims[1].mainsnak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot;) then&lt;br /&gt;
				local out = {}&lt;br /&gt;
				for k, v in pairs(claims) do&lt;br /&gt;
					local sitelink = mw.wikibase.sitelink(&amp;quot;Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;])&lt;br /&gt;
					local label = mw.wikibase.label(&amp;quot;Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;])&lt;br /&gt;
					if label == nil then label = &amp;quot;Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;] end&lt;br /&gt;
							&lt;br /&gt;
					if sitelink then&lt;br /&gt;
						out[#out + 1] = &amp;quot;[[&amp;quot; .. sitelink .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;quot;&lt;br /&gt;
					else&lt;br /&gt;
						out[#out + 1] = &amp;quot;[[:d:Q&amp;quot; .. v.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;] .. &amp;quot;|&amp;quot; .. label .. &amp;quot;]]&amp;lt;abbr title=&amp;#039;Artikkelen er foreløpig ikke opprettet på denne wikien&amp;#039;&amp;gt;&amp;lt;sup&amp;gt;[!]&amp;lt;/sup&amp;gt;&amp;lt;/abbr&amp;gt;[[Kategori:Artikler med informasjon i infoboks som mangler artikkel på nowiki]]&amp;quot;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				return table.concat(out, &amp;quot;, &amp;quot;)&lt;br /&gt;
			else&lt;br /&gt;
				return entity:formatPropertyValues(propertyID, mw.wikibase.entity.claimRanks).value&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return input_parm&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.getQualifierValue = function(frame)&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local qualifierID = mw.text.trim(frame.args[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local input_parm = mw.text.trim(frame.args[3] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if input_parm == &amp;quot;hent_wikidata&amp;quot; then&lt;br /&gt;
		local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
		if entity.claims[propertyID] ~= nil then&lt;br /&gt;
			local out = {}&lt;br /&gt;
			for k, v in pairs(entity.claims[propertyID]) do&lt;br /&gt;
				for k2, v2 in pairs(v.qualifiers[qualifierID]) do&lt;br /&gt;
					if v2.snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
						if (mw.wikibase.sitelink(&amp;quot;Q&amp;quot; .. v2.datavalue.value[&amp;quot;numeric-id&amp;quot;])) then&lt;br /&gt;
							out[#out + 1] = &amp;quot;[[&amp;quot; .. mw.wikibase.sitelink(&amp;quot;Q&amp;quot; .. v2.datavalue.value[&amp;quot;numeric-id&amp;quot;]) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
						else&lt;br /&gt;
							out[#out + 1] = &amp;quot;[[:d:Q&amp;quot; .. v2.datavalue.value[&amp;quot;numeric-id&amp;quot;] .. &amp;quot;|&amp;quot; .. mw.wikibase.label(&amp;quot;Q&amp;quot; .. v2.datavalue.value[&amp;quot;numeric-id&amp;quot;]) .. &amp;quot;]]&amp;lt;abbr title=&amp;#039;Artikkelen er foreløpig ikke opprettet på denne wikien&amp;#039;&amp;gt;&amp;lt;sup&amp;gt;[!]&amp;lt;/sup&amp;gt;&amp;lt;/abbr&amp;gt;[[Kategori:Artikler med informasjon i infoboks som mangler artikkel på nowiki og etikett på Wikidata]]]&amp;quot;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return table.concat(out, &amp;quot;, &amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return input_parm&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This is used to get a value like &amp;#039;male&amp;#039; (for property p21) which won&amp;#039;t be linked and numbers without the thousand separators&lt;br /&gt;
p.getRawValue = function(frame)&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local input_parm = mw.text.trim(frame.args[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if input_parm == &amp;quot;hent_wikidata&amp;quot; then&lt;br /&gt;
		local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
		local claims&lt;br /&gt;
		if entity then claims = entity.claims[propertyID] end&lt;br /&gt;
		if claims then&lt;br /&gt;
			local result = entity:formatPropertyValues(propertyID, mw.wikibase.entity.claimRanks).value&lt;br /&gt;
		&lt;br /&gt;
			-- if number type: remove thousand separators&lt;br /&gt;
			if (claims[1] and claims[1].mainsnak.snaktype == &amp;quot;value&amp;quot; and claims[1].mainsnak.datavalue.type == &amp;quot;quantity&amp;quot;) then&lt;br /&gt;
				result = mw.ustring.gsub(result, &amp;quot;(%d),(%d)&amp;quot;, &amp;quot;%1%2&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			return result&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return input_parm&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.getRawQualifierValue = function(frame)&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local qualifierID = mw.text.trim(frame.args[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local input_parm = mw.text.trim(frame.args[3] or &amp;quot;&amp;quot;)&lt;br /&gt;
	if input_parm == &amp;quot;hent_wikidata&amp;quot; then&lt;br /&gt;
		local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
		if entity.claims[propertyID] ~= nil then&lt;br /&gt;
			local out = {}&lt;br /&gt;
			for k, v in pairs(entity.claims[propertyID]) do&lt;br /&gt;
				for k2, v2 in pairs(v.qualifiers[qualifierID]) do&lt;br /&gt;
					if v2.snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
						if v2.datavalue.value[&amp;quot;numeric-id&amp;quot;] then&lt;br /&gt;
							out[#out + 1] = mw.wikibase.label(&amp;quot;Q&amp;quot; .. v2.datavalue.value[&amp;quot;numeric-id&amp;quot;])&lt;br /&gt;
						else&lt;br /&gt;
							out[#out + 1] = v2.datavalue.value&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			local ret = table.concat(out, &amp;quot;, &amp;quot;)&lt;br /&gt;
			return string.upper(string.sub(ret, 1, 1)) .. string.sub(ret, 2)&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return input_parm&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This is used to get a date value for date_of_birth (P569), etc. which won&amp;#039;t&lt;br /&gt;
-- be linked -- consolidate by testing if entity.claims[propertyID].mainsnak.datavalue.type&lt;br /&gt;
-- is &amp;quot;time&amp;quot;. Dates and times are stored in ISO 8601 format.&lt;br /&gt;
p.getDateValue = function(frame)&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local input_parm = mw.text.trim(frame.args[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local date_format = mw.text.trim(frame.args[3] or &amp;quot;dmy&amp;quot;)&lt;br /&gt;
	local date_suffix = mw.text.trim(frame.args[4] or &amp;quot;BC&amp;quot;)&lt;br /&gt;
	if input_parm == &amp;quot;hent_wikidata&amp;quot; then&lt;br /&gt;
		local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
		if entity.claims[propertyID] ~= nil then&lt;br /&gt;
			local out = {}&lt;br /&gt;
			local dt = {}&lt;br /&gt;
			for k, v in pairs(entity.claims[propertyID]) do&lt;br /&gt;
				if v.mainsnak.snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
					-- check for negative date&lt;br /&gt;
					local suffix = &amp;quot;&amp;quot;&lt;br /&gt;
					local timestamp = v.mainsnak.datavalue.value.time&lt;br /&gt;
					if string.sub(timestamp, 1, 1) == &amp;#039;-&amp;#039; then&lt;br /&gt;
						timestamp = &amp;#039;+&amp;#039; .. string.sub(timestamp, 2)&lt;br /&gt;
						suffix = &amp;quot; &amp;quot; .. date_suffix&lt;br /&gt;
					end&lt;br /&gt;
					local function d(f)&lt;br /&gt;
						return mw.language.new(wiki.langcode):formatDate(f, timestamp) .. suffix&lt;br /&gt;
					end&lt;br /&gt;
					if date_format == &amp;quot;mdy&amp;quot; then&lt;br /&gt;
						out[#out + 1] = d(&amp;quot;F j, Y&amp;quot;)&lt;br /&gt;
					elseif date_format == &amp;quot;my&amp;quot; then&lt;br /&gt;
						out[#out + 1] = d(&amp;quot;F Y&amp;quot;)&lt;br /&gt;
					elseif date_format == &amp;quot;y&amp;quot; then&lt;br /&gt;
						-- suppress leading zeros in year&lt;br /&gt;
						local stryear = d(&amp;quot;Y&amp;quot;)&lt;br /&gt;
						while string.sub(stryear, 1, 1) == &amp;#039;0&amp;#039; do&lt;br /&gt;
							stryear = string.sub(stryear, 2)&lt;br /&gt;
						end&lt;br /&gt;
						out[#out + 1] = stryear&lt;br /&gt;
					else&lt;br /&gt;
						out[#out + 1] = d(&amp;quot;j F Y&amp;quot;)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return table.concat(out, &amp;quot;, &amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return input_parm&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.getQualifierDateValue = function(frame)&lt;br /&gt;
	local propertyID = mw.text.trim(frame.args[1] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local qualifierID = mw.text.trim(frame.args[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local input_parm = mw.text.trim(frame.args[3] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local date_format = mw.text.trim(frame.args[4] or &amp;quot;dmy&amp;quot;)&lt;br /&gt;
	if input_parm == &amp;quot;hent_wikidata&amp;quot; then&lt;br /&gt;
		local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
		if entity.claims[propertyID] ~= nil then&lt;br /&gt;
			local out = {}&lt;br /&gt;
			for k, v in pairs(entity.claims[propertyID]) do&lt;br /&gt;
				for k2, v2 in pairs(v.qualifiers[qualifierID]) do&lt;br /&gt;
					if v2.snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
						local function d(f)&lt;br /&gt;
							return mw.language.new(wiki.langcode):formatDate(f, v2.datavalue.value.time)&lt;br /&gt;
						end&lt;br /&gt;
						if date_format == &amp;quot;mdy&amp;quot; then&lt;br /&gt;
							out[#out + 1] = d(&amp;quot;F j, Y&amp;quot;)&lt;br /&gt;
						elseif date_format == &amp;quot;my&amp;quot; then&lt;br /&gt;
							out[#out + 1] = d(&amp;quot;F Y&amp;quot;)&lt;br /&gt;
						elseif date_format == &amp;quot;y&amp;quot; then&lt;br /&gt;
							out[#out + 1] = d(&amp;quot;Y&amp;quot;)&lt;br /&gt;
						else&lt;br /&gt;
							out[#out + 1] = d(&amp;quot;j F Y&amp;quot;)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return table.concat(out, &amp;quot;, &amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return input_parm&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This is used to get the TA98 (Terminologia Anatomica first edition 1998) values like &amp;#039;A01.1.00.005&amp;#039; (property P1323)&lt;br /&gt;
-- which are then linked to http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/01.1.00.005%20Entity%20TA98%20EN.htm&lt;br /&gt;
-- uses the newer mw.wikibase calls instead of directly using the snaks&lt;br /&gt;
-- formatPropertyValues returns a table with the P1323 values concatenated with &amp;quot;, &amp;quot; so we have to split them out into a table in order to construct the return string&lt;br /&gt;
p.getTAValue = function(frame)&lt;br /&gt;
	local ent = mw.wikibase.getEntityObject()&lt;br /&gt;
	local props = ent:formatPropertyValues(&amp;#039;P1323&amp;#039;)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	local t = {}&lt;br /&gt;
	for k, v in pairs(props) do&lt;br /&gt;
		if k == &amp;#039;value&amp;#039; then&lt;br /&gt;
			t = mw.text.split( v, &amp;quot;, &amp;quot;)&lt;br /&gt;
			for k2, v2 in pairs(t) do&lt;br /&gt;
				out[#out + 1] = &amp;quot;[http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/&amp;quot; .. string.sub(v2, 2) .. &amp;quot;%20Entity%20TA98%20EN.htm &amp;quot; .. v2 .. &amp;quot;]&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local ret = table.concat(out, &amp;quot;&amp;lt;br&amp;gt; &amp;quot;)&lt;br /&gt;
	if #ret == 0 then&lt;br /&gt;
		ret = &amp;quot;Invalid TA&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- returns the page id (Q...) of the current page or nothing of the page is not connected to Wikidata&lt;br /&gt;
function p.pageId(frame)&lt;br /&gt;
	local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
	if not entity then return nil else return entity.id end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- the &amp;quot;qualifiers&amp;quot; and &amp;quot;snaks&amp;quot; field have a respective &amp;quot;qualifiers-order&amp;quot; and &amp;quot;snaks-order&amp;quot; field&lt;br /&gt;
-- use these as the second parameter and this function instead of the built-in &amp;quot;pairs&amp;quot; function&lt;br /&gt;
-- to iterate over all qualifiers and snaks in the intended order.&lt;br /&gt;
local function orderedpairs(array, order)&lt;br /&gt;
	if not order then return pairs(array) end&lt;br /&gt;
 &lt;br /&gt;
	-- return iterator function&lt;br /&gt;
    local i = 0&lt;br /&gt;
    return function()&lt;br /&gt;
        i = i + 1&lt;br /&gt;
        if order[i] then&lt;br /&gt;
            return order[i], array[order[i]]&lt;br /&gt;
        end&lt;br /&gt;
    end	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- precision: 0 - billion years, 1 - hundred million years, ..., 6 - millennia, 7 - century, 8 - decade, 9 - year, 10 - month, 11 - day, 12 - hour, 13 - minute, 14 - second&lt;br /&gt;
local function normalizeDate(date)&lt;br /&gt;
	date = mw.text.trim(date, &amp;quot;+&amp;quot;)&lt;br /&gt;
	-- extract year&lt;br /&gt;
	local yearstr = mw.ustring.match(date, &amp;quot;^\-?%d+&amp;quot;)&lt;br /&gt;
	local year = tonumber(yearstr)&lt;br /&gt;
	-- remove leading zeros of year&lt;br /&gt;
	return year .. mw.ustring.sub(date, #yearstr + 1), year&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatDate(date, precision, timezone)&lt;br /&gt;
	precision = precision or 11&lt;br /&gt;
	local date, year = normalizeDate(date)&lt;br /&gt;
	if year == 0 and precision &amp;lt;= 9 then return &amp;quot;&amp;quot; end&lt;br /&gt;
 &lt;br /&gt;
 	-- precision is 10000 years or more&lt;br /&gt;
	if precision &amp;lt;= 5 then&lt;br /&gt;
		local factor = 10 ^ ((5 - precision) + 4)&lt;br /&gt;
		local y2 = math.ceil(math.abs(year) / factor)&lt;br /&gt;
		local relative = mw.ustring.gsub(i18n.datetime[precision], &amp;quot;$1&amp;quot;, tostring(y2))&lt;br /&gt;
		if year &amp;lt; 0 then&lt;br /&gt;
			relative = mw.ustring.gsub(i18n.datetime.beforenow, &amp;quot;$1&amp;quot;, relative)&lt;br /&gt;
		else&lt;br /&gt;
			relative = mw.ustring.gsub(i18n.datetime.afternow, &amp;quot;$1&amp;quot;, relative)&lt;br /&gt;
		end			&lt;br /&gt;
		return relative&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
 	-- precision is decades, centuries and millennia&lt;br /&gt;
	local era&lt;br /&gt;
	if precision == 6 then era = mw.ustring.gsub(i18n.datetime[6], &amp;quot;$1&amp;quot;, tostring(math.floor((math.abs(year) - 1) / 1000) + 1)) end&lt;br /&gt;
	if precision == 7 then era = mw.ustring.gsub(i18n.datetime[7], &amp;quot;$1&amp;quot;, tostring(math.floor((math.abs(year) - 1) / 100) + 1)) end&lt;br /&gt;
	if precision == 8 then era = mw.ustring.gsub(i18n.datetime[8], &amp;quot;$1&amp;quot;, tostring(math.floor(math.abs(year) / 10) * 10)) end&lt;br /&gt;
	if era then&lt;br /&gt;
		if year &amp;lt; 0 then era = mw.ustring.gsub(mw.ustring.gsub(i18n.datetime.bc, &amp;#039;&amp;quot;&amp;#039;, &amp;quot;&amp;quot;), &amp;quot;$1&amp;quot;, era)&lt;br /&gt;
		elseif year &amp;gt; 0 then era = mw.ustring.gsub(mw.ustring.gsub(i18n.datetime.ad, &amp;#039;&amp;quot;&amp;#039;, &amp;quot;&amp;quot;), &amp;quot;$1&amp;quot;, era) end&lt;br /&gt;
		return era&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
 	-- precision is year&lt;br /&gt;
 	if precision == 9 then&lt;br /&gt;
 		return year&lt;br /&gt;
 	end&lt;br /&gt;
 &lt;br /&gt;
	-- precision is less than years&lt;br /&gt;
	if precision &amp;gt; 9 then&lt;br /&gt;
		--[[ the following code replaces the UTC suffix with the given negated timezone to convert the global time to the given local time&lt;br /&gt;
		timezone = tonumber(timezone)&lt;br /&gt;
		if timezone and timezone ~= 0 then&lt;br /&gt;
			timezone = -timezone&lt;br /&gt;
			timezone = string.format(&amp;quot;%.2d%.2d&amp;quot;, timezone / 60, timezone % 60)&lt;br /&gt;
			if timezone[1] ~= &amp;#039;-&amp;#039; then timezone = &amp;quot;+&amp;quot; .. timezone end&lt;br /&gt;
			date = mw.text.trim(date, &amp;quot;Z&amp;quot;) .. &amp;quot; &amp;quot; .. timezone&lt;br /&gt;
		end&lt;br /&gt;
		]]--&lt;br /&gt;
 &lt;br /&gt;
		local formatstr = i18n.datetime[precision]&lt;br /&gt;
		if year == 0 then formatstr = mw.ustring.gsub(formatstr, i18n.datetime[9], &amp;quot;&amp;quot;)&lt;br /&gt;
		elseif year &amp;lt; 0 then&lt;br /&gt;
			-- Mediawiki formatDate doesn&amp;#039;t support negative years&lt;br /&gt;
			date = mw.ustring.sub(date, 2)&lt;br /&gt;
			formatstr = mw.ustring.gsub(formatstr, i18n.datetime[9], mw.ustring.gsub(i18n.datetime.bc, &amp;quot;$1&amp;quot;, i18n.datetime[9]))&lt;br /&gt;
		elseif year &amp;gt; 0 and i18n.datetime.ad ~= &amp;quot;$1&amp;quot; then&lt;br /&gt;
			formatstr = mw.ustring.gsub(formatstr, i18n.datetime[9], mw.ustring.gsub(i18n.datetime.ad, &amp;quot;$1&amp;quot;, i18n.datetime[9]))&lt;br /&gt;
		end&lt;br /&gt;
		return mw.language.new(wiki.langcode):formatDate(formatstr, date)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function printDatavalueEntity(data, parameter)&lt;br /&gt;
	-- data fields: entity-type [string], numeric-id [int, Wikidata id]&lt;br /&gt;
	local id&lt;br /&gt;
	&lt;br /&gt;
	if data[&amp;quot;entity-type&amp;quot;] == &amp;quot;item&amp;quot; then id = &amp;quot;Q&amp;quot; .. data[&amp;quot;numeric-id&amp;quot;]&lt;br /&gt;
	elseif data[&amp;quot;entity-type&amp;quot;] == &amp;quot;property&amp;quot; then id = &amp;quot;P&amp;quot; .. data[&amp;quot;numeric-id&amp;quot;]&lt;br /&gt;
	else return printError(&amp;quot;unknown-entity-type&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if parameter then&lt;br /&gt;
		if parameter == &amp;quot;link&amp;quot; then&lt;br /&gt;
			local linkTarget = mw.wikibase.sitelink(id)&lt;br /&gt;
			local linkName = mw.wikibase.label(id)&lt;br /&gt;
			if linkTarget then&lt;br /&gt;
				-- if there is a local Wikipedia article link to it using the label or the article title&lt;br /&gt;
				return &amp;quot;[[&amp;quot; .. linkTarget  .. &amp;quot;|&amp;quot; .. (linkName or linkTarget) .. &amp;quot;]]&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				-- if there is no local Wikipedia article output the label or link to the Wikidata object to let the user input a proper label&lt;br /&gt;
				if linkName then return linkName else return &amp;quot;[[:d:&amp;quot; .. id .. &amp;quot;|&amp;quot; .. id .. &amp;quot;]]&amp;quot; end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return data[parameter]&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return mw.wikibase.label(id) or id&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function printDatavalueTime(data, parameter)&lt;br /&gt;
	-- data fields: time [ISO 8601 time], timezone [int in minutes], before [int], after [int], precision [int], calendarmodel [wikidata URI]&lt;br /&gt;
	--   precision: 0 - billion years, 1 - hundred million years, ..., 6 - millennia, 7 - century, 8 - decade, 9 - year, 10 - month, 11 - day, 12 - hour, 13 - minute, 14 - second&lt;br /&gt;
	--   calendarmodel: e.g. http://www.wikidata.org/entity/Q1985727 for the proleptic Gregorian calendar or http://www.wikidata.org/wiki/Q11184 for the Julian calendar]&lt;br /&gt;
	if parameter then&lt;br /&gt;
		if parameter == &amp;quot;calendarmodel&amp;quot; then data.calendarmodel = mw.ustring.match(data.calendarmodel, &amp;quot;Q%d+&amp;quot;) -- extract entity id from the calendar model URI&lt;br /&gt;
		elseif parameter == &amp;quot;time&amp;quot; then data.time = normalizeDate(data.time) end&lt;br /&gt;
		return data[parameter]&lt;br /&gt;
	else&lt;br /&gt;
		return formatDate(data.time, data.precision, data.timezone)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function printDatavalueMonolingualText(data, parameter)&lt;br /&gt;
	-- data fields: language [string], text [string]&lt;br /&gt;
	if parameter then&lt;br /&gt;
		return data[parameter]&lt;br /&gt;
	else&lt;br /&gt;
		local result = mw.ustring.gsub(mw.ustring.gsub(i18n.monolingualtext, &amp;quot;%%language&amp;quot;, data[&amp;quot;language&amp;quot;]), &amp;quot;%%text&amp;quot;, data[&amp;quot;text&amp;quot;])&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function findClaims(entity, property)&lt;br /&gt;
	if not property or not entity or not entity.claims then return end&lt;br /&gt;
 &lt;br /&gt;
	if mw.ustring.match(property, &amp;quot;^P%d+$&amp;quot;) then&lt;br /&gt;
		-- if the property is given by an id (P..) access the claim list by this id&lt;br /&gt;
		return entity.claims[property]&lt;br /&gt;
	else&lt;br /&gt;
		property = mw.wikibase.resolvePropertyId(property)&lt;br /&gt;
		if not property then return end&lt;br /&gt;
&lt;br /&gt;
		return entity.claims[property]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getSnakValue(snak, parameter)&lt;br /&gt;
	if snak.snaktype == &amp;quot;value&amp;quot; then&lt;br /&gt;
		-- call the respective snak parser&lt;br /&gt;
		if snak.datavalue.type == &amp;quot;string&amp;quot; then return snak.datavalue.value&lt;br /&gt;
		elseif snak.datavalue.type == &amp;quot;globecoordinate&amp;quot; then return printDatavalueCoordinate(snak.datavalue.value, parameter)&lt;br /&gt;
		elseif snak.datavalue.type == &amp;quot;quantity&amp;quot; then return printDatavalueQuantity(snak.datavalue.value, parameter)&lt;br /&gt;
		elseif snak.datavalue.type == &amp;quot;time&amp;quot; then return printDatavalueTime(snak.datavalue.value, parameter)&lt;br /&gt;
		elseif snak.datavalue.type == &amp;quot;wikibase-entityid&amp;quot; then return printDatavalueEntity(snak.datavalue.value, parameter)&lt;br /&gt;
		elseif snak.datavalue.type == &amp;quot;monolingualtext&amp;quot; then return printDatavalueMonolingualText(snak.datavalue.value, parameter)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return mw.wikibase.renderSnak(snak)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
local function getQualifierSnak(claim, qualifierId)&lt;br /&gt;
	-- a &amp;quot;snak&amp;quot; is Wikidata terminology for a typed key/value pair&lt;br /&gt;
	-- a claim consists of a main snak holding the main information of this claim,&lt;br /&gt;
	-- as well as a list of attribute snaks and a list of references snaks&lt;br /&gt;
	if qualifierId then&lt;br /&gt;
		-- search the attribute snak with the given qualifier as key&lt;br /&gt;
		if claim.qualifiers then&lt;br /&gt;
			local qualifier = claim.qualifiers[qualifierId]&lt;br /&gt;
			if qualifier then return qualifier[1] end&lt;br /&gt;
		end&lt;br /&gt;
		return nil, printError(&amp;quot;qualifier-not-found&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		-- otherwise return the main snak&lt;br /&gt;
		return claim.mainsnak&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
local function getValueOfClaim(claim, qualifierId, parameter)&lt;br /&gt;
	local error&lt;br /&gt;
	local snak&lt;br /&gt;
	snak, error = getQualifierSnak(claim, qualifierId)&lt;br /&gt;
	if snak then&lt;br /&gt;
		return getSnakValue(snak, parameter)&lt;br /&gt;
	else&lt;br /&gt;
		return nil, error&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getReferences(frame, claim)&lt;br /&gt;
	local result = &amp;quot;&amp;quot;&lt;br /&gt;
	-- traverse through all references&lt;br /&gt;
	for ref in pairs(claim.references or {}) do&lt;br /&gt;
		local refparts&lt;br /&gt;
		-- traverse through all parts of the current reference&lt;br /&gt;
		for snakkey, snakval in orderedpairs(claim.references[ref].snaks or {}, claim.references[ref][&amp;quot;snaks-order&amp;quot;]) do&lt;br /&gt;
			if refparts then refparts = refparts .. &amp;quot;, &amp;quot; else refparts = &amp;quot;&amp;quot; end&lt;br /&gt;
			-- output the label of the property of the reference part, e.g. &amp;quot;imported from&amp;quot; for P143&lt;br /&gt;
			refparts = refparts .. tostring(mw.wikibase.label(snakkey)) .. &amp;quot;: &amp;quot; &lt;br /&gt;
			-- output all values of this reference part, e.g. &amp;quot;German Wikipedia&amp;quot; and &amp;quot;English Wikipedia&amp;quot; if the referenced claim was imported from both sites&lt;br /&gt;
			for snakidx = 1, #snakval do&lt;br /&gt;
				if snakidx &amp;gt; 1 then refparts = refparts .. &amp;quot;, &amp;quot; end&lt;br /&gt;
				refparts = refparts .. getSnakValue(snakval[snakidx])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if refparts then result = result .. frame:extensionTag(&amp;quot;ref&amp;quot;, refparts) end&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.claim(frame)&lt;br /&gt;
	local property = frame.args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
	local id = frame.args[&amp;quot;id&amp;quot;]	-- &amp;quot;id&amp;quot; must be nil, as access to other Wikidata objects is disabled in Mediawiki configuration&lt;br /&gt;
	local qualifierId = frame.args[&amp;quot;qualifier&amp;quot;]&lt;br /&gt;
	local parameter = frame.args[&amp;quot;parameter&amp;quot;]&lt;br /&gt;
	local list = frame.args[&amp;quot;list&amp;quot;]&lt;br /&gt;
	local references = frame.args[&amp;quot;references&amp;quot;]&lt;br /&gt;
	local showerrors = frame.args[&amp;quot;showerrors&amp;quot;]&lt;br /&gt;
	local default = frame.args[&amp;quot;default&amp;quot;]&lt;br /&gt;
	if default then showerrors = nil end&lt;br /&gt;
 &lt;br /&gt;
	-- get wikidata entity&lt;br /&gt;
	local entity = mw.wikibase.getEntityObject(id)&lt;br /&gt;
	if not entity then&lt;br /&gt;
		if showerrors then return printError(&amp;quot;entity-not-found&amp;quot;) else return default end&lt;br /&gt;
	end&lt;br /&gt;
	-- fetch the first claim of satisfying the given property&lt;br /&gt;
	local claims = findClaims(entity, property)&lt;br /&gt;
	if not claims or not claims[1] then&lt;br /&gt;
		if showerrors then return printError(&amp;quot;property-not-found&amp;quot;) else return default end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	-- get initial sort indices&lt;br /&gt;
	local sortindices = {}&lt;br /&gt;
	for idx in pairs(claims) do&lt;br /&gt;
		sortindices[#sortindices + 1] = idx&lt;br /&gt;
	end&lt;br /&gt;
	-- sort by claim rank&lt;br /&gt;
	local comparator = function(a, b)&lt;br /&gt;
		local rankmap = { deprecated = 2, normal = 1, preferred = 0 }&lt;br /&gt;
		local ranka = rankmap[claims[a].rank or &amp;quot;normal&amp;quot;] ..  string.format(&amp;quot;%08d&amp;quot;, a)&lt;br /&gt;
		local rankb = rankmap[claims[b].rank or &amp;quot;normal&amp;quot;] ..  string.format(&amp;quot;%08d&amp;quot;, b)&lt;br /&gt;
		return ranka &amp;lt; rankb&lt;br /&gt;
 	end&lt;br /&gt;
	table.sort(sortindices, comparator)&lt;br /&gt;
 &lt;br /&gt;
	local result&lt;br /&gt;
	local error&lt;br /&gt;
	if list then&lt;br /&gt;
		local value&lt;br /&gt;
		-- iterate over all elements and return their value (if existing)&lt;br /&gt;
		result = {}&lt;br /&gt;
		for idx in pairs(claims) do&lt;br /&gt;
			local claim = claims[sortindices[idx]]&lt;br /&gt;
			value, error =  getValueOfClaim(claim, qualifierId, parameter)&lt;br /&gt;
			if not value and showerrors then value = error end&lt;br /&gt;
			if value and references then value = value .. getReferences(frame, claim) end&lt;br /&gt;
			result[#result + 1] = value&lt;br /&gt;
		end&lt;br /&gt;
		result = table.concat(result, list)&lt;br /&gt;
	else&lt;br /&gt;
		-- return first element	&lt;br /&gt;
		local claim = claims[sortindices[1]]&lt;br /&gt;
		result, error = getValueOfClaim(claim, qualifierId, parameter)&lt;br /&gt;
		if result and references then result = result .. getReferences(frame, claim) end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	if result then return result else&lt;br /&gt;
		if showerrors then return error else return default end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- look into entity object&lt;br /&gt;
function p.ViewSomething(frame)&lt;br /&gt;
	local data = mw.wikibase.getEntityObject()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local f = frame.args[1] and frame or frame:getParent()&lt;br /&gt;
&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while true do&lt;br /&gt;
		local index = f.args[i]&lt;br /&gt;
		if not index then&lt;br /&gt;
			if type(data) == &amp;quot;table&amp;quot; then&lt;br /&gt;
				return mw.text.jsonEncode(data, mw.text.JSON_PRESERVE_KEYS + mw.text.JSON_PRETTY)&lt;br /&gt;
			else&lt;br /&gt;
				return tostring(data)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		data = data[index] or data[tonumber(index)]&lt;br /&gt;
		if not data then&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.Dump(frame)&lt;br /&gt;
	local data = mw.wikibase.getEntityObject()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return i18n.warnDump&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local f = frame.args[1] and frame or frame:getParent()&lt;br /&gt;
&lt;br /&gt;
	local i = 1&lt;br /&gt;
	while true do&lt;br /&gt;
		local index = f.args[i]&lt;br /&gt;
		if not index then&lt;br /&gt;
			return &amp;quot;&amp;lt;pre&amp;gt;&amp;quot;..mw.dumpObject(data)..&amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;.. i18n.warnDump&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		data = data[index] or data[tonumber(index)]&lt;br /&gt;
		if not data then&lt;br /&gt;
			return i18n.warnDump&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>nb&gt;Tholme</name></author>
	</entry>
</feed>