Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
45 views80 pages

SW ProtegeOWLTutorial

This document provides an overview and tutorial for using Protégé and the Web Ontology Language (OWL). It covers interface basics like creating classes and properties, as well as defining restrictions to describe class relationships. Specifically, it shows how to: 1) Create a class hierarchy for pizza and toppings with disjoint subclasses. 2) Define object properties like "hasTopping" and "hasBase" to relate individuals. 3) Add existential and universal restrictions to specify necessary and only conditions for class membership, such as that a pizza must have at least one topping and base.

Uploaded by

Muhammad Taupiq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views80 pages

SW ProtegeOWLTutorial

This document provides an overview and tutorial for using Protégé and the Web Ontology Language (OWL). It covers interface basics like creating classes and properties, as well as defining restrictions to describe class relationships. Specifically, it shows how to: 1) Create a class hierarchy for pizza and toppings with disjoint subclasses. 2) Define object properties like "hasTopping" and "hasBase" to relate individuals. 3) Add existential and universal restrictions to specify necessary and only conditions for class membership, such as that a pizza must have at least one topping and base.

Uploaded by

Muhammad Taupiq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 80

PROTG: OWL Tutorial

Acep Irham Gufroni


Semantic Web 2016

(adapted from : Presentation by the COODE and HyOntUse Projects


by Photchanan Ratanajaipan )

OWL Tutorial : Overview


Session 1: Interface basics
Session 2: Defining a vegetarian pizza
Session 3: Case Study

Page 2

Session 1: Interface Basics

Review: OWL Basics


Intro: Protg-OWL
Interface: Creating Classes
Concept: Disjointness
Interface: Creating Properties
Concept: Describing Classes
Interface: Creating Restrictions

Page 3

Review of OWL
OWL
is a W3C standard Web Ontology Language
comes in 3 flavours (lite, DL and full)
we are using OWL DL (Description Logic)
DL = decidable fragment of First Order Logic (FOL)

is generally found in RDF/XML syntax


is therefore not much fun to write by hand
So, we have tools to help us
Page 4

OWL Constructs
Person

Country
Elvis

Belgium

Holger
Paraguay
Kylie

= class (concept)

Latvia

S.Claus

China
Hai

= property (relationship)
= individual (instance)

Flipper

Animal
Rudolph

Page 5

Get Protg-OWL
Logon to Windows

1. Go to: http://protege.stanford.edu/download/registered.html
2. Download full Protg
3. Install the software

Page 6

Starting Protg-OWL
Run Protg.exe

1. Select New Project


2. Select OWL/RDF Files

Page 7

Protg OWL plugin


Protg tabs

Page 8

Protg OWL plugin: Tabs

Used in this tutorial

Changing the GUI


Populating the model
Top-level functionality
Extensions (visualisation)

Page 9

Classes Tab

Page 10

ClassesTab: Asserted Class Hierarchy


Subsumption hierarchy (superclass/subclass)
Structure as asserted by the ontology engineer

Create and Delete classes (actually subclasses!!)


Everything is a subclass of owl:Thing
Search for class
Page 11

ClassesTab: Class Editor

Page 12

ClassesTab: Class Editor


Class annotations (for class metadata)
Class name and documentation

Switch view
to show
Properties
available to
Class
Disjoints
widget

Conditions Widget
Class-specific tools (find usage etc)
Page 13

Page 14

Create Classes
Start with your empty ontology
1. Click the Create subclass button
(this is above the class hierarchy)
A new class will be created as a subclass of owl:Thing
2. Type in a new name DomainConcept over the default
(press enter updates the hierarchy)
3. Req. for later labs: document your class using the rdfs:comment field
4. Create another class called Pizza by clicking the Create sibling class
You will notice that Pizza has been created as a subclass of
DomainConcept as this was the class selected when the button was
pressed. You can also right-click any class and select Create Class
5. Create two more subclasses of DomainConcept called PizzaTopping
and PizzaBase.
Any mistakes, use the Delete Class button next to Create Class
Page 15

Disjointness
OWL assumes that classes overlap
Pizza

PizzaTopping

= individual

This means an individual could be both a Pizza and


a PizzaTopping at the same time
We want to state this is not the case

Page 16

Disjointness
If we state that classes are disjoint
Pizza

PizzaTopping

= individual

This means an individual cannot be both a Pizza


and a PizzaTopping at the same time
We must do this explicitly in the interface

Page 17

ClassesTab: Disjoints Widget


Add siblings as disjoint
Add new disjoint

List of disjoint classes

Page 18

Remove disjoint siblings

