460 likes | 713 Views
Protege Tutorial. Based on ProtegeOWLTutorial at protege website. protege คืออะไร ?. Protege เป็นฟรี open-source แพลตฟอร์ม หรือแอพพลิเคชั่นที่ใช้สร้างรูปแบบหลัก หรือ องค์ความรู้ด้วย ontologies ช่วงของ Ontologies มาจากอนุกรมวิธาน , การจำแนกแยกแยะ , ฐานข้อมูลที่เต็มไปด้วยทฤษฎี
E N D
Protege Tutorial Based on ProtegeOWLTutorial at protege website
protege คืออะไร? • Protege เป็นฟรี open-source แพลตฟอร์มหรือแอพพลิเคชั่นที่ใช้สร้างรูปแบบหลัก หรือ องค์ความรู้ด้วย ontologies • ช่วงของ Ontologies มาจากอนุกรมวิธาน, การจำแนกแยกแยะ, ฐานข้อมูลที่เต็มไปด้วยทฤษฎี • Ontologies ในเวลานี้ได้เป็นศูนย์กลางของหลายแอพพลิเคชั่น ไม่ว่าจะเป็นความรู้ทางวิทยาศาสตร์ ,การจัดการข้อมูล,ระบบบูรณาการพาณิชย์อิเล็กทรอนิกส์และการบริการเว็บ
การติดตั้ง Protege • ไปที่ http://protege.stanford.edu/doc/owl/getting-started.htmlทำการดาวโหลด protege (version 3.x) • Protege OWL editor จะเป็นตัวติดตั้งแบบเต็มของแพลตฟอร์ม protege ขณะที่ทำการติดตั้งให้เลือกคำสั่ง “Basic+OWL” • ศึกษารายละเอียดเพิ่มเติม: http://protege.stanford.edu/doc/owl/getting-started.html
Protege • จะมีสองตัวเลือกสำหรับการ modelling ontologies: • Frame-based • OWL • แต่ละอย่างจะมีส่วนของ User Interface ตามแบบของตนเอง • Protege Frames editor: จะเชื่อมต่อกับผู้ใช้โดยการสร้างและคัดเลือก ontologies ที่เป็น frame-based และสอดคล้องกับ OKBC (โปรโตคอลเชื่อมต่อ Open Knowledge Base). • Classes • Slots for properties and relationships • Instances for class • Protege OWL editor: จะเชื่อมต่อกับผู้ใช้โดยการสร้าง ontology สำหรับ 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 ว่างๆ ที่พร้อมสำหรับการเริ่มใช้งาน • ทำการ Save ชื่อไฟล์เป็น pizza.owl
Named Classes • ไปที่แท็บ OWL Classes • จะมี class แบบ tree ว่างๆที่บรรจุ class 1 class ที่เรียกว่า owl:Thing ซึ่งจะเป็น superclass ของทุกสิ่ง • E3: สร้างคลาสย่อยของ Pizza, PizzaTopping และ PizzaBase โดยกำหนดให้เป็นคลาสย่อยของ owl:Thing. • เงื่อนไขของการ Naming • ไม่มีชื่อที่เป็นลักษณะพิเศษที่กำหนดไว้ • ต้องไม่มีการเปลี่ยนแปลง
การแยกออกจากกันของ classes • E4: จะบอกได้อย่างไรว่า Pizza, PizzaTopping and PizzaBase เป็นคลาสที่แยกออกจากกัน • เลือกที่ class Pizza • กดปุ่ม “add siblings” ซึ่งเป็นปุ่มในการแยกคลาส • เพิ่ม PizzaBase และ PizzaTopping • เลือก class PizzaTopping, • เพิ่ม Pizza และ PizzaBase เพื่อทำการ disjoint class
E5: การสร้างกลุ่มของ classes • สร้าง ThinAndCrisyBase และ DeepPanBase เป็นคลาสย่อยของ PizzaBase โดยแต่ละอย่างจะ disjointed กัน • เลือก PizzaBase โดยคลิดขวาที่เม้าส์แล้วเลือก “create subclasses” • ทำตามตัวช่วย เพื่อสร้าง 2 คลาสที่ Disjointed กัน • จะเป็นการประหยัดเวลาสำหรับการสร้าง disjoint classes หลายๆคลาส
E6: การสร้าง คลาสย่อยบางคลาสของ PizzaTopping • เลือก PizzaTopping, • สร้าง subclaesses เป็น MeatTopping, VegetableTopping, CheeseTopping และ SeafoodTopping เพื่อให้มั่นใจว่าคลาสเหล่านี้จะ Disjionted กับตัวอื่นๆ • เลือก class MeatTopping, • เพิ่ม disjoint subclassesได้แก่ SpicyBeefTopping, PepperoniTopping, SalamiTopping และ HamTopping • เลือก VegetableTopping: • เพิ่ม disjoint subclasses ได้แก่ TomatoTopping, OliveTopping, MushroomTopping, PepperTopping, OnionTopping, CaperTopping
E6: การสร้าง disjoint subclasses • เลือก PepperTopping • เพิ่ม disjoint subclasses ได้แก่ RedPepperTopping, GreenPepperTopping, JalapenoPepperTopping • เลือก CheeseTopping • เพิ่ม disjoint subclasses ได้แก่ MozzarellaTopping, ParmezanTopping • เลือก SeafoodTopping • เพิ่ท disjoint subclasses ได้แก่ TunaTopping, AnchovyTopping และ PrawnTopping
คุณสมบัติ OWL • OWL มีคุณสมบัติของการเป็นตัวแทนความสัมพันธ์ระหว่าง 2 objects. • มีคุณสมบัติหลัก 2 ประการ: • คุณสมบัติ Object : เชื่อมต่อ object กับ object • คุณสมบัติประเภทข้อมูล: เชื่อมต่อ object ไปที่ XML Schema datatype หรือ rdf:literal • คุณสมบัติอื่นๆของ OWL– ใช้ในการเพิ่มข้อมูลของ classes, individuals และ properties
E7: การกำหนดคุณสมบัติ object • เลือกที่แท็บ “Properties” • เลือก “Create Object Property” ในการสร้าคุณสมบัติของobject ใหม่ • เปลี่ยนชื่อเป็น hasIngredient
E8: การสร้าง sub-properties • เลือกคุณสมบัติ hasIngredient • เพิ่ม hasTopping และ hasBase เป็น subproperties
การผกผันของคุณสมบัติ • แต่ละคุณสมบัติของ object จะต้องมีคุณสมบัติการให้บริการที่สอดคล้องกัน • ถ้าบางคุณสมบัติที่เชื่อมต่อ individual a กับ individual b คุณสมบัติจะมีการผกผัน โดยจะเชื่อมต่อ individual b ไปยัง individual a.
E9: การสร้างคุณสมบัติแบบผกผัน • สร้างคุณสมบัติของ object ที่ชื่อว่า isIngredientOf • เลือก “Set inverse property” • เลือก “hasIngredient” • จากนั้นความสัมพันธ์แบบผกผันก็จะถูกติดตั้ง • เลือก hasBase • สร้าง isBaseOf ให้เป็ฯคุณสมบัติแบบผกผันของ hasBase • isBaseOf จะเป็นคุณสมบัติย่อยของ isIngredientOf • เลือก hasTopping • สร้าง isToppingOf เป็นคุณสมบัติแบบผกผัน • isToppingOf จะเป็นคุณสมบัติย่อยของ isIngredientOf
คุณสมบัติการทำงาน • ถ้าคุณสมบัติเป็นในเรื่องของการทำงาน ที่ส่งไป individual จะมีเพียง 1 individual ที่สัมพันธ์กับคุณสมบัตินี้ • สำหรับโดเมนที่จะได้รับ ต้องเป็นช่วงที่ไม่ซ้ำกัน • คุณสมบัติการทำงาน จะรู้จักกันในชื่อของ single valued properties
คุณสมบัติของการทำงานที่ผกผันคุณสมบัติของการทำงานที่ผกผัน • ถ้ามีคุณสมบัติเป็นการทำงานที่ผกผัน จากนั้นจะทำการผกผันคุณสมบัติเป็นฟังชันการทำงาน • สำหรับช่วงที่จะได้รับ ต้องเป็นโดเมนที่ไม่ซ้ำกัน
ฟังก์ชัน vs. คุณสมบัติฟังก์ชันแบบผกผัน • FunctionalProperty vs InverseFunctionalProperty
คุณสมบัติ Transitive • ถ้าคุณสมบัติเป็นแบบ transitive และคุณสมบัติเชื่อมโยง individual a ไปยัง individual b อักทั้ง individual b ไปยัง individual c ดังนั้นแล้ว พวกเราสามารถสรุปได้ว่า individual a มีความสัมพันธ์กับ individual c โดย property P.
คุณสมบัติแบบสมมาตร • ถ้าคุณสมบัติ P เป็นแบบสมมาตรและความสัมพันธ์ระหว่าง individual a ไปยัง individual b ดังนั้นแล้ว individual b ก็จะต้องมีความสัมพันธ์กับ individual a ด้วยโดย property P.
E10: การทำ hasIngredient เป็นproperty transitive • เลือก hasIngredient property • กาที่ช่อง transitive tick box • เลือก isIngredientOf property เพื่อให้มั่นใจว่าถูกกาเรียบร้อยแล้ว
E11: การทำ hasBase property เป็น functional • เลือก hasBase property • กาถูกที่ช่อง “functional” • OWL-DL จะไม่ติดตาม datatype properties เป็นtransitive, symmetric หรือมี inverse properties.
คุณสมบัติ domains และ ranges • Properties จะเชื่อมโยง individuals จาก domain ไปยังindividuals จาก range. • OWL ใช้ domain และ range เป็นสัจพจน์ในการให้เหตุผล
E12: การระบุ range ของhasTopping • เลือก hasTopping • กดปุ่ม range • เลือก PizzaTopping • กดปุ่ม OK button • PizzaTopping จะแสดงใน range list. • เมื่อ multiple classes เพิ่ทใน range ก็จะเป็นตัวแทนของ class ทั้งหมด
E13: การกำหนด Pizza เป็น domain ของhasTopping property • เลือก hasTopping property • กดปุ่ม add domain • เลือก Pizza • กด OK • Pizza จะแสดงออกมาใน domain list. • เมื่อ multiple classes ถูกเพิ่มเป็น domain ก็จะเป็นตัวแทนของ class ทั้งหมด
E14: การระบุ domain และ range ของisToppingOf property • เลือก isToppingOf property • ตั้งค่า domain ของ isToppingOf property ไปยังPizzaTopping • ตั้งค่า range ของ isToppingOf property ไปยัง Pizza
E15: การระยุ domain และ range สำหรับ hasBase property และinverse property isBaseOf • เลือก hasBase property • กำหนด domain เป็น Pizza • กำหนด range เป็น PizzaBase • เลือก isBaseOf property • กำหนด domain เป็น PizzaBase • กำหนด range เป็น Pizza
Property restrictions • ใน OWL เรื่อง properties จะใช้ในการสร้างข้อจำกัด • ข้อจำกัดจะถูกใช้เพื่อจำกัด individuals ที่อยู่ใน class • 3 ข้อจำกัด : • ข้อจำกัดเรื่องของจำนวน • Existential quantifier ( ) • Universal quantifier ( ) • ข้อจำกัดเรื่อความสำคัญ • ข้อจำกัดเรื่องค่าต่างๆ
E16: การเพิ่มข้อจำกัดของ Pizza • เพิ่มข้อจำกัดไปยัง Pizza ซึ่งการระบุ Pizza จำเป็นต้องมีPizzaBase • เลือก Pizza • เลือก Necessary header เพื่อสร้างเงือนไข necessary • เลือกสร้าง restriction wizard • เลือก hasBase เป็น restricted property • เลือก someValueFrom เป็น restriction • วาง PizzaBase ไปที่ filler
E18: การสร้างความแตกต่างของประเภท Pizzas • สร้างคลาสย่อยของ Pizza ชื่อว่า NamedPizza และคลาสย่อยของ NamedPizza ชื่อว่า MargheritaPizza. • เพิ่มข้อความไปยัง MargheritaPizza ว่า “A pizza that only has Mozarella and Tomato toppings”
E19: การเพิ่มข้อจำกัดไปยังMargheritaPizza • เพื่อระบุว่า MargheritaPizza มีอย่างน้อยเพียงหนึ่ง MozzarellaTopping. • เลือก MargheritaPizza • ไปที่ “Asserted Conditions” เพื่อสร้างข้อจำกัดใหม่ • เลือก someValueFrom • เลือก hasTopping เป็น property ที่เป็นข้อจำกัด • กด enter ที่ MozzarellaTopping เป็น filler • กด OK
E20: การเพิ่มข้อจำกัดไปยังMargheritaPizza • เพื่อระบุว่า MargheritaPizza ต้องมีเพียงหนึ่งTomatoTopping. • เลือก MargheritaPizza • ไปยัง “Asserted Conditions” สร้างข้อจำกัดใหม่ • เลือก someValueFrom • เลือก hasTopping เป็น property ที่เป็นข้อจำกัด • กด Enter ที่ TomatoTopping เป็น filler • กด OK
E21: การสร้าง AmericanPizza • สร้าง AmericanPizza กับ toppings ของ pepperoni, mozzarella และ tomato. • ผ่านการโคลนและการปรับเปลี่ยนรายละเอียดของMargheritaPizza • เลือก MargheritaPizza • เลือก clone • เลือกเพิ่มข้อจำกัดไปยัง AmericanaPizza • ทำการเพิ่ม PepperoniTopping • กด OK.
E22: การสร้าง AmericanHotPizza และ a SohoPizza • AmericanHotPizza ส่วนใหญ่จะเหมือนกับ AmericanaPizza, แต่จะมี JalapenoPepperTopping อยู่ในนั้นด้วย • SohoPizza ส่วนใหญ่จะเหมือนกับ MargheritaPizza แต่จะมีการเพิ่มOliveTopping และ ParmezanTopping
E23: การทำ subclasses ของ NamedPizza disjoint จากตัวอื่นๆ • เลือก MargheritaPizza • กด “add all siblings” ที่อยู่ใน “Disjoints widget” โดย pizzas disjoint จากแต่ละอย่าง
การใช้ reasoner • Ontology ได้อธิบายใน OWL-DL สามารถจะประมวลผลโดย reasoner. • ไปที่ owl—preference เพื่อให้มั่นใจว่า OWL-DL จะถูกเลือก • การบริการหลักจะถูกนำเสนอโดย reasoner ที่จะทดสอบว่า class หนึ่งๆเป็น subclass ของclass อื่นๆหรือไม่ • โดยจะดำเนินการทดสอบทั้งหมดของ classes ที่เป็นไปสำหรับ reasoner เพื่อคำนวณลำดับชั้นของคลาส ontology • อีกประการหนึ่งก็คือ consistency checking – เพื่อตรวจสอบว่าจะมีความเป็นไปได้ในกรณีอื่นๆ อีกหรือไม่ • โดยคลาสอาจไม่มีกรณีใดๆที่สอดคล้องกันเลย
การใช้ Racer • ในการที่ reason over the ontology ใน Protege-OWL, a DIG compliant reasoner ควรจะติดตั้งและเริ่มการดำเนินงาน • ใน tutorial นี้เราได้ใช้ Racer • Download at: http://www.racer-systems.com/products/download/index.phtml • Double click ที่ RacerPro เพื่อเริ่มการทำงานของ Racer
การร้องขอการใช้ reasoner • ต้องเริ่มต้น Racer ซึ่ง ontology สามารถที่จะส่ง reasoner เพื่อคำนวณลำดับชั้นของ classification โดยอัติโนมัติและตรวจสอบความสอดคล้องของตรรกะontology. • ในProtege ลำดับชั้นที่เราสร้างขึ้นมานั้น จะเรียกว่า asserted hierarchyการคำนวณอย่างอัติโนมัติโดยใช้ reasoner จะเรียกว่า inferred hierarchy. • ไปที่ OWL – classify taxonomy – ทำการร้องขอ reasoner • ถ้าคลาสได้รับการ reclassified ชื่อของคลาสจะปรากฏเป็น blue color ในการอ้างถึงลำดับชั้น • ไปที่ OWL – Check consistency – ทำการร้องขอ reasoner • ถ้าคลาสได้รับการค้นพบ inconsistentไอคอนจะถูกวงกลมเป็น red color. • การคำนวณลำดับชั้นของ class จะรู้จักกันในลักษณะ classifying the ontology
E24: ความสอดคล้องของ classes • ในการที่จะใช้งาน reasoner เพื่อตรวจสอบถึงความไม่สอดคล้องกันของ ontology พวกเราจะสร้างคลาส ProbeInconsistentTopping, • อันไหนที่เป็นซับคลาสของ CheeseTopping • เลือก ProbeInconsistentTopping ไปที่ asserted condition เพื่อเพิ่มชื่อคลาสเลือก VegetableTopping และกดOK. • ไปที่ OWL – เพื่อเช็คความสอดคล้อง
E25: การจัด ontology อีกครั้ง • เพื่อดู ProbeInconsistentTopping ที่ไม่สอดคล้องกัน
E26: การลบ disjoint statement • ระหว่าง CheeseTopping และ VegetableTopping เพื่อเก็นว่าเกิดอะไรขึ้น • เลือก CheeseTopping • ไปยัง Disjoint part • เลือก VegetableTopping คลิกขวาและ “Delete the selected row”. • ทำการจัดอนุวิธาน
E27: การกำหนด ontology • โดยการทำ CheeseTopping และ VegetableTopping disjoint จากตัวอื่นๆ
แหล่งข้อมูล • Protege Ontology Libraries • http://protegewiki.stanford.edu/index.php/Protege_Ontology_Library • Protege tutorial • http://www.co-ode.org/resources/tutorials/ • Protege Website • http://protege.stanford.edu/doc/users.html • http://protege.stanford.edu/