[view] [edit] [history] [purge] Documentation

This module is a package of functions for accessing Wikidata properties which cannot be accessed with #property.

Code Returns
{{#invoke:wikibase|capital}} name of the "capital" property as listed in the Wikidata item associated with the current page, displayed as a link
{{#invoke:wikibase|commonslink}} name of the Wikimedia Commons category, as listed in the Wikidata item associated with the current page
{{#invoke:wikibase|disambig}} true if the Wikidata item corresponds to a Wikipedia disambiguation page
false if it does not
{{#invoke:wikibase|flag}} filename listed under the "flag" property in the Wikidata item associated with the current page
{{#invoke:wikibase|id}} ID number of the Wikidata item associated with the current page
{{#invoke:wikibase|idLink}} ID number of the Wikidata item associated with the current page, in the form of a link to that item
{{#invoke:wikibase|label}} label of the Wikidata item associated with the current page
{{#invoke:wikibase|latitude}} decimal latitude as listed in the Wikidata item associated with the current page
{{#invoke:wikibase|longitude}} decimal longitude as listed in the Wikidata item associated with the current page
{{#invoke:wikibase|page|Qxxxxx}} name of the local page associated with Wikidata item number Qxxxxx
{{#invoke:wikibase|sitelink|enwiki}} name of the English Wikipedia page name, as listed in the Wikidata item associated with the current page
enwiki can be replaced with other language codes to obtain corresponding page names for Wikipedia or Wikivoyage in other languages

-- Module:Wikibase function getId( id )     if not mw.wikibase then            return "wikibase module not found"     end          if id then return id end          entity = mw.wikibase.getEntityObject()     if not entity then return nil end     return entity.id end  -- Returns the link corresponding to the code provided. function sitelink(dbname)     if dbname==nil or dbname=='' then         return ''     end     local sl = mw.wikibase.getEntityObject()     if sl and sl.sitelinks[dbname] then         return sl.sitelinks[dbname].title     end     return '' end  -- Returns the corresponding geographical coordinates of the item function coords(typ,fallback)     if fallback~=nil and fallback~='' and string.match(fallback, '^<%!%-%-.*%-%->$')==nil then         return fallback     end     local item = mw.wikibase.getEntityObject()     if item~=nil and item.claims~=nil then         local coords = item.claims.P625         if coords~=nil and coords[0]~=nil and coords[1]==nil then             return coords[0].mainsnak.datavalue.value[typ]         end     end     return '' end  -- Returns the most updated info from a series of statements function updated(item,prop,frame)     if item~=nil then         local claims = item.claims         if claims~=nil and claims[prop]~=nil then             for index,claim in pairs(claims[prop]) do                 local qual = claim.qualifiers                 if qual==nil or qual.P582==nil then                     -- p582 è la data di fine, significa che non è il valore attuale                     local val = claim.mainsnak.datavalue.value                     if val['numeric-id']~=nil then                         local id = 'Q'..val['numeric-id']                         local sl = mw.wikibase.sitelink(id)                         local lb = mw.wikibase.label(id)                         if sl~=nil and sl~='' then                             return frame:preprocess('[['..sl..'|'..lb..']]')                         end                         return lb                     end                     return val                 end             end         end     end     return '' end  local p = {}  -- Returns the ID number of the data item linked to the current page. function p.id(frame)     id = getId(frame.args[1])     if id == nil then            return "(no element found)"     end     return id end   -- Returns the ID number of the data item linked to the current page in the form of a link to Wikidata. function p.idLink(frame)     id = getId(frame.args[1])     if id == nil then            return "(no element found)"     end     return "[[d:" .. id .. "|" .. string.upper(id) .. "]]" end   -- Returns the label of the data item. function p.label(frame)     id = getId(frame.args[1])     if id == nil then            return "(no element found)"     end     return mw.wikibase.label( id ) end   -- Returns the local page of the data item provided. function p.page(frame)     id = getId(frame.args[1])     if id == nil then            return "(no element found)"     end     return mw.wikibase.sitelink( id ) end  -- Returns the link corresponding to the code provided. function p.sitelink(frame)     return sitelink(frame.args.dbname or frame.args[1]) end  -- Returns the corresponding link to Wikipedia in English. function p.enwikilink(frame)     if frame.args[1]~=nil and frame.args[1]~='' then         return frame.args[1]     end     local sl = sitelink('enwiki')     if sl~=nil and sl~='' then         return sl     end     local t = mw.title.getCurrentTitle().text     if t~=nil and t~='' then         return t     end     return '' end  -- Returns the Commons category of the data item. function p.commonslink(frame)     if frame.args[1]~=nil and frame.args[1]~='' then         return 'Category:'..frame.args[1]     end     local item = mw.wikibase.getEntityObject()     if item~=nil and item.claims~=nil then         local cat = item.claims.P373         if cat~=nil and cat[0]~=nil and cat[1]==nil and cat[0].mainsnak.datavalue.value~=nil then             return 'Category:'..(cat[0].mainsnak.datavalue.value)         end     end     local t = mw.title.getCurrentTitle().text     if t~=nil and t~='' then         return 'Category:'..t     end     return '' end  -- Returns the name of the capital or main city. function p.capital(frame)     if frame.args[1]~=nil and frame.args[1]~='' then         return frame.args[1]     end     local item = mw.wikibase.getEntityObject()     return updated(item,'P36',frame) end  function p.capoluogo(frame)     return p.capital(frame) end  function p.valuta(frame)     if frame.args[1]~=nil and frame.args[1]~='' then         return frame.args[1]     end     local item = mw.wikibase.getEntityObject()     return updated(item,'P38',frame) end  -- GET FLAG -- P41 thumb image  function p.flag(frame) --    if frame.args[1]~=nil and frame.args[1]~='' then --        return frame.args[1] --    end --	local title="" - not using title  	local arg1 = frame.args[1]     local item = mw.wikibase.getEntityObject(arg1)     if item == nil then return end     local flag = updated(item,'P41',frame) --	local title = mw.wikibase.sitelink(arg1)         if flag ~= nil and flag ~= '' then 		return flag      	 --		return "[[File:" .. flag .. "| thumb | 200px | " .. title .. "]]" 	end end  -- Restituisce l'etichetta dell'elemento rappresentante la bandiera relativa all'elemento dell'articolo function p.bandiera_titolo(frame)     local item = mw.wikibase.getEntityObject()     if item~=nil then         local claims = item.claims         if claims~=nil and claims.P163~=nil and claims.P163[0]~=nil and claims.P163[1]==nil then             return mw.wikibase.label('Q'..claims.P163[0].mainsnak.datavalue.value['numeric-id'])         end     end     return mw.title.getCurrentTitle().text..' - Bandiera' end  -- Restituisce la latitudine corrispondente all'articolo. function p.latitude(frame)     return coords('latitude',frame.args[1]) end  -- Restituisce la longitudine corrispondente all'articolo. function p.longitude(frame)     return coords('longitude',frame.args[1]) end  function p.disambig(frame) 	local item = mw.wikibase.getEntityObject() 	if item~=nil and item.descriptions~=nil then 		local desc = item.descriptions.en 		if desc~=nil and desc.value~=nil and desc.value:lower():find('disambiguation page')~=nil then 			return true 		end 	end 	return false end function p.instanceof(arg) 	arg = tonumber(arg.args[1] or arg) 	if item and item.claims and item.claims.P31 then 		local claims = item.claims.P31 		for index, claim in pairs(claims) do 			if claim.mainsnak and claim.mainsnak.datavalue then 				local val = claim.mainsnak.datavalue.value 				if val and val['numeric-id'] and arg == val['numeric-id'] then 					return true 				end 			end 		end 	end 	return false end return p