Módulo:Propriedades

Fonte: Enciclopédia de conhecimento da Igreja de Deus
Saltar para a navegação Saltar para a pesquisa

A documentação para este módulo pode ser criada na página Módulo:Propriedades/doc

local p = {
				instance_de= "P31",
				sub_classe_de = "P279",
				primeiro_nome = "P735",
				sobrenome = "P734",
				isbn10 = "P957",
				publicado_em = "P1433",
				['língua'] = "P407"
}
-- this module gives solutions to get the Pnumber of a property by its name
-- could be automatized, but for now just defining a muanual mapping
p.p_from_name = {
				["country"] = 17 ;
				["gender"] = 21 ;
				["instance of"] = 31 ;
				
				["field"] = 101 ;
				["occupation"] = 106 ;
				
				["genre"] = 136 ;
				
				["named after"] = 138 ;
				
				
				["preceded by"] = 155;
				["succeeded by"] = 156;
				["collection"] = 195;    
				["subclass of"] = 279 ;
				["category's topic"] = 301;
				["list of"] = 360 ;
				["part of"] = 361 ;
				["commons category"] = 373;
				
				["terminus"] = 559;
				["direction"] = 560;
				
				["start date"] = 580 ;
				["begin date"] = 580 ;
				
				["end date"] = 582 ;
				
				["date"] = 585 ;
				
				["of"] = 642 ;
				
				["participant"] = 710 ;
				
				["edition"] = 747 ;
				["edition of"] = 629 ;
				
				['key event'] = 793 ;
				['significant event'] = 793 ;
				
				["topic's category"] = 910;
				["subject"] = 921; -- work subject
				["inspired by"] = 941 ;    
				
				["fictional analog of"] = 1074 ;
				["statement disputed by"] = 1310 ;
				["disputed by"] = 1310 ;
				
				["of"] = 642 ;
				
				["history"] = 2184 ;
				
				["property for this type"] = 1963 ;
								["metasubclass of"] = 2445 ;
				
				["number"] = 1114 ;
				
				["union of"] = 2737;
				["disjoint union of"] = 2738;
				
				["has part of the type"] = 2670 ;
}
local function string_to_propnumber(label)
				local res = p.p_from_name[label] ;
				if res ~= nil then
								return tostring( res) ;
				else
								res = mw.wikibase.resolvePropertyId(label)
								if res then
												return string.sub(res, 2)
								else
												return nil
								end
				end
end
p.numberFromPropertylabel = function(frame)  
				local label = frame.args[1] ;
				mw.log(label)
				return string_to_propnumber(label)
end;
-- returns a pid of the form "Pnnn..." where n is a character in "123456789"
--from either
--* a number representing a property wikidata number
--* a string number representing a property wikidata number
--* a pid of the form "Pnnn"
--* a "property name" corresponding to a property, where the names are listed in the array p.p_from_name
-- or "nil" if the id does not match to any of the cases above
p.normalize = function(input_pid)
				local input_pid = tostring(input_pid)
				if mw.ustring.match(input_pid, "P%d+") then
								return input_pid
				elseif mw.ustring.match(input_pid, "%d+") then
								return "P" .. input_pid
				else
								return "P" .. tostring(string_to_propnumber(input_pid))
				end
end
-- function that takes a string with a set of pids and returns an array of properties
p.expandPropList = function(plist)
				local props = mw.text.split(plist,",")
				for ind, val in ipairs(props) do
								props[ind] = p.normalize(val)
				end
				return props
end
function p.datatype(property)
				if type(property) ~= "table" then
								property = mw.wikibase.getEntityObject(p.normalize(property))
				end
				return property.datatype
end
---------------------------------------------------------------
-- wikitemplate interface
---------------------------------------------------------------
p.Pid = function(frame)  
				local label = frame.args[1] ;
				return p.normalize(label)
end;
p.Pdatatype = function(frame)
				return p.datatype(frame.args[1])
end;
p.of = p.normalize("of")
p.union_of = p.normalize("union of")
p.disjoint_union_of = p.normalize("disjoint union of")
return p