20.01.2015 Views

Protege Tutorial

Protege Tutorial

Protege Tutorial

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Protege</strong> <strong>Tutorial</strong><br />

Based on <strong>Protege</strong>OWL<strong>Tutorial</strong> at<br />

protege website


<strong>Protege</strong> คืออะไร<br />

<strong>Protege</strong> เป็ นซอฟแวร์ฟรี ซึ งเป็ นแพลตฟอร์มทีเป็ นการสร้างแบบจําลองและ<br />

การประยุกต์ใช้โดเมนความรู้ร่วมกับontologies<br />

Ontologies จะเป็ นการแบ่งประเภทตามอนุกรมวิธานหรือแบ่งตามรายการ<br />

ต่างๆทีมีอยู ่ในฐานข้อมูลตามทฤษฎีของ axiomatized อย่างถูกต้องสมบูรณ์<br />

Ontologies เป็ นศูนย์กลางของโปรแกรมประยุกต์ต่างๆจํานวนมาก เช่น<br />

ฐานความรู้ทางวิทยาศาสตร์แบบพอร์ทัล, การจัดการข้อมูลและระบบการบูร<br />

ณาการหรือพาณิชย์อิเล็กทรอนิคหรือพวก Web service ต่างๆ


การติดตั ง <strong>Protege</strong><br />

ไปที http://protege.stanford.edu/doc/owl/getting-started.html เพือทําการ<br />

ดาวน์โหลด protege (version 3.x)<br />

<strong>Protege</strong> OWL editor ถูกสร้างขึ นจากการติดตั งของโปรแกรม <strong>Protege</strong> ใน<br />

ระหว่างการติดตั ง ให้เลือก ตัวเลือก “Basic+OWL”<br />

รายละเอียดเพิ มเติม :<br />

http://protege.stanford.edu/doc/owl/getting-started.html


<strong>Protege</strong><br />

<br />

<br />

การสร้างแบบจําลอง Protégé มีสองทางหลัก ดังนี :<br />

Frame-based<br />

OWL<br />

แต่ละส่วนจะมีผู้ใช้งานของตัวเอง<br />

<strong>Protege</strong> Frames editor: ช่วยให้ผู้ใช้สามารถสร้างหรือแต่งเติม ontologies ทีมีตามกรอบและให้สอดคล้อง<br />

กับ OKBC (Open Knowledge Base Connectivity Protocol).<br />

Classes<br />

Slots for properties and relationships<br />

Instances for class<br />

<strong>Protege</strong> OWL editor: ช่วยให้ผู้ใช้สามารถสร้าง ontology ทีใช้สําหรับเว็บทีเกียวกับความหมายของคํา ได้<br />

โดยเฉพาะอย่างยิ งของ OWL<br />

Classes<br />

Properties<br />

Instances<br />

reasoning


การสร้าง OWL Ontology<br />

E2: สร้าง OWL project ขึ นมาใหม่<br />

เปิ ดโปรแกรม Pretege ขึ นมา<br />

ไปที File –> New Project –> OWL/RDF files –> Ontology URI<br />