Make Classes Disjoint


Start with your existing ontology
1. Select the Pizza class
You will notice that the disjoints widget is empty
2. Click the Add all siblings button
The Add siblings to disjoints dialog pops up
3. Select the Mutually between all siblings option and OK
PizzaTopping and PizzaBase appear in the disjoints widget
4. Select the PizzaTopping class
Pizza and PizzaBase are already in the disjoints widget
5. Note that the same applies for PizzaBase

Page 19

Save Your Work


OWL = easy to make mistakes save regularly
1. Select File Save
A dialog (as shown) will pop up
2. Select a file using a file selector by clicking the button on the top right

You will notice that there are 2 files created


.pprj the project file
this just stores information about the GUI
and the workspace

.owl the OWL file


this is where your ontology is stored in
RDF/OWL format

3. Select OK

Page 20

Create PizzaToppings
Start with your existing ontology
1. Create subclasses of PizzaTopping:
CheeseTopping
VegetableTopping
MeatTopping
2. Make these subclasses all disjoint from one another
(remember to chose Mutually between all siblings when prompted)
3. Create subclasses of CheeseTopping:
MozzarellaTopping, ParmesanTopping
4. Make these subclasses all disjoint from one another
5. Create subclasses of VegetableTopping and make them disjoint:
TomatoTopping, MushroomTopping
6. Save to another file using File Save As

Page 21

What have we got?


Weve created a tree of disjoint classes
Disjoints are inherited down the tree
e.g. something that is a TomatoTopping cannot be a Pizza
because its superclass, PizzaTopping, is disjoint
from Pizza

You should now be able to select every class


(except DomainConcept) and see its siblings in the
disjoints widget

Page 22

What are we missing?


This is not a semantically rich model
Apart from is kind of and is not kind of, we currently dont
have any other information of interest
We want to say more about Pizza individuals, such as their
relationship with other individuals
We can do this with properties
Pizza

PizzaTopping

= individual

Page 23

Properties Tab

Page 24

Properties Tab: Property Browser


Properties can be in a hierarchy

Search for property


SuperProperties of the current selected
Page 25

Properties Tab: Property Browser

Delete Property

New Object Property:


Associates an individual to another individual
not used today:
- New Datatype Property (String, int etc)
- New Annotation Properties for metadata
- New SubProperty ie create under the current selection

Page 26

Create a Property
Start with your existing ontology

1. Switch to the Properties tab


There are currently no properties, so the list is blank
2. Create a new Object property using the button in the
property browser
3. Call the new Property hasTopping
4. Create another Object Property called hasBase
5. Save under a new filename

Page 27

Associating Properties with Classes

We now have two properties we want to use to


describe Pizza individuals.
To do this, we must go back to the Pizza class and
add some further information
This comes in the form of Restrictions (which are a
type of Condition)

Page 28

ClassesTab: Conditions Widget


Conditions asserted by the ontology engineer
Add different types of condition

Definition of the class (later)


Description of the class
Conditions inherited from superclasses
Page 29

Create a Restriction
Start with your existing ontology
1. Switch to the OWL Classes tab
2. Select Pizza
Notice that the conditions widget only contains one item,
DomainConcept with a Class icon.
Superclasses show up in the conditions widget in this way
3. Click the Create Restriction button
A dialog pops up that we will investigate in a minute
4. Select hasBase from the Restricted Property pane
5. Leave the Restriction type as someValuesFrom
6. Type PizzaBase in the Filler expression editor, then Click OK
A restriction has been added to the Conditions widget

Page 30

What does this mean?


We have created a restriction: hasBase PizzaBase
on Class Pizza as a necessary condition
Pizza

PizzaBase

If an individual is a member of this class, it is necessary that it has at


least one hasBase relationship with an individual from the class
PizzaBase

Every individual of the Pizza class must have at least one base from the
class PizzaBase
Page 31

What does this mean?


We have created a restriction: hasBase PizzaBase
on Class Pizza as a necessary condition
Pizza

PizzaBase

There can be no individual, that is a member of this class, that does not
have at least one hasBase relationship with an individual from the class
PizzaBase

Page 32

Restrictions Popup

Restricted Property

Restriction Type

Filler Expression
Expression
Construct
Palette

Page 33

Syntax check

Restriction Types

Existential, someValuesFrom

Some, At least one

Universal, allValuesFrom

Only

hasValue

equals x

Cardinality

Exactly n

Max Cardinality

At most n

Min Cardinality

At least n

Page 34

Another Existential Restriction


