跳转到内容

模块:WikidataIB/doc

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是Module:WikidataIB的文档页面

此模块是为在{{infobox}}(资讯框)或其他模板中使用而设计,并经专门设计而允许条目编者(而非资讯框模板的编者)控制是否显示特定的维基数据值。IB为Info Box之缩写。

应使用两组沙盒页面来测试非琐碎修改。

模块和测试样例
模块 测试样例
主要 Module:WikidataIB Module talk:WikidataIB/testcases
沙盒 Module:WikidataIB/sandbox(差异) Module talk:WikidataIB/sandbox/testcases(差异)

概述

[编辑]

本模块提供以下调用,供资讯框使用:

  1. getValue——主函数,用于获取指定属性(property)的值(value)。
  2. getQualifierValue——给定属性、该属性的值以及限定符(qualifier)的属性ID,返回匹配的值。
  3. getValueByQual——获取具有给定实体(entity)值的限定符的属性的值(此处下划线用于标示一个相对整体,帮助读者理解,下同)。
  4. getValueByLang——获取限定符作品或名称的语言 (P407)的值包含给定的语言代码的属性的值。
  5. getValueByRefSource——获取参考文献载于 (P248)的值包含指定实体ID的属性的值。
  6. getPropOfProp——如果属性1的值属于“维基数据项目”类型,则返回这些维基数据项目所对应的属性2的值。
  7. getAwardCat——如果项目包含得奖 (P166),则逐一检查这些奖项的获奖者专用分类 (P2517),并返回对应的分类,以项目的姓氏 (P734)作为排序键(若无姓氏则不设排序键)。
  8. getIntersectCat——针对属性1的每个值获取其主分类,再针对属性2的每个值进行同样操作,最终返回所有表示这些属性交集结果的分类。
  9. getSumOfParts——扫描拥有部分 (P527)属性,匹配给定的列表。若匹配到的值带有数量 (P1114)限定符,则将这些数量相加并返回(若总和为0则返回空值)。
  10. getCoords——获取坐标,并通过{{Coord}}模板进行格式化输出。
  11. getPreferredValue——已弃用,但为向后兼容而保留。请改用|getValue|rank=best参数组合。

已废弃的getSourcedValue调用现已移除,因为getValue通过|onlysourced=true参数(该参数默认启用)即可实现相同功能。

工具函数

[编辑]
  1. getLink——如果本地维基上有指向条目的网站链接,则返回该条目的链接,显示文本为维基数据标签;若无网站链接,则返回纯文本标签;若当前语言无对应标签,则返回实体ID。
  2. getAT(条目标题)——如果本地维基上有指向条目的网站链接,则以纯文本形式返回该网站链接;否则不返回任何内容。
  3. getSiteLink——获取指向指定维基站点的纯文本链接。
  4. getLabel——以纯文本形式返回当前语言的维基数据标签;若当前语言无标签,则返回实体ID。
  5. getAllLabels——获取全部标签集合并将其格式化为wikitext以供显示。
  6. labelorid——返回去除所有wikitext后的标签;若无标签则返回实体ID。
  7. getDescription——若本地参数为“Wikidata”,则返回该维基数据实体的条目描述。
  8. getAllDescriptions——获取全部描述集合并将其格式化为wikitext以供显示。
  9. getAliases——返回当前或指定语言下该实体的别名。
  10. getAllAliases——获取全部别名集合并将其格式化为wikitext以供显示。
  11. pageId——返回当前页面所关联的维基数据页面ID(即实体ID,QID)。
  12. formatDate——接收mw.wikibase.entity:formatPropertyValues输出的标准格式日期时间,并根据df(日期格式)和bc参数进行格式化。
  13. formatNumber——根据指定的语言代码对数字进行格式化。
  14. checkBlacklist——若字段不在黑名单中(即允许使用),则返回true。
  15. emptyor——若参数仅为标点符号、空白字符或HTML标签,则返回nil;否则原样返回该参数。
  16. getLang——返回当前内容的MediaWiki语言代码或完整的语言名称。
  17. getItemLangCode——查找国家 (P17),然后查找该国家的官方语言 (P37),并返回其维基媒体语言代码 (P424)。
  18. findLanguage——返回:(1)所传入的语言代码(若有效);或(2)用户设置的语言;或(3)当前站点的语言。
  19. getQid——返回:(1)所传入的实体ID(若有);或(2)分类主话题 (P301)的实体ID;或(3)当前页面关联的实体ID;或(4)不返回任何内容。
  20. followQid——给定属性列表,依次查找每个属性,并返回第一个匹配值的实体ID(可选地,也可返回所有匹配的实体ID)。
  21. getGlobe——返回地理坐标 (P625)中所使用的球体的实体ID;若无则返回nil。
  22. getCommonsLink——按优先顺序返回以下之一:所关联维基数据项的维基共享资源网站链接;所关联维基数据项“话题主分类”的维基共享资源网站链接。
  23. siteID——返回globalSiteID的根部分,例如“enwiki”中的“en”、“enwikisource”中的“en”、“en-gb”中的“en”等。
  24. projID——与siteID功能相同。
  25. location——从当前位置向上沿上级行政区划链扫描,逐级返回,直至到达国家层级。
  26. examine——返回指定属性的格式化转储资讯。
  27. url2——接收一个有效的URL参数,并将其格式化为适合资讯框使用的形式;该函数也接受自身输出作为输入。
  28. getWebsite——获取官方网站 (P856)并将其格式化为适合资讯框使用的形式。
  29. checkvalue——在指定属性中查找给定的实体ID作为其值,若找到则返回该实体ID;否则返回nil。
  30. checkValidity——返回第一个匿名参数是否为有效的实体ID。
  31. showNoLinks——显示不应添加链接的条目标题。

函数用法示例

