<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nb">
	<id>https://mtdb.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata</id>
	<title>Modul:Wikidata - Sideversjonshistorikk</title>
	<link rel="self" type="application/atom+xml" href="https://mtdb.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata"/>
	<link rel="alternate" type="text/html" href="https://mtdb.no/index.php?title=Modul:Wikidata&amp;action=history"/>
	<updated>2026-05-22T11:51:03Z</updated>
	<subtitle>Versjonshistorikk for denne siden på wikien</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://mtdb.no/index.php?title=Modul:Wikidata&amp;diff=397&amp;oldid=prev</id>
		<title>Toro Andersen: Ny side: local i18n = {     [&quot;errors&quot;] = {         [&quot;property-param-not-provided&quot;] = &quot;Parámetro de la propiedad no proporcionado.&quot;,         [&quot;entity-not-found&quot;] = &quot;Entrada no encontrada.&quot;,…</title>
		<link rel="alternate" type="text/html" href="https://mtdb.no/index.php?title=Modul:Wikidata&amp;diff=397&amp;oldid=prev"/>
		<updated>2018-01-26T21:32:27Z</updated>

		<summary type="html">&lt;p&gt;Ny side: local i18n = {     [&amp;quot;errors&amp;quot;] = {         [&amp;quot;property-param-not-provided&amp;quot;] = &amp;quot;Parámetro de la propiedad no proporcionado.&amp;quot;,         [&amp;quot;entity-not-found&amp;quot;] = &amp;quot;Entrada no encontrada.&amp;quot;,…&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local i18n = {&lt;br /&gt;
    [&amp;quot;errors&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;property-param-not-provided&amp;quot;] = &amp;quot;Parámetro de la propiedad no proporcionado.&amp;quot;,&lt;br /&gt;
        [&amp;quot;entity-not-found&amp;quot;] = &amp;quot;Entrada no encontrada.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-claim-type&amp;quot;] = &amp;quot;Tipo de notificación desconocida.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-snak-type&amp;quot;] = &amp;quot;Tipo de snak desconocido.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-datavalue-type&amp;quot;] = &amp;quot;Tipo datavalue desconocido.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-entity-type&amp;quot;] = &amp;quot;Tipo de entrada desconocido.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-value-module&amp;quot;] = &amp;quot;Debe ajustar ambos parámetros de valor y el valor del módulo de funciones.&amp;quot;,&lt;br /&gt;
        [&amp;quot;value-module-not-found&amp;quot;] = &amp;quot;No se ha encontrado el módulo apuntado por value-module.&amp;quot;,&lt;br /&gt;
        [&amp;quot;value-function-not-found&amp;quot;] = &amp;quot;No se ha encontrado la función apuntada por value-function.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;somevalue&amp;quot;] = &amp;quot;&amp;#039;&amp;#039;valor desconocido&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
    [&amp;quot;novalue&amp;quot;] = &amp;quot;&amp;#039;&amp;#039;sin valor&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