Start with your existing ontology
1. Make sure Pizza is selected
2. Create a new Existential (SomeValuesFrom) Restriction with the
hasTopping property and a filler of PizzaTopping

When entering the filler, you have 2 shortcut methods rather than typing
the entire classname:
1) enter a partial name and use Tab to
autocomplete
2) use the select Class button
on the editor palette

Page 35

Create a Universal Restriction


Start with your existing ontology
1. Create 2 disjoint subclasses of PizzaBase
called ThinAndCrispy and DeepPan
2. Create a subclass of Pizza called RealItalianPizza
3. Create a new Universal (AllValuesFrom) Restriction on RealItalianPizza
with the hasBase property and a filler of ThinAndCrispy

Page 36

What does this mean?


We have created a restriction: hasBase ThinAndCrispy
on Class RealItalianPizza as a necessary condition
RealItalianPizza

ThinAndCrispy

If an individual is a member of this class, it is necessary that it must only


have a hasBase relationship with an individual from the class
ThinAndCrispy

Page 37

What does this mean?


We have created a restriction: hasBase ThinAndCrispy
on Class RealItalianPizza as a necessary condition
DeepPan

RealItalianPizza

ThinAndCrispy

No individual of the RealItalianPizza class can have a base from a class


other than ThinAndCrispy

Page 38

Universal Warning Trivial Satisfaction


If we had not already inherited: hasBase PizzaBase
from Class Pizza the following could hold
RealItalianPizza

ThinAndCrispy

Trivially satisfied
by this individual

If an individual is a member of this class, it is necessary that it must only


have a hasBase relationship with an individual from the class
ThinAndCrispy, or no hasBase relationship at all
ie Universal Restrictions by themselves do not state at least one
Page 39

Summary
You should now be able to:
identify components of the Protg-OWL
Interface
create Primitive Classes
create Properties
create some basic Restrictions on a Class
using Existential and Universal qualifiers

Page 40

More exercises:
Create a MargheritaPizza
Start with your existing ontology

1. Create a subclass of Pizza called NamedPizza


2. Create a subclass of NamedPizza called MargheritaPizza
3. Create a restriction to say that:
Every MargheritaPizza must have at least one topping from
TomatoTopping
4. Create another restriction to say that:
Every MargheritaPizza must have at least one topping from
MozzarellaTopping

Page 41

More exercises:
Create other pizzas
Start with your existing ontology

1. Add more topping ingredients as subclasses of


PizzaTopping
Use the hierarchy, but be aware of disjoints
2. Create more subclasses of NamedPizza

3. Create a restrictions on these pizzas to describe their


ingredients
4. Save this for the next session

Page 42

OWL Tutorial: Session II

adapted from

Presentation by the COODE and


HyOntUse Projects
by
Photchanan Ratanajaipan

OWL Tutorial : Overview


Session 1: Interface basics
Session 2: Defining a vegetarian pizza

Page 44

Session 2: Vegetarian Pizza

Issue: Primitive Classes & Polyhierarchies


Advanced: Reasoning
Advanced: Creating Defined Classes
Union Classes: Covering Axioms
Example: Creating a Vegetarian Pizza
Issue: Open World Assumption
Union Classes: Closure

Page 45

Loading OWL files from scratch


Run Protg.exe

1. If youve only got an


OWL file:
Select OWL Files as the
Project Format, then Build
to select the .owl file

2. If youve got a valid project file*:


Select OWL Files as the Project Format, and then Open Other to find the .pprj
file (if youve already opened it, it will be in Open Recent)

3. Open C:\Protg_3.0_beta\examples\pizzas\pizzas2_0.owl
* ie one created on this version of Protg - the s/w gets updated once every few days, so dont
count on it unless youve created it recently safest to build from the .owl file if in doubt
Page 46

Primitive Classes

All classes in our ontology so far are Primitive


We describe primitive pizzas
Primitive Class = only Necessary Conditions
They are marked as yellow in the class hierarchy
We condone
building a
disjoint tree of
primitive
classes

Page 47

Describing Primitive Pizza Classes


Start with pizzas2_0.owl

1. Create a new pizza under NamedPizza


either choose from the menu or make it up

2. Create a new Existential (SomeValuesFrom) Restriction with


the hasTopping property and a filler from PizzaTopping (eg
HamTopping)
3. Add more Restrictions in the same way to complete the
description
each restriction is added to an intersection
so a Pizza must have toppingA and must have toppingB etc
see MargheritaPizza for an example

4. Create another pizza that has at least one meat ingredient


remember disjoints
Page 48

