Постоянно защищенный модуль
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

Методы

Модуль «Викиданные» содержит следующие методы, которые позволяют вызывающему скрипту получить значение любого свойства из Викиданных, указав идентификатор свойства в качестве первого параметра:

  • getValue: Возвращает значения, связанные с wiki, если применимо. Все остальные значения будут выводиться аналогично {{#property:}}, за исключением того, что если существуют значения с предпочтительным рангом, то возвращаются только они. В отличие formatStatementsот w: ru: Модуль: Wikidata , getValueпока не собирает никаких ссылок (см. W: en: Module talk: Wikidata / Archive 1 # Почему ссылки из Wikidata удаляются? ).
  • getRawValue: Возвращает значения несвязанных свойств и числа с разделителем тысяч. Он также возвращает простое числовое значение свойства, которое является количеством. Все остальные значения будут выводиться аналогично {{#property:}}, включая нормальные значения, даже если существуют предпочтительные значения.
  • getDateValue: Специальный метод для возврата отформатированных дат. Формат даты по умолчанию - [день месяц год]; необязательный третий параметр может быть добавлен для других форматов даты: для [месяц, день, год] добавьте «mdy»; для [месяц год] добавить «мой»; только для года добавьте "y". Дополнительный необязательный параметр, который должен быть четвертым, например «BCE», может быть добавлен для отмены значения по умолчанию «BC», которое имеет суффикс для дат BC.
  • getImages: Возвращает все изображения определенного свойства, например изображение (P18), изображение генного атласа (P692) и т. Д. Параметры | propertyID | value / FETCH_WIKIDATA / nil | separator (default=space) | size (default=220px). Возвращенный текст будет в формате [[File: Filename | size]] для каждого изображения с выбираемым размером и разделителем (который может быть HTML). Если предоставлено свойство, отличное от типа commonsMedia, оно вернет пустой текст.
  • getUnitsОн принимает свойство propertyID, которое представляет собой количество, в качестве первого параметра и возвращает имя единиц, которые свойство использует на текущей странице. Он возвращает пустое значение, если свойство не является количественным типом или если значение не задано. Второй параметр может использоваться для отмены выборки из Викиданных, если это что-то иное, кроме «FETCH_WIKIDATA».
  • getUnitIDОн принимает свойство propertyID, которое представляет собой количество, в качестве первого параметра и возвращает QID единиц, которые свойство использует на текущей странице. Он возвращает пустое значение, если свойство не является количественным типом или если значение не задано. Второй параметр может использоваться для отмены выборки из Викиданных, если это что-то иное, кроме «FETCH_WIKIDATA».

Значения квалификатора Викиданных (если они есть) можно получить следующими способами:

  • getQualifierValue: возвращает только значения, связанные с wiki, если применимо.
  • getRawQualifierValue: возвращает несвязанные значения
  • getQualifierDateValue: возвращает отформатированные даты

Если свойство не определено в Викиданных для статьи, которая вызывает этот код, возвращается пустая строка ("").

Другие методы:

  • pageId: возвращает идентификатор Wikidata (Q…) текущей страницы или ничего, если страница не подключена к Wikidata. Чтобы получить идентификатор Викиданных другой страницы, используйте {{#invoke: ResolveEntityId | страница }} .
  • getTAValue: получает значения TA98 (Terminologia Anatomica, первое издание 1998 г.) для свойства P1323. Он не принимает никаких параметров и строит свой вывод в виде списка, в котором каждое значение связано с внешним ресурсом. Это образец для написания вызовов, которые должны возвращать внешние ссылки.
  • ViewSomething: получает что-нибудь из структурированных данных, включая метки, описания, ссылки и межвики-ссылки. См. [1]
  • getSiteLink: получает имя страницы, указанное в аргументе wiki (например, «enwikiquote» для английской Wikiquote, «arwiki» для арабской Wikipedia).
  • Dump: {{#invoke:Wikidata|Dump|claims}}шпионит за структурированными данными. Он использует те же аргументы, что и ViewSomething. Попробуйте это с предварительным просмотром, только чтобы увидеть результаты. Это очень помогает вам в разработке сценариев Lua, которые обращаются к данным. Если используется без аргументов, он сбрасывает все, включая метки, описания, ссылки и межвики-ссылки. Есть шаблон оболочки, см. {{ Дамп }}.
  • getImageLegend: возвращает легенду изображения (изображение - свойство P18; легенда изображения - свойство P2096).
    Звоните как {{#invoke:Wikidata |getImageLegend | <PARAMETER> | lang=<ISO-639code> |id=<QID>}}
    Возвращает ПАРАМЕТР, если он не равен «FETCH_WIKIDATA», из QID элемента (дорогостоящий вызов). Если QID опущен или пуст, используется текущая статья (не дорогой вызов). Если lang не указан, используется местный язык вики, в противном случае используется предоставленный код языка ISO-639.
    Метка возвращается из первого изображения с «предпочтительным» рангом; или от первого изображения с «нормальным» рангом, если ни одно изображение не имеет предпочтительного ранга.
  • getValueShortName: возвращает те же данные, что и getValue, но использует короткое имя свойства в качестве метки, если доступно. Это позволяет конвейерным ссылкам использовать более короткие метки там, где это необходимо. Если для элемента не задано короткое имя, используется обычная метка.

Произвольный доступ

С 16 сентября 2015 г. появилась возможность получать данные из других статей, используя их QID. Следующий звонок:

  • {{#invoke:Wikidata|getValueFromID|<QID>|<Property>|FETCH_WIKIDATA}}

будет делать то же самое, что и getValue, но принимает дополнительный параметр, который представляет собой QID элемента Викиданных, из которого вы хотите получить значение свойства. Например:

  • {{#invoke:Wikidata|getValueFromID|Q151973|P26|FETCH_WIKIDATA}}

получит список связанных значений для «супруга» (P26) из «Ричарда Бертона» (Q151973) из любой точки английской Википедии.

Это означает, что среды тестирования могут быть настроены в пользовательском пространстве, но помните, что эти вызовы считаются дорогими , поэтому используйте их как можно реже.

Параметры

  • Для обобщенного случая (getValue) предоставляются два безымянных параметра. Первый - это идентификатор свойства, которое необходимо получить (например, P19 для места рождения или P26 для супруга). Вторая может быть нулевой, «FETCH_WIKIDATA» или любой другой строкой, которая становится возвращаемым значением.
  • Для обобщенного несвязанного случая (getRawValue) предоставляются два безымянных параметра. Первый - это идентификатор свойства, которое необходимо получить (например, P21 для пола). Вторая может быть нулевой, «FETCH_WIKIDATA» или любой другой строкой, которая становится возвращаемым значением.
  • Для случая обобщенной даты (getDateValue) предоставляются три безымянных параметра. Первый - это идентификатор свойства, которое необходимо получить (например, P569 для даты рождения). Вторая может быть нулевой, «FETCH_WIKIDATA» или любой другой строкой, которая становится возвращаемым значением. Третий - это формат, в котором должна возвращаться дата: dmy, mdy, my или y.

Обратите внимание, что параметры в нижнем регистре больше не поддерживаются вызовом викибазы: p123 , поэтому убедитесь, что в случае возникновения проблем используются верхний регистр, например P123.

использование

Пример: супруга (P26)

  • {{#invoke:Wikidata|getValue|P26|}} = ничего не возвращает, поэтому подавляет отображение супруга в информационном окне
  • {{#invoke:Wikidata|getValue|P26|FETCH_WIKIDATA}}= возвращает связанные значения свойства P26 (супруга), хранящиеся в викиданных для соответствующей статьи (например, для статьи Билла Клинтона возвращается Хиллари Клинтон )
  • {{#invoke:Wikidata|getValue|P26|[[Hillary Rodham Clinton]]}}= возвращает Хиллари Родэм Клинтон , позволяя информационному окну использовать локальное значение, а не значение, хранящееся в Викиданных.

Пример в шаблоне инфобокса

Внутри определения информационного окна он может называться так:

  • | data55 = {{#invoke:Wikidata|getValue|P26|{{{spouse|FETCH_WIKIDATA}}} }}

что заставляет информационное окно:

  1. не отображать супруга, если параметр информационного окна |spouseустановлен пустым (как "| spouse ="}
  2. отображать связанные значения из Викиданных, если параметр информационного поля |spouseне указан
  3. отобразить параметр локального информационного окна, |spouseесли он указан (например "|spouse = Hillary Rodham Clinton")

При желании его можно было бы назвать так:

  • | data55 = {{#invoke:Wikidata|getValue|P26|{{{spouse|}}} }}

что заставляет информационное окно:

  1. не отображать супруга, если параметр информационного окна |spouseустановлен пустым (как "| spouse ="}
  2. не отображать супруга, если |spouseне указан параметр инфобокса
  3. отобразить параметр локального информационного окна, |spouseесли он указан (например "|spouse = Hillary Rodham Clinton")
  4. отображать связанные значения из Викиданных, если параметр информационного окна локально установлен на FETCH_WIKIDATA

См. Модуль: WikidataIB для модификации, которая позволяет вносить поля для каждой статьи в черный список, чтобы они никогда не отображались. Он также позволяет редактору указывать для каждой статьи, какие поля могут автоматически выбираться из Викиданных, когда предоставляется локальный параметр; значение по умолчанию - none, что позволяет изменять информационное окно для приема Викиданных без каких-либо изменений в статьях, использующих информационное окно, до тех пор, пока эта функция не будет включена в статье.

Пример: место рождения

Это работает точно так же, как и приведенные выше вызовы:

  • {{#invoke:Wikidata|getValue|P19|}} = ничего не возвращает, поэтому подавляет отображение места рождения в информационном окне
  • {{#invoke:Wikidata|getValue|P19|FETCH_WIKIDATA}}= возвращает связанные значения свойства P19 (место рождения), хранящиеся в викиданных для соответствующей статьи (например, для статьи Билла Клинтона возвращается Хоуп, Арканзас )
  • {{#invoke:Wikidata|getValue|P19|[[Hope, Arkansas|Hope]]}}= возвращает Hope , позволяя информационному окну использовать локальное значение, а не значение, хранящееся в Викиданных.

Пример: пол

Мы не хотим связывать возвращаемое значение, поэтому используйте:

  • - {{#invoke:Wikidata|getRawValue|P21|FETCH_WIKIDATA}}

Пример: дата рождения

Если нам нужна дата рождения в формате dmy, мы используем:

  • - {{#invoke:Wikidata|getDateValue|P569|FETCH_WIKIDATA|dmy}}

Если нам нужна дата рождения в формате mdy, мы используем:

  • - {{#invoke:Wikidata|getDateValue|P569|FETCH_WIKIDATA|mdy}}

Если нам нужен год рождения, мы используем:

  • - {{#invoke:Wikidata|getDateValue|P569|FETCH_WIKIDATA|y}}

Если нам нужен год рождения, который может быть BC, но должен читаться как «BCE», мы используем:

  • - {{#invoke:Wikidata|getDateValue|P569|FETCH_WIKIDATA|y|BCE}}

Пример: ссылка на элемент Викиданных

Используйте следующий код, чтобы просто получить Q-ID:

  • - {{#invoke:Wikidata|pageId}}

При связывании с Викиданными использовалась обычная разметка Wiki:

  • - [[d:{{#invoke:Wikidata|pageId}}|Name of Link]]

Пример: ссылка на другую вики-страницу

Используйте подобный код для ссылки на другую вики. Английский Wikivoyage в примере:

  • - [[voy:{{#invoke:Wikidata|getSiteLink|enwikivoyage}}|Name of Link]]


Тестирование

Тестирование супруга

Скопируйте и вставьте следующее в любую статью и просмотрите ее (пожалуйста, не сохраняйте!):

 * - {{#invoke: Wikidata | getValue | P26 |}} * - {{#invoke: Wikidata | getValue | P26 | FETCH_WIKIDATA}} * - {{#invoke: Wikidata | getValue | P26 | [[Хиллари Родэм Клинтон]] }}

В Билле Клинтоне вы должны получить:

  • -
  • - Хиллари Клинтон
  • - Хиллари Родэм Клинтон


В Бараке Обаме вы должны получить:

  • -
  • - Мишель Обама
  • - Хиллари Родэм Клинтон


В Ричарде Бертоне вы должны получить:

  • -
  • - Элизабет Тейлор , Салли Бертон , Сибил Кристофер , Сьюзи Миллер , Элизабет Тейлор
  • - Хиллари Родэм Клинтон


В Franz Kafka вы должны получить:

  • -
  • -
  • - Хиллари Родэм Клинтон

Тестирование места рождения

Скопируйте и вставьте следующее в любую статью и просмотрите ее (пожалуйста, не сохраняйте!):

 * - {{#invoke: Wikidata | getValue | P19 |}} * - {{#invoke: Wikidata | getValue | P19 | FETCH_WIKIDATA}} * - {{#invoke: Wikidata | getValue | P19 | [[Ньюпорт]] }}

Попробуйте Уильяма Эллери и убедитесь, что вызов Викиданных правильно устраняет неоднозначность.

Тестирование getValue, getRawValue и getDateValue

Скопируйте и вставьте следующее в любую статью и просмотрите ее (пожалуйста, не сохраняйте!):

 * - {{#invoke: Wikidata | getValue | P19 | FETCH_WIKIDATA}} * - {{#invoke: Wikidata | getValue | P26 | FETCH_WIKIDATA}} * - {{#invoke: Wikidata | getValue | P27 | FETCH_WIKIDATA}} * - {{#invoke: Wikidata | getValue | P140 | FETCH_WIKIDATA}} * - {{#invoke: Wikidata | getRawValue | P21 | FETCH_WIKIDATA}} * - {{#invoke: Wikidata | getDateValue | P569 | FETCH_WIKIDATA | dmy}} * - {{#invoke: Wikidata | getDateValue | P569 | FETCH_WIKIDATA | mdy}} * - {{#invoke: Wikidata | getDateValue | P569 | FETCH_WIKIDATA | y}}

Это должно вернуть значения Викиданных для места рождения, супруга, гражданства, религии, пола, даты рождения (дважды) и года рождения, если они существуют. Dob сначала находится в формате dmy, а затем в формате mdy.

Даты тестирования BC / BCE

Скопируйте и вставьте следующее в короткий раздел статьи, например Horace # См. Также и просмотрите его (пожалуйста, не сохраняйте!):

 * - {{#invoke: Wikidata | getDateValue | P569 | FETCH_WIKIDATA | y}} * - {{#invoke: Wikidata | getDateValue | P569 | FETCH_WIKIDATA | y | BCE}}

Это должно вернуть 65 г. до н.э. и 65 г. до н.э. соответственно.

Смотрите также

  • Модуль: WikidataIB , для обработки Викиданных в информационных ящиках.

- vim: установить noexpandtab ft = lua ts = 4 sw = 4:require ( 'Модуль: без глобальных переменных' )местный  p  =  {}локальная  отладка  =  ложь-------------------------------------------------- ----------------------------- локальные переменные и функции модуляместная  вики  ={langcode  =  mw . язык . getContentLanguage (). код}- интернационализацияместный  i18n  ={[ "ошибки" ]  ={[ "property-not-found" ]  =  "Свойство не найдено." ,[ "entity-not-found" ]  =  "Объект Викиданных не найден." ,[ "unknown-Claim-type" ]  =  "Неизвестный тип утверждения." ,[ "unknown-entity-type" ]  =  "Неизвестный тип объекта." ,[ "qualifier-not-found" ]  =  "Квалификатор не найден". ,[ "site-not-found" ]  =  "Проект Викимедиа не найден." ,[ "unknown-datetime-format" ]  =  "Неизвестный формат даты и времени." ,[ "local-article-not-found" ]  =  "Статья еще не доступна в этой вики."},[ "datetime" ]  ={- $ 1 - это фактическое число.[ 0 ]  =  "$ 1 миллиард лет" , - точность: миллиард лет[ 1 ]  =  "100 миллионов лет" , - точность: сто миллионов лет.[ 2 ]  =  "10 миллионов лет" , - точность: десять миллионов лет.[ 3 ]  =  "1 миллион лет" , - точность: миллион лет[ 4 ]  =  "100 000 лет" , - точность: сто тысяч лет.[ 5 ]  =  "$ 10 000 лет" , - точность: десять тысяч лет[ 6 ]  =  "1 тысячелетие" , - точность: тысячелетие[ 7 ]  =  "$ 1 век" , - точность: век[ 8 ]  =  "$ 1 с" , - точность: декада- следующие используют формат функции парсера #time[ 9 ]  =  "Y" , - точность: год,[ 10 ]  =  "F Y" , - точность: месяц[ 11 ]  =  "F j, Y" , - точность: день[ 12 ]  =  "F j, Y ga" , - точность: час[ 13 ]  =  "F j, Y g: ia" , - точность: минуты[ 14 ]  =  "F j, Y g: i: sa" , - точность: секунда[ "beforenow" ]  =  "$ 1 BCE" , - как форматировать отрицательные числа для точности от 0 до 5[ "afternow" ]  =  "$ 1 CE" , - как форматировать положительные числа для точности от 0 до 5[ "bc" ]  =  '$ 1 "BCE"' , - как печатать отрицательные годы[ "ad" ]  =  "$ 1" , - как печатать положительные годы- следующие данные относятся к функциям getDateValue () и getQualifierDateValue ()[ "default-format" ]  =  "dmy" ,  - значение по умолчанию # 3 (getDateValue) или- Аргумент # 4 (getQualifierDateValue)[ "default-addon" ]  =  "BC" , - значение по умолчанию # 4 (getDateValue) или- Аргумент # 5 (getQualifierDateValue)[ "prefix-addon" ]  =  false , - установите значение true, для языков поставьте "BC" перед- строка даты и времени; или аддон будет иметь суффикс[ "addon-sep" ]  =  "" , - разделитель между строкой даты и времени и дополнением (или обратным)[ "format" ]  = - варианты 3-го аргумента{[ "mdy" ]  =  "F j, Y" ,[ "my" ]  =  "F Y" ,[ "y" ]  =  "Y" ,[ "dmy" ]  =  "j F Y" ,[ "ymd" ]  =  "Ymd" ,[ "ym" ]  =  "Ym"}},[ "monolingualtext" ]  =  '<span lang = "% language">% text </span>' ,[ "warnDump" ]  =  "[[Категория: Вызывается функция 'Dump' из модуля Wikidata]]" ,[ "порядковый номер" ]  ={[ 1 ]  =  "st" ,[ 2 ]  =  "nd" ,[ 3 ]  =  "rd" ,[ "по умолчанию" ]  =  "th"}}если  вики . langcode  ~ =  "en"  тогда--require ("Модуль: i18n"). loadI18n ("Модуль: Викиданные / i18n", i18n)- идея из [[: w: Module: Wd]]локальный  module_title ;  если  ...  ==  ноль,  тоmodule_title  =  mw . getCurrentFrame (): getTitle ()ещеmodule_title  =  ...конецrequire ( 'Модуль: i18n' ). loadI18n ( название_модуля .. '/ i18n' ,  i18n )конец- эта функция должна быть интернационализирована вместе с приведенным выше:- принимает количественное число как число и возвращает порядковый номер в виде строки- нам нужно три исключения на английском для 1-го, 2-го, 3-го, 21-го, ... 31-го и т. д.локальная  функция  makeOrdinal  ( cardinal )местный  ordsuffix  =  i18n . порядковый . дефолтесли  кардинал  %  10  ==  1,  тоordsuffix  =  i18n . порядковый [ 1 ]иначе, если  кардинал  %  10  ==  2,  тоordsuffix  =  i18n . порядковый [ 2 ]иначе, если  кардинал  %  10  ==  3,  тогдаordsuffix  =  i18n . порядковый [ 3 ]конец- В английском, 1, 21, 31 и т. Д. Используют st, а 11, 111 и т. Д. Используют th.- аналогично для 12 и 13 и т. д.если  ( кардинальный  %  100  ==  11 )  или  ( кардинальный  %  100  ==  12 )  или  ( кардинальный  %  100  ==  13 ),  тоordsuffix  =  i18n . порядковый . дефолтконецreturn  tostring ( cardinal )  ..  ordsuffixконецлокальная  функция  printError ( код )return  '<span class = "error">'  ..  ( i18n . errors [ код ]  или  код )  ..  '</span>'конецлокальная  функция  parseDateFormat ( f ,  timestamp ,  addon ,  prefix_addon ,  addon_sep ) местный  год_суффиксместный  tstr  =  ""локальный  lang_obj  =  mw . язык . новый ( wiki . langcode )местные  f_parts  =  mw . текст . split ( f ,  'Y' ,  истина )для  IDX ,  f_part  в  пар ( f_parts )  делатьyear_suffix  =  ''если  string.match ( f_part ,  "x [mijkot] $" ),  то- для не григорианского годаf_part  =  f_part  ..  'Y'elseif  idx  <  # f_parts  тогда- убрать ведущие нули в годуyear_suffix  =  lang_obj : formatDate ( 'Y' ,  отметка времени )год_суффикс  =  строка.gsub ( суффикс_год ;  '^ 0 +' ,  '' ,  1 )конецtstr  =  tstr  ..  lang_obj : formatDate ( f_part ,  timestamp )  ..  year_suffixконецесли  addon  ~ =  ""  и  prefix_addon,  товернуть  аддон  ..  addon_sep  ..  tstrelseif  addon  ~ =  ""  тогдавернуть  tstr  ..  addon_sep  ..  addonещевернуть  tstrконецконецлокальная  функция  parseDateValue ( timestamp ,  date_format ,  date_addon )local  prefix_addon  =  i18n [ "datetime" ] [ "префикс-аддон" ]local  addon_sep  =  i18n [ "datetime" ] [ "addon-sep" ]локальный  аддон  =  ""- проверка на отрицательную датуесли  string.sub ( timestamp ,  1 ,  1 )  ==  '-'  тогдаtimestamp  =  '+'  ..  string.sub ( отметка времени ,  2 )addon  =  date_addonконецlocal  _date_format  =  i18n [ "datetime" ] [ "format" ] [ date_format ]если  _date_format  ~ =  nil,  товернуть  parseDateFormat ( _date_format ,  timestamp ,  addon ,  prefix_addon ,  addon_sep )ещеreturn  printError ( "неизвестный формат даты и времени" )конецконец- Эта локальная функция объединяет обработку parseDateValue {} год / месяц / день / до н.э. / до н.э.- с обработкой тысячелетия / века / десятилетия formatDate ()локальная  функция  parseDateFull ( отметка времени ,  точность ,  date_format ,  date_addon )local  prefix_addon  =  i18n [ "datetime" ] [ "префикс-аддон" ]local  addon_sep  =  i18n [ "datetime" ] [ "addon-sep" ]локальный  аддон  =  ""- проверка на отрицательную датуесли  string.sub ( timestamp ,  1 ,  1 )  ==  '-'  тогдаtimestamp  =  '+'  ..  string.sub ( отметка времени ,  2 )addon  =  date_addonконец- получить следующие четыре символа после + (во всех случаях должен быть год)- хорошо, это грязно, но давайте сначала поработаемlocal  intyear  =  tonumber ( string.sub ( временная метка ,  2 ,  5 ))если  intyear  ==  0  и  precision  <=  9,  товернуться  ""конец- точность 10000 лет и болееесли  точность  <=  5,  томестный  коэффициент  =  10  ^  (( 5  -  точность )  +  4 )локальный  y2  =  math.ceil ( math.abs ( intyear )  /  factor )местный  родственник  =  mw . ustring . gsub ( i18n . datetime [ точность ],  «$ 1» ,  tostring ( y2 ))если  аддон  ~ =  ""  тогда- отрицательная датаотносительный  =  mw . ustring . gsub ( i18n . datetime . beforenow ,  «$ 1» ,  относительный )ещеотносительный  =  mw . ustring . gsub ( i18n . datetime . afternow ,  «$ 1» ,  относительный )конецвернуться  родственникконец- точность - десятилетия (8), века (7) и тысячелетия (6)местная  эпоха ,  картаесли  точность  ==  6,  тоcard  =  math.floor (( intyear  -  1 )  /  1000 )  +  1эра  =  мв . ustring . gsub ( i18n . datetime [ 6 ],  «$ 1» ,  makeOrdinal ( карточка ))конецесли  точность  ==  7,  тоcard  =  math.floor (( год  -  1 )  /  100 )  +  1эра  =  мв . ustring . gsub ( i18n . datetime [ 7 ],  "$ 1" ,  makeOrdinal ( карточка ))конецесли  точность  ==  8,  тоэра  =  мв . ustring . gsub ( i18n . datetime [ 8 ],  «$ 1» ,  tostring ( math.floor ( math.abs ( intyear )  /  10 )  *  10 ))конецесли  эпоха,  тоесли  аддон  ~ =  ""  тогдаэра  =  мв . ustring . gsub ( mw . ustring . gsub ( i18n . datetime . bc ,  '"' ,  " " ),  " $ 1 " ,  эра )ещеэра  =  мв . ustring . gsub ( mw . ustring . gsub ( i18n . datetime . ad ,  '"' ,  " " ),  " $ 1 " ,  эра )конец эпоха возвращенияконецlocal  _date_format  =  i18n [ "datetime" ] [ "format" ] [ date_format ]если  _date_format  ~ =  nil,  то- проверка точности - год и переопределение предоставленного date_formatесли  точность  ==  9,  то_date_format  =  i18n [ "datetime" ] [ 9 ]конецвернуть  parseDateFormat ( _date_format ,  timestamp ,  addon ,  prefix_addon ,  addon_sep )ещеreturn  printError ( "неизвестный формат даты и времени" )конецконец- поля "qualifiers" и "snaks" имеют соответствующие поля "qualifiers-order" и "snaks-order"- используйте их как второй параметр и эту функцию вместо встроенной функции "пар".- перебрать все квалификаторы и снаки в намеченном порядке.локальная  функция  orderspairs ( массив ,  порядок )если  не  порядок,  то  верните  пары ( массив )  конец- вернуть функцию итератораместный  я  =  0 функция возврата ()я  =  я  +  1если  заказ [ i ],  то порядок возврата [ i ],  массив [ порядок [ i ]]конецконецконец- точность: 0 - миллиард лет, 1 - сто миллионов лет, ..., 6 - тысячелетия, 7 - век, 8 - декада, 9 - год, 10 - месяц, 11 - день, 12 - час, 13 - минута , 14 - второйлокальная  функция  normalizeDate ( дата )дата  =  мв . текст . обрезать ( дата ,  "+" )- год выпискиместный  годstr  =  mw . ustring . совпадение ( дата ,  "^ \ -?% d +" )местный  год  =  ToNumber ( yearstr )- удалить ведущие нули годавернуться  год  ..  МВТ . ustring . sub ( date ,  # yearstr  +  1 ),  годконецлокальная  функция  formatDate ( дата ,  точность ,  часовой пояс )precision  =  precision  или  11местная  дата ,  год  =  normalizeDate ( дата )если  год  ==  0  и  точность  <=  9 ,  то  вернуть  «»  конец- точность 10000 лет и болееесли  точность  <=  5,  томестный  коэффициент  =  10  ^  (( 5  -  точность )  +  4 )локальный  y2  =  math.ceil ( math.abs ( год )  /  фактор )местный  родственник  =  mw . ustring . gsub ( i18n . datetime [ точность ],  «$ 1» ,  tostring ( y2 ))если  год  <  0,  тоотносительный  =  mw . ustring . gsub ( i18n . datetime . beforenow ,  «$ 1» ,  относительный )ещеотносительный  =  mw . ustring . gsub ( i18n . datetime . afternow ,  «$ 1» ,  относительный )конецвернуться  родственникконец- точность - это десятилетия, века и тысячелетияместная  эпохаесли  точность  ==  6,  то  эра  =  mw . ustring . gsub ( i18n . datetime [ 6 ],  «$ 1» ,  tostring ( math.floor (( math.abs ( год )  -  1 )  /  1000 )  +  1 ))  endесли  точность  ==  7,  то  эра  =  mw . ustring . gsub ( i18n . datetime [ 7 ],  "$ 1" ,  tostring ( math.floor (( math.abs ( год )  -  1 )  /  100 )  +  1 ))  endесли  точность  ==  8,  то  эра  =  mw . ustring . gsub ( i18n . datetime [ 8 ],  "$ 1" ,  tostring ( math.floor ( math.abs ( год )  /  10 )  *  10 ))  endесли  эпоха,  тоесли  год  <  0,  то  эра  =  mw . ustring . gsub ( mw . ustring . gsub ( i18n . datetime . bc ,  '"' ,  " " ),  " $ 1 " ,  эра )иначе, если  год  >  0,  то  эра  =  mw . ustring . gsub ( mw . ustring . gsub ( i18n . datetime . ad ,  '"' ,  " " ),  " $ 1 " ,  эра )  конец эпоха возвращенияконец- точность годесли  точность  ==  9,  товозвращение  годаконец- точность меньше летесли  точность  >  9,  то- [[следующий код заменяет суффикс UTC на указанный отрицательный часовой пояс, чтобы преобразовать глобальное время в заданное местное времячасовой пояс = номер (часовой пояс)если часовой пояс и часовой пояс ~ = 0, точасовой пояс = -timezonetimezone = string.format ("%. 2d% .2d", часовой пояс / 60, часовой пояс% 60)если часовой пояс [1] ~ = '-' тогда часовой пояс = "+" .. конец часового поясаdate = mw.text.trim (date, "Z") .. "" .. часовой поясконец]] -локальный  формат str  =  i18n . дата и время [ точность ]если  год  ==  0,  то  formatstr  =  mw . ustring . gsub ( formatstr ,  i18n . datetime [ 9 ],  "" )иначе, если  год  <  0,  то- Формат MediawikiDate не поддерживает отрицательные годыдата  =  мв . ustring . sub ( дата ,  2 )formatstr  =  mw . ustring . gsub ( formatstr ,  i18n . datetime [ 9 ],  mw . ustring . gsub ( i18n . datetime . bc ,  "$ 1" ,  i18n . datetime [ 9 ]))elseif  year  >  0  и  i18n . дата и время . ad  ~ =  "$ 1",  затемformatstr  =  mw . ustring . gsub ( formatstr ,  i18n . datetime [ 9 ],  mw . ustring . gsub ( i18n . datetime . ad ,  "$ 1" ,  i18n . datetime [ 9 ]))конецвернуть  мв . язык . новый ( wiki . langcode ): formatDate ( formatstr ,  date )конецконецлокальная  функция  printDatavalueEntity ( данные ,  параметр )- поля данных: тип объекта [строка], числовой идентификатор [целое число, идентификатор Викиданных]местный  идентификаторесли  data [ "entity-type" ]  ==  "item",  то  id  =  "Q"  ..  data [ "numeric-id" ]elseif  data [ "entity-type" ]  ==  "property"  then  id  =  "P"  ..  data [ "numeric-id" ]иначе  вернуть  printError ( "неизвестный-тип-сущности" )конецесли  параметр,  тоесли  параметр  ==  "ссылка"  тоlocal  linkTarget  =  mw . викибаза . getSitelink ( идентификатор )local  linkName  =  mw . викибаза . getLabel ( идентификатор )если  linkTarget,  то- если есть ссылка на статью из локальной Википедии с помощью метки или заголовка статьиreturn  "[["  ..  linkTarget  ..  "|"  ..  ( linkName  или  linkTarget )  ..  "]]"еще- если нет локальной статьи Википедии, выведите метку или ссылку на объект Викиданных, чтобы пользователь мог ввести правильную меткуесли  linkName,  то  вернуть  linkName  else  return  "[[: d:"  ..  id  ..  "|"  ..  id  ..  "]]"  конецконецещевернуть  данные [ параметр ]конецещевернуть  мв . викибаза . getLabel ( id )  или  idконецконецлокальная  функция  printDatavalueTime ( данные ,  параметр )- поля данных: время [время ISO 8601], часовой пояс [int в минутах], до [int], после [int], precision [int], calendarmodel [URI викиданных]- точность: 0 - миллиард лет, 1 - сто миллионов лет, ..., 6 - тысячелетия, 7 - век, 8 - декада, 9 - год, 10 - месяц, 11 - день, 12 - час, 13 - минута , 14 - второй- calendarmodel: например, http://www.wikidata.org/entity/Q1985727 для пролептического григорианского календаря или http://www.wikidata.org/wiki/Q11184 для юлианского календаря]если  параметр,  тоесли  параметр  ==  "calendarmodel",  то  данные . calendarmodel  =  mw . ustring . match ( data . calendarmodel ,  "Q% d +" )  - извлечь идентификатор объекта из URI календарной моделиelseif  параметр  ==  "время"  затем  данные . время  =  normalizeDate ( дата . время )  конецвернуть  данные [ параметр ]ещеreturn  formatDate ( данные . время ,  данные . точность ,  данные . часовой пояс )конецконецлокальная  функция  printDatavalueMonolingualText ( данные ,  параметр )- поля данных: язык [строка], текст [строка]если  параметр,  товернуть  данные [ параметр ]ещелокальный  результат  =  mw . ustring . gsub ( mw . ustring . gsub ( i18n . monolingualtext ,  "%% language" ,  data [ "language" ]),  "%% text" ,  data [ "text" ])вернуть  результатконецконецлокальная  функция  findClaims ( объект ,  свойство )если  не  имущество  или  не  юридическое лицо  или  не  юридическое лицо . претензии  затем  вернуть  конецесли  мв . ustring . match ( свойство ,  "^ P% d + $" ),  затем- если свойство задано идентификатором (P ..), доступ к списку заявок по этому идентификаторувернуть  объект . претензии [ собственность ]ещесвойство  =  mw . викибаза . resolvePropertyId ( свойство )если  не  свойство,  то  верните  конецвернуть  объект . претензии [ собственность ]конецконецлокальная  функция  getSnakValue ( змейка ,  параметр )если  змейка . snaktype  ==  "значение"  тогда- вызвать соответствующий парсер змейесли  змейка . значение данных . введите  ==  "строка",  затем  верните  змейку . значение данных . ценитьelseif  snak . значение данных . введите  ==  "глобускоордината",  затем  верните  printDatavalueCoordinate ( snak . datavalue . value ,  параметр )elseif  snak . значение данных . введите  ==  "количество",  затем  верните  printDatavalueQuantity ( snak . datvalue . value ,  параметр )elseif  snak . значение данных . введите  ==  "время",  затем  верните  printDatavalueTime ( snak . datavalue . value ,  параметр )elseif  snak . значение данных . введите  ==  "wikibase-entityid",  затем  верните  printDatavalueEntity ( snak . datavalue . value ,  параметр )elseif  snak . значение данных . введите  ==  "  monolingualtext ", затем  верните  printDatavalueMonolingualText ( snak . datvalue . value ,  параметр )конецконецвернуть  мв . викибаза . renderSnak ( змейка )конецлокальная  функция  getQualifierSnak ( заявка ,  qualifierId )- «змейка» - это терминология Викиданных для типизированной пары ключ / значение.- претензия состоит из основной змеи, содержащей основную информацию этой претензии,- а также список змейок атрибутов и список змейков ссылокесли  qualifierId  тогда- поиск по атрибуту snak с заданным квалификатором в качестве ключаесли  претензии . квалификаторы  тогдаместный  квалификатор  =  заявка . квалификаторы [ qualifierId ]если  квалификатор,  то  верните  квалификатор [ 1 ]  конецконецreturn  nil ,  printError ( "квалификатор не найден" )еще- иначе вернуть основную змейкувозврат  претензии . гротконецконецлокальная  функция  getValueOfClaim ( заявка ,  qualifierId ,  параметр )локальная  ошибкаместная  змеяsnak ,  error  =  getQualifierSnak ( заявка ,  qualifierId )если  змея,  товернуть  getSnakValue ( змейка ,  параметр )ещевернуть  ноль ,  ошибкаконецконецлокальная  функция  getReferences ( кадр ,  утверждение )местный  результат  =  ""- пройти по всем ссылкамдля  ссылки  в  парах ( претензия . ссылки  или  {})  сделайтеместные  ссылки- пройти по всем частям текущей ссылкидля  snakkey ,  snakval  в  упорядоченных парах ( заявка . ссылки [ ref ]. snaks  или  {},  заявка . ссылки [ ref ] [ "snaks-order" ])  делатьесли  refparts,  то  refparts  =  refparts  ..  ","  else  refparts  =  ""  конец- вывести метку свойства эталонной детали, например, «импортировано из» для P143refparts  =  refparts  ..  tostring ( mw . wikibase . getLabel ( snakkey ))  ..  ":"- вывести все значения этой справочной части, например «Немецкая Википедия» и «Английская Википедия», если указанное утверждение было импортировано с обоих сайтов.для  snakidx  =  1 ,  # snakval  doесли  snakidx  >  1,  то  refparts  =  refparts  ..  ","  конецrefparts  =  refparts  ..  getSnakValue ( snakval [ snakidx ])конецконецесли  refparts,  то  result  =  result  ..  frame : extensionTag ( "ref" ,  refparts )  endконецвернуть  результатконецлокальная  функция  parseInput ( кадр )локальный  qid  =  frame . аргументы . qidесли  qid  и  ( # qid  ==  0 ),  то  qid  =  nil  endлокальный  propertyID  =  mw . текст . обрезать ( frame . args [ 1 ]  или  "" )локальный  input_parm  =  mw . текст . обрезать ( frame . args [ 2 ]  или  "" )если  input_parm  ~ =  "FETCH_WIKIDATA",  товернуть  false ,  input_parm ,  nil ,  nilконецлокальный  объект  =  mw . викибаза . getEntity ( qid )местные  претензииесли  сущность  и  сущность . претензии  тогдапретензии  =  сущность . претензии [ propertyID ]если  не  претензии  товернуть  false ,  "" ,  ноль ,  нольконецещевернуть  false ,  "" ,  ноль ,  нольконецвернуть  истину ,  сущность ,  утверждения ,  propertyIDконецлокальная  функция  isType ( утверждения ,  тип )вернуть  претензии [ 1 ]  и  претензии [ 1 ]. mainsnak . snaktype  ==  "значение"  и  претензии [ 1 ]. mainsnak . значение данных . тип  ==  типконецлокальная  функция  getValue ( объект ,  утверждения ,  propertyID ,  delim ,  labelHook ) если  labelHook  ==  nil,  тогдаlabelHook  =  функция  ( qnumber )вернуть  ноль ;конецконецесли  isType ( утверждает ,  "wikibase-entityid" ),  тоlocal  out  =  {}для  к ,  V  в  пар ( претензий )  делаютlocal  qnumber  =  "Q"  ..  v . mainsnak . значение данных . значение [ "числовой-идентификатор" ]местная  дополнительная ссылка  =  mw . викибаза . getSitelink ( qnumber )local  label  =  labelHook ( qnumber )  или  mw . викибаза . getLabel ( qnumber )  или  qnumberесли  дополнительная ссылка,  тоout [ # out  +  1 ]  =  "[["  ..  дополнительная ссылка  ..  "|"  ..  label  ..  "]]"ещеout [ # out  +  1 ]  =  "[[: d:"  ..  qnumber  ..  "|"  ..  label  ..  "]] <abbr title = '"  ..  i18n [ "errors" ] [ "local-article-not-found" ]  ..  "'> [*] </abbr>"конецконецвернуть  table.concat ( out ,  delim )еще- просто вернуть лучшие значениявозвращаемый  объект : formatPropertyValues ( propertyID ). ценитьконецконец-------------------------------------------------- ----------------------------- глобальные функции модуляесли  отладка,  тофункция  p . inspectI18n ( рамка )местный  val  =  i18nдля  _ ,  ключ  в  парах ( кадр . арг )  делатьключ  =  mw . текст . обрезать ( ключ )val  =  val [ ключ ]конецвернуть  valконецконецфункция  p . descriptionIn ( кадр )локальный  langcode  =  frame . аргументы [ 1 ]локальный  идентификатор  =  фрейм . аргументы [ 2 ]- вернуть описание объекта Викиданных на заданном языке или языке по умолчанию для этого сайта Википедиивернуть  мв . викибаза . getEntity ( id ): getDescription ( langcode  или  wiki . langcode )конецфункция  p . labelIn ( кадр )локальный  langcode  =  frame . аргументы [ 1 ]локальный  идентификатор  =  фрейм . аргументы [ 2 ]- вернуть метку объекта Викиданных на данном языке или языке по умолчанию для этого сайта Википедиивернуть  мв . викибаза . getEntity ( id ): getLabel ( langcode  или  wiki . langcode )конец- Используется для получения значения или их списка, разделенного запятыми, если существует несколько значений.стр . getValue  =  функция ( фрейм )local  delimdefault  =  ","  - ** интернационализировать позже **локальный  разделитель  =  фрейм . аргументы . разделитель  или  ""delim  =  string.gsub ( delim ,  '"' ,  '' )если  # delim  ==  0,  тоdelim  =  delimdefaultконецлокальный  переход ,  errorOrentity ,  претензии ,  propertyID  =  parseInput ( кадр )если  не  пойдем  тогдавернуть  ошибкуконецВозвращение  ПолучитьЗначение ( errorOrentity ,  претензии ,  PropertyID ,  DELIM )конец- То же, что и выше, но для метки используется свойство короткого имени, если оно доступно.стр . getValueShortName  =  функция ( фрейм )локальный  переход ,  errorOrentity ,  претензии ,  propertyID  =  parseInput ( кадр )если  не  пойдем  тогдавернуть  ошибкуконецлокальный  объект  =  errorOrentity- если значение, связанное с вики, выводится как ссылка, если возможнолокальная  функция  labelHook  ( qnumber )местный  лейбллокальный  запросEntity  =  mw . викибаза . getEntity ( qnumber )если  claimEntity  ~ =  ноль ,  тоесли  заявка . претензии . P1813  тогдадля  k2 ,  v2  в  парах ( claimEntity . претензия . P1813 )  делаетесли  v2 . mainsnak . значение данных . значение . language  ==  "en"  тогдаметка  =  v2 . mainsnak . значение данных . значение . текстконецконецконецконецесли  label  ==  nil  или  label  ==  "",  то  верните  nil  end этикетка возвратаконецВозвращение  GetValue ( errorOrentity ,  претензии ,  PropertyID ,  "" ,  labelHook );конец- Используется для получения значения или их списка, разделенного запятыми, если существует несколько значений.- из произвольной записи по ее QID.- Используйте: {{#invoke: Wikidata | getValueFromID | <ID> | <Property> | FETCH_WIKIDATA}}- Например: {{#invoke: Wikidata | getValueFromID | Q151973 | P26 | FETCH_WIKIDATA}} - для получения значения «супруга» (P26) от «Ричарда Бертона» (Q151973)- Пожалуйста, используйте экономно - это * дорогой звонок *.стр . getValueFromID  =  функция ( кадр )local  itemID  =  mw . текст . обрезать ( frame . args [ 1 ]  или  "" )локальный  propertyID  =  mw . текст . обрезать ( frame . args [ 2 ]  или  "" )локальный  input_parm  =  mw . текст . обрезать ( frame . args [ 3 ]  или  "" )если  input_parm  ==  "FETCH_WIKIDATA",  толокальный  объект  =  mw . викибаза . getEntity ( itemID )местные  претензииесли  сущность  и  сущность . претензии  тогдапретензии  =  сущность . претензии [ propertyID ]конецесли  претензии  тоreturn  getValue ( объект ,  утверждения ,  propertyID ,  "," )ещевернуться  ""конецещевернуть  input_parmконецконецлокальная  функция  getQualifier ( кадр ,  outputHook ) локальный  propertyID  =  mw . текст . обрезать ( frame . args [ 1 ]  или  "" )локальный  квалификаторID  =  mw . текст . обрезать ( frame . args [ 2 ]  или  "" )локальный  input_parm  =  mw . текст . обрезать ( frame . args [ 3 ]  или  "" )если  input_parm  ==  "FETCH_WIKIDATA",  толокальный  объект  =  mw . викибаза . getEntity ()если  объект . заявки [ propertyID ]  ~ =  nil,  тогдаlocal  out  =  {}для  k ,  v  в  парах ( entity . Claims [ propertyID ])  делаемдля  k2 ,  v2  в  паре ( V . отборочные [ qualifierID ])  делаетесли  v2 . snaktype  ==  'значение',  тогдавыход [ # выход  +  1 ]  =  outputHook ( v2 );конецконецконецreturn  table.concat ( out ,  "," ),  истинаещевозврат  "" ,  ложьконецещевернуть  input_parm ,  ложьконецконецстр . getQualifierValue  =  функция ( кадр )локальная  функция  outputValue ( значение )local  qnumber  =  "Q"  ..  значение . значение данных . значение [ "числовой-идентификатор" ]если  ( mw . wikibase . getSitelink ( qnumber )),  тоreturn  "[["  ..  mw . викибаза . getSitelink ( qnumber )  ..  "]]"ещеreturn  "[[: d:"  ..  qnumber  ..  "|"  .. qnumber  ..  "]] <abbr title = '"  ..  i18n [ "errors" ] [ "local-article-not-found" ]  ..  "'> [*] </abbr>"конецконецreturn  ( getQualifier ( кадр ,  outputValue ))конец- Используется для получения значения типа 'male' (для свойства p21), которое не будет связано, и чисел без разделителей тысяч.стр . getRawValue  =  функция ( фрейм )локальный  переход ,  errorOrentity ,  претензии ,  propertyID  =  parseInput ( кадр )если  не  пойдем  тогдавернуть  ошибкуконецлокальный  объект  =  errorOrentityлокальный  результат  =  entity : formatPropertyValues ( propertyID ,  mw . wikibase . entity . claimRanks ). ценить- если числовой тип: удалить разделители тысяч, границы и единицыесли  isType ( утверждает ,  «количество» ),  торезультат  =  mw . ustring . gsub ( результат ,  "(% d), (% d)" ,  "% 1% 2" )результат  =  mw . ustring . gsub ( результат ,  "(% d) ±. *" ,  "% 1" )конецвернуть  результатконец- Используется для получения имени устройства для числового значения, возвращаемого getRawValue.стр . getUnits  =  функция ( кадр )локальный  переход ,  errorOrentity ,  претензии ,  propertyID  =  parseInput ( кадр )если  не  пойдем  тогдавернуть  ошибкуконецлокальный  объект  =  errorOrentityлокальный  результат  =  entity : formatPropertyValues ( propertyID ,  mw . wikibase . entity . claimRanks ). ценитьесли  isType ( утверждает ,  «количество» ),  торезультат  =  mw . ustring . sub ( результат ,  mw . ustring . find ( результат ,  "" ) + 1 ,  - 1 )конецвернуть  результатконец- Это используется, чтобы получить QID устройства для использования с числовым значением, возвращаемым getRawValueстр . getUnitID  =  функция ( кадр )локальный  переход ,  errorOrentity ,  претензии  =  parseInput ( кадр )если  не  пойдем  тогдавернуть  ошибкуконецлокальный  объект  =  errorOrentityместный  результатесли  isType ( утверждает ,  «количество» ),  то- получить URL-адрес записи объекта в Викиданных:результат  =  претензии [ 1 ]. mainsnak . значение данных . значение . единица измерения- и просто верните последний бит от "Q" до конца (который является QID):результат  =  mw . ustring . sub ( результат ,  mw . ustring . find ( результат ,  "Q" ),  - 1 )конецвернуть  результатконецстр . getRawQualifierValue  =  функция ( кадр )локальная  функция  outputHook ( значение )если  значение . значение данных . значение [ "числовой-идентификатор" ],  затемвернуть  мв . викибаза . getLabel ( "Q"  ..  значение . значение данных . значение [ "числовой-идентификатор" ])ещевозвращаемое  значение . значение данных . ценитьконецконецlocal  ret ,  gotData  =  getQualifier ( кадр ,  outputHook )если  gotData,  тоret  =  string.upper ( string.sub ( ret ,  1 ,  1 ))  ..  string.sub ( ret ,  2 )конецвозвращение в  отставкеконец- Используется для получения значения даты для date_of_birth (P569) и т. Д., Которые не будут связаны- Дата и время хранятся в формате ISO 8601 (вроде).- В настоящее время локальная функция formatDate (дата, точность, часовой пояс) не обрабатывает часовой пояс.- Поэтому я просто поставлю "Z" в вызове функции formatDate ниже:стр . getDateValue  =  функция ( кадр )локальный  date_format  =  mw . текст . обрезать ( frame . args [ 3 ]  или  i18n [ "datetime" ] [ "default-format" ])местный  date_addon  =  mw . текст . обрезать ( frame . args [ 4 ]  или  i18n [ "datetime" ] [ "default-addon" ])локальный  переход ,  errorOrentity ,  претензии  =  parseInput ( кадр )если  не  пойдем  тогдавернуть  ошибкуконецлокальный  объект  =  errorOrentitylocal  out  =  {}для  к ,  V  в  пар ( претензий )  делаютесли  v . mainsnak . значение данных . введите  ==  'время',  затемместная  отметка времени  =  v . mainsnak . значение данных . значение . времяместная  точность даты  =  v . mainsnak . значение данных . значение . точность- Год можно сохранить так: «+ 1872-00-00T00: 00: 00Z»,- который обрабатывается здесь, как если бы он был накануне "+ 1872-01-01T00: 00: 00Z",- и это последний день 1871 года, значит, год неправильный.- Поэтому исправьте метку времени месяца 0 и дня 0, чтобы вместо этого стало 1 января:timestamp  =  отметка времени : gsub ( "% -00% -00T" ,  "-01-01T" )out [ # out  +  1 ]  =  parseDateFull ( отметка времени ,  точность даты ,  формат_даты ,  адрес_даты )конецконецreturn  table.concat ( out ,  "," )конецстр . getQualifierDateValue  =  функция ( кадр )локальный  date_format  =  mw . текст . обрезать ( frame . args [ 4 ]  или  i18n [ "datetime" ] [ "default-format" ])местный  date_addon  =  mw . текст . обрезать ( frame . args [ 5 ]  или  i18n [ "datetime" ] [ "default-addon" ])локальная  функция  outputHook ( значение )местная  отметка времени  =  значение . значение данных . значение . времявернуть  parseDateValue ( отметка времени ,  date_format ,  date_addon )конецreturn  ( getQualifier ( кадр ,  outputHook ))конец- Это используется для получения всех изображений с определенным свойством, например, изображение (P18), изображение генного атласа (P692) и т. Д.- Параметры есть | propertyID | значение / FETCH_WIKIDATA / nil | разделитель (по умолчанию = пробел) | размер (по умолчанию = безрамный)- Он вернет стандартную вики-разметку [[File: Filename | size]] для каждого изображения с выбираемым размером и разделителем (который может быть HTML)- например, {{#invoke: Wikidata | getImages | P18 | FETCH_WIKIDATA}}- например, {{#invoke: Wikidata | getImages | P18 | FETCH_WIKIDATA | <br> | 250px}}- Если выбрано свойство, не относящееся к типу commonsMedia, оно вернет пустой текст.стр . getImages  =  функция ( кадр )местный  sep  =  mw . текст . обрезать ( frame . args [ 3 ]  или  "" )локальный  imgsize  =  mw . текст . обрезать ( frame . args [ 4 ]  или  "бескаркасный" )локальный  переход ,  errorOrentity ,  претензии  =  parseInput ( кадр )если  не  пойдем  тогдавернуть  ошибкуконецлокальный  объект  =  errorOrentityесли  ( заявки [ 1 ]  и  заявки [ 1 ]. mainsnak . datatype  ==  "commonsMedia" ),  тоlocal  out  =  {}для  к ,  V  в  пар ( претензий )  делаютлокальное  имя файла  =  v . mainsnak . значение данных . ценитьout [ # out  +  1 ]  =  "[[File:"  ..  filename  ..  "|"  ..  imgsize  ..  "]]"конецвернуть  table.concat ( out ,  sep )ещевернуться  ""конецконец- Используется для получения значений TA98 (Terminologia Anatomica, первое издание 1998 г.), например A01.1.00.005 (свойство P1323).- которые затем связаны с http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/01.1.00.005%20Entity%20TA98%20EN.htm- использует новые вызовы mw.wikibase вместо прямого использования snaks- formatPropertyValues ​​возвращает таблицу со значениями P1323, объединенными с "", поэтому мы должны разбить их на таблицу, чтобы построить строку возвратастр . getTAValue  =  функция ( кадр )местный  ent  =  mw . викибаза . getEntity ()локальные  реквизиты  =  ent : formatPropertyValues ( 'P1323' )local  out  =  {}местный  t  =  {}для  k ,  v  в  парах ( реквизитах )  делаемесли  k  ==  'значение',  тоt  =  mw . текст . split (  v ,  "," )для  k2 ,  v2  в  пар ( т )  делаютout [ # out  +  1 ]  =  "[http://www.unifr.ch/ifaa/Public/EntryPage/TA98%20Tree/Entity%20TA98%20EN/"  ..  string.sub ( v2 ,  2 )  ..  » % 20Entity% 20TA98% 20EN.htm "  ..  v2  ..  "] "конецконецконецlocal  ret  =  table.concat ( out ,  "<br>" )если  # ret  ==  0,  тоret  =  "Недействительный TA"конецвозвращение в  отставкеконец- [[Используется для возврата легенды изображения из Викиданных.изображение свойство P18легенда изображения - свойство P2096Вызовите как {{#invoke: Wikidata | getImageLegend | <ПАРАМЕТР> | lang = <ISO-639code> | id = <QID>}}Возвращает ПАРАМЕТР, если он не равен "FETCH_WIKIDATA", из QID элемента (дорогостоящий вызов)Если QID опущен или пуст, используется текущая статья (не дорогой вызов)Если lang опущен, он использует местный язык вики, в противном случае он использует предоставленный код языка ISO-639.ISO-639: https://docs.oracle.com/cd/E13214_01/wli/docs92/xref/xqisocodes.html#wp1252447Ранги: "предпочтительный"> "нормальный".Это возвращает метку из первого изображения с «предпочтительным» рангом.Или метка из первого изображения с «нормальным» рангом, если желательно, ничего не возвращает.Звания: https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua]]стр . getImageLegend  =  функция ( кадр )- ищем именованный идентификатор параметра; если он пуст, сделайте его нулевымлокальный  идентификатор  =  фрейм . аргументы . я быесли  id  и  ( # id  ==  0 ),  тоid  =  нольконец- ищем именованный параметр lang- он должен содержать двухсимвольный код языка ISO-639- если пусто, выбрать язык местной викиместные  языки  =  кадр . аргументы . языкесли  ( не  lang )  или  ( # lang  <  2 ),  тоlang  =  mw . язык . getContentLanguage (). кодконец- первый безымянный параметр - это локальный параметр, если он указанлокальный  input_parm  =  mw . текст . обрезать ( frame . args [ 1 ]  или  "" )если  input_parm  ==  "FETCH_WIKIDATA",  томестный  ent  =  mw . викибаза . getEntity ( идентификатор )местные  imgsесли  ent  и  ent . претензии  тогдаimgs  =  ent . претензии . P18конецместный  imglblесли  imgs  тогда- ищите изображение с «предпочтительным» рейтингомдля  k1 ,  v1  в  парах ( ГИМ )  делатьесли  v1 . rank  ==  "предпочтительный"  и  v1 . квалификаторы  и  v1 . квалификаторы . P2096  тогдалокальный  imglbls  =  v1 . квалификаторы . P2096для  k2 ,  v2  в  пар ( imglbls )  делатьесли  v2 . значение данных . значение . language  ==  lang,  тогдаimglbl  =  v2 . значение данных . значение . текстпеременаконецконецконецконец- если не найдем, ищем картинку с «нормальным» рейтингомесли  ( не  imglbl )  тодля  k1 ,  v1  в  парах ( ГИМ )  делатьесли  v1 . rank  ==  "нормальный"  и  v1 . квалификаторы  и  v1 . квалификаторы . P2096  тогдалокальный  imglbls  =  v1 . квалификаторы . P2096для  k2 ,  v2  в  пар ( imglbls )  делатьесли  v2 . значение данных . значение . language  ==  lang,  тогдаimglbl  =  v2 . значение данных . значение . текстпеременаконецконецконецконецконецконецвернуть  imglblещевернуть  input_parmконецконец- Используется для получения QID всех значений свойства в виде списка, разделенного запятыми, если существует несколько значений.- Использование: {{#invoke: Wikidata | getPropertyIDs | <PropertyID> | FETCH_WIKIDATA}}- Использование: {{#invoke: Wikidata | getPropertyIDs | <PropertyID> | <InputParameter> | qid = <QID>}}стр . getPropertyIDs  =  функция ( кадр )локальный  go ,  errorOrentity ,  propclaims  =  parseInput ( кадр )если  не  пойдем  тогдавернуть  ошибкуконецлокальный  объект  =  errorOrentity- если значение, связанное с вики, собрать QID в таблицеif  ( propclaims [ 1 ]  и  propclaims [ 1 ]. mainsnak . snaktype  ==  "value"  и  propclaims [ 1 ]. mainsnak . datavalue . type  ==  "wikibase-entityid" ),  тоlocal  out  =  {}для  к ,  V  в  паре ( propclaims )  делаетout [ # out  +  1 ]  =  "Q"  ..  v . mainsnak . значение данных . значение [ "числовой-идентификатор" ]конецreturn  table.concat ( out ,  "," )еще- не объектный идентификатор викибазы, поэтому возвращайте пустойвернуться  ""конецконец- возвращает идентификатор страницы (Q ...) текущей страницы или ничто из страницы не связано с Викиданнымифункция  p . pageId ( фрейм )вернуть  мв . викибаза . getEntityIdForCurrentPage ()конецфункция  p . претензия ( кадр )локальное  свойство  =  фрейм . args [ 1 ]  или  ""локальный  идентификатор  =  фрейм . аргументы [ "идентификатор" ]локальный  qualifierId  =  frame . args [ "квалификатор" ]локальный  параметр  =  кадр . args [ "параметр" ]локальный  список  =  фрейм . args [ "список" ]локальные  ссылки  =  фрейм . args [ "ссылки" ]местные  душевые зеркала  =  рама . args [ "showerrors" ]локальное  значение по умолчанию  =  фрейм . args [ "по умолчанию" ]если по  умолчанию,  то  showerrors  =  nil  end- получить объект викиданныхлокальный  объект  =  mw . викибаза . getEntity ( идентификатор )если  не  сущность,  тоесли  душевные ошибки,  то  вернуть  printError ( "entity-not-found" )  иначе  вернуть  default  endконец- получить первое требование удовлетворения данного свойствалокальные  претензии  =  findClaims ( объект ,  свойство )если  нет  претензий  или  не  претензий [ 1 ]  тоесли  душевные ошибки,  то  вернуть  printError ( "свойство-не-найдено" )  иначе  вернуть  конец по умолчанию конец- получить начальные индексы сортировкиlocal  sortindices  =  {}для  IDX  в  пар ( претензий )  делаютsortindices [ # sortindices  +  1 ]  =  idxконец- сортировать по рангу заявкилокальный  компаратор  =  функция ( a ,  b )local  rankmap  =  {  устаревшее  =  2 ,  нормальное  =  1 ,  предпочтительное  =  0  }локальная  ранка  =  rankmap [ претензии [ ]. ранг или "нормальный" ] .. string.format ( "% 08d" , a )     local  rankb  =  rankmap [ заявки [ b ]. ранг  или  "нормальный" ]  ..  string.format ( "% 08d" ,  b )вернуться  ранка  <  rankbконецtable.sort ( индексы сортировки ,  компаратор )местный  результатлокальная  ошибкаесли  список  томестная  ценность- перебрать все элементы и вернуть их значение (если есть)результат  =  {}для  IDX  в  пар ( претензий )  делаютместная  заявка  =  заявки [ sortindices [ idx ]]значение ,  ошибка  =  getValueOfClaim ( заявка ,  qualifierId ,  параметр )если  не  значение  и  ошибки,  то  значение  =  конец ошибки если  значение  и  ссылки,  то  значение  =  значение  ..  getReferences ( кадр ,  утверждение )  конецрезультат [ # результат  +  1 ]  =  значениеконецрезультат  =  table.concat ( результат ,  список )еще- вернуть первый элементместная  заявка  =  заявки [ sortindices [ 1 ]]результат ,  ошибка  =  getValueOfClaim ( заявка ,  qualifierId ,  параметр )если  результат  и  ссылки,  то  результат  =  результат  ..  getReferences ( кадр ,  утверждение )  конецконецесли  результат,  то  вернуть  результат  иначеесли  ошибки,  то  вернуть  ошибку,  иначе  вернуть  конец по умолчанию конецконец- заглянуть в объект сущностифункция  p . ViewSomething ( кадр )local  f  =  ( frame . args [ 1 ]  или  frame . args . id )  и  кадр  или  кадр : getParent ()локальный  идентификатор  =  f . аргументы . я быесли  id  и  ( # id  ==  0 ),  тоid  =  нольконецлокальные  данные  =  mw . викибаза . getEntity ( идентификатор )если  не  данные,  товернуть  нольконецместный  я  =  1в то время как  истинные  делалокальный  индекс  =  f . args [ i ]если  не  индекс,  тоесли  type ( data )  ==  "table",  товернуть  мв . текст . jsonEncode ( данные ,  мвт . текст . JSON_PRESERVE_KEYS  +  мвт . текст . JSON_PRETTY )ещевозврат в  строку ( данные )конецконецДанные  =  данные [ индекс ]  или  данные [ ToNumber ( индекс )]если  не  данные,  товозвращатьсяконеця  =  я  +  1конецконец- получение дополнительной ссылки данной вики- получить дополнительную ссылку текущего товара, если qid не указанфункция  p . getSiteLink ( кадр )локальный  qid  =  frame . аргументы . qidесли  qid  ==  "",  то  qid  =  nil  endместный  f  =  mw . текст . обрезать (  frame . args [ 1 ]  или  "" )локальный  объект  =  mw . викибаза . getEntity ( qid )если  не  сущность,  товозвращатьсяконецлокальная  ссылка  =  объект : getSitelink (  f  )если  не  ссылка  товозвращатьсяконецобратная  ссылкаконецфункция  p . Отвал ( рама )local  f  =  ( frame . args [ 1 ]  или  frame . args . id )  и  кадр  или  кадр : getParent ()локальные  данные  =  mw . викибаза . GetEntity ( е . арг . ID )если  не  данные,  товернуть  i18n . warnDumpконецместный  я  =  1в то время как  истинные  делалокальный  индекс  =  f . args [ i ]если  не  индекс,  тоreturn  "<pre>" .. mw . dumpObject ( данные ) .. "</pre>" ..  i18n . warnDumpконецДанные  =  данные [ индекс ]  или  данные [ ToNumber ( индекс )]если  не  данные,  товернуть  i18n . warnDumpконеця  =  я  +  1конецконецвернуть  p