---
# System prepended metadata

title: MediaWiki/Wikibase 環境與 OCLC 原型方案總覽 - Wikidata Taiwan｜臺灣維基數據社群

---

# MediaWiki/Wikibase 環境與 OCLC 原型方案總覽
> Overview of the MediaWiki-Wikibase Platform and OCLC Project Prototype
* [回目錄](https://hackmd.io/@wikidata-tw/oclc2019report)

本段落將會簡述 Passage 專案原型環境的技術細節。我們將從非技術性的使用者視角開始，檢視編輯流程，以及其所產生的結構化資料。後面我們將會討論，使用者輸入將如何被接收、儲存、並被顯示或者輸出。然後在最後的部分我們將會討論 OCLC 所開發的新的應用程式，以及 Passage 專案的使用者本位設計。

## Wikibase 條目、頁面、與實體
>A Wikibase article, page, or "entity"

有鑑於技術的同質性，一樣都是建立在 MediaWiki/Wikibase 系統之上，我們的技術探討將從檢視 Wikidata 的編輯流程開始。

如圖 1 所示，一個普通的 Wikidata 頁面，蒐錄有關科幻作家 Douglas Adams 的資訊。這張來自 Wikimedia Commons 的圖片標示了一個頁面中最重要的幾個元素，其通通都是以鏈結資料的形式進行紀錄。如 "Entity (實體)"、"Fingerprint (指紋)"、"Item (項目)"、"Property (屬性)"、"Rank (優先級)"、以及 "Qualifier (限定詞)" 等概念皆經常在 Wikibase 的討論中出現並也將經常在本報告中被使用。這些概念的定義可以在 Wikidata Glossary 以及 Wikidata Help portal [^21]中找到。

圖一。 Wikibase 編輯頁面結構，Charlie Kritschmar (WMDE) [CC0], 來自 Wikimedia Commons。[^22]

圖一中所示是一個實體 [^23]，或說一個 Wikibase 頁面，指向一個消岐義的 Wikibase 項目或屬性，定義如下。"Fingerprint (指紋)"[^24] 或 "Fingerprint data (指紋資料)" 系指在實體頁面第一部分所呈現之人類可讀的資料用以區別其獨特性。圖一的 Fingerprint Lable (指紋標籤)[^25] 為 "Douglas Adams"。Fingerprint Description (指紋描述)[^26] 是 "英國作家，幽默作家"，而 Fingerprint Aliases (指紋別名)[^27] 為 "Douglas Noël Adams" 以及 "Douglas Noel Adams"。指紋資料可以用任何 Wikibase 所支援的語言與符號進行輸入，設計來協助人類用戶的搜尋、獲取、項目選擇、消岐義、以及重複偵測。

其他 Wikibase 實體樣板重要元素有：

* Items (項目)[^28]：代表人類所有的知識，主題、概念、物體等。圖一為一個實體叫做 Douglas Adams 並著有 The Hitchhiker’s Guide to the Galaxy 以及其他科幻作品。
* Property (屬性)[^29]：代表實體與其他實體之間的關係。圖一中，Douglass Adams 便有一條 "就讀學校 (P69)" 連接至 "St. John's College (聖約翰學院)"。
* Qualifier (限定詞)[^30]：可以用於補捉自然語言中複雜的句構中的意涵。如圖一中所示，通過限定詞的使用 "始於"、"結束於"、以及 "學位"，我們便將 "Douglass Adams 於 1971 至 1974 期間就讀於 St. John's College 並獲得文學學士學位。" 這一句子濃縮為簡潔的一個屬性加上三個限定詞的形式。後續的報告中有數個使用情境也將進行類似的操作。
* Rank (優先級)[^31]：通過三個等級 "優先"、"普通"、以及 "棄用" 使用者可以對一個描述進行分級。在圖一的例子中，其描述便是 "普通" 等級 (每個描述前的黑色點點)。根據 Wikibase Data Model Primer (Wikibase 資料模型概覽)[^32] 一文所述如果一個描述的可信度足夠高便可以將其等級提升為 "優先"。其他描述也可能被降級為 "棄用" 如果被認定為有誤的。雖然優先級可以被用於定義描述來源的品質或可信度，此功能亦可被用於展現資料解讀方式的多樣性。描述優先級的功能在部分使用情境中有所探討，並被視為具有高度潛力的工具來管理 "眾源" 貢獻進入圖書館資源描述領域。

從宏觀來說，建立一個項目實體並不複雜。使用者通過 Wikidata 主頁或是本地端的 Wikibase 套件來發起一個編輯工作，並跟著以下步驟：

1. 宣告一個新的項目實體。
1. 添加指紋描述。
1. 添加結構化描述，並將其與其他實體進行關聯，並根據需求編輯限定詞。
1. 為其添加參考來源，以提升其可信度。

除此之外，在 Passage 專案的 Wikibase 執行個體中還可以再進行一個額外的步驟：用戶可以根據需求對從 Wikidata 繼承來的本體學 (Ontology) 結構進行編輯。在 Wikidata 中，一般用戶是不能進行這類的操作[^33]，只能對其提出建議，並在獲得足夠的支持後，才會由管理員或是具有相關權限的屬性編輯員進行相關調整。

上述所定義的內容是 Wikibase 編輯體驗中最重要的特色。熟悉鏈結資料的人也可以發現許多熟悉的概念，比如說 Wikibase 的 "項目" 基本上等於所謂的 "事物"、"實體"、或是 "物體"[^34]。

> Wikibase 的結構讓使用者可以通過簡單而且直覺的介面來進行鏈結資料的創建及使用。並且完全不需要接觸任何原始 RDF 資料或是對軟體層面進行編輯。


並且，當新的項目或屬性被宣告時，Wikibase 的編輯程序也將會賦予其一筆獨特的 URL 如 https://www.wikidata.org/wiki/Q42 ，Douglass Adams 的頁面。這個 URL 一般而言被視作一個 Uniform Resource Identifier (統一資源識別碼 URI)[^35]，而且是獨特屬於這位英國作家。

除此之外，在編輯中所產生的結構化資料還可以輸出為鏈接資料並儲存於一個 Triplestore[^36] 之中；Triplestore 是一種可以被 SPARQL 檢索語言[^37]所使用的一種資料庫。Wikibase 的結構讓使用者可以通過簡單而且直覺的介面來進行鏈結資料的創建及使用。並且完全不需要接觸任何原始 RDF 資料或是對軟體層面進行編輯。

更多有關如何在 Wikibase 中進行編輯的說明，請見 Wikidata 協助頁面[^38]並遵循其編輯工作流程的指導[^39]。在本報告前段所引述之 ARL 報告段落 "A Brife History and Introduction to Wikidata" 之中有為圖書館社群的讀者們介紹如何進行編輯[^40]。在 2018 年六月的 The OCLC Works in Progress webinar “Introduction to Wikidata for Librarians” 之中有對該報告更詳細的探討[^41]。

## Wikibase 的實體生態系
>The Wikibase Entity Ecosystem

Wikibase 是一組開源的軟體套件，可以提供環境來創建、編輯、呈現、以及儲存，將資料以如同上面 Douglass Adams 實體頁面的形式蒐集。Wikidata 也是以同樣的系統建立而成。而 OCLC Passage 專案的原型系統也是建立在 Wikibase 之上，與 Wikidata 有著相似的結構。除此之外，Passage 也有導入 Wikidata 使用者們一同建立的資源，如協助文件、辭典、資料結構 (Ontology)、以及部分實體資料。在 Passage 專案期間，這些由 Wikidata 所導入的資料將會經由成員們的實務練習，編輯並修改其內容，此外我們也通過 Explorer 以及 Retriever，兩個由 OCLC 團隊所開發的應用程式來拓展 Wikibase 的功能以便更加符合圖書館 "資源-描述" 的工作流程。

### MediaWiki 與 Wikibase
>MediaWiki and Wikibase

如同前面所述，MediaWiki 提供了基礎的 Wiki 軟體，包含了一系列實用的功能，如完善的讀寫 API、使用者權限管理工具、編輯歷史、等等。Wikibase 在這之上還提供了額外的功能，以鏈結資料形式儲存結構化資料以及其關係的能力。隨著資料的建立、編輯、或被刪除，其 Text Search Index 也回自動更新以便其搜尋、重複偵測、以及消岐義功能能順利運作。最後，Wikibase 的編輯介面可以提供創建、更新、合併、以及刪除項目或屬性實體的功能。圖二中展示了上述這些系統部件是如何整合互動。

圖二。MediaWiki 與 Wikibase 環境

### Triplestore 與 SPARQL Query 應用程式介面以及使用者介面
>The Triplestore, SPARQL Query API, and the SPARQL Query user interface

MediaWiki/Wikibase 環境還有帶上一個 RDF Triplestore 以及一個 SPARQL API 來協助其工作。在 Triplestore 裡的資料會自動地跟 Wikibase 的資料進行同步。通過 Passage Query 服務使用者介面 (基於 Wikidata Query 服務)，使用者可以輕鬆的編譯並送出 SPARQL Query 指令來從其底層的 Triplestore 來獲取資訊。並且 SPARQL Query 的介面中有內建的範例指令、資料視覺化工具、等功能。圖三中展示了不同介面之間以及底層系統如何整合互動。

圖三。MediaWiki 與 Wikibase 環境以及其平行的 Triplestore、SPARQL Query API、以及 SPARQL Query 使用者介面。

### OpenRefine 與 Passage Explorer：MediaWiki/Wikibase 與 SPARQL Query 的應用
>Applications that use the MediaWiki/Wikibase environment and the SPARQL Query service: OpenRefine and the Passage Explorer

OCLC 團隊在 Passage 專案中嘗試建立新的使用者介面來對資料進行探索：Passage Explorer 詳細資訊將在後續進行討論。這個介面整合了 MediaWiki Search API、SPARQL Query API、以及外部資源如 DBPedia 來提供更為全面的資料。

OpenRefine[^42] 是在圖書館社群中相當熱門的工具，用以進行資料清理、標準化、以及內外部資源的整合[^43]。OpenRefine 的 API 可以與 MediaWiki 以及 SPARQL 的 API 進行對接，並且通過相容的應用程式來進行使用。

圖四中展示了這些額外使用者介面如何與其他部件進行連結。

圖四。Passage Explorer 與 OpenRefine 如何與 MediaWiki/Wikibase 和 SPARQL Query 服務連結。
### 通過 PyWikibot 以及 Passage Retriever 進行資料導入
> Data import with PyWikibot and the Passage Retriever

批量導入資料的工作始於對資料進行預處理。OCLC 團隊通過 Python 的套件 PyWikibot[^44]來進行這一工作；PyWikibot 會呼叫 MediaWiki 認證程序並通過 API 來進行批量導入。

為了強化資料改進的工作流程，OCLC 團隊也開發了另一個網頁工具 Retriever 來搜尋 Wikidata、VIAF、以及 FAST，並將資料通過 PyWikibot 導入 Passage 專案之中，如圖五所示。

圖五。通過 Passage Retriever 以及 PyWikibot 進行批量導入工作

圖五所示是從宏觀角度來看 Passage 專案的系統環境。以 MediaWiki/Wikibase 最為基礎，並以其他開放工具如 SPARQL Query 系統以及 PyWikibot 來進行資料的輸入，共同建立一個彈性且強大的系統，隨時可以搭起一個鏈結資料的管理系統並且可以輕易地針對使用情境插入新的套件。

## 基礎資料集
>The Baseline Dataset

OCLC 團隊準備了兩套分析流程來為 Passage 專案準備初始資料。

首先是篩選、清理、標準化、以及整合工作流程。這個工作流程主要不屬於圖書館的資源描述工作，協助將人類可讀的紀錄拆解成機器可讀的描述集合，或是套句鏈接資料的說法，將 "字串昇華為物件"。

除此之外，Wikidata 的資料也被進行檢視，並且與圖書館社群現有的資料進行對照以篩選出可以做為種子資料的潛在資料集。實務層面上，這個流程篩選出了 120 萬筆使用了圖書館社群鏈結資源識別碼的 Wikidata 項目。最一開始原本只篩選使用了 VIAF 識別碼的項目，但是在後續我們也將 FAST、ID.loc.gov、Getty vocabularies、以及 WorldCat 的識別碼也納入專案之中。

在這個過程中我們也遭遇了有關如何進行建模的問題，尤其是在涉及創作領域的實體。舉例而言，WorldCat 的識別碼採用了與 Functional Requirements for Bibliographic Records (書目紀錄功能需求 FRBR) 系統的載體較為相近的概念，但是Wikidata 對創作領域的態度更加貼近於抽象的 "作品物件" 系統。這一議題激起了熱烈的討論，但是更多的細節我們將會留到後續再行檢視。

至於其他爭議性較小的資源，將複數來源的資源進行關聯有許多好處。首先是不同來源的許多描述可以通過 "same as (相同)" 來將其統整進單一列表；而至於那些相異的描述則可以補充圖書館社群資源的不足。舉例來說："Person (人)" 在 MARC 21 格式的權威資料[^46]紀錄中採用了如同辭典形式的結構，通過標目與替代標目還有交叉來源進行描述。但是當人名權威檔案與 Wikidata 實體進行關聯時，其結果便是一個飽含了其標目與各類生平資料如性別、照片、國籍、家庭成員等的資料網。這些資料都可以通過 Passage Explorer 的探索介面進行發現。

## 使用者主導的三階段發展與嘗試
>Three Phases of User-Centered Development and Testing

Passage 專案的目標之一是要為前述 16 所機構的後設資料圖書館員們提供第一手的經驗；主要目標便是學習 Wikibase 的編輯環境，並通過圖書館員的 "資源-描述" 視角來審視其項目創建的工作流程，探索新的工作流程所能為圖書館編目者們帶來的潛在效益。OCLC 的工程師們也同圖書館員們一同在這場探索中提供協助，開發工具、修整環境，強化工作流程的同時並發現潛在的缺陷以供未來參考；同時也擔任導師的工作，協助提供教學並安排實作課程。整個專案主要分為三的階段。

### 第一階段：Wikibase 簡介與初始資料集的審核，並推管 SPARQL 查詢功能
>Phase 1: Introducing Wikibase, evaluating the initial dataset, promoting SPARQL queries

在第一階段中 OCLC 的成員向來自 University of California at Davis、Cornell University、以及 Montana State University 的參與者們介紹了 Passage 專案的原型環境；這些參與者們皆有圖書館編目、權威檔案工作、或鏈結資料的經驗。初始的資料集包含了 120 萬筆從 Wikidata 中擷取出來的項目資料；這些資料皆已經擁有豐富的圖書館領域識別碼，並且已經先行被進行過一輪的整理。這些先期準備工作確保，舉例來說，所有與英國小說家 Jane Austen 的資料都能在同一個 Wikibase 項目中所查找，並且所有來自各個圖書館社群的 URI 都可以在系統中被檢索。

OCLC 的工程師們說明本地佈署獨立執行個體可以為專案提供一個更為合適的沙盒環境，協助對鏈結資料工作流程進行實驗。在這個討論之後，階段一的工作皆為實務層面，所有人一同合作熟悉 Wikidata 的架構。OCLC 的成員設計各種活動並且安排作業來探索初始資料集。這些活動促使了許多討論，檢視新舊資源描述的異同。

在討論的早期便發現，Wikidata 的編輯介面造成了不少的困惑，因為當實體通過具名關連的操作後，並沒有展示所有被建立的知識。OCLC 團隊藉此機會展示 Passage SPARQL UI，通過直接與 Wikibase 的 SPARQL 檢索 API[^47]來達成比起單純關鍵字搜尋更為強大的功能。並且通過如此示範，協助那些不熟悉 SPARQL 的參與者們開始自己的探索。

四個在 Passage 專案中進行的範例搜索的結果如以下表一所示。通過搜索我們發現了 Jorge Luis Borges 以及 Marcel Proust 都是圖書館員，隨同還有其他較為冷門的知識。檢索的結果還可以被送至 Wikibase 的視覺化工具，例如從 Sein Und Zeit (存在與時間) 相關實體關聯所整合出的翻譯歷史時間表。

表一。SPARQL 檢索結果與可能的應用方式。

### 第二階段：建議功能實裝、約束測試、與 Explorer 推廣
>Phase 2: Implementing requested features, testing constraints, and promoting the Explorer

在此階段中，技術性改進包含了以下方面：

* 更加彈性的搜索功能：舉例而言：在 Wikibase 的編輯介面中一般會用關鍵字對 Wikidata 進行搜索如 "Douglass Adams" ；在Passage 的介面中我們允許通過識別碼來進行搜索如 Wikibase 所產生的實體 ID：Q42, Douglass Adams。
* Claims (聲稱) 與 Statements (聲明) 的強化：在 Wikibase 的編輯介面中可以通過添加來源資料將聲稱提升為聲明；有鑑於圖書館社群對權威性與可信度的高度重視，我們將這一部分更改為必要。
* 探索 Constraints (約束) 錯誤：了提升整體品質我們也對 wikibase 的約束器系統進行強化。SPARQL 以及 Wikbase 工具可以用來查找發生約束錯誤的項目描述。舉例來說 ”作者” 屬性如果被套用在非”人物”、“人名”、或 “組織” 的項目中將會被標示為錯誤。
* 強化批量輸入功能：為了強化本地檔案輸入至檔案庫的工作。OCLC 團隊建立了一個相容於 OpenRefine[^52] 的 API，來進行鏈結資料的統整工作。

OCLC 團隊進一步設計活動來協助探索，圖書館社群中難以通過現有的程序化工作流程來進行編碼的資源。舉例而言，OCLC 團隊成員展示了如何將出版書籍與他們的翻譯版本做關聯，以促使探索與檢索工作的進行。第一個探索便是建立在 Martin Heidegger 的 Sein Und Zeit (存在與時間)，出版於 1927 年德國的一本哲學著作，並在後續被翻譯為各式語言。這個使用情境促使了後續 Passage Explorer 的開發，協助使用者與後設資料創建者來探索沒有明確顯示在編輯介面的資訊。

> 這些功能讓編目者可以即時看到他們的工作成果如何影響所有使用者的探索體驗。因此所有的作者皆一致認 Explorer 在後設資料創作流程中是一個不可或缺的工具。

通過 Explorer 探索 Douglass Adams 的圖示如圖六；其中的資料是即時獲取自三個資料源：

1. 通過 SPARQL 對 RDF Triplestore 以及與其同步的關係資料庫進行檢索。圖六中所示之出版品列表是來自於對整個 Passage 資料集進行 SPARQL 檢索的結果。
1. 第三方來源如 Wikimedia Commons (維基共享資源)、或 DBPedia，分別擷取圖片以及生平資料。
1. Wikibase 關係資料庫，可以即時顯示來自編及介面所做出的更改。Explorere 的效果無法通過靜態的圖片展示，但是其動態的功能是在整個 Passage 專案中最重要的工具之一。這些功能讓編目者可以即時看到他們的工作成果如何影響所有使用者的探索體驗。因此所有的作者在下一段落的使用情境報告中皆一致認 Explorer 在後設資料創作流程中是一個不可或缺的工具。

圖六。通過 Passage Explorer 探索 Wikibase 實體 "Douglass Adams" 的資訊，大圖請見 這裡

### 第三階段：擴大參與、編寫文件、強化個別溝通、以及測試 Retriever
>Phase 3: Enlarging the set of participants, developing documentation, holding office hours, and testing the Retriever

在專案的最後階段，參與機構的數量從最初的 3 所提升至最終的 16 所；這一改變促使 OCLC 團隊必須標準化新人訓練的流程，使其可以快速進入狀況。成果之一便是對於屬性清單[^53]的依賴性大增，以及在 Wikidata 幫助傳送門裡的新文件，持續的更新教學、資訊、以及其他有關圖書館 "資源-描述" 工作的相關訊息；涉及如 "Guidance for Creating and Editing; the Data Model (資源模型：如何創建與編輯)"、"Using Identifiers in Creative Work Items (創作的識別碼)"、"Adding Labels, Descriptions, and Aliases in Multiple Languages (如何新增多語言標籤、描述、與別名)"、"Adding Dates in Passage (輸入新資料)"、"Creative Works and Translations (作品與翻譯)"、"Events (事件)"、"The Retriever"、以及 "OpenRefine Reconciliation API (OpenRefine 整合 API)"。

在第三階段中主要的活動為由 OCLC 團隊所主持的虛擬工作會議；在 2018 年六月期間每周舉行。每場活動皆由一個 "資源-描述" 工作做為主軸，通常由參與者來主導討論。技術層面的改進主要集中於如何提升這類工作的便利性、準確性、以及效率；涉及面向如：強化創建指紋標籤與描述的模板、新增 WorldCat 作為 Explorer 的探索來源之一、以及改善從 Wikidata 之中所導入的模型結構。

並且在第三階段期間，OCLC 團隊也開發了 Passage Retriever 網頁工具，設計來通過蒐集外部資源如：Wikidata、VIAF、FAST、和本地檔案來加速實體創建的工作。通過 Retriever 的功能，使用者可以快速地在上述資料庫中搜尋符合條件的資訊，大幅減輕使用者的工作量。Retriever 可以自動地將外部資源轉換為 Wikibase 模板並通過幾個標準化的流程進行梳理準備輸入進新的 Passage 項目之中。舉例來說：Retriever 可以比對內外資料庫識別碼來發現潛在的重複項目；協助使用者在將資料輸入之前進行指紋標籤、描述、別名的編輯，發現並刪除錯誤資訊、或是調整描述等級。Retriever 的工作流程見圖七。

圖七。Passage Retrieve 工作流程圖，搜尋 符合資源、擷取並編輯資料、創建新的實體，大圖請見連結。

## 強大的軟體基礎
>A Robust Software Foundation

總而言之，通過 Passage，我們顯示了 Wikibase 以及 MediaWiki 套件在蒐集、儲存、索引與取用鏈結資料的完備性；並且擁有成熟的編輯介面來供人類使用者進行編輯，同時也支援通過自動化的批量輸入來讀取舊有的資料格式。並且這套系統也具有非常人性化的使用介面，協助使用者只需要專注在資料的編輯而非枝微末節的鏈結資料技術。以上這些特色協助圖書館的資源描述工作流程進行創新，並且也使的鏈結資料創建的門檻大大減低，讓更多人可以一同參與。

因此，Passage 專案中的工程師們可以專注於 Wikibase "外部" 功能的開發，專注於圖書館社群獨特的需求。並且當這樣的需求出現時，Wikibase 的軟體環境也足夠彈性，非常適合進行應用的創新與原型開發，如同 OCLC 團隊在 Passage 專案中所做的 Explorer 和 Retriever。
