Protege Tutorial

Download Report

Transcript Protege Tutorial

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/gettingstarted.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 มันสามารถที่จะเปลี่ยนแปลงได้ อย่างไร
1. เลือก class Pizza
2. กดปุ่ ม “add siblings” บน disjoint classes widget
3. เพิ่ม PizzaBase and PizzaTopping
4. เลือก class PizzaTopping,
5. เพิ่ม 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
• FunctionalProperty vs InverseFunctionalProperty
domain
range
Functional
Property
For a given
domain
Range is
unique
InverseFunctional
Property
Domain is
unique
For a given
range
example
hasFather: A hasFather
B, A hasFather C B=C
hasID: A hasID B, C
hasID B A=C
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
Add a restriction to Pizza
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 ในProtegeOWL, a DIG compliant reasoner ควรที่จะ installed
และ started.
• ในการสอนนี ้เราจะใช้ Racer
– Download ที่ : http://www.racersystems.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.
Invoke the reasoner
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/Proteg
e_Ontology_Library
• Protege tutorial
– http://www.co-ode.org/resources/tutorials/
• Protege Website
– http://protege.stanford.edu/doc/users.html
– http://protege.stanford.edu/