跳至內容

模組: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-mo#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-mo#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
}}

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

參見

[編輯]

追蹤分類

[編輯]