跳至內容

模組: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}} → https://zh-tw.osdn.net/

工具函數

[編輯]

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-hant#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-hant#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
}}

體裁字段不會從維基數據獲取。僅導入作者、出版日期、頁數、杜威分類號和國會圖書館目錄號。本地提供的體裁值將正常顯示。

參見

[編輯]

追蹤分類

[編輯]