首頁‎ > ‎電子期刊‎ > ‎Semantic MediaWiki‎ > ‎

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要新增頁面可以有以下兩種方式:

  1. 在搜尋欄打入頁面名稱,然後按「Go」,若此頁面不存在,則會出現「Create this page」的連結,可點入新增內容後存檔。
  2. 運用連結的方式來建立頁面,在任意的頁面鍵入要產生的頁面連結,例如[[王小明]],若此頁面不存在則可點入新增內容後存檔。

建立每個連絡人都對應到獨立的頁面,若是擔心頁面名稱與組織其他資訊重覆,或是希望在每位連絡人前加上前置詞以區別;可以用兩種方式。

  1. 運用子頁面(Subpage)的方式,假設要在頁面王小明前面加上連絡人,也就是王小明是連絡人的子頁面,語法是[[連絡人/王小明]],運用斜線來區分出父頁面與子頁面。
  2. 運用命名空間(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在使用上的幾點備忘:

  1. 每篇文章(條目)可以有多個分類。
  2. 分類(Category)本身也是一篇文章,可以描述此分類的意義或相關內容。
  3. 每個分類也可以再屬於多個分類,所以分類的系統是屬於網狀的。
  4. 分類間的循環分類是允許的,例如[[Category:網站]]被分類為[[Category:Web]],而[[Category:Web]]又被分類為[[Category:網站]]。
  5. 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的理念易於落實,故分享給讀者瞭解。

Comments