wikidata/Item

Служебный модуль для Модуль:Wikidata, документация пока отсутствует.

Документация

formatEntityWithGenderClaim используется для род занятий (P106) и позиция в команде / специализация (P413).

applyDefaultTemplate используется для биржа (P414).

local WDS = require( 'Module:WikidataSelectors' ); local p = {};  local categoryLinksToEntitiesWithMissingLabel = '[[Категория:Википедия:Статьи со ссылками на элементы Викиданных без русской подписи]]';  local function getGenderLabelForEntityId( entityId, gender ) local genderPropertyId if gender == 1 then genderPropertyId = 'P3321' elseif gender == 2 then genderPropertyId = 'P2521' else return mw.wikibase.label( entityId ) end  local genderLabels = mw.wikibase.getAllStatements( entityId, genderPropertyId )  if genderLabels then genderLabels = WDS.filterByLanguage( WDS.filterByRank( genderLabels, 'deprecated', true ), 'ru' ); end  if genderLabels and genderLabels[ 1 ] and genderLabels[ 1 ].mainsnak and genderLabels[ 1 ].mainsnak.datatype == 'monolingualtext' then return genderLabels[ 1 ].mainsnak.datavalue.value.text; end  return mw.wikibase.label( entityId ) end     local function formatOccupationLinkForEntityId( entityId, gender ) local label = getGenderLabelForEntityId( entityId, gender );  -- first try to link to occupation article     local link = mw.wikibase.sitelink( entityId )     if link and not label then         label = link     end          -- if we don't have article for occupation, try to link to field of occupation     if not link then     local fooEntity = mw.wikibase.getEntity( entityId );     if fooEntity and fooEntity.claims and fooEntity.claims.P425 then     fooEntity = WDS.filterByRank( fooEntity.claims.P425, 'deprecated', true ); if fooEntity ~= nil and    fooEntity[1] and    fooEntity[1].mainsnak and    fooEntity[1].mainsnak.datavalue and    fooEntity[1].mainsnak.datavalue.value and    fooEntity[1].mainsnak.datavalue.value.id then link = mw.wikibase.sitelink( fooEntity[1].mainsnak.datavalue.value.id ); end end end  -- no article about occupation or field, link to wikidata     if not link then     link = ':d:' .. entityId end      if label then         return '[[' .. link .. '|' .. label .. ']]'     end          -- сообщение об отсутвии локализованного названия     -- not good, but better than nothing     return '[[' .. link .. '|' .. entityId .. ']]?' .. categoryLinksToEntitiesWithMissingLabel; end  function p.formatEntityWithGenderClaim( context, options, statement ) if ( not context ) then error( 'context not specified'); end; if ( not options ) then error( 'options not specified'); end; if ( not options.entity ) then error( 'options.entity is missing'); end; if ( not statement ) then error( 'statement not specified'); end;  local gender = 0 -- per [[ISO/IEC 5218]] if options.entity.claims.P21 and           options.entity.claims.P21[1] and          options.entity.claims.P21[1].mainsnak and          options.entity.claims.P21[1].mainsnak.datavalue and          options.entity.claims.P21[1].mainsnak.datavalue.value     then     local genderId = options.entity.claims.P21[1].mainsnak.datavalue.value.id     if genderId == 'Q6581097' or genderId == 'Q2449503' or genderId == 'Q44148' then     gender = 1     elseif genderId == 'Q6581072' or genderId == 'Q1052281' or genderId == 'Q43445' then     gender = 2 end  end  local snak = statement.mainsnak; if snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.id then local entityId = snak.datavalue.value.id; local value = formatOccupationLinkForEntityId( entityId, gender ) return context.wrapSnak( value, snak.hash ) end  return context.formatSnak( options, snak ) end  function p.applyDefaultTemplate( context, options, statement ) local snak = context.formatSnak( options, statement.mainsnak )     if ( statement.qualifiers and statement.qualifiers.P249 and statement.qualifiers.P249[1].snaktype == 'value') then     snak = statement.qualifiers.P249[1].datavalue.value     entityId = statement.mainsnak.datavalue.value.id wbStatus, entity = pcall( mw.wikibase.getEntity, entityId ); if ( entity.claims and entity.claims.P1424 ) then wbStatus, template = pcall( mw.wikibase.getEntity,  entity.claims.P1424[1].mainsnak.datavalue.value.id ) if template:getSitelink( ) then snak = options.frame:preprocess( string.gsub( template:getSitelink( ),  'Шаблон:', '{{' ) .. '|' ..  statement.qualifiers.P249[1].datavalue.value .. '}}' ) end end     end  --References if ( options.references and snak ) then     snak = snak .. context.formatRefs( options, statement );     end      return snak end  function p.formatCategoryOnly( context, options, value ) return context.extractCategory( options, value ) end   return p 

Tags:

Модуль:Wikidata

🔥 Trending searches on Wiki Русский:

Удовиченко, Лариса ИвановнаПанин, Алексей ВячеславовичЭрнст, Константин ЛьвовичЭйфелева башняНорвегияШейк, ИринаMail.ruКадыров, Рамзан АхматовичМагомаев, Муслим МагометовичПаулс, Раймонд ВолдемаровичАфганистанBlackpinkБрежнев, Леонид ИльичДень жён-мироносицГитлер, АдольфБоевик (киножанр)Гоголь, Николай ВасильевичТаборКиркоров, Филипп БедросовичЕсенин, Сергей АлександровичWildberriesХ-101Кто хочет стать миллионером?Карякин, Сергей АлександровичПираты Карибского моря (серия фильмов)Эскобар, ПаблоШатунов, Юрий ВасильевичАк Барс (хоккейный клуб)Жуков, Георгий КонстантиновичНарусова, Людмила БорисовнаGoСлавянеLinuxРоссияМногопользовательская играСиндром АспергераНацистская ГерманияНаселение РоссииАлександр IIВампиры средней полосыСевастопольПанфилова, Вера КонстантиновнаДибров, Дмитрий АлександровичАтомные бомбардировки Хиросимы и НагасакиВладивостокShamanКубок ГагаринаАтака мертвецовСтейтем, ДжейсонСаудовская АравияКино (группа)Карлсен, МагнусБелтейнШварценеггер, АрнольдНидерландыРэдклифф, ДэниелКрымская войнаГолодные игры (фильм)Белоусов, Евгений ВикторовичСайрус, МайлиКазаньАвтомат КалашниковаТрошев, Андрей НиколаевичC++БельгияZALA ЛанцетЧёрная вдова (фильм, 2021)Кукрыниксы (группа)Нагиев, Дмитрий ВладимировичГибель тургруппы ДятловаBMWПодоляк, Михаил МихайловичКинокомедияПажитнов, Алексей ЛеонидовичПью, ФлоренсЧебурашка (фильм)Армагеддон (шахматы)🡆 More