Protege Tutorial
Protege Tutorial
Protege Tutorial
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 />
คณะวิทยาการสารสนเทศ มหาวิทยาลัยบูรพา