Logo Voyage

Module:Wikibase Voyage Tips and guide

You can check the original Wikivoyage article Here
[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
    


    Discover



    Powered by GetYourGuide