Modulo:Wikidata/b2/pagipadasan

Manipud iti Wikipedia, ti nawaya nga ensiklopedia
Darsen a mapan iti pagdaliasatan Darsen a mapan agbiruk
Dokumentasion ti modulo[kitaen] [urnosen] [pakasaritaan] [purgaen]

Dagiti subpanid daytoy a Modulo:

Panagusar[urnosen ti taudan]

Amin nga annong ken parametro

Ti tabla dita baba ket mangipakita kadagiti amin nga annong ken dagiti parametro

Annong Deskripsion ti annong Parametro Nasken Deskripsion ti parametro
formatStatements agala kadagiti datos, agpili kadagiti tunton, agsagat, agurnos, ken agpormat kadagiti pateg ken mangited it ilistaan id saan pannaginagan ti banag (ti letra " q " ken sarunuen babaen dagiti bilang) wenno tagikua (ti letra " p " ken sarunuen babaen dagiti bilang) iti wikidata a maalanto tapno mapormat (ti kasisgud a banag a maisilpo iti panid)
of saan dagiti panangilasin a tagikua iti wikidata (ti letra " p " ken sarunuen babaen dagiti bilang) a pangalaan kadagiti entidad a pudno nga agus-usar iti modulo tapno maipakat iti umuna ket kasayaatan a pateg dagiti tagikua
property wen dagiti panangilasin a tagikua iti wikidata (ti letra " p " ken sarunuen babaen dagiti bilang), a dagiti pategda ket napormat ken naiparang
value saan No mainaganan daytoy a parametro, maipakitanto iti linaonna
over* saan no maisaad iti "true" , ti maysa nga awan linaon a parametro ti pateg ti "value" ket saanto a maited
compare* saan no maisaad iti "true" ken mainaganan ti parametro ti "value" , iyasping ti modulo dagiti linaon ken datosna iti Wikidata babaen kadagiti sabali a parametro a naidesino a mangsagat ti datos ken naginagan datoy babaen ti presision a datos ti klase ti CSS
addlink saan no maisaad iti "true" , agparangto iti gibus ti datos ti repositorio iti silpo ti (e) a dagus a kadenna ti tagikua
addclass saan no maisaad iti "true" , ti datos manipud iti repositorio ket maikkanto iti kalse ti CSS
value-module saan ti nagan ti modulo nga inus-usar iti modulo a mangpormat kadagiti pateg ​​(babaen iti kasisigud, daytoy ket aramiden babaen ti pamay-an a nainaganan babaen ti modulo ti Wikidata)
value-function wen,
no
adda
value-module
ti mapormato nga annong ti modulo iti value-module
field saan no maited ti kita ti pateg ti nagsasabtan , daytoy ti parte nga agparang ; maysa kadagiti "latitud", "longitud", "precision" ken "globe"
typeOfCoordinates saan
limit saan ti kaadu a bilang dagiti pateg a maiparang iti listaan
rank saan nasken a puesto ti pateg iti tunton ;
mabalin nga all - ipakat amin tunton; Best - maipakat ti panagikeddeng ti kaykayat a kasasaad, wenno dagiti laeng agraman iti normal a kasasaad, no adda ania man a kaykayat; valid (kasisigud) - maus-usar kadagiti kaykayat ken normal a tunton; preferred, normal, deprecated - ipakat laeng iti tunton nga agraman iti maitunos a kasasaad
withqualifier saan panangilasin dagiti tagikua ti Wikidata (ti letra "p" a sarunuen dagiti bilang), a nasken a maikkan iti pateg iti maipalawag a tunton
withlang saan kodigo ti pagsasao a ti pategto ket dagiti monolingual a teksto
date saan petsa iti pormat iti YYYY-MM-DD wenno " #now" (petsa ita nga aldaw) , a matunton nga umiso
sort saan no kasano iti mangbaliw ti urnos dagiti pateg; maysa kadagiti "rank" (babaen ti puesto) , "date" (segun dagiti depinison ti datos) , "alpha" (alpabetiko) , "number" (depende iti kaadu)
invert saan no maisaad iti "true" ken maikkan iti urnos ti panangilasin ("sort") , ti umuna a pateg iti gibus iti maudi ken iti rugi
pattern saan ti kita ti panagsasaruno ti pateg, daytoy ti plantilia para iti panagpormat , ti "$ 1" ket sukatan babaen ti kuerdas (kasisigud ti "$ 1")
autoformat saan no maisaad iti "true ", ti panagsasaruno iti tunton, mangpadas daytoy a mangbiruk iti panangisukat iti pattern
precision saan mausar a pormat ti datos ti oras (agusar daytoy no ti pudno a kasayaat ket nababbba a pormat) ; 11 - 22 2019 10 - {{#time F Y}} , 9 ​​- 2019 kdpy.
showspecial saan nomaisaad iti "true ", ti mensahe ken dagiti pateg malaksid iti agar-aramat (unknown value ken no value)
qualifiersOnly saan mangiparang laeng kadagiti qualifier (maisilpo ti FCI showqualifier)
showqualifier saan dagitinaisina iti kaw-it a panangilasin dagiti tagikua iti Wikidata (ti letra "p" a sarunuen dagiti bilang , wenno "time") , ken agparang kadagiti parentesis kalpasan ti pateg a naited a panangipalawag
showtargetdata saan kapada ti " showqualifier " ngem datos imbes a panangipalawag ti maala a naikabil iti puntaan
targetdate saan kapada ti "date" ken mangibaga iti puntaan a datos ti banag
showsource saan no maisaad iti "true", ti datos manipud iti repositorio ket maikkan kadagiti reperensia
showmore saan no maisaad iti " true" , no adda pay dagiti mabalin a pateg iti limit, agparang iti gibus ti listaan ti teksto iti teksto iti "...   adu pay manipud iti wikidata " , a dagus a mangibagabaga iti tagikua
separator saan dagiti nadumaduma a pateg para iti isu met laeng a tagikua, daytoy ket mausar a mangisina kadagiti pateg (kasisigud iti kaw-it)
conjunction saan dagiti karakter nga agparangto a maudi a panangisina (kasisigud iti "ken")
formatStatementsFromLua annong a mausar laeng babaen dagiti sabali a modulo ken kapada iti formatStatements entity saan tabla ti entidad a pormaten ti modulo
filterStatementsFromLua lang a mangipalubos iti sabali a modulo tapno mausar iti panagsagat kadagiti tunton entity wen tabla ti entidad a pormaten ti modulo
options wen amin a parametro para iti panagsagat
dumpWikidataEntity entidad nga agparang iti mabasa a porma, naserbi iti panagsimpa ken panangisayangkat kadagiti baro a langa a saan a maus-usar kadagiti plantilia wenno dagiti artikulo id saan panangilasin ti banag (ti letra "q" a sarunen dagiti bilang) wenno tagikua (ti letra "p" a sarunuen dagiti bilang) tii Wikidata a pagalaan ti datos tapno mapormat (ti kasisigud ket ti banag a naisilpo iti panid)
getSitelink mangited iti reperensia iti artikulo iti proyekto sitio / umuna a saan ananaganna a parametro saan akronimo ti proyekto (kasisigud iti "ilowiki")
pattern saan plantilia para ti panagpormat iti reperensia, ti "$ 1" ket ti tiitulo ti nareperensiaan a panid (kasisigud iti "$ 1")
id saan panangilasin ti banag (ti letra "q" a sarunen dagiti bilang) wenno tagikua (ti letra "p" a sarunen dagiti bilang) iti Wikidata a pagalaan ti datos tapno mapormat (ti kasisigud ket ti banag a naisilpo iti panid)
of saan dagiti panangilasin ti tagikua iti Wikidata (ti letra "p" a sarunen dagiti bilang) a pagalaan ti entidad a pudno nga agus-usar iti modulo tapno maipakat ti umuna ken kasayaatan a pateg dagiti tagikua
addclass saan no maisaad iti "true", ti datos manipud iti repositorio ket maikkanto iti klase ti CSS
getLabel mangited iti etiketa ti banag iti pagsasao lang saan pangyababaan ti (kasisigud ti "ilo")
id saan panangilasin ti banag (ti letra "q" a sarunen dagiti bilang) wenno tagikua (ti letra "p" a sarunuen dagiti bilang) ti Wikidata a pagalaan ti datos tapno mapormat (ti kasisigud ket ti banag a naisilpo iti panid)
of saan dagiti panangilasin a tagikua iti Wikidata (ti letra "p" a sarunen dagiti bilang) a pagalaan ti entidad a pudno nga agus-usar iti modulo tapno maipakat ti umuna ken kasayaatan a pateg dagiti tagikua
addclass saan no maisaad iti "true" , ti datos manipud iti repositorio ket maikkanto iti klase ti CSS
getDescription mangited iti etiketa ti banag iti pagsasao lang saan pangyababaan ti pagsasao (kasisigud iti "ilo")
id saan panangilasin ti banag (ti letra " q " a sarunuen dagiti bilang) wenno tagikua (ti letra "p" a sarunuen dagiti bilang) iti Wikidata a pagalaan ti datos tapno mapormat (ti kasisigud ket ti banag a naisilpo iti panid)
of saan dagiti panangilasin a tagikua iti Wikidata (ti letra "p" a sarunuen dagiti bilang a pagalaan ti entidad a pudno nga agus-usar iti modulo tapno maipakat ti umuna ken kasayaatan a pateg dagiti tagikua
addclass saan no maisaad iti "true" , ti datos manipud iti repositorio ket maikkanto iti klase ti CSS
getAliases mangisubli kadagiti naikabil a parboa nagan iti pagsasao lang saan pangyababaan ti pagsasao (kasisigud iti "ilo")
limit saan ti kaadu a bilang dagiti maiparangto a parbo a nagan
id saan pananginagan ti pateg (ti " q " a sarunen dagiti bilang) wenno tagikua (ti letra "p" a sarunuen dagiti bilang) iti Wikidata a pagalaanto ti datos tapno mapormat (ti kasisigud ket ti banag a naisilpo iti panid)
of saan dagiti panangilasin a tagikua iti Wikidata (ti letra "p" a sarunuen dagiti bilang) a pagalaan ti entidad a pudno nga agus-usar iti modulo tapno maipakat ti umuna ken kasayaatan a pateg dagiti tagikua
separator saan dagiti nadumaduma a pateg para iti isu met laeng a tagikua, daytoy ket mausar a mangisina kadagiti pateg (kasisigud iti kaw-it)
conjunction saan dagiti karakter nga agparangto a maudi a panangisina (kasisigud iti "ken")
addclass saan no maisaad iti "true", ti datos manipud ti repositorio ket maikkanto iti klase ti CSS
getBadges mangisubli iti etiketa ti badge a para iti silpo iti artikulo site wen akronimo ti proyekto
id saan dagiti paanginagan ti banag (ti letra "q" a sarunuen dagiti bilang) wenno tagikua ( ti letra "p" a sarunuen dagiti bilang ) ti Wkidata a pagalaan iti datos tapno mapormatda (ti kasisigud ket ti banag a nisilpo iti panid)
of saan dagiti pananginagan a tagikua iti Wikidata (ti letra "p" a sarunuen dagiti bilang) a pagalaan ti entidad a pudno nga agusar iti modulo tapno maipakat ti umuna ken kasayaatan a pateg dagiti tagikua
getCount mangited iti bilang dagiti tunton babaen ti kriteria amin a parametro para iti panagsagat
getCurrentId maited nga id ti banag a pakaisilpuanto
getRawValue kas iti " formatStatements " , mabalin a mabasa ti datos (saan a napormat) amin a parametro para iti panagsagat
require "Modulo:No globals"

local p = {}

local lib = require "Modulo:Wikidata/lib"
local res = mw.loadData("Modulo:Wikidata/i18n")

local function getEntityFromId(id)
	return mw.wikibase.getEntityObject(id)
end

local function findEntity(options)
	local entity
	if options.entity and type(options.entity) == "table" then
		entity = options.entity
	end
	if not entity then
		if options.id then
			local id = options.id:upper()
			entity = getEntityFromId(id)
			if entity and entity.id ~= id then
				mw.log('Ti' ..id .. ' ket naibaw-ing iti ' .. entity.id)
			end
		else
			entity = getEntityFromId()
		end
	end
	if options.of then
		if entity then
			local prop = mw.ustring.upper(options.of)
			local Statements = entity:getBestStatements(prop)
			local Formatters = require 'Modulo:Wikidata/pormat'
			for _, statement in pairs(Statements) do
				if lib.IsSnakValue(statement.mainsnak) then
					if statement.mainsnak.datavalue.type ~= 'wikibase-entityid' then
						return error(lib.formatError('invalid-datatype', prop, statement.mainsnak.datatype, 'wikibase-item/wikibase-property'))
					end
					local id = Formatters.getRawValue(statement.mainsnak)
					entity = getEntityFromId(id)
					if entity and entity.id ~= id then
						mw.log('Ti' ..id .. ' ket naibaw-ing iti ' .. entity.id)
					end
					return entity
				end
			end
		end
		return nil
	end
	return entity
end

local function getSitelink(options)
	local options = lib.common.cleanArgs(options)

	local entity = findEntity(options)
	if not entity or not entity.sitelinks then
		return nil
	end

	local site = options.site or options[1]

	local sitelink = entity:getSitelink(site)
	if not sitelink then
		return nil
	end

	if options.pattern then
		sitelink = lib.formatFromPattern(sitelink, options.pattern)
	end
	if lib.IsOptionTrue(options, 'addclass') then
		sitelink = lib.addClass(sitelink)
	end
	return sitelink
end

local function formatStatement(statement, options)
	if not statement.type or statement.type ~= 'statement' then
		return error(lib.formatError('unknown-claim-type', statement.type))
	end
	local Filterers = require 'Modulo:Wikidata/sagat'
	local Formatters = require 'Modulo:Wikidata/pormat'

	local mainsnak, qualifiers, targetdata, references
	if not lib.IsOptionTrue(options, 'qualifiersOnly') then
		mainsnak = Formatters.getFormattedValue(statement.mainsnak, options)
	end
	if statement.qualifiers and options.showqualifier then
		local PropList = lib.textToTable(options.showqualifier)
		local Snaks = {}
		for _, property in pairs(PropList) do
			local Values = {}
			local property = mw.ustring.upper(property)
			local format_options = {
				autoformat = true,
				precision = 9,
				property = property,
			}
			if statement.qualifiers[property] then
				local Qualifiers = Filterers.filterQualifiers(statement.qualifiers[property], options)
				for _, snak in pairs(Qualifiers) do
					if lib.IsSnakValue(snak) then
						table.insert(Values, Formatters.getFormattedValue(snak, format_options))
					end
				end
			elseif property == "TIME" then
				local Data = {}
				for key, array in pairs(lib.props) do
					for _, prop in pairs(array) do
						if statement.qualifiers[prop] then
							for _, snak in pairs(statement.qualifiers[prop]) do
								if lib.IsSnakValue(snak) then
									Data[key] = Formatters.getRawValue(snak)
									break
								end
							end
						end
					end
				end
				local Date = require 'Modulo:Wikidata/petsa'
				if Data.point then
					table.insert(Values, Date.formatDateFromTimevalue(Data.point, format_options))
				elseif Data.begin or Data.ending then
					table.insert(Values, Date.formatDateRange(Data, format_options))
				end
			end
			if #Values > 0 then
				table.insert(Snaks, mw.text.listToText(Values))
			end
		end
		if #Snaks > 0 then
			qualifiers = table.concat(Snaks, '; ')
		end
	end
	if not qualifiers and options.showtargetdata then
		local entity
		if lib.IsSnakValue(statement.mainsnak) then
			if statement.mainsnak.datavalue.type == 'wikibase-entityid' then
				entity = getEntityFromId(Formatters.getRawValue(statement.mainsnak))
			else
				return error(lib.formatError('invalid-datatype', statement.mainsnak.property, statement.mainsnak.datatype, 'wikibase-item/wikibase-property'))
			end
		end
		if entity then
			local PropList = lib.textToTable(options.showtargetdata)
			local options = {
				autoformat = true,
				date = options.targetdate,
				entity = entity,
				precision = 9,
				rank = (options.targetdate and 'valid') or 'best',
				sort = 'date'
			}
			local Snaks = {}
			for _, property in pairs(PropList) do
				local result
				if mw.ustring.lower(property) == 'time' then
					local Data = {}
					for key, array in pairs(lib.props) do
						for _, prop in pairs(array) do
							options.property = prop
							local Statements = Filterers.filterStatementsFromEntity(entity, options)
							for _, statement in pairs(Statements) do
								Data[key] = Formatters.getRawValue(statement.mainsnak)
								break
							end
						end
					end
					local Date = require 'Modulo:Wikidata/petsa'
					if Data.point then
						result = Date.formatDateFromTimevalue(Data.point, options)
					elseif Data.begin or Data.ending then
						result = Date.formatDateRange(Data, options)
					end
				else
					options.property = property
					result = p.formatStatementsFromLua(options)
				end
				if result then
					table.insert(Snaks, result)
				end
			end
			if #Snaks > 0 then
				targetdata = table.concat(Snaks, '; ')
			end
		end
	end
	if statement.references and lib.IsOptionTrue(options, 'showsource') then
		local Module = require 'Modulo:Wikidata/dakamat'
		references = Module.formatSource(statement.references, options)
	end

	if qualifiers or targetdata then
		if lib.IsOptionTrue(options, 'qualifiersOnly') then
			mainsnak = qualifiers or targetdata
		else
			if options.delimiter then
				mainsnak = mainsnak .. options.delimiter .. (qualifiers or targetdata)
			else
				mainsnak = mainsnak .. ' (' .. (qualifiers or targetdata) .. ')'
			end
		end
	end
	if references then
		mainsnak = mainsnak .. references
	end
	return mainsnak
end

local function formatStatements(options)
	local value = options.value
	if value then
		if value == '' and lib.IsOptionTrue(options, 'over') then
			value = nil
		end
		if value and not lib.IsOptionTrue(options, 'compare') then
			return value
		end
	end

	--Get entity
	options = lib.common.cleanArgs(options)
	local entity = findEntity(options)

	options.limit = tonumber(options.limit) --TODO default
	local add_more = false
	if not lib.IsOptionTrue(options, 'compare') then
		if options.limit and lib.IsOptionTrue(options, 'showmore') then
			options.limit = options.limit + 1
			add_more = true
		end
	end

	local Filterers = require 'Modulo:Wikidata/sagat'
	local Statements = Filterers.filterStatementsFromEntity(entity, options)

	options.property = mw.ustring.upper(options.property)
	if value then
		local compare = require 'Modulo:Wikidata/iyasping'
		local marked, category = compare.compareValues(value, Statements, {
			catbase = options.catbase,
			property = options.of or options.property
		})
		if lib.IsOptionTrue(options, 'addclass') and marked then
			value = marked
		end
		if lib.IsOptionTrue(options, 'addcat') and category then
			value = value .. category
		end
		return value
	end

	if #Statements == 0 then return nil end
	if add_more then
		if #Statements == options.limit then
			table.remove(Statements)
		else
			add_more = false
		end
	end
	-- Format statements and concat them cleanly
	local formattedStatements = {}
	options.entity = entity
	for _, statement in pairs(Statements) do
		table.insert(formattedStatements, formatStatement(statement, options))
	end
	if add_more then
		table.insert(formattedStatements, mw.ustring.format(res.i18n["more-on-Wikidata"], entity.id, options.property))
	end
	value = mw.text.listToText(formattedStatements, options.separator, options.conjunction)
	if lib.IsOptionTrue(options, 'addlink') then
		value = value .. ' <sup class="wd-link">([[d:' .. entity.id .. '#' .. options.property .. '|e]])</sup>'
	end
	if lib.IsOptionTrue(options, 'addcat') then
		value = value .. lib.category('used-property', options.catbase or 'Property ' .. options.property)
	end
	if lib.IsOptionTrue(options, 'addclass') then
		value = lib.addWdClass(value)
	end
	return value
end

function p.dumpWikidataEntity( frame )
	local args = frame and frame.args or {}

	return mw.dumpObject( getEntityFromId( args.id or nil ) )
end

function p.getBadges( frame )
	local args = lib.common.cleanArgs((frame and frame.args) or {})
	local site = args.site
	if not site then
		return error(lib.formatError('param-not-provided', 'site'))
	end
	local entity = findEntity( args )
	local Badges = {}
	if entity and entity.sitelinks and entity.sitelinks[site] then
		local ItemFormatter = require 'Modulo:Wikidata/banag'
		for _, badge in pairs(entity.sitelinks[site].badges) do
			table.insert(Badges, ItemFormatter.formatEntityId(badge))
		end
	end
	return table.concat( Badges, ', ' )
end

function p.getLabel( frame )
	local args = lib.common.cleanArgs((frame and frame.args) or {})
	local lang = args.lang
	if not lang or lang == mw.language.getContentLanguage():getCode() then
		local label = mw.wikibase.label(args.id or nil)
		if label and lib.IsOptionTrue(args, 'addclass') then
			label = lib.addClass(label)
		end
		return label
	end
	local entity = findEntity( args )
	if entity and entity.labels and entity.labels[lang] then
		local label = entity.labels[lang].value
		if label and lib.IsOptionTrue(args, 'addclass') then
			label = lib.addClass(label)
		end
		return label
	end
	return nil
end

function p.getDescription( frame )
	local args = lib.common.cleanArgs((frame and frame.args) or {})
	local lang = args.lang
	if not lang or lang == mw.language.getContentLanguage():getCode() then
		local description = mw.wikibase.description(args.id or nil)
		if description and lib.IsOptionTrue(args, 'addclass') then
			description = lib.addClass(description)
		end
		return description 
	end
	local entity = findEntity( args )
	if entity and entity.descriptions and entity.descriptions[lang] then
		local description = entity.descriptions[lang].value
		if description and lib.IsOptionTrue(args, 'addclass') then
			description = lib.addClass(description)
		end
		return description 
	end
	return nil
end

function p.getAliases( frame )
	local args = lib.common.cleanArgs((frame and frame.args) or {})
	local lang = args.lang
	local entity = findEntity( args )
	if not lang then
		lang = mw.language.getContentLanguage():getCode()
	end
	if not entity or not entity.aliases or not entity.aliases[lang] then
		return nil
	end

	local limit = tonumber(args.limit)

	local Aliases = {}
	for i, alias in pairs( entity.aliases[lang] ) do
		if not limit or (limit and i <= limit) then
			table.insert( Aliases, alias.value )
		else break end
	end
	local list = mw.text.listToText(Aliases, args.separator, args.conjunction)
	if lib.IsOptionTrue(args, 'addclass') then
		list = lib.addClass(list)
	end
	return list
end

function p.getCount( frame )
	local args = lib.common.cleanArgs((frame and frame.args) or {})
	if not args.property then
		return error(lib.formatError('param-not-provided', 'property'))
	end

	local entity = findEntity( args )

	args.limit = nil
	local Statements = filterStatements(entity, args)

	return #Statements or 0
end

function p.getCurrentId()
	local entity = getEntityFromId()
	return entity and entity.id
end

function p.getSitelink( frame )
	return getSitelink( frame.args or {} )
end

function p.getSitelinkFromLua( options )
	return getSitelink( options or {} )
end

-- @deprecated
function p.filterStatementsFromLua(...)
	local Filterers = require 'Modulo:Wikidata/sagat'
	return Filterers.filterStatementsFromEntity(...)
end

function p.formatStatements(frame)
	local args = frame and frame.args or {}
	return formatStatements(frame.args)
end

function p.formatStatementsFromLua(options)
	return formatStatements(options)
end

local function getRawValue(options)
	local entity = findEntity(options)
	if options.showspecial == nil then -- may be false
		options.showspecial = true
	end
	if options.rank ~= 'best' and options.rank ~= 'preferred' then
		if options.sort then
			if not mw.ustring.match(options.sort, 'rank') then
				options.sort = 'rank,' .. options.sort
			end
		else
			options.sort = 'rank'
		end
	end

	local Filterers = require 'Modulo:Wikidata/sagat'
	local Statements = Filterers.filterStatementsFromEntity(entity, options)
	for _, statement in pairs(Statements) do
		local Formatters = require 'Modulo:Wikidata/pormat'
		return Formatters.getRawValue(statement.mainsnak, options)
	end
	return nil
end

function p.getRawValue(frame)
	return getRawValue(lib.common.cleanArgs((frame and frame.args) or {}))
end

function p.getRawValueFromLua(options)
	return getRawValue(options)
end

return p