OWL入門

1. OWL是什麼?

    OWL全寫是:Web Ontologoy Language,翻譯過來是:網絡本體語言。是用來定義和實例化網絡本體的語言。(什麼是本體?我的這篇博客給了一個簡單的定義:【轉】一篇關於本體概念的綜述。更詳細的可以去w3c上找相關論文)
    光看定義肯定很抽象,來舉一個例子說明一下:
    “請告訴我,如果我想爲每道菜準備一種開胃酒,我都應該買哪些酒?順便說一下,我不喜歡法國蘇特恩白葡萄酒。” 這個問題請求,現在的互聯網是無法回答的,這樣就需要引入語義數據這個概念了。而爲了表示語義數據,就需要用到我們今天的主角——OWL。

    OWL包含三個語言,分別是:OWL LiteOWL DL 和 OWL Full,他們之間是遞進的關係,即OWL Lite最簡單、能力最弱,OWL DL較強,OWL Full最強、包含前面兩個的全部內容。
    OWL Lite OWL Lite是表達能力最弱的子語言。它是OWL DL的一個子集,但是通過降低OWL DL中的公理約束,保證了迅速高效的推理。它支持基數約束,但基數值只能爲0或l。因爲OWL Lite表達能力較弱,爲其開發支持工具要比其他兩個子語言容易一些。OWL Lite用於提供給那些僅需要一個分類層次和簡單約束的用戶。
    OWL DL(DL=Description Logic,描述邏輯)將可判定推理能力和較強表達能力作爲首要目標,而忽略了對RDFS的兼容性。OWL DL包括了OWL語言的所有語言成分,但使用時必須符合一定的約束,受到一定的限制。OWL DL提供了描述邏輯的推理功能,描述邏輯是OWL的形式化基礎。
    OWL Full 包含OWL的全部語言成分並取消了OWL DL中的限制,它將RDFS擴展爲一個完備的本體語言,支持那些不需要可計算性保證(no computational guarantees)但需要最強表達能力和完全自由的RDFS用戶。在OWL Full中,一個類可以看成是個體的集合,也可以看成是一個個體。由於OWL Full取消了基數限制中對可傳遞性質的約束,因此不能保證可判定推理

2. OWL的基本元素:類(Class)、個體(Individual) 和 屬性(Property)


2.1 類(Class)
    類(Class):一羣東西我們可以叫做一個類。其實OWL裏的類的概念基本上和OO語言裏的類的概念一樣。在OWL中規定,任何東西都是類owl:Thing的一個成員(實例)。因此,任何用戶定義的類都是owl:Thing類的子類。
    OWL中子類(Subclass)的概念也和OO語言裏子類概念一樣,也就是所有子類的實例都是父類的實例。例如,我們可以定義一個類:中國,定義類吉林省中國的子類,這樣如果一個實例是吉林省的實例,那它肯定是中國的實例。
    在OWL的本體映射中,提供了類的相等關係equivalentClass)。兩個類是相等的,就是說一個類是另一個類的換一種說法。例如:類:中國製造 和 類:出自中國的東西,如果定義了相等關係,就是說一個實例是“中國製造”的,那它就是“出自中國的東西”,只要說明它是一個的實例,則它同時具有兩個的屬性。

2.2
 個體(Individual)
    個體:OWL裏的任何東西都是個體。個體是用來描述類的成員的概念,一個個體就是類中的一個成員。
    這裏要注意區分一下個體與類的實例。其實這兩個概念幾乎一樣,唯一的區別是:我們說實例的時候都是說:某個類的實例,所以一般的,講實例時就帶有它的類,一個實例對應一個類;而說個體時,不帶有類,例如我們可以說:個體a是類C和類D的實例。
    由上面我們可以得出一個新的結論:一個個體可以同時是多個不相關的類的實例。例如,ThinkPad筆記本是類:筆記本電腦 的實例,也是類:中國製造 的實例。

    說到這,還有一對容易混淆的概念:子類(Subclass)和 實例(Instance)。區分的關鍵是要牢記一點,類是一堆東西的總稱,實例是這堆東西中的一個。

2.3 屬性(Property)
    RDF/OWL裏都是用二元關係來描述東西的,比如描述:比爾蓋茨是一個人,在RDF/OWL裏就是這樣描述的:比爾蓋茨 ——是——> 人。其中,比爾蓋茨 和 人 之間的那個關係“——是——>”就是RDF/OWL裏的屬性。
    屬性:就是一個二元關係。OWL裏包括兩種屬性:
    1. 類型屬性(datatype properties):描述類與其實例之間關係的屬性。
    2. 對象屬性(object properties):描述兩個不同類的實例之間關係的屬性。

    既然屬性是上面例子裏那樣的一個二元關係,那麼屬性就必須有且只有兩個端點,起點和終點都應該是兩個個體(實例)。我們用原集(domain)來描述起點的實例的類,用象集(range)來描述終點的實例的類。這是屬性中一個比較重要的概念。
    例如,有這樣一條OWL語句:比爾蓋茨 is-father-of "Jennifer Gates" ,並且我們的本體中定義得有:屬性:is-father-of 的domain是類:男人。這樣,就算我們沒有明顯的說“比爾蓋茨”是男的,但是通過上面這個屬性定義,OWL的推理機就能知道 比爾蓋茨 是 男人 的實例。

    屬性也類似類那樣,有子屬性(Subproperty)的概念。例如,類: 有一個屬性是:有說明書,說明書可能包括酒的顏色、酒精含量、生產日期等, 還有一個屬性是:有顏色標籤,這樣,其實顏色標籤就是一種簡單的說明書——只是裏面只說明了酒的顏色,所以,有顏色標籤 這個屬性就是 有說明書 屬性的子屬性。

3. OWL 更多內容——公理和約束

    除了上面這些基本的東西以外(上面的東西太太太太。。。基本了,實際上OWL的重點是有很多預定義(built-in)的公理和約束),OWL有很多的公理和約束,這些纔是真正使得OWL能夠表示語義數據的東西。想了解關於這些的東西,可以參見這些文章(和其中提到的相關論文):
    1. OWL Web Ontology Language Guide [en]
    2. OWL Web Ontology Language Reference [en]
    3. OWL Web Ontology Language Semantics and Abstract Syntax [en]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章