[编辑]
{{#invoke:WikidataIB |getValue |<属性ID> |name=<字段名> |suppressfields=<永不显示的字段列表> |fetchwikidata=<从维基数据获取值的字段列表> |onlysourced=<yes/no> |noicon=<yes/no> |df=<dmy/mdy/y> |bc=<BC/BCE> |qual=<ALL/DATES/P999> |list=<ubl/hlist/prose> |linked=<yes/no> |<本地参数>}}
{{#invoke:WikidataIB |getCoords |name=<字段名> |suppressfields=<永不显示的字段列表> |fetchwikidata=<从维基数据获取值的字段列表> |<本地参数>}}
{{#invoke:WikidataIB |getQualifierValue |<属性ID> |pval=<属性目标值的ID> |qual=<目标值的限定符ID> |name=<字段名> |suppressfields=<永不显示的字段列表> |fetchwikidata=<从维基数据获取值的字段列表> |onlysourced=<yes/no>}}
{{#invoke:WikidataIB |getValueByQual |<属性ID> |qualID=<要匹配的限定符属性ID> |qvalue=<限定符属性目标值的QID> |name=<字段名> |suppressfields=<永不显示的字段列表> |fetchwikidata=<从维基数据获取值的字段列表> |onlysourced=<yes/no>}}
{{#invoke:WikidataIB |getValueByLang |<属性ID> |lang=<要匹配的语言代码> |name=<字段名> |suppressfields=<永不显示的字段列表> |fetchwikidata=<从维基数据获取值的字段列表> |onlysourced=<yes/no>}}

getValue函数

[编辑]

getValue参数说明

[编辑]
参数名 别名 功能说明 默认值
(第一个匿名参数) 1 待获取值的属性ID。必填。
(第二个匿名参数) 2 本地提供的值,若非空则优先返回该值,而不使用维基数据中的值。 空
qid 要查询其属性的维基数据项目编号(QID)。若未提供或为空,则默认为当前页面对应的维基数据条目——使用mw.wikibase.getEntityIdForCurrentPage()。 当前页面的实体ID
eid qid的替代参数。除eid外,getValue的所有参数将nil和空字符串视为相同,因此设置|x=与省略该参数效果一致。但为与其他模块保持兼容,使用|eid=时始终返回空字符串,而省略eid则允许qid正常工作。 当前页面的实体ID
rank (不区分大小写)设为best时,优先返回首选级(preferred)的值,若无则返回普通级(normal)的值;设为preferred时仅返回首选值;设为normal时仅返回普通值;设为deprecated时仅返回弃用级(deprecated)的值。任何以“b”开头的参数值视为“best”,以“p”开头视为“preferred”,以“n”开头视为“normal”,以“d”开头视为“deprecated”。可同时指定多个等级,如“p n d”将返回所有等级。“Best”会覆盖其他标识。无效值将被忽略;若未指定任何等级,则返回首选级和普通级的值。 preferred和normal
qual 以标点符号分隔的限定符属性ID列表,这些限定符将附在属性值后的括号中返回。设为qual=ALL时返回全部限定符。设为qual=DATES时返回始于 (P580)和终于 (P582),并附带日期分隔符。 无
qualsonly qo 布尔值,启用后仅显示限定符而不显示属性值和括号。no、false和0均为假,其他值均为真。 false
fetchwikidata fwd 需要从维基数据获取值的字段列表。ALL表示获取所有字段。NONE、空白或省略该参数表示不获取任何字段。 无
suppressfields spf 永不显示的字段列表,即使该字段有本地值也会强制不显示。 无
name 字段名称。在编写资讯框时,这是fetchwikidata和suppressfields所识别的名称。若指定了fetchwikidata或suppressfields(fetchwikidata=ALL时除外),则此参数为必填。 nil
onlysourced osd 布尔值,用于过滤掉无来源或仅引用维基百科的维基数据值。no、false和0均为假,其他值均为真。 true
df 日期格式,可选dmy(日月年)、mdy(月日年)或y(仅年份)。 dmy
qdf 限定符的日期格式。若省略,则默认使用df参数的值;若df亦省略,则默认为“y”。 df的值或“y”
bc 公元前(BC/BCE)后缀的显示格式。 BCE
plaindate pd 用于修改日期格式化的字符串。设为“true”/“yes”/“1”将禁用资料出处状态 (P1480)的添加及所有链接。设为“adj”效果相同,但使用日期的形容词形式。 false
linked 布尔值,启用后通过维基数据上的网站链接链接至本地页面。no、false和0均为假,其他值均为真。 true
displaytext dt 若非空,则覆盖链接项的显示文本。 空
shortname sn 布尔值,启用后对链接项使用简称 (P1813)替代标签。no、false和0均为假,其他值均为真。 false
uselabel uselbl 布尔值,强制显示标签而非消歧义后的网站链接。注意标签比网站链接更容易遭到破坏。no、false和0均为假,其他值均为真。 false
wdlinks wdl 布尔值,当本地无对应条目时,启用指向维基数据的链接显示。no、false和0均为假,其他值均为真。 false
unitabbr uabbr 布尔值,启用常用单位的缩写形式。no、false和0均为假,其他值均为真。 false
convert conv 布尔值,启用后将数量传递给Template:Cvt进行处理。no、false和0均为假,其他值均为真。 false
showunits su 布尔值,启用后显示数量的单位。no、false和0均为假,其他值均为真。 true
scale 设置数量格式的比例缩放。可选值:“a”=自动;“0”=不缩放;“3”=千;“6”=百万;“9”=十亿;“12”=万亿。 0
maxvals 设置当存在多个值时返回的最大数量。设为1可在返回值用于其他调用(如图像)时非常有用。0和空值表示返回全部。 0(全部)
collapse 设置内容自动折叠的阈值数量。0和空值表示全部内容展开显示。 0(全部)
linkprefix lp 链接前缀,在链接值时前置添加。仅适用于拥有条目的项及字符串(如URL)。使用后会触发字符串的链接。双引号“"”将被去除,以便传递带空格的参数。 空
linkpostfix 链接后缀,在链接值时后置附加。仅适用于拥有条目的项及字符串(如URL)。使用后会触发字符串的链接。双引号“"”将被去除,以便传递带空格的参数。 空
prefix 前缀,在字符串(如URL)的显示值前添加。双引号“"”将被去除,以便传递带空格的参数。 空
postfix 后缀,在字符串(如URL)的显示值后附加。双引号“"”将被去除,以便传递带空格的参数。 空
qlinkprefix qlp 限定符的链接前缀(参见linkprefix)。 空
qlinkpostfix 限定符的链接后缀(参见linkpostfix)。 空
qprefix 限定符的前缀(参见prefix)。 空
qpostfix 限定符的后缀(参见postfix)。 空
sorted 布尔值,启用后对返回值进行排序。no、false和0均为假,其他值均为真。 false
qsorted 布尔值,启用后对每个返回项中的限定符值进行排序。no、false和0均为假,其他值均为真。 false
noicon 布尔值,启用后将隐藏末尾的“在维基数据上编辑”笔形图标。适用于返回值需要进一步处理的情形。no、false和0均为假(即显示图标),其他值均为真(即隐藏图标)。 false
list 用于处理多个值列表的模板名称。例如“cslist”“hlist”“ubl”“blist”“olist”“p-1”。特殊值prose将生成“1、2、3和4”格式。 无
sep 自定义多个返回值之间的分隔符。双引号“"”将被去除,以便传递带空格的参数。若未传递或传递空字符串,则使用默认列表分隔符(英文环境下为“, ”)。 “, ”
qsep 自定义多个限定符返回值之间的分隔符。双引号“"”将被去除,以便传递带空格的参数。若未传递或传递空字符串,则使用默认列表分隔符(英文环境下为“, ”)。 “, ”
format 决定全球坐标的显示格式为度/分/秒还是十进制度数。任何以“dec”开头的值(不区分大小写)将渲染为十进制度数,其他值则渲染为度分秒(DMS)格式。 dms
show 决定全球坐标的返回方式。设为“longlat”将返回经度, 纬度。其他以“lon”开头的值(不区分大小写)仅返回经度。以“lat”开头的值(不区分大小写)仅返回纬度。与|noicon=true配合使用时,以上所有情况均返回纯数字的十进制度数(带符号:北纬和东经为正),适用于地图模板等场景。其他任何值(或不填)则按常规显示为DMS或十进制度数,并附带“NSEW”等方位标识。 空
lang 允许以指定语言返回无链接的值。接受MediaWiki识别的标准ISO语言代码。若未提供或为空,则默认使用本地语言(多语言维基则为用户设置的语言)。 本地语言
parameterset ps 便捷参数,允许通过单个参数指定常用的参数组合:ps=1获取尽可能简单的链接值;ps=2表示纯文本值。参见参数组合。
linkredir 布尔值,当维基数据上该值没有网站链接时,是否开启检查是否存在与标签同名的重定向页面。no、false和0均为假,其他值均为真。 false

基本参数

[编辑]
  • getValue可接受命名参数|qid=,用于指定条目的维基数据ID。通常省略该参数,默认使用当前条目。
  • 待获取值的属性通过第一个匿名参数传入,该参数为必填。
  • 若提供了第二个匿名参数,则直接返回该值,不再调用维基数据。

白名单与黑名单

[编辑]
  • 调用该函数所在字段的名称通过命名参数|name=传入。系统首先会对照永不显示字段的黑名单进行检查(即该调用在所有情况下都必须返回空值)。若字段不在黑名单中,则继续对照白名单检查。若字段名称匹配,则当第二个匿名参数提供了本地值时返回该值,否则返回维基数据中的值。
  • 指定|fetchwikidata=ALL是返回所有不在黑名单中的字段的快捷方式。
  • 使用黑名单或白名单时,name参数为必填;若未提供(除非|fetchwikidata=ALL),模块将返回空值。
  • 黑名单通过命名参数|suppressfields=传入。
  • 白名单通过命名参数|fetchwikidata=传入。

来源要求

[编辑]

getValue函数接受布尔参数onlysourced,用于过滤掉无来源或仅引自维基媒体项目的维基数据值。省略该参数、传递空参数(|onlysourced=)或传递空字符串("")均默认为true(即仅返回有来源的值)。值no、false和0视为false(即返回所有值);其他任何值均视为true(为便于阅读,建议使用|onlysourced=yes/no)。

指向维基数据的链接

[编辑]

getValue函数接受布尔参数noicon,用于在返回值需要由资讯框进一步处理时(如URL),隐藏末尾的“在维基数据上编辑”图标和链接。省略该参数或传递空参数(|noicon=)默认为false(即显示图标)。空字符串("")以及值no、false和0视为false;其他任何值均视为true(为便于阅读,建议使用|noicon=true)。

笔形图标对非自动确认用户隐藏。这意味着大多数读者看不到该图标,这是在兼顾页面美观与防止维基数据破坏,以及鼓励编辑维基数据之间的平衡。

日期

[编辑]

为满足mdy、dmy或仅年份等日期格式要求,getValue接受命名参数|df=,可取值“dmy”、“mdy”或“y”——默认值为“dmy”。

由于不同条目可能需要BC或BCE后缀,getValue接受命名参数|bc=,可取值“BC”或“BCE”——默认值为“BCE”。

等级

[编辑]

|rank=参数设为preferred时仅返回首选值;设为normal时仅返回普通值;设为deprecated时仅返回已弃用值。若设为best,则优先返回首选值(若存在),否则返回普通值。参数值以“p”开头表示preferred,以“n”开头表示normal,以“d”开头表示deprecated,以“b”开头表示best。允许组合使用,例如|rank=p n返回所有首选值和普通值(此为默认行为),但“best”会覆盖其他参数。

特定数据类型处理器

[编辑]

模块对以下数据类型设有专用处理器:

  1. 对应某维基百科条目的项,称为“wikibase-item”。此类值将尽可能链接至中文维基百科上对应的(消歧义后的)条目。
  2. 表示日期的项,可为世纪、年份、年月或年月日。
  3. 表示维基共享资源媒体、URL、外部ID或其他纯文本的项。
  4. 表示数量的项,可带有单位或无单位,也可表示范围。
  5. 表示全球坐标的项,以经纬度表示,并带有相应精度。

其他数据类型的项目前尚未支持。

第三类数据类型可使用以下参数:

  • |prefix=、|postfix=、|linkprefix=、|linkpostfix=

若未提供|linkprefix=或|linkpostfix=中的至少一项,则仅使用|prefix=和|postfix=。例如,获取维也纳天文台(Q532127)中的小行星中心观测代码 (P717):

  • {{#invoke:WikidataIB|getValue|P717|fetchwikidata=ALL|onlysourced=no |prefix="before " |postfix=" after" |qid=Q532127}} → before 045 after 编辑维基数据

若参数值含有前导或尾随空格,请用双引号将其括起(否则空格会被去除)。若提供了|linkprefix=或|linkpostfix=,则四个参数均被使用,每个值按如下格式生成链接:

  • [[ linkprefix WikidataValue1 linkpostfix | prefix WikidataValue1 postfix]], [[ linkprefix WikidataValue2 linkpostfix | prefix WikidataValue2 postfix]], 等。

这样可生成指向列表文章不同章节的多个链接,例如天文台编号列表。例如,获取维也纳天文台(Q532127)中的小行星中心观测代码 (P717)时,可生成如下链接:

  • {{#invoke:WikidataIB|getValue|P717|fetchwikidata=ALL|onlysourced=no |prefix= |postfix= |linkprefix="天文台編號列表#" |linkpostfix= |qid=Q532127}} → [天文台编号列表#045 045] 编辑维基数据

|prefix=、|postfix=、|linkprefix=、|linkpostfix=参数同样适用于wikibase-item(若其被链接)。

多个返回值的格式化

[编辑]
  • |sorted=<yes|no>为布尔值,用于启用返回值排序。不传参、传空字符串、“false”、“no”或“0”均禁用排序。该排序仅为简单的字母顺序排序,链接值按“[[ ...”排序。
  • |sep=<分隔符>允许自定义多个返回值之间的分隔符。默认值为"、"(顿号)。若分隔符含有前导或尾随空格,请用双引号括起(例如|sep=" - ")。分隔符中的双引号会被去除。管道符(|)须转义为{{!}}。出于无障碍考虑(参见MOS:PLIST),请勿使用|sep=<br>实现无项目符号垂直列表,应使用|list=ubl。
  • |list=<prose|cslist|hlist|ubl|blist|olist>可将多个返回值显示为:用“和”连接最后两项的句子(|list=prose)、水平逗号分隔列表(|list=cslist,不适用于正文)、水平列表(|list=hlist)、垂直无项目符号列表(|list=ubl)、垂直项目符号列表(|list=blist)或垂直有序列表(|list=olist)。这些格式会覆盖分隔符设置,且不显示指向“在维基数据上编辑”的笔形图标。
  • |list=p-1显示最后一个值。与|maxvals=n配合使用可显示第n个值。

限制返回值数量

[编辑]

某些属性预期只有一个值,如图像 (P18),但维基数据上可能存在多个值。设置|maxvals=1可将返回值数量限制为1,返回第一个可用值。其他数值同样有效,但0视为“无限制”。关于如何返回最后一个可用值,请参见上文相应说明。

取消链接

[编辑]

表示本地维基条目的返回值默认会被链接(包括重定向页面,但不包括消歧义页面)。若需取消链接,可设置|linked=no。

单位缩写

[编辑]

当返回值为数量时,会附加其单位的名称。资讯框可能希望使用常用单位的缩写形式,可通过设置|unitabbr=true实现。

限定符

[编辑]

可提供|qual=参数,若存在限定符则返回指定属性的限定符。若该值设为以标点分隔的属性ID列表(如P123, P456),则仅返回这些属性的限定符值。若设为|qual=ALL,则返回所有限定符值。若设为|qual=DATES,则返回始于 (P580)和终于 (P582)并附带日期分隔符。无论哪种情况,限定符值均跟在属性值之后,并置于括号内。若返回多个限定符值,默认以逗号分隔,但可通过|qsep=自定义分隔符(可用双引号括起,双引号会被去除,以便包含空格)。设置|qsorted=yes可对限定符值进行字母数字排序。

参数简写

[编辑]

部分较长参数可使用缩写,使资讯框设计更紧凑:

  • fwd → fetchwikidata
  • osd → onlysourced
  • spf → suppressfields
  • wdl → wdlinks

参数组合

[编辑]

通常情况下,getValue的参数默认值体现了编辑者的共识。例如,|onlysourced=默认为true,因此仅返回来源优于“维基百科”的维基数据值;|fetchwikidata=默认为none,因此须通过设置某些字段名称或“ALL”来启用后才会返回值。这种安全默认设计使得资讯框可具备维基数据功能,而无需改动任何条目,直到为特定条目启用。

为简化getValue在其他场景下的使用,可通过|parameterset=或其别名|ps=指定常用参数组合。目前已实现两种组合:

ps=1:一组常用覆盖参数,用于获取尽可能链接的简单值:
|rank          ="best"
|fetchwikidata ="ALL"
|onlysourced   ="no"
|noicon        ="true"
ps=2:以纯文本形式获取原始值:
|rank          = "best"
|fetchwikidata = "ALL"
|onlysourced   = "no"
|noicon        = "true"
|linked        = "no"
|plaindate     = "true"
ps=3:参数组合1,但启用|onlysourced=yes:
|rank          = "best"
|fetchwikidata = "ALL"
|onlysourced   = "yes"
|noicon        = "true"
|linked        = "no"
|plaindate     = "true"

如有需求,可创建其他组合。

封装模板

[编辑]

模板{{wdib}}可作为{{#invoke:WikidataIB |getValue}}的便捷封装使用。

其他主要函数

[编辑]

getPreferredValue函数

[编辑]

getPreferredValue函数与getValue用法完全相同,接受相同的参数,但仅返回等级设为“首选”的属性值。该函数现已弃用,请改用getValue|rank=best。

getCoords函数

[编辑]
  • getCoords可接受命名参数|qid=,用于指定条目的维基数据ID。通常省略该参数,默认使用当前条目。
  • 若提供了第一个匿名参数,则直接返回该值,不再调用维基数据。
  • 从维基数据获取的坐标经解析后传递给Template:Coord,其显示效果与手动调用该模板一致。
  • 永不显示字段的黑名单和白名单机制与getValue相同,通过|suppressfields=和|fetchwikidata=实现。
  • format参数设置显示格式为十进制度数或度分秒。以“dec”开头的任何值均表示十进制度数,其他值则表示为度分秒。
  • display参数设置显示位置,可选“inline”、“title”或“inline, title”。默认不设置(即使用{{Coord}}的默认值,当前为“inline”)。

getQualifierValue函数

[编辑]

getQualifierValue函数用于获取限定符的值。使用时需指定属性、该属性对应的值以及相关的限定符。参数说明如下:

  • 属性ID通过匿名参数(或|1=)传入。
  • 该属性的目标值通过|pval=传入。
  • 目标值的限定符ID通过|qual=传入。
  • 白名单和黑名单的实现参数与getValue相同。
  • 可选布尔参数|onlysourced=,用于指定是否仅返回有来源的属性值(默认为“no”)。
  • 可选条目ID|qid=,用于访问任意条目。
  • 输出格式化的参数与getValue相同。

getQualifierValue示例

[编辑]

在南极望远镜(Q1513315)中,属性重大事件 (P793)的值为建筑施工(Q385378),该值带有两个限定符始于 (P580)和终于 (P582)。要获取开始日期:

  • {{#invoke:WikidataIB |getQualifierValue |qid=Q1513315 |P793 |pval=Q385378 |qual=P580 |name=xyz |fetchwikidata=ALL }}

在南极望远镜中返回:

  • 2006年11月 编辑维基数据

getValueByQual函数

[编辑]

getValueByQual函数返回某个属性的值,该属性包含一个限定符,其值为给定的实体ID。参数说明如下:

  • 属性ID通过匿名参数(或|1=)传入。
  • 限定符的属性ID(或“ALL”或“DATES”)通过|qualID=传入。
  • 该限定符的目标值的维基数据实体ID通过|qvalue=传入。
  • 白名单和黑名单的实现参数与getValue相同。
  • 可选布尔参数|onlysourced=,用于指定是否仅返回有来源的属性值(默认为“no”)。
  • 可选条目ID|qid=,用于访问任意条目。
  • 输出格式化的参数与getValue相同。

getValueByQual示例

[编辑]

在肉类食物(Q10990)中,属性读音 (音频文件) (P443)有多个值,每个值均带有限定符作品或名称的语言 (P407)。我们可以返回限定符值为阿拉伯语(Q13955)所对应的属性值:

  • {{#invoke:WikidataIB |getValueByQual |qid=Q10990 |P443 |qualID=P407 |qvalue=Q13955 |fwd=ALL |osd=no |noicon=true}} → Ar-لحم.ogg

getValueByLang函数

[编辑]

getValueByLang函数返回某个属性的值,该属性包含限定符作品或名称的语言 (P407),且该限定符的值为给定的语言代码。参数说明如下:

  • 属性ID通过匿名参数(或|1=)传入。
  • 维基媒体语言代码 (P424)用于匹配语言,其代码由|lang=xx[-yy]指定。若未提供代码,则使用默认语言。
  • 白名单和黑名单的实现参数与getValue相同。
  • 可选布尔参数|onlysourced=,用于指定是否仅返回有来源的属性值(默认为“no”)。
  • 可选条目ID|qid=,用于访问任意条目。
  • 输出格式化的参数与getValue相同。

getValueByLang示例

[编辑]

在开源开发网络(Q7565108)中,属性官方网站 (P856)有多个值,每个值均带有限定符作品或名称的语言 (P407)。我们可以返回其作品或名称的语言 (P407)限定符值(维基数据项)本身具有维基媒体语言代码 (P424)属性且值为“ja”(即日语(Q5287))所对应的属性值:

  • {{#invoke:WikidataIB |getValueByLang |qid=Q7565108 |P856 |lang=ja |fwd=ALL |osd=no |noicon=true}} → https://ja.osdn.net/

若不指定|lang=,使用默认语言(此处为英语(Q1860),其维基媒体语言代码 (P424)值为“en”)也可获得相同结果:

  • {{#invoke:WikidataIB |getValueByLang |qid=Q7565108 |P856 |fwd=ALL |osd=no |noicon=true}} →

工具函数

[编辑]

getLink函数

[编辑]

getLink接受一个维基数据实体的QID,作为第一个匿名参数或通过|qid=传入。

若当前维基站点存在指向某条目的网站链接,则返回该条目的链接,显示文本为维基数据标签。 若无网站链接,则以纯文本形式返回标签。 若当前语言无对应标签,则显示QID替代。

维基数据示例:Corisca and the Satyr(Q29016906)和考古学家(Q3621491)
  • {{#invoke:WikidataIB |getLink |Q29016906}} → Corisca and the Satyr
  • {{#invoke:WikidataIB |getLink |Q3621491}} → 考古学家

getLabel函数

[编辑]

getLabel接受一个维基数据实体的QID,作为第一个匿名参数或通过|qid=传入。

返回指定QID的维基数据项在当前语言下的标签。 若当前语言无对应标签,则返回QID替代。 请注意,返回的是维基数据条目中与当前维基语言相同的标签(若存在)。

维基数据示例:Corisca and the Satyr(Q29016906)和考古学家(Q3621491)
  • {{#invoke:WikidataIB |getLabel |Q29016906}} → Corisca and the Satyr
  • {{#invoke:WikidataIB |getLabel |Q3621491}} → 考古学家
  • {{#invoke:WikidataIB |getLabel |Q19805408}} → Module:Biblio/Ouvrage

label函数

[编辑]

label接受一个维基数据实体的QID,作为第一个匿名参数或通过|qid=传入。

返回指定QID的维基数据项在当前语言下的标签,或链接至当前页面。 若当前语言无对应标签,则返回空字符串。 请注意,返回的是维基数据条目中与当前维基语言相同的标签(若存在)。

维基数据示例:Corisca and the Satyr(Q29016906)和考古学家(Q3621491)
  • {{#invoke:WikidataIB |label |Q29016906}} → Corisca and the Satyr
  • {{#invoke:WikidataIB |label |Q3621491}} → 考古学家
  • {{#invoke:WikidataIB |label |Q19805408}} → Module:Biblio/Ouvrage

getAT函数

[编辑]

getAT接受一个维基数据实体的QID,作为第一个匿名参数或通过|qid=传入。

若当前维基站点存在指向某条目的网站链接,则以纯文本形式返回该网站链接(即条目标题)。 若无网站链接,则不返回任何内容。 请注意,返回的是当前维基百科中对应的条目标题(若维基数据条目中存在跨语言链接)。

维基数据示例:Corisca and the Satyr(Q29016906)和考古学家(Q3621491)
  • {{#invoke:WikidataIB |getAT |Q29016906}} →
  • {{#invoke:WikidataIB |getAT |Q3621491}} →

getDescription函数

[编辑]

getDescription接受一个维基数据实体的QID,通过|qid=传入(若省略则默认为当前条目关联的QID)。 同时接受一个本地参数,作为第一个匿名参数传入。

若传入的本地参数(除“Wikidata”或“none”外)非空,则直接返回该参数值。 若本地参数为“Wikidata”,则以纯文本形式返回该维基数据实体的条目描述。 若描述不存在,或本地参数为“none”,则不返回任何内容。

维基数据示例:Corisca and the Satyr(Q29016906)和考古学家(Q3621491)
  • {{#invoke:WikidataIB |getDescription |qid=Q29016906 |wikidata}} → painting by Artemisia Gentileschi
  • {{#invoke:WikidataIB |getDescription |qid=Q29016906 |A painting}} → A painting
  • {{#invoke:WikidataIB |getDescription |qid=Q29016906 |none}} →
  • {{#invoke:WikidataIB |getDescription |qid=Q3621491 |wikidata}} → 研究过去人类活动的人
  • {{#invoke:WikidataIB |getDescription |qid=Q3621491 |A profession}} → A profession
  • {{#invoke:WikidataIB |getDescription |qid=Q3621491 |none}} →

formatDate函数

[编辑]

formatDate接受一个来自mw.wikibase.entity:formatPropertyValues的标准格式日期时间(例如“1 August 30 BCE”)作为参数1,并根据df(日期格式)和bc参数进行格式化。

  • {{#invoke:WikidataIB |formatDate | 1 August 30 BCE |bc=BCE |df=dmy}} → 1 August 30 公元前
  • {{#invoke:WikidataIB |formatDate | 1 August 30 BCE |bc=BC |df=mdy}} → August 1, 30 公元前
  • df可选“dmy”/“mdy”/“y”——默认值为“dmy”
  • bc可选“BC”/“BCE”——默认值为“BCE”

checkBlacklist函数

[编辑]

checkBlacklist用于检查指定字段是否被允许。 若字段不在黑名单中(即允许使用),则返回true。 若字段在黑名单中(即禁止使用),则返回false。

示例:

  • {{#if:{{#invoke:WikidataIB |checkBlacklist |name=nationality |suppressfields=residence; nationality; citizenship}} | 不在黑名单 | 在黑名单}} → 不在黑名单
  • {{#if:{{#invoke:WikidataIB |checkBlacklist |name=birth_place |suppressfields=residence; nationality; citizenship}} | 不在黑名单 | 在黑名单}} → 不在黑名单

emptyor函数

[编辑]

若第一个匿名参数仅为标点符号、空白字符或HTML标签,则返回空值;否则原样返回该参数(包括前导/尾随空格)。

若参数可能包含“=”,则必须显式调用:

  • | 1 = 参数内容

此时前导和尾随空格将被去除。

该函数在资讯框中可用于替换如下形式的测试:

  • {{#if: {{#invoke:WikidataIB |getvalue |P99 |fwd=ALL}} | <span class="xxx">{{#invoke:WikidataIB |getvalue |P99 |fwd=ALL}}</span> | }}

改用仅需单次调用维基数据的形式:

  • {{#invoke |WikidataIB |emptyor |1= <span class="xxx">{{#invoke:WikidataIB |getvalue |P99 |fwd=ALL}}</span> }}

labelorid函数

[编辑]

labelorid是一个公开函数,用于暴露labelOrId()的输出结果。

Q编号(实体ID)通过|qid=或作为匿名参数传入。

返回该实体的维基数据标签;若无标签则返回QID。

getQid函数

[编辑]
  • getQid针对当前页面及其关联的维基数据条目进行操作。
  • 若提供了第一个匿名参数或|qid=,则返回该QID;
  • 否则,若存在“分类的主主题”(P301)的维基数据实体ID,则返回该ID;
  • 否则,若当前页面关联了维基数据实体ID,则返回该ID;
  • 否则不返回任何内容。

examine函数

[编辑]

examine提供指定属性的完整转储资讯。属性ID通过第一个匿名参数(或通过别名|pid=)传入,条目由参数“qid”指定;若未提供qid,则使用当前页面对应的条目。两个参数均可匿名传入,顺序不限。

其工作方式与Dump函数类似,但仅加载单个声明,而非整个维基数据条目。

  • 示例:{{#invoke:WikidataIB |examine |qid=Q1396889 |P50}}

url2函数

[编辑]

url2接受参数url=,该参数为一个有效的URL,并将其格式化为适合资讯框使用的形式。

示例:

  1. {{#invoke:WikidataIB |url2 |url= http://www.example.com/ }} → www.example.com/ 
    <span class="url">[http://www.example.com/ www<wbr/>.example<wbr/>.com/]</span>&nbsp;
  2. {{#invoke:WikidataIB |url2 |url= http://www.example.com/path/ }} → www.example.com/path/ 
    <span class="url">[http://www.example.com/path/ www<wbr/>.example<wbr/>.com/path/]</span>&nbsp;
  3. {{#invoke:WikidataIB |url2 |url= {{wdib |P856 |qid=Q23317 |fwd=ALL |osd=no}} }} → www.audi.com、https://www.audi.co.za/、https://www.audi.de/、https://www.audi.fr/ 编辑维基数据
    <span class="url">[https://www.audi.com、https://www.audi.co.za/、https://www.audi.de/、https://www.audi.fr/ www<wbr/>.audi<wbr/>.com、https://www<wbr/>.audi<wbr/>.co<wbr/>.za/、https://www<wbr/>.audi<wbr/>.de/、https://www<wbr/>.audi<wbr/>.fr/]</span>&nbsp;[[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=编辑维基数据|link=https://www.wikidata.org/wiki/Q23317?uselang=zh-sg#P856|编辑维基数据]]
    {{wdib |P856 |qid=Q23317 |fwd=ALL |osd=no}} → https://www.audi.com、https://www.audi.co.za/、https://www.audi.de/、https://www.audi.fr/ 编辑维基数据
    https://www.audi.com、https://www.audi.co.za/、https://www.audi.de/、https://www.audi.fr/&nbsp;[[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=编辑维基数据|link=https://www.wikidata.org/wiki/Q23317?uselang=zh-sg#P856|编辑维基数据]]
  4. {{#invoke:WikidataIB |url2 |url= {{url|http://www.example.com/}} }} → www.example.com www.example.com/ www.example.com]] 
    <span class="url">[http://www.example.com/ www<wbr/>.example<wbr/>.com]</span> www<wbr/>.example<wbr/>.com/ www<wbr/><wbr/>.example<wbr/><wbr/>.com]</span>]</span>&nbsp;

与{{URL}}输出对比:

  1. {{URL | http://www.example.com/ }} → www.example.com
    <span class="url">[http://www.example.com/ www<wbr/>.example<wbr/>.com]</span>
  2. {{URL | http://www.example.com/path/ }} → www.example.com/path/
    <span class="url">[http://www.example.com/path/ www<wbr/>.example<wbr/>.com<wbr/>/path<wbr/>/]</span>
  3. {{URL | {{wikidata|property|Q23317|P856}} }} → www.audi.com
    <span class="url">[https://www.audi.com www<wbr/>.audi<wbr/>.com]</span>
    {{wikidata|property|Q23317|P856}} → https://www.audi.com
    https://www.audi.com

参见

[编辑]

编入资讯框

[编辑]

通常,getValue调用会在资讯框定义中通过适当的模板参数来调用。en:Template:Infobox book/Wikidata/Sandbox中给出了一个简单的实现示例。以资讯框中的“作者”字段为例,其编码方式如下:

| label2  = Author{{#if:{{{authors|}}}|s}}
|  data2  = {{#invoke:WikidataIB |getValue |P50 |name=author |fetchwikidata={{{fetchwikidata|}}} |suppressfields={{{suppressfields|}}} |{{{authors|{{{author|}}}}}} }}

待获取的属性为第一个匿名参数,此处为作者 (P50)。

字段名称通过|name=传入,系统会将该名称与黑名单和白名单进行比对。若要在特定条目中始终隐藏作者字段,编者可在资讯框中设置|suppressfields=author,此后该字段将永不显示。

若字段不在黑名单中,则可通过在资讯框中设置|author=乔治·奥威尔等本地值来显示作者资讯。同时也可接受|authors=参数。若字段名称在白名单中(例如|fetchwikidata=author; genre; pub_date; pages; dewey; congress),且未提供本地值,则资讯框将显示从维基数据获取的值。分隔符可使用除|和{}之外的任意字符。

快捷方式|fetchwikidata=ALL将获取所有不在黑名单中的字段,前提是条目的对应字段未提供本地值。

资讯框中的调用示例

[编辑]

getValue的基本用法:

  • {{#invoke:WikidataIB |getValue |P000 |name=fieldname |qid={{{qid|}}} |fetchwikidata={{{fetchwikidata|}}} |onlysourced={{{onlysourced|}}} |{{{localparameter|}}} }}

完整参数集合:

  • {{#invoke:WikidataIB |getValue |P000 |name=fieldname |qid={{{qid|}}} |suppressfields={{{suppressfields|}}} |fetchwikidata={{{fetchwikidata|}}} |onlysourced={{{onlysourced|}}} |noicon={{{noicon|}}} |wdl={{{wikidatalink|}}} |df={{dateformat|}} |bc={{{bc|}}} |prefix= |postfix= |linkprefix= |linkpostfix= |sorted={{{sorted|}}} |sep={{{separator|}}} |list={{listtype|}}} |{{{localparameter|}}} }}

当然,资讯框中特定字段的参数可以采用固定值,而不必从资讯框接收参数(后者会影响所有字段)。例如,某个字段可能需要设置|list=hlist以显示一系列短词;而另一个字段则可能需要使用|list=ubl来显示每行若干词的垂直无项目符号列表。

坐标

[编辑]

getCoords调用在接收到从维基数据返回的坐标后,将显示Template:Coord的输出结果。其编码方式如下:

|label20 = 坐标
| data20 = {{#invoke:WikidataIB |getCoords |name=coordinates |suppressfields={{{suppressfields|}}} |fetchwikidata={{{fetchwikidata|}}} |{{{coordinates|}}} }}

示例参见en:Template:Infobox biosphere reserve:

{{Infobox biosphere reserve
| fetchwikidata = ALL
}}

在维基数据包含坐标的条目中使用时,坐标将显示在常规位置。

升级现有资讯框

[编辑]

由于维基数据功能需要|fetchwikidata=参数,因此可将现有资讯框替换为集成了这些调用的新资讯框,而无需对任何条目做任何改动。使用新资讯框的每个条目可随后通过设置|fetchwikidata=ALL或该条目所需的字段列表来启用功能。在启用功能时,编者有责任检查是否显示了不想要的字段。若有,可通过设置|suppressfields=为不需要的字段列表,将其添加到条目的黑名单中。

可供查证

[编辑]

当某个特定字段必须仅包含有来源的值时,应使用getValue并确保|onlysourced=未设为“false”、“0”或“no”。默认情况下,该函数会排除无来源或仅引自维基百科的值,从而降低条目层面的检查难度。若接受无来源数据,可设置|onlysourced=no。由于无法通过自动化机制判断现有来源在特定上下文中是否可靠,此项工作仍需由熟悉主题的编辑在条目层面完成,且应在首次为该条目启用维基数据时进行。

辅助模板

[编辑]
Template:If then show
测试第一个匿名参数是否非空,若非空则返回该参数;否则返回第二个匿名参数。可选的第三和第四个匿名参数为返回第一个参数时提供前缀和后缀。适用于第一个参数为维基数据调用的情况。
Template:Ifnoteq then show
测试第一个匿名参数是否等于第二个匿名参数,若相等则返回第三个匿名参数;否则返回第一个匿名参数。适用于第一个参数为Lua模块的{{#invoke:调用,且其返回值需要特定例外处理的情况。
Template:If then wikilink
测试第一个匿名参数是否非空,若非空则返回带有可选命名空间前缀的内部链接格式。
Template:Formatter link
接受外部标识符代码作为|code=,并使用格式化URL作为|url=构建指向外部资源的链接,显示文本为代码本身。
Template:Emptyor
测试一段文本是否实际为空或包含有效内容。若匿名参数仅包含HTML标签、标点符号(如维基标记)和空白字符,则返回空值;否则原样返回该参数。为p.emptyor函数的封装。

使用示例:Infobox book

[编辑]

本节内容取自英文维基百科的en:Template:Infobox book/Wikidata/Sandbox/doc。

不使用维基数据

[编辑]
{{Infobox book/Wikidata/Sandbox
| suppressfields =
| fetchwikidata  =
| name           = Animal Farm
| title_orig     = Animal Farm: A Fairy Story
| image          = Animal Farm - 1st edition.jpg
| image_size     = 200px
| caption        = First edition cover
| author         = [[George Orwell]]
| country        = United Kingdom
| language       = English
| genre          = Political satire
}}

此用法与普通资讯框无异:仅显示本地提供的参数。

{{Infobox book/Wikidata/Sandbox
| name           = Animal Farm
| title_orig     = Animal Farm: A Fairy Story
| image          = Animal Farm - 1st edition.jpg
| image_size     = 200px
| caption        = First edition cover
| author         = [[George Orwell]]
| country        = United Kingdom
| language       = English
| genre          = Political satire
}}

若不使用黑名单和白名单,可省略相关参数。

全部使用维基数据

[编辑]
{{Infobox book/Wikidata/Sandbox
| fetchwikidata  = author; genre; pub_date; pages; dewey; congress
}}

从维基数据获取作者、出版日期、页数、杜威分类号和国会图书馆目录号。

{{Infobox book/Wikidata/Sandbox
| fetchwikidata  = ALL
}}

快捷方式:将|fetchwikidata=设为ALL可获取所有可用字段。 任何字段均可通过|suppressfields=指定来隐藏,或通过提供本地值来覆盖。

永不显示体裁字段

[编辑]
{{Infobox book/Wikidata/Sandbox
| suppressfields = genre
| fetchwikidata  = author; genre; pub_date; pages; dewey; congress
}}

体裁字段将始终被隐藏,即使提供了本地值也不例外。

{{Infobox book/Wikidata/Sandbox
| suppressfields = genre
| fetchwikidata  = author; genre; pub_date; pages; dewey; congress
| genre          = Political satire
}}

本地值覆盖

[编辑]
{{Infobox book/Wikidata/Sandbox
| fetchwikidata  = author; genre; pub_date; pages; dewey; congress
| genre          = Political satire
}}

体裁字段将显示“Political satire”,无论维基数据中存储的是什么。

{{Infobox book/Wikidata/Sandbox
| fetchwikidata  = ALL
| genre          = Novel
}}

体裁字段将显示“Novel”,无论维基数据中存储的是什么。

不获取体裁字段

[编辑]
{{Infobox book/Wikidata/Sandbox
| suppressfields = 
| fetchwikidata  = author; pub_date; pages; dewey; congress
}}

体裁字段不会从维基数据获取。仅导入作者、出版日期、页数、杜威分类号和国会图书馆目录号。本地提供的体裁值将正常显示。

参见

[编辑]

追踪分类

[编辑]