Polyhierarchies
By the end of this tutorial we intent to create a
VegetarianPizza
Some of our existing Pizzas should be types of
VegetarianPizza
However, they could also be types of SpicyPizza or
CheeseLoversPizza
We need to be able to give them multiple parents

Page 49

Vegetarian Pizza attempt 1


Start with pizzas2_1.owl

1. Create a new pizza called


VegetarianPizza under Pizza
make this disjoint from its siblings as we have been doing

2. Select MargheritaPizza
you will notice that it only has a single parent, NamedPizza

3. Add VegetarianPizza as a new parent using the conditions


widget Add Named Class button
notice that MargheritaPizza now occurs in 2 places in the asserted hierarchy
we have asserted that MargheritaPizza has 2 parents

Page 50

Reasoning
Wed like to be able to check the logical consistency
of our model
Wed also like to make automatic inferences about
the subsumption hierarchy. A process known as
classifying
i.e. Moving classes around in the hierarchy based on their
logical definition
Generic software capable of these tasks are known as
reasoners (although you may hear them being referred to as Classifiers)
RACER, Pellet are reasoners
Page 51

Running Racer
Run racer.exe
A cmd window will open and two service enabled
messages will appear in the ouput

NB. Alternative DIG reasoners like FaCT, Pellet can also be


used

Page 52

Running Racer
Racer is now ready for use as an http server
using a standard interface called DIG

Page 53

Running Pellet
Run pellet dig
A cmd window will open, pellet is now ready for use
as an http server using a standard interface called
DIG

Page 54

You can set the reasoner URL from


Preferences setting

Page 55

Classifying
Classify taxonomy (and check consistency)
Compute inferred types (for individuals)

Just check consistency (for efficiency)

Page 56

Reasoning about our Pizzas


Start with pizzas2_2.owl

1. Classify your ontology


You will see an inferred hierarchy appear, which will
show any movement of classes in the hierarchy
You will also see a results window appear at the bottom
of the screen which describes the results of the reasoner

MargheritaPizza turns out to be


inconsistent why?

Page 57

Why is MargheritaPizza inconsistent?


We are asserting that a MargheritaPizza is a
subclass of two classes we have stated are disjoint
The disjoint means nothing can be a NamedPizza
and a VegetarianPizza at the same time
This means that the class of MargheritaPizzas can
never contain any individuals
The class is therefore inconsistent

Page 58

Attempting again
Start with your current ontology

1. Close the inferred hierarchy


and classification results pane
2. Remove the disjoint between VegetarianPizza and
its siblings
When prompted, choose to remove only between this class and its siblings

3. Re-Classify your ontology


This should now be accepted by the reasoner with no inconsistencies

Page 59

Asserted Polyhierarchies
We believe asserting polyhierarchies is bad
We lose some encapsulation of knowledge
Difficult to maintain

let the reasoner do it!


Page 60

Defined Classes
Have a definition. That is at least one Necessary
and Sufficient condition
Are marked in orange in the interface
Classes, all of whose individuals satisfy this
definition, can be inferred to be subclasses
Reasoners can perform this inference

Page 61

Describing a MeatyPizza
Start with pizzas2_3.owl, close the reasoner panes

1. Create a subclass of Pizza called MeatyPizza


Dont put in the disjoints or youll get the same problems as before
In general, defined classes are not disjoint

2. Add a restriction to say:


Every MeatyPizza must have at least one meat
topping
3. Classify your ontology
What happens?

Page 62

Defining a MeatyPizza
Start with pizzas2_4.owl, close the reasoner panes

1. Click and drag your hasTopping MeatTopping restriction


from Necessary to Necessary & Sufficient
The MeatyPizza class now turns orange, denoting that it is now a defined class

2. Click and drag the Pizza Superclass from Necessary to


Necessary & Sufficient
Make sure when you release you are on top of the existing restriction otherwise
you will get 2 sets of conditions.
You should have a single orange
icon on the right stretching across
both conditions like this

3. Classify your ontology


What happens?
Page 63

Reasoner Classification
The reasoner has been able to infer that anything
that is a Pizza that has at least one topping from
MeatTopping is a MeatyPizza
Therefore, classes fitting this
definition are found to be
subclasses of MeatyPizza, or are
subsumed by MeatyPizza
The inferred hierarchy is updated
to reflect this and moved classes
are highlighted in blue

Page 64

How do we Define a Vegetarian Pizza?


Nasty
Define in words?
a pizza with only vegetarian toppings?
a pizza with no meat (or fish) toppings?
a pizza that is not a MeatyPizza?

More than one way to model this

Page 65