function getEntityFromId( id )&lt;br /&gt;
    if id then&lt;br /&gt;
        return mw.wikibase.getEntityObject( id )&lt;br /&gt;
    end&lt;br /&gt;
    return mw.wikibase.getEntityObject()&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function getEntityIdFromValue( value )&lt;br /&gt;
    local prefix = &amp;#039;&amp;#039;&lt;br /&gt;
    if value[&amp;#039;entity-type&amp;#039;] == &amp;#039;item&amp;#039; then&lt;br /&gt;
        prefix = &amp;#039;Q&amp;#039;&lt;br /&gt;
    elseif value[&amp;#039;entity-type&amp;#039;] == &amp;#039;property&amp;#039; then&lt;br /&gt;
        prefix = &amp;#039;P&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return formatError( &amp;#039;unknown-entity-type&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
    return prefix .. value[&amp;#039;numeric-id&amp;#039;]&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatError( key )&lt;br /&gt;
    return &amp;#039;&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&amp;#039; .. i18n.errors[key] .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function formatStatements( options )&lt;br /&gt;
    if options.property == &amp;#039;precisión&amp;#039; or options.property == &amp;#039;breddegrad&amp;#039; or options.property == &amp;#039;lengdegrad&amp;#039;  then&lt;br /&gt;
        propiedad = &amp;#039;P625&amp;#039;&lt;br /&gt;
    else &lt;br /&gt;
        propiedad = options.property&lt;br /&gt;
    end&lt;br /&gt;
    if not propiedad then&lt;br /&gt;
        return formatError( &amp;#039;property-param-not-provided&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    --Get entity&lt;br /&gt;
    local entity = getEntityFromId( options.entityId )&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return  &amp;#039;&amp;#039;--formatError( &amp;#039;entity-not-found&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    if (entity.claims == nil) or (not entity.claims[propiedad]) then&lt;br /&gt;
        return &amp;#039;&amp;#039; --TODO error?&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    --Declaración de formato y concatenado limpio&lt;br /&gt;
 &lt;br /&gt;
    local propiedad = {}&lt;br /&gt;
    if options.property == &amp;#039;breddegrad&amp;#039; or options.property == &amp;#039;lengdegrad&amp;#039; or options.property == &amp;#039;precisión&amp;#039; then&lt;br /&gt;
        propiedad = &amp;#039;P625&amp;#039;&lt;br /&gt;
    else &lt;br /&gt;
        propiedad = options.property&lt;br /&gt;
    end &lt;br /&gt;
    local cadena = entity.claims[propiedad]&lt;br /&gt;
    local s = {} -- Esto es para que el índice 0 pase a ser 1. Necesario para que todo quede en el mismo orden que en ítem&lt;br /&gt;
    for k, v in pairs(cadena) do&lt;br /&gt;
        s[k+1] = v&lt;br /&gt;
    end &lt;br /&gt;
    local formattedStatements = {}&lt;br /&gt;
    for i, statement in pairs(s) do&lt;br /&gt;
        table.insert( formattedStatements, formatStatement( statement, options ) )&lt;br /&gt;
    end&lt;br /&gt;
    return mw.text.listToText( formattedStatements, options.separator, options.conjunction )&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatStatement( statement, options )&lt;br /&gt;
    if not statement.type or statement.type ~= &amp;#039;statement&amp;#039; then&lt;br /&gt;
        return formatError( &amp;#039;unknown-claim-type&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    return formatSnak( statement.mainsnak, options )&lt;br /&gt;
    --TODO reference and qualifiers&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatSnak( snak, options )&lt;br /&gt;
    if snak.snaktype == &amp;#039;somevalue&amp;#039; then&lt;br /&gt;
        return i18n[&amp;#039;somevalue&amp;#039;]&lt;br /&gt;
    elseif snak.snaktype == &amp;#039;novalue&amp;#039; then&lt;br /&gt;
        return i18n[&amp;#039;novalue&amp;#039;]&lt;br /&gt;
    elseif snak.snaktype == &amp;#039;value&amp;#039; then&lt;br /&gt;
        return formatDatavalue( snak.datavalue, options )&lt;br /&gt;
    else&lt;br /&gt;
        return formatError( &amp;#039;unknown-snak-type&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatDatavalue( datavalue, options )&lt;br /&gt;
    --Use the customize handler if provided&lt;br /&gt;
    if options[&amp;#039;value-module&amp;#039;] or options[&amp;#039;value-function&amp;#039;] then&lt;br /&gt;
        if not options[&amp;#039;value-module&amp;#039;] or not options[&amp;#039;value-function&amp;#039;] then&lt;br /&gt;
            return formatError( &amp;#039;unknown-value-module&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
        local formatter = require (&amp;#039;Module:&amp;#039; .. options[&amp;#039;value-module&amp;#039;])&lt;br /&gt;
        if formatter == nil then&lt;br /&gt;
            return formatError( &amp;#039;value-module-not-found&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
        local fun = formatter[options[&amp;#039;value-function&amp;#039;]]&lt;br /&gt;
        if fun == nil then&lt;br /&gt;
            return formatError( &amp;#039;value-function-not-found&amp;#039; )&lt;br /&gt;
        end&lt;br /&gt;
        return fun( datavalue.value, options )&lt;br /&gt;
    end&lt;br /&gt;
    --Default formatters&lt;br /&gt;
    if options.property == &amp;#039;breddegrad&amp;#039; then --Para las coordenadas&lt;br /&gt;
        return datavalue.value[&amp;#039;breddegrad&amp;#039;]&lt;br /&gt;
    elseif options.property == &amp;#039;lengdegrad&amp;#039; then&lt;br /&gt;
        return datavalue.value[&amp;#039;lengdegrad&amp;#039;]&lt;br /&gt;
     elseif options.property == &amp;#039;precisión&amp;#039; then&lt;br /&gt;
        return datavalue.value[&amp;#039;precision&amp;#039;]&lt;br /&gt;
 &lt;br /&gt;
    elseif datavalue.type == &amp;#039;wikibase-entityid&amp;#039; then&lt;br /&gt;
        return formatEntityId( getEntityIdFromValue( datavalue.value ), options )&lt;br /&gt;
    elseif datavalue.type == &amp;#039;string&amp;#039; then&lt;br /&gt;
        return datavalue.value --TODO ids + media&lt;br /&gt;
    elseif  datavalue.value[&amp;#039;breddegrad&amp;#039;]  and datavalue.value[&amp;#039;lengdegrad&amp;#039;] then &lt;br /&gt;
        return  marco:preprocess(&amp;#039;{{coord|&amp;#039; .. datavalue.value[&amp;#039;breddegrad&amp;#039;] .. &amp;#039;|&amp;#039; .. &lt;br /&gt;
                   datavalue.value[&amp;#039;lengdegrad&amp;#039;] .. &amp;#039;|type:&amp;#039; .. options.tipo .. &amp;#039;|display=&amp;#039; .. &lt;br /&gt;
                   options.display ..&amp;#039;|format=&amp;#039; .. options.formato..&amp;#039;}}&amp;#039;)&lt;br /&gt;
    else&lt;br /&gt;
        return formatError( &amp;#039;unknown-datavalue-type&amp;#039; )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function formatEntityId( entityId, options )&lt;br /&gt;
    local label = mw.wikibase.label( entityId )&lt;br /&gt;
 &lt;br /&gt;
    local link = mw.wikibase.sitelink( entityId )&lt;br /&gt;
    if link and  options[&amp;#039;link&amp;#039;] ~=  &amp;#039;no&amp;#039; then&lt;br /&gt;
        if label then&lt;br /&gt;
            return &amp;#039;[[&amp;#039; .. link .. &amp;#039;|&amp;#039; .. label .. &amp;#039;]]&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &amp;#039;[[&amp;#039; .. link .. &amp;#039;]]&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
    elseif label then&lt;br /&gt;
        return label --TODO what if no links and label + fallback language?&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;#039;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
local p = {}&lt;br /&gt;
 &lt;br /&gt;
function p.formatStatements( frame )&lt;br /&gt;
    marco = frame&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local valorwikidata = formatStatements( frame.args )&lt;br /&gt;
    if args.prioridad == &amp;#039;sí&amp;#039; and valorwikidata  ~= &amp;#039;&amp;#039; then&lt;br /&gt;
        return formatStatements( frame.args )&lt;br /&gt;
    elseif args.value and args.value ~= &amp;#039;&amp;#039; then&lt;br /&gt;
         return args.value&lt;br /&gt;
    else&lt;br /&gt;
        return formatStatements( frame.args )&lt;br /&gt;
  end  &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns the page title of a linked page in another Wikimedia site as a string&lt;br /&gt;
-- If no wikidata page exists, or if no link exists to the given project, &lt;br /&gt;
-- the function returns nil&lt;br /&gt;
function p.sitelink(frame)&lt;br /&gt;
&lt;br /&gt;
	-- First argument is the site code (&amp;#039;enwiki&amp;#039;, &amp;#039;commonswiki&amp;#039;, ...)&lt;br /&gt;
	local siteId = frame.args[1]&lt;br /&gt;
	&lt;br /&gt;
	-- Get Wikibase item connected to the current page&lt;br /&gt;
	local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return nil -- no wikidata page for current item&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get title the item is linked with in the given site&lt;br /&gt;
	return entity:getSitelink(siteId)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns Commons category, if any&lt;br /&gt;
function p.commonscat(frame)&lt;br /&gt;
	&lt;br /&gt;
	templateArgs = {}&lt;br /&gt;
&lt;br /&gt;
	-- if a category name is specified explicitly, we use that value&lt;br /&gt;
	if frame.args[1] and frame.args[1] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		templateArgs[1] = frame.args[1]&lt;br /&gt;
		if frame.args[2] and frame.args[2] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			templateArgs[2] = frame.args[2]&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
	-- otherwise, we fetch the category name from Wikidata&lt;br /&gt;
	else&lt;br /&gt;
&lt;br /&gt;
		-- Get Wikibase item connected to the current page&lt;br /&gt;
		local entity = mw.wikibase.getEntityObject()&lt;br /&gt;
		if not entity then&lt;br /&gt;
			return &amp;#039;[[Kategori:Sider med Commonscat som mangler Wikidata-side]]&amp;#039;&lt;br /&gt;
		end  -- no wikidata page for current item&lt;br /&gt;
	&lt;br /&gt;
		-- Get formatted value&lt;br /&gt;
		local value = entity:formatPropertyValues( &amp;#039;P373&amp;#039; )[&amp;#039;value&amp;#039;]&lt;br /&gt;
		if value == &amp;#039;&amp;#039; then  -- property not set&lt;br /&gt;
			-- Commons categories may also be stored as sitelinks&lt;br /&gt;
			value = p.sitelink({args = {&amp;#039;commonswiki&amp;#039;}})&lt;br /&gt;
			if value and mw.ustring.sub(value, 0, 9) == &amp;#039;Category:&amp;#039; then&lt;br /&gt;
				value = mw.ustring.sub(value, 10)  -- remove namespace&lt;br /&gt;
			else&lt;br /&gt;
				value = &amp;#039;&amp;#039;  -- not a category, probably a gallery page&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if value == &amp;#039;&amp;#039; then  -- neither property nor sitelink available&lt;br /&gt;
			return &amp;#039;[[Kategori:Sider med Commonscat der Wikidata-siden mangler Commons-lenke]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		templateArgs[1] = value&lt;br /&gt;
	&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Return formatted value using a template&lt;br /&gt;
	if frame.args[&amp;#039;template&amp;#039;] then&lt;br /&gt;
		return frame:expandTemplate{&lt;br /&gt;
			title = frame.args[&amp;#039;template&amp;#039;],&lt;br /&gt;
			args = templateArgs&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- or just return plain category name&lt;br /&gt;
	return templateArgs[1]&lt;br /&gt;
&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.hentVerdi = 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;FETCH_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;Article is not yet available in this wiki&amp;#039;&amp;gt;[*]&amp;lt;/abbr&amp;gt;&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;
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;FETCH_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;Article is not yet available in this wiki&amp;#039;&amp;gt;[*]&amp;lt;/abbr&amp;gt;&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;FETCH_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;FETCH_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;
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;FETCH_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;Article is not yet available in this wiki&amp;#039;&amp;gt;[*]&amp;lt;/abbr&amp;gt;&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;FETCH_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;FETCH_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;
return p&lt;/div&gt;</summary>
		<author><name>Toro Andersen</name></author>
	</entry>
</feed>