期刊/Semantic MediaWiki簡介(下)
出自台灣中等學校資訊管理人學會
- 作者:張騉翔
目錄 |
[編輯] 用Semantic Wiki來整理通訊錄
通訊錄是每個人及組織都必需要整理的資訊,底下分析用Wiki、Semantic、Excel及Outlook整理通訊錄的優缺點,並接著以實際範例來說明用Semantic Wiki來整理通訊錄的方式。
| 項目 | 共享編輯 | 自訂屬性及關連 | 分類功能 | 自訂格式 | 整合性 | 軟體成本 |
|---|---|---|---|---|---|---|
| Wiki | 多人共享編輯 | 無 | 用Category語法進行分類 | 簡單方便 | 目前MediaWiki僅提供讀取API | 開放源始碼 |
| Semantic Wiki | 多人共享編輯 | 有 | 用Category語法進行分類 | 簡單方便 | 除了MediaWiki讀取之API外,亦能匯出成RDF格式 | 開放源始碼 |
| Excel | 無 | 容易新增Attribute,但無特別之Relation作法 | 需自行運用Excel的功能來達成 | 功能強大 | Excel匯出及API功能 | 軟體成本 |
| Outlook | 無 | 不易新增屬性,也無特別之Relation作法 | 內建分類功能,不易擴充 | 不易設計 | Outlook匯出及API功能 | Outlook及Exchange Server軟體成本 |
[編輯] 新增連絡人
我們把每個連絡人看成個別的實體(Individual),在Wiki當中也就是對應到一個頁面;在Wiki要新增頁面可以有以下兩種方式:
- 在搜尋欄打入頁面名稱,然後按「Go」,若此頁面不存在,則會出現「Create this page」的連結,可點入新增內容後存檔。
- 運用連結的方式來建立頁面,在任意的頁面鍵入要產生的頁面連結,例如[[王小明]],若此頁面不存在則可點入新增內容後存檔。
建立每個連絡人都對應到獨立的頁面,若是擔心頁面名稱與組織其他資訊重覆,或是希望在每位連絡人前加上前置詞以區別;可以用兩種方式。
- 運用子頁面(Subpage)的方式,假設要在頁面王小明前面加上連絡人,也就是王小明是連絡人的子頁面,語法是[[連絡人/王小明]],運用斜線來區分出父頁面與子頁面。
- 運用命名空間(Namespace)的方式,命名空間顧名思義,主要避免一個名詞有兩種以上的意義而加以區分,舉例而言業務部門及人事部門可能都會用到[[會議紀錄]]這個頁面而會有命名衝突的情況發生,那麼就可以區分為業務部及人事部的命名空間,讓他們都擁有各自的會議紀錄頁面,實際語法為[[業務部:會議紀錄]]及[[人事部:會議紀錄]],本例為[[連絡人:王小明]],在在命名空間及頁面名稱間加上冒號。
子頁面與命名空間的用法並不衝突,我們可以這樣用[[連絡人:人事部/王小明]];要啟用子頁面的功能,需要網站管理員在MediaWiki軟體的LocalSettings.php設定檔中正確的啟用各個命名空間的子頁面功能。
$wgNamespacesWithSubpages = array(
NS_TALK => true,
NS_USER => true,
NS_USER_TALK => true,
NS_PROJECT_TALK => true,
NS_IMAGE_TALK => true,
NS_MEDIAWIKI_TALK => true,
NS_TEMPLATE_TALK => true,
NS_HELP_TALK => true,
NS_CATEGORY_TALK => true,
NS_MAIN => true
);
要新增新的命名空間,也是同樣在LocalSettings.php檔案中新增。
$wgExtraNamespaces[100]="連絡人";
[編輯] 新增連絡人屬性
建立好每個連絡人的頁面後,接下來我們來為每個連絡人新增屬性(Attribute),基本的就有手機、電子郵件、地址…等;增加屬性的語法為[[手機:=0922888666]],符號(:=)前面為屬性名稱,後面為屬性值。底下以表格方式說明屬性的用法。
[[屬性名稱:=屬性值|顯示名稱]]
| 語法 | 結果 | 說明 |
|---|---|---|
| 手機號碼[[手機:=00911222333]] | 手機號碼手機:=00911222333 | 屬性基本用法,會顯示屬性值。 |
| 手機號碼[[手機:=00911222456|測試]] | 手機號碼測試 | 在屬性值後面加入分隔線(|)及後面的文字,在顯示時會顯示後面的文字,與Wiki內部連結用法([[連結|連結顯示名稱]])一致。 |
| 手機號碼[[:手機:=00911222456|測試]] | 手機號碼手機:=00911222456 | 將手機:=00911222456看成是一個頁面連結,而不希望Semantic Wiki解析成屬性,那麼就在屬性名稱前加上冒號。 |
| 電子郵件
[[電子郵件:=wang@wangme.com|[mailto:wang@wangme.com mailto:wang@wangme.com]]] | 電子郵件[mailto:wang@wangme.com mailto:wang@wangme.com] | 將屬性值顯示名稱,用Wiki外部連結方式來表達,此例中讓使用者可以點選email連結來寄信。 |
在新增好屬性值後,頁面最下方會出現屬性名稱及屬性值;Semantic MediaWiki的設計中屬性名稱也是一個頁面,並且頁面的內容中要標識屬於哪個型態,例如字串或數字,這樣屬性值才會正確顯示出來。
我們點入手機連結的頁面,會進入到Attribute:手機的頁面,這是Semantic MediaWiki幫我們自動產生的連結,以Wiki完整語法來看是:
[[Attribute:手機|手機]] [[Attribute:電子郵件|電子郵件]]
我們在Attribute:手機中寫入這個屬性的型態為字串,其語法如下:
[[has type::Type:String]]
然後再回到連絡人的頁面編輯後存檔即可看到屬性值正確顯示出來;這個動作只需做一次,標識出屬性的型態,往後在其他的面頁再使用手機的型態時,直接存檔即會立即顯示出屬性值。
Semantic MediaWiki預設支援的屬性可以在頁面Special:Types中看到,這部份會在後面的小節中再詳細說明。
假如遇到一個屬性有兩個屬性值,例如一個人有兩支手機,那需要再設計另外一個屬性嗎?例如手機一、手機二。這部份Semantic MediaWiki的作法是一個屬性可以有很多的屬性值,例如在同一頁面鍵入兩個手機號碼,語法如下:
[[手機:=00911222333]] [[手機:=00911222456]]
呈現結果為:
[編輯] 新增連絡人間關係
Wiki在內部連結的用法為[[頁面名稱]],用雙中括號的語法;Semantic Wiki擴充了內部連結的用法,希望能頁面間的連結加入有意義的描述。例如王爸爸有個頁面,王小明也有個頁面;我們要表達兩個頁面的關係,標識出王爸爸與王小明的父子關係,以目前我們瞭解的作法有兩種。
第一種採用Wiki內部連結的語法,在王爸爸的頁面中有個連結指到王小明的頁面:
[[王小明|王爸爸的兒子]]
另外一種方式是採用分類的作法,將王爸爸與王小明的頁面同分類到某個Category:
[[Category:父子關係]]
然而上述兩種作法,都很難實際的描述出王爸爸與王小明的關係,第一種作法只是在連結的顯示名稱上註明,第二種作法只是將兩者在歸於同一類,也無法明確的表達父子關係。
Semantic Wiki表達關係的語法為:
[[關係名稱::關係頁面|顯示名稱]]
根據上面的語法,我們可以改寫王爸爸與王小明的頁面關係,在王爸爸的頁面中加以下的語法:
[[父子關係::王小明|王爸爸的兒子]]
關係(Relation)語法最後的結果與內部連結(Internal link)語法是一樣的,但是多了父子關係::這樣的描述,可以看做將連結進行有意義的分類或是標籤。底下以表格的方式再清楚說明用法:
| 語法 | 結果 | 說明 |
|---|---|---|
| 我的孩子[[父子關係::王小明]] | 我的孩子父子關係::王小明 | 關係基本用法,顯示王小明的連結。 |
| 我的孩子[[父子關係::王小明|小明]] | 我的孩子小明 | 在關係頁面後面加入分隔線(|)及後面的文字,在顯示時會顯示後面的文字,與Wiki內部連結用法([[連結|連結顯示名稱]])一致。 |
| 我的孩子[[:父子關係::王小明|小明]] | 我的孩子父子關係::王小明 | 將父子關係::王小明看成是一個頁面連結,而不希望Semantic Wiki解析成關係,那麼就在關係名稱前加上冒號。 |
要注意的是關係本身也是一個頁面,當我們產生[[父子關係::王小明]]連結時,Semantic MediaWiki會幫我們產生以下的頁面,以方便加入關係的描述供未來重複使用:
[[Relation:父子關係]]
[編輯] 新增連絡人所屬類別
在Ontology中的Classes意義為特定領域的觀念或是分類,在Semantic MediaWiki中的方式是採用現有Wiki的Category語法來實作,其語法如下:
[[Category:分類名稱]]
若不是要進行分類,而是要產生分類的連結,多加個冒號即可:
[[:Category:分類名稱]]
Category在使用上的幾點備忘:
- 每篇文章(條目)可以有多個分類。
- 分類(Category)本身也是一篇文章,可以描述此分類的意義或相關內容。
- 每個分類也可以再屬於多個分類,所以分類的系統是屬於網狀的。
- 分類間的循環分類是允許的,例如[[Category:網站]]被分類為[[Category:Web]],而[[Category:Web]]又被分類為[[Category:網站]]。
- MediaWiki軟體可以設定讓文章出現的Category名稱用樹狀的方式,針對每個Category可以列出上層的Category以方便瀏覽,在LocalSettings.php檔案中新增參數
$wgUseCategoryBrowser=true;
呈現的方式為:
[編輯] 結語
在本文中我們討論了Semantic MediaWiki這個新發展的MediaWiki外掛;使得MediaWiki軟體具有支援Semantic Web的功能;Semantic MediaWiki目前為0.7版,目前還屬非常新的軟體,在每次更新時都有大變動,並且在國外也是只有少數網站使用,然而Semantic MediaWiki結合Semantic Web與Wiki,使得Semantic Web的理念易於落實,故分享給讀者瞭解。