(http://www.pizza.com/ontologies/pizza.owl)<br />

Protégé อันใหม่ทีว่างเปล่าก็ถูกสร้างขึ น<br />

ทําการบันทึกเป็ น .owl เช่น pizza.owl


ชือของคลาสต่างๆ<br />

ไปทีแถบ OWL Classes<br />

คลาสของต้นไม้ทีว่างจะมีคลาสหนึ งเรียกว่า OWL<br />

E3: สร้างคลาสย่อยต่างๆ เช่น Pizza, PizzaTopping และPizzaBase คลาส<br />

ย่อยเหล่านี คือ owl:Thing<br />

การตั งชือ<br />

ต้องไม่มีอักขระพิเศษ<br />

ต้องมีความสอดคล้อง


คลาส Disjoint<br />

E4: วิธีการดูว่า คลาส Pizza, คลาส PizzaTopping และ คลาส PizzaBase เป็ น<br />

disjoint<br />

1. เลือกทีคลาส Pizza<br />

2. เลือกทีปุ ่ ม “add siblings”<br />

บนแถบของ Disjoints<br />

3. เพิม PizzaBase และ PizzaTopping<br />

4. เลือก PizzaTopping<br />

5. เพิม Pizza และPizzaBase<br />

ไปที Disjoints


E5: สร้างกลุ ่มของคลาส<br />

สร้าง ThinAndCrisyBase และDeepPanBase ในคลาสของ PizzaBase ซึ งแต่<br />

ละอันจะเป็ น disjointed<br />

เลือก PizzaBase แล้วคลิกขวาเลือก “create subclasses”<br />

หลังจากนั นก็สร้างอีก 2 คลาสทีเหลือ<br />

ซึ งมันจะช่วยในการประหยัดเวลามาก เมือมีการสร้างคลาสเป็ นจํานวนมาก


E6: สร้างคลาสย่อยในส่วนของ PizzaTopping<br />

เลือก PizzaTopping :<br />

สร้างคลาสย่อยชือว่า MeatTopping, VegetableTopping, CheeseTopping<br />

และSeafoodTopping<br />

เลือกทีคลาส MeatTopping :<br />

เพิมคลาสย่อย disjoint : SpicyBeefTopping, PepperoniTopping,<br />

SalamiTopping และHamTopping<br />

เลือกทีคลาส VegetableTopping :<br />

เพิมคลาสย่อย disjoint : TomatoTopping, OliveTopping,<br />

MushroomTopping, PepperTopping, OnionTopping และ CaperTopping


E6: สร้างคลาสย่อย Disjoint<br />

เลือกทีคลาส PepperTopping<br />

เพิมคลาสย่อย disjoint : RedPepperTopping, GreenPepperTopping,<br />

JalapenoPepperTopping<br />

เลือกทีคลาส CheeseTopping<br />

เพิมคลาสย่อย disjoint : MozzarellaTopping, ParmezanTopping<br />

เลือกทีคลาส SeafoodTopping<br />

เพิมคลาสย่อย disjoint : TunaTopping, AnchovyTopping และ<br />

PrawnTopping


คุณสมบัติของ OWL<br />

คุณสมบัติของ OWL แสดงความสัมพันธ์ระหว่างสองวัตถุ<br />

มีสองคุณสมบัติหลักคือ :<br />

วัตถุเชือมโยงไปยังวัตถุ<br />

วัตถุเชือมโยงไปยัง XML Schema ประเภทข้อมูลหรือ RDF เป็ น<br />

แบบ อักษร<br />

คุณสมับติอืนๆ : การบันทึกใช้เพือเพิมข้อมูลคําอธิบายของคลาสต่างๆ,บุคคล<br />

ต่างๆ และคุณสมบัติต่างๆ


E7: การสร้างคุณสมบัติของวัตถุ<br />

เปลียนไปทีแถบ “Properties”<br />

คลิกทีปุ ่ ม “Create Object Property” เพือใช้สร้างคุณสมบัติของวัตถุใหม่<br />

เปลียนชือเป็ น hasIngredient


E8: การสร้างคุณสมบัติย่อย<br />

เลือก hasIngredient<br />

เพิม hasTopping และ hasBase เป็ นคุณสมบัติย่อย


คุณสมบัติของการผกผัน<br />

คุณสมบัติของแต่ละวัตถุทีมีความสอดคล้องกันอาจมีคุณสมบัติผกผันกันก็ได้<br />

เช่น การเชือมวัตถุ A ไปยังวัตถุ B ดังนั นทิศทางตรงข้ามกันคือ วัตถุ B ไปยัง<br />

วัตถุ A


E9: การสร้างคุณสมบัติการผกผัน<br />

การสร้างคุณสมบัติจองวัตถุใหม่ เรียกว่า isIngredientOf<br />

คลิกทีปุ ่ ม “Set inverse property”<br />

เลือก “hasIngredient”<br />

แล้วความสัมพันธ์ของการผกผันก็จะได้รับการตั งค่า<br />

เลือก hasBase<br />

สร้าง isBaseOf ให้เป็ นคุณสมับติการผกผันของ hasBase<br />

เลือก hasTopping<br />

สร้าง ToppingOf ให้เป็ นคุณสมับติการผกผันของ hasTopping


คุณสมบัติของฟังก์ชัน<br />

ถ้าคุณสมบัติของฟังก์ชัน, สําหรับบุคคลทีกําหนด การเกียวของกันของแต่ละ<br />

บุคคลต้องผ่านคุณสมบัติทีกําหนด<br />

สําหรับการกําหนดโดเมน ช่วงทีกําหนดต้องไม่ซํ ากัน<br />

คุณสมบัติของฟังก์ชันจะต้องมีเพียงค่าเดียว


คุณสมบัติของฟังก์ชันผกผัน<br />

ถ้าคุณสมบัติคือฟังก์ชันทีผกผันแล้วคุณสมบัติของการผกผันคือฟังก์ชัน<br />

สําหรับการกําหนดช่วง โดเมนจะต้องไม่ซํ ากัน


คุณสมบัติของฟังก์ชัน กับ ฟังก์ชันผกผัน<br />

คุณสมบัติของฟังก์ชัน กับ ฟังก์ชันผกผัน<br />

domain range example<br />

Functional<br />

Property<br />

For a given<br />

domain<br />

Range is<br />

unique<br />

hasFather: A hasFather<br />

B, A hasFather C B=C<br />

InverseFunctional<br />

Property<br />

Domain is<br />

unique<br />

For a given<br />

range<br />

hasID: A hasID B, C<br />

hasID B A=C


คุณสมบัติการถ่ายทอด<br />

ถ้า a มีความสัมพันธ์กับ b และ b มีความสัมพันธ์กับ<br />

กล่าวได้ว่า a ก็มีความสัมพันธ์กับ c เช่นเดียวกัน<br />

c เราสามารถ


คุณสมบัติการสมมาตร<br />

ถ้า P มีคุณสมบัติการสมมาตร และ คุณสมบัตินั นมีสัมพันธ์ จาก a ไป b แล้ว<br />

b จะมีความสัมพันธ์กับ a โดยคุณสมบัติของ P


การทําให้ hasIngredient มีคุณสมบัติการถ่ายทอด<br />

เลือก has Ingredient property<br />

คลิกเลือก transitive ทีกล่อง<br />

เลือก is Ingredient Of property ทําให้แน่ใจเลือก transitive ทีกล่องตัวเลือก


E11: การทําคุณสมบัติ hasBase ฟังก์ชัน<br />

เลือก hasBase property<br />

คลิกเลือกที “functional”<br />

OWL-DL ไม่อนุญาติให้ datatype มีคุณสมบัติของการถ่ายทอด การสมมาตร<br />

หรือ คุณสมบัติการผกผัน


คุณสมบัติของ domains และ ranges<br />

คุณสมบัติของการเชือมโยงจากโดเมนไปยังช่วง<br />

OWL ใช้ domains และ ranges เป็ นหลักการในการให้เหตุผล


E12: การระบุช่วงของ hasTopping<br />

เลือก has Topping<br />

กดทีปุ ่ ม range<br />

เลือก Pizza Topping<br />

กดทีปุ ่ ม OK<br />

Pizza Topping ควรจะแสดงช่วงรายการ<br />

เมือหลายคลาสมีการเพิ ม range จะมีการ union คลาสทั งหมด


E13: การระบุ Pizza เป็ นโดเมนของ hasTopping<br />

property<br />

เลือก hasTopping property<br />

กดปุ ่ ม add domain<br />

เลือก Pizza<br />

Press OK<br />

กด OK<br />

Pizza จะแสดงรายการของโดเมน<br />

เมือหลายคลาสมีการเพิ มโดเมนจะอธิบายโดยการ union คลาสของทั งหมด


E14: ระบุโดเมนและช่วงสําหรับ isToppingOf<br />

property<br />

เลือก is Topping Of property<br />

ตั งค่าโดเมนคุณสมบัติของTopping ไปยัง PizzaTopping<br />

ตั งค่าช่วงของคุณสมบัติ Topping ไปยัง Pizza.


E15: ระบุโดเมนและช่วงสําหรับคุณสมบัติ<br />

hasBase และคุณสมบัติการผกผันของ isBaseOf<br />

Select the hasBase property<br />

เลือก hasBase property<br />

ระบุโดเมน เป็ น Pizza<br />

ระบุช่วงเป็ น PizzaBase<br />

เลือก isBaseOf property<br />

ระบุโดเมนเป็ น PizzaBase<br />

ระบุช่วงเป็ น Pizza


ข้อจํากัดของ Property<br />

OWL ใช้คุณสมบัติในการสร้างข้อจํากัด<br />

ข้อจํากัดจะถูกใช้เพือจํากัดสิทธิทีอยู ่ในคลาส<br />

สามข้อ จํากัด :<br />

ข้อจํากัดของ ตัวบ่งปริมาณ<br />

ตัวบ่งปริมาณสําหรับตัวมีจริง ( ∃)<br />

ตัวบ่งปริมาณต้องเป็ นสากล ( ∀ )<br />

ข้อจํากัดจํานวนสมาชิกในเซ็ต<br />

ข้อจํากัด hasValue


E16: เพิมข้อจํากัดให้ Pizza<br />

เพิมข้อ จํากัด ให้กับ Pizza โดยระบุว่า Pizza จะต้องมี PizzaBase<br />

เลือก Pizza<br />

เลือกหัวข้อ Necessary เพือสร้าง necessary<br />

เงือนไข<br />

เลือก create a restriction wizard<br />

เลือก has Base เป็ นคุณสมบัติข้อจํากัด<br />

เลือก someValue From เป็ นข้อจํากัด<br />

ใส่ PizzaBase ลงใน filler


เพิมข้อจํากัดให้ Pizza


E18: สร้างสิงทีแตกต่างกันของ PIZZA<br />

สร้างคลาสย่อยของ PIZZA ทีเรียกว่า NamedPizza และสร้างคลาสย่อยของ<br />

NamedPizza ทีเรียกว่า MargheritaPizza<br />

เพิมความคิดเห็น MargheritaPizza : พิซซ่าทีมีเพียง Mozarella และรสชาติ<br />

มะเขือเทศ


E19: การเพิมข้อจํากัดของ MargheritaPizza<br />

ในการระบุว่าเป็ น MargheritaPizza ควรจะมี MozzarellaTopping อย่างน้อย 1<br />

อย่าง<br />

เลือก MargheritaPizza<br />

ไปที “Asserted Conditions” , สร้างข้อจํากัดใหม่<br />

เลือก someValueFrom<br />

เลือก hasTopping เป็ นคุณสมบัติทีจะถูกจํากัด Enter ใส่<br />

MozzarellaTopping เป็ นฟิ ลเลอร์<br />

กดปุ ่ ม OK


E20: การเพิมข้อจํากัดใน MargheritaPizza<br />

ในการระบุว่าเป็ น MargheritaPizza ควรจะมี TomatoTopping อย่างน้อย 1<br />

อย่าง<br />

เลือก MargheritaPizza<br />

ไปที “Asserted Conditions” , สร้างข้อจํากัดใหม่<br />

เลือก someValueFrom<br />

เลือก hasTopping เป็ นคุณสมบัติทีจะถูกจํากัด<br />

ใส่ TomatoTopping เป็ นฟิ ลเลอร์<br />

กดปุ ่ ม OK


E21: สร้าง AmericanPizza<br />

สร้าง AmericanPizza กับรสชาติของ pepperoni, mozzarella และมะเขือเทศ<br />

กระทั งการโคลนและการปรับเปลียนรายละเอียดของ MargheritaPizza<br />

เลือก MargheritaPizza<br />

เลือกสร้างโคลนใหม่<br />

เพิมข้อจํากัดเพิ มเติมเพือ AmericanaPizza<br />

เพิม PepperoniTopping<br />

กด OK


E22: สร้าง AmericanHotPizza และ S<br />

AmericanHotPizza เกือบจะเหมือนกับ AmericanaPizza แต่มี<br />

JalapenoPepperTopping<br />

SohoPizza เกือบเหมือน MargheritaPizza แต่มี OliveTopping และ<br />

ParmezanTopping เพิมเติม


E23: ทําให้ subclasses ของ NamedPizza เคลือน<br />

ออกจากกันและกัน<br />

เลือก MargheritaPizza<br />

กดปุ ่ ม “add all siblings” บน “Disjoints widget”เพือทําให้ Pizzas ออกจากกัน<br />

และกัน


การใช้ Reasoner<br />

ontology อธิบายไว้ในOWL - DL สามารถประมวลผลโดย Reasoner<br />

ไปที owl—preference, เพือให้แน่ใจว่า OWL-DL ถูกเลือก<br />

บริการหลักทีนําเสนอโดย Reasoner คือการทดสอบหรือหนึ งคลาสไม่เป็ น<br />

คลาสย่อย ของคลาสอืน<br />

โดยการดําเนินการทดสอบดังกล่าวในทุกคลาสนั นเป็ นไปได้สําหรับ<br />

Reasoner เพือคํานวณ ontology ลําดับชั นของคลาสทีอ้างถึง<br />

บริการการให้เหตุผลอีกประการหนึ งคือตรวจสอบความสอดคล้อง -- เพือ<br />

ตรวจสอบหรือไม่ก็เป็ นไปได้สําหรับการเรียนทีจะมีกรณีใด ๆ<br />

คลาส จะถือว่าจะไม่สอดคล้องกันถ้ามันไม่มีบางกรณี


การใช้ Racer<br />

เพือให้เหตุผลทีมากกว่า ontology ใน <strong>Protege</strong> – OWL ซึ งเป็ นไปตาม<br />

มาตรฐาน DIG Reasoner ควรจะติดตั งและเริ มต้น<br />

ในการสอนนี เราใช้ Racer<br />

ดาวน์โหลดที :<br />

http://www.racer-systems.com/products/download/index.phtml<br />

ดับเบิลคลิกที RacerPro เพือเริ ม Racer


การขอร้อง Reasoner<br />

เริมต้น Racer, Ontology ทีสามารถส่งไปยัง Reasoner โดยอัตโนมัติ คํานวณการ<br />

จําแนกลําดับชั นและยังตรวจสอบความสอดคล้องเชิงตรรกะของ Ontology<br />

ใน <strong>Protege</strong>, ลําดับชั นทีสร้างด้วยตนเองจะเรียกว่าลําดับชั นของการยืนยัน ที<br />

คํานวณโดยอัตโนมัติโดย Reasoner จะเรียกว่าลําดับชั นของอนุมาน<br />

-<br />

ไปที OWL—การจําแนก taxonomy -- การเรียก Reasoner<br />

ถ้าคลาสได้รับการจัดประเภทรายการใหม่แล้วชือคลาสจะปรากฏสีฟ้ าในลําดับ<br />

ชั นทีอ้างถึง<br />

ไปที OWL-- ตรวจสอบความสอดคล้อง -- เพือเรียก Reasoner<br />

ถ้ามีคลาสทีพบว่าไม่มีความสอดคล้องกัน ไอคอนจะเป็ นวงกลมสีแดง<br />

การคํานวณลําดับคลาสทีอ้างถึงเป็ นทีรู้จักกันว่าเป็ นการจําแนก Ontology


การขอร้อง Reasoner


E24: คลาสทีไม่สอดคล้องกัน<br />

เพือแสดงถึงการใช้งานของ Reasoner ในการตรวจสอบความไม่สอดคล้อง<br />

กันใน ontology ทีเราจะสร้างคลาส ProbeInconsistentTopping<br />

ซึ งเป็ นคลาสย่อย ของ CheeseTopping<br />

เลือก ProbeInconsistentTopping ไปทีการยืนยันสภาพทีจะเพิมคลาสทีมี<br />

ชือ VegetableTopping ให้เลือก แล้วกด OK<br />

ไปที OWL -- ตรวจสอบความสอดคล้อง


E25: จัด Ontology อีกครั ง<br />

เพือดู ProbeInconsistentTopping จะไม่สอดคล้องกัน


E26: ลบคําสังทีผิดพลาด<br />

ระหว่าง CheeseTopping และ VegetableTopping เพือเห็นว่าอะไรเกิดขึ น<br />

เลือก CheeseTopping<br />

ไปที disjoint ส่วนหนึ ง<br />

เลือก VegetableTopping, คลิกขวาและ "ลบแถวทีเลือก“<br />

จัด taxonomy<br />

ความไม่สอดคล้องกันนั นไม่มีอยู ่แล้ว


E27: แก้ไข Ontology<br />

โดยการทําให้ CheeseTopping และ VegetableTopping แยกออกจากกันและ<br />

กัน


แหล่งข้อมูล<br />

<strong>Protege</strong> Ontology Libraries<br />

http://protegewiki.stanford.edu/index.php/<strong>Protege</strong>_Ontology_Library<br />

<strong>Protege</strong> tutorial<br />

http://www.co-ode.org/resources/tutorials/<br />

<strong>Protege</strong> Website<br />

http://protege.stanford.edu/doc/users.html<br />

http://protege.stanford.edu/


แปลโดย<br />

นางสาวปภัสรา ชลวิริยะนันท<br />

รหัสนิสิต 51037609 กลุ่ม 01<br />

เอกสารนี เป็ นส่วนหนึ งของวิชา Knowledge-base System<br />

ภาควิชาวิทยาการคอมพิวเตอร์<br />

คณะวิทยาการสารสนเทศ มหาวิทยาลัยบูรพา

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!