Mòdul:Wikibase

De Viquipèdia
Salta a la navegació Salta a la cerca
Icona de documentació de mòdul Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]

Mòdul Wikibase (codi · ús · discussió · tests · casos prova | subpàgines · enllaços)

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Mòdul que proporciona funcions bàsiques d'accés a Wikidata. Està copiat de la documentació de mw:Extension:Wikibase Client/Lua. Per a funcions més desenvolupades adaptades a les necessitats de la Viquipèdia, vegeu Mòdul:Wikidata.

Funcions:

id

Retorna l'id de l'element de Wikidata corresponent a la pàgina. Sintaxi:

{{#invoke:wikibase|id}}

No utilitza cap paràmetre, només analitza la pròpia pàgina. En cas de no existir l'element retorna "cap".

Exemple, per aquesta pàgina: Q8565357

label

Retorna l'etiqueta d'un element donat. Sintaxi:

{{#invoke:wikibase|label}}
{{#invoke:wikibase|label|<id>|<lang>}}

Sense cap paràmetre retorna l'etiqueta de l'element associat a la pàgina actual. Proporcionant l'id retornarà l'etiqueta corresponent. En cas de no existir o ser erroni no retorna res. Amb un segon paràmetre amb un codi de llengua obté l'etiqueta en la llengua especificada.

Exemple: {{#invoke:wikibase|label|Q11799}} → Pau

label_lang

Retorna el codi de llengua de l'etiqueta obtinguda per a un element donat. Sintaxi:

{{#invoke:wikibase|label_lang}}
{{#invoke:wikibase|label_lang|<id>}}

Sense cap paràmetre retorna el codi de llengua de l'etiqueta de l'element associat a la pàgina actual. Proporcionant l'id retornarà el valor per l'etiqueta corresponent. Normalment obté l'etiqueta en la llengua local del wiki. Si no existeix pot ser en alguna de les llengües alternatives definides (actualment les alternatives al català són l'occità i l'anglès).

Exemple: {{#invoke:wikibase|label_lang|Q11799}} → ca

page

Retorna el títol de pàgina local per un element donat. Sintaxi:

{{#invoke:wikibase|page|<id>|<wiki>}}

Sense cap paràmetre retorna la pròpia pàgina. Proporcionant l'id retornarà la pàgina local enllaçada en l'element corresponent. En cas de no existir o ser erroni no retorna res. Amb un segon paràmetre amb un codi de wiki obté la pàgina en el wiki especificat (enwiki, frwiki,... cawiktionary, etc.)

Exemple: {{#invoke:wikibase|page|Q11799}} → Pau (Alt Empordà)

firstproperty

Retorna la primera propietat donada de l'element corresponent a la pàgina. Sintaxi:

{{#invoke:wikibase|firstproperty|<pxx>}}

Cal proporcionar la propietat amb "p" inicial minúscula seguida de números. Si hi ha diferents valors només retorna el primer. És una alternativa a {{#property|<pxx>}} que retorna la llista de valors separats per una coma. Exemple: {{#invoke:wikibase|page|Q11799}} → Pau (Alt Empordà)

Vegeu la documentació a mw:Extension:WikibaseClient/Lua

Altres funcions implementades

validproperty

Retorna "null" si la propietat no existeix o té un marcador "sense valor" o "valor desconegut".

Sintaxi:

{{#invoke:Wikibase|validproperty|<pxx>|type=value|item={{{item|}}}}}
numStatements

Retorna el nombre d'instàncies que té una property multi-valor. Permet determinar el tractament a donar a llistes llargues.

Sintaxi:

{{#invoke:Wikibase|numStatements|<pxx>|item={{{item|}}}

Exemple: {{#invoke:wikibase|numStatements|P47|item=Q1861}} → 6

-- Module:Wikibase
local p = {}

-- Return the item ID of the item linked to the current page.
function p.id(frame)
    entity = mw.wikibase.getEntityObject()
    if entity == nil then
        return "cap"
    end
    return entity.id
end
 
-- Return the label of a given data item, optionally in a given language.
function p.label(frame)
    if frame.args[1] == nil then
        entity = mw.wikibase.getEntityObject()
        if not entity then return nil end
        id = entity.id
    else
        id = frame.args[1]
    end
    if frame.args[2] then
    	return mw.wikibase.getLabelByLang(id, frame.args[2])
    end
    return mw.wikibase.label( id )
end

-- Return the language code of the label of a given data item.
function p.label_lang(frame)
	local id
    if frame.args[1] == nil then
        entity = mw.wikibase.getEntityObject()
        if not entity then return nil end
        id = entity.id
    else
        id = frame.args[1]
    end
    local _, lang = mw.wikibase.getLabelWithLang(id)
    return lang
end

-- Return the local page about a given data item, optionary in a given wiki.
function p.page(frame)
    if frame.args[1] == nil then
        entity = mw.wikibase.getEntityObject()
        if not entity then return nil end
        id = entity.id
    else
        id = frame.args[1]
    end
    return mw.wikibase.sitelink(id, frame.args[2])
end

-- Return the first value of given property of the item linked to the current page.
function p.firstproperty(frame)
    local property = frame.args[1]
    local entity = mw.wikibase.getEntityObject()
    if not entity then return nil end
    if not entity.claims then return nil end
    local hasProp = entity.claims[property]
    if not hasProp then return nil end
    return hasProp[1].mainsnak.datavalue.value
end

-- Expansion of {{#if:{{#property:...}} }}, returns the first value of given property or nil if not isValidEntityId
function p.validpropertyid(frame)
	return p.validproperty(frame)
end

function p.validproperty(frame)
	local property = frame.args[1]
	local item = frame.args.item or frame.args.from; if item == '' then item = nil end
	local type = frame.args.type or "id"
	local entity = mw.wikibase.getEntityObject(item)
	if not entity then return end
	if not entity.claims then return end
	local hasProp = entity.claims[property]
	if not hasProp then return end
	if not hasProp[1].mainsnak.datavalue then return end
	if type == "value" then return hasProp[1].mainsnak.datavalue.value end
	if not hasProp[1].mainsnak.datavalue.value.id then return end
	if not mw.wikibase.isValidEntityId(hasProp[1].mainsnak.datavalue.value.id) then return end
	return hasProp[1].mainsnak.datavalue.value.id
end

-- Number of statements
function p.numStatements(frame)
	local args = frame.args
	local id = args.item
	if id == '' or id == nil then
		id = mw.wikibase.getEntityIdForCurrentPage()
		if id == nil then
			return 0
		end
	end
	local prop = args[1]
	local num = mw.wikibase.getAllStatements(id, prop)
	return #num
end

return p