530 likes | 911 Views
Protege Tutorial. บทเรียน ProtegeOWL ขั้นพื้นฐาน โดยเว็บไซต์ของ protege. Protege คืออะไร ?. Protege เป็นซอฟต์แวร์ฟรี , ในรูปแบบของโอเพนซอร์ส ซึ่งเป็นซอฟต์แวร์ที่เผยแพร่ซอร์สโค้ดได้ มีโครงสร้างเป็นแบบจำลองและการใช้โปรแกรมประยุกต์ความรู้พ้นฐานกับ ออนโทโลจี
E N D
Protege Tutorial บทเรียน ProtegeOWL ขั้นพื้นฐานโดยเว็บไซต์ของ protege
Protege คืออะไร? • Protege เป็นซอฟต์แวร์ฟรี , ในรูปแบบของโอเพนซอร์ส ซึ่งเป็นซอฟต์แวร์ที่เผยแพร่ซอร์สโค้ดได้มีโครงสร้างเป็นแบบจำลองและการใช้โปรแกรมประยุกต์ความรู้พ้นฐานกับ ออนโทโลจี • ออนโทโลจีเป็นศูนย์กลางการใช้งานโปรแกรมประยุกต์ต่างๆเช่นกระบวนทัศน์ทางวิทยาศาสตร์, การจัดการข้อมูลสารสนเทศ , ระบบบูรณาการ, การพาณิชย์อิเล็กทรอนิคส์และการบริการทางเว็บไซต์
การติดตั้ง Protege • ไปที่http://protege.stanford.edu/doc/owl/getting-started.htmlเพื่อดาวน์โหลด protege (เวอร์ชัน 3.x) • Protege OWL รุ่นนี้ถูกสร้างขึ้นมาเพื่อให้มีการติดตั้งอย่างเต็มรูปแบบของโปรทีเจ ระหว่างที่มีการติดตั้ง ควรเลือกออบ “Basic+OWL” • รายละเอียดเพิ่มเติม : http://protege.stanford.edu/doc/owl/getting-started.html
Protege • 2 แนวทางหลักในการออกแบบ แบบจำลองออนโทโลจี • Frame-based • OWL • แต่ละแบบก็จะมีหน้าตาอินเตอร์เฟซที่มีลักษณะเฉพาะตัว • Protege Frames รุ่นนี้: สามารถใช้ในการคำนวนจำนวนของออนโทโลจีที่เป็นframe-based, ให้มีการสอดคล้องกับ OKBC (Open Knowledge Base Connectivity Protocol). • Classes • Slots for properties and relationships • Instances for class • Protege OWL รุ่นouh: สามารถใช้ออนโทโลจีในการสร้างเ Semantic Web, โดยเฉพาะอย่างยิ่ง OWL • Classes • Properties • Instances • reasoning
การสร้าง OWL Ontology • E2: สร้างโปรเจคใหม่ให้กับ OWL • เปิดโปรแกรม protege • ไปที่ File – New Project – OWL/RDF files – Ontology URI (http://www.pizza.com/ontologies/pizza.owl) – OWL DL – Properties View • เจอ Protege ในหน้าต่างว่างๆ – โปรเจค OWL ถูกสร้างขึ้น • บันชื่อไฟล์เป็น pizza.owl
ชื่อ Classes • ไปที่แท็บ OWL Classes • จะมีลำดับคลาสที่ว่างๆอยู่ ภายในจะบรรจุคลาสไว้ 1 คลาสเรียกว่า owl:Thing, เป็นคลาสแม่ของทุกๆคลาส • E3: ทำการสร้าง คลาสย่อย ชื่อว่า Pizza, PizzaTopping และ PizzaBase. คลาสเหล่านี้จะเป็นคลาสย่อยของ owl:Thing. • การตั้งชื่อ • ไม่มีการตั้งชื่อที่ตรงกับชื่อพิเศษ • มีความสอดคล้องกัน
Disjoint classes • E4: จะทำอย่างให้ Pizza, PizzaTopping และ PizzaBase เป็นคลาสที่มีการ Disjoint กัน • เลือก คลาส Pizza • กดปุ่ม “add siblings” ที่อยู่ข้างบนส่วน disjoint classes • เพิ่ม PizzaBase และ PizzaTopping • ทำการเลือกคลาส PizzaTopping, • เพิ่ม Pizza และ PizzaBase ไปยัง disjoint class
E5: วิธีการสร้างกลุ่มของคลาส • ทำการสร้าง ThinAndCrisyBase และ DeepPanBase ไปที่คลาสย่อยของ PizzaBase และแต่ละคลาสจะเป็นคลาสที่ถูกdisjoint • เลือก PizzaBase, คลิกขวาเลือก“create subclasses” • จะมีการสร้างคลาสที่เป็น disjoint คลาสขึ้น 2 คลาส • และจะมีการบันทึกขึ้นทุกครั้งที่มีการสร้าง disjoint คลาส
E6: สร้างคลาสย่อยใน PizzaTopping • เลือก PizzaTopping, • สร้างคลาสย่อยเป็น MeatTopping, VegetableTopping, CheeseTopping และ SeafoodTopping. ทำคลาสทั้งหมดนี้ให้เป็น Disjoint คลาส • ทำการเลือกคลาส MeatTopping, • เพิ่ม disjoint ของคลาสย่อย : SpicyBeefTopping, PepperoniTopping, SalamiTopping และ HamTopping • เลือก VegetableTopping: • เพิ่ม disjoint ของคลาสย่อย : TomatoTopping, OliveTopping, MushroomTopping, PepperTopping, OnionTopping, CaperTopping
E6: การสร้าง disjoint ของคลาสย่อย • เลือก PepperTopping • เพิ่ม disjoint ของคลาสย่อย : RedPepperTopping, GreenPepperTopping, JalapenoPepperTopping • เลือก CheeseTopping • เพิ่ม disjoint ของคลาสย่อย : MozzarellaTopping, ParmezanTopping • เลือก SeafoodTopping • เพิ่ม disjoint ของคลาสย่อย : TunaTopping, AnchovyTopping and PrawnTopping
คุณสมบัติของ OWL • OWL มีคุณสมบัติในการแสดงความสัมพันธ์ระหว่างออบเจค 2 ออบเจค • มี 2 คุณสมบัติหลักๆดังต่อไปนี้ • คุณสมบัติทาง Object : ออบเจคสองออบเคสามารถเชื่อมโยงกันได้ • คุณสมบัติทาง datatype : object สามารถลิงค์ไปยัง XML Schema datatype หรือ rdf:literal • คถณสมบัติอื่นๆ ของ OWL – คุณสมบัติในการให้คำอธิบายประกอบ, ถูกใช้ในการให้อธิบายข้อมูลของคลาส, ลักษณะเฉพาะ , และคุณสมบัติอื่นๆ
E7: การสร้างคุณสมบัติของ Object • ทำการเปลี่ยนจากแถบเมนู “Properties” • ใช้ปุ่ม “Create Object Property” ในการสร้างคุณสมบัติของออบเจคตัวใหม่ • ทำการเปลี่ยนชื่อไปเป็น hasIngredient
E8: การสร้างคุณสมบัติย่อย • เลือกคุณสมบัติ hasIngredient • ทำการเพิ่ม Topping และ hasBase ไปที่ subproperties
คุณสมบัติการเปลี่ยนกลับคุณสมบัติการเปลี่ยนกลับ • ในแต่ละคุณสมบัติของ object สามารถมีการเปลี่ยนกลับคุณสมบัติที่ตรงกันได้ • ถ้ามีบางคุณสมบัติเชื่อมโยงจาก a ไปยัง b ดังนั้นก็จะสามารถเปลี่ยนกลับ จาก b ไปยัง a ได้
E9: การสร้างคุณสมบัติการเปลี่ยนกลับ(การผกผัน) • สร้างคุณสมบัติของ object ใหม่โดยไปที่ isIngredientOf • กดปุ่ม “Set inverse property” • เลือก “hasIngredient” • จากนั้นการผกผันของความสัมพันธ์ก็จะถูกตั้งค่าขึ้น • เลือก hasBase • ทำการสร้าง isBaseOf ที่มีคุณสมบัติผกผันกับ hasBase • isBaseOf เป็นคุณสมบัติย่อยของ isIngredientOf • เลือก hasTopping • สร้าง isToppingOf ที่มีคุณสมบัติการผกผัน • isToppingOf จะเป็นคุณสมบัติย่อยของ isIngredientOf
คุณสมบัติของฟังก์ชัน • ถ้าหากคุณสมบัติเป็นเหมือนฟังก์ชันที่ใช้ในการทำงานที่จะยอมให้มีการทำงานเฉพาะส่วน โดยผ่านคุณสมบัติดังนี้ • ยอมให้มีการกำหนดขอบเขตที่แน่นอน มีลำดับที่เป็นเอกลักษณ์เฉพาะส่วน • คุณสมบัติของฟังก์ชันต่างๆ เป็นเหมือนคุณสมบัติที่มีค่าเป็นค่าๆเดียว
การทำงานของฟังก์ชันผกผันการทำงานของฟังก์ชันผกผัน • ถ้าหากฟังก์ชันมีคุณสมบัติในการผกผัน ดังนั้นก็จะมีการผกผันตามคุณสมบัติดังต่อไปนี้ • กำหนดให้มีลำดับและขอบเขตที่แน่นอน
ฟังก์ชันและคุณสมบัติการผกผันของฟังก์ชันฟังก์ชันและคุณสมบัติการผกผันของฟังก์ชัน • ความแตกต่างระหว่างคุณสมบัติของฟังก์ชันและการผกผันคุณสมบัติของฟังก์ชัน
คุณสมบัติการถ่ายทอด • ถ้า a มีคุณสมบัติการถ่ายทอด , และเป็นการถ่ายทอดคุณสมบัติโดยตรงจาก a ไป b และ b มีการถ่ายทอดคุณสมบัติโดยตรงไปยัง c, ดังนั้นเราสามารถถ่ายทอดคุณสมบัติโดยตรงจาก a ไปยัง c ได้ผ่านคุณสมบัติ P
คุณสมบัติการสมมาตร(Symmetric)คุณสมบัติการสมมาตร(Symmetric) • ถ้า P มีคุณสมบัติของการสมมาตร และมีการสมมาตรโดยตรงจาก a ไปยังb ดังนั้น b ก็จะมีคุณสมบัติการสมมาตรได้โดยตรงไปยัง a โดยผ่านคุณสมบัติ P
E10: การทำให้ hasIngredient มีคุณสมบัติการถ่ายทอด • เลือกคุณสมบัติ hasIngredient • คลิกกล่องเชคค์บ๊อคที่มีชื่อว่า transitive • ทำการเลือกคุณสมบัติ isIngredientOf ทำการคลิกที่ transitive box อีกครั้งเพื่อความมั่นใจ
E11: การทำคุณสมบัติของฟังก์ชัน hasBase • เลือกคุณสมบัติ hasBase • คลิกเลือก “functional” • OWL-DL จะไม่อนุญาต ให้ datatype การถ่ายทอด การสมมาตร หรือคุณสมบัติการผกผัน
คุณสมบัติของ domains และ ranges • คุณสมบัติที่มีการเชื่อโยงจาก domain ไปยัง range • OWL ใช้ domain และ range เป็นหลักการและเหตุผล
E12: การกำหนด range ของ hasTopping • เลือก hasTopping • กดปุ่ม range • เลือก PizzaTopping • กดปุ่ม OK • PizzaTopping จะแสดงรายการของ range • เมื่อหลายๆคลาสถูกเพิ่ม range เข้าไปคลาสเหล่านั้นก็จะมีการ union กันหมดทุกๆคลาส
E13: การกำหนด Pizza ให้มี domain เป็นคุณสมบัติของ hasTopping • เลือกคุณสมบัติ hasTopping • กดปุ่มเพิ่ม domain • เลือก Pizza • กด OK • Pizza จะแสดงรายการของ domain • เมื่อหลายๆคลาสถูกเพิ่มเป็น domain คลาสเหล่านั้นก็จะสามารถนำเสนอออกมาเป็นการ Union ของหลายๆคลาสได้
E14: การระบุ domain และ range สำหรับคุณสมบัติของisToppingOf • เลือกคุณสมบัติ isToppingOf • ตั้งค่า domain ของคุณสมบัติ isToppingOf เป็น PizzaTopping • ตั้งค่า range ของคุณสมบัติ isToppingOf เป็น Pizza.
E15: ระบุ domain และ range สำหรับคุณสมบัติของ hasBase ที่เป็นคุณสมบัติการผกผัน isBaseOf • เลือกคุณสมบัติ hasBase • ระบุ domain เป็น Pizza • ระบุ range เป็น PizzaBase • เลือกคุณสมบัติ isBaseOf • ระบุ domain เป็น PizzaBase • ระบุ range เป็น Pizza
ข้อจำกัดด้านคุณสมบัติข้อจำกัดด้านคุณสมบัติ • ใน OWL, คุณสมบัติที่ถูกสร้างขึ้นต่างก็มีข้อจำกัด • ข้อจำกัดนี้ถูกใช้จำกัดในเฉพาะด้านสำหรับแต่ละคลาส • 3 ข้อจำกัด: • ข้อจำกัดด้านปริมาณ • Existential quantifier ( ) • Universal quantifier ( ) • ข้อจำกัดด้าน Cardinality • ข้อจำกัดของ hasValue
E16: การเพิ่มข้อจำกัดให้กับ Pizza • เพิ่มข้อจำกัดให้กับ Pizza โดยระบุ Pizza เป็น PizzaBase • เลือก Pizza • เลือกหัวข้อ Necessary เพื่อสร้างเงื่อนไขที่จำเป็น • ทำการสร้างข้อจำกัด • เลือก hasBase เป็นคุณสมบัติที่มีข้อจำกัด • เลือก someValueFrom เป็นข้อจำกัด • ให้ PizzaBase เป็น filler
เพิ่มข้อจำกัดให้กับ Pizza
E18: สร้างข้อแตกต่างตามแต่ละประเภทของ Pizzas • สร้างคลาสย่อยของ Pizza ที่เรียกว่า NamedPizzaและเรียกคลาสย่อยของ NamedPizza ว่า MargheritaPizza • เพิ่มข้อคอมเมนต์ให้กับ MargheritaPizza: เป็น pizza ที่มีเพียง Mozarella และ Tomato toppings
E19: เพิ่มข้อจำกัดให้กับ MargheritaPizza • ระบุ MargheritaPizza ให้มีอย่างน้อยคือ MozzarellaTopping. • เลือก MargheritaPizza • ไปที่ “Asserted Conditions” สร้างข้อจำกัดใหม่ • เลือก someValueFrom • เลือก hasTopping ให้มีคุณสมบัติเป็นข้อจำกัด • เลือก MozzarellaTopping ให้เป็น filler • กดปุ่ม OK
E20: เพิ่มข้อจำกัดให้กับ MargheritaPizza • เพื่อระบุ MargheritaPizza ให้มีอย่างน้อยหนึ่งตัวที่เป็น TomatoTopping. • เลือก MargheritaPizza • ไปที่ “Asserted Conditions”ในการสร้างข้อจำกัด • เลือก someValueFrom • เลือก hasTopping ให้เป็นคุณสมบัติที่มีข้อจำกัด • เลือก TomatoTopping ให้เป็น filler • กดปุ่ม OK
E21: สร้าง AmericanPizza • สร้าง AmericanPizza กับ toppings ของ pepperoni mozzarella และ tomato. • ผ่านการ cloning และการ modifying ในการอธิบายของ MargheritaPizza. • เลือก MargheritaPizza • เลือกสร้าง clone • เพิ่มข้อจำกัดเพิ่มเติมให้กับ AmericanaPizza • เพิ่ม PepperoniTopping • กดปุ่ม OK
E22: สร้าง AmericanHotPizza และ SohoPizza • AmericanHotPizza เกือบจะคล้ายกับ AmericanaPizza แต่มี JalapenoPepperTopping อยู่ในนั้น • SohoPizza เกือบจะคล้ายกับ MargheritaPizzaแต่จะมีส่วนที่เพิ่มเติมขึ้นมาคือ OliveTopping และ ParmezanTopping
E23: ทำคลาสย่อยของ NamedPizza ให้ disjoint กัน • เลือก MargheritaPizza • กดปุ่ม “add all siblings” บน “Disjoints widget” เพื่อทำ disjoint ให้กับ pizzas แต่ละอัน
การใช้เหตุและผล • Ontology ใช้ในการอธิบายใน OWL-DL ที่สามารถดำเนินการได้จากการให้เหตุและผล • ไปที่ owl—preference, ทำการเชคค์ให้แน่ใจว่า OWL-DL ได้ถูกเลือกไว้แล้ว • การบริการหลักเพื่อเสนอให้เห็นถึงเหตุและผลที่เป็นการทดสอบว่าเป็นคลาสที่เป็นซับคลาสของคลาสอื่นๆหรือไม่ • การแสดงถึงการทดสอบในแต่ละคลาส ,เป็นการให้เหตุผลในสิ่งที่เป็นไปได้ การคำควณของการได้มาของออนโทโลยีของแต่ละลำดับชั้น • การบริการด้านการให้เหตุผลอื่นๆก็เป็นเหมือนการตรวจสอบความสอดคล้องกัน – เพื่อตรวจสอบความเป็นไปได้ของคลาสนั้นว่าเป็นไปได้หรือไม่ • คลาสอาจเป็นคลาสตัวอย่างที่ถือว่ามีความสอดคล้องกันหรืออาจเป็นคลาสที่ไม่มีความสอดคล้องกันก็มีบ้างในหลายๆตัวอย่าง
การใช้ Racer • ในลำดับการให้เหตุผลที่มากว่าออนโทโลจีใน Protege-OWL ซึ่งเป็นไปตามมาตรฐาน DIG ที่ควรจะติดตั้งและเริ่มใช้งาน • ในการสอนจะมีการใช้ Racer • ดาวน์โหลดที่ : http://www.racer-systems.com/products/download/index.phtml • ดับเบิลคลิก RacerPro เพื่อเริ่มใช้ Racer
การอ้างถึงเห็นผล • มีการเริ่มใช้ Racer ที่ ontology ที่สามารถส่งไปยัง reasoner โดยอัตโนมัติที่มีการคำนวนการจำแนกเป็นลำดับชั้นและสามารถตรวจสอบความสอดคล้องกันของออนโทโลจี้ • ในProtege, แมนนัวร์ที่มีโครงสร้างเป็นลำดับขั้นจะถูกเรียกว่า asserted hierarchy. มีการคำนวนอย่างอัติโนมัติโดย reasoner จะถูกเรียกว่า inferred hierarchy. • ไปที่ OWL – classify taxonomy – เพิ่ออ้างไปยัง reasoner • ถ้าคลาสเป็นreclassifiedดังนั้นคลาสจะปรากฏชื่อเป็นสีฟ้า blue colorในลำดับชั้นที่ถูกอ้างถึง • ไปที่ OWL – ตรวจสอบ consistency – เพื่ออ้างไปยัง reasoner • ถ้าพบว่าคลาสเป็น inconsistentจะเกิด icon เป็นวงกลมสีแดง red color. • การคำนวณการนำเสนอคลาสเป็นลำดับชั้นทำให้รู้ถึง การจำแนกของออนโทโลจี
การอ้างอิงอย่างมีเหตุผลการอ้างอิงอย่างมีเหตุผล
E24: คลาสที่ไม่สอดคล้องกัน • ในลำดับแสดงถึงการใช้ reasoner เพื่อตรวจสอบ inconsistencies ในออนโทโลจี, เพื่อที่จะสร้างคลาส ProbeInconsistentTopping, • คลาสย่อยอันไหนเป็นคลาสของ CheeseTopping • เลือก ProbeInconsistentToppingไปยืนยันเงื่อนไขในการเพิ่มชื่อคลาส เลือก VegetableTopping และกดปุ่ม OK • ไปที่ OWL – ตรวจสอบ consistency
E25: ทำการแบ่งกลุ่มของแต่ละประเภทของออนโทโลจีอีกครั้ง • จะเห็น ProbeInconsistentTopping ว่าไม่มีอยู่แล้ว
E26: ทำการลบ disjoint statement • ระหว่าง CheeseTopping และ VegetableTopping จะเห็นว่ามีอะไรเกิดขึ้นบ้าง • ทำการการเลือก CheeseTopping • ไปยังส่วนที่เป็น Disjoint • เลือก VegetableTopping, คลิกขวาและ “ทำการลบแถวที่เลือก” • การจำแนก taxonomy • ความสอดคล้องดังกล่าวไม่เกิดขึ้นแล้ว
E27: แก้ไข ontology • ทำได้โดยกำหนดให้ CheeseTopping และ VegetableTopping ให้ disjoint ออกจากตัวอื่นๆ
แหล่งอ้างอิง • Protege Ontology Libraries • http://protegewiki.stanford.edu/index.php/Protege_Ontology_Library • แหล่งความรู้ Protege • http://www.co-ode.org/resources/tutorials/ • เว็บไซต์ Protege • http://protege.stanford.edu/doc/users.html • http://protege.stanford.edu/