Módulo:Wikidata/Formato lugar
Uso
En este módulo se definen algunos de los tipos de datos de la plantilla {{propiedad}}
o equivalentemente de las funciones permitidas para el parámetro valor-función del módulo:Wikidata.
lugar
<section begin=Wikidata_lugar_texto />
- uso desde la plantilla propiedad
{{Propiedad|id. de la propiedad|tipo de dato=lugar|parámetros opcionales}}
Tipo de dato para propiedades de lugares, por ejemplo «Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129". (P19)» y «Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129". (P20)». Se muestra el lugar junto a la entidad territorial administrativa y el país separados por comas. Para ello se utilizan los calificativos:
- Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129". (P131)
- Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129". (P17). Si no se especifica el país se intentará obtener del lugar tomando el país en la
fecha
dada o si no el más reciente (aquel con rango preferente) y si no el primero definido en Wikidata.
Los parámetros posibles son:
enlace
: si toma el valor de "no" no se enlaza al artículo de la Wikipedia con el lugar, la entidad territorial administrativa o el país.fecha
: fecha utilizada para obtener el país del lugar como timestamp, por ejemplo, +1901-00-00T00:00:00Z.
Para el resto de los parámetros posibles véase la plantilla {{propiedad}}
o el módulo:Wikidata si se accede desde un módulo Lua.
Pueden verse ejemplos de utilización en la página de pruebas del módulo. <section end=Wikidata_lugar_texto />
Error de secuencia de órdenes: Error de Lua: Error interno: El intérprete ha finalizado con la señal "-129".
local p = {} local separadosPorComa = require('Módulo:Formato texto').separadosPorComa local moduloTablas = require('Módulo:Tablas') local elementoTabla = moduloTablas.elemento local moduloWikidataFormatos = require('Módulo:Wikidata/Formatos') local enlazar = moduloWikidataFormatos.enlazar local obtenerDatos = moduloWikidataFormatos.obtenerDatos local Date = require('Módulo:Date')._Date function p.formatoLugar(valor, opciones, frame, calificativos) -- Función que devuelve algo de la forma Lugar, entidad territorial administrativa, país function obtenerOcurrenciaAFecha(tabla, fecha) if not tabla or not fecha then return end local fechaInicio, fechaFin fecha = Date(fecha) --if true then return require('Módulo:Tablas').tostring(tabla) end -- for k,v in pairs(tabla) do fechaInicio = elementoTabla(v,'qualifiers','P580',1,'datavalue','value','time') fechaFin = elementoTabla(v,'qualifiers','P582',1,'datavalue','value','time') fechaInicio = Date(fechaInicio) fechaFin = Date(fechaFin) if fechaInicio and fechaFin then if fecha >= fechaInicio and fecha <= fechaFin then return k end elseif fechaInicio then if fecha >= fechaInicio then return k end elseif fechaFin then if fecha <= fechaFin then return k end end end end function obtenerOcurrenciaRangoPreferente(tabla) if not tabla then return end for k,v in pairs(tabla) do if v.rank == 'preferred' then return k end end end local idLugar, enlaceLugar, etiquetaLugar, lugarEnlazado local entidadTerritorialAdministrativaEnlazada local idPais, enlacePais, etiquetaPais, paisEnlazado local fecha -- Validar que está informado el id del lugar. if not valor or not valor['numeric-id'] then return end if opciones then fecha = opciones.fecha end -- Obtener primero la entidad territorial administrativa y el país de los calificativos si es posible -- No se obtiene primero el lugar, que sería lo más lógico, porque se obtendrá de forma diferente según -- estén o no informados los calificativos if calificativos then entidadTerritorialAdministrativaEnlazada = enlazar(obtenerDatos(elementoTabla(calificativos,'P131',1,'datavalue','value'))) enlacePais, etiquetaPais, idPais = obtenerDatos(elementoTabla(calificativos,'P17',1,'datavalue','value')) paisEnlazado = enlazar(enlacePais, etiquetaPais, idPais) end if paisEnlazado then enlaceLugar, etiquetaLugar, idLugar = obtenerDatos(valor) lugarEnlazado = enlazar(enlaceLugar, etiquetaLugar, idLugar) else -- Si el lugar no tiene el calificativo de país obtenerlo de la propiedad país de la -- entidad de Wikidata del lugar. -- De momento no se obtiene la entidad administrativa (tiene unas barbaridades...) local entidad idLugar = 'Q' .. valor['numeric-id'] entidad = mw.wikibase.getEntityObject(idLugar) if not entidad then return end enlaceLugar = elementoTabla(entidad,'sitelinks','eswiki','title') etiquetaLugar = elementoTabla(entidad,'labels','es','value') lugarEnlazado = enlazar(enlaceLugar, etiquetaLugar, idLugar, opciones) -- -- Obtener el país del lugar. -- local paisesLugar = elementoTabla(entidad,'claims','P17') if paisesLugar then -- Primero se intenta con el país en la fecha de las opciones, luego -- el país con rango máximo (el actual) y luego el primer país. local ocurrenciaPais = obtenerOcurrenciaAFecha(paisesLugar, fecha) or obtenerOcurrenciaRangoPreferente(paisesLugar) or 1 enlacePais, etiquetaPais, idPais = obtenerDatos(elementoTabla(paisesLugar,ocurrenciaPais,'mainsnak','datavalue','value')) paisEnlazado = enlazar(enlacePais, etiquetaPais, idPais) end end if idLugar == idPais then -- Si el lugar es un país, por ejemplo, estados Unidos, en Wikidata tiene la propiedad país informada con Estados Unidos. return lugarEnlazado elseif lugarEnlazado and entidadTerritorialAdministrativaEnlazada and paisEnlazado then return lugarEnlazado .. ' (' .. entidadTerritorialAdministrativaEnlazada .. ', ' .. paisEnlazado .. ')' elseif lugarEnlazado and entidadTerritorialAdministrativaEnlazada then return lugarEnlazado .. ' (' .. entidadTerritorialAdministrativaEnlazada .. ')' elseif lugarEnlazado and paisEnlazado then return lugarEnlazado .. ' (' .. paisEnlazado .. ')' elseif entidadTerritorialAdministrativaEnlazada and paisEnlazado then return entidadTerritorialAdministrativaEnlazada .. ' (' .. paisEnlazado .. ')' else return lugarEnlazado or entidadTerritorialAdministrativaEnlazada or paisEnlazado end end --***************************************************************************** -- Alias de formatos para utilizar en la plantilla propiedad --***************************************************************************** p['lugar'] = p['formatoLugar'] return p