470 likes | 797 Views
Protege Tutorial. Based on ProtegeOWLTutorial at protege website. อะไรคือ protege. Protégé เป็นสิ่งที่เป็นอิสระ เป็นพื้นฐานของการสร้างรูปแบบ domain และเป็ นโปรแกรมประยุกต์ใช้ฐานความรู้ด้วย ontologies
E N D
Protege Tutorial Based on ProtegeOWLTutorial at protege website
อะไรคือ protege • Protégé เป็นสิ่งที่เป็นอิสระ เป็นพื้นฐานของการสร้างรูปแบบ domain และเป็นโปรแกรมประยุกต์ใช้ฐานความรู้ด้วย ontologies • Ontologies range ตั้งแต่เรื่องของอนุกรมวิธาน การจำแนกประเภท โครงสร้างของฐานข้อมูลเป็นเรื่องที่สามารถเห็นได้อย่างง่ายๆ • ในปัจจุบัน Ontologies เป็นศูนย์กลางของโปรแกรมประยุกต์หลายโปรแกรมด้วยกัน เช่น โปรแกรมความรู้ทางวิทยาศาสตร์ โปรแกรมในระบบการจัดการและการรวบรวมข้อมูล electronic commerce และงานบริการพวก web services
Install Protege • ไปที่http://protege.stanford.edu/doc/owl/getting-started.htmlเพื่อdownload protege (version 3.x) • Protege OWL editor เป็นสิ่งที่สร้างขึ้นในรูปแบบของ full installation of protegeตลอดขั้นตอนของการ install ให้เลือกตัวเลือกที่เป็น “Basic+OWL” • สามารถศึกษารายละเอียดเพิ่มเติมได้ที่ http://protege.stanford.edu/doc/owl/getting-started.html
Protege รูปแบบของ ontologiesมี 2 รูปแบบหลักๆ คือ • Frame-based • OWL • แต่ละแบบจะมี user interface เป็นของตัวเอง Protege Frames editor : ช่วยให้ผู้ใช้สามารถที่จะสร้างและใช้ ontologiesที่เป็น frame-based ได้ และยังสอดคล้องกับ with OKBC (Open Knowledge Base Connectivity Protocol). ด้วย คือ • Classes • Slots for properties and relationships • Instances for class Protege OWL editor : ช่วยให้ผู้ใช้สามารถที่จะสร้าง ontologiesสำหรับ Semantic Webโดยเฉพาะอย่างยิ่งใน OWL เช่น • Classes • Properties • Instances • reasoning
Building an OWL Ontology • E2:เป็นการสร้าง OWL project ใหม่ เริ่มจาก • เริ่มprotege • File – New Project – OWL/RDF files – Ontology URI (http://www.pizza.com/ontologies/pizza.owl) – OWL DL – Properties View • Protege-OWL project ใหม่ที่เป็นไฟล์เปล่าจะถูกสร้างขึ้นมา • Saveมันไว้ที่ local file ชื่อ pizza.owl
Named Classes • ไปที่ OWL Classes tab • ใน class ว่าง 3 class จะประกอบด้วย class หนึ่งที่เรียกว่า owl:Thing : จะเป็น superclassของทุกสิ่ง • E3: สร้างsubclasses Pizza, PizzaTopping and PizzaBase. พวกนี้เป็นsubclasses of owl:Thing. • Naming convention หรือการตั้งชื่อ • ไม่มี naming convention พิเศษ • ต้องมีความถูกต้องเหมาะสม
Disjoint classes • E4: เป็นวิธีการที่จะบอกว่าPizza, PizzaTopping and PizzaBase classes มันสามารถที่จะเปลี่ยนแปลงได้อย่างไร • เลือก class Pizza • กดปุ่ม“add siblings” บน disjoint classes widget • เพิ่ม PizzaBaseand PizzaTopping • เลือก class PizzaTopping, • เพิ่มPizza and PizzaBaseลงไปที่ disjoint class
E5: สร้าง group of classes • สร้างThinAndCrisyBaseและDeepPanBaseที่ subclassesของPizzaBase, และแต่ละอันนั้นเป็น disjointed. • เลือกPizzaBase, คลิ๊กขวา, เลือก “create subclasses” • ตามด้วย wizard เพื่อที่จะสร้าง 2 disjoint classes นี้. • มันสามารถช่วยให้คุณประหยัดเวลาได้มากเมื่อคุณต้องการที่จะสร้างdisjoint classessหลายๆอัน.
E6: สร้างsubclasses ของPizzaTopping • เลือกPizzaTopping, • สร้างsubclaessesชื่อMeatTopping, VegetableTopping, CheeseToppingและSeafoodTopping. ต้องมันใจว่าclasses นี้จะdisjoint กับclass อื่นๆ • เลือก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 and PrawnTopping
OWL Properties • คุณสมบัติของOWL เป็นการแสดงความสัมพันธ์ของวัตถุ 2 สิ่ง • ซึ่งมีคุณสมบัติที่สำคัญอยู่ 2 คุณสมบัติหลักๆ คือ: • Object properties: เป็นการเชื่อมโยงระหว่างวัตถุกับวัตถุ • datatype properties: เชื่อมโยงระหว่างวัตุกับXML Schema datatypeหรือrdf:literal • OWL ยังมีคุณสมบัติอื่นๆอีก- Annotation propertiesใช้ในการเพิ่มคำอธิบายคุณสมบัติลงไปในแต่ละclasses , individuals, and properties
E7: การสร้าง object property • Switch ไปยัง “Properties” tab, • ใช้ปุ่ม “Create Object Property” เพื่อสร้างobject property ใหม่ • เปลี่ยนชื่อเป็น hasIngredient
E8: สร้าง sub-properties • เลือกhasIngredient property • เพิ่มTopping และhasBaseที่subproperties
Inverse Properties • แต่ละ object property อาจจะมี inverse property ที่สอดคล้องกัน • เช่นบางpropertyจะเชื่อมโยงindividual a กับ individual b, ดังนั้น inverse property ของมันจะเชื่อม individual b to individual a.
E9: สร้าง inverse properties • สร้าง object property ใหม่ที่ชื่อว่าisIngredientOf • กดปุ่ม “Set inverse property” • เลือก “hasIngredient” • จากนั้น inverse relation จะถูก set up. • เลือกhasBase • สร้าง isBaseOfที่เป็น inverse property ของhasBase • isBaseOfเป็น subpropertyของ isIngredientOf, why? • เลือกhasTopping • สร้างisToppingOfที่เป็น inverse property. • isToppingOfเป็นsubpropertyของisIngredientOf, why?
Functional Properties • หากpropertyเป็นหน่วยที่สามารถทำงานได้อย่างอิสระ, มันจะสามารถมีเพียงหนึ่งเดียวเท่านั้นที่จะสัมพันธ์กับpropertyนั้นได้ • สำหรับ given domain, range จะต้องไม่เหมือนใคร • Functional properties รู้จักกันในชื่อ single valued properties.
Inverse Functional Properties • ถ้า propertyเป็น inverse functional, ดังนั้น inverse propertyของมันก็คือ functional. • สำหรับ given range, domain ต้องไม่เหมือนใคร
Functional vs. inverse functional properties • FunctionalPropertyvsInverseFunctionalProperty
Transitive Properties • ถ้าproperty เป็นแบบ transitive, และ property นั้นเชื่อมindividual a ต่อ individual b, และindividual b ต่อindividual cด้วย, ดังนั้น เราจึงสามารถอนุมานได้ว่าindividual a สัมพันธ์กับindividual c ผ่านทาง property P.
Symmetric Properties • ถ้า property P เป็นแบบ symmetric, และ property นั้นเชื่อมระหว่าง individual a ต่อ individual b, ดังนั้นindividual b ก็จะเชื่อมกับ individual a ผ่านทางproperty P. ด้วย
E10: ทำ hasIngredient property transitive • เลือก hasIngredient property • Tick the transitive tick box • เลือก isIngredientOf property, ดูให้แน่ใจว่า transitive tick box ถูก ticked แล้ว
E11: ทำ hasBase property functional • เลือก hasBase property • Tick the “functional” tick box • OWL-DL ไม่ได้รับการยอมรับให้มี datatype properties เป็น transitive, symmetric หรือมี inverse properties.
Property domains and ranges • Properties เชื่อม individuals จาก domain ไปยังindividuals จาก range. • OWL ใช้ domain และ range ที่ axioms ในreasoning.
E12: Specify the range of hasTopping • เลือกhasTopping • กด range button • เลือกPizzaTopping • กด OK button • PizzaToppingควรจะแสดงไว้ใน range list. • เมื่อ class หลายๆ class ถูกเพิ่มเข้าไปใน range, มันจะแสดงการทำงานที่สัมพันธ์กันของทุกclasses.
E13: Specify Pizza as the domain of the hasTopping property • เลือกhasTopping property • กด add domain button • เลือก Pizza • กด OK • Pizza จะแสดงใน domain list. • เมื่อ class หลายๆ class ถูกเพิ่มเข้าไปใน domain, มันจะแสดงการทำงานที่สัมพันธ์กันของclasses นี้
E14: Specify the domain and range for the isToppingOf property • เลือก isToppingOf property • ตั้งค่า domain ของ isToppingOf property ไปยังPizzaTopping • ตั้งค่า range ของ isToppingOf property ไปยัง Pizza.
E15: Specify the domain and range for the hasBase property and its inverse property isBaseOf • เลือก hasBase property • ระบุ domain ชื่อ Pizza • ระบุ range ชื่อPizzaBase • เลือก isBaseOf property • ระบุ domain ชื่อPizzaBase • ระบุ range ชื่อ Pizza
Property restrictions • In OWL, properties จะถูกนำมาใช้ในการสร้างข้อจำกัด. • ข้อจำกัดจะใช้เพื่อการจำกัด individual ที่เป็นของclass • ข้อจำกัด 3 ข้อคือ: • Quantifier restrictions หรือข้อจำกัดด้านจำนวน • Existential quantifier ( ) • Universal quantifier ( ) • Cardinality restrictions หรือข้อจำกัดด้านความสำคัญ • hasValue restrictions
E16: Add a restriction to Pizza • เพิ่มข้อจำกัดไปยัง Pizza ที่ระบุไว้ว่าPizza ต้องมี PizzaBase • เลือก Pizza • เลือก Necessary header เพื่อที่จะสร้าง necessary condition • เลือก restriction wizard • เลือกhasBase as restricted property • เลือกsomeValueFrom as restriction • วางPizzaBaseไปยัง filler
E18: Creating different kinds of Pizzas • สร้าง subclassของ Pizzaชื่อ NamedPizza, และsubclass ของNamedPizzaชื่อMargheritaPizza. • เพิ่ม comment ไปยังMargheritaPizzaว่าเป็น pizza ที่มีเพียง Mozarella and Tomato toppings
E19: Adding restrictions to MargheritaPizza • การระบุว่า MargheritaPizzaมีอย่างน้อย 1 MozzarellaTopping. • เลือกMargheritaPizza • ไปยัง “Asserted Conditions”, สร้างข้อจำกัดใหม่ • เลือกsomeValueFrom • เลือก hasToppingที่เป็น property ที่ต้องการให้มีข้อจำกัด • Enter MozzarellaToppingไปที่ filler • กด OK button
E20: Adding restrictions to MargheritaPizza • การระบุว่า MargheritaPizzaมีอย่างน้อย1 toppngคือTomatoTopping. • เลือกMargheritaPizza • ไปยัง“Asserted Conditions”, สร้างข้อจำกัดใหม่ • เลือกsomeValueFrom • เลือกhasToppingที่เป็น property ที่ต้องการให้มีข้อจำกัด • Enter TomatoToppingไปที่ filler • กด OK button
E21: Create AmericanPizza • สร้าง AmericanPizzaที่มี toppings เป็น pepperoni, mozzarella และ tomato. • มีสิ่งที่เหมือนและผ่านการปรับปรุงมาจาก ข้อจำกัดของMargheritaPizza. • เลือกMargheritaPizza • เลือก create clone • เพิ่มข้อจำกัดเพิ่มเติมไปยัง AmericanaPizza • Adding PepperoniTopping • กด OK.
E22: Create an AmericanHotPizza and a SohoPizza • AmericanHotPizzaค่อนข้างที่จะเหมือนกับAmericanaPizzaแต่มันมี JalapenoPepperToppingด้วย • SohoPizza is ค่อนข้างที่จะเหมือนกับ MargheritaPizza, แต่มีการเพิ่ม OliveToppingและParmezanToppingเข้ามาด้วย
E23: Make subclasses of NamedPizza disjoint from each other • เลือกMargheritaPizza • กด“add all siblings” button บน“Disjoints widget” เพื่อสร้าง pizzas disjoint จากแต่ละอัน
Using a reasoner • Ontology ถูกอธิบายไว้ใน OWL-DL สามารถที่จะประมวลผลได้ด้วย reasoner. • ไปที่ owl—การตั้งค่าต้องมั่นใจว่าOWL-DL เป็นสิ่งที่ถูกเลือกแล้ว • บริการหลักที่ถูกนำเสนอโดยreasonerเป็นสิ่งที่ใช้ในการทดสอบ ว่าเป็นหนึ่งใน subclass อื่นหรือไม่ • โดยการดำเนินการทดสอบในทุก classes นั้น มันเป็นไปได้ว่า reasoner จะคำนวณ inferred ontology class hierarchy ได้ • reasoning service อื่นๆเป็นconsistency checking – เพื่อที่จะตรวจสอบว่ามันจะสามารถที่จะเป็นไปได้หรือไม่ในกรณีต่างๆ • A class จะถูกตีความว่าไม่สอดคล้องกัน หากมันไม่สามารถที่จะเป็นไปได้สักกรณี
Using Racer • เพื่อที่จะอธิบายความหมายเหนือontology ในProtege-OWL, a DIG compliant reasonerควรที่จะ installed และ started. • ในการสอนนี้เราจะใช้Racer • Download ที่ : http://www.racer-systems.com/products/download/index.phtml • Double click RacerProเพื่อ start Racer.
Invoking the reasoner • การเริ่ม Racer, ontology สามารถส่งไปยัง Reasoner เพื่อที่จะคำนวณแยกชั้นโดยอัตโนมัติและตรวจสอบ logical consistency ของ ontologyด้วย • ในProtege, ข้อจำกัด class ของผู้ใช้จะถูกเรียกว่า asserted hierarchy. การคำนวณ classโดยอัตโนมัติด้วย reasonerจะถูกเรียกว่า inferred hierarchy. • ไปที่ OWL – classify taxonomy – เพื่อที่จะเรียก reasoner • ถ้า class ได้รับการจัดประเภทใหม่, ชื่อ class จะแสดงเป็นสีฟ้า ในลำดับ class ที่ถูกอ้างถึง • ไปที่ OWL – Check consistency – เพื่อที่จะเรียก reasoner • หาก class ถูกพบว่าไม่สอดคล้องกัน, icon ของมันจะถูกวงด้วยสีแดง • การคำนวณ inferred class hierarchy หรือที่รู้จักกันในชื่อของ classifying the ontology.
E24: Inconsistent classes • เพื่อแสดงถึงการใช้งานของ Reasoner ในการตรวจสอบความไม่สอดคล้องกันใน ontology ที่เราจะสร้าง ProbeInconsistentTopping ชั้นเรียนWhich is the subclass of CheeseTopping • เลือก ProbeInconsistentTopping ไปที่สภาพการยืนยันที่จะเพิ่มชั้นเรียนที่มีชื่อให้เลือก VegetableTopping แล้วกดตกลง • ไปที่OWL – ตรวจสอบความสอดคล้อง
E25: Classify the ontology again • เพื่อที่จะดูว่าProbeInconsistentToppingจะไม่สอดคล้องกัน
E26: Remove the disjoint statement • ระหว่างCheeseToppingและVegetableToppingเพื่อดูว่าเกิดอะไรขึ้น • เลือกCheeseTopping • ไปที่ Disjoint part • เลือกVegetableTopping, คลิกขวาและ “Delete the selected row”. • จัดอนุกรมวิธาน • ความไม่สอดคล้องกันนั้นไม่มีอยู่แล้ว
E27: Fix the ontology • โดยการทำให้ CheeseTopping และ VegetableTopping เคลื่อนจากแต่ละอื่น ๆ
แหล่งที่มาของข้อมูล • 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/