2009年6月27日 星期六

[Ontology] Ontology and OWL

有人可能問我,怎麼會突然想要寫點不一樣的東西勒?畢竟我以前都沒有紀錄過關於 Ontology相關的文章,我怎麼會想要轉寫 Ontology 呢?其實,昨天剛領到碩士畢業證書,回想起在碩士生涯的兩年裡,我主要學的就是 Ontology,想想我怎能不紀錄起來呢?這樣好像有違交了我兩年的指導教授,所以在這裡我決定紀錄起來!

-----以上都是廢話 以下才是正文-----

Ontology 是什麼?是一種概念,試圖將人類腦中與生活中的知識加以描述成電腦可以瞭解的東西,而這些知識都是相關於某個領域 (domain),並且定義出該 domain 中的概念 (concept) 與這些 concepts 之間的關聯 (relationship) 形成一個 domain ontology。所以,ontology 是一種知識的表示方式,在 AI 領域中試圖將這些知識,透過嚴謹的定義,讓電腦可以具有人類腦中的知識,提昇電腦的判斷能力。

目前針對 ontology 的描述方法不只一種,不過現在最普遍也最標準的方法是採用 Web Ontology Language (OWL),別問我為甚麼不是 WOL 而是 OWL。在我的碩士論文中,提出一套監控系統,採用 OWL 建立受監控的環境,讓電腦瞭解目前環境中的知識,在配合 Semantic Web Rule Language (SWRL) 進行語意式推論,提供更有效也更精準的危險偵測。

雖然 OWL 是以 XML 的形式儲存,而 XML 強調是一種人類與電腦都方便閱讀的格式,但如果其中包含了複雜的 tags,對於人類的閱讀也不是很方便!目前有一套圖形化工具 Protege,提供方便使用者修改 OWL,並且很容易的 maintain。透過這類型工具的協助下,我們可以很容易的撰寫出 OWL!

OWL 使知識具有語意,是來自於其本身提供的 restriction,使用 OWL 中定義的 restriction,使得我們撰寫出的 ontology 能具有嚴謹的關係,例如:inverseOf、disjoinWith 等,電腦可以透過 restriction 推導出語意關係。舉例來說:人在房間,房間屬於房子的一部分,房子與家等價,所以人在家中。這類型的推導來自於 description language (DL) 的定義,但是這樣的推導關係僅限於在現有的知識中,對於產生新的知識卻是沒有辦法的!所以又衍生出新的推論語言 SWRL,提供 first-order logic (FOL) 也就是一階邏輯,補足 OWL 中無法自行產生新知識的不足,SWRL 針對 OWL 提供比前身 RuleML 更好的結合性,讓 rule 與 knowledge 容易的結合,使得 maintain OWL+SWRL 可以更容易達成。

SWRL 其實也是一種 XML-based 的表示方法,也因為要直接撰寫出 XML 實為不易,Protege 也提供了 SWTLTab plug-in 協助使用者開發,使用者在 Protege 撰寫 SWRL 是以 FOL 形式撰寫,例如:father(x,y) ^ brother(x,z) -> uncle(z,y) 表示 x 是 y 的 father,x 與 z 是 brother,所以推論出 z 是 y 的 uncle。

在這裡我只想要淺淺的帶過 ontology 的概念,以後有機會在深入探討,不過還是提供一些有用的 reference:

Ontology Development 101: A Guide to Creating Your First Ontology
這篇論文主要描述如何設計與開發 ontology,對於初學者很有幫助,文章中並以簡單的範例來帶領我們開發一個 domain ontology。

2 則留言:

Toby 提到...

例如:father(x,y) ^ brother(x,z) -> uncle(z,y) 表示 x 是 y 的 father,x 與 z 是 brother,所以推論出 z 是 x 的 uncle。

雖然看不懂這門學問,但是覺得這裡是不是筆誤了啊!

z是x的uncle?
還是z是Y的uncle.

Toby

Silver Su 提到...

感謝您的提醒,那的確是我的筆誤!目前已經修正了!請多多指教~謝謝!