# Omeka S
Omeka 是一套貨真價實的數位典藏系統,由喬治梅森大學([George Mason University](https://www.gmu.edu/))的羅伊·羅森茨維格歷史與新媒體中心([Roy Rosenzweig Center for History and New Media](https://rrchnm.org/))於 2007 年所開發,旨在提供一個開源的平台用來發怖數位資料。此系統獲得美國許多資料典藏機構採用,如紐約公共圖書館、紐伯里圖書館、以及許多博物館、歷史學會等,是一套成熟穩定擴充能力強的典藏系統。
Omeka 一推出便獲得許多機關的採用,但它也有些問題,如架構上無法滿足大機關團體的使用、非原生的 semantic web 支援。很快地,開發團隊在 2012 年分支出了 Omeka S 的分支,Omeka S 底層就是以 Semantic Web 為基礎,因此原生就是用來支援 Linked Open Data,每個 Omeka S 的資源(Resource) 都有一個專屬的 URI,平台內的建的 RDF 語彙則是可用來描述這些資源的後設資料。由於整個後設資料的架構是基於 RDF(Resource Description Framework),因此語彙的擴充相當簡易。
Omeka S 相較於純粹進行圖片管理的 Piwigo 來說,它的核心是在「後設資料」,而非「媒體」本身。因此,Omeka S 更適合用來進行數位典藏。如果使用者目的是在「媒材」的分享,那麼 Omeka S 從架構上就不適合,但如果「後設資料」是重點,那麼 Omeka S 應該是目前最適合的系統。
下面,我們將從安裝、使用、與擴充來看 Omeka S 的能力,使用者可以依照自己的需求,來評斷是否適合採用此系統。我們不會對 Omeka S 進行詳細的解說,但我們會重點式地讓使用者了解這套系統的能力。希望使用者看完,對於是否該採用此系統來因應專案的需求可以有一個了解。
又因為研究需求,我們最後會就系統需要大量上傳媒材時,該如何因應,進行比較詳細的介紹。
# 安裝
從 Omeka 網站下載安裝包後,解開到 apache 的指定路徑,請確認 apache/mariadb/PHP 皆已經安裝設定完成。解開後請用喜愛的編輯器編輯 config/database.ini 檔案,把資料庫的資料填妥後。開啟瀏覽器到指定的 URL 就可以開始安裝:

填妥相關資料,就可以安裝完成,安裝完成後,系統會要你登入管理者帳號,然後就可以來到管理界面:

我們將在下個章節簡單介紹 Omeka S 的設定與使用。
# 使用
## 設定與擴充
Omeka 的後台設定相當簡潔,主要分成三大區塊「Site」(網站)、「Resource」(資源)和「Admin」(管理),本節將先從管理開始介紹。
### 使用者管理
管理區塊第一個部份就是使用者,點進去後可以看到如下的畫面

在 Omeka 使用者有五個角色Role,其權限各有不同
* Global Admin (全域管理者)
無限制的管理權限,第一個創造的使用者的權限便是被設定為此,且不能修改。
* Supervisor (一般管理者)
對 item, item set, media, resource template, site pages, sites, users 有完整的創建、編輯、刪除的權限,但無法對系統進行擴充(無法管理模組)。此角色也可以搜尋、讀取與創造語彙(Vocabularies),但無法進行刪除。
* Editor (編輯者)
對 item, item set, media, resource template, site pages 有完整的創建、編輯、刪除的權限,可以搜尋、讀取、創建 site 和 user,但只能刪除他們創造的使用者。對於語彙(Vocabularies)也只能搜尋與讀取。本角色無權管理模組。
* Reviewer (審查者)
可以讀取所有 item, item set 和 media,也可以創建新的。但只能刪除自己創建的 item, item set 和 media。此角色也可以被加到「網站」的 Creator 或是 Manager,若他們處於網站的這些角色,他們便可以新增讀取編輯刪除網站的頁面,反之,則只有唯獨的權限。審查者對語彙(Vocabularies)和資源範本(Resource Template)也只能搜尋與讀取。本角色無權管理模組。
* Author (作者)
對 item, item set 和 media 有搜尋、讀取與創建的權力,但只能編輯與刪除自己創建的資源。本角色也可以被加到「網站」的 Creator 或是 Manager,若他們處於網站的這些角色,他們便可以新增讀取編輯刪除網站的頁面,反之,則只有唯獨的權限。作者對語彙(Vocabularies)只有唯讀的能力。本角色無權管理模組。
* Researcher
對所有的內容只有唯讀的權限
再這個區塊我們可以編輯,新增,刪除使用者。這些操作都相當直覺,因此在此不多贅述。唯 Omeka 有一個幾乎可以應用在全站的界面操作,即批次操作。在使用者管理部份一樣有這個操作,在此特別介紹,後面的批次操作就不再贅述。要進行批次操作要先勾選要操作的項目(在這邊是使用者),選定對象後,表單的左上角有一個「Batch actions」下拉選單,裡面就是在這個功能項內可以進行的所有動作

選定後,按下 go 按鈕,就可以進行操作。
使用者管理還有一項特別的設定就是 API Key 的設定,這個 API Key 可以讓第三方的程式透過這個 API Key 來操作網站,如上傳檔案等等。產生的方式很簡單,首先進到使用者編輯界面,選擇 API Key 頁籤,然後填入此 API 的目的或是日期,這只是用來提醒此 API 的目的用而已,填寫完後,按下 SAVE 後,系統就會自動產生一組 API Key 。

### 系統設定
系統設定界面相當簡潔,請點下 Admin 下的 Settings 便會出現如下的頁面

設定相當直覺,這邊就不多做贅述,如果你要轉換語系時區等,都可以在此頁面進行設定。
### 模組管理
擴充 Omeka s 的模組可以在此[連結](https://omeka.org/s/modules/)找到,Omeka S 的模組必須要手動上傳到伺服器的 /modules 下。

上傳後,就可以在 /admin/module 網頁路徑下,看到可供安裝的模組

每個模組後面都有一個 install 按鈕,點下後就可以完成安裝。安裝完成後,原本的 install 按鈕會變成 uninstall 按鈕,如果模組需要進一步設定,則該模組也會出現一個 Configure 按鈕。所有的模組安裝完後都可以暫時停用,要停用只要按下 Deactivate 按鈕就可以。

### 排程工作 Jobs
這個模組區塊是用來顯示與管理後台批次處理程序的執行結果等細節用的。在此不多做著墨,後面介紹 CSV Import 模組時,再一併說明。
### 網站資產 Assets
這個模組區塊用來上傳建構網站時可以重複使用的一些圖片。在此不多做介紹。
## 網站與資源
Omeka 支援多網站,因此後台界面「網站」只是其中一個部份,「資源(Resource)」才是整個系統的核心,資源包含了 Item 和 Item Set。
我們可以這樣想像:「資源」是磚塊,「網站」則是用這些磚塊建構出來的房子。因此如何建構「資源」才是整套系統最重要的核心。我們也將先從資源本身開始介紹使用方式,最後才是網站的建置。
### 資源管理 Resources
Omeka 的資源分成兩種,一種是 Item,另一種是 Item Sets,從概念上來看,Item 是單一資源,而 Item Sets 則是資源集合。Item 並不就代表圖片等媒體素材,事實上媒材(Media)是附屬在 Item 底下的。每個 Item 都可以有多個 Media 依附其下。這是很合理的一種設計,一個資源Item,可能是由複合多種或多個媒材所形成,比方說一張照片的 Item 可能就包含了「照片」、「作者介紹」及「創作概念」等等的媒材。Item sets 則是一群 Item 的集合,這很容易理解,比方說「肖像」Item sets 就是由許多肖像 Item 組合而成。

### 創建 Item
從後台創建一個 Item 相當容易,只要按下右上角的 Add New Item 按鈕即可進到如下的畫面

這個創建表單有五個頁籤,分別介紹如下
* Values
首先要有一個概念,每一個 Item 在 Omeka 都有一個專屬的 URL,這個 URL 就是一個 Item,因此附屬於這個 Item 用來描述它的就是它的「值」Value,比方說假設這個 Item 是用來表示一個人,那麼這個人的描述會有「年紀」「性別」「專長」或是「職稱」等等。於是我們就可以把這些描述用三元關係表達
`<Item> <Property> <Item/Value>`
`某A 年紀 45`
`某A 性別 男`
`某A 專長 攝影`
`某A 職稱 攝影師`
`某A 配偶 某B`
「某A」就是我們正在編輯的 Item,中間表達關係或是性質的就是 Property,最後可以對應的是一個單純的「值」或是另一個 「Item」(如某B)。這種指稱方式就是 RDF(Resource Description Framework)用來表達一個資源的後設資料的表達方式,簡稱為 Triple 。整個 Omeka 的後設資料全部都是採用這種架構處理。
那麼,Property 究竟要怎麼寫才對,我們總是要有一些共通的詞彙,這樣大家在用 RDF 描述時,機器會更容易處理。這就是所謂的 Vocabularies(語彙集)的功用,Omeka 內建了三組一般常用的語彙集
1. Bibliographic Ontology
2. Dublin Core
3. Dublin Core Type
4. Friend of a Friend
點選Resources/Vocabularies就可以看到

點進去每個語彙的 Classes 和 Properties 就可以看到這些語彙的定義列表

本文不是用來講解 RDF 的文件,因此對 RDF 的介紹不會過於深入,有興趣可以自行去找文件了解。最後有一點需要理解的是,語彙是可以混用的,你可能可以用上述的所有語彙用來定義一個 Item。有了這些概念,我們就可以來實際新增一個 Item 了,當你一進到 Add New Item 這個表單時,你會發現,能填寫的 Property 只有三個:class, dcterms:title, dcterms:description,這肯定是不夠的。你應該也會發現,最上方有一個叫 Resource Template 下拉選單,下拉後只有一個 Basice Resource 的選項,選了之後,你會發現能填寫的 Property 大幅增加

這個 Basic Resource 是系統預設的 Resource Template,也就是系統預設已經定義了一份每個 Item 基本該填寫的 Property 有哪些,這個預設的 Resource Template 你可以在 Resources 下的 Resource Template 看到列表,每個 template 都可以被編修,你也可以依照自己的需要創造一個自己專用的 template

回到新增一個 Item,我們創建一個 Class 為 dc:Image 的 Item 來當作練習

填寫完畢,你可以不管其他的頁籤,直接按 Add ,系統會立刻幫你建立一個 Item

你也可以按下 Edit Item 按鈕,跳回原本的編輯頁面修改,或是跳到另一個頁籤:Media
* Media
在 Media 頁籤,你可以上傳一些與此 Item 相關的多媒體檔案。

此界面右側有一排如何上傳多媒體的功能列表,第一個 Upload 代表你可以從本地端電腦選擇一個檔案上傳。其他還有可以填多媒體的 URL 等等方式。在這邊我們只介紹第一種上傳法。選好一個檔案後按 Save 即可上傳完成。

你可以為此 Item 上傳無限多個媒體檔案。須注意的是這些多媒體檔案在 Omeka 也是透過 Triple 的方式和 Item 串連的。你可以透過 Omeka 的 API 來把剛剛創建的 Item 的 triple 列出來:/api/items/1

* Item Sets
Item Sets 頁籤可以讓你指定此 Item 應該要歸屬於那一個 Item Set. 關於 Item Set 我們在下一節會有介紹。

* Sites
Omeka 支援多網站架構,這個頁籤可以讓你設定此 Item 是否可被某個 Site 使用。

* Advanced
進階設定可以讓你設定縮圖與Item的擁有者

* 其他
如果安裝了一些額外的擴充模組,可能會有更多的頁籤供設定,如 Mapping.
### 創建 Item Sets
Item Sets 顧名思義就是 Item 的集合,這是 Omeka 用來聚合 Item 的抽象方式。如果你很熟悉 Twitter等社群網路的 Hash Tag ,你可以把 Item Sets 想像成是一種 Hash Tag。但 Item Sets 不僅僅是 Hash Tag,它也是一種 Resource,也就是說,它也可以被 RDF 描述。這是很合理的設計,一張照片有後設資料需要被描述,把一對照片聚合起來形成一本相簿時,這本相簿一樣可以有後設資料的描述。
在 Omeka 創建一個 Item Sets 也是相當容易:開啟 Resources 下的 Item Sets 頁面,按下 Add new item set 按鈕即可

整個界面和創建 Item 十分類似,概念也相同,只是少了一些不屬於 Item Sets 的設定。因此就不多做介紹,在這邊,我們創建了一個 318 的 Item Sets,以供後續演示。


### 網站 Sites
Omeka 支援多網站,意思是,所有的資源都可以集中管理,當需要拿某些資源出來展示時,我們隨時可以選定一些資源,用這些資源來創建一個網站。這種概念非常類似博物館的特展,所有的收藏品都是收藏在同一個博物館,當有需要某些主題的展覽時,就可以拿這些館藏出來舉辦一個特展。
在 Omeka 創建一個 Site 非常簡單,點選左側 Sites 就可以進入 Sites 管理界面,點選 Add new site 就可以創建一個 Site


Settings 頁籤可以對此 Site 進行設定

設定裡面有一個 Auto-assign new items 的設定,預設是有勾選,意思就是任何新增的 item 都可以被此 site 使用,一般來說,除非你只有一個 site, 否則建議關掉。其他設定就是一般網站的設定,新增完成後,你可以在左側發現一列用來建立網站的功能

我們將只展示 Page 的操作,其他相關的網頁建置功能不是本文件的主要目標,請參考 Omeka 的[使用手冊](https://omeka.org/s/docs/user-manual/sites/)以獲得更進一步的說明。
點選 Page 進入 Page 管理界面

預設已經有一個 Welcome 頁面,我們可以點選此頁面的編輯圖示,進到此頁面的編輯界面

左側有一列區塊列表

我們可以自由選擇要再一個頁面加入哪些 HTML 區塊,在此我們展示把之前新增的 Item 加到這個歡迎頁面,我們點選 Item with metadata 後,按下 add attachment 按鈕,卻發現沒有任何 item 可供新增。

原因是我們並沒有為此site新增任何 Resource ,我來來到 Resource 的 Item 管理,進入 Item 的編輯界面,點選 Sites 頁籤,然後把 item 設定到剛剛建立的「318展示」site 然後儲存。

再回到剛剛的編輯界面,我們就可以看到剛剛新增的 item 已經出現,可供新增。

於是我們在前台就可以看到剛剛新增的 item

利用這些 building block ,我們可以隨時利用這些上傳的 Item 建立一個特展,這也是 Omeka S 最重要的功能之一。網站功能介紹到此為止。
# 大量上傳模組與套件
Omeka S 預設並沒有設計批次上傳的功能,但目前有一個可以用來滿足批次大量上傳的模組可供使用:[File Sideload](https://omeka.org/s/docs/user-manual/modules/filesideload/),File sideload 提供了 Omeka S 可以利用 FTP 一次上傳大量媒材到伺服器端然後匯入系統的能力。唯 File Sideload 僅支援了媒材檔案的批次上傳,後設資料就沒有辦法處理。幸好,有另一個模組稱為 [CSV Import](https://omeka.org/s/docs/user-manual/modules/csvimport/)提供了後設資料批次上傳的功能,CSV Import 也能搭配 File Sideload 讓大量上傳有辦法搭配後設資料。本章節主要將就 File Sideload 和 CSV Import 進行介紹,最後也將介紹一套可在桌面環境運行的程式 [Tropy](https://tropy.org/),並展示使用它來幫助使用者在離線狀態整理資料,並上傳 Omeka S的流程。
## File Sideload
安裝完 File Sideload 模組後,可以進入他的設定,設定很單純,只有上傳目錄與是否在完成上傳後刪除檔案的選項而已

我們在系統安裝目錄下新增了一個目錄稱為 upload 作為演示用途,並勾選了上傳後就刪除的選項。須注意的是,這個上傳目錄必須設定為網頁伺服器能夠讀寫的權限。設定完成後,我們就可以透過 FTP 一個批次把所有想上傳的媒材上傳到 upload 目錄下。因為檔案是透過「檔名」區別的,因此在匯入時,檔名會是重要的資訊,建議使用容易辨識的檔案名稱。
檔案上傳完畢後,我們可以新增一個 Item,基本設定後,來到 Media 頁籤,我們可以發現右側多了一個 Sideload 按鈕,選了後便會出現如下的表單,File 下拉選單拉下後,便會列出剛剛上傳到 upload 目錄下的檔名。

選定一個檔案並按下儲存後,這個檔案便會被匯入 Omeka 系統內,並被設定與剛剛新建的 Item 連結。

由於我們先前的設定,剛剛匯入的檔案會被從 upload 目錄下移除。
## CSV Import
安裝完 CSV Import 後,我們可以在右側選單最下方看到 CSV Import 的功能項,點入後就是一個上傳 CSV 的界面,我們知道 CSV 是一種表格化的資料,在 CSV Import 模組的定義下,CSV 的表頭列是 Property,你要匯入的 Item 有幾個 Property 這個 CSV 就會有幾欄。CSV Import 最強大的一點是 auto mapping,也就是它能比對你的表頭名稱,找出目前語彙內最接近的 property 來進行匯入,當然除了auto mapping 外,你也能夠手動設定對應的語彙為何。
我們可以用下面的 CSV 來進行演示

將此 CSV 透過 CSV Import 界面匯入,按下 Next 按鈕後,我們可以看到如下的畫面

我們定義的 CSV 有 dcterms:title 和 dcterms:creator 兩個欄位,這兩個欄位名稱都是系統內的語彙,因此 CSV Import 會自動把他們正確的 Mapping 抓進來,如果你覺得這個欄位可以再對應到其他的 property,你也可以按下該欄位的加號按鈕,便可以將其對應到其他欄位。
處理完對應後,匯入界面有一個稱為 Basic Settings,我們可以在此對要匯入的資源進行一些基本的設定,這部份跟新增 Item 類似,就不多做說明。

最後,我們可以來到 Advanced Settings 的頁籤,這邊可以進行一些進階的設定,比方說指定匯入的操作是要進行資源的新增還是修改以及一次要匯入幾筆資料,我們在此先採用預設,也就是每一列CSV都是一筆新的 Resource。

設定完成後,只要按下 Import 按鈕,系統便會新增兩筆新的 Item

剛剛我們有提到,我們在 Advanced Setting 設定上傳的列是用來修改已經上傳的資料,那麼,該如何指定要修改的 Resource 呢?答案是 Internal Resource ID,每個上傳到 Omeka 的 Resource 都有一個系統內部的 ID,以我們剛剛用 Sideupload 上傳圖片的 Item 而言,它的 ID 是 5

接下來我們將演示透過 CSV Import 來修改其後設資料。準備 CSV 如下

我們可以發現有一個稱為 id 的欄位,這是待會要用來對應到 Internal ID 的欄位,

對應完後,我們可以看到如下的畫面

接著我們來到 Advanced Settings,Action 選擇 Update data of the resource,選了後表單便會要你選擇用來對應原先資料的欄位,這邊我們選擇是 id,其 Property 則選擇 Internal ID,選完後按下 Import 便可完成修改。

但是,上面兩種方式,和我們想像中的批次大量上傳有一定的出入。我們期待的是能夠一次上傳所有的媒材,並把這些媒材相對應的後設資料也一併匯入。Sideload 搭配 CSV Import 剛好可以實現這樣的願景。首先,我們準備好 CSV 檔案如下:

這個CSV有一個欄位稱為 filename,這個欄位列示了目前放在 /upload 目錄下的所有檔案的名稱。我們把這個 CSV 透過 CSV Import 匯入後,便可以為 filename 欄位進行手動 mapping

可以看到最右側的 Mapping 有一個 Media Source 的下拉選單,這時選擇 Sideload 即可。選定後,做完其他基本的設定,按下 Import,我們就可以看到所有的檔案都已經匯入 Omeka 。

## Tropy
CSV Import 搭配 sideload 的大量上傳方式僅適用於能夠有辦法 FTP 上傳檔案到伺服器端權限的人,如果沒有權限,這套流程就無法成立。這時透過一套稱為 Tropy 的桌面應用程式可以彌補這部份的遺憾。下載並安裝完 [tropy](https://tropy.org/)後,我們尚須安裝一套 plugin 方能透過 Tropy 上傳資料到 Omeka, 安裝請參考[此文](https://docs.tropy.org/other-features/omeka)。
進到 Tropy 後,你可以很直覺新增一個專案,並把要上傳的圖片用拖拉的方式匯入 Tropy

我們可以看到最右側有一個 Metadata 的功能區塊,我們可以從這邊選定這些圖片後設資料的語彙為何,這邊的語彙和 Omeka 一樣都是使用 RDF 的語彙,我們可以一個一個圖片設定這些後設資料,也可以全部選擇(
Ctrl+a)後,一次設定。

設定完後,我們只要到 File/Export/ 選擇要上傳的 Omeka 主機,即可將所有的圖片一次上傳到 Omeka,當然後設資料也會一併上傳。


# 結論
Omeka 對於單純要分享照片的應用來說並不適合,他更適用的場景是那種以後設資料為主體的應用如:數位典藏。Omeka S 對於圖片內的 Exif 支援更是不足,如果你的後設資料都是透過 Exif 等內嵌式格式儲存的話,Omeka S 無法處理這些資料。Omeka 也無法將所有的媒材包含後設資料一併匯出,因此,也不適合想用它來分享大量影像資料的應用。簡而言之,Omeka S 的主體是後設資料,而非媒材。如果媒材才是應用的主體的話,Piwigo 加上適當的擴充,會更為適合。
# 相關連結
1. [使用手冊](https://omeka.org/s/docs/user-manual/)
2. [操作影片](https://www.youtube.com/watch?v=jiPjd_dxDIM)