Module:Wikibase
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 pagefalse 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 pageenwiki 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