Defining a Vegetarian Topping


Start with pizzas2_5.owl
1. Create a subclass of PizzaTopping
called VegetarianTopping
2. Click Create New Expression in the Conditions Widget
Type in or select each of the top level PizzaToppings that are not meat
or fish (ie DairyTopping, FruitTopping etc) and between each, type the
word or
the or will be translated into a union symbol

3. Press Return when finished


you have created an anonymous class described by the expression

4. Make this a defined class by moving both conditions from the


Necessary to the Necessary & Sufficient conditions
5. Classify your ontology

Page 66

Class Constructors: Union

AKA disjunction
This OR That OR TheOther
(This That TheOther)
Set theory
Commonly used for:
Covering axioms (like VegetarianTopping)
Closure

Page 67

Covering Axioms

Covered class that to which the condition is added


Covering classes those in the union expression
A covering axiom in the Necessary & Sufficient Conditions means:
the covered class cannot contain any instances from a class other than
one of the covering classes

Gender
Gender Female

Female

Page 68

Male

Male

In this example, the class Gender is covered


by Male or Female
All individuals in Gender must be individuals
from Male or Female
There are no other types of Gender

Vegetarian Pizza attempt 2


Start with pizzas2_6.owl

1. Select MargheritaPizza and remove


VegetarianPizza from its superclasses
2. Select VegetarianPizza and create a restriction to say that it
only has toppings from VegetarianTopping
3. Make this a defined class by moving all conditions from
Necessary to Necessary & Sufficient
Make sure when you release you are on top of the existing restriction otherwise
you will get 2 sets of conditions.
You should have a single orange icon on the right stretching across both
conditions

4. Classify your ontology


What happens?
Page 69

Open World Assumption


The reasoner does not have enough information to
classify pizzas under VegetarianPizza
Typically several Existential restrictions on a single
property with different fillers like primitive pizzas
Existential should be paraphrased by amongst
other things
Must state that a description is complete
We need closure for the given property
This is in the form of a Universal Restriction with a
Union of the other fillers using that property
Page 70

Closure
Example: MargheritaPizza
All MargheritaPizzas must have:
at least 1 topping from MozzarellaTopping and
at least 1 topping from TomatoTopping and
only toppings from MozzarellaTopping or TomatoTopping

The last part is paraphrased into


no other toppings
The union closes the hasTopping property on
MargheritaPizza

Page 71

Closing Pizza Descriptions


Start with pizzas2_7.owl

1. Select MargheritaPizza
2. Create a Universal Restriction on the hasTopping property
with a filler of TomatoTopping
MozzarellaTopping
Remember, you can type or to achieve this, or you can use the expression
palette

3. Close your other pizzas


Each time you need to create a filler with the union of all the classes used on the
hasTopping property (ie all the toppings used on that pizza)

4. Classify your ontology


Finally, the defined class VegetarianPizza should subsume any classes that only
have vegetarian toppings

Page 72

Summary
You should now be able to:
Use Defined Classes allow a polyhierarchy to
be computed
Classify and check consistency using a
Reasoner
Create Covering Axioms
Close Class Descriptions to cope with Open
World Reasoning
Page 73

Viewing our Hierarchy Graphically

Page 74

OWLViz Tab
View Asserted Model

View Inferred Model

Polyhierarchy
tangle

Page 75

Your Pizza Finder


Once you have a pizza ontology you are
happy with, you can plug it in to the
PizzaFinder
Instructions available on line at

Page 76

Other Exercises:
Create a ProteinLoversPizza
Start with pizzas2_8.owl

Create a new subclass of Pizza


Define this as:
Any Pizza that has at least one MeatTopping and at least
one CheeseTopping and at least one FishTopping

If you dont have any pizzas that will classify under


this, create one which should (SicilianaPizza should)
Classify to check that it works

Page 77

Other Exercises:
Define RealItalianPizza
Start with pizzas2_9.owl

Convert RealItalianPizza to a defined class


Add information to your pizzas to allow some of
them to classify under this one
Classify
remember to check your disjoint if you have problems

Page 78

Others
Show RDF/XML source code
OWLViz Tab
Protg OWL Reasoner API
http://protege.stanford.edu/plugins/owl/api/Reasoner
APIExamples.html

Ontology Development
GiftMe The Gift Recommendation System

Page 79

Thank You
Feedback on tutorial appreciated
Original of PowerPoint slides available from
- http://www.cs.man.ac.uk/~drummond/cs646
Software / resources / community at:
http://www.co-ode.org/
http://protege.stanford.edu/
Page 80

You might also like