وحدة:Wikidata2/tax
اذهب إلى التنقل
اذهب إلى البحث
الاستخدام[عدل]
كتبت هذه الوحدة لاستخدامها في : قالب {{تصنيف كائن/تصنيف علمي ويكي بيانات}} الذي يستخدم في {{تصنيف كائن}}.
خطأ لوا في وحدة:Wikidata2 على السطر 487: attempt to index field 'wikibase' (a nil value).-- This module implements [[template:تصنيف كائن/تصنيف علمي ويكي بيانات]]. local p = {} local Cash = require('Module:Wikidata2/tax/cash') local Cash2 = {} local colors = { ['Q808'] = '#EE82EE', -- فيروس ['Q10872'] = '#ECD2D2', -- عتائق ['Q10876'] = '#D3D3D3', -- بكتيريا ['Q10892'] = '#F0E68C', -- طلائعيات ['Q862296'] = '#ADEE3F', -- أسناخ ['Q756'] = '#90EE90', -- نبات ['Q764'] = '#ADD8E6', -- فطر ['Q729'] = '#D3D3A4', -- حيوان ['Q855740'] = '#E1CCFC', --جذراوات ['Q1205126'] = '#E0D0B0', -- قمعيات ['Q473809'] = '#FFC8A0', --متموريات --[''] = '#FAF0E6', -- غير محدد [''] = '', } local taxP105= { --[''] = 'النطاق', ['Q22666877'] = 'فوق النطاق', ['Q19858692'] = 'مملكة عليا', ['Q36732'] = '[[مملكة (تصنيف)|مملكة]]', ['Q38348'] = '[[شعبة (تصنيف)|شعبة]]', ['Q37517'] = '[[طائفة (تصنيف)|طائفة]]', ['Q36602'] = '[[رتبة (تصنيف)|رتبة]]', ['Q35409'] = '[[فصيلة (تصنيف)|فصيلة]]', ['Q34740'] = '[[جنس (تصنيف)|جنس]]', ['Q7432'] = 'نوع', ['Q2752679'] = 'عويلم', ['Q3150876'] = 'مملكة فرعية', ['Q3978005'] = '[[شعبة عليا (تصنيف)|شعبة عليا]]', ['Q334460'] = 'شعبة', ['Q1153785'] = '[[شعيبة (تصنيف)|شعيبة]]', ['Q2361851'] = 'شعبة فرعية', ['Q3504061'] = 'عمارة', ['Q5867051'] = '[[طويئفة (تصنيف)|طويئفة]]', ['Q2007442'] = 'صُنيف فرعي', ['Q6054237'] = 'رتبة ضخمة', ['Q5868144'] = '[[رتبة عليا (تصنيف)|رتبة عليا]]', ['Q6462265'] = 'رتبة كبرى', ['Q21074316'] = 'رتبة متوسطة', ['Q7506274'] = 'رتبة متوسطة', ['Q6311258'] = 'رتبة صغرى', ['Q2889003'] = '[[تحت رتبة (تصنيف)|تحت رتبة]]', ['Q5867959'] = '[[رتيبة (تصنيف)|رتيبة]]', ['Q164280'] = '[[فصيلات (تصنيف)|فُصيلة]]', ['Q2455704'] = '[[فصيلات (تصنيف)|فُصيلة]]', ['Q68947'] = 'نويع', ['Q2136103'] = '[[فصيلة عليا (تصنيف)|فصيلة عليا]]', ['Q10296147'] = 'فصيلة إضافية', ['Q767728'] = 'ضرب', ['Q227936'] = '[[قبيلة (تصنيف)|قبيلة]]', ['Q3238261'] = 'جُنيس', ['Q3181348'] = 'قسم', ['Q3965313'] = 'عميرة', ['Q279749'] = 'شكل', ['Q3025161'] = 'سلسلة', ['Q5998839'] = 'قسيم', ['Q4886'] = 'مستنبت نباتي', ['Q3825509'] = 'شكل خاص', ['Q4150646'] = 'مجموعة', ['Q14817220'] = 'قبيلة عليا', ['Q10861426'] = 'قسم', ['Q3491997'] = 'كتيبة', ['Q855769'] = 'سلالة', ['Q13198444'] = 'السلسلية', ['Q21559275'] = 'فوق القسم', ['Q2981883'] = '[[أترابية (تصنيف)|أترابية]]', ['Q10861375'] = 'قسيم', ['Q630771'] = 'ضُريب', ['Q6541077'] = '[[أباشة (تصنيف)|أباشة]]', ['Q6054425'] = 'أترابية عليا', ['Q42621'] = 'تهجين الأحياء', ['Q4226087'] = 'أترابية فرعية', ['Q26857882'] = 'المملكة الصغرى', ['Q3798630'] = 'قبيلة فرعية', ['Q3491996'] = 'نطاق فرعي', } function add_Tracking_Category(prop,options) return addTrackingCategory(prop,options) --return prop end function foo(iid,formatting,p) if not iid or iid =='' then return nil end so = nil st = formatStatements( {property = p , entityId = iid, enlabelcate='t', noref ='t', firstvalue='true',formatting=formatting}) if st and st ~= '' then so = st end ---------------- return so end function GetP171id( id ) if not id or id =='' then return nil end ---------------- if Cash[id] and Cash[id]["P171"] and Cash[id]["P171"] ~= "" then st = Cash[id]["P171"] else st = formatStatements( {property ='P171' , entityId = id,rank='best', noref ='t', firstvalue='true',formatting="raw"}) if not Cash2[id] then Cash2[id] = {} end if st and st ~= "" then Cash2[id]["P171"] = st end end return st end function taxcolours2( id , options) --local id = GetP171id( id ) i = 0 ccc = "" while ccc == "" and i < 30 do e = foo( id , "raw" , 'P105') if e and e ~= '' then if e == 'Q36732' then if colors[id] and colors[id] ~= "" then ccc = colors[id] end end end id = GetP171id( id ) i = i + 1 end --------------------------- if ccc == "" and options.colour and options.colour ~= "" then ccc = options.colour end --------------------------- return ccc --------------------------- end function taxonrank(iid) vvv = nil if not iid or iid =='' then return nil end ------------------------ local rank_raw; local rank_lab; if Cash[iid] and Cash[iid]["P105"] and Cash[iid]["P105"] ~= "" then rank_raw = Cash[iid]["P105"] else rank_raw = formatStatements( {property ='P105' , entityId = iid, enlabelcate='t', noref ='t', firstvalue='true',formatting='raw'}) if not Cash2[iid] then Cash2[iid] = {} end Cash2[iid]["P105"] = rank_raw end if not rank_raw or rank_raw =='' then return nil end ------------------------ if taxP105[rank_raw] and taxP105[rank_raw] ~= "" then vvv = add_Tracking_Category(taxP105[rank_raw] ,{property='P105', entityId = iid,noicon='t'}) else rank_lab = formatStatements( {property ='P105' , entityId = iid, enlabelcate='t', noref ='t', firstvalue='true',formatting=''}) if rank_lab and rank_lab ~= '' then mw.log("Module:Wikidata2/tax: taxP105['" .. rank_raw .. "'] = '" .. rank_lab .. "'" ) vvv = add_Tracking_Category(rank_lab .. '' ,{property='P105', entityId = iid,noicon='t'}) end end ------------------------ return vvv end function pro1(id) if not id or id =='' then return nil end ---------------- id_r = formatStatements( {property ='P171' , entityId = id, enlabelcate='t', noref ='t', firstvalue='true',formatting='raw'}) if id_r and id_r ~= "" then if Cash[id_r] and Cash[id_r]["label"] and Cash[id_r]["label"] ~= "" then label = Cash[id_r]["label"] else label = formatStatements( {property ='P171' , entityId = id,enlabelcate='t',noref ='e', firstvalue='true'}) if not Cash2[id_r] then Cash2[id_r] = {} end if label and label ~= "" then Cash2[id_r]["label"] = label end end end return label end function dd(id, taxo_id ) -- taxolabel : الكائن -- d : المرتبة التصنيفية if id and id ~= '' then taxolabel = pro1( taxo_id ) d = taxonrank(id) -- المرتبة التصنيفية ---------------- if not d or d == '' then --d = foo( id , '' , 'P31' ) --mw.log( "Module:Wikidata2/tax: foo[" .. id .. "] = " .. d) return nil end ---------------- if taxolabel and taxolabel ~= '' then if d and d ~= '' then return d .. '||'.. taxolabel else return taxolabel end end end end function dd_old(id, taxolabel ) -- taxolabel : الكائن -- d : المرتبة التصنيفية if id and id ~= '' then d = taxonrank(id) -- المرتبة التصنيفية ---------------- if not d or d == '' then return nil --'' -- nil end ---------------- if taxolabel and taxolabel ~= '' then if d and d ~= '' then return d .. '||'.. taxolabel else return taxolabel end end end end function gettax( value_id ,coo, lll , options) local P = {} local number = 1 local id_1 = value_id ---------- P[0] = dd_old(value_id , lll ) ---------- while number < 31 do s_id = GetP171id( id_1 ) P[number] = dd(s_id , id_1 ) id_1 = s_id number = number + 1 end ------------------------ for k, v in pairs(Cash2) do if (v["P171"] and v["P171"] ~= "") and ( v["P105"] and v["P105"] ~= "") then mw.log( "Module:Wikidata2/tax: Cash['" .. k .. "']= {['P105'] = '" ..( v["P105"] or "" ).. "' , ['P171'] = '" .. (v["P171"] or "") .. "' , ['label'] = '" .. (v["label"] or "") .. "' }" ) end end ---------------- ti = '[[التصنيف العلمي]]' title = 'colspan=\"2\" style=\"text-align: center;background-color:' ..coo..';" | ' .. add_Tracking_Category(ti ,options) head = '{| class="infobox biota" style="text-align: right; width: 200px; font-size: 100%%"' End = '}' ---------------- local taxon1 = { P[30] or "" , P[29] or "" , P[28] or "" , P[27] or "" , P[26] or "" , P[25] or "" , P[24] or "" , P[23] or "" , P[22] or "" , P[21] or "" , P[20] or "" , P[19] or "" , P[18] or "" , P[17] or "" , P[16] or "" , P[15] or "" , P[14] or "" , P[13] or "" , P[12] or "" , P[11] or "" , P[10] or "" , P[9] or "" , P[8] or "" , P[7] or "" , P[6] or "" , P[5] or "" , P[4] or "" , P[3] or "" , P[2] or "" , P[1] or "" , P[0] or "" , } ---------------- local q = {} --table.insert( q,head ) table.insert( q, title ) for i,j in ipairs( taxon1 ) do e = i..j if j and j ~= '' then table.insert( q,j ) end end ---------------- --table.insert( q,End ) taxonSections = table.concat( q, "\n|-\n|") result = string.format([[%s |- !%s |- |%s %s]], head, title, taxonSections, End ) ---------------- return taxonSections --result end function p.tax( datavalue ,datatype , options) local value_id = datavalue.value.id local colour = taxcolours2( value_id , options) local lll = formatEntityId( value_id , options ).value return gettax( value_id , colour ,lll, options) end function p.taxcolour( datavalue ,datatype , options) --return taxcolours(datavalue.value.id, options) return taxcolours2(datavalue.value.id, options) end function p.gg(frame) return gettax( frame.args[1] ,"#ffffff", "test" , frame.args) end return p