# Lua 模版快速取用 Wikidata COSCUP 2020 簡報網址: https://bit.ly/33hK0So [[User:Plantoid]] 簡報授權方式: [姓名標示\-相同方式分享 3\.0 台灣](https://creativecommons.org/licenses/by-sa/3.0/tw/) --- ## Lua 模版快速取用 Wikidata ![](https://i.imgur.com/NyHhDQk.png) 簡報網址: https://bit.ly/33hK0So --- ## 大綱 * 取用 Wikidata 資料最佳實踐 * 為什麼重複使用 Wikidata 資料 * Wikidata 資料使用範例 * 使用 MediaWiki Lua 模組 * MediaWiki Module * Wikidata 詞彙 * Module:Wikibase * Module:Wd * Server 環境設置 * 結論 --- ## 取用 Wikidata 資料最佳實踐 採用 CC0 授權 (公眾領域貢獻宣告):免費、不需註明出處 ![](https://i.imgur.com/dIg9l6b.png =200x200) 介紹: [「公眾領域貢獻宣告」(CC0) \| 台灣創用CC計畫](http://creativecommons.tw/cc0) --- ![](https://i.imgur.com/LWVAU8x.png =498x583) --- * 雖然 CC0 沒有強制要註明出處,但是 Wikidata 會感謝你標示「Powered by Wikidata」或加上 Wikidata logo * 提供網址讓使用者可以反應資料問題、或回饋意見給 Wikidata 編輯者社群 --- ## 為什麼重複使用 Wikidata 資料 * 將事實資料集中,避免重工 * 對照不同來源的資料,減少語言隔閡 * 整合不同來源的資料 * 集中資料,方便更多人發現與修改錯誤 --- ## Wikidata 資料使用範例 * 維基百科的資訊框 (infobox) 模版 * 地圖或圖表 * 維護主題清單 e.g. [Birthday today](https://en.wikipedia.org/wiki/Wikipedia:Database_reports/Birthday_today) * 視覺化 e.g. [The Apollo missions](http://histropedia.com/timeline/7c00jg84kn/Apollo-missions) timeline --- ### 範例:維基百科的資訊框 (infobox) 模版 ![](https://i.imgur.com/DOGEVN9.png =280x381) --- ### 範例:維基百科的內容使用 Wikidata 資料 臺灣 - 維基百科,自由的百科全書 https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3 ``` 在此頁面使用的維基數據實體 臺灣:網站連結、一些陳述、標題、其它(陳述) ``` --- ### 範例:使用地理圖表 ![](https://i.imgur.com/rcQicF6.jpg) --- * Geography of Taiwan - Wikipedia https://en.wikipedia.org/wiki/Geography_of_Taiwan * geography of Taiwan - Wikidata https://www.wikidata.org/wiki/Q22528 * OSM關係識別碼 (OpenStreetMap relation ID) - Wikidata https://www.wikidata.org/wiki/Property:P402 * 關聯:‪臺灣‬ (‪7219605‬) | OpenStreetMap https://www.openstreetmap.org/relation/7219605 --- ### 範例:跨站連結 以[臺灣](https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3)條目為例,在側邊工具提供「維基數據項目」(Wikidata item) 連結 https://www.wikidata.org/wiki/Special:EntityPage/Q22528 ![](https://i.imgur.com/To4pmD2.png =139x234) --- ## 使用 MediaWiki Lua 模組 「簡潔、輕量、可延伸的手稿語言。」 ![logo of lua](https://i.imgur.com/dIVEKkN.png "logo of lua" =300x300) --- ### MediaWiki Wikidata Module 使用統計 | Module | 英文維基 | 中文維基 | | ------------------- | --------:| --------:| | [Module:EditAtWikidata](https://en.wikipedia.org/wiki/Module:EditAtWikidata) | 👑 1,350,072 | 121,221 | | [Module:Wd](https://en.wikipedia.org/wiki/Module:Wd) | **1,147,925**| 116,783 | | [Module:WikidataIB](https://en.wikipedia.org/wiki/Module:WikidataIB) | 1,010,985| 128,779 | | [Module:Wikibase](https://en.wikipedia.org/wiki/Module:Wikibase) | 4| 👑 **838,742**| | [Module:Wikidata](https://en.wikipedia.org/wiki/Module:Wikidata) *棄用* | 135,976| 91,747 | 統計來源:[Jarry1250's Wikimedia Laboratory \- Template transclusion count](https://templatecount.toolforge.org/index.php?lang=en&namespace=828#bottom) --- ### MediaWiki Module 用法 * (已安裝 Extension:Scribunto) * 建立 Module:Module_name 的頁面 * 建立 XX 的頁面,輸入以下語法,呼叫 Module:Module_name ``` {{#invoke: Module_name | function_name | arg1 | arg2 | arg3 ... }} ``` --- ### Wikidata 詞彙 ![Imgur: The magic of the Internet](https://i.imgur.com/2otgeUR.png "Imgur: The magic of the Internet") source: [維基資料:詞彙表 \- Wikidata](https://www.wikidata.org/wiki/Wikidata:Glossary/zh-hant) --- ### Module:Wikibase 用法: id Wikidata 項目識別符 (item identifier) ``` {{#invoke: Wikibase | id }} ``` 範例 * [臺灣 \- 維基百科,自由的百科全書](https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3) 顯示 [臺灣 \- Wikidata](https://www.wikidata.org/wiki/Q22502) 項目識別符:`Q22502` * 若無則顯示:無項目 --- ### Module:Wikibase 用法: label Wikidata 項目標籤 ``` {{#invoke: Wikibase | label }} ``` 範例 * [Lee Teng\-hui \- Wikipedia](https://en.wikipedia.org/wiki/Lee_Teng-hui) 顯示 [李登輝 \- Wikidata](https://www.wikidata.org/wiki/Q6538737) 英文語系 `label` 欄位值: `Lee Teng-hui` * [李登輝 \- 維基百科,自由的百科全書](https://zh.wikipedia.org/zh-tw/%E6%9D%8E%E7%99%BB%E8%BC%9D) 顯示 [李登輝 \- Wikidata](https://www.wikidata.org/wiki/Q6538737) 中文語系 `label` 欄位值: `李登輝` --- ``` {{#invoke: Wikibase | label | entity id (Q# or P#) }} ``` 範例 * `{{#invoke: Wikibase | label | Q6538737}}` 顯示 [李登輝 \- Wikidata](https://www.wikidata.org/wiki/Q6538737) (Q6538737) 中文語系 `label` 欄位值: `李登輝` (註:會受到使用者「中文變體」設定影響) * `{{#invoke: Wikibase | label | P27}}` 則顯示 Wikidata `P27` 欄位名稱:`國籍` --- ### Module:Wikibase 用法: description Wikidata 項目描述 ``` {{#invoke: Wikibase | description }} ``` 範例 * [中華民國 \- 維基百科,自由的百科全書](https://zh.wikipedia.org/zh-tw/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B) 顯示 [中華民國 \- Wikidata](https://www.wikidata.org/wiki/Q865) 中文語系 `description` 欄位值:`東亞的民主共和國` * [Lee Teng\-hui \- Wikipedia](https://en.wikipedia.org/wiki/Lee_Teng-hui) 顯示 [李登輝 \- Wikidata](https://www.wikidata.org/wiki/Q6538737) 英文語系 `description` 欄位值:`former President of Republic of China` --- ``` {{#invoke: Wikibase | description | entity id (Q# or P#) }} ``` 範例 * `{{#invoke: Wikibase | description | Q22502}}` 顯示 [臺灣 \- Wikidata](https://www.wikidata.org/wiki/Q22502) (Q22502) 中文語系 `description` 欄位值:`西太平洋/東亞島嶼` * `{{#invoke: Wikibase | description | P27}}` 顯示 Wikidata `P27` 欄位描述:`主項人物持有公民權的所屬國家` --- ### Module:Wikibase 用法: wdurl Wikidata 條目網址 (英文維基可用、~~中文維基~~尚未支援) ``` {{#invoke: Wikibase | wdurl }} {{#invoke: Wikibase | wdurl | entity id (Q# or P#) }} ``` 範例 * [Geography of Taiwan \- Wikipedia](https://en.wikipedia.org/wiki/Geography_of_Taiwan) 輸入 `{{#invoke: Wikibase | wdurl }}` 顯示 https://www.wikidata.org/wiki/Special:EntityPage/Q22528 即 [台灣地理 \- Wikidata](https://www.wikidata.org/wiki/Q22528) 條目網址 --- ### Module:Wikibase 用法: datatype Wikidata 條目屬性資料型態 ``` {{#invoke: Wikibase | datatype | property id (P#) }} ``` 範例 * 輸入 `{{#invoke: Wikibase | datatype | P27}}` ([國籍 \- Wikidata](https://www.wikidata.org/wiki/Property:P27)) 顯示 `wikibase-item` (項目) --- | 資料型態 | 資料範例 | | -------- | -------- | | commonsMedia (共享資源媒體檔案) | [圖片 \- Wikidata](https://www.wikidata.org/wiki/Property:P18) (P18) | | globe-coordinate (地理座標) | [地理座標 \- Wikidata](https://www.wikidata.org/wiki/Property:P625) (P625) | | wikibase-item (項目) | [政府首長 \- Wikidata](https://www.wikidata.org/wiki/Property:P6) (P6) | | wikibase-property (屬性) | [父屬性 \- Wikidata](https://www.wikidata.org/wiki/Property:P1647) (P1647) | | string (字串) | [學名 \- Wikidata](https://www.wikidata.org/wiki/Property:P225) (P225) | 詳細資料型態清單請見:[Help:Data type \- Wikidata](https://www.wikidata.org/wiki/Help:Data_type) --- ### Module:Wd 用法 ``` {{#invoke:wd | property | entity id (Q#)| property id (P#)}} {{#invoke:wd | properties | entity id (Q#)| property id (P#)}} ``` 範例: * 台灣人口多少 `{{#invoke:wd|property|Q22502|P1082}}` 顯示 `23,500,000` --> 對應到 [臺灣 \- Wikidata](https://www.wikidata.org/wiki/Q22502) (Q22502) 的人口屬性 [人口 \- Wikidata](https://www.wikidata.org/wiki/Property:P1082) (P1082) * 台灣記載於 `{{#invoke:wd|properties|Q22502|P1343}}` 顯示 `亚美尼亚苏维埃百科全书、布羅克豪斯-艾佛隆百科詞典` --- 範例:台北一筆人口數值 輸入`{{#invoke:wd|property|normal+|Q1867|P1082}}` 說明 * Q1867 [臺北市 \- Wikidata](https://www.wikidata.org/wiki/Q1867) * P1082 [人口 \- Wikidata](https://www.wikidata.org/wiki/Property:P1082) 顯示 `2,684,567` --- 範例:台北多筆人口數值 輸入 `{{#invoke:wd|properties|normal+|Q1867|P1082}}` 說明 * `property` 改成 `properties` 顯示為 `2,684,567、2,704,810、2,647,076、2,645,881 ...` --- 範例:台北多筆人口數值 加上調查日期 輸入 `{{#invoke:wd|properties|qualifier|normal+|Q1867|P1082|P585}}` 說明 * 加上 `qualifier` (限定詞/限定符) * P585 [日期 \- Wikidata](https://www.wikidata.org/wiki/Property:P585) 顯示為 `2,684,567 (2013年11月)、2,704,810 (2015)、2,647,076 (2001年1月)` --- 範例:台北多筆人口數值 加上調查日期、資料來源 輸入 `{{#invoke:wd|properties|qualifier|references|normal+|Q1867|P1082|P585}}` 說明 * 加上 `references` 顯示為 ``` 2,684,567 (2013年11月)[1]、2,704,810 (2015)[2]、... 1. http://ca.gov.taipei/public/Attachment/621617235718.ods%E3%80%82 2. http://sowf.moi.gov.tw/stat/month/m1-07.xls%E3%80%82 ``` --- ## Server 環境設置 --- ### MediaWiki <div style="display: block; margin-left: auto; margin-right: auto; width: 100%;"> ![MediaWiki logo](https://i.imgur.com/d6IJRkT.png) </div> * Wiki 軟體 * 伺服器軟體 * 支援維機媒體基金會專案 * 自由軟體:GNU 通用公共授權條款 (GNU General Public License) https://www.mediawiki.org/wiki/MediaWiki --- ### 擴充套件設置 ``` Extension:Scribunto * Extension:WikiEditor 編輯器 * Extension:SyntaxHighlight 美化程式碼 * Extension:CodeEditor 編輯器 * LuaSandbox 如果想要用額外的 Lua Extension:Wikibase Client ``` 授權: GPL v 2.0+ (* 代表選擇性安裝) --- ### 環境設置 * Extension:Scribunto 內建 Lua 支援的作業系統: Linux (x86 and x86-64), Mac OS X Lion, and Windows (32- and 64-bit) * 啟用 PHP `proc_open` 函數: `Execute a command and open file pointers for input/output` ([PHP網站](https://www.php.net/manual/en/function.proc-open.php)) * 設定 `Lua` 執行權限 ```bash chmod 755 /path/to/mediawiki/extensions/Scribunto/ includes/engines/LuaStandalone/binaries/ lua5_1_5_作業系統類型/lua ``` --- ## 結論 * 將資料集中,避免重工、方便發現與修改錯誤、增加資料品質 * 對照不同來源的資料,減少語言隔閡 * 複雜查詢可以使用 Lua 模組 Module:Wd 或 Module:WikidataIB * 簡單查詢可用 Module:Wikibase --- ## The End 簡報網址: https://bit.ly/33hK0So [[User:Plantoid]] planetoid@gmail.com --- ## 參考資料 * Wikidata:Data access 3 Best practices to follow https://www.wikidata.org/wiki/Wikidata:Data_access#Best_practices_to_follow * Wikidata:Wikidata in Wikimedia projects - Wikidata https://www.wikidata.org/wiki/Wikidata:Wikidata_in_Wikimedia_projects * Wikipedia:Wikidata - Wikipedia https://en.wikipedia.org/wiki/Wikipedia:Wikidata --- * Lua - 維基百科,自由的百科全書 https://zh.wikipedia.org/zh-tw/Lua * Lua/Tutorial - MediaWiki https://www.mediawiki.org/wiki/Lua/Tutorial * Extension:Scribunto - MediaWiki https://www.mediawiki.org/wiki/Extension:Scribunto * Module:Wikibase - Wikipedia https://en.wikipedia.org/wiki/Module:Wikibase * 模組:Wikibase - 維基百科,自由的百科全書 https://zh.wikipedia.org/wiki/Module:Wikibase * Module:Wd - Wikipedia https://en.wikipedia.org/wiki/Module:Wd --- ## 技術問題排除 --- ### Lua 錯誤:內部錯誤:直譯器因收到信號 "9" 已中止 解法:macOS 的安全設置 1. 執行 `Lua` ,跳出「安全性與隱私權」警告 --> 允許 `Lua` 執行 2. 再執行一次 `Lua` 3. 無法驗證「`Lua`」的開發者,確定要打開它嗎 --> 確定 4. 再執行一次 `Lua` ,直到出現版本資訊 --- ```bash ## 輸入 % /path/to/mediawiki/extensions/Scribunto/ includes/engines/LuaStandalone/binaries/ lua5_1_5_mac_lion_fat_generic/lua ## 預期結果 Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio ``` ```bash ## 離開 Lua console % os.exit() ``` --- ### attempt to index field 'wikibase' (a nil value) 錯誤:`Lua 錯誤 於 模組:XXX 中的第 XX 行:attempt to index field 'wikibase' (a nil value)。` 解法:檢查安裝 [Extension:Wikibase Client](https://www.mediawiki.org/wiki/Extension:Wikibase_Client) --- ### 腳本錯誤:函數“wdurl”不存在。 ```bash ## 輸入 {{#invoke: Wikibase | wdurl }} ``` 錯誤:腳本錯誤:函數“wdurl”不存在。 解法:Module:Module_name 的函數不存在,需要修改 Module。
{}
    203 views