El módulo "Wikidata" contiene los siguientes métodos, que permiten al script que lo llama recuperar el valor de cualquier propiedad de Wikidata suministrando el ID de la propiedad como primer parámetro:
getValue
: Devuelve valores vinculados a wikis, si corresponde. Todos los demás valores se mostrarán de forma similar a {{#property:}}
, excepto que si existen valores con rango preferido, entonces solo se devolverán esos. A diferencia formatStatements
de w:ru:Модуль:Wikidata, getValue
todavía no recoge ninguna referencia (consulte w:en:Module talk:Wikidata/Archive 1#¿Por qué se descartan las referencias de Wikidata? ).getRawValue
: Devuelve valores de propiedades no vinculadas y números con el separador de miles. También devuelve el valor numérico simple de una propiedad que es una cantidad. Todos los demás valores se mostrarán de manera similar a {{#property:}}
, incluidos los valores normales, incluso si existen valores preferidos.getDateValue
: Método especial para devolver fechas formateadas. El formato de fecha predeterminado es [día, mes, año]; se puede agregar un tercer parámetro opcional para otros formatos de fecha: para [mes, día, año], agregue "mdy"; para [mes, año], agregue "my"; para solo el año, agregue "y". Se puede agregar otro parámetro opcional, que debe ser el cuarto, como "BCE", para anular el "BC" predeterminado que se agrega como sufijo para las fechas BC.getImages
: Devuelve todas las imágenes de una propiedad en particular, por ejemplo, imagen (P18), imagen de Gene Atlas (P692), etc. Los parámetros son | propertyID | value / FETCH_WIKIDATA / nil | separator (default=space) | size (default=220px)
. El texto devuelto tendrá el formato [[Archivo:Nombre de archivo | tamaño]] para cada imagen con un tamaño y un separador seleccionables (que pueden ser html). Si se proporciona una propiedad que no es del tipo "commonsMedia", devolverá texto vacío.getUnits
Este parámetro toma un propertyID que es una cantidad como primer parámetro y devuelve el nombre de las unidades que la propiedad está usando en la página actual. Devuelve un valor vacío si la propiedad no es un tipo de cantidad o si el valor no está establecido. El segundo parámetro se puede usar para anular la obtención de datos desde Wikidata, si es distinto de "FETCH_WIKIDATA".getUnitID
Este parámetro toma un propertyID que es una cantidad como primer parámetro y devuelve el QID de las unidades que la propiedad está usando en la página actual. Devuelve un valor vacío si la propiedad no es un tipo de cantidad o si el valor no está establecido. El segundo parámetro se puede usar para anular la obtención de datos de Wikidata, si es distinto de "FETCH_WIKIDATA".Los valores calificadores de Wikidata (si están presentes) se pueden recuperar mediante los siguientes métodos:
getQualifierValue
: devuelve solo valores vinculados a wiki, si corresponde.getRawQualifierValue
: devuelve valores no vinculadosgetQualifierDateValue
: devuelve fechas formateadasSi la propiedad no está definida en Wikidata para el artículo que invoca este código, se devuelve una cadena vacía ("").
Otros métodos:
pageId
: devuelve el id de Wikidata (Q…) de la página actual o nada si la página no está conectada a Wikidata. Para obtener el id de Wikidata de otra página, utilice {{#invoke:ResolveEntityId| page }} .getTAValue
: obtiene los valores TA98 (Terminologia Anatomica, primera edición, 1998) para la propiedad P1323. No toma parámetros y construye su salida como una lista, con cada valor vinculado a un recurso externo. Este es un ejemplo para escribir llamadas que necesitan devolver vínculos externos.ViewSomething
: obtiene todo lo que hay en los datos estructurados, incluidas etiquetas, descripciones, referencias y enlaces entre wikis. Ver [1]getSiteLink
: obtiene el nombre de una página en el argumento wiki dado (como "enwikiquote" para Wikiquote en inglés, "arwiki" para Wikipedia en árabe).Dump
: {{#invoke:Wikidata|Dump|claims}}
espía los datos estructurados. Utiliza los mismos argumentos que ViewSomething. Prueba esto solo con la vista previa para ver los resultados. Esto te ayuda mucho a desarrollar scripts de Lua que acceden a los datos. Si se usa sin argumentos, vuelca todo, incluidas las etiquetas, las descripciones, las referencias y los enlaces entre wikis. Existe la plantilla contenedora, consulta {{ Dump }} .getImageLegend
: devuelve una leyenda de imagen (la imagen es la propiedad P18; la leyenda de la imagen es la propiedad P2096).{{#invoke:Wikidata |getImageLegend | <PARAMETER> | lang=<ISO-639code> |id=<QID>}}
getValueShortName
: devuelve los mismos datos que getValue, pero utiliza la propiedad short name como etiqueta, si está disponible. Esto permite que los enlaces canalizados utilicen una etiqueta más corta cuando se prefiera. Si no se establece short name en el elemento, se utiliza la etiqueta normal.A partir del 16 de septiembre de 2015, es posible obtener datos de otros artículos utilizando su QID. La siguiente llamada:
{{#invoke:Wikidata|getValueFromID|<QID>|<Property>|FETCH_WIKIDATA}}
hará lo mismo que getValue, pero toma un parámetro adicional, que es el QID del elemento Wikidata del que desea obtener el valor de la propiedad. Por ejemplo:
{{#invoke:Wikidata|getValueFromID|{{Get QID|Richard Burton (actor) }}|P26|FETCH_WIKIDATA}}
obtendrá una lista de los valores vinculados para 'cónyuge' (P26) del título de la página de redirección Richard Burton (actor) (correspondiente a la etiqueta de Wikidata Richard Burton (Q151973)) desde cualquier lugar de la Wikipedia en inglés.
Esto significa que se pueden configurar entornos de prueba en el espacio del usuario, pero recuerde que estas llamadas se clasifican como costosas , por lo que le rogamos que las utilice con la mayor moderación posible.
Tenga en cuenta que la llamada wikibase p123 ya no admite parámetros en minúsculas , por lo que le recomendamos que compruebe que utiliza mayúsculas, como P123, si surgen problemas.
{{#invoke:Wikidata|getValue|P26|}}
= no devuelve nada, por lo que suprime la visualización del cónyuge en un cuadro de información{{#invoke:Wikidata|getValue|P26|FETCH_WIKIDATA}}
= devuelve los valores vinculados de la propiedad P26 (cónyuge) almacenada en wikidata para el artículo correspondiente (por ejemplo, para el artículo Bill Clinton , devuelve Hillary Clinton ){{#invoke:Wikidata|getValue|P26|[[Hillary Rodham Clinton]]}}
= devuelve Hillary Rodham Clinton , lo que permite que un cuadro de información utilice un valor local en lugar del valor almacenado en Wikidata.Dentro de una definición de infobox, se puede llamar así:
| data55 = {{#invoke:Wikidata|getValue|P26|{{{spouse|FETCH_WIKIDATA}}} }}
Lo que hace que el cuadro de información:
|spouse
está configurado en blanco (como "| spouse ="
)|spouse
no se proporciona el parámetro infobox.|spouse
si se proporciona (por ejemplo "|spouse = Hillary Rodham Clinton"
)Opcionalmente se podría llamar como:
| data55 = {{#invoke:Wikidata|getValue|P26|{{{spouse|}}} }}
Lo que hace que el cuadro de información:
|spouse
está configurado en blanco (como "| spouse ="
}|spouse
no se proporciona el parámetro del cuadro de información|spouse
si se proporciona (por ejemplo "|spouse = Hillary Rodham Clinton"
)Consulte Módulo:WikidataIB para obtener una modificación que permite que los campos, en función de cada artículo, se incluyan en la lista negra para que nunca se muestren. También permite al editor especificar, en función de cada artículo, qué campos se pueden obtener automáticamente de Wikidata cuando se proporciona un parámetro local; el valor predeterminado es ninguno, lo que permite modificar un cuadro de información para que acepte Wikidata sin realizar ningún cambio en los artículos que utilizan el cuadro de información hasta que se habilite la funcionalidad en el artículo.
Esto funciona de la misma manera que las llamadas anteriores:
{{#invoke:Wikidata|getValue|P19|}}
= no devuelve nada, por lo que suprime la visualización del lugar de nacimiento en un cuadro de información{{#invoke:Wikidata|getValue|P19|FETCH_WIKIDATA}}
= devuelve los valores vinculados de la propiedad P19 (lugar de nacimiento) almacenados en wikidata para el artículo correspondiente (por ejemplo, para el artículo Bill Clinton , devuelve Hope, Arkansas ){{#invoke:Wikidata|getValue|P19|[[Hope, Arkansas|Hope]]}}
= devuelve Hope , lo que permite que un cuadro de información utilice un valor local en lugar del valor almacenado en Wikidata.No queremos que el valor devuelto esté vinculado, así que usemos:
{{#invoke:Wikidata|getRawValue|P21|FETCH_WIKIDATA}}
Si queremos la fecha de nacimiento en formato dmy utilizamos:
{{#invoke:Wikidata|getDateValue|P569|FETCH_WIKIDATA|dmy}}
Si queremos la fecha de nacimiento en formato mdy usamos:
{{#invoke:Wikidata|getDateValue|P569|FETCH_WIKIDATA|mdy}}
Si queremos un año de nacimiento, utilizamos:
{{#invoke:Wikidata|getDateValue|P569|FETCH_WIKIDATA|y}}
Si queremos un año de nacimiento que puede ser AC, pero debería leerse "BCE", usamos:
{{#invoke:Wikidata|getDateValue|P569|FETCH_WIKIDATA|y|BCE}}
Utilice el siguiente código para recuperar simplemente el Q-ID:
{{#invoke:Wikidata|pageId}}
Para enlazar a Wikidata se utilizó el marcado Wiki habitual:
[[d:{{#invoke:Wikidata|pageId}}|Name of Link]]
Utilice un código como este para vincular a otra wiki. Wikivoyage en inglés en el ejemplo:
[[voy:{{#invoke:Wikidata|getSiteLink|enwikivoyage}}|Name of Link]]
Copie y pegue lo siguiente en cualquier artículo y obtenga una vista previa (¡no lo guarde!):
* - {{ #invocar : Wikidata | obtenerValor | P26 |}} * - {{ #invocar : Wikidata | obtenerValor | P26 | FETCH_WIKIDATA }} * - {{ #invoke : Wikidata | obtenerValor | P26 |[[ Hillary Rodham Clinton ]]}}
En Bill Clinton deberías conseguir:
En Barack Obama deberías conseguir:
En Richard Burton deberías conseguir:
En Franz Kafka deberías conseguir:
Copie y pegue lo siguiente en cualquier artículo y obtenga una vista previa (¡no lo guarde!):
* - {{ #invocar : Wikidata | obtenerValor | P19 |}} * - {{ #invocar : Wikidata | obtenerValor | P19 | FETCH_WIKIDATA }} * - {{ #invoke : Wikidata | obtenerValor | P19 |[[ Newport ]]}}
Pruebe William Ellery y verifique que la llamada a Wikidata desambigua correctamente.
Copie y pegue lo siguiente en cualquier artículo y obtenga una vista previa (¡no lo guarde!):
* - {{ #invocar : Wikidata | obtenerValor | P19 | FETCH_WIKIDATA }} * - {{ #invoke : Wikidata | obtenerValor | P26 | FETCH_WIKIDATA }} * - {{ #invoke : Wikidata | obtenerValor | P27 | FETCH_WIKIDATA }} * - {{ #invoke : Wikidata | obtenerValor | P140 | FETCH_WIKIDATA }} * - {{ #invoke : Wikidata | obtenerValorRaw | P21 | FETCH_WIKIDATA }} * - {{ #invoke : Wikidata | obtenerValorFecha | P569 | FETCH_WIKIDATA | dmy }} * - {{ #invocar : Wikidata | obtenerValorFecha | P569 | FETCH_WIKIDATA | mdy }} * - {{ #invocar : Wikidata | obtenerValorFecha | P569 | FETCH_WIKIDATA | y }}
Esto debería devolver los valores de Wikidata correspondientes al lugar de nacimiento, cónyuge, ciudadanía, religión, género, fecha de nacimiento (dos veces) y año de nacimiento, si existen. La fecha de nacimiento se indica primero en formato dmy y luego en formato mdy.
Copie y pegue lo siguiente en una sección corta del artículo, como Horace #Ver también y obtenga una vista previa (¡no lo guarde!):
* - {{ #invocar : Wikidata | obtenerValorFecha | P569 | FETCH_WIKIDATA | y }} * - {{ #invocar : Wikidata | obtenerValorFecha | P569 | FETCH_WIKIDATA | y | antes de Cristo }}
Esto debería devolver el 65 a. C. y el 65 a. C., respectivamente.
-- vim: set noexpandtab ft=lua ts=4 sw=4: require ( 'strict' ) local p = {} local debug = false ------------------------------------------------------------------------------ -- módulo variables locales y funciones local wiki = { langcode = mw . language . getContentLanguage (). code } -- internacionalización local i18n = { [ "errors" ] = { [ "property-not-found" ] = "Propiedad no encontrada." , [ "entity-not-found" ] = "Entidad Wikidata no encontrada." , [ "unknown-claim-type" ] = "Tipo de reclamo desconocido." , [ "unknown-entity-type" ] = "Tipo de entidad desconocido." , [ "qualifier-not-found" ] = "Calificador no encontrado." , [ "site-not-found" ] = "Proyecto Wikimedia no encontrado." , [ "unknown-datetime-format" ] = "Formato de fecha y hora desconocido." , [ "local-article-not-found" ] = "El artículo aún no está disponible en esta wiki." }, [ "datetime" ] = { -- $1 es un marcador de posición para el número real [ 0 ] = "$1 billón de años" , -- precision: mil millones de años [ 1 ] = "$100 millones de años" , -- precision: cien millones de años [ 2 ] = "$10 millones de años" , -- precision: diez millones de años [ 3 ] = "$1 millón de años" , -- precision: millones de años [ 4 ] = "$100,000 años" , -- precision: cien mil años [ 5 ] = "$10,000 años" , -- precision:diez mil años [ 6 ] = "$1 milenio" , -- precisión: milenio [ 7 ] = "$1 siglo" , -- precisión: siglo [ 8 ] = "$1s" , -- precisión: década -- lo siguiente usa el formato de la función del analizador #time [ 9 ] = "Y" , -- precisión: año, [ 10 ] = "F Y" , -- precisión: mes [ 11 ] = "F j, Y" , -- precisión: día [ 12 ] = "F j, Y ga" , -- precisión: hora [ 13 ] = "F j, Y g:ia" , -- precisión: minuto [ 14 ] = "F j, Y g:i:sa" , -- precisión: segundo [ "beforenow" ] = "$1 BCE" , -- cómo formatear números negativos para precisiones de 0 a 5 [ "afternow" ] = "$1 CE" , -- cómo formatear números positivos para precisiones de 0 a 5 [ "bc" ] = '$1 "BCE"' , -- cómo imprimir años negativos [ "ad" ] = "$1" , -- cómo imprimir años positivos -- los siguientes son para las funciones getDateValue() y getQualifierDateValue() [ "default-format" ] = "dmy" , -- valor predeterminado del argumento #3 (getDateValue) o -- #4 (getQualifierDateValue) [ "default-addon" ] = "BC" , -- valor predeterminado del argumento #4 (getDateValue) o -- #5 (getQualifierDateValue) [ "prefix-addon" ] = false , -- establecido en verdadero para idiomas ponga "BC" delante de la -- cadena de fecha y hora; o el complemento tendrá sufijo [ "addon-sep" ] = " " , -- separador entre la cadena de fecha y hora y el complemento (o inverso) [ "format" ] = -- opciones del tercer argumento { [ "mdy" ] = "F j, Y" ,[ "mi" ] = "F Y" , [ "y" ] = "Y" , [ "dmy" ] = "j F Y" , [ "ymd" ] = "Ymd" , [ "ym" ] = "Ym" } }, [ "monolingualtext" ] = '<span lang="%language">%text</span>' , [ "warnDump" ] = "[[Categoría:Función llamada 'Dump' desde el módulo Wikidata]]" , [ "ordinal" ] = { [ 1 ] = "st" , [ 2 ] = "nd" , [ 3 ] = "rd" , [ "default" ] = "th" } } if wiki . langcode ~= "en" then --require("Module:i18n").loadI18n("Module:Wikidata/i18n", i18n) -- obtuve la idea de [[:w:Module:Wd]] local module_title ; if ... == nil then module_title = mw . getCurrentFrame (): getTitle () else module_title = ... end require ( 'Module:i18n' ). loadI18n ( module_title .. '/i18n' , i18n ) end -- esta función necesita ser internacionalizada junto con las anteriores: -- toma el número cardinal como un numérico y devuelve el ordinal como una cadena -- necesitamos tres excepciones en inglés para 1º, 2º, 3º, 21º, .. 31º, etc. local function makeOrdinal ( cardinal ) local ordsuffix = i18n . ordinal . predeterminado si cardinal % 10 == 1 entonces ordsuffix = i18n . ordinal [ 1 ] de lo contrario si cardinal % 10 == 2 entonces ordsuffix = i18n .ordinal [ 2 ] de lo contrario si cardinal % 10 == 3 entonces sufijo_ordinal = i18n . ordinal [ 3 ] fin -- En inglés, 1, 21, 31, etc. usan 'st', pero 11, 111, etc. usan 'th' -- de manera similar para 12 y 13, etc. si ( cardinal % 100 == 11 ) o ( cardinal % 100 == 12 ) o ( cardinal % 100 == 13 ) entonces ordsuffix = i18n . ordinal . predeterminado fin retorno tostring ( cardinal ) .. ordsuffix fin función local printError ( código ) retorno '<span class="error">' .. ( i18n . errors [ código ] o código ) .. '</span>' fin función local parseDateFormat ( f , timestamp , addon , prefix_addon , addon_sep ) sufijo_año local tstr local = "" objeto_idioma local = mw . idioma . nuevo ( wiki . código_idioma ) partes_f locales = mw . texto . split ( f , 'Y' , true ) para idx , f_part en pares ( f_parts ) hacer year_suffix = '' si string.match ( f_part , "x[mijkot]$" ) entonces -- para año no gregoriano f_part = f_part .. 'Y' de lo contrario si idx < # f_parts entonces -- suprimir ceros iniciales en el año year_suffix = lang_obj : formatDate ( 'Y' , timestamp ) year_suffix = string.gsub ( year_suffix , '^0+' , '' , 1 ) fin tstr = tstr .. lang_obj : formatDate ( f_part , timestamp ) .. year_suffix fin si addon ~= "" y prefix_addon entonces devuelve addon .. addon_sep .. tstr de lo contrario si addon ~= "" entonces devuelve tstr .. addon_sep .. addon de lo contrario devuelve tstr fin fin función local parseDateValue ( timestamp , date_format , date_addon ) prefix_addon local = i18n [ "datetime" ][ "prefix-addon" ] addon_sep local = i18n [ "datetime" ][ "addon-sep" ] addon local = "" -- comprobar fecha negativa si string.sub ( timestamp , 1 , 1 ) == '-' entonces timestamp = '+' .. string.sub ( timestamp , 2 ) addon = date_addon end local _date_format = i18n [ "datetime" ][ "format" ][ date_format ] if _date_format ~= nil then return parseDateFormat ( _date_format , timestamp , addon , prefix_addon , addon_sep ) else return printError ( "unknown-datetime-format" ) end end -- Esta función local combina el manejo de año/mes/día/AC/AEC de parseDateValue{} -- con el manejo de milenio/siglo/década de formatDate() función local parseDateFull ( timestamp , precision ,formato_de_fecha , date_addon ) local prefix_addon = i18n [ "datetime" ][ "prefix-addon" ] local addon_sep = i18n [ " datetime" ][ "addon-sep" ] local addon = "" -- comprobar fecha negativa if string.sub ( timestamp , 1 , 1 ) == '-' then timestamp = '+' .. string.sub ( timestamp , 2 ) addon = date_addon end -- obtener los siguientes cuatro caracteres después del + (ahora debería ser el año en todos los casos) -- ok, esto es sucio, pero hagámoslo funcionar primero local intyear = tonumber ( string.sub ( timestamp , 2 , 5 )) if intyear == 0 and precision <= 9 then return "" end -- la precisión es de 10000 años o más if precision <= 5 then local factor = 10 ^ (( 5 - precision ) + 4 ) local y2 = math.ceil ( math.abs ( intyear ) / factor ) local relativo = mw.ustring.gsub ( i18n.datetime [ precisión ] , " $ 1 " , tostring ( y2 ) ) si addon ~ = " " entonces -- fecha negativa relativo = mw.ustring.gsub ( i18n.datetime.beforenow , " $ 1 " , relativo ) de lo contrario relativo = mw.ustring.gsub ( i18n.datetime.afternow , "$1" , relativo ) fin devuelve relativo fin -- la precisión es décadas (8), siglos (7) y milenios (6) era local , tarjeta si precisión == 6 entonces tarjeta = math.floor (( intyear - 1 ) / 1000 ) + 1 era = mw . ustring . gsub ( i18n . datetime [ 6 ], "$1" , makeOrdinal ( tarjeta )) fin si precisión == 7 entonces tarjeta = math.floor (( intyear - 1 ) / 100 ) + 1 era = mw . ustring . gsub ( i18n . datetime [ 7 ], "$1" , makeOrdinal ( tarjeta )) fin si precisión == 8 entonces era = mw . ustring . gsub ( i18n.datetime [ 8 ] , " $ 1 " , tostring ( math.floor ( math.abs ( intyear ) / 10 ) * 10 ) ) fin si era entonces si addon ~ = " " entonces era = mw.ustring.gsub ( mw.ustring.gsub ( i18n.datetime.bc , ' " ' , " " ) , " $ 1 " , era ) de lo contrario era = mw.ustring.gsub ( mw.ustring.gsub ( i18n.datetime.ad , '"' , "" ), "$1" , era ) end return era end local _date_format = i18n [ "datetime" ][ "format" ][ date_format ] if _date_format ~= nil then -- verifica que la precisión sea año y anula el date_format suministrado if precision == 9 then _date_format = i18n [ "datetime" ][ 9 ] end return parseDateFormat ( _date_format , timestamp , addon , prefix_addon , addon_sep ) else return printError ( "unknown-datetime-format" ) end end -- los campos "qualifiers" y "snaks" tienen un campo "qualifiers-order" y "snaks-order" respectivos -- usa estos como el segundo parámetro y esta función en lugar de la función "pairs" incorporada -- para iterar sobre todos los calificadores y snaks en el orden deseado. función local orderedpairs ( matriz , orden ) si no es orden entonces devuelve pairs ( matriz ) fin -- devuelve iterador función local i = 0 devuelve función () i = i + 1 si orden [ i ] entonces devuelve orden [ i ], matriz [ orden [ i ]] fin fin fin -- precisión: 0 - mil millones de años, 1 - cien millones de años, ..., 6 - milenios, 7 - siglo, 8 - década, 9 - año, 10 - mes, 11 - día, 12 - hora, 13 - minuto, 14 - segundo función local normalizeDate ( fecha ) fecha = mw.text.trim ( fecha , " + " ) -- extrae año local yearstr = mw.ustring .fósforo ( fecha , "^ \ - ? % d +" ) año local = tonumber ( yearstr ) -- elimina los ceros iniciales del año return year .. mw.ustring.sub ( date , # yearsstr + 1 ) , año end función local formatDate ( date , precision , timezone ) precision = precision o 11 fecha local , año = normalizeDate ( date ) si año == 0 y precisión <= 9 entonces return "" end -- la precisión es 10000 años o más si precisión <= 5 entonces factor local = 10 ^ (( 5 - precisión ) + 4 ) y2 local = math.ceil ( math.abs ( year ) / factor ) relativo local = mw.ustring.gsub ( i18n.datetime [ precisión ] , " $ 1 " , tostring ( y2 ) ) si año < 0 entonces relativo = mw.ustring . gsub ( i18n . datetime . beforenow , "$1" , relative ) else relative = mw . ustring . gsub ( i18n . datetime . afternow , "$1" , relative ) end return relative end -- la precisión es décadas, siglos y milenios era local si precisión == 6 entonces era = mw . ustring . gsub ( i18n . datetime [ 6 ], "$1" , tostring ( math. floor (( math. abs ( año ) - 1 ) / 1000 ) + 1 )) fin si precisión == 7 entonces era = mw . ustring . gsub ( i18n . datetime [ 7 ], "$1" , tostring ( math. floor (( math. abs ( año ) - 1 ) / 100 ) + 1 )) fin si precisión == 8 entonces era = mw . ustring . gsub ( i18n . datetime [ 8 ], "$1" , tostring ( math. floor ( math. abs ( año ) / 10 ) * 10 )) fin si era entonces si año < 0 entonces era = mw . ustring . gsub ( mw . ustring . gsub ( i18n . datetime . bc , '"' , "" ), "$1" , era ) de lo contrario si año > 0 entonces era = mw . ustring . gsub ( mw . ustring . gsub ( i18n . datetime . ad , '"' , "" ), "$1" , era ) fin devolver era fin -- la precisión es año si precisión == 9 entonces devolver año fin -- la precisión es menor que años si precisión > 9 entonces --[[ el siguiente código reemplaza el sufijo UTC con la zona horaria negada dada para convertir la hora global a la hora local dada timezone = tonumber(timezone) if timezone and timezone ~= 0 then timezone = -timezone timezone = string.format("%.2d%.2d", timezone / 60, timezone % 60) if timezone[1] ~= '-' then timezone = "+" .. timezone end date = mw.text.trim( date , "Z") .. " " .. timezone end ] ] -- local formatstr = i18n .datetime [ precisión ] if year == 0 then formatstr = mw .ustring .gsub ( formatstr , i18n .datetime [ 9 ] , " " ) elseif year < 0 then -- Mediawiki formatDate no admite años negativos date = mw . ustring . sub ( fecha , 2 ) formatstr = mw . ustring . gsub ( formatstr , i18n . datetime [ 9 ], mw . ustring . gsub ( i18n . datetime . bc , "$1" , i18n . datetime [ 9 ])) de lo contrario si año > 0 y i18n . datetime . ad ~= "$1" entonces formatstr = mw . ustring . gsub ( formatstr , i18n . datetime [ 9 ], mw . ustring . gsub ( i18n . datetime . ad , "$1" , i18n . datetime [ 9 ])) fin devolver mw . idioma . new ( wiki . langcode ): formatDate ( formatstr , fecha ) end end local function printDatavalueEntity ( datos , parámetro ) -- campos de datos: tipo-entidad [string], id-numérico [int, id Wikidata] id local if datos [ "tipo-entidad" ] == "ítem" then id = "Q" .. datos [ "id-numérico" ] elseif datos [ "tipo-entidad" ] == "propiedad" then id = "P" .. datos [ "id-numérico" ] else return printError ( "tipo-entidad-desconocido" ) end if parámetro then if parámetro == "link" then local linkTarget = mw . wikibase . getSitelink ( id ) local linkName = mw . wikibase . getLabel ( id ) if linkTarget then -- si hay un artículo de Wikipedia local que enlaza a él usando la etiqueta o el título del artículo return "[[" .. linkTarget .. "|" .. ( linkName o linkTarget ) .. "]]" else -- si no hay ningún artículo de Wikipedia local muestra la etiqueta o el enlace al objeto Wikidata para permitir al usuario introducir una etiqueta adecuada if linkName then return linkName else return "[[:d:" .. id .. "|" .. id .. "]]" end end else return data [ parameter ] end else return mw . wikibase .getLabel ( id ) o id fin fin función local printDatavalueTime ( datos , parámetro ) -- campos de datos: hora [hora ISO 8601], zona horaria [int en minutos], antes [int], después [int], precisión [int], calendarmodel [URI de wikidata] -- precisión: 0 - mil millones de años, 1 - cien millones de años, ..., 6 - milenios, 7 - siglo, 8 - década, 9 - año, 10 - mes, 11 - día, 12 - hora, 13 - minuto, 14 - segundo -- calendarmodel: p. ej. http://www.wikidata.org/entity/Q1985727 para el calendario gregoriano proléptico o http://www.wikidata.org/wiki/Module:Wikidata/Q11184 para el calendario juliano ] si parámetro entonces si parámetro == " calendarmodel " entonces datos.calendarmodel = mw.ustring . match ( data.calendarmodel , " Q%d+" ) - extrae el id de la entidad del URI del modelo de calendario elseif parameter == " time " then data.time = normalizeDate ( data.time ) end return data [ parámetro ] else return formatDate ( data.time , data.precision , data.timezone ) end end local function printDatavalueMonolingualText ( data , parameter ) - campos de datos : language [ string ], text [ string] if parameter then return data [ parámetro ] else local result = mw.ustring.gsub ( mw.ustring.gsub ( i18n.monolingualtext , "%%language" , data [ " language " ] ), " %% text " , data [ " text " ] ) return result end end local function findClaims ( entity , property ) if not property or not entity or not entity . claims entonces devuelve fin si mw . ustring . match ( propiedad , "^P%d+$" ) entonces -- si la propiedad es dada por un id (P..) accede a la lista de reclamaciones por este id devuelve entidad . claims [ propiedad ] de lo contrario propiedad = mw . wikibase . resolvePropertyId ( propiedad ) si no propiedad entonces devuelve fin devuelve entidad . claims [ propiedad ] fin fin función local getSnakValue ( snak , parámetro ) si snak . snaktype == "valor" entonces -- llama al analizador snak respectivo si snak . datavalue . type == "string" entonces devuelve snak . datavalue . value de lo contrario si snak . datavalue . type == "globecoordinate" entonces devuelve printDatavalueCoordinate ( snak . datavalue . value , parámetro ) de lo contrario si snak . datavalue . escriba == "cantidad" y luego devuelva printDatavalueQuantity ( snak . datavalue . valor , parámetro ) elseif snak . valor de datos . escriba == "hora" y luego devuelva printDatavalueTime ( snak . datavalue . valor , parámetro ) elseif snak . valor de datos . escriba == "wikibase-entityid" y luego devuelva printDatavalueEntity ( snak . datavalue . valor , parámetro ) elseif snak . datavalue . type == "monolingualtext" then return printDatavalueMonolingualText ( snak . datavalue . value , parameter ) end end return mw . wikibase . renderSnak ( snak ) end local function getQualifierSnak ( claim , qualifierId ) -- un "snak" es la terminología de Wikidata para un par clave/valor tipificado -- un claim consiste en un snak principal que contiene la información principal de este claim, -- así como una lista de atributos snaks y una lista de referencias snaks if qualifierId then -- busca el atributo snak con el calificador dado como clave if claim . qualifiers then local qualifier = claim . calificadores [ qualifierId ] si calificador entonces devuelve calificador [ 1 ] fin fin devuelve nil , printError ( "calificador-no-encontrado" ) de lo contrario -- de lo contrario devuelve el snak principal devuelve claim . mainsnak fin fin función local getValueOfClaim ( claim , qualifierId , parámetro ) error local snak local snak , error = getQualifierSnak ( claim , qualifierId ) si snak entonces devuelve getSnakValue ( snak , parámetro ) de lo contrario devuelve nil , error fin fin función local getReferences ( frame , claim ) resultado local = "" -- recorre todas las referencias para ref en pares ( claim . references o {}) hacer refparts locales -- recorre todas las partes de la referencia actual para snakkey, snakval en pares ordenados (claim.references[ref].snaks o {}, claim.references[ref ] [ " snaks - order " ] ) do if refparts then refparts = refparts .. " , " else refparts = " " end -- genera la etiqueta de la propiedad de la parte de referencia, por ejemplo, "importado desde" para P143 refparts = refparts .. tostring ( mw.wikibase.getLabel ( snakkey ) ) .. " : " -- genera todos los valores de esta parte de referencia, por ejemplo , "Wikipedia en alemán" y "Wikipedia en inglés" si el claim referenciado se importó desde ambos sitios para snakidx = 1 , # snakval do if snakidx > 1 then refparts = refparts .. ", " end refparts = refparts .. getSnakValue ( snakval [ snakidx ] ) fin fin si refparts entonces resultado = resultado..marco : extensionTag ( " ref " , refparts ) fin fin devolver resultado fin función local parseInput ( marco ) qid local = marco.args.qid si qid y ( # qid == 0 ) entonces qid = nil fin local propertyID = mw.text.trim ( marco.args [ 1 ] o " " ) parámetro_entrada local = mw.text.trim ( frame . args [ 2 ] o "" ) si input_parm ~= "FETCH_WIKIDATA" entonces devuelve false , input_parm , nil , nil fin entidad local = mw . wikibase . getEntity ( qid ) reclamos locales si entidad y entidad . reclamos entonces reclamos = entidad . reclamos [ propertyID ] si no reclamos entonces devuelve false , "" , nil , nil fin de lo contrario devuelve false , "" , nil , nil fin devuelve true , entidad , reclamos , propertyID fin función local isType ( reclamos , tipo ) devuelve reclamos [ 1 ] y reclamos [ 1 ]. mainsnak . snaktype == "valor" y reclamos [ 1 ]. mainsnak . datavalue . tipo == tipo fin función local obtenerValor ( entidad , reclamaciones , propertyID , delim , labelHook ) si labelHook == nulo entonces labelHook = función ( qnumber ) devuelve nulo ; fin fin si esTipo ( reclamaciones , "wikibase-entityid" ) entonces local salida = {} para k , v en pares ( reclamaciones ) hacer local qnumber = "Q" .. v . mainsnak . datavalue . value [ "numeric-id" ] enlace de sitio local = mw . wikibase . getSitelink ( qnumber ) etiqueta local = labelHook ( qnumber ) o mw . wikibase . getLabel ( qnumber ) o qnumber si enlace de sitio entonces out [ # out + 1 ] = "[[" .. enlace de sitio .. "|" .. etiqueta .. "]]" de lo contrario out [ # out + 1 ] = "[[:d:" .. qnumber .. "|" .. etiqueta .. "]]<abbr title='" .. i18n [ "errores" ][ "artículo-local-no-encontrado" ] .. "'>[*]</abbr>" fin fin return table. concat ( out , delim ) de lo contrario -- solo devuelve los mejores valores return entity : formatPropertyValues ( propertyID ). valor fin fin ------------------------------------------------------------------------------ -- módulo funciones globales si depurar entonces función p . inspeccionarI18n ( marco ) local val = i18n para _ , clave en pares ( marco . argumentos ) hacer clave = mw . texto . trim ( clave ) val = val [ clave ] fin devolver val fin fin función p . descripciónIn ( marco ) local código de idioma = marco . argumentos [ 1 ] local id = marco . args [ 2 ] - devuelve la descripción de una entidad Wikidata en el idioma dado o el idioma predeterminado de este sitio de Wikipedia devuelve mw . wikibase . getEntity ( id ): getDescription ( langcode o wiki . langcode ) función final p . labelIn ( marco ) código de idioma local = marco . args [ 1 ] identificación local = marco . args [ 2 ] - etiqueta de retorno de una entidad Wikidata en el idioma dado o el idioma predeterminado de este sitio de Wikipedia devuelve mw . wikibase . getEntity ( id ): getLabel ( langcode o wiki . langcode ) end : esto se usa para obtener un valor, o una lista de ellos separados por comas si existen varios valores p . getValue = función ( marco ) local delimdefault = "," - **internacionalizar más tarde** local delim = marco . argumentos . delimitador o "" delim = string.gsub ( delim , '"' , '' ) si # delim == 0 entonces delim = delimdefault fin local go , errorOrentity , claims , propertyID = parseInput ( frame ) si no go entonces devuelve errorOrentity fin return getValue ( errorOrentity , claims , propertyID , delim ) end -- Igual que el anterior, pero utiliza la propiedad de nombre corto para la etiqueta si está disponible. p . getValueShortName = function ( frame ) local go , errorOrentity , claims , propertyID = parseInput ( frame ) si no go entonces devuelve errorOrentity fin entidad local = errorOrentity -- si el valor está vinculado a una wiki se genera como un enlace si es posible función local labelHook ( qnumber ) etiqueta local claimEntity local = mw . wikibase . getEntity ( qnumber ) si claimEntity ~= nil entonces si claimEntity . claims . P1813 entonces para k2 , v2 en pares ( claimEntity . claims . P1813 ) hacer si v2 . mainsnak . datavalue . value . language == "en" entonces etiqueta = v2 . mainsnak . datavalue . value . text fin fin fin fin si etiqueta == nil o etiqueta == " " entonces devuelve nil fin devuelve etiqueta fin devuelve getValue ( errorOrentity , claims , propertyID , ", " , labelHook ); fin -- Esto se usa para obtener un valor, o una lista de ellos separados por comas si existen múltiples valores -- de una entrada arbitraria usando su QID. -- Uso: {{#invoke:Wikidata|getValueFromID|<ID>|<Propiedad>|FETCH_WIKIDATA}} -- Por ejemplo: {{#invoke:Wikidata|getValueFromID|Q151973|P26|FETCH_WIKIDATA}} - para obtener el valor de 'cónyuge' (P26) de 'Richard Burton' (Q151973) -- Úselo con moderación - esta es una *llamada costosa*. p . getValueFromID = function ( frame ) local itemID = mw . text . trim ( frame . args [ 1 ] o "" ) local propertyID = mw . text . trim ( frame . args [ 2 ] o "" ) local input_parm = mw . text . trim ( frame . args [ 3 ] o "" ) si input_parm == "FETCH_WIKIDATA" entonces local entity = mw . wikibase . getEntity ( itemID ) local claims si entity y entity . claims entonces claims = entity . claims [ propertyID ] fin si claims entonces return getValue ( entity , claims , propertyID , ", " ) de lo contrario return "" fin de lo contrario return input_parm fin fin función local getQualifier ( frame , outputHook ) local propertyID = mw . text . trim ( frame . args [ 1 ] o "" ) local qualifierID = mw . text . trim ( frame.args [ 2 ] o " " ) parámetro_de_entrada local = mw.text.trim ( frame.args [ 3 ] o " " ) si parámetro_de_entrada == " FETCH_WIKIDATA " entonces entidad local = mw.wikibase.getEntity ( ) si entidad.reclamos [ propiedadID ] ~= nil entonces local out = { } para k , v en pares ( entidad.reclamos [ propiedadID ] ) hacer para k2 , v2 en pares ( v.calificadores [ calificadorID ] ) hacer si v2.snaktype == 'valor' entonces out [ #out + 1 ] = outputHook ( v2 ) ; fin fin fin devolver table.concat ( salida , ", " ), verdadero de lo contrario devolver " " , falso fin de lo contrario devolver input_parm , falso fin fin p.getQualifierValue = función ( marco ) función local outputValue ( valor ) local qnumber = " Q " .. valor.valordatos.valor [ " id - numérico " ] si ( mw.wikibase.getSitelink ( qnumber ) ) entonces devolver " [ [ " .. mw.wikibase . getSitelink ( qnumber ) .. "]]" else return "[[:d:" .. qnumber .. "|" .. qnumber .. "]]<abbr title='" .. i18n [ "errors" ][ "local-article-not-found" ] .. "'>[*]</abbr>" end end return ( getQualifier ( frame , outputValue )) end -- Esto se usa para obtener un valor como 'male' (para la propiedad p21) que no se vinculará y números sin los separadores de miles p .getRawValue = función ( marco ) local go , errorOrentity , claims , propertyID = parseInput ( frame ) if not go then return errorOrentity end local entity = errorOrentity local result = entity : formatPropertyValues ( propertyID , mw . wikibase . entity . claimRanks ). value -- if number type: elimina separadores de miles, límites y unidades if isType ( claims , "quantity" ) then result = mw . ustring . gsub ( result , "(%d),(%d)" , "%1%2" ) result = mw . ustring . gsub ( result , "(%d)±.*" , "%1" ) end return result end -- Esto se utiliza para obtener el nombre de la unidad para el valor numérico devuelto por getRawValue p . getUnits = function ( frame ) local go , errorOrentity , claims , propertyID = parseInput ( frame ) si no go entonces devuelve errorOrentity fin entidad local = errorOrentity resultado local = entidad : formatPropertyValues ( propertyID , mw . wikibase . entity . claimRanks ). value si isType ( claims , "quantity" ) entonces resultado = mw . ustring . sub ( resultado , mw . ustring . find ( resultado , " " ) + 1 , - 1 ) fin return result end -- Esto se usa para obtener el QID de la unidad para usar con el valor numérico devuelto por getRawValue p . getUnitID = function ( frame ) local go , errorOrentity , claims = parseInput ( frame ) if not go then return errorOrentity end local entity = errorOrentity local result if isType ( claims , "quantity" ) then -- obtiene la URL de la entrada de la unidad en Wikidata: result = claims [ 1 ]. mainsnak . datavalue . value . unit -- y solo devuelve el último bit desde "Q" hasta el final (que es el QID): result = mw . ustring . sub ( result , mw . ustring . find ( result , "Q" ), - 1 ) end return result end p . getRawQualifierValue = function ( frame ) local function outputHook ( value ) if value . datavalue . valor [ "numeric-id" ] entonces devuelve mw . wikibase . getLabel ( "Q" .. valor . valordatos . valor [ "numeric-id" ]) de lo contrario devuelve valor . valordatos . valor fin fin local ret , gotData = getQualifier ( frame , outputHook ) si gotData entonces ret = string.upper ( string.sub ( ret , 1 , 1 )) .. string.sub ( ret , 2 ) fin devuelve ret fin - Esto se utiliza para obtener un valor de fecha para date_of_birth (P569), etc. que no se vinculará - Las fechas y horas se almacenan en formato ISO 8601 (más o menos). - En la actualidad, la función local formatDate(date, precision, timezone) no maneja la zona horaria - Por lo tanto, solo proporcionaré "Z" en la llamada a formatDate a continuación: p . getDateValue = function ( frame ) local date_format = mw . text . trim ( frame . args [ 3 ] o i18n [ "datetime" ][ "default-format" ]) local date_addon = mw . text . trim ( frame.args [ 4 ] o i18n [ "datetime" ][ "default-addon" ]) local go , errorOrentity , claims = parseInput ( frame ) si no go entonces devuelve errorOrentity fin local entidad = errorOrentity local out = { } para k , v en pares ( claims ) hacer si v.mainsnak.datavalue.type == 'time' entonces local timestamp = v.mainsnak.datavalue.value.time local dateprecision = v.mainsnak.datavalue.value.precision -- Un año se puede almacenar así: "+1872-00-00T00:00:00Z", -- que se procesa aquí como si fuera el día anterior a "+1872-01-01T00:00:00Z", -- y ese es el último día de 1871, por lo que el año está mal. -- Por lo tanto, arregle la marca de tiempo del mes 0, día 0 para que sea el 1 de enero: timestamp = timestamp : gsub ( "%-00%-00T" , "-01-01T" ) out [ # out + 1 ] = parseDateFull ( timestamp , dateprecision , date_format , date_addon ) end end return table.concat ( out , ", " ) end p . getQualifierDateValue = function ( frame ) local date_format = mw . text . trim ( frame . args [ 4 ] o i18n [ "datetime" ][ "default-format" ]) local date_addon = mw . text . trim ( frame . args [ 5 ] o i18n [ "datetime" ][ "default-addon" ]) local function outputHook ( value ) local timestamp = value . datavalue . value . tiempo retorno parseDateValue ( timestamp , date_format , date_addon ) fin retorno ( getQualifier ( frame , outputHook )) fin - Esto se utiliza para obtener todas las imágenes con una propiedad particular, por ejemplo imagen (P18), imagen de Gene Atlas (P692), etc. - Los parámetros son | propertyID | valor / FETCH_WIKIDATA / nulo | separador (predeterminado=espacio) | tamaño (predeterminado=sin marco) - Devolverá un marcado wiki estándar [[Archivo:Nombre de archivo | tamaño]] para cada imagen con un tamaño seleccionable y un separador (que puede ser html) -- p.ej. {{#invoke:Wikidata|getImages|P18|FETCH_WIKIDATA}} -- p.ej. {{#invoke:Wikidata|getImages|P18|FETCH_WIKIDATA|<br>|250px}} -- Si se elige una propiedad que no es del tipo "commonsMedia", devolverá texto vacío. p . getImages = function ( frame ) local sep = mw . text . trim ( frame . args [ 3 ] o " " ) imgsize local = mw . text . trim ( frame . args [ 4 ] o "frameless" ) go local , errorOrentity , claims = parseInput ( frame ) si no go entonces devuelve errorOrentity fin entidad local = errorOrentity si ( claims [ 1 ] y claims [ 1 ]. mainsnak . datatype == "commonsMedia" ) entonces salida local = {} para k , v en pares ( claims ) hacer nombre_archivo local = v . mainsnak . datavalue . value salida [ # salida + 1 ] = "[[Archivo:" .. nombre_archivo .. "|" .. imgsize .. "]]" end return table.concat ( out , sep ) else return "" end end -- Esto se usa para obtener los valores TA98 (Terminologia Anatomica primera edición 1998) como 'A01.1.00.005' (propiedad P1323) -- que luego se vinculan a https://ifaa.unifr.ch/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/01.1.00.005%20Entity%20TA98%20EN.htm -- usa las llamadas más nuevas de mw.wikibase en lugar de usar directamente los snaks -- formatPropertyValues devuelve una tabla con los valores P1323 concatenados con "," por lo que tenemos que dividirlos en una tabla para construir la cadena de retorno p . getTAValue = función ( marco ) local ent = mw . wikibase . getEntity () accesorios locales = ent : formatPropertyValues ( 'P1323' ) salida local = {} local t = { } para k , v en pares ( props ) hacer si k == ' valor' entonces t = mw.texto . split ( v , ", " ) para k2 , v2 en pares ( t ) hacer out [ # out + 1 ] = "[https://ifaa.unifr.ch/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/" .. string.sub ( v2 , 2 ) .. "%20Entity%20TA98%20EN.htm " .. v2 .. "]" end end end local ret = table.concat ( out , "<br> " ) if # ret == 0 then ret = "TA no válida" end return ret end --[[ Esto se usa para devolver una leyenda de imagen de Wikidata la imagen es propiedad P18 la leyenda de imagen es propiedad P2096 Llamar como {{#invoke:Wikidata |getImageLegend | <PARAMETER> | lang=<código ISO-639> |id=<QID>}} Devuelve PARÁMETRO, a menos que sea igual a "FETCH_WIKIDATA", del QID del artículo (llamada costosa) Si se omite QID o está en blanco, se usa el artículo actual (no es una llamada costosa) Si se omite lang, usa el idioma wiki local; de lo contrario, usa el código de idioma ISO-639 proporcionado ISO-639: https://docs.oracle.com/cd/E13214_01/wli/docs92/xref/xqisocodes.html#wp1252447 Los rangos son: 'preferido' > 'normal' Esto devuelve la etiqueta de la primera imagen con rango 'preferido' O la etiqueta de la primera imagen con rango 'normal' si se prefiere no devuelve nada Rangos: https://www.mediawiki.org/wiki/Module:Wikidata/Extension:Wikibase_Client/Lua ]] p . getImageLegend = function ( frame ) -- busca el parámetro nombrado id; si está en blanco, conviértalo en nulo id local = frame . args .id si id y ( # id == 0 ) entonces id = nulo fin -- busca el parámetro nombrado lang -- debe contener un código de idioma ISO-639 de dos caracteres -- si está en blanco, busca el idioma del wiki local local lang = frame . args . lang if ( not lang ) or ( # lang < 2 ) then lang = mw . language . getContentLanguage (). code end -- el primer parámetro sin nombre es el parámetro local, si se proporciona local input_parm = mw . text . trim ( frame . args [ 1 ] or "" ) if input_parm == "FETCH_WIKIDATA" then local ent = mw . wikibase . getEntity ( id ) local imgs if ent and ent . claims then imgs = ent . claims . P18 fin local imglbl si imgs entonces -- busca una imagen con rango ' preferido ' para k1 , v1 en pares ( imgs ) hacer si v1.rank == " preferido " y v1.calificadores y v1.calificadores . P2096 entonces local imglbls = v1.calificadores . P2096 para k2 , v2 en pares ( imglbls ) hacer si v2.datavalue.value.language == lang entonces imglbl = v2.datavalue.value.text break fin fin fin fin -- si no encontramos una , buscamos una imagen con rango ' normal ' si ( no immlbl ) entonces para k1 , v1 en pares ( imgs ) hacer si v1 . rank == "normal" y v1 . calificadores y v1 . calificadores . P2096 entonces local immlbls = v1 . calificadores . P2096 para k2 , v2 en pares ( imglbls ) hacer si v2 . datavalue . value . language == lang entonces immlbl = v2 . datavalue . value . salto de texto fin fin fin fin fin fin fin devolver imglbl else devolver input_parm fin fin -- Esto se utiliza para obtener los QID de todos los valores de una propiedad, como una lista separada por comas si existen múltiples valores -- Uso: {{#invoke:Wikidata |getPropertyIDs |<PropertyID> |FETCH_WIKIDATA}} -- Uso: {{#invoke:Wikidata |getPropertyIDs |<PropertyID> |<InputParameter> |qid=<QID>}} p . getPropertyIDs = function ( frame ) local go , errorOrentity , propclaims = parseInput ( frame ) si no go entonces devuelve errorOrentity fin local entity = errorOrentity -- si está vinculado a wiki value recopila el QID en una tabla if ( propclaims [ 1 ] y propclaims [ 1 ]. mainsnak . snaktype == "value" y propclaims [ 1 ]. mainsnak . datavalue . type == "wikibase-entityid" ) entonces local out = {} para k , v en pares ( propclaims ) hacer salida [ # salida + 1 ] = "Q" .. v . serpiente principal . valor de datos . value [ "numeric-id" ] end return table.concat ( out , ", " ) else - no es un wikibase-entityid, por lo que devuelve vacío return "" end end - devuelve la identificación de la página (Q...) de la página actual o nada de la página no está conectado a la función Wikidata p . pageId ( marco ) devuelve mw . wikibase . getEntityIdForCurrentPage () función final p . reclamo ( marco ) propiedad local = marco . args [ 1 ] o "" id local = marco . args [ "id" ] calificadorId local = marco . args [ "calificador" ] parámetro local = marco . args [ "parámetro" ] lista local = marco . args [ "lista" ] referencias locales = marco . args [ "referencias" ] local showerrors = frame . args [ "showerrors" ] local predeterminado = frame . args [ "predeterminado" ] si predeterminado entonces showerrors = nil fin -- obtener la entidad wikidata entidad local = mw . wikibase . getEntity ( id ) si no es una entidad , entonces si muestra errores , entonces devuelve printError ( "entidad no encontrada" ), de lo contrario, devuelve predeterminado fin fin -- obtener la primera reclamación que satisface la propiedad dada local claims = findClaims ( entidad , propiedad ) si no claims o no claims [ 1 ] entonces si showerrors entonces devolver printError ( "propiedad-no-encontrada" ) de lo contrario devolver predeterminado fin fin -- obtener los índices de ordenamiento iniciales local sortindices = {} para idx en pares ( reclamos ) hacer sortindices [ # sortindices + 1 ] = idx fin -- ordenar por rango de reclamación local comparador = función ( a , b ) local rankmap = { obsoleto = 2 , normal = 1 , preferido = 0 } local ranka = rankmap [ reclamos [ a ]. rango o "normal" ] .. cadena.formato ( "%08d" , a ) local rankb = rankmap [ reclamos [ b ]. rango o "normal" ] .. string.format ( "%08d" , b ) return ranka < rankb end table.sort ( sortindices , comparator ) resultado local error local si lista entonces valor local -- itera sobre todos los elementos y devuelve su valor (si existe) resultado = {} para idx en pares ( claims ) hacer reclamo local = claims [ sortindices [ idx ]] valor , error = getValueOfClaim ( reclamo , qualifierId , parámetro ) si no valor y showerrors entonces valor = error fin si valor y referencias entonces valor = valor .. getReferences ( marco , reclamo ) fin resultado [ # resultado + 1 ] = valor fin resultado = tabla.concat ( resultado , lista ) de lo contrario -- devuelve el primer elemento reclamo local = reclamos [ sortindices [ 1 ]] resultado , error = getValueOfClaim ( reclamo , qualifierId , parámetro ) si resultado y referencias entonces resultado = resultado .. getReferences ( marco , reclamo ) fin fin si resultado entonces devuelve resultado de lo contrario si showerrors entonces devuelve error de lo contrario devuelve predeterminado fin fin fin -- mira dentro de la entidad objeto función p.ViewSomething ( marco ) local f = ( marco.args [ 1 ] o marco.args.id ) y marco o marco : getParent ( ) local id = f.args . id si id y ( # id == 0 ) entonces id = nil fin datos locales = mw . wikibase . getEntity ( id ) si no datos entonces devuelve nil fin local i = 1 mientras es verdadero hacer local índice = f . args [ i ] si no índice entonces si tipo ( datos ) == "tabla" entonces devuelve mw . text . jsonEncode ( datos , mw . text . JSON_PRESERVE_KEYS + mw . text . JSON_PRETTY ) de lo contrario devuelve tostring ( datos ) fin fin datos = datos [ índice ] o datos [ tonumber ( índice )] si no datos entonces devuelve fin i = i + 1 fin fin -- obtener el enlace del sitio de una wiki dada -- obtener el enlace del sitio del elemento actual si no se proporciona qid función p . getSiteLink ( marco ) local qid = marco . args . qid si qid == "" entonces qid = nil fin local f = mw . text . trim ( marco . args [ 1 ] o "" ) entidad local = mw . wikibase . getEntity ( qid ) si no es entidad entonces retorna fin local link = entidad : getSitelink ( f ) si no es enlace entonces retorna fin retorna enlace fin función p.dump ( frame ) local f = ( frame.args [ 1 ] o frame.args.id ) y frame o frame : getParent ( ) local data = mw.wikibase.getEntity ( f.args.id ) si no data entonces devuelve i18n.warnDump end local i = 1 mientras que es verdadero do local index = f.args [ i ] si no index entonces devuelve " <pre> " ..mw.dumpObject ( data ) .. " </pre> " ..i18n.warnDump end data = data [ index ] o data [ tonumber ( index ) ] si no data entonces devuelve i18n.warnDump end i = i + 1 end end devuelve p