<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.personaldata.io/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AProperties</id>
	<title>Module:Properties - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.personaldata.io/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AProperties"/>
	<link rel="alternate" type="text/html" href="https://wiki.personaldata.io/w/index.php?title=Module:Properties&amp;action=history"/>
	<updated>2026-05-13T17:38:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.personaldata.io/w/index.php?title=Module:Properties&amp;diff=64106&amp;oldid=prev</id>
		<title>Podehaye: Created page with &quot;-- 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  local p = { 	p_from_name =...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.personaldata.io/w/index.php?title=Module:Properties&amp;diff=64106&amp;oldid=prev"/>
		<updated>2019-10-23T19:46:25Z</updated>

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