Mòdul:Wikibase

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 una cadena buida "".

Exemple, per aquesta pàgina: {{#invoke:wikibase|id}} → 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|Q713246}} → Víctor Balaguer i Cirera

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|Q713246}} → ca

description

Retorna la descripció d'una entitat. Sintaxi:

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

Per defecte retorna la descripció de l'element associat a la pàgina actual. Proporcionant l'id, d'un element Q o propietat P, retornarà la descripció corresponent. Amb un segon paràmetre amb un codi de llengua obté la descripció en la llengua especificada.

Exemple: {{#invoke:wikibase|description|Q713246}} → polític liberal, periodista, escriptor romàntic, poeta, dramaturg i historiador català.

getSiteLink

O l'àlies page, retorna el títol de pàgina local per un element donat. Sintaxi:

{{#invoke:wikibase|getSiteLink|<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 (cawiki, cawiktionary, commonswiki, etc.)

Exemple: {{#invoke:wikibase|getSiteLink|Q713246|cawiki}} → Víctor Balaguer i Cirera

validproperty

Retorna "null" si la propietat no existeix o té un marcador "sense valor" o "valor desconegut". Es pot usar com a alternativa a #property.

Sintaxi:

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

-- Module:Wikibase
local p = {}

-- Return the item ID of the item linked to the current page.
-- mw.wikibase.getEntityIdForCurrentPage
function p.id(frame)
	return mw.wikibase.getEntityIdForCurrentPage()
end

-- Return the label of a given data item, optionally in a given language.
-- mw.wikibase.getLabel, mw.wikibase.getLabelByLang
function p.label(frame)
	local id
	if frame.args[1] == nil then
		id = mw.wikibase.getEntityIdForCurrentPage()
		if not id then return nil end
	else
		id = mw.text.trim(frame.args[1])
	end
	if frame.args[2] then
		return mw.wikibase.getLabelByLang(id, mw.text.trim(frame.args[2]))
	end
	return mw.wikibase.getLabel(id)
end

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

-- Return the description of a given data entity, optionally in a given language.
-- mw.wikibase.getDescription
function p.description(frame)
	local id = frame.args[1] and mw.text.trim(frame.args[1]) or nil
	local lang = frame.args[2] and mw.text.trim(frame.args[2]) or nil
	local entity = mw.wikibase.getEntity(id)
	if not entity then return nil end
	return entity:getDescription(lang)
end

-- Return the local page about a given data item, optionary in a given wiki.
-- mw.wikibase.getSitelink
function p.page(frame) -- alias
	return p.getSiteLink(frame)
end

function p.getSiteLink(frame)
	local id = frame.args[1] and mw.text.trim(frame.args[1])
	if id == nil or id == '' then
		id = mw.wikibase.getEntityIdForCurrentPage()
		if not id then return nil end
	end
	return mw.wikibase.getSitelink(id, mw.text.trim(frame.args[2] or ''))
end

-- Expansion of {{#if:{{#property:...}} }}
-- returns the first value of given property or nil if not found, not isValidEntityId or novalue/somevalue
-- mw.wikibase.isValidEntityId
function p.validproperty(frame)
	local property = mw.text.trim(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.getEntity(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

return p