Você está na página 1de 83

1 of 83

Um guia prtico de
construo de ontologias
OWL
plug-in Protege-OWL 3.4
Original traduzido e adaptado:
HORRIDGE, M. et al. A Practical Guide To Building OWL Ontologies using the Protege-OWL
plugin and CO-ODE Tools, Edition 1.0. (2004). Available from Internet:
<http://www.co-ode.org/resources/tutorials/ProtegeOWLTutorial.pdf>. Access: 20 June
2005.

Referncia da traduo:
HORRIDGE, M. et al. Um guia prtico para a construo de ontologias OWL, plugin
Protg-OWL 3.4. Trad. SOARES, D.R.; ALMEIDA, M.B. Disponvel na Internet
<www.eci.ufmg.br/mba/>, 2008. 100p. (Original ingls).

Julho de 2008

2 of 83

SUMRIO
1.INTRODUO
1.1)CONVENES
2.REQUISITOS
3.O QUE SO AS ONTOLOGIAS OWL?
3.1)AS TRS ESPCIES DE OWL
3.1.1)OWL-Lite
3.1.2)OWL-DL
3.1.3)OWL-Full
3.1.4)A escolha da sub-linguagem
3.2)COMPONENTES DA ONTOLOGIA OWL
3.2.1) Individuals (Indivduos)
3.2.2)Properties (Propriedades)
3.2.3)Classes (Classes)
4.CONSTRUO DE UMA ONTOLOGIA OWL
4.1)CRIAO DE CLASSES
4.2)CLASSES DISJUNTAS
4.3)USO DO ASSISTENTE OWL PARA CRIAR CLASSES
4.4)PROPRIEDADES OWL
4.5)PROPRIEDADES INVERSAS
4.6)CARACTERSTICAS DAS PROPRIEDADES OWL
4.6.1)Propriedades funcionais
4.6.2)Propriedades funcionais inversas
4.6.3)Propriedades transitivas
4.6.4)Propriedades simtricas
4.7)DOMAINS (DOMNIOS) E RANGES (ESCOPO) DE UMA PROPRIEDADE
4.8)DESCRIO E DEFINIO DE CLASSES
4.8.1) Restries de propriedades
4.8.2)Restries existenciais
4.9)USO DE UM MI-MECANISMO DE INFERNCIA (REASONER)
4.9.1)Determinao a sub-linguagem OWL
4.9.2)Uso do RACER
4.9.3)Funcionamento do MI
4.9.4)Classes inconsistentes
4.10)CONDIES NECESSRIAS E SUFICIENTES (CLASSES PRIMITIVAS E DEFINIDAS)
4.10.1)Classes Primitivas e definidas
4.11)CLASSIFICAO AUTOMTICA
4.11.1)Resultados da classificao
4.12)RESTRIES UNIVERSAIS
4.13)CLASSIFICAO AUTOMTICA E OWR-OPEN WORLD REASONING (RACIOCNIO DE MUNDO ABERTO)
4.13.1)Axiomas de fechamento
4.14)PARTIES DE VALOR
4.14.1)Axiomas de Cobertura
4.15)O PROPERTY MATRIX WIZARD (ASSISTENTE MATRIZ DE PROPRIEDADE)
4.16)RESTRIES DE CARDINALIDADE
5. MAIS SOBRE OWR-OPEN WORLD REASONING (RACIOCNIO DE MUNDO ABERTO)
6.OUTRAS CONSTRUES OWL NO PROTEGE-OWL
6.1)CRIAO DE INDIVDUOS
6.2)RESTRIES HASVALUE (TEMVALOR)
6.3)CLASSES ENUMERADAS
6.4)PROPRIEDADES DE ANOTAO (ANNOTATION PROPERTIES)
6.5)CONJUNTOS MLTIPLOS DE CONDIES NECESSRIAS E SUFICIENTES
7.OUTROS TPICOS

3 of 83

7.1)PERFIL DA LINGUAGEM
7.2)NAMESPACES E IMPORTAO DE ONTOLOGIAS
7.2.1)Namespaces
7.2.2)Criao e edio de namespaces no Protege-OWL
7.2.3)Importao de ontologias em OWL
7.2.4)Importao de ontologias no Protege-OWL
7.2.5)Importao da ontologia Dublin Core
7.2.6)Protege-OWL Metadata Ontology (Ontologia de metadados do Protege-OWL)
7.3)TESTES EM ONTOLOGIAS
7.4) TODO LIST (LISTA DE TAREFAS A FAZER)
APNDICE A
A.1 RESTRIES DE QUANTIFICAO
A.1.1 someValuesFrom Restries Existenciais
A.1.2 allValuesFrom Restries Universais
A.1.3 Combinao de restries Existenciais e Universais na descrio de classes
A.2 RESTRIES HASVALUE
A.3 RESTRIES DE CARDINALIDADE
A.3.1 Restries de cardinalidade mnima
A.3.2 Restries de cardinalidade mxima
A.3.3 Restries de cardinalidade exata
A.3.4 UNA-Unique Name Assumption (Presuno de nome nico) e cardinalidades
APNDICE B
B.1 CLASSES INTERSEO ()
B.2 CLASSES UNIO ()

4 of 83

LISTA DE EXERCCIOS
Exerccio 1: faa o seguinte:
Exerccio 2: criar um exemplo de projeto
Exerccio 3: criao das classes pizza, pizzatopping e pizzabase
Exerccio 4: tornar disjuntas as classes pizza, pizzatopping e pizzabase
Exerccio 5: use o assistente create multiple classes (criar mltiplas classes) para criar thinandcrispy (finaecrocante) e
deeppan (basegrossa) como subclasses de pizzabase
Exerccio 6: criao de recheios para pizzas
Exerccio 7: criar uma propriedade de objeto chamada hasingredient
Exerccio 8: criao de subpropriedades de hasingredient: hastopping e hasbase
Exerccio 9: criao de propriedades inversas
Exerccio 10: tornar hasingredient (temingrediente) uma propriedade transitiva
Exerccio 11: tornar funcional a propriedade hasbase
Exerccio 12: especificar range (escopo) da relao hastopping
Exerccio 13: especificar domnio da propriedade hastopping como pizza
Exerccio 14: especificar domain (domnio) e range (escopo para istoppingof
Exerccio 15: especifique domain (domnio) e range (escopo) para a propriedade hasbase (tembase) e a sua propriedade
inversa isbaseof (basede)
Exerccio 16: adicionar restrio a pizza de forma que pizza tenha uma pizzabase
Exerccio 17: adicione restrio a pizza especificando que pizza deve ter uma pizzabase
Exerccio 18: criar uma subclasse de pizza chamada namedpizza, e uma subclasse de namedpizza chamada margheritapizza
Exerccio 19: criar uma restrio existencial (E) para a classe margheritapizza, a propriedade hastopping e o filler
mozzarellatopping, para que uma margheritapizza tenha pelo menos um mozzarellatopping.
Exerccio 20: criar uma restrio existencial (E) para a classe margheritapizza, a propriedade hastopping e o filler
tomatotopping, para que uma margheritapizza tenha pelo menos um tomatotopping
Exerccio 21: clonar e modificar a descrio de margheritapizza
Exerccio 22: criar classes americanhotpizza e sohopizza
Exerccio 23: tornar disjuntas as subclasses de namedpizza.
Exerccio 24: adicionar uma probe class denominada probeinconsistenttopping como subclasse de cheesetopping e de
vegetable
Exerccio 25: verificao de inconsistncia de probeinconsistenttopping
Exerccio 26: remoo de declarao disjunta de cheesetopping e vegetabletopping
Exerccio 27: correo da ontologia com a disjuno entre cheesetopping e vegetable
Exerccio 28: criao de subclasse de pizza chamada cheesypizza, com pelo menos um recheio que um tipo de
cheesetopping
Exerccio 29: converso de condies necessrias de cheesypizza em condies necessrias e suficientes
Exerccio 30: uso do mi para computar automaticamente a subclasse de cheesypizza
Exerccio 31: criao de classe para descrever vegetarianpizza (pizza vegetariana)
Exerccio 32: converso das condies necessrias de vegetarianpizza em condies necessrias e suficientes
Exerccio 33: uso do mi para classificar a ontologia
Exerccio 34: adio de axioma de fechamento propriedade hastopping para margheritapizza
Exerccio 35: adicio de axioma de fechamento a propriedade hastopping para sohopizza
Exerccio 36: criao automatica de axioma de fechamento na propriedade hastopping para americanapizza
Exerccio 37: criao automatica de axioma de fechamento para a propriedade hastopping de americanhotpizza
Exerccio 38: usao do mi para classificar a ontologia
Exerccio 39: criao de um valuepartition para representar o spiciness ("tanto"de pimenta) em recheios de pizza
Exerccio 40: uso do assistente matriz de propriedade para especificar o tempero de recheios de pizza
Exerccio 41: criao de uma classe spicypizza como uma subclasse de pizza
Exerccio 42: uso do mi para classificar a ontologia
Exerccio 43: criao de interestingpizza (pizza interessante) com pelo menos 3 recheios.
Exerccio 44: uso do mi para classificar a ontologia
Exerccio 45: criao de nonvegetarianpizza , subclasse de pizza e disjunta de vegetarianpizza
Exerccio 46: nonvegetarianpizza complemento de vegetarianpizza
Exerccio 47: adico de pizza a condies necessrias e suficientes nonvegetarianpizza
Exerccio 48: uso do mi para classificar a ontologia
Exerccio 49: criao de subclasse de namedpizza com recheio de mozzarella
Exerccio 50: uso do mi para classificar a ontologia
Exerccio 51: criao da classe country (pas) e insero de indivduos
Exerccio 52: criao da restrio hasvalue para especificar que mozzarellatopping tem italy como pas de origem.

5 of 83

Exerccio 53: converso da classe country em uma classe enumerada


Exerccio 54: criao de classe para definir um triangle (tringulo) usando mltiplos conjuntos de condies necessrias e
suficientes
Exerccio 55: criao de namespace e pre xo para se referir a classes, a propriedades e a indivduos na ontologia de vinhos
Exerccio 56: importao da ontologia koala para outra ontologia
Exerccio 57: especificao de local alternativo para uma ontologia importada
Exerccio 58: importar a ontologia dublin core meta data elements

6 of 83

1.Introduo
O presente guia descreve a criao de ontologias utilizando o editor de ontologias Protege associado ao
Plug-in Protege-OWL. Apresenta-se brevemente a linguagem OWL-Ontology Web Language, uma
linguagem baseada em Lgica Descritiva, e enfatiza-se a construo de ontologias OWL-DL. Utiliza-se um
MI-Mecanismo de Inferncia (reasoner) baseado em Lgica Descritiva para verificar a consistncia da
ontologia e para computar automaticamente a hierarquia de classes. Alm disso, descrevem-se constructos
OWL, tais como a restrio temValor e Classes Enumeradas, descrevem-se namespaces, importao de
ontologias, caractersticas e funcionalidades da ferramenta Protege-OWL.
1.1)Convenes
Os exerccios so apresentados da seguinte forma:

Exerccio 1: Faa o seguinte:


1. Faa isso;
2. Em seguida, faa isso
3. Em seguida, faa isso.
Outras convenes utilizadas:
DICA, SIGNIFICADO, ATENO, OBSERVAO, VOCABULRIO

2.Requisitos
Para seguir este tutorial necessrio instalar no mnimo o Protege 3.4, o plug-in Protege-OWL e tambm o
plug-in OWL-Wizards, disponveis na Web em http://protege.stanford.edu/.
Recomenda-se (opcional) o plug-in OWLViz, que permite visualizar as declaraes e inferncias obtidas. Os
passos para instalao so documentados. Finalmente, necessrio ter um DIG-Description Logics
Implementaters Group compatvel com o MI instalado, o que permite computar as relaes de subsuno
entre as classes e detectar inconsistncias. Recomenda-se o uso do MI denominado RACER, o qual est
disponvel na Internet.

7 of 83

3.O que so as ontologias OWL?


Ontologias so utilizadas para capturar conhecimento sobre um domnio de interesse. Uma ontologia
descreve os conceitos de um domnio e tambm as relaes que existem entre esses conceitos. As diversas
linguagens para construo de ontologias fornecem diferentes funcionalidades. O padro mais recente de
linguagens para ontologias o OWL, desenvolvido no mbito do W3C-World Wide Web Consortium. O
Protege-OWL possui um conjunto de operadores (por exemplo, o AND, o OR e o NOT) e baseado em
um modelo lgico que torna possvel definir conceitos da forma como so descritos. Conceitos complexos
podem ser constitudos a partir de definies de conceitos simples. Alm disso, o modelo lgico permite a
utilizao de um MI, o qual pode verificar se as declaraes e as definies da ontologia so mutuamente
consistentes entre si e reconhecer se conceitos so adequados a definies. O MI pode, portanto, ajudar a
manter a hierarquia, o que til quando existem casos em que uma classe tem mais de um pai.

3.1)As trs espcies de OWL


As ontologias OWL podem ser classificadas em trs espcies, de acordo com a sub-linguagem utilizada:
OWL-Lite, OWL-DL e OWL-Full. A caracterstica principal de cada sub-linguagem a sua expressividade:
a OWL-Lite a menos expressiva; a OWL-Full a mais expressiva; a expressividade da OWL-DL est
entre a duas, entre a OWL-Lite e a OWL-Full.
3.1.1)OWL-Lite
A OWL-Lite a sub-linguagem sintaticamente mais simples. Destina-se a situaes em que apenas so
necessrias restries e uma hierarquia de classe simples. Por exemplo, o OWL-Lite pode fornecer uma
forma de migrao para tesauros existentes, bem como de outras hierarquias simples.
3.1.2)OWL-DL
A OWL-DL mais expressiva que a OWL-Lite e baseia-se em lgica descritiva, um fragmento de Lgica de
Primeira Ordem, passvel portanto de raciocnio automtico. possvel assim computar automaticamente a
hierarquia de classes e verificar inconsistncias na ontologia. Este tutorial utiliza a OWL-DL.
3.1.3)OWL-Full
A OWL-Full a sub-linguagem OWL mais expressiva. Destina-se a situaes onde alta expressividade
mais importante do garantir a decidabilidade ou completeza da linguagem. No possvel efetuar inferncias
em ontologias OWL-Full.

3.1.4)A escolha da sub-linguagem


Para maiores detalhes sobre as trs sub-linguagens OWL ver informaes no W3C. Embora muitos fatores
interfiram na escolha da sub-linguagem adequada, existem algumas regras bsicas:
Entre OWL-Lite e OWL-DL, necessrio saber se os constructos da OWL-Lite so suficientes;
Entre OWL-DL e OWL-Full, preciso saber se importante realizar inferncias na ontologia, ou se
importante usar funcionalidades altamente expressivas ou funcionalidades de modelagem, tais como as

8 of 83

meta-classes (classes de classes).


O plug-in do Protege-OWL no faz distino entre a edio de ontologias OWL-Lite e OWL DL. No
entanto, no oferece a opo de restringir a ontologia sob edio para OWL-DL, nem permite a
expressividade da OWL-Full.

3.2)Componentes da Ontologia OWL


As ontologias OWL tm componentes similares a estrutura do Frame-based Protege, mas a terminologia
usada para descrever tais componentes um pouco diferente da utilizada no Protege-Frames. A
correspondncia entre as duas nomenclaturas apresentada na TAB. 1.
Protege-Frames
Protege-OWL
Indivduos (individuals)
Instances (Instncias)
Propriedades (Properties)
Slots (Slots)
Classes (Classes)
Classes (Classes
Tabela 1: correspondncia entre nomenclaturas
3.2.1) Individuals (Indivduos)
Indivduos representam objetos no domnio de interesse (ou domnio do discurso). Uma diferena
importante entre o Protege e o OWL que este ltimo no usa o UNA-Unique Name Assumption. Isto
significa que dois nomes diferentes podem remeter ao mesmo indivduo. Por exemplo, Queen Elizabeth
(Rainha Elizabeth), The Queen (A rainha) e, Elizabeth Windsor podem ser referncias ao mesmo indivduo.
Em OWL deve-se declarar explicitamente que os indivduos so os mesmos, ou diferentes uns dos outros. A
FIG. 3.1 mostra uma representao de alguns indivduos em alguns domnios. Neste tutorial representam-se
os indivduos como "diamantes" em diagramas.

Figura 3.1: representao de indivduos


VOCABULRIO = Os indivduos so tambm conhecidos como instncias. Os indivduos
podem ser referenciados como Instncias de Classes.

3.2.2)Properties (Propriedades)
Propriedades so relaes binrias (relaes que contm duas coisas) entre indivduos, ou seja, as
propriedades ligam dois indivduos. Por exemplo, a propriedade hasSibling (temIrmo) pode ligar o
indivduo Matthew ao indivduo Gemma; ou a propriedade hasChild (temCriana) pode ligar o indivduo
Peter ao indivduo Matthew. As Propriedades podem tambm ser inversas. Por exemplo, a propriedade
inversa de hasOwner (temDono) isOwnedBy (PropriedadeDe). As propriedades podem limitar-se a um
valor nico: so as Functional Properties (propriedades funcionais). Elas tambm podem ser Transitive
Properties (Propriedades transitivas) ou Symetric Properties (Propriedades Simtricas). Estas
caractersticas das propriedades so detalhadas adiante. A FIG. 3.2 mostra propriedades que conectam
indivduos.

9 of 83

VOCABULRIO = Propriedades so equivalentes aos slots no Protege-Frames. Tambm so


conhecidas como papis (roles) em lgica descritiva, e relaes (relationships) em
UML-Unified Modeling Language e em outras abordagens de orientao a objeto. Em muitos
formalismos, como no GRAIL, elas so denominadas de atributos.

Figura 3.2: representao de propriedades

Figura 3.3: representao de classes contendo indivduos


3.2.3)Classes (Classes)
As classes OWL so conjuntos que contm os indivduos. Elas so descritas formalmente (descries
matemticas) de forma que sejam apresentados os requisitos para a participao na classe. Por exemplo, a
classe Cat (gato) pode conter todos os indivduos que so gatos, no domnio de interesse. As classes podem
ser organizadas em hierarquias superclasse-subclasse, tambm conhecidas como taxonomias. Subclasses so
especializaes de suas superclasses. Por exemplo, considere-se as classes Animal e Cat: Cat pode ser
subclasse de Animal, e assim Animal superclasse de Cat. Isso quer dizer que: Todos os Gatos so
Animais; Todos os membros da classe Cat so membros da classe Animal; Ser um Gato implica ser um
Animal; Gato subclasse de Animal. Uma caracterstica do OWL-DL que o relacionamento
superclasse-subclasse pode ser computado automaticamente por um MI. A FIG. 3.3 mostra uma
representao de classes que contm indivduos: as classes so representadas como crculos.
VOCABULRIO = O termo conceito as vezes usado no lugar de classe. As classes so
representaes concretas de conceitos.
Em OWL, as classes so construdas a partir de descries, as quais especificam as condies que devem
ser satisfeitas por um individuo para que ele possa ser um membro da classe. A formulao dessas
descries explicada ao longo do tutorial.

10 of 83

4.Construo de uma ontologia OWL


Essa seo descreve a criao de uma ontologia de Pizzas. A idia de utilizar pizzas reside no fato de que
nesse domnio podem ser construdos bons exemplos.

Exerccio 2: criar um exemplo de projeto


1. Inicie o Protege. Caso j exista um projeto aberto, feche-o e reinicie o programa. Ao re-iniciar o Protege,
a caixa de dilogo de boas vindas apresentada, para que se possa criar um novo projeto, abrir um projeto
recente ou obter ajuda.

Figura Extra1: dialogo inicial do Protege


2. Clique em New Project (Novo Projeto) e uma nova caixa de dilogo ser aberta: Create New Project
(Criar Novo Projeto) permitindo a escolha do tipo de projeto. Selecione o tipo OWL/RDF Files (Arquivos
OWL/RDF) e clique em Finish (Terminar).

Figura Extra2: escolha do tipo de projeto

3. A janela do Protege aberta e as tabs se tornam visveis. Um novo projeto sempre aberto na viso
Metadata (Metadados).

11 of 83

Figura Extra3: tela inicial (etiqueta Metadata) do Protege

4. Nomear e salvar o projeto.

importante salvar o projeto, o que permite encerrar as atividades quando conveniente. Para salvar o
projeto sigas as instrues abaixo:
1. Clique no boto Save Project (Salvar Projeto), o terceiro da esquerda no menu superior do Protege.
Pode-se escolher tambm Save project (Salvar Projeto) no menu File (Arquivo). A caixa de dilogo
Protege Files (Arquivos do Protege) aberta.

Figura Extra4: dialogo para salvar projeto


2. Escolha a local adequado para salvar o projeto, clique no boto a direita da linha Project (Projeto). A
caixa de dilogo de Protege Files (Arquivos do Protege) aberta; navegue para selecionar ou para criar um
diretrio.

Figura Extra5: dialogo para selecionar local a salvar projeto

3. Entre com um nome de arquivo (por exemplo, Pizza).

Figura Extra5: dialogo para selecionar local a salvar projeto


4. Clique em Select (Selecionar).
5. Na caixa de dilogo de Protege Files (Arquivos do Protege) clique em Ok para salvar os arquivos e
fechar a caixa de dilogo.

12 of 83

Figura Extra6: dialogo para salvar projeto preenchido

Nota: Pode-se tambm escolher uma localizao digitando o caminho completo na linha Project (Projeto).
Os nomes dos outros arquivos sero preenchidos automaticamente.

4.1)Criao de classes
A janela principal do Protege consiste de tabs (etiquetas) que apresentam caractersticas do base de
conhecimento. A etiqueta mais importante que surge ao se iniciar um projeto a etiqueta Classes. Em geral,
classes correspondem a objetos, ou a tipos de objetos no domnio. Por exemplo, em um jornal, as classes
podem ser pessoas, tais como editores, reprteres e vendedores; componentes do layout do jornal, tais
como sees; e contedo do jornal, tais como anncios e artigos.
As classes no Protege so mostradas em uma hierarquia com heranas e apresentadas em um Class Browser
(Navegador de Classes) do lado esquerdo da etiqueta Classes. As propriedades da classe selecionadas no
momento so apresentadas no Class Editor (Editor de Classes), direita.
Nessa seo, o objetivo criar classes e subclasses, modificar a hierarquia de classes, criar classes abstratas, e
adicionar superclasses adicionais a classes j existentes.
Uma nova ontologia contm uma classe chamada owl:Thing. Conforme mencionado, as classes OWL so
interpretadas como conjuntos de indivduos (ou conjunto de objetos). A classe owl:Thing a classe que
representa o conjunto que contm todos os indivduos, uma vez que todas as classes so subclasses de
owl:Thing.

Figura 4.1: viso parcial da etiqueta Classes

Figura 4.2: o painel Asserted Hierarchy (Hierarquia Declarada)

13 of 83

Create subclass (Criar subclasse)


Create sibling class (Criar classe irm)
Delete selected class (es) = (Apagar classes selecionadas)
Tabela 2: legenda dos botes do painel de Hierarquia de Classes

Exerccio 3: Criao das classes Pizza, PizzaTopping e PizzaBase


Para saber quais os tipos de pizza, os PizzaTopping (Recheio de Pizza) e as PizzaBase (Bases de Pizza)
cria-se uma classe para cada um desses termos:
1. Selecione a etiqueta Classes.
2. Pressione o boto Create subclass (Criar subclasse), conforme FIG.4.2. Este boto cria uma nova
classe, como subclasse da classe selecionada (neste caso, est sendo criada uma subclasse de
owl:Thing).
3. Renomeie a classe usando o campo For class (FIG. 4.3) localizado a direita da hierarquia de classes e
pressione Enter.

Figura 4.3: campo para nomear a classe (For Class)


4. Repita o passo anterior para adicionar as classes PizzaTopping e tambm PizzaBase; a classe owl:Thing
deve estar selecionada antes de pressionar Create subclass (Criar subclasse), de forma que as classes
sejam criadas como subclasses de owl:Thing.
A hierarquia de classes deve parecer como mostrada na FIG. 4.4:

Figura 4.4: a hierarquia de classes inicial

VOCABULRIO = A hierarquia de classe tambm pode ser chamada de Taxonomia.

DICA = Apesar de no existir uma regra obrigatria para nomear classes OWL, recomenda-se
que todos os nomes de classes iniciem com letra maiscula e no contenham espaos. Este tipo
de notao conhecida como CamelBack. Por exemplo: Pizza, PizzaTopping, MargheritaPizza.
Pode-se usar o underscore ( _ ) para juntar palavras. Por exemplo, Pizza_Topping. A regra
importante para a consistncia da ontologia.

14 of 83

4.2)Classes disjuntas
Tendo adicionado as classes Pizza, PizzaTopping e PizzaBase, preciso agora dizer que estas classes so
disjuntas, de modo que um indivduo (ou objeto) no poder ser instncia de mais de uma dentre as trs
classes. Para especificar as classes que sero disjuntas da classe selecionada, use a forma grfica Disjoints
(Disjuno), localizada no canto inferior direito da etiqueta OWLClasses.

Figura 4.5 Interface Disjoints (Disjunes)

Create disjoint class from OWL expression (criar classe disjunta para expresso OWL)
Add disjoint class (adicionar classe disjunta)
Add all siblings (adicionar todas as classes irms)
Remove all siblings (remover todas as classes irms)
Delete selected row (apagar linha selecionada)
Tabela 3: botes da interface Disjoints

Exerccio 4: tornar disjuntas as classes Pizza, PizzaTopping e PizzaBase


1. Selecione a classe Pizza na hierarquia.
2. Clique no boto Add all siblings (adicione todas as irms), na interface Disjoint. Uma caixa de dilogo
aberta, como a mostrada na FIG.Extra7. Basta marcar a primeira opo e escolher Ok para finalizar. Isto
tornar PizzaBase e PizzaTopping (as classes irms de Pizza) disjuntas de Pizza.

Figura Extra7: dialogo tipo de disjuno

Observe que a interface Disjoint (Disjuno) agora exibe as classes PizzaTopping e PizzaBase. Selecione a
classe PizzaBase e note a interface Disjoint exibe agora as classes que disjuntas para PizzaBase, ou seja,
Pizza e PizzaTopping.
SIGNIFICADO = Considera-se que as classes OWL se sobrepem. Por isso, no se pode
assumir que um indivduo no um membro de uma classe especfica, simplesmente porque no
se declarou que ele um membro daquela classe. Para desconectar um grupo de classes
preciso torn-las disjuntas. Isto garante que um indivduo que tenha sido declarado como sendo
membro de uma das classes do grupo, no pode ser um membro de nenhuma outra classe
naquele mesmo grupo. No exemplo (Pizza, PizzaTopping e PizzaBase) a disjuno foi realizada,
o que significa que no possvel a um indivduo ser membro de uma combinao destas
classes. No faz sentido um indivduo ser uma Pizza e uma PizzaBase.

15 of 83

4.3)Uso do assistente OWL para criar classes


O plug-in OWL Wizard (Assistente OWL) consiste de um conjunto de assistentes, projetados para executar
tarefas comuns, repetitivas e demoradas. Nesta seo usa-se o assistente Create Multiple Classes (Criar
mltiplas classes) para adicionar subclasses a classe PizzaBase. Para utilizar o Assistente OWL necessrio
que o plug-in correspondente esteja instalado.

Exerccio 5: use o Assistente Create Multiple Classes (Criar mltiplas classes)


para criar ThinAndCrispy (FinaECrocante) e DeepPan (BaseGrossa) como
subclasses de PizzaBase
1. Selecione a classe PizzaBase na hierarquia de classes.
2. No menu Tools, selecione o comando Quick OWL e a opo Create Multiple Subclasses (Criar
mltiplas classes). Pressione Next.
3. O assistente apresentado como FIG.4.6. Selecione a classe PizzaBase (a qual subclasse de Domain
Concept).

Figura 4.6: tela do assistente para criar mltiplas classes


4. Pressione o boto Next no assistente. abaixo exibida. Agora, preciso dizer ao assistente qual
subclasses de PizzaBase deve ser criada. Na rea de texto maior, digite no nome da classe
ThinAndCrispyBase (PizzaDeBaseFina) e tecle enter. Digite o nome de classe DeepPanBase (BaseGrossa).
A tela deve estar parecida com a da FIG.4.7. a seguir.

Figura 4.7: tela do assistente para criar mltiplas classes


5. Clique no boto Next do Assistente, e os nomes digitados so verificados quanto ao estilo (letras
maisculas/minsculas, sem espaos, etc.). Tambm verificada a unicidade das classes, ou seja, duas
classes no podem ter o mesmo nome. Erros no nome das classes, so apresentados na tela, juntamente com
sugestes para correo.

16 of 83

6. Clique no boto Next no assistente. Selecione a opo Make all primitive siblings disjoints? (Marcar
todas as irms primitivas como disjuntas?). Ao invs de utilizar a interface das classes disjuntas, o
assistente tornar as novas classes disjuntas automaticamente.
7. Clique no boto Next para visualizar e adicionar anotaes. Em geral, as anotaes so usadas para
gravar dados sobre a edio da ontologia: quem e quando a criou, quando foi revisada, etc. As anotaes
bsicas de propriedades OWL so selecionadas por default. Nenhuma dado ser informado nesse momento.
Pressione Finish.
DICA = caso tenha sido importada a ontologia DC-Dublin Core (mais detalhes adiante), as
propriedades de anotao DC podem estar disponveis para anotao das classes no passo 7 do
exerccio 5. O DC um conjunto de metadados, que pode ser usado para anotaes em
ontologias de dados tais como creator (criador), date (data), language (lngua), etc.
Depois de pressionar Finish, o assistente cria as classes, as torna disjuntas, e as seleciona na etiqueta
OWLClasses. A ontologia tem ThinAndCrispyBase e DeepPanBase como subclasses de PizzaBase. Essas
novas classes so disjuntas, e por isso, a BasePizza (base da pizza) no pode ser uma ThinAndCrispyBase
(base fina e torrada) e uma DeepPanBase (base grossa) ao mesmo tempo. No caso de muitas classes a
adicionar, o assistente acelera o processo.
DICA = na segunda tela do assistente (Create Multiple Subclasses), as classes so criadas e
inseridas. Caso existam muitas classes a criar com o mesmo prefixo ou sufixo, possvel usar as
opes de auto-anexar no incio e auto-anexar no final em conjunto com os nomes de classes
inseridos.

Criao de recheios para Pizza


Com algumas classes bsicas inseridas, vai-se criar recheios de Pizza. Os recheios so agrupados em
categorias: meat toppings (recheios de carne), vegetable toppings (recheios de vegetais), cheese toppings
(recheios de queijo) e seafood toppings (recheios de frutos do mar).

Exerccio 6: criao de recheios para pizzas


1.Selecione a classe PizzaTopping na hierarquia de classes.
2.Use o OWL-Wizzard (Assistente OWL) e adicione as seguintes subclasses de PizzaTopping:
MeatTopping (RecheioDeCarne);
VegetableTopping (RecheioDeVegetais);
CheeseTopping (RecheioDeQueijo)
SeafoodTopping (RecheioDeFrutosDoMar).
As classes devem estar disjuntas.
3.Em seguida, adicione diferentes recheios de carne. Selecione a classe MeatTopping (RecheioDeCarne), e
use o assistente Create Multiple Subclasses (Assistente para criar mltiplas classes) para adicionar as
seguintes subclasses:
SpicyBeefTopping (RecheioDeCarneApimentada)
PepperoniTopping (RecheioDeCalabresa)
SalamiTopping (RecheioDeSalame)
HamTopping (RecheioDePresunto)
Certifique que as classes esto classes disjuntas.

17 of 83

4.Adicione alguns tipos de recheios de vegetais criando as seguintes subclasses disjuntas de


VegetableTopping (RecheioDeVegetais):
TomatoTopping (RecheioDeTomate);
OliveTopping (RecheioDeAzeitona);
MushroomTopping (RecheioDeCogumelo);
PepperTopping (RecheioDePimenta);
OnionTopping (RecheioDeCebola)
CaperTopping (RecheioDeAlcaparras).
Adicione seguintes classes como subclasses de PepperTopping (RecheioDePimenta):
RedPepperTopping (RecheioDePimentaVermelha)
GreenPepperTopping (RecheioDePimentaVerde)
JalapenoPepperTopping (RecheioDePimentaMexicana)
As subclasses de PepperTopping devem ser disjuntas.
5.Agora adicione alguns recheio de queijo. Assim como feito anteriormente, adicione as seguintes
subclasses de CheeseTopping (RecheioDeQueijo), assegurando-se de que as subclasses so disjuntas:
MozzarellaTopping (RecheioDeMussarela)
ParmezanTopping (RecheioDeParmeso)
5.Finalmente, adicione subclasses de SeafoodTopping (RecheioDeFrutosDoMar):
TunaTopping (RecheioDeAtum)
AnchovyTopping (RecheioDeAnchova)
PrawnTopping (RecheioDeCamaro)
Nesse momento, a hierarquia de classes deve parecer com a apresentada na FIG.4.8 abaixo (o ordenamento
das classes podem estar ligeiramente diferente).

Figura 4.8: hierarquia de classes

SIGNIFICADO = At agora, foram criado classes nomeadas simples, algumas das quais so
subclasses de outras. A construo da hierarquia de classes pode parecer intuitiva. Contudo, o
que realmente significa ser subclasse de alguma coisa em OWL? Por exemplo, o que significa

18 of 83

para VegetableTopping (RecheioDeVegetal) ser subclasse de PizzaTopping (RecheioDePizza),


ou para TomatoTopping (RecheioDeTomate) ser subclasse de VegetableTopping
(RecheioDeVegetais)? Em OWL, ser uma subclasse significa uma implicao necessria. Em
outras palavras, se VegetableTopping uma subclasse de PizzaTopping ento TODAS as
instncias de VegetableTopping so instncias de PizzaTopping, sem exceo. Se alguma coisa
um VegetableTopping, isto implica que tambm um PizzaTopping. Veja a FIG. 4.9.

Figura 4.9: O significado de ser uma subclasse - todos os indivduos que so membros da classe
TomatoTopping so membros da classe VegetableTopping e PizzaTopping, uma vez que se estabeleceu
que TomatoTopping subclasse de VegetableTopping, que por sua vez subclasse de PizzaTopping.

4.4)Propriedades OWL
As propriedades OWL representam relacionamentos entre dois indivduos. Existem dois tipos principais de
propriedades: Object Properties (Propriedades de Objeto) e DataType Properties (Propriedades de Tipos
de Dados). As Object Properties (Propriedades de Objeto) conectam um indivduo a outro indivduo. As
DataType Properties (Propriedades de Tipos de Dados), por sua vez, conectam um indivduo a um valor
do XML-Schema Datatype (disponvel em http://www.w3.org/TR/xmlschema-2/) ou a um literal do
RDF-Resource Description Framework (disponvel em http://www.w3.org/TR/rdf-primer/).
O OWL tambm tem um terceiro tipo de propriedade, denominada Annotation Property (Propriedade de
Anotao), as quais so usadas para adicionar metadados as classes, aos indivduos e as Object Properties
(Propriedades de Objeto) e as DataType Properties (Propriedades de Tipos de Dados). A FIG. 4.10
apresenta um exemplo de cada tipo de propriedade.

Figura 4.10: diferentes tipos de propriedades OWL

19 of 83

As propriedades podem ser criadas usando a etiqueta Properties (Propriedades), mostrada na FIG. 4.11.
Para criar propriedades OWL a partir etiqueta Properties da utilize o boto localizado no canto superior
esquerdo. Como se pode ver na FIG. 4.13, existem botes para criao de propriedades de tipos de dados,
propriedades de objeto e propriedades de anotao. A maioria das propriedades criadas neste tutorial so
propriedades de objeto.
Pode-se tambm pode criar propriedades a partir da etiqueta OWLClasses, usando a interface Properties,
apresentada na FIG.4.12.

Figura 4.11: a etiqueta Properties

Figura 4.12: a interface Properties na etiqueta OWL Classes

Figura 4.13: botes para a criao Properties (Propriedades)


Create datatype property (Criar propriedade de tipos de dados)
Create object property (Criar propriedade de objeto)
Create Subproperty (Criar subpropriedade)
Create annotation datatype property (Criar propriedade de anotao tipo de dados)
Create annotation object property (Criar propriedade anotao objeto)
Create annotation property (Criar propriedade de anotao)
Delete properties (apagar propriedades)
Tabela 5: botes para criao de Properties (Propriedades)
DICA = Embora no existam regras nicas para nomear propriedades, recomenda-se que os
nomes das propriedades comecem com letra minscula, sem espao, e que a primeira letra da
prxima palavra seja uma maiscula. Recomenda-se tambm que as propriedades tenham como
prefixo a palavra has (tem), ou a palavra is (), por exemplo, hasPart (temParte), isPartOf
(ParteDe), hasManufacturer (temFabricante), IsProducerOf (ProdutoDe). Essas convenes
ajudam no s a facilitar o entendimento sobre as propriedades, como tambm permitem usar a
English Prose TooltipGenerator (ferramenta geradora de dicas em ingls), a qual se utiliza
dessa conveno para gerar expresses legveis e descrever classes. A ferramenta exibe a
descrio da classe em linguagem natural (ingls), facilitando o entendimento de uma descrio

20 of 83

de classe. Ela ativada quando o cursor colocado sobre a descrio da classe na interface do
usurio.

Tendo adicionado a propriedade hasIngredient (temIgredient), adicionam-se em seguida mais duas


propriedades: hasTopping (temRecheio) e hasBase (TemBase). As propriedades podem ter
subpropriedades, de modo que se formam hierarquias de propriedades. As subpropriedades especializam
superpropriedades da mesma forma que subclasses se diferenciam das superclasses. Por exemplo, a
propriedade hasMother (temMe) diferente da propriedade mais geral hasParent (temPais). No caso da
ontologia de pizza, as propriedades hasTopping e hasBase devem ser criadas como subpropriedades de
hasIngredient (temIngrediente). Se a propriedade hasTopping (ou hasBase) conecta dois indivduos, isto
implica que os dois indivduos esto relacionados tambm pela propriedade hasIngredient.

Exerccio 7: criar uma propriedade de objeto chamada hasIngredient


1. Na etiqueta Properties (Propriedades), use o boto Create Object Property (Criar Propriedade Objeto)
para criar uma nova propriedade. Uma Object Property (propriedade de objeto) com um nome genrico
criada.
2. Renomeie a propriedade para hasIngredient (TemIngrediente) no campo For Property, conforme
apresentado na FIG. 4.14.

Figura 4.14: criao da propriedade hasIngredient

Exerccio 8: criao de subpropriedades de hasIngredient: hasTopping e


hasBase
1. Para criar a propriedade hasTopping (temRecheio) como subpropriedade de hasIngredient
(temIngrediente) clique com o boto direito do mouse sobre a propriedade hasIngredient, na hierarquia de
propriedades da etiqueta Properties. O menu apresentado na FIG. 4.15 ser aberto:

Figura 4.15: menu da hierarquia de propriedades


2. Selecione o item Create subproperty (Criar subpropriedade) do menu, criando uma nova propriedade
de objeto como subpropriedade de hasIngredient (temIngredient).

21 of 83

3. Renomeie a nova propriedade para hasTopping (temRecheio).


4. Repita o passo acima, usando agora o nome de propriedade hasBase (temBase).
Observe que possvel criar subpropriedades de propriedades de tipos de dados. Contudo, no possvel
combinar propriedades de objetos e propriedades de tipos de dados nas subpropriedades. Por exemplo, no
possvel criar uma propriedade de objeto que seja a subpropriedade de uma propriedade de tipos de
dados e vice-versa.

4.5)Propriedades Inversas
Uma propriedade de objeto tem uma propriedade inversa correspondente. Se um propriedade liga um
indivduo "a" a um indivduo "b", ento a propriedade inversa correspondente liga o indivduo "b" ao
indivduo "a". Por exemplo, a FIG. 4.16 mostra a propriedade hasParent (temPais) e sua propriedade
inversa hasChild (temFilho): se Matthew hasParent Jean, da propriedade inversa pode-se inferir que Jean
hasChild Matthew.

Figura 4.16: exemplo de propriedade inversa: hasParent tem com inversa hasChild

Propriedades inversas so criadas na interface Inverse Property (Propriedade Inversa) conforme


apresentado na FIG. 4.17.

Figura 4.17: Interface de propriedade inversa

Especifique as propriedades inversas das propriedades existentes na ontologia de Pizza.

Exerccio 9: criao de propriedades inversas


1. Use o boto Create object property na etiqueta Properties para criar uma nova propriedade de objeto
chamada isIngredientOf (IngredientDe), inversa de hasIngredient (temIngredient).
2. Pressione o boto Set inverse property (Configurar propriedade inversa) na interface da Inverse
Property (propriedade inversa), conforme apresentado na mostrada na FIG. 4.17. Na caixa de dilogo
apresentada, selecione a propriedade hasIngredient e pressione Ok. A propriedade hasIngredient
(temIngrediente) aparece agora na interface Inverse Property (Propriedade Inversa). A hierarquia de
propriedades indica que hasIngredient e isIngredientOf so propriedades inversas.
3. Selecione a propriedade hasBase (temBase).
4. Pressione o boto Create new inverse property (Criar nova propriedade inversa) na interface Inverse
Property (Propriedade Inversa). Uma caixa de dilogo apresenta dados sobre a propriedade mais recente.
Use a caixa de dilogo para renomear a propriedade isBaseOf (BaseDe) e ento feche-a. Observe que a

22 of 83

propriedade isBaseOf (BaseDe) foi criada como subpropriedade de isIngredientOf. Isto ocorre porque
hasBase (temBase) uma subpropriedade de hasIngredient (temIngrediente), e isIngredientOf
(IngredienteDe) a propriedade inversa de hasIngredient (temIngrediente).
5. Selecione a propriedade hasTopping (temRecheio).
6. Pressione o boto Create new inverse property (Criar uma nova propriedade inversa) na interface
Inverse Property (Propriedade Inversa). Na caixa de dilogo apresentada, renomeie a propriedade
isToppingOf (RecheioDe). Feche a caixa de dilogo e observe que isToppingOf (RecheioDe)
sub-propriedade de isIngredientOf (IngredienteDe).
A hierarquia de propriedades deve parecer com a FIG. 4.18. Observe a seta bidirecional que indica a
propriedade inversa.

Figura 4.18: propriedades inversas

4.6)Caractersticas das propriedades OWL


O OWL permite enriquecer o significado das propriedades, atravs do uso de Property characteristics
(caractersticas das propriedades). As sees seguintes discutem as vrias caractersticas que as
propriedades podem ter.

4.6.1)Propriedades funcionais
Se uma propriedade funcional, para um determinado indivduo 1, pode existir at no mximo um
indivduo 2 que est relacionado ao indivduo 1 atravs dessa propriedade. A FIG. 4.19 apresenta um
esquema de exemplo para a propriedade funcional hasBirthMother (TemMeBiolgica): algum s pode
nascer de uma nica me. Se Jean hasBirthMother Peggy, e Jean hasBirthMother Margaret, ento
hasBirthMother uma propriedade funcional, ou seja, Peggy e Margaret so mesma pessoa. Contudo,
observe que se Peggy e Margaret so descritos explicitamente como duas pessoas diferentes, ento as
afirmaes anteriores levam a uma inconsistncia.

Figura 4.19: exemplo da propriedade funcional hasBirthMother (temMeBiolgica)

VOCABULRIO = Propriedades Funcionais tambm so conhecidas como Single Value


Properties (Propriedades de Valor nico) ou Features (Caractersticas).

23 of 83

4.6.2)Propriedades funcionais inversas


Se uma propriedade uma funcional inversa, isto significa que a sua propriedade inversa funcional. Para
o indivduo1, pode existir no mximo um indivduo relacionado ao indivduo1 atravs da propriedade. A
FIG. 4.20 mostra um exemplo da propriedade funcional inversa isBirthMotherOf (MeBiolgicaDe), que
a propriedade inversa de hasBirthMother (temMeBiolgica). Se hasBirthMother (temMeBiolgica)
funcional, isBirthMotherOf (MeBiolgicaDe) funcional inversa. Se Peggy a me natural de Jean, e
Margareth a me natural de Jean, infere-se que Peggy e Margaret correspondem a mesma pessoa.

Fig. 4.20: Exemplo de uma propriedade funcional inversa

4.6.3)Propriedades transitivas
Se uma propriedade P transitiva relaciona o indivduo "a" ao indivduo "b", e tambm um indivduo "b" ao
indivduo "c", infere-se que o indivduo "a" est relacionado ao indivduo "c" atravs da propriedade P. Por
exemplo, a FIG. 4.21 mostra um exemplo da propriedade transitiva hasAncestor (temAncestral). Se o
indivduo Matthew tem o ancestral Peter, e Peter tem o ancestral Willian, ento Mathew tem um ancestral
que Willian. Esse fato indicado pela linha tracejada na FIG. 4.21.

Figura: 4.21: exemplo de propriedade transitiva hasAncestor (temAncestral)

4.6.4)Propriedades simtricas
Se uma propriedade P simtrica, e relaciona um indivduo "a" ao indivduo "b", ento o indivduo "b"
tambm est relacionado ao indivduo "a" atravs da propriedade P. A FIG. 4.22 mostra um exemplo. Se o
indivduo Matthew est relacionado ao indivduo Gemma atravs da propriedade hasSibling (temIrmo),
ento Gemma tambm est relacionada a Matthew atravs da propriedade hasSibling. Em outras palavras,
se Matthew tem uma irm Gemma, ento Gemma tem um irmo que Matthew. Dito de outra forma, a
propriedade a prpria inversa.

Figura 4.22: exemplo da propriedade simtrica hasSibling (temIrmo)

24 of 83

Deseja-se tornar hasIngredient (temIngrediente) uma propriedade transitiva, de modo que, por exemplo, se
um recheio de pizza tem um ingrediente, ento uma pizza do mesmo recheio deve que ter o mesmo
ingrediente. Para definir as caractersticas da propriedade, utiliza-se o campo de Property Characteristics
(Caracterstica da Propriedade) conforme a FIG. 4.23, a qual est localizada no canto inferior direito da
etiqueta Property.

Figura 4.23: Interface Property Characteristics (Caracterstica da Propriedade)

Exerccio 10: tornar hasIngredient (temIngrediente) uma propriedade


transitiva
1. Selecione a propriedade hasIngredient na hierarquia de propriedades, etiqueta Properties.
2. Assinale a opo Transitive no Property Editor (Editor de Propriedades), no canto direito acima da
interface Inverse.
3. Selecione a propriedade isIngredientOf, que a inversa de hasIngredient. Confirme que Transitive est
marcado.
OBSERVAO = se uma propriedade transitiva, ento a propriedade inversa a ela tambm
transitiva. Essa operao feita manualmente no Protege-OWL. Contudo, o MI assume que
se a propriedade transitiva, a propriedade inversa tambm transitiva.

ATENO = se uma propriedade transitiva ela no pode ser funcional, uma vez que a
propriedade transitiva, por sua prpria natureza, pode formar cadeias de indivduos.

Deseja-se afirmar que uma Pizza pode ter apenas uma base. Existem vrias formas para fazer isso.
Escolhe-se tornar hasBase uma propriedade funcional, de modo que ela possa ter apenas um valor para um
determinado indivduo.

Exerccio 11: tornar funcional a propriedade hasBase


1. Selecione a propriedade hasBase (temBase).
2. Marque Functional na interface Property Charachteristics (Caractersticas da Propriedade), caso esteja
desmarcada.

25 of 83

OBSERVAO = se uma datatype property (propriedade de tipos de dados) est selecionada,


a interface Property Characteristics (Caractersticas da Propriedade) reduzida de modo que
apenas as opes Functional e Inverse Functional sejam exibidas. O OWL-DL no permite que
uma datatype property seja transitiva, simtrica ou tenha uma propriedade inversa.

4.7)Domains (domnios) e Ranges (escopo) de uma propriedade


Uma propriedade possui domain (domnio) e range (escopo). As propriedades conectam indivduos de um
domain (domnio) a indivduos de um range (escopo). Por exemplo, na ontologia de Pizza, a propriedade
hasTopping (temRecheio) liga indivduos pertencentes a classe Pizza a indivduos pertencentes a classe
PizzaTopping (RecheioDePizza). Neste caso, o domain (domnio) da propriedade hasTopping Pizza e o
range (escopo) PizzaTopping (RecheioDePizza), conforme apresentado na FIG. 4.24.

Figura 4.24: o domain (domain) e o range (escopo) para a propriedade hasTopping (temRecheio) e
suas propriedades inversas isToppingOf (RecheioDe). O domain para hasTopping Pizza e a range
para hasTopping PizzaTopping (RecheioDePizza). O domain e a range para isToppingOf so o
domain e a range para hasTopping.
ATENO = Domains (domnios) e Ranges (escopos) em OWL no so restries sujeitas a
verificao e so utilizados como axiomas em inferncias. Por exemplo, se a propriedade
hasTopping tem o conjunto domnio Pizza e aplica-se a propriedade hasTopping a IceCream
(indivduos membros da classe IceCream), o resultado pode ser um erro. possvel inferir que a
classe IceCream subclasse de Pizza (um erro gerado atravs do MI, apenas se Pizza for
disjunta de IceCream).

Deseja-se especificar que a propriedade hasTopping (temRecheio) tem um range (escopo) PizzaTopping
(RecheioDePizza). Para tal, usa-se a interface Range (Escopo). O menu suspenso do Protege assume
Instance (Instncia) como padro, indicando que a propriedade conecta instncias de classes a instncias de
classes.

Exerccio 12: especificar range (escopo) da relao hasTopping


1. Selecione a propriedade hasTopping (temRecheio) na hierarquia de propriedades da etiqueta Properties.
2. Pressione o boto Specialise Range (Especializar escopo) na interface Range (Escopo). Surge uma caixa
de dilogo que permite selecionar a classe na hierarquia de classes, conforme FIG.4.25.
3. Selecione PizzaTopping (RecheioDePizza) e pressione Ok. A relao PizzaTopping deve ser exibida na
lista de range (escopo).

26 of 83

Figura 4.25: interface para Range (escopo)


ATENO = tambm possvel, mas no recomendvel, indicar que uma classe e no seus
indivduos so range de uma propriedade. de um erro pensar que o range de uma propriedade
uma classe, quando um range corresponde na verdade aos indivduos membros da classe. Ao
especificar o range de uma propriedade como uma classe, trata-se tal classe como um indivduo.
Isto um tipo de meta-declarao, e pode levar a ontologia para o OWL-Full.
OBSERVAO = possvel especificar vrias classes como range de uma propriedade. Caso
isso seja feito no Protege-OWL, o range da propriedade interpretada como uma unio das
classes. Por exemplo, se uma propriedade tem as classes Man (homem) e Woman (mulher)
listadas na interface range, isso significa que a range daquela propriedade ser interpretada
como Man unio com Woman

Exerccio 13: especificar domnio da propriedade hasTopping como Pizza


1. Selecione a propriedade hasTopping na hierarquia da etiqueta Properties.
2. Pressione Specialise domain (Especialize domnio) na interface Domain. Surge uma caixa de dilogo
para seleo de uma classe da hierarquia, conforme FIG. 4.26.
3. Selecione Pizza e pressione Ok. A classe Pizza agora exibida na lista de domnio.

Figura 4.26: Interface domain (domnio) da propriedade

SIGNIFICADO = os indivduos citados "do lado esquerdo" da propriedade hasTopping so


membros da classe Pizza; os indivduos citado "do lado direito" da propriedade hasTopping so
membros da classe PizzaTopping. Por exemplo, sejam os indivduos "a" e "b" e uma declarao

27 of 83

"a hasTopping b": infere-se que "a" um membro da classe Pizza e que "b" um membro da
classe PizzaTopping.

OBSERVAO = quando diversas classes so especificadas como domain (domnio) de uma


propriedade, o Protege-OWL interpreta o domain (domnio) da propriedade como a unio
dessas classes.

ATENO = embora a OWL permita o uso de class expressions (expresses de classes)


subjetivas para o domain (domnio) de uma propriedade, isto no permitido durante a edio
de ontologias no Protege-OWL.

Deseja-se preencher o domain (domnio) e o range (escopo) para o inverso da propriedade hasTopping
(temRecheio) e para isToppingOf (RecheioDe).

Exerccio 14: especificar domain (domnio) e range (escopo para isToppingOf


1. Selecione a propriedade isToppingOf.
2. Utilize os mesmos passos, explicados anteriormente, para definir o domain (domnio) da propriedade
isToppingOf para PizzaTopping.
3. Defina Pizza como range (escopo) da propriedade isToppingOf .
Observe que o domain (domnio) da propriedade isToppingOf o range (escopo) da propriedade inversa
hasTopping, e que a range da propriedade isToppingOf o domain da propriedade hasTopping.

Exerccio 15: especifique domain (domnio) e range (escopo) para a


propriedade hasBase (temBase) e a sua propriedade inversa isBaseOf
(BaseDe)
1. Selecione a propriedade hasBase.
2. Especifique Pizza como o domnio da propriedade hasBase.
3. Especifique PizzaBase como o escopo da propriedade hasBase.
4. Selecione a propriedade isBaseOf.
5. Defina PizzaBase como o domnio da propriedade isBaseOf.
6. Defina Pizza como o escopo da propriedade isBaseOf.

DICA = preciso garantir que o domnio e o escopo para as propriedades esto tambm

28 of 83

configurados para as propriedades inversas de maneira correta. Em geral, o domnio para uma
propriedade o escopo de seu inverso, e o escopo para uma propriedade o domnio de sua
inversa.

ATENO = embora se tenha especificado domnios e escopos de vrias propriedades para o


presente tutorial, no se recomenda que esse procedimento seja rotineiro. As condies de
domnio e de escopo no se comportam como restries e, alm disso, podem causar resultados
inesperados na classificao. Esses problemas e seu efeitos indesejados so de difcil localizao
em uma grande ontologia.

4.8)Descrio e definio de classes


Aps a criao de algumas propriedades pode-se agora utiliz-las para definir e descrever as classes da
ontologia de Pizza.
4.8.1)Restries de propriedades
Em OWL, as propriedades so usadas para criar restries. Tal como o nome sugere, restries so
utilizadas para restringir os indivduos de uma classe. As restries OWL so classificadas em trs
categorias principais:
Quantifier Restrictions (Restries de Quantificador)
Cardinality Restrictions (Restries de Cardinalidade)
Restries hasValue. (Restries temValor)
As Restries de Quantificador so compostas por um quantificador, uma propriedade e uma classe
nomeada que contm indivduos os quais atendem a restrio (denominada, filler). Os dois quantificadores
disponveis so:
O quantificador existencial (E): l-se como pelo menos um, ou algum; em OWL tambm pode ser lido
como someValuesFrom (algunsValoresDe);
O quantificador universal (A): l-se como apenas; em OWL tambm pode ser lido como allValuesFrom
(todosValoresDe).
Por exemplo, a restrio E hasTopping MozzarellaTopping constituda pelo quantificador existencial E,
pela propriedade hasTopping, e pelo filler MozzarellaTopping. Esta restrio descreve o conjunto, ou a
classe, de indivduos que tem pelo menos um recheio, e esse recheio um indivduo da classe
MozzarellaTopping. Esta restrio representada na FIG. 4.27: os smbolos em forma de diamante
representam indivduos. Note que a restrio descreve uma classe annima de indivduos que satisfazem a
restrio.

29 of 83

Figura4.27: A restrio E hasTopping MozzarellaTopping descrevendo a classe de indivduos que tem


pelo menos um recheio que Mozzarella

SIGNIFICADO = uma restrio descreve uma classe annima (no nomeada), a qual
composta de indivduos que satisfazem a restrio (vide o Apndice A para detalhes sobre
quantificao existencial e universal). Na realidade, quando restries so usadas para descrever
classes, elas especificam superclasses annimas da classe que est sendo descrita. Por exemplo,
pode-se dizer que MargheritaPizza uma subclasse de Pizza (dentre outras coisas), e tambm
uma subclasse das coisas que tem pelo menos um recheio que MozzarellaTopping.

As restries de uma classe so exibidas e editadas na interface Asserted Conditions (Condies


Declaradas) apresentada na FIG. 4.28. A interface Asserted Conditions a parte mais importante da
etiqueta Classes do Protg-OWL, uma vez que detm praticamente todas as informaes para descrio de
uma classe.

Figura 4.28: a interface Conditions da etiqueta Classes


As restries so usadas em descries de classes OWL, para especificar superclasses annimas daquelas
classes a serem descritas.
4.8.2)Restries existenciais
Restries Existenciais (E) so o tipo mais comum de restrio em ontologias OWL. Para um conjunto de
indivduos, uma restrio existencial especifica a existncia de um relacionamento (ou seja, pelo menos um)
de um desses indivduos com outro indivduo, o qual membro de uma classe especfica, atravs da
propriedade.
Por exemplo, E hasBase PizzaBase descreve todos os indivduos que tem pelo menos um relacionamento
com um indivduo membro da classe PizzaBase, atravs da propriedade hasBase. Em linguagem natural:
todos os indivduos que tem pelo menos uma base de pizza.
VOCABULRIO = a Restrio Existencial tambm conhecida como Some Restrictions
(Algumas Restries).

30 of 83

Exerccio 16: Adicionar restrio a Pizza de forma que Pizza tenha uma
PizzaBase
1. Selecione Pizza na hierarquia de classes da etiqueta Classes.
2. Selecione NECESSARY na interface Asserted Conditions, de forma a criar uma condio necessria.
3. Pressione o boto Create restriction (Criar Restrio), mostrado na FIG. 4.29 Surge a caixa de dilogo
Create Restriction (vide FIG. 4.30), utilizada para criar uma restrio.

Figura 4.29: boto Criar Restrio

Figura 4.30: caixa de dilogo Criar Restrio


A caixa de dilogo Create Restriction (Criar Restrio) tem quatro partes principais:
1.
2.
3.
4.

a lista de propriedades;
a lista de tipos de restrio;
a caixa de edio do filler;
o painel para construo de expresses.

Para criar uma restrio so necessrios trs procedimentos:


Selecione o tipo de restrio na lista Restriction (Restrio) (num. 2 na FIG. 4.30); o padro uma
restrio existencial (E).
Selecione a propriedade a qual deseja aplicar a restrio na lista Restricted Properties (Propriedade a
ser Restrita) (num. 1 na FIG. 4.30);.
Especifique um filler para a restrio na caixa de edio de fillers (num. 3 na FIG. 4.30); possivelmente,
ser preciso usar o painel para construo de expresses (num. 4 na FIG. 4.30).

Exerccio 17: Adicione restrio a Pizza especificando que Pizza deve ter uma
PizzaBase

31 of 83

(continuao do 16)

1. Selecione a declarao E someValuesFrom na lista de tipos de restrio (someValuesFrom outro nome


para a restrio existencial).
2. Selecione a propriedade hasBase da lista de propriedades.
3. Especifique que o filler PizzaBase, o que pode ser feito de duas maneiras:
-digite PizzaBase na caixa de edio de fillers; ou...
-pressione o boto Insert class no painel de construo de expresses (FIG. 4.31) para exibir a hierarquia
de classe, de onde PizzaBase pode ser selecionada.

Figura 4.31: Painel Expression Builder (Construtor de Expresses) e boto Insert Class
4. Pressione o boto Ok para criar a restrio e feche a caixa dilogo. A restrio ser exibida na interface
Asserted Conditions. Caso algum erro seja detectados, a caixa de dilogo no fechada e uma mensagem
de erro exibida no painel para construo de expresses; nesse caso, verifique se a restrio, a propriedade
e o filler foram especificados corretamente.

DICA = um recurso til para a construo de expresses o auto-completar, utilizado para


nomes de classes, nomes de propriedades e nomes de indivduos. O recurso auto-completar
ativado pressionando-se alt tab. No exemplo acima, ao digitar "Pi", as opes iniciadas com
"Pi" so apresentadas, conforme mostra a FIG. 4.32 abaixo. Com as teclas up e down
seleciona-se PizzaBase.

Figura 4.32: o recurso auto-completar do construtor de expresses

A interface Asserted Conditions aparece agora de forma similar a apresentada na FIG. 4.33:

Figura 4.33: Interface Asserted Conditions: descrio de uma pizza


SIGNIFICADO = at aqui descreveu-se a classe Pizza como uma subclasse de owl:Thing e
como uma subclasse das "coisas" que possuem uma base, a qual, por sua vez, algum tipo de
PizzaBase. Note que tais condies so necessrias, ou seja, se alguma coisa uma Pizza
necessrio que tal coisa seja membro da classe owl:Thing (em OWL todas as coisas so
membros de owl:Thing), e ainda necessrio que tal coisa tenha um tipo de PizzaBase. Em
linguagem formal, diz-se que: alguma coisa uma Pizza se necessrio existir um
relacionamento entre tal coisa e um indivduo membro da classe PizzaBase, atravs da
propriedade hasBase . Essa situao representada na FIG.4.34 a seguir.

32 of 83

Figura 4.34: para que algo seja uma Pizza necessrio que tenha pelo menos uma PizzaBase; uma
Pizza uma subclasse de coisas que tem pelo menos um PizzaBase

Criao de tipos diferentes de Pizzas


Deseja-se adicionar diferentes Pizzas a ontologia. Adicione primeiro a MargheritaPizza, uma Pizza que tem
recheio de mussarela e tomate. Para manter a ontologia organizada, agrupe os diferentes tipos de Pizzas na
classe NamedPizza (PizzasNomeadas):

Exerccio 18: criar uma subclasse de Pizza chamada NamedPizza, e uma


subclasse de NamedPizza chamada MargheritaPizza
1. Selecione a classe Pizza na hierarquia de classes da etiqueta OWLClasses.
2. Pressione Create subclass para criar uma nova subclasse de Pizza, e nomeie essa nova subclasse como
NamedPizza.
3. Crie uma nova subclasse de NamedPizza, e nomeie essa subclasse como MargheritaPizza.
4. Adicione um comentrio a classe MargheritaPizza usando a caixa de comentrio localizada abaixo da
campo For class no Class Editor (Editor de Classes): "uma pizza que tem apenas recheio de Mozzarella e
Tomato". Adicionar um comentrio uma boa prtica para documentar classes, propriedades, etc durante a
edio da ontologia, comunicando o significado pretendido para outros desenvolvedores.
Tendo criado a classe MargheritaPizza preciso especificar os recheios dessa Pizza. Adicionam-se ento
duas restries para dizer que uma MargheritaPizza tem os recheios MozzarellaTopping e TomatoTopping.

Exerccio 19: criar uma restrio existencial (E) para a classe


MargheritaPizza, a propriedade hasTopping e o filler MozzarellaTopping,
para que uma MargheritaPizza tenha pelo menos um MozzarellaTopping.
1. Certifique que MargheritaPizza est selecionada na hierarquia de classes.
2. Selecione NECESSARY no campo Asserted Conditions (Condies Declaradas), da interface Class
Editor (Editor de Classes), de forma a criar uma condio necessria.
3. Use Create restriction (Criar Restries) no campo Asserted Conditions (Condies Declaradas), da
interface Class Editor (Editor de Classes), para exibir a caixa de dilogo.
4. Na caixa de dilogo Create restrictions faa com que a restrio criada seja um quantificador existencial
selecionando o tipo de restrio tipo E someValuesFrom.

33 of 83

5. Selecione hasTopping como a propriedade a sofrer a restrio.


6. Entre com a classe MozzarellaTopping como o filler da restrio. Isto pode ser realizado digitando o
nome da classe MozzarellaTopping dentro da caixa de edio Filler, ou usando o boto Insert class (Inserir
Classe) para exibir a hierarquia de classes da ontologia.
7. Pressione o boto Ok na caixa de dilogo Create Restriction (Criar Restrio) para criar a restrio
desejada. Caso exista algum erro, a restrio no ser criada e uma mensagem de erro ser exibida no painel
de construo de expresses.
Agora especifique que MargheritaPizza tambm tem TomatoTopping.

Exerccio 20: criar uma restrio existencial (E) para a classe


MargheritaPizza, a propriedade hasTopping e o filler TomatoTopping, para
que uma MargheritaPizza tenha pelo menos um TomatoTopping
1. Selecione MargheritaPizza na hierarquia de classes.
2. Selecione NECESSARY no campo Asserted Conditions (Condies Declaradas) do Class Editor (Editor
de Classes) para adicionar uma condio necessria.
3. Use Create Restriction (Criar Restrio), no campo Asserted Conditions (Condies Declaradas) da
interface Class Editor (Editor de Classes), para exibir o dilogo.
4. Na caixa de dilogo Create Restriction (Criar Restrio) faa com que a restrio criada seja um
quantificador existencial selecionando o tipo de restrio tipo E someValuesFrom.
5. Selecione hasTopping como a propriedade a sofrer restrio.
6. Entre com a classe TomatoTopping como o filler para a restrio.
7. Clique no boto Ok para criar restrio.
O campo Asserted Conditions (Condies Declaradas) deve estar semelhante com a imagem da FIG. 4.35.

Figura 4.35: o campo Asserted Conditions com a descrio de MargheritaPizza

SIGNIFICADO = adicionaram-se restries a MargheritaPizza para informar que uma


MargheritaPizza uma NamedPizza que tem pelo menos um tipo de MozzarellaTopping e pelo
menos tipo de TomatoTopping. Formalmente, l-se: para que alguma coisa seja membro da
classe MargheritaPizza necessrio que seja membro da classe NamedPizza; necessrio que
seja tambm um membro da classe annima de coisas que esto ligadas a pelo menos um
membro da classe MozzarellaTopping via a propriedade hasTopping, e ainda necessrio que
seja um membro da classe TomatoTopping via propriedade hasTopping.
Crie uma classe para representar a AmericanaPizza, que tem recheio de Pepperoni, Mozzarella e Tomato.

34 of 83

A classe AmericanaPizza similar a classe MargheritaPizza: uma AmericanaPizza quase uma


MargheritaPizza com a diferena de que tem um recheio a mais (Pepperoni). Dessa forma, faa um clone
da classe MargheritaPizza e ento adicione uma restrio extra para informar que ela tem um recheio
Pepperoni.

Exerccio 21: clonar e modificar a descrio de MargheritaPizza


1. Selecione MargheritaPizza na hierarquia de classes, e clique com o boto direito do mouse dentro do
campo Asserted Hierarchy (Hierarquia Declarada) para exibir um novo menu.
2. No menu exibido selecione Create clone (Criar clone), o que cria uma cpia da classe MargheritaPizza,
com o nome MargheritaPizza2, a qual tem as mesmas caractersticas (restries, etc) de MargheritaPizza.
3. Renomeie MargheritaPizza 2 para AmericanaPizza usando o campo For class do Class Editor (Editor
de Classes).
4. Selecione AmericanaPizza, escolha o cabealho NECESSARY no campo Asserted Conditions (Condies
Declaradas) do Class Editor (Editor de Classes), para adicionar a nova restrio as condies necessrias
de AmericanaPizza.
5. Pressione Create restrictions (Criar Restries) no campo Asserted Conditions (Condies Declaradas)
do Class Editor (Editor de Classes), para exibir a caixa de dilogo.
6. Selecione E someValuesFrom como tipo de restrio para criar a restrio de quantificador existencial.
7. Selecione a propriedade hasTopping como a propriedade a sofrer restrio.
8. Especifique no campo de restries a classe PepperoniTopping, digitando o termo na caixa de edio do
filler, ou usando o boto Insert Class (Inserir Classe) para apresentar o dilogo o qual permite a seleo de
PepperoniTopping.
9. Pressione o boto Ok para criar a restrio.
A forma grfica Asserted Conditions (Condies Declaradas) deve agora parecer como a imagem da
FIG4.46.

Figura 4.36: o campo Asserted Conditions mostrando a descrio para AmericanaPizza

Exerccio 22: criar classes AmericanHotPizza e SohoPizza


1. Uma AmericanHotPizza quase uma AmericanaPizza, mas possui Jalapeno (PimentaDiferente). Crie o
novo tipo clonando a classe AmericanaPizza, e adicionando uma restrio existencial a propriedade
hasTopping com um filler JalapenoPepperTopping.
2. Uma SohoPizza quase uma MargheritaPizza, mas tem recheios adicionais de Olive (Azeitona) e
Parmezan (Parmeso). Crie este novo tipo clonando MargheritaPizza e adicionando duas restries
existenciais junto a propriedade hasTopping, uma com o filler OliveTopping, e outra com o
ParmezanTopping.

35 of 83

Para a AmericanHotPizza a forma grfica Asserted Conditions (Condies Declaradas) deve agora parecer
como a imagem da FIG4.37:

Figura 4.37: o campo Asserted Conditions com a descrio para AmericanaHotPizza


Para SohoPizza, a forma grfica Asserted Conditions (Condies Declaradas) deve parecer como a imagem
da FIG4.38:

Figura 4.38: o campo Asserted Conditions mostrando a descrio para SohoPizza

Aps criar essas Pizzas preciso torn-las disjuntas.

Exerccio 23: tornar disjuntas as subclasses de NamedPizza.


1. Selecione a classe MargheritaPizza na hierarquia da etiqueta OWLClasses.
2. Pressione o boto Add all siblings (Adicionar todas as irms) no campo Disjoints (Disjunes) para
tornar as Pizzas disjuntas.

4.9)Uso de um MI-Mecanismo de Inferncia (reasoner)


4.9.1)Determinao a sub-linguagem OWL
Conforme j mencionado, a OWL possui trs sub-linguagens: OWL-Lite, OWL-DL e OWL-Full (a definio
exata dessas sub-linguagens pode ser encontrada no site do W3C-World Wide Web Consortium). O
Protege-OWL possui um mecanismo de validao que capaz de determinar a sub-linguagem da ontologia
em edio. Para usar o mecanismo de validao, na opo do menu Tools (Ferramentas), selecione o
comando Determine OWL Sublanguage... (Determinar a sub-linguagem OWL...) conforme apresentado na
FIG.4.39.

Figura 4.39: o menu Tools (Ferramentas)


Uma importante caracterstica de ontologias descritas com o OWL-DL a possibilidade processamento por
um reasoner (mecanismo de inferncia). Um relevante servio oferecido por mecanismos de inferncia o
teste para saber se uma classe , ou no , uma subclasse de outra classe (subsumption test), ou seja, as

36 of 83

descries das classes (condies) so utilizadas para determinar se existe dentre elas uma relao
superclasse/subclasse. Atravs de tais testes em todas as classes de uma ontologia possvel inferir
automaticamente a hierarquia de classes da ontologia. Outro servio padro oferecido pelo mecanismo de
inferncia o de consistency checking (verificao da consistncia). Baseado na descrio (condies) de
uma classe, o mecanismo de inferncia pode verificar se possvel, ou no, que uma classe possua
instncias. Uma classe considerada inconsistente se no possvel a ela ter instncias.
VOCABULRIO = MI-Mecanismos de inferncia (reasoners) so tambm chamados de
classificadores.

4.9.2)Uso do RACER
Para executar inferncias em ontologias no Protege-OWL preciso instalar um MI compatvel com o
DIG-Description Logic Implementers Group (Grupo de Desenvolvedores de Lgica Descritiva). Um
compatvel DIG possibilita comunicao via um protocolo padro para acesso ao MI. Antes disso, o MI
deve ser instalado, configurado e iniciado. Neste tutorial utiliza-se o RACER, disponvel na Internet em
uma variedade de plataformas. Depois de instalado, o RACER deve ser iniciado com a configurao padro
(o padro de comunicao o HTTP ativado na porta 8080). A FIG. 4.40 apresentar uma viso dos dados
exibidos na inicializao do RACER; a segunda linha de baixo para cima indica o estabelecimento da
comunicao HTTP, especifica o endereo IP e o nmero da porta. Caso deseje usar uma porta diferente,
preciso configurar o Protg-OWL atravs do comando Preferences... (Preferncias...) do menu OWL
(vide FIG.4.41)

Figura 4.40: tela inicial do RACER

Figura 4.41: menu OWL, comando Preferences


4.9.3)Funcionamento do MI
Aps iniciar o RACER (ou outro MI) a ontologia pode ser enviada ao mecanismo para execuo dos

37 of 83

servios. No Protege-OWL, a hierarquia de classe construda manualmente chamada de asserted hierarchy


(hierarquia declarada); a hierarquia de classes calculada automaticamente pelo MI chamada inferred
hierarchy (hierarquia inferida). Para classificar automaticamente a ontologia (e verificar sua consistncia)
utiliza-se o comando Classify Taxonomy (Classificar Taxonomia), disponvel atravs de boto no menu
superior do Protege-OWL, ou atravs de comando no menu OWL. Para verificar a consistncia da
ontologia, usa-se o comando Check consistency... (Verificar Consistncia), disponvel atravs de boto no
menu superior do Protege-OWL, ou atravs de comando no menu OWL. Esses botes so apresentados na
FIG. 4.42.

? Check consistency... (Verificar consistncia)


C Classify taxonomy... (Classificar taxonomia)
I Compute inferred types... (Computar tipos inferidos)
Figura 4.42: fragmento da barra de ferramentas do Protege-OWL
Quando a inferred hierarchy (hierarquia inferida) for calculada, o resultado apresentado ao lado da
asserted hierarchy (hierarquia declarada) (vide FIG. 4.43). Se alguma classe foi reclassificada (ou seja, se
a superclasse foi alterada) o seu nome aparece em azul na hierarquia inferida. Se uma classe inconsistente
foi encontrada, o cone correspondente aparece circulado em vermelho.
VOCABULRIO = a tarefa de calcular a hierarquia de classe inferida tambm conhecida
como classificao da ontologia.

Figura 4.43: O painel Inferred Hierarchy (Hierarquia Inferida), aberto ao lado do painel Asserted
Hierarchy (Hierarquia Declarada)

4.9.4)Classes inconsistentes
Para demonstrar o uso do MI na deteco de inconsistncias foi criada uma classe, subclasse de
CheeseTopping (RecheioDeQueijo) e de MeatTopping (RecheioDeCarne). Est estratgia normalmente
usada para verificar se a ontologia foi construda corretamente. As classes adicionadas para testar a
integridade da ontologia so conhecidas como ProbeClasses (Classes de Investigao).

Exerccio 24: adicionar uma Probe Class denominada


ProbeInconsistentTopping como subclasse de CheeseTopping e de Vegetable
1. Selecione a classe CheeseTopping na hierarquia da etiqueta OWLClasses.
2. Crie uma subclasse de CheeseTopping com o nome ProbeInconsistentTopping (Classe de investigao
inconsistente).
3. Adicione um comentrio a classe ProbeInconsistentTopping, por exemplo: "essa classe ser marcada

38 of 83

como inconsistente quando a ontologia for classificada". Isso possibilita que outra pessoa, ao analisar a
ontologia, entenda que a classe foi deliberadamente criada como inconsistente.
4. Selecione a classe ProbeInconsistentTopping na hierarquia de classes, e escolha o NECESSARY no
campo Asserted Conditions (Condies Declaradas).
5. Clique no boto Add Named Class (Adicionar Classes Nomeadas) no campo Asserted Conditions
(Condies Declaradas). Ser exibido um dilogo com a hierarquia de classes, permitido que uma delas seja
selecionada. Selecione a classe VegetableTopping e pressione o boto Ok. A classe VegetableTopping ser
adicionada como uma condio necessria (como superclasse).
O campo Asserted Conditions deve estar parecido com FIG.4.44.

Figura 4.44: campo Asserted Conditions (Condies Declaradas) mostrando a classe


ProbeInconsistentTopping
SIGNIFICADO = ao examinar a hierarquia, a classe ProbeInconsistentTopping aparece como
subclasse de CheeseTopping e subclasse de VegetableTopping. Isso quer dizer que
ProbeInconsistentTopping um CheeseTopping e um VegetableTopping, ou seja, todos os
indivduos que so membros de ProbeInconsistentToppping so tambm (necessariamente)
membros da classe CheeseTopping e (necessariamente) membros de VegetableTopping. Isto
incorreto visto que algo no pode ser queijo e vegetal ao mesmo tempo.

Exerccio 25: verificao de inconsistncia de ProbeInconsistentTopping


1. Pressione Classify Taxonomy (Classificar Taxonomia) na barra de ferramenta OWL.
Depois de alguns segundos, a inferred hierarchy (hierarquia inferida) calculada e a janela correspondente
apresentada ao lado da janela Asserted Hierarchy (Hierarquia Declarada), conforme apresentado na FIG.
4.45. Note-se que a classe ProbeInconsistentTopping est circulada em vermelho, indicando que o MI
definiu a classe como inconsistente (ou seja, ela no pode ter indivduos como membros).

Figura 4.45: a classe ProbeInconsistentTopping marcada como inconsistente pelo MI

SIGNIFICADO = analise a situao: sabe-se que uma coisa no pode ser queijo e vegetal ao
mesmo tempo. Uma coisa no pode ser instncia de CheeseTopping (RecheioDeQueijo) e
instncia de VegetableTopping (RecheioDeVegetal) simultaneamente. Entretanto, o nome para

39 of 83

as classes escolhido pelo desenvolvedor. Para um MI, os nomes no tem significado, e ele no
pode determinar se alguma coisa inconsistente baseando-se em nomes. O motivo de a classe
ProbeInconsistentTopping ser detectada como inconsistente que suas superclasses
VegetableTopping e CheeseTopping so disjuntas. Assim, indivduos que so membros de
CheeseTopping no podem ser membros de VegetableTopping e vice-versa.

DICA = Para fechar a Inferred Hierarchy (Hierarquia Inferida) use o sinal X na parte superior
da janela da hierarquia inferida.

Exerccio 26: remoo de declarao disjunta de CheeseTopping e


VegetableTopping
1. Selecione a classe CheeseTopping na hierarquia de classes.
2. No campo Disjoints (Disjunes) esto as classes irms a CheeseTopping, as quais so:
VegetableTopping (RecheioDeVegetais), SeafoodTopping (RecheioDeFrutosDoMar) e MeatTopping
(RecheioDeCarne). Selecione VegetableTopping no campo Disjoints.
3. Pressione o boto Delete selected row (Apagar linha selecionada) no campo Disjoints para remover o
axioma de disjuno que mantm disjuntas CheeseTopping e MeatTopping.
4. Pressione Classify Taxonomy (Classificar Taxonomia) na barra de ferramentas OWL para enviar a
ontologia ao MI. A ontologia classificada e resultados so exibidos.
SIGNIFICADO = observe que ProbeInconsistentTopping no mais inconsistente. Isto
significa que indivduos que so membros da classe ProbeInconsistentTopping so tambm
membros da classe CheeseTopping e de VegetableTopping. Ou seja, estabeleceu-se (de forma
errnea) que alguma coisa pode ser um queijo e um vegetal ao mesmo tempo. Isto ilustra a
importncia do cuidado no uso de axiomas de disjuno. As classes OWL se sobrepem at que
sejam declaradas disjuntas. Se algumas classes no so disjuntas, resultados inesperados podem
surgir. Se certas classes so marcadas como disjuntas de forma incorreta, novamente resultados
inesperados podem surgir.

Exerccio 27: correo da ontologia com a disjuno entre CheeseTopping e


Vegetable
1. Selecione a classe CheeseTopping na hierarquia de classes.
2. O campo Disjoints (Disjunes) deve conter MeatTopping e SeafoodTopping.
3. Pressione Add disjoint class (Adicionar classes disjuntas) no campo Disjoints para exibir um dilogo
onde se pode escolher classes. Selecione a classe VegetableTopping e pressione o boto Ok. A classe
CheeseTopping deve ser disjunta de VegetableTopping.
4. Verifique se o axioma de disjuno foi adicionado corretamente: pressione Classify Taxonomy

40 of 83

(Classificar Taxonomia) na barra de ferramentas OWL. A ontologia classificada, e a classe


ProbeInconsistentTopping marcada em vermelho, indicando inconsistncia.

4.10)Condies necessrias e suficientes (classes primitivas e definidas)


As classes criadas at agora foram descritas apenas com condies necessrias. A condio necessria pode
ser lidas: se alguma coisa um membro da classe ento necessrio que preencha essas condies. O uso
de condies necessrias no permite dizer: se alguma coisa preenche essas condies ento deve ser um
membro dessa classe.
VOCABULRIO = se uma classe tem apenas condies necessrias ela conhecida como uma
classe primitiva.
Exemplo: uma subclasse de Pizza chamada CheesyPizza (PizzaDeQueijo) uma Pizza com pelo menos um
tipo de CheeseTopping (RecheioDeQueijo).

Exerccio 28: criao de subclasse de Pizza chamada CheesyPizza, com pelo


menos um recheio que um tipo de CheeseTopping
1. Selecione Pizza na hierarquia de classes da etiqueta OWLClasses.
2. Pressione Create Subclass (Criar Subclasse) para criar uma subclasse de Pizza; renomeie-a como
CheesyPizza.
3. Selecione CheesyPizza na hierarquia de classes; selecione NECESSARY na interface Asserted Conditions
(Condies Declaradas). Ao selecionar Asserted (Declarada), a opo Inferred (Inferida) aparece
automaticamente aps a execuo da classificao.
4. Pressione Create restriction (Criar Restrio) na interface Asserted Conditions (Condies Declaradas)
para exibir o dilogo correspondente.
5. Selecione E someValuesFrom como o tipo de restrio a criar.
6. Selecione hasTopping como propriedade a sofrer restrio.
7. Na caixa de edio do filler digite CheeseTopping, ou use o boto Insert class (Inserir classe) para exibir
um dilogo do qual CheeseTopping pode ser selecionado. Pressione Ok para fechar o dilogo e criar a
restrio.
A forma grfica Asserted Conditions (Condies Declaradas) deve agora estar parecida como a
apresentada na FIG.4.46.

Figura 4.46: a descrio de CheesyPizza , usando Necessary Conditions (Condies Necessrias)


SIGNIFICADO = a descrio de CheesyPizza indica que se alguma coisa membro da classe
CheesyPizza necessrio que seja membro da classe Pizza, e necessrio que tenha pelo menos
um recheio que seja membro da classe CheeseTopping.

41 of 83

A atual descrio de CheesyPizza indica que se alguma coisa um CheesyPizza necessariamente uma
Pizza, e alm disso, ainda precisa ter pelo menos um recheio que um tipo de CheeseTopping. Para dizer
isto usam-se condies necessrias. Considere agora um indivduo qualquer. Sabe-se que esse indivduo
membro da classe Pizza; sabe-se tambm que tem pelo menos um tipo de CheeseTopping.
Entretanto, pela atual descrio de CheesyPizza essas informaes no so suficientes para determinar que
o indivduo membro da classe CheesyPizza. Para que isto seja possvel preciso mudar as condies de
CheesyPizza, de condies necessrias para condies necessrias e suficiente. As condies no vo ser
apenas necessrias para associao a classe CheesyPizza, elas vo ser tambm suficientes para determinar
que qualquer indivduo que as satisfaa um membro de CheesyPizza.
VOCABULRIO = uma classe que tem pelo menos um conjunto de condies necessrias e
suficientes conhecida como Defined Class (Classe Definida).
VOCABULRIO = classes que tem apenas condies necessrias so tambm conhecidas
como Partial Classes (Classes Parciais). Classes que tem pelo menos um conjunto de
condies necessrias e suficientes so tambm conhecidas como Complete Classes (Classes
Completas).
Para converter condies necessrias para condies necessrias e suficientes, movem-se as condies do
cabealho NECESSARY no campo Asserted Conditions (Condies Declaradas) para o cabealho
NECESSARY & SUFFICIENT. Isto pode ser feito arrastando e soltando as condies, uma a uma.

Exerccio 29: converso de condies necessrias de CheesyPizza em


condies necessrias e suficientes
1. Selecione CheesyPizza na hierarquia de classes.
2. Em Asserted Conditions (Condies Declaradas) selecione E hasTopping CheeseTopping.
3. Arraste a restrio E hasTopping CheeseTopping de NECESSARY para NECESSARY & SUFFICIENT.
4. Selecione a classe Pizza.
5. Arraste a classe Pizza de NECESSARY para cima de E hasTopping CheeseTopping.
O campo Asserted Conditions deve parecer com a FIG.4.41:

Figura 4.41: a descrio de CheesyPizza, usando condies Necessary and Sufficient

SIGNIFICADO = a descrio de CheesyPizza foi convertida em uma definio. Se alguma


coisa uma CheesyPizza necessrio que seja uma Pizza, e tambm necessrio que pelo
menos um de seus recheios seja membro da classe CheeseTopping. Alm disso, se um indivduo
um membro da classe Pizza e ele tem pelo menos um recheio que membro da classe
CheeseTopping ento essas condies so suficientes para determinar que o indivduo deve ser
um membro da classe CheesyPizza. A noo de condies necessrias e suficientes ilustrada na
FIG. 4.48 e 4.48a.

42 of 83

Figura 4.48: Necessary and Sufficient conditions

Condies
necessrias

Se um indivduo membro de NamedClass (ClasseNomeada) ento


obrigatrio que satisfaa as condies. Entretanto, se algum indivduo satisfaz as
condies necessrias, no se pode dizer que seja membro de NamedClass: as
condies no so suficientes para que se possa dizer isso. Tal fato indicado
pela direo da seta.

Condies
necessrias e
suficientes

Se um indivduo membro de NamedClass (ClasseNomeada) ento


obrigatrio que satisfaa as condies. Se algum indivduo satisfaz as condies
ento obrigatrio que seja membro de NamedClass. Tal fato indicado pela
seta bidirecional.
Fig. 4.48 a: condies necessrias e suficientes

ATENO = Se por acidente Pizza foi descrita como NECESSARY & SUFFICIENT (ao invs
de E hasTopping CheeseTopping) no exerccio 29, o campo Asserted Conditions (Condies
Declaradas) vai aparecer como a imagem mostrada na FIG. 4.49. Neste caso, uma nova
condio necessria e suficiente foi criada, e no a desejada. Para corrigir este erro, arraste
Pizza sobre a restrio E hasTopping CheeseTopping.

Figura 4.49: Uma descrio incorreta de CheesyPizza


DICA = condies podem tambm ser transferidas de NECESSARY para NECESSARY &
SUFFICIENT (e vice versa) usando Cut & Paste (Cortar e Colar). Clique com o boto direito
em uma condio e selecione Cut & Paste no menu.

Resumindo... se a classe A descrita por condies necessrias, ento pode-se dizer que se um indivduo
membro de A, ele deve satisfazer as condies. No se pode dizer que qualquer indivduo que satisfaa tais
condies um membro da classe A. Entretanto, se a classe A definida usando condies necessrias e
suficientes pode-se dizer que se um indivduo membro da classe A ele deve satisfazer as condies, e
pode-se dizer que qualquer indivduo satisfaz essas condies ento ele deve ser membro de A. As
condies no so apenas necessrias para a associao com A, mas tambm suficientes de forma a
determinar que, se alguma coisa satisfaz essas condies, um membro de A.
Como isso til na prtica? Suponha outra classe B, e que quaisquer indivduos que so membros da classe
B tambm satisfazem as condies que definem a classe A. Pode-se determinar que a classe B subclasse
de A. Verificar a relao classe/superclasse (subsumption relationship) de classes uma tarefa bsica de um

43 of 83

MI de lgica descritiva, e possvel us-lo para computar automaticamente a hierarquia.


OBSERVAO = Em OWL possvel ter conjuntos mltiplos de condies necessrias e
suficientes.

4.10.1)Classes Primitivas e definidas


As classes que tem pelo menos um conjunto de condies necessrias e suficientes so conhecidas como
Defined Classes (Classes Definidas): tais classes tem uma definio, e qualquer indivduo que satisfaa tal
definio pertence a classe. Classes que no tem nenhum conjunto de condies necessrias e suficientes
(apenas condies necessrias) so conhecidas como Primitive Classes (Classes Primitivas). No
Protege-OWL, as Defined Classes (Classes Definidas) possuem um cone com fundo alaranjado. As
Primitive Classes (Classes Primitivas) possuem um cone com fundo amarelo. importante entender que o
MI pode classificar automaticamente apenas as classes definidas, ou seja, classes com pelo menos um
conjunto de condies necessria e suficientes.

4.11)Classificao automtica
Um dos benefcios em construir uma ontologia com a sublinguagem OWL-DL a possibilidade computar
automaticamente a hierarquia de classes atravs de um MI. No caso de ontologias muito grandes (milhares
de classes), esse auxlio automtico para computar relacionamentos subclasse-superclasse vital. Sem um
MI muito difcil manter grandes ontologias em um estado logicamente correto. Em casos em que as
ontologias tem classes com muitas superclasses (herana mltipla) uma boa prtica construir uma
hierarquia de classes como uma rvore simples. Dessa forma, as classes na Asserted Hierarchy (Hierarquia
Declarada, aquela construda manualmente) no tm mais do que uma superclasse. Computar e manter
herana mltipla tambm trabalho do MI. Esta tcnica (as vezes chamada normalizao de ontologia)
ajuda a manter a ontologia em um estado sustentvel e modular. Isso promove a reutilizao da ontologia e
minimiza erros humanos inerentes na manuteno de hierarquias com herana mltipla.
Uma vez criada uma definio para CheesyPizza, pode-se usar o MI para computar automaticamente
subclasses de CheesyPizza.

Exerccio 30: uso do MI para computar automaticamente a subclasse de


CheesyPizza
1. Certifique-se de que um MI (por exemplo, o RACER) est funcionando.
2. Pressione o boto Classify Taxonomy (Classificar Taxonomia) na barra de ferramentas.
A Inferred Hierarchy (Hierarquia Inferida) calculada e abre-se a nova janela com os resultados, similar
aos apresentados FIG.4.50. As FIG. 5.51 e FIG. 4.52 mostram uma viso OWLViz (plug-in) das hierarquias
declarada e inferida, respectivamente. Observe que as classes cujas superclasses foram modificadas pelo MI
so destacadas em azul.

44 of 83

Figura 4.50: A Asserted Hierarchy (Hierarquia Declarada) e a Inferred Hierarchy (Hierarquia


Inferida) apresentando os resultados da classificao para CheesyPizza
SIGNIFICADO = o MI determinou que MargheritaPizza, AmericanaPizza, SohoPizza e
AmericanHotPizza so subclasses da CheesyPizza. Isto ocorreu porque definiu-se CheesyPizza
usando condies necessrias e suficientes. Um indivduo que uma Pizza, e que tem pelo
menos um recheio que um CheeseTopping (RecheioDeQueijo), membro da classe
CheesyPizza. Como todos os indivduos descritos pelas classes MargheritaPizza,
AmericanaPizza, AmericanHotPizza e SohoPizza so Pizzas e tem pelo menos um recheio que
um CheeseTopping (ou recheios que pertencem a subclasses de CheeseTopping), o MI inferiu
que essas classes devem ser subclasses de CheeseTopping.

Figura 4.51: vista do plug-in OWLViz apresentando a Asserted Hierarchy (Hierarquia Declarada)
para CheesyPizza

Fig.4.52: vista do plug-in OWLViz apresentando a Inferred Hierarchy (Hierarquia Inferida) para
CheesyPizza
ATENO = em geral, as classes no so classificadas como subclasses de Primitive Classes
(Classes Primitivas) pelo MI. As classes primitivas so aquelas que possuem apenas condies
necessrias. A exceo a esse fato ocorre quando uma propriedade tem um domnio que uma
classe primitiva. Isto pode fazer com que as classes sejam reclassificadas sob a classe primitiva
que o domnio da propriedade. No se recomenda o uso do domnio de propriedade para
causar tais efeitos.
4.11.1)Resultados da classificao
Depois de finalizada a classificao, as classes inconsistentes so exibidas em um painel conforme

45 of 83

apresentado na FIG. 4.53: o painel Classification Results (Resultados de Classificao) aberto na parte de
baixo da tela do Protege-OWL. O cone Spanner (uma pequena chave-inglesa) no lado esquerdo do painel
corresponde ao boto Assert Selected Changes (Aceitar Alteraes Selecionadas). Ao pressionar este
boto, os relacionamentos superclasse-subclasse inferidos pelo MI so transportados para a Asserted
Hierarchy (Hierarquia Declarada), a qual foi manualmente construda. Por exemplo, se o boto Assert
Selected Changes (Aceitar Alteraes Selecionadas) foi acionado com a seleo mostrada na FIG. 4.53,
CheesyPizza adicionado como superclasse de AmericanaPizza.

Figura 4.53: o painel Classi cation Results (Resultados de Classificao)

ATENO = Apesar da existncia desta facilidade, ela no considerada uma boa prtica para
inserir relacionamentos inferidos em hierarquias construdas manualmente ou na hierarquia
declarada enquanto a ontologia est sendo desenvolvida. Por isso aconselha-se evitar o uso
desse boto durante o desenvolvimento de uma ontologia.

4.12)Restries Universais
Todas as restries criadas at agora so restries existenciais (E). Esse tipo de restrio especifica a
existncia de pelo menos um relacionamento atravs de determinada propriedade com um indivduo
membro de uma classe, identificada pelo filler. Entretanto, a restrio existencial no obriga que os nicos
relacionamentos atravs da propriedade que possa existir sejam obrigatoriamente com indivduos membros
de uma classe especfica (filler).
Por exemplo, pode-se usar uma restrio existencial E hasTopping MozzarellaTopping para descrever os
indivduos que tem pelo menos um relacionamento atravs da propriedade hasTopping, com um indivduo
membro da classe MozzarellaTopping. Esta restrio no implica em que todos os relacionamentos
hasTopping devam ser, obrigatoriamente, membros da classe MozzarellaTopping. Para restringir um
relacionamento atravs de uma propriedade com indivduos membros de uma classe especifica, deve-se
usar a Universal Restriction (Restrio Universal).
As Universals Restictions (Restries Universais) so identificadas pelo smbolo A. Tais restries
condicionam o relacionamento atravs da propriedade com indivduos que so membros de uma classe
especfica. Por exemplo, a restrio universal expressa pela declarao A hasTopping MozzarellaTopping
descreve os indivduos cuja totalidade dos relacionamentos hasTopping ocorre com membros da classe
MozzarellaTopping. Os indivduos no tem relacionamentos hasTopping com indivduos que no so
membros de MozzarellaTopping.
VOCABULRIO = Universals Restictions (Restries Universais) so tambm conhecidas
como All Restrictions (Todas Restries).
ATENO = a Restrio Universal citada acima A hasTopping MozzarellaTopping, tambm
descreve os indivduos que no participam de nenhum relacionamento hasTopping. Um
indivduo que no participa de nenhum relacionamento hasTopping, por definio, nunca ter
um relacionamento hasTopping com indivduos que no so membros da classe
MozzarellaTopping, e a restrio assim satisfeita.

46 of 83

ATENO = para uma determinada propriedade, Universals Restictions (Restries


Universais) no especificam a existncia de relacionamento. Apenas indicam que, se existe um
relacionamento para a propriedade, ele ocorre para indivduos membros de uma classe.
Por exemplo, deseja-se criar a classe VegetarianPizza (Pizza Vegetariana), de forma que os indivduos
membros dessa classe possam apenas ter recheios que so ou CheeseTopping (RecheioDeQueijo) ou
VegetableTopping (RecheioDeVegetais). Nesse caso, pode-se usar a restrio universal.

Exerccio 31: criao de classe para descrever VegetarianPizza (Pizza


Vegetariana)
1. Crie uma subclasse de Pizza, e nome-la VegetarianPizza.
2. Selecione VegetarianPizza, clique em NECESSARY no campo Asserted Conditions (Condies
Declaradas).
3. Pressione Create restriction (Criar Restrio) no campo Asserted Conditions (Condies Declaradas)
para exibir o dilogo Create restriction (Criar Restrio).
4. Selecione o tipo de restrio A allValuesFrom para criar uma restrio de quantificador universal.
5. Selecione hasTopping como a propriedade a sofrer restrio.
6. O filler CheeseTopping (RecheioDeQueijo) ou VegetableTopping (RecheioDeVegetais). Digite
CheeseTopping na caixa de edio do filler (ou use o boto Insert class). Agora preciso usar o operador
unionOf (unioDe) entre os nomes das classes: insira operador unionOf usando o boto correspondente no
painel de construo de expresses, conforme apresentado na FIG. 4.54. Em seguida, digite a classe
VegetableTopping (ou use o boto Insert class). A expresso CheeseTopping VegetableTopping ento
apresentada na caixa de edio de filler.

Figura 4.54: Expression Builder Panel (Painel Construtor de Expresses) para inserir UnionOf
(UnioDe)
7. Pressione o boto Ok para fechar o dilogo e criar a restrio. Caso exista algum erro o dilogo no
fechado e uma mensagem de erro aparece na parte de baixo do painel.
Neste ponto, o campo Asserted Conditions (Condies Declaradas) deve parecer como a FIG. 4.55.

Figura 4.55: descrio de VegetarianPizza, usando Necessary Conditions (Condies Necessrias)

47 of 83

SIGNIFICADO = se alguma coisa membro da classe VegetarianPizza necessrio que ela


seja uma Pizza, e necessrio que tenha apenas ( A = quantificador universal) recheios que so
tipos de CheeseTopping (RecheioDeQueijo) ou tipos de VegetableTopping
(RecheiosDeVegetais). Em outras palavras, todos os relacionamentos hasTopping (temRecheio)
dos quais os indivduos membros de VegetarianPizza participam, devem ser com indivduos que
so membros das classes CheeseTopping ou VegetableTopping. A classe VegetarianPizza
tambm contm indivduos que so Pizzas e no participam em nenhum relacionamento
hasTopping.

DICA = Em vez de usar o boto Insert union (Inserir unio) no exerccio anterior, pode-se
simplesmente digitar OR (OU) na caixa de edio do filler, e a palavra automaticamente
convertida para o smbolo de unio ().
ATENO = em situaes como a do exemplo acima, um erro comum usar a interseo ao
invs da unio. Por exemplo, CheeseTopping VegetableTopping, lido como CheeseTopping
AND VegetableTopping. Embora CheeseTopping AND VegetableTopping seja uma frase
comum em linguagem natural, em termos lgicos significa que algo simultaneamente um tipo
de CheeseTopping e de VegetableTopping. Isto incorreto conforme demonstrado na seo
4.9.4. Se a classe CheeseTopping e VegetableTopping no so disjuntas, possvel dizer isso
com legitimidade lgica. Dessa forma, a classe no inconsistente e portanto no ser destacada
por um MI.

ATENO = no exemplo acima, uma opo criar duas restries universais, uma para
CheeseTopping (A hasTopping CheeseTopping) e outra para VegetableTopping (A hasTopping
VegetableTopping). Entretanto, quando restries mltiplas so utilizadas (para qualquer tipo
de restrio) a descrio total considerada como a interseo das restries individuais. Isso
equivalente a uma restrio com um filler que a interseo de MozzarellaTopping e
TomatoTopping. Conforme explicado, isto incorreto do ponto de vista lgico.
No momento, VegetarianPizza descrita usando condies necessrias. Entretanto, a descrio de
VegetarianPizza poderia ser considerada como completa. Sabe-se que qualquer indivduo que satisfaa a
essas condies deve ser um VegetarianPizza. Pode-se portanto, converter as condies necessrias de
VegetarianPizza em condies necessrias e suficientes. Isto vai permitir usar o MI para determinar a
subclasse de VegetarianPizza.

Exerccio 32: converso das condies necessrias de VegetarianPizza em


condies necessrias e suficientes
1. Selecione VegetarianPizza na hierarquia de classes.
2. No campo Asserted Conditions (Condies Declaradas) selecione a restrio universal (A) na
propriedade hasTopping.
3. Arraste hasTopping de NECESSARY para NECESSARY & SUFFICIENT.
4. Selecione a classe Pizza.
5. Arraste a classe Pizza que est em NECESSARY para cima de hasTopping.

48 of 83

O campo Asserted Conditions (Condies Declaradas) deve estar semelhante a FIG.4.56.

Figura 4.56: o campo Asserted Conditions e a definio de VegetarianPizza com Necessary and
Sufficient Conditions (Condies Necessrias e Suficientes)
SIGNIFICADO = converteu-se a descrio de VegetarianPizza em uma definio. Se alguma
coisa uma VegetarianPizza, ento necessrio que seja uma Pizza e tambm necessrio que
todos os recheios pertenam a classe CheeseTopping ou VegetableTopping. Alm disso, se
alguma coisa membro da classe Pizza e todos os recheios so membros da classe
CheeseTopping ou VegetableTopping, essas condies so suficientes para reconhecer que tal
coisa ser um membro da classe VegetarianPizza.

4.13)Classificao automtica e OWR-Open World Reasoning (Raciocnio de Mundo Aberto)


Deseja-se usar o MI para computar automaticamente o relacionamento superclasse-subclasse (subsumption
relationship) entre MargheritaPizza e VegetarianPizza, e entre SohoPizza e VegetarianPizza. Acredita-se
que MargheritaPizza e SohoPizza devem ser pizzas vegetarianas (subclasses de VegetarianPizza) porque
tem recheios vegetarianos: pela definio, recheios vegetarianos so membros das classes CheeseTopping
ou VegetableTopping e de suas subclasses. Tendo anteriormente criado uma definio para VegetarianPizza
usando um conjunto de condies necessrias e suficientes, pode-se usar o MI para classificao
automtica e para determinar as pizzas que so VegetarianPizza na ontologia.

Exerccio 33: uso do MI para classificar a ontologia


1.Certifique-se de que um MI (por exemplo, o RACER) est em execuo. Pressione o boto Classify
taxonomy (Classificar Taxonomia).
Observe que MargheritaPizza e SohoPizza no foram classificadas como subclasses de VegetarianPizza.
Pode parecer estranho, pois MargheritaPizza e SohoPizza tem ingredientes vegetarianos, ou seja,
ingredientes que so tipos de CheeseTopping ou de VegetableTopping. No entanto, pode-se observar que
MargheritaPizza e SohoPizza perderam algo da definio, e assim no podem ser classificadas como
subclasses de VegetarianPizza.
As inferncias em OWL (Lgica Descritiva) se baseiam na OWA-Open World Assumption (Suposio de
Mundo Aberto), tambm conhecida como OWR-Open World Reasoning (Raciocnio de Mundo Aberto). A
Suposio de Mundo Aberto significa que no se pode assumir que alguma coisa no existe, at que seja
estabelecido explicitamente que ela no existe. Em outras palavras, porque alguma coisa no foi definida
como verdade, no significa que ela falsa: presume-se que tal conhecimento apenas no foi adicionado a
base de conhecimento.
No caso da ontologia de Pizza, indica-se que MargheritaPizza tem recheios que so tipos de
MozzarellaTopping e tambm tipos de TomatoTopping. Por causa da Suposio de Mundo Aberto, at que
se diga explicitamente que uma MargheritaPizza tem apenas esses dois tipos de recheios, presume-se (pelo
MI) que uma MargheritaPizza pode ter outros recheios. Para especificar explicitamente que uma
MargheritaPizza tem recheios que so tipos de MozzarellaTopping ou tipos de MargheritaTopping, e
apenas estes, deve-se adicionar um Closure Axiom (Axioma de Fechamento) propriedade hasTopping.
Um closure axiom tambm chamado de Closure Restriction (Restrio de Fechamento)

49 of 83

4.13.1)Axiomas de fechamento
Um Closure Axiom (Axioma de Fechamento) consiste em uma restrio universal que atua na propriedade
informando que ela pode apenas ser preenchida por fillers especficos. A restrio tem um filler que a
unio dos fillers que ocorrem nas restries existenciais da propriedade. Por exemplo, o Closure Axiom
(Axioma de Fechamento) da propriedade hasTopping para MargheritaPizza uma restrio universal que
atua na propriedade hasTopping, com um filler que a unio de MozzarellaTopping e de TomatoTopping,
ou seja, a declarao:
A hasTopping (MozzarellaTopping TomatoTopping).

Exerccio 34: adio de axioma de fechamento propriedade hasTopping


para MargheritaPizza
1. Selecione MargheritaPizza na hierarquia de classe da etiqueta OWLClasses.
2. Selecione NECESSARY no campo Asserted Conditions (Condies Declaradas).
3. Pressione o boto Create Restriction (Criar Restrio) no campo Asserted Conditions (Condies
Declaradas) para exibir o dilogo.
4. Selecione o tipo de restrio A allValuesFrom (restrio universal).
5. Selecione hasTopping como a propriedade a sofrer restrio.
6. Na caixa de edio de fillers digite MozzarellaTopping TomatoTopping.
Isto tambm pode ser feito digitando MozzarellaTopping OR TomatoTopping e nesse caso, o OR (OU)
convertido automaticamente para o smbolo . Pode-se tambm usar o boto Insert class (Inserir Classe) e
o boto Insert unionOf (Inserir UnioDe): insere-se a classe MozzarellaTopping, depois insere-se o
smbolo unionOf e por fim a classe TomatoTopping.
7. Pressione o boto Ok para criar a restrio e adicion-la a classe MargheritaPizza.
A forma grfica Asserted Conditions (Condies Declaradas) deve estar similar a mostrada na FIG.4.57.

Figura 4.57: campo Asserted Conditions (Condies Declaradas); MargheritaPizza com o axioma de
fechamento para a propriedade hasTopping
SIGNIFICADO = isto significa que um indivduo membro da classe MargeritaPizza deve ser
membro da classe Pizza, deve ter pelo menos um recheio que um tipo de MozzarellaTopping,
deve ter pelo menos um recheio que membro de TomatoTopping, e os recheios devem ser
apenas tipos de MozzarellaTopping ou TomatoTopping.

50 of 83

ATENO = um erro comum usar apenas restries universais nas descries. Por exemplo,
descreve-se MargheritaPizza como subclasse de Pizza, usando apenas a declarao A
hasTopping (MozzarellaTopping TomatoTopping) sem nenhuma restrio existencial.
Entretanto, pela semntica da restrio universal, a declarao significa realmente: coisas que
so Pizzas e somente tem recheios que so MozzarellaTopping ou TomatoTopping, OU, coisas
que so Pizzas e no tem qualquer recheio.

Exerccio 35: adicio de axioma de fechamento a propriedade hasTopping


para SohoPizza
1. Selecione SohoPizza na hierarquia de classes da etiqueta OWLClasses.
2. Selecione NECESSARY no campo Asserted Conditions (Condies Declaradas).
3. Pressione o boto Create restriction (Criar Restrio) para exibir o dilogo.
4. Selecione o tipo de restrio A allValuesFrom, para criar uma restrio de quantificador universal.
5. Selecione hasTopping como a propriedade a sofrer restrio.
6. Na caixa de edio dos fillers insira a unio dos recheios para SohoPizza, digitando ParmezanTopping
OR MozzarellaTopping OR TomatoTopping OR OliveTopping. A palavra-chave OR (OU)
automaticamente convertida para o smbolo unionOf ().
7. Pressione Ok para criar a restrio e fechar o dilogo. Se o dilogo no fechar devido a erros, verifique
se os nomes das classes foram escritos corretamente.
Para complementar, adicione um Closure Axiom (Axioma de Fechamento) a propriedade hasTopping em
AmericanaPizza e em AmericanHotPizza. A atividade de inserir manualmente axiomas de fechamento
parece trabalhosa, mas o Protege-OWL possui recursos para a criao facilit-la.

Exerccio 36: criao automatica de axioma de fechamento na propriedade


hasTopping para AmericanaPizza
1. Selecione AmericanaPizza na hierarquia de classes da etiqueta OWLClasses.
2. No campo Asserted Conditions (Condies Declaradas) clique com o boto direito sobre uma das
restries existenciais de hasTopping. Selecione Add closure axiom (Adicionar um axioma de fechamento).
Uma restrio de fechamento (restrio universal) criada na propriedade hasTopping, a qual contm a
unio dos fillers existenciais de hasTopping.

Exerccio 37: criao automatica de axioma de fechamento para a


propriedade hasTopping de AmericanHotPizza
1. Selecione AmericanHotPizza na hierarquia de classes da etiqueta OWLClasses.
2. No campo Asserted Conditions (Condies Declaradas) clique com o boto direito sobre uma das
restries existenciais de hasTopping. Selecione Add closure axiom (Adicionar um axioma de fechamento).

51 of 83

Tendo adicionado axiomas de fechamento na propriedade hasTopping para as Pizzas, usa-se agora o MI
para computar automaticamente a classificao.

Exerccio 38: usao do MI para classificar a ontologia


1. Pressione o boto Classify taxonomy (Classificar Taxonomia) na barra de ferramentas OWL para chamar
o MI.
A ontologia classificada e os resultados so apresentados no painel Inferred Hierarchy (Hierarquia
Inferida). Desta vez, MargheritaPizza e SohoPizza esto classificadas como subclasses de VegetarianPizza.
Isto ocorreu porque especificou-se a propriedade hasTopping como Closed (Fechada) nas Pizzas, para
dizer exatamente quais recheios elas tem. Alm disso, VegetarianPizza foi definida para ser uma Pizza
apenas com tipos de CheeseTopping e de VegetableTopping. A FIG.4.58 apresenta as hierarquias atuais, a
declarada e a inferida. Observe que a Asserted Hierarchy (Hierarquia Declarada) mais simples e mais
limpa do que a Inferred Hierarchy (Hierarquia Inferida). Embora a ontologia em questo uma estrutura
simples neste estgio, o uso do MI pode auxiliar, especialmente no caso de grandes ontologias, a manter a
hierarquia de herana mltipla.

Figura 4.58: As hierarquias inferida e declarada, mostrando o antes e o depois da classificao de


Pizzas em CheesyPizzas e VegetarianPizzas.

4.14)Parties de Valor
Nessa seo criam-se Value Partitions (Parties de Valor), as quais so usadas para refinar as descries
de classes. Value Partitions (Parties de Valor) no so parte da linguagem OWL, ou de outra linguagem
de ontologia, so um padro de projeto.
Padres de projetos em ontologias so similares a padres de projeto em programao orientada a objetos:
so solues desenvolvidas por especialistas e reconhecidos como solues para problemas comuns de
modelagem. Conforme mencionado, as Value Partitions (Parties de Valor) podem ser criadas para refinar
descries de classe. Por exemplo, cria-se uma Value Partition chamada SpicinessValuePartition
(PartioDeValorApimentada) para descrever o spiciness ("o tanto de pimenta") de PizzaToppings
(RecheiosDePizza). As Value Partitions restringem a faixa de valores possveis para uma lista exaustiva,
por exemplo, a SpicinessValuePartition restringe a faixa para Mild (Levemente apimentado), Medium
(Mdio), e Hot (Muito Apimentado).

52 of 83

Para criar uma Value Partition em OWL so necessrios alguns passos:


1. Criar uma classe para representar a Value Partition. Por exemplo, para representar a partio de valor
spiciness ("o tanto de pimenta"), cria-se a classe SpicinessValuePartition (PartioDeValorApimentada).
2. Criar subclasses da partio para representar as opes. Por exemplo, pode-se criar as classes Mild
(Levemente apimentado), Medium (Mdio), e Hot (Muito Apimentado) como subclasses da classe
SpicynessValuePartition.
3. Tornar essas subclasses disjuntas.
4. Fornecer um Covering Axiom (Axioma de Cobertura), de forma a que a lista de valores seja exaustiva.
5. Criar uma Object Property (Propriedade Objeto) para a Value Partition. Por exemplo, para a
SpicinessValuePartition pode-se criar a propriedade hasSpiciness (TemPimenta).
6. Torne essa propriedade funcional.
7. Defina o range (escopo) da propriedade como a classe ValuePartition. Por exemplo, para a propriedade
hasSpiciness o escopo definido como SpicinessValuePartition.
Devido ao maior nmero e a complexidade de passos que mais fcil cometer erros. Despende-se mais
tempo para criar algumas poucas ValuePartitions. Felizmente, o Protege OWL possui um assistente para
criar ValuePartitions, o qual denominado Create ValuePartition (Criar Partio de Valor).
Deseja-se criar um ValuePartition para descrever o tempero dos recheios de Pizza. Ento ser possvel
classificar as Pizzas em pizzas apimentadas e em pizzas no-apimentadas. Ser possvel tambm dizer que
os recheios das pizzas tm um tanto de pimenta que as classifique como: Mild (Levemente apimentado),
Medium (Mdio), e Hot (Muito Apimentado). Note-se que tais opes so mutuamente exclusivas: alguma
coisa no pode ser ao mesmo tempo mild (Levemente apimentado), e hot (Muito Apimentado), ou uma
combinao de opes.

Exerccio 39: criao de um ValuePartition para representar o spiciness


("tanto"de pimenta) em recheios de Pizza
1. Selecione Create Value Partition (Criar Partio de Valor) no menu do Protege (Tools Patterns
Value Partition...) para chamar o ValuePartition Wizard (Assistente de Partio de Valor). Vide FIG.
Extra 8.
2. Na primeira pgina do assistente digite SpicinessValuePartition como nome da classe ValuePartition e
pressione o Next.
3. Em seguida, digite hasSpiciness como o nome da propriedade ValuePartition, e pressione o Next.

53 of 83

FIG. Extra 8: acesso ao menu ValuePartition no Protege 3.4


4. Agora preciso especificar os valores para o valueType (tipo de valor). Na rea de texto digite Mild e
pressione enter, digite Medium e pressione enter, e digite Hot e pressione enter. Isto ir criar as subclasses
Mild, Medium e Hot da classe SpicinessValuePartition. Pressione Next para continuar.
5. O nome do ValuePartition verificado. Pressione Next.
6. A pgina de anotaes est disponvel: pode-se adicionar anotaes para o ValuePartition caso desejado.
Para continuar, pressione Next.
7. A ltima pgina do assistente solicita que se especifique uma classe para funcionar como um root (raiz),
abaixo da qual todos as ValuePartitions sero criadas. Recomenda-se que as ValuePartitions sejam criadas
sob uma classe nomeada, a qual a opo padro. Pressione Finish para criar a ValuePartition.

Analise as tarefas do assistente que reduzem o trabalho manual do usurio (FIG. 4.59 e 4.60):
1. Cria-se uma classe ValuePartition como subclasse de owl:Thing.
2. Cria-se uma classe SpicinessValuePartition como subclasse de ValuePartition.
3. Criam-se as classes Mild, Medium, Hot como subclasses de SpicinessValuePartition.
4. Aplica-se a disjuno as classes Mild, Medium e Hot.
5. Cria-se a classe unio de Mild, Medium e Hot como subclasse de SpicinessValuePartition.
6. Cria-se uma Object Property (propriedade de objeto) hasSpiciness.
7. A propriedade hasSpiciness se torna funcional.
8. Define-se SpicinessValuePartition como o escopo da propriedade hasSpiciness.

Figura 4.59: classes adicionadas pelo assistente Create ValuePartition (Criar Partio)

54 of 83

Figura 4.60: o campo Asserted Conditions (Condies Declaradas) mostrando a descrio da classe
SpicinessValuePartition

4.14.1)Axiomas de Cobertura
Como parte do padro ValuePartition usou-se um Covering Axiom (Axioma de Cobertura), o qual consiste
de duas partes: a classe que est sendo coberta, e as classes que formam a cobertura. Por exemplo, tem-se
trs classes A, B e C, e as classes B e C so subclasses de A. Tem-se um Covering Axiom (Axioma de
Cobertura) que especifica que a classe A coberta pela classe B e tambm pela classe C. Isto significa que
um membro da classe A deve ser membro da classe B e/ou C. Se as classes B e C so disjuntas, ento um
membro de A deve ser um membro de B ou de C. Em geral, embora B e C sejam subclasses de A, um
indivduo pode ser um membro de A sem ser membro de uma das classes B ou C.
No Protege-OWL um Covering Axiom (Axioma de Cobertura) manifesta-se como uma classe que a unio
das classes que esto sendo cobertas, as quais formam a superclasse da classe que est sendo coberta. No
caso de A, B e C, a classe A pode ter uma superclasse de B C. O efeito de um axioma de cobertura
representado na Fig. 4.61.

Figura 4.61: um esquema que mostra o efeito de usar um Covering Axiom para cobertura da classe A
com as classes B e C
A SpicinessValuePartition tem uma axioma de cobertura para indicar sua cobertura pelas classes Mild,
Medium e Hot, as quais so disjuntas para que um indivduo no possa ser um membro de mais de uma
delas. A classe SpicinessValuePartition tem uma superclasse que Mild Medium Hot. A cobertura
indica que um membro de SpicinessValuePartition deve ser membro de uma das classes: Mild ou Medium
ou Hot.
A diferena entre usar ou no um axioma de cobertura representada na Fig. 4.62. Em ambos os casos, as
classes Mild, Medium e Hot so disjuntas, elas no se sobrepe. No caso de no utilizao do axioma de
cobertura, um indivduo pode ser um membro da classe SpicinessValuePartition e no ser membro de Mild,
Medium ou Hot, uma vez que SpicynessValuePartition no coberta por Mild, Medium e Hot. Compare
com o caso em que a cobertura de axioma usada. Se um indivduo membro da classe
SpicinessValuePartition, ele deve ser membro de uma das trs subclasses Mild, Medium ou Hot, uma vez
que SpicinessValuePartition coberta por Mild, Medium e Hot.

Figura 4.62: o efeito de usar um covering axiom sobre SpicinessValuePartition

55 of 83

4.15)O Property Matrix Wizard (Assistente Matriz de Propriedade)


Pode-se usar o SpicinessValuePartition para descrever os temperos dos recheios de Pizza. Para fazer isto,
adicione uma restrio existencial para cada tipo de PizzaTopping (Recheio de Pizza), de forma a indicar
que ela apimentada. A forma da restrio E hasSpiciness SpicynessValuePartition, onde
SpicinessValuePartition Mild, Medium ou Hot. Como existem mais de vinte recheios na ontologia de
pizza, o trabalho pode ser demorado. Para ajudar nesse trabalho existe o Property Matrix Wizard
(Assistente Matriz de Propriedade), o qual usado para adicionar restries existenciais junto a
propriedades de muitas classes.
N do T: Na verso 3.4 (Build 130) do Protege, o Property Matrix Wizard no est presente
com esse nome. O recurso correspondente o Quick Restriction Editor. Algumas
funcionalidades so diferentes daquelas apresentadas no tutorial, como por exemplo, os
botes de transferncia (>> e <<) que no existem no Quick Restriction Editor (os objetos
devem ser arrastados). Assim, os exerccios seguintes foram adaptados para que sua
realizao se tornasse possvel na verso do Protege mencionada.

Exerccio 40: uso do Assistente Matriz de Propriedade para especificar o


tempero de recheios de Pizza
1. Inicie o assistente atravs do comando Quick Restriction Editor (Editor de Restrio Rpido), disponvel
no menu Tools Quick OWL (ver FIG. Extra 9)

Figura Extra 9: menu do Editor de Restrio Rpido


2. A primeira pgina do assistente solicita a seleo das classes. Selecione todas as classes de recheios de
pizza e arraste-as para a lista do lado direito, conforme apresentado na FIG. 4.63. Selecione somente as
classes que so recheios reais, e assim, classes como CheeseTopping no devem ser selecionadas. Pressione
Next.
3. Selecione a propriedade hasSpiciness e arraste-a para a coluna da direita. Pressione Next.
4. Especifique os fillers das propriedades clicando no campo Default (padro) de cada classe e
selecionando um valor: Mild, Medium ou Hot. Selecione o filler de Mild para todas as propriedades, exceto
para PepperoniTopping e SalamiTopping, que devem ter fillers Medium, e exceto para
JalapenoPepperTopping e SpicyBeef Topping, os quais devem ter fillers Hot. A tela deve estar similar a
apresentada na FIG. 4.65.
5. O prximo passo solicita que se atualize cada classe alterada para a dada propriedade. Deixe a caixa
Close desmarcada.
6. Pressione Finish para fechar o assistente e criar as restries sobre os recheios. Selecione alguns recheios
e observe que possuem restries atravs da propriedade hasSpiciness, com fillers de subclasses da partio
SpicinessValuePartition.

56 of 83

Figura 4.63: pgina de seleo de classes no Quick Restriction Editor

Figura 4.64: pgina de seleo de propriedades no Quick Restriction Editor

Figura: 4.65: painel de fillers de restrio no Quick Restriction Editor


Para completar esta seo, cria-se uma nova classe SpicyPizza, que deve ter Pizzas com recheios
apimentados como subclasses. Para fazer isto define-se a classe SpicyPizza como uma Pizza com pelo
menos um recheio (hasTopping) e um tempero apimentado (hasSpiciness) que Hot. Isto pode ser feito de
mais de uma maneira: vai-se criar uma restrio na propriedade hasTopping que tem uma restrio sobre a
propriedade hasSpiciness como seu filler.

Exerccio 41: criao de uma classe SpicyPizza como uma subclasse de Pizza
1. Criar uma subclasse de Pizza chamada SpicyPizza.
2. Selecione SpicyPizza na hierarquia de classes, escolha NECESSARY & SUFFICIENT em Asserted
Conditions (Condies Declaradas).

57 of 83

3. Pressione o boto Create restriction (Criar Restrio) no campo Asserted Conditions (Condies
Declaradas) para mostrar o dilogo.
4. Selecione E someValuesFrom como o tipo de restrio.
5. Selecione hasTopping como a propriedade a sofrer restrio.
6. O filler deve ser PizzaTopping E hasSpiciness Hot. Este filler descreve uma classe annima, a qual
contm os indivduos que so membros da classe PizzaTopping e tambm membros da classe de indivduos
relacionados aos membros da classe Hot atravs da propriedade hasSpiciness. Em outras palavras, diz
respeito as coisas que so PizzaToppings e tem um spiciness (tempero apimentado) que Hot. Para entrar
com esta restrio como um tipo de filler, digite no campo de edio de fillers a declarao:
PizzaTopping AND SOME hasSpiciness Hot.
A palavra AND convertida para o smbolo de interseo , a palavra SOME convertida para o smbolo
de quantificador existencial E.
7. O dilogo Create Restriction (Criar Restrio) deve agora estar similar a FIG. 4.67. Pressione Ok para
fechar o dilogo e criar a restrio.

Figura 4.67: Dilogo Create Restriction: uma restrio que descreve um SpicyTopping
8. Arraste Pizza de NECESSARY para a recm criada restrio:
(E hasTopping (PizzaTopping E hasSpiciness Hot)).
O campo Asserted Conditions (Condies Declaradas) deve estar agora similar a FIG.4.66.

Fig. 4.66: a definio de SpicyPizza


SIGNIFICADO = a descrio apresentada para SpicyPizza diz que todos os membros de
SpicyPizza so Pizzas e tem pelo menos um recheio com um spiceness (Tempero Apimentado)
Hot (muito apimentado). Informa tambm que qualquer coisa que uma Pizza e tem pelo
menos um recheio com spiciness (tempero apimentado) Hot (muito apimentado) um
SpicyPizza.
OBSERVAO = no passo final do exerccio anterior, criou-se uma restrio utilizando a
expresso de classe (PizzaTopping E hasSpiciness Hot) ao invs de uma classe nomeada com
seu filler. Tal filler foi construdo pela interseo entre a classe nomeada PizzaTopping e a
restrio E hasSpiciness Hot. Uma outra forma para fazer isto criar uma subclasse de
PizzaTopping chamada HotPizzaTopping e defini-la com um recheio hot (tempero apimentado)
a partir da condio necessria E hasSpiciness Hot. Pode-se ento usar E hasTopping
HotPizzaTopping na definio de SpicyPizza.

58 of 83

Agora vai-se chamar o MI e determinar quais pizzas so spicy (apimentadas) na ontologia.

Exerccio 42: uso do MI para classificar a ontologia


1. Pressione o boto Classifiy Taxonomy (Classificar Taxonomia) na barra de ferramentas do OWL para
chamar o MI e classificar a ontologia.
Depois de realizada a classificao automtica, surge o painel Inferred Hierarchy (Hierarquia Inferida).
Observe que AmericanHotPizza foi classificada como subclasse de SpicyPizza: o MI computou
automaticamente que qualquer indivduo que membro de AmericanHotPizza tambm membro de
SpicyPizza.

4.16)Restries de Cardinalidade
Em OWL pode-se descrever a classe dos indivduos que tem pelo menos um, ou no mximo ou exatamente
um nmero especifico de relacionamentos com outros indivduos ou datatype values (valores de tipos de
dados). As restries que descrevem essas classes so conhecidas como Cardinality Restrictions
(Restries de Cardinalidade). Para uma dada propriedade P, uma Minimum Cardinality Restriction
(Restrio de Cardinalidade Mnima) especifica o nmero mnimo de relacionamentos P dois quais um
indivduo deve participar. Uma Restrio Cardinalidade Mxima (Maximum Cardinality Restriction)
especifica o nmero mximo de relacionamentos P dos quais um indivduo pode participar. Uma
Cardinality Restriction (Restrio de Cardinalidade) especifica o nmero exato de relacionamentos P dos
quais um indivduo participa.
Os relacionamentos (por exemplo, entre dois indivduos) so considerados como relacionamentos separados
quando se pode garantir que tambm so distintos os indivduos que funcionam como fillers dos
relacionamentos. Por exemplo, a FIG. 4.68 apresenta o indivduo Matthew relacionado ao indivduos Nick e
Hai, atravs da propriedade worksWith. O indivduo Matthew satisfaz uma restrio de cardinalidade
mnima 2 na propriedade worksWith, caso os indivduos Nick e Hai sejam indivduos distintos.

Figura 4.68: Cardinality Restrictions (Restries de Cardinalidade): Counting Relationships


Adiciona-se uma restrio de cardinalidade a ontologia de Pizza. Vai-se criar uma nova subclasse de Pizza
chamada InterestingPizza (Pizza interessante), a qual ser definida com trs ou mais recheios.

Exerccio 43: criao de InterestingPizza (Pizza Interessante) com pelo menos


3 recheios.
1. Selecione a classe Pizza na etiqueta OWLClasses.
2. Crie uma subclasse de Pizza chamada InterestingPizza.
3. Selecione o NECESSARY & SUFFICIENT no campo Asserted Conditions (Condies Declaradas).

59 of 83

4. Pressione o boto Create restriction (Criar Restrio) para abrir o dilogo correspondente.
5. Selecione minCardinality como o tipo de restrio.
6. Selecione hasTopping como propriedade a sofrer a restrio.
7. Especifique uma Minimum Cardinality Restriction (Restrio de Cardinalidade Mnima) de 3, digitando
o nmero 3 na caixa de edio do filler.
8. Pressione Ok para fechar o dilogo e criar a restrio.
9. O campo Asserted Conditions (Condies Declaradas) deve estar com uma condio NECESSARY de
Pizza, e uma condio NECESSARY & SUFFICIENT de hasTopping 3. preciso que Pizza seja parte das
condies NECESSARY & SUFFICIENT. Arraste Pizza e solte sobre condio hasTopping 3.
O campo Asserted Conditions deve estar similar a imagem apresentada na FIG. 4.69.

Figura 4.69: o campo Asserted Conditions mostrando a descrio de InterestingPizza


SIGNIFICADO = O que significa isso? A definio de InterestingPizza (Pizza Interessante)
descreve o conjunto de indivduos que so membros da classe Pizza e que tem pelo menos trs
relacionamentos hasTopping com outros indivduos (distintos um do outro).

Exerccio 44: uso do MI para classificar a ontologia


1. Pressione Classify Taxonomy (Classificar Ontologia) na barra de ferramentas OWL.
Aps a classificao automtica da ontologia, surge a janela Inferred Hierarchy (Hierarquia Inferida).
Abra a hierarquia e observe que InterestingPizza agora tem como subclasses AmericanaPizza,
AmericanHotPizza e SohoPizza. Observe ainda que MargheritaPizza no foi classificada sob
InterestingPizza porque tem apenas dois tipos distintos de recheio.

60 of 83

5. Mais sobre OWR-Open World Reasoning (Raciocnio de Mundo


Aberto)
Os exemplos dessa seo demonstram novas nuances do Raciocnio Aberto de Mundo.
Vai-se criar uma classe NonVegetarianPizza (PizzaNoVegetariana) para complementar a categorizao de
Pizzas de VegetarianPizzas. A NonVegetarianPizza deve conter todas as Pizzas que no so
VegetarianPizzas. Para isso, cria-se uma classe que o complemento de VegetarianPizza.
Uma complement class (classe complemento) contm todos os indivduos que no esto contidos na classe
da qual ela complemento. Portanto, ao criar NonVegetarianPizza (subclasse de Pizza) como complemento
de VegetarianPizza, ela deve conter todas as Pizzas que no so membros de VegetarianPizza.

Exerccio 45: criao de NonVegetarianPizza , subclasse de Pizza e disjunta de


VegetarianPizza
1. Selecione Pizza na hierarquia de classes da etiqueta OWLClasses. Pressione o Create subclass (Criar
Subclasse) para criar uma nova subclasse de Pizza.
2. Renomeie a nova classe como NonVegetarianPizza.
3. Torne disjuntas a classes NonVegetarianPizza e a classe VegetarianPizza. Selecione NonVegetarianPizza
e pressione o Add disjoint class... (Adicionar Classe Disjunta) no campo Disjoint Classes (Classes
Disjuntas).

Deseja-se definir uma NonVegetarianPizza como uma Pizza que no VegetarianPizza.

Exerccio 46: NonVegetarianPizza complemento de VegetarianPizza


1. Selecione NonVegetarianPizza na hierarquia de classe da etiqueta OWLClasses.
2. Selecione NECESSARY & SUFFICIENT no campo Asserted Conditions (Condies Declaradas).
3. Pressione o boto Create new expression (Criar nova expresso), abrindo o Inline Expression Editor
(Editor de Expresses) no campo Asserted Conditions, conforme FIG. 5.1. O Editor de Expresses contm
uma caixa de edio e um painel de construo de expresses, que pode ser usado para inserir nomes de
classes e smbolos lgicos.

Figura 5.1: Inline Expression Editor (Editor de Expresses)


4. Digite not VegetarianPizza na caixa de edio. A palavra chave NOT convertida para o smbolo !
complement of (complemento de). Como alternativa para inserir a expresso no painel para construo, use
o boto InsertComplementOf (InserirComplementoDe), conforme FIG. 5.2, para inserir o smbolo

61 of 83

complementOf e use o boto Insert class (Inserir Classe) para exibir o dilogo no qual pode-se selecionar
VegetarianPizza.

Figura 5.2: uso do Expression Builder Panel (Painel Construtor de Expresses) para inserir
Complement Of
5. Pressione enter para criar e atribuir a expresso.

Figura 5.2: o recurso auto-completar


DICA = um recurso til do editor de expresses o auto-completar , que funciona para nomes
de classes, nomes de propriedades e nomes de indivduos. O auto-completar no Inline
Expression Editor (Editor de Expresses) ativado com a tecla tab. No exemplo acima, ao
digitar "Vege" no editor de expresses e pressionar a tecla tab, as opes para completar
"Vege" so apresentadas, como mostra na FIG. 5.3. As teclas de up e down podem ser usadas
para selecionar VegetarianPizza.
A forma grfica condies deve agora parecer com a imagem mostrada na FIG. 5.4.

Figura 5.4: campo Asserted Conditions (Condies Declaradas) mostrando um passo intermedirio na
criao da definio de NonVegetarianPizza.
No entanto, preciso adicionar Pizza as condies necessrias e suficientes, uma vez que no momento a
definio de NonVegetarianPizza diz que um indivduo que no um membro da classe VegetarianPizza
(qualquer outro indivduo) uma NonVegetarianPizza.

Exerccio 47: adico de Pizza a condies necessrias e suficientes


NonVegetarianPizza
1. Selecione NonVegetarianPizza na hierarquia de classes da etiqueta OWLClasses.
2. Selecione Pizza no campo Asserted Conditions (Condies Declaradas).
3. Arraste Pizza de NECESSARY, e solte sobre a condio ! VegetarianPizza para adicion-la ao mesmo
conjunto de condies necessrias e suficientes que ! VegetarianPizza.
O campo Asserted Conditions (Condies Declaradas) deve parecer agora com a FIG.5.5.

62 of 83

Figura 5.5: O campo Asserted Conditions mostrando a definio de NonVegetarianPizza

SIGNIFICADO = o complemento de uma classe inclui todos os indivduos que no so


membros da classe. Ao tornar NonVegetarianPizza uma subclasse de Pizza e complemento de
VegetarianPizza, indica-se que os indivduos que so Pizzas e no so membros de
VegetarianPizza so membros de NonVegetarianPizza. Observe que VegetarianPizza e
NonVegetarianPizza so disjuntas: se um indivduo membro de VegetarianPizza ele no pode
ser um membro de NonVegetarianPizza.

Exerccio 48: uso do MI para classificar a ontologia


1. Pressione Classify taxonomy (Classificar Taxonomia) na barra de ferramentas OWL. Aps classificao,
os resultados so apresentados no painel de Inferred Classes (Classe Inferidas).
A hierarquia de classes inferidas deve parecer com a FIG. 5.6. As classes MargheritaPizza e SohoPizza
foram classificados como subclasses de VegetarianPizza; as classes AmericanaPizza e AmericanHotPizza
foram classificadas como NonVegetarianPizza. As coisas pareciam estar corretas... Entretanto, vai-se
adicionar uma pizza sem axioma de fechamento a propriedade hasTopping...

Exerccio 49: criao de subclasse de NamedPizza com recheio de Mozzarella


1. Criar uma subclasse de NamedPizza chamada UnclosedPizza (PizzaSemFechamento).
2. Selecione UnclosedPizza e no campo Asserted Conditions (Condies Declaradas) selecione
NECESSARY.
3. Pressione Create restriction (Criar Restrio) para exibir o dilogo correspondente.
4. Selecione E someValuesFrom para criar uma restrio existencial.
5. Selecione hasTopping como a propriedade a sofrer restrio.
6. Digite MozzarellaTopping na caixa de edio dos fillers para especificar que os recheios devem ser
indivduos membros da classe MozzarellaTopping.
7. Pressione Ok para fechar o dilogo e criar a restrio.

63 of 83

SIGNIFICADO = se um indivduo um membro de UnclosedPizza, necessrio que ele que


seja uma NamedPizza, e que tenha pelo menos um relacionamento hasTopping com um
indivduo que um membro da classe MozzarellaTopping. Por causa da Suposio de Mundo
Aberto e do fato de que no se adicionou um axioma de fechamento a propriedade hasTopping,
uma UnclosedPizza pode ter um recheios adicionais que no so tipos de MozzarellaTopping.

Exerccio 50: uso do MI para classificar a ontologia


1. Pressione Classify taxonomy (Classify Taxonomy) na barra de ferramentas OWL.
Examine a hierarquia de classes e observe que UnclosedPizza no uma VegetarianPizza ou uma
NonVegetarianPizza.

Fig. 5.6:
SIGNIFICADO = a UnclosedPizza no foi classificada como VegetarianPizza (em funo do
OWR). O MI no pode determinar se UnclosedPizza uma VegetarianPizza porque no existe
um axioma de fechamento em hasTopping, e a Pizza pode ter outros recheios. UnclosedPizza
poderia ser classificada como NonVegetarianPizza desde que no fosse classificada como
VegetarianPizza. No entanto, o OWR no demanda que UnclosedPizza, por no ser um
VegetarianPizza, seja uma VegetarianPizza: ela pode ser VegetarianPizza e pode no ser
VegetarianPizza. Dessa forma, UnclosedPizza no pode ser classificada como
NonVegetarianPizza.

64 of 83

6.Outras construes OWL no Protege-OWL


Nessa seo discute-se como criar outras construes OWL usando o Protege-OWL. Tais construes no
so parte principal do tutorial e podem ser criadas em um novo projeto.
6.1)Criao de Indivduos
O OWL permite definir indivduos e declarar propriedades sobre eles. Os indivduos podem tambm ser
usados em descries de classe, a saber, em restries hasValue e Classes Enumeradas (veja explicao
adiante). Para criar indivduos no Protege-OWL usa-se a etiqueta Individuals (Indivduos).
Deseja-se descrever o pas de origem dos recheios usados nas Pizzas. Em primeiro lugar, preciso adicionar
os pases a ontologia, por exemplo, England (Inglaterra), Italy (Itlia), America (Estados Unidos), etc.
Para criar essa situao na ontologia de Pizza, vai-se criar uma classe Country (Pas) e ento popular essa
classe com indivduos.

Exerccio 51: criao da classe Country (Pas) e insero de indivduos


1. Crie Country como subclasse de owl:Thing.
2. Acesse a etiqueta Individuals (Indivduos), conforme FIG. 6.1, e selecionar Country.
3. Pressione o boto Create Instance (Criar Instncia), conforme FIG. 6.2. O termo Instance (Instncia)
outro nome para Individual (Indivduo) na terminologia de ontologias.
4. O indivduo membro de Country criado com um nome genrico atribudo pela ferramenta. Renomeie o
indivduo para Italy usando o campo For Individual, localizada na etiqueta Individual (Indivduo), na parte
superior da Individual Editor.
5. Use os mesmos passos para criar mais alguns indivduos membros da classe Country, como por exemplo
America, England, France, e Germany.

Figura 6.1: A etiqueta Individuals (Indivduos)

Figura 6.2: botes para manipulao de instncias

65 of 83

O OWL no usa o UNA-Unique Name Assumption (vide seo 3.2.1). Por isso, os indivduos podem ser
declarados como SameAs (IgualA) ou DierentFrom (DiferenteDe) de outros indivduos (FIG. 6.3). Tendo
criado alguns indivduos pode-se us-los em descries de classes.

Figura 6.3: opes SameAs (IgualA) e DiferentFrom (DiferenteDe)

6.2)Restries hasValue (TemValor)


Uma restrio hasValue (TemValor), representada pelo smbolo , descreve o conjunto de indivduos que
possui pelo menos um relacionamento atravs da propriedade com indivduo especfico. Por exemplo, a
restrio hasValue representada pela declarao:
hasCountryOfOrigin Italy (onde Italy um indivduo) ...
descreve o conjunto de indivduos (a classe annima de indivduos) que tem pelo menos um relacionamento
atravs da propriedade hasCountryOfOrigin com o indivduo Italy. Para mais informaes sobre restries
hasValue vide Apndice A.2.
Deseja-se especificar a origem dos ingredientes na ontologia de Pizza. Por exemplo, pode-se dizer que
MozzarellaTopping vem da Italy. Alguns pases foram inseridos na ontologia de Pizza, os quais que so
representadas como indivduos. Pode-se usar a restrio hasValue junto a esses indivduos para especificar
que o pas de origem de MozzarellaTopping Italy.

Exerccio 52: criao da restrio hasValue para especificar que


MozzarellaTopping tem Italy como pas de origem.
1. Acesse a etiqueta Properties (Propriedades), crie uma nova Object Property (Propriedade de Objeto) e
d-lhe o nome de hasCountryOfOrigin.
2. Acesse a etiqueta OWLClasses e selecione a classe MozzarellaTopping.
3. Selecione NECESSARY no campo Asserted Conditions (Condies Declaradas).
4. Pressione Create restriction (Criar Restrio) no campo Asserted Conditions para abrir o dilogo
correspondente.
5. Selecione hasValue como o tipo de restrio a ser criada.
6. Selecione hasCountryOfOrigin como a propriedade a sofrer a restrio.
7. No campo Filler insira o indivduo Italy: digite Italy na caixa de edio de fillers, ou, pressione o boto
Insert individual (Inserir Indivduos) no painel de construo de expresses.
8. Pressione Ok para fechar o dilogo e criar a restrio.

66 of 83

O campo Asserted Conditions (Condies Declaradas) deve agora estar similar a Fig. 6.4.

Figura 6.4: o campo Asserted Conditions mostrando restrio hasValue para MozzarellaTopping
SIGNIFICADO = as condies definidas para MozzarellaTopping informam que: indivduos
membros da classe MozzarellaTopping so tambm membros da classe CheeseTopping e esto
relacionados ao indivduo Italy atravs da propriedade hasCountryOfOrigin; esto relacionadas
a pelo menos um membro da classe Mild atravs da propriedade hasSpyciness. Em linguagem
natural, pode-se dizer que coisas que so tipos de MozzarellaTopping (RecheioDeMussarela)
so tambm CheeseTopping (RecheioDe Queijo), vem da Italy e tem Mild Spyciness
("mediamente" apimentados).

ATENO = no nvel de evoluo atual dos MIs, a classificao automtica no completa


para os indivduos. Use indivduos em descries de classe com cuidado: resultados inesperados
podem ser gerados pelo MI.

6.3)Classes enumeradas
O OWL permite que classes sejam definidas listando-se os indivduos que so seus membros. Por exemplo,
pode-se definir uma classe DaysOfTheWeek (DiasDaSemana) como a classe que contm os indivduos (e
somente os indivduos): Sunday (Domingo), Monday (Segunda), Tuesday (Tera), Wednesday (Quarta),
Thursday (Quinta), Friday (Sexta) e Saturday (Sbado). Classes definidas dessa forma so conhecidas
como Enumerated Classes (Classes Enumeradas).
No Protege-OWL as classes enumeradas so definidas usando-se o editor de expresses no campo Asserted
Conditions (Condies Declaradas). Os indivduos que compem a classe enumerada so listados,
separados por espaos e dentro de colchetes, por exemplo: {Sunday Monday Tuesday Wednesday Thursday
Friday Saturday}. Os indivduos j devem ter sido criados na ontologia (etiqueta Individuals). As classes
enumeradas descritas dessa forma so classes annimas: so as classes dos indivduos, e apenas dos
indivduos, listados na enumerao. Pode-se anexar esses indivduos a uma Named Class (Classe Nomeada)
criando a enumerao como uma condio NECESSARY & SUFFICIENT.

Exerccio 53: converso da classe Country em uma classe enumerada


1. Selecione a classe Country na etiqueta OWLClasses.
2. Selecione NECESSARY & SUFFICIENT em Asserted Conditions (Condies Declaradas).
3. Pressione Create new expression (Criar nova expresso) para abrir o Inline Expression Editor (Editor de
Expresses).
4. Digite {America England France Germany Italy} na caixa de edio de fillers (lembre-se de usar
colchetes). A funo auto-completar est disponvel: para us-la digite as primeiras letras de um indivduo e
pressione tab para mostrar a lista de opes.

67 of 83

5. Pressione enter para aceitar a enumerao e feche o editor de expresso.


O campo Asserted Conditions (Condies Declaradas) deve parecer agora com a FIG.6.5.

Figura 6.5: Asserted Conditions mostrando a Enumeration Class (Classe Enumerada)

SIGNIFICADO = um indivduo que um membro da classe Country na verdade um dos


indivduos listados (ou seja, um daquelas da lista America England France Germany Italy.
Formalmente, a classe country equivalente a (contm os mesmos indivduos que) a classe
annima que definida pela enumerao, conforme apresentado na FIG.6.6.

Figura 6.6: esquema da classe Country como equivalente a uma Enumerated Class

DICA = existem um assistente para criao de classes enumeradas.

6.4)Propriedades de Anotao (Annotation Properties)


O OWL permite que classes, propriedades, indivduos e o prprio cabealho ontologia sejam comentados
usando metadados. Esses metadados podem assumir a forma de informaes de auditoria ou de informaes
editoriais. Por exemplo: comentrios, data de criao, autor, referncias para pesquisas tais como pginas
web, etc. O OWL-Full no impe quaisquer restries as essas propriedades, mas OWL-DL tem restries
ao uso da anotao, sendo que as duas mais importantes so:

O filler para as propriedades de anotao deve ter um dado literal, uma URI de referncia ou um
indivduo. Um dado literal um caractere de representao de um datatype value (valor de tipo de
dados), por exemplo, Matthew, "25", "3.11".

As propriedades de anotao no podem ser usadas em axiomas que atuam sobre propriedades. Por
exemplo, no podem ser usados na hierarquia de propriedades, de forma que no podem ter
subpropriedades, ou ser subpropriedade de outra propriedade. Tambm no podem ter Domain
(Domnio) e Range (Escopo) especifico.

O OWL tem cinco propriedades de anotao pr-definidas que podem ser usadas para fazer comentrios em
classes (inclusive classes annimas, tais como restries), propriedades e indivduos:
1. owl:versionInfo: em geral, o range (escopo) dessa propriedade um string.
2.

rdfs:label: o range (escopo) um string. Esta propriedade usada para adicionar nomes
significativos (para pessoas) aos elementos da ontologia, tais como classes, propriedades e
indivduos. O rdfs:label tambm ser usado para fornecer nomes multilnges para elementos de
ontologia.

68 of 83

3. rdfs:comment: o range (escopo) um string.


4. rdfs:seeAlso: o range (escopo) uma URI usada para identificar recursos.
5.

rdfs:isDefinedBy: o range (escopo) uma URI usada para referenciar uma ontologia que define
elementos da ontologia tais como classes, propriedades e indivduos.

Por exemplo, a propriedade de anotao rdfs:comment usada para guardar comentrios sobre as classes
dos plug-ins do Protege-OWL. A propriedade de anotao rdfs:label pode ser usada para fornecer nomes
alternativos para classes, propriedades, etc.
Existem tambm propriedades de anotao que podem ser usadas para comentar uma ontologia. A
propriedades de anotao de ontologias (listadas abaixo) tem como range (escopo) uma URI, usada para
referncia a outra ontologia. tambm possvel usar a propriedade de anotao owl:VersionInfo para
comentrios de ontologia.

owl:priorVersion: identifica verses anteriores da ontologia.

owl:backwardsCompatibleWith: identifica verso anterior da ontologia que compatvel com a verso


atual. Isso quer dizer que todos os identificadores da verso anterior possuem o mesmo significado
na verso atual. Assim, ontologias e aplicaes que fazem referncia a verso anterior podem alterar
a referencia para a nova verso.

owl:incompatibleWith: identifica a verso anterior de uma ontologia que no compatvel com a atual.

Para criar propriedades de anotao, usam-se os botes Create annotation datatype property (Criar
anotao de propriedade de tipo de dados) e Create annotation object property (Criar anotao de
propriedade de objetos), localizados na etiqueta Properties (Propriedades). Para usar as propriedades de
anotao, acessa-se a interface de anotaes, conforme apresentado na FIG.6.7.
A interface de anotao est disponvel em todas as etiquetas (OWL-Classes, Properties, Individuals e
Metadata) possibilitando anotaes em classes, propriedades, indivduos e ontologias, respectivamente.
Uma anotao pode tambm ser adicionada a restries e a outras classes annimas clicando com o boto
direito no campo Asserted Conditions (Condies Declaradas) e selecionando Edit annotation properties...
(Editar propriedades da anotao...).

Figura 6.7: a interface de anotaes

6.5)Conjuntos mltiplos de Condies Necessrias e Suficientes


No OWL possvel ter conjuntos mltiplos de condies necessrias e suficientes. No campo Asserted
Conditions (Condies Declaradas), conjuntos mltiplos de condies necessrias e suficientes so
representados usando mltiplos cabealhos NECESSARY & SUFFICIENT, com as respectivas condies
listadas sob cada cabealho, conforme FIG.6.8.
Para criar um novo conjunto de condies necessrias e suficientes, seleciona-se um cabealho
NECESSARY & SUFFICIENT disponvel e cria-se ento a condio, por exemplo, usando o dilogo Create
Restriction (como alternativa, uma condio arrastada sobre um NECESSARY & SUFFICIENT).
Para adicionar uma condio a um conjunto existente de condies necessrias e suficientes, uma das

69 of 83

condies do conjunto selecionada e ento a nova condio criada, ou uma condio existente
arrastada sobre o conjunto existente (sobre o cabealho NECESSARY & SUFFICIENT).

Figura 6.8: conjuntos mltiplos de condies necessrias e suficientes

Exerccio 54: criao de classe para definir um Triangle (tringulo) usando


mltiplos conjuntos de condies necessrias e suficientes
1. Criar uma subclasse de owl:Thing chamada Polygon (Polgono).
2. Criar uma subclasse de Polygon chamada Triangle.
3. Criar uma object property (propriedade de objeto) chamada hasSide (temLado).
4. Criar uma object property (propriedade de objeto) chamada hasAngle (temngulo).
5. Em OWLClasses selecione a classe Triangle. Selecione NECESSARY & SUFFICIENT no campo
Asserted Conditions (Condies Declaradas). Pressione Create restriction (Criar Restries) na forma
grfica Asserted Conditions para exibir o dilogo correspondente.
6. Selecione = cardinality (= cardinalidade) como tipo de restrio a ser criada. Selecione hasSide como a
propriedade a sofrer restrio. Na caixa de edio do filler digite 3. Pressione Ok para fechar o dilogo e
criar a restrio.
7. Selecione novamente NECESSARY & SUFFICIENT no campo Asserted Conditions. Pressione o boto
Create restriction para exibir o dilogo correspondente.
8. Selecione = cardinality (= cardinalidade) como o tipo de restrio a ser criado. Selecione hasAngle
como a propriedade a sofrer restrio. Na caixa de edio dos fillers digite 3. Pressione Ok para fechar o
dilogo e criar a restrio.
9. Arraste Polygon de NECESSARY para sobre a restrio hasSide = 3.
10. Selecione a restrio hasAngle = 3. Clique no boto Add named class... para exibir um dilogo com
hierarquia de classes. Selecione a classe Polygon e clique Ok.
N do T: Na verso 3.4 (Build 130) do Protege este exerccio apresenta um erro quando se
solicita seleo da classe Polygon. Aparece a seguinte mensagem de erro: Could not add a
polygon.

O campo Asserted Conditions deve estar similar ao apresentada na FIG. 6.9

Figura 6.9: a definio de um triangulo usando condies necessrias e suficientes

70 of 83

7.Outros tpicos
7.1)Perfil da linguagem
Conforme mencionado anteriormente, existem trs sub-linguagens OWL: OWL-Lite, OWL-DL e OWL-Full.
Ao editar uma ontologia, o Protege-OWL tem capacidade de restringir os constructos usados, de forma que
a ontologia possa ser classificada em uma das sub-linguagens, OWL-DL ou OWL-Full. A sub-linguagem
desejada, ou perfil da linguagem a ser utilizada definida atravs do comando Preferences (Preferncias)
do Protege-OWL. A escolha entre OWL-DL e OWL-Full feita pelo comando Supports One of the
Following OWL Species (Suporte a Uma das Seguintes Espcies OWL), e selecionada dentre uma das duas
opes disponveis: OWL DL (Optimized for reasoning) (otimizado para inferncias), ou o OWL Full
(supports the complete range of OWL elements) (suporta todos os elementos OWL).

7.2)Namespaces e importao de ontologias


Ontologias OWL so capazes de importar outras ontologias OWL. Esta seo descreve os namespaces,
mecanismos para fornecer nomes genricos, usados para facilitar a importao de ontologias. Descreve-se
como importar ontologias.
7.2.1)Namespaces
Cada ontologia tem seu prprio namespace, o que conhecido com o namespace padro. Uma ontologia
pode usar outros namespaces. Um namespace uma seqncia de caracteres que precede os identificadores
de classes, de propriedades e de indivduos em uma ontologia. possvel a uma ontologia referenciar
classes, propriedades e indivduos em outra ontologia, sem ambigidades e sem causar problemas com
nomes, atravs da manuteno de namespaces distintos para todas as ontologias. Por exemplo, as
ontologias OWL (inclusive a ontologia de Pizza) fazem referncia a classe owl:Thing, a qual reside no
vocabulrio da ontologia OWL (namespace http://www.w3.org/2002/07/owl#).
A garantia de que os namespaces so nico reside em sua representao via URIs-Unique Resource
Identifiers, terminados com / ou com #. Por exemplo, o namespace padro no Protege-OWL (o namespace
atribudo a ontologias recm-criadas) http://a.com/ontology#. Isto significa que todos identificadores de
classes, de propriedades e de indivduos criados no Protege-OWL (por padro) so prefixados com
http://a.com/ontology#.
Por
ex.,
o
nome
completo
da
classe
PizzaTopping

http://a.com/ontology#PizzaTopping.
O
nome
completo
da
classe
MargheritaPizza

http://a.com/ontology#MargheritaPizza. O Protege-OWL esconde os namespaces prefixados, de forma que


no seja preciso digitar nomes longos a cada uso de classes, propriedades ou indivduos.
Os namespaces contribuem para evitar conflitos entre nomes quando uma ontologia referencia classes,
propriedades e indivduos em uma outra ontologia. Por exemplo, uma ontologia sobre aeronaves,
AircraftOntology, tem uma classe de nome Wing, que descreve a asa de um aeroplano. Uma ontologia
sobre pssaros, BirdOntology, tambm tem uma classe chamada Wing, que descreve a asa de um pssaro. O
namespace para a AircraftOntology http://www.ontologies.com/aircraft#; o namespace para a segunda
ontologia, BirdOntology, http://www.birds.com/ontologies/BirdOntology#. Evidentemente, a classe Wing
na ontologia de aeronaves no a mesma que a classe Wing na ontologia de pssaros. Suponha que a
ontologia de aeronaves importa a ontologia de pssaros. Por causa do mecanismo namespace, o nome
completo http://www.ontologies.com/aircraft#Wing representa a classe Wing na ontologia de aeronaves; e o

71 of 83

nome
completo
para
a
classe
Wing
na
ontologia
de
pssaros

http://www.birds.com/ontologies/BirdOntology#Wing. Dessa forma, quando a ontologia de aeronaves se


refere a classes da ontologia de pssaros no h conflito entre os nomes. Observe que nenhum dos URIs
que representam os namespaces so URLs, ou seja, no exigida necessariamente uma localizao fsica na
web. O uso de URIs se baseia na garantia de unicidade.
Utilizam-se prefixos de namespaces para tornar gerencivel o referenciamento a classes, a propriedades e a
indivduos, quando namespaces mltiplos so usados. Um prefixo de namespace um pequeno string, uma
seqncia de dois ou trs caracteres que representa o namespace completo. Por exemplo, pode-se usar "ac"
para representar o namespace da ontologia de aeronaves (http://www.ontologies.com/aircraft#) e o prefixo
bird para o namespace da ontologia de pssaros (http://www.birds.com/ontologies/BirdOntology#). Ao
usar identificadores tais como nomes de classes, usa-se o identificador com o prefixo do namespace
seguido por "dois pontos". Por exemplo, ac:Wing ou bird:Wing.
O namespace padro corresponde ao namespace da ontologia sob edio. Quando esto sendo usados
identificadores que pertencem ao namespace padro (a ontologia que est sendo editada) no se usam
prefixos: classes, propriedades e indivduos so referenciados simplesmente pelo uso de seus nomes locais.
No entanto, para importar ontologias preciso usar um prefixo namespace para se referir as classes, as
propriedades e aos indivduos da ontologia importada. Por exemplo, suponha a edio da ontologia de
aeronaves, que tem um namespace http://www.ontologies.com/aircraft#, e deseja-se referenciar classes da
ontologia de pssaros, cujo namespace outro: http://www.birds.com/ontologies/BirdOntology#, com
prefixo namespace "bird". Ao se referir a classes sem um prefixo namespace, por exemplo Wing, a
referncia considerada para a ontologia de aeronaves. Ao se referir a classes com o prefixo namespace
"bird", por exemplo bird:Wing, est se referindo a classes da ontologia de pssaros.
7.2.2)Criao e edio de namespaces no Protege-OWL
Edio do namespace padro
O namespace padro definido na interface Default Namespace, localizada no canto superior esquerdo da
etiqueta Metadata (Metadados), conforme mostra a FIG. 7.1. Para mudar o namespace padro digite um
novo namespace na caixa de edio. O namespace deve ser uma URI vlida e deve terminar com "/" ou "#".
Alguns exemplos vlidos so:
myNameSpace#
universityOfManchester:ontologies:pizzas#
http://www.cs.man.ac.uk/ontologies/pizzas/

Figura 7.1: namespace padro e interface de namespaces

Criao de outros Namespaces


Assim como se especifica um namespace padro para a ontologia possvel configurar outros prefixos
namespace (mapeamentos de namespaces). Isto possibilita fazer referncia a classes, a propriedades e a
indivduos em outras ontologias.

72 of 83

Usa-se a interface Namespace Prefixes (FIG. 7.1) para criar ou para configurar namespaces e prefixos
associados no Protege-OWL. A interface contm trs colunas: Prefix, Namespace e Imported (a coluna
Imported ser tratada mais adiante).
N do T: Na verso 3.4 (Build 130) do Protege, conforme pode-se notar na FIG. 7.1, a
interface ligeiramente diferente apresentando apenas duas colunas, a saber Prefix e
Namespace.

Na criao de um novo projeto em OWL, o Protege-OWL automaticamente configura os trs namespaces:

rdf - http://www.w3.org/1999/02/22-rdf-syntax-ns# (Resource Description Framework namespace)

rdfs - http://www.w3.org/2000/01/rdf-schema# (RDFSchema namespace)

owl - http://www.w3.org/2002/07/owl# (OWL vocabulary namespace)

Vai-se adicionar prefixo e namespace para uma ontologia de vinho que tem o namespace
http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#. A ontologia de vinhos um exemplo
didtico utilizado no guia W3C-OWL que contm dados sobre tipos de vinhos e vincolas.

Exerccio 55: criao de namespace e pre xo para se referir a classes, a


propriedades e a indivduos na ontologia de vinhos
1. Pressione Add new prefix (Adicionar novo prefixo) na interface Namespace prefix conforme FIG. 7.1
para criar um novo namespace. criado um namespace http://www.domain2.com# com o prefixo p1.
2. D um clique duplo no prefixo p1 para edit-lo. Mude-o para vin, o qual o prefixo do namespace usado
na ontologia de vinhos.
3. D um clique duplo no namespace http://www.domain2.com# para edit-lo. Mude-o para
http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#. Se o namespace est escrito incorretamente,
ou seja, se o namespace no uma URI vlida e no termina em / ou #, o Protege-OWL rejeita a
entrada e volta ao valor anterior.
4. Agora pode-se referenciar conceitos na ontologia de vinho, e criar classes e propriedades no namespace
da ontologia de vinho. Por exemplo, criar uma nova propriedade objeto e nome-la como
vin:myWineProperty.
A
propriedade
myWineProperty
reside
no
http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#
(o
nome
vin:myWineProperty). O nome completo da propriedade :
http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#myWineProperty.

namespace
prefixado

vin
ser

7.2.3)Importao de ontologias em OWL


Ontologias OWL podem importar uma ou vrias outras ontologias. Por exemplo, suponha que
AircraftOntology (ontologia de aeronaves) importa a BirdOntology (ontologia de pssaros), a qual contm
descries de vrios pssaros. Todas as classes, as propriedades, os indivduos e os axiomas contidos na
BirdOntology vo estar disponveis para uso na AircraftOntology. Isto torna possvel a (re) utilizao de
classes, de propriedades e de indivduos da BirdOntology em descries de classe da AircraftOntology.
possvel tambm estender as descries de classes, de propriedades e de indivduos na BirdOntology pela
criao da descries estendidas na AircraftOntology.
Observe a distino entre referenciar as classes, as propriedades e os indivduos em outra ontologia usando

73 of 83

namespaces, e importar totalmente a ontologia. Quando uma ontologia importa outra, no feita uma
simples referencia as classes, as propriedades e aos indivduos: os axiomas e fatos contidos na ontologia
importada so includos na ontologia destino. Observe que o OWL permite importar ontologias de maneira
cclica como, por exemplo, OntologyA importa OntologyB, e OntologyB importa OntologyA.

7.2.4)Importao de ontologias no Protege-OWL


A importao de ontologias normalmente coordenada pelo uso de namespaces. Configuram-se o
namespace e o prefixo de namespace da ontologia a importar e em seguida ocorre a importao. Para
importar uma ontologia no Protege-OWL preciso primeiro localiz-la e determinar sua URL.
Importa-se ontologia Koala, uma ontologia simples criada por Holger Knublauch (autor do plug-in
Protege-OWL) para demonstrar possibilidades dos constructos OWL. A ontologia Koala est localizada em
http://protege.stanford.edu/plugins/owl/owl-library/koala.owl.
Importa-se a ontologia koala em uma nova ontologia OWL, vazia.

Exerccio 56: importao da ontologia koala para outra ontologia


1. Acesse a etiqueta Metadata.
2. Pressione Add new prefix (Adicione novo prefixo) na interface Namespace prefix, criando novos
namespace e prefixo namespace.
3. Edite o prefixo namespace, alterando-o para koala.
4. Especifique o namespace: ao importar ontologias o namespace deve ser a URL real onde a ontologia
est localizada, seguida por / ou #. Edite o namespace para o prefixo koala, mudando-o para:
http://protege.stanford.edu/plugins/owl/owl-library/koala.owl#.
5. Agora clique em Import ontology... (Importar ontologia...) localizado no canto superior esquerdo do
Ontology Browser (Navegador da Ontologia). Na nova janela marque a opo Import an ontology from the
web by specifying the http://...URL (Importar uma ontologia da Web especificando a URL http://...) e
pressione Next. Especifique o namespace digitando-o no espao em branco (o endereo est na interface
Namespace prefixes). Agora, clique em Finish para que a ontologia selecionada seja importada.
Depois da execuo desses passos, o Protege-OWL importa a ontologia koala. Salve e recarregue o
projeto. Em seguida, observe que a etiqueta OWLClasses contm classes da ontologia koala. De forma
anloga, a etiqueta Property exibe propriedades da ontologia koala. Observe ainda que as classes
importadas no podem ser editadas ou excludas: pode-se ter apenas adicionar dados as descries de
classes.

Locais Alternativos
Quando se pretende tornar uma ontologia disponvel para importao, uma boa prtica definir a URI do
namespace como uma URL que aponta para o lugar onde est a ontologia. Na maioria das vezes trata-se de
um endereo web. Assinalando a caixa de seleo Imported (Importada), o Protege-OWL tenta achar a
ontologia no local especificado pela URI do namespace. Mas e se no existe conexo a Internet, ou a
ontologia no existe naquela URI? Nesse caso, possvel especificar uma URI/URL alternativa, a qual
aponta para uma cpia local da ontologia. Por exemplo, uma URL que aponta para um local no disco

74 of 83

rgido, ou para o servidor rede local, etc. Locais alternativos so especificadas no arquivo de Ontology
Polices (Polticas da ontologia), localizado na pasta do plug-in do Protege-OWL. Este arquivo no precisa
ser editado manualmente, pode ser editado com o dilogo de poltica da ontologia.
Para especificar um local alternativo para uma ontologia importada, siga esses passos.

Exerccio 57: especificao de local alternativo para uma ontologia importada


1. Selecione ontologia considerada na interface Namespaces Prefixes.
2. Pressione Import ontology... (Importar ontologia...) localizado na interface Ontology Browser
(Navegador da Ontologia), no canto superior esquerdo. Na nova janela marque a opo Import an
ontology contained in a specific local file (Importe uma ontologia de um arquivo local especfico) e
pressione Next.
3. Na interface Specify file path (Especificar o caminho do arquivo) digite o endereo ou busque o
caminho, clicando no cone adequado.
4. Selecione a pasta onde a ontologia ser salva. Selecione um arquivo da pasta e clique em Select. A forma
grfica Specify file path preenchida. Pressione Next.
5. Clique em Finish para finalizar a importao.
N do T: Na verso 3.4 (Build 130) do Protege o exerccio 57 foi realizado de forma
ligeiramente diferente do original, o qual apresenta funcionalidades ainda no disponveis
na verso citada.

7.2.5)Importao da ontologia Dublin Core


A ontologia Dublin Core baseada no Dublin Core Meta Data Terms, desenvolvido pela Dublin Core
Meta Data Initiative (http://www.dublincore.org/). Consiste de um conjunto de elementos e termos para
descrio de recursos, tais como classes, propriedades e indivduos de uma ontologia. A definio completa
de Dublin Core Meta Data Terms est disponvel em:
http://www.dublincore.org/documents/dcmi-terms/
A lista seguinte contm alguns exemplos:

title (ttulo): um ttulo, um nome pelo qual o recurso formalmente conhecido.

creator (criador, autor): uma pessoa, uma organizao, ou um servio; em geral o nome do creator
usado para indicar uma entidade.

subject (assunto): expresso por palavras chaves, frases ou cdigos de classificao que descrevem um
tpico da pesquisa; a prtica recomenda selecionar um termo a partir de um vocabulrio controlado
ou esquema de classificao.

description (descrio): inclui resumos, tabela de assuntos, referncia para uma representao grfica
de assuntos ou texto livre sobre o assunto, dentre outras;

contributor (contribuinte): uma pessoa, uma organizao ou um servio; em geral o nome do

75 of 83

contributor usado para indicar a entidade.


Para marcar classes e outras entidades da ontologia com esse tipo de informao, por exemplo, do Dublin
Core, preciso importar a ontologia Dublin Core Metadata Terms (DC Ontology). O Dublin Core
Metadata usada com freqncia, pois o Protege-OWL tem um mecanismo automtico para importar a DC
Ontology. Veja os passos apresentados:

Exerccio 58: importar a ontologia Dublin Core Meta Data Elements


1. A partir do menu OWL selecione Ontology repositories... (Repositrios de Ontologias).
2. Na nova caixa de dilogo, use Add repository... (Adicionar repositrio), localizado no canto superior
direito, para inserir o local do repositrio. Marque a opo HTTP Repository e pressione finish.
3. Na janela Create Ontology Repository (Criar repositrio para ontologia) preencha o campo URL com o
endereo http://dublincore.org/2008/01/14/dcterms.rdf e pressione Finish.

Figura EXTRA 10: Create Ontology Repository (Criar repositrio para ontologia)
3. Uma mensagem solicita que a ontologia seja recarregada. Pressione Yes.
4. A DC Ontology importada. Feche o dilogo DC metadata com o boto Close.
5. Alterne para a etiqueta Properties. Conforme apresentado na FIG. 7.3, verifique que vrias propriedades
de anotao (do Dublin Core Metadata Terms) foram importadas. Essas propriedades podem ser usadas no
normalmente.

Figura 7.3: Elementos Dublin Core disponveis como propriedades de anotao

7.2.6)Protege-OWL Metadata Ontology (Ontologia de metadados do Protege-OWL)


Vrios recursos usados pelo plug-in Protege-OWL (tal como a marcao de classes para que qualquer
subclasse primitiva seja disjunta automaticamente) se baseiam em propriedades de anotao. Essas
propriedades so parte da Protege-OWL Meta Data Ontology, localizada na pasta do plug-in
Protege-OWL. Para usar essas propriedades de anotao preciso importar o Protege-OWL Meta Data
Ontology.
Exerccio 59: importao do Protege-OWL Meta Data Ontology

76 of 83

1. Selecione Preferences... (Preferncias) no menu OWL.


2. No novo dilogo, marque Import Protege Metadata Ontology (Importar Ontologia de Metadados do
Protege). Pressione Close para fechar o dilogo.

Figura Extra 11: caixa de dilogo OWL Preferences


7.3)Testes em ontologias
O Protege-OWL possibilita a aplicao de vrios testes a ontologia em edio. Tais testes variam desde
testes de sanidade, como por exemplo verificar se uma caracterstica da propriedade corresponde a sua
correspondente na propriedade inversa; at testes OWL-DL, os quais so projetados para encontrar
constructos tais como metaclasses que caracterizam a ontologia como OWL-Full. A estrutura de testes
baseada em uma arquitetura de plug-ins que permite a adio de novos testes por terceiros. Verifique no
site do Protege-OWL sobre a disponibilidade de testes add-on.
Os testes podem ser configurados atravs do dilogo Test Settings (Configuraes dos Testes) conforme
mostrado na FIG. 7.4, acessvel atravs do comando Test Settings... no menu OWL. Para rodar os testes,
selecione Run Ontology Tests... (Rodar testes na ontologia) no menu OWL, ou no boto Run Ontology
Tests... na barra de ferramenta OWL.

Figura 7.4: o dilogo de testes da ontologia.


Depois do teste na ontologia, os resultados so apresentados em um painel na parte inferior da tela, como
mostrado na FIG. 7.5.

Figura 7.5: painel de resultados de testes

77 of 83

O painel do resultado do teste possui as seguintes colunas:

Type (tipo): corresponde ao tipo de resultado do teste (advertncia, erro etc.).


Source (fonte): corresponde a fonte do resultado do teste (por exemplo, uma classe ou um
propriedade). Um clique duplo sobre a fonte leva a origem da fonte, por exemplo uma classe na
etiqueta OWLClasses, ou uma propriedade na etiqueta Properties.
Test Result (Resultados do teste): uma mensagem que descreve o resultado obtido.

Em alguns casos, o Protege-OWL capaz de modificar ou corrigir aspectos da ontologia em que um teste
detectou defeitos. Quando o teste selecionado, fica disponvel um pequeno boto de ferramentas
denominado spanner (smbolo de uma chave inglesa), do lado esquerdo do painel do resultados. Clicando
neste boto, possvel reparar o defeito na ontologia detectado pelo teste.

7.4) TODO list (Lista de tarefas a fazer)


Uma caracterstica e til simples do Protege-OWL o TODO List (Lista de tarefas a realizar). Classes,
propriedades e mesmo ontologias podem ser marcadas com itens TODO. Tais itens so associados as
entidades usando o boto Add TODO List Item (Adicionar um item na lista de tarefa) localizado na
interface Annotation. Pressionando Add TODO List Item cria-se uma nova propriedade de anotao que
pode ser preenchida com a descrio textual da tarefa TODO. Para localizar os itens TODO, selecione o
comando Show TODO List... (Mostrar lista de tarefas...) no menu OWL, ou use o boto Show TODO
List... da barra de ferramentas OWL. Abre-se assim uma lista de itens no painel inferior da tela. Com um
clique duplo em cada TODO da lista, possvel navegar para o item correspondente na ontologia.

78 of 83

Apndice A
Tipos de restries
Esse apndice contm informaes adicionais sobre os tipos de restries para propriedades OWL.
indicado para leitores no familiarizados com noes de lgica.
Todos os tipos de restries descrevem um conjunto sem nome que pode conter indivduos. Esse conjunto
corresponde a uma classe annima. Quaisquer indivduos membros dessa classe annima satisfazem a
restrio que descreve a classe (FIG. A.1). O termo "restries" descreve restries sobre relaes atravs
de propriedades, das quais participam indivduos.
Quando se descreve uma classe nomeada usando restries, o que se faz realmente na prtica descrever
uma superclasse annima da classe nomeada.

A.1 Restries de quantificao


Restries de quantificao possuem trs partes:
1. O quantificador, que pode ser um quantificador existencial (E) ou um universal (A);
2. Uma propriedade, sobre a qual a restrio atua;
3. Um filler, que corresponde a classe nomeada cujos indivduos atendem a restrio.
O quantificador impe restries sobre um relacionamento do qual um indivduo participa. Isso ocorre
porque o quantificador especifica que pelo menos um tipo de relacionamento deve existir, ou especifica os
tipos de relacionamentos que podem existir.

Figura A.1: restries que descrevem uma classe de indivduos annima

A.1.1 someValuesFrom Restries Existenciais


Restries existenciais, conhecidas como someValuesFrom, ou Some, so representadas pelo smbolo E
("E" ao contrrio). As restries existenciais descrevem o conjunto de indivduos que tem pelo menos um
tipo especfico de relacionamento com indivduos membros de uma classe. A FIG. A2 apresenta uma viso
esquemtica de uma restrio existencial (E prop ClassA), ou seja, uma restrio sobre a propriedade prop
com um descritor ClassA. Observe que todos os indivduos da classe annima definida pela restrio tm
pelo menos uma relao atravs da propriedade prop com um indivduo que membro da classe ClassA. As
linhas pontilhadas (FIG. A2) representam o fato de que os indivduos podem ter relacionamentos prop
adicionais com outros indivduos que no so membros da classe ClassA, mesmo que isso no tenha sido
explicitamente estabelecido. A restrio existencial no restringe a relao prop a membros da classe
ClassA, apenas estabelece que cada indivduo deve ter pelo menos um relacionamento prop com um
membro de ClassA. Essa caracterstica recebe o nome de OWA - Open World Assumption (Pressuposio
de mundo aberto).

79 of 83

Figura A2: esquema de uma restrio existencial (E prop ClassA)


Por exemplo, a restrio existencial E HasTopping MozzarellaTopping descreve o conjunto de indivduos
participante de pelo menos uma relao hasTopping com outro indivduo, que membro da classe
MozzarellaTopping. Em linguagem natural pode-se dizer que a restrio existencial pode aquela que
descreve as coisas que tem um recheio de mussarela.
O fato de a restrio existencial descrever um grupo de indivduos que tem pelo menos um relacionamento
atravs da propriedade hasTopping com um indivduo membro da classe MozzarellaTopping, no significa
que os relacionamentos apenas podem ocorrer atravs da propriedade hasTopping, ou apenas com
indivduo membro de MozzarellaTopping. Podem existir outras relaes hasTopping no especificadas
explicitamente.

A.1.2 allValuesFrom Restries Universais


Restries Universais so tambm conhecidas como allValuesFrom, ou All, uma vez que restringem o filler
de certa propriedade para uma classe especifica. Restries Universais so representadas pelo smbolo A
("A" de cabea para baixo). Descrevem o conjunto de indivduos os quais, para uma dada propriedade, tem
relacionamento apenas com outros indivduos, membros de uma classe especfica. Para uma dada
propriedade, o conjunto de indivduos descritos pela restrio universal vai tambm conter os indivduos
que no tem qualquer relacionamento com essa propriedade, para qualquer outro indivduo.
A restrio universal, apresentada na FIG. A.3. possui a propriedade prop e o filler ClassA. Cabe destacar
que uma restrio universal no garante a existncia de um relacionamento atravs da propriedade. Ela
simplesmente estabelece que se existe tal relacionamento atravs da propriedade, ento ele deve ocorrer
com um indivduo que um membro da classe especificada.

Figura A.3: Uma viso esquemtica da restrio universal (A prop ClassA)


Por exemplo, a restrio A hasTopping TomatoTopping descreve a classe annima de indivduos que tem
apenas relacionamentos hasTopping com indivduos membros da classe TomatoTopping, ou, indivduos que
definitivamente no participam em qualquer outro relacionamento hasTopping.

A.1.3 Combinao de restries Existenciais e Universais na descrio de classes


Um procedimento comum combinar restries universais e existenciais em definies de classes para certa
propriedade. Por exemplo, as seguintes restries podem ser usadas em conjunto: E hasTopping
MozzarellaTopping e A hasTopping MozzarellaTopping.

80 of 83

Essa combinao descreve o conjunto de indivduos que tem pelo menos um relacionamento hasTopping
com um indivduo da classe MozzarellaTopping, e apenas tem relacionamentos hasTopping com indivduos
da classe MozzarellaTopping.
No comum, e em geral significa um erro, ao descrever uma classe, que se use a restrio universal junto a
propriedade, sem uso da restrio universal correspondente junto mesma propriedade. No exemplo acima,
caso se use apenas a restrio universal A hasTopping Mozzarella, ento se pode ter descrito o conjunto de
indivduos que apenas participa na relao hasTopping com membros da classe Mozzarella, e tambm
aqueles indivduos que no participam em qualquer relacionamento hasTopping (provavelmente, um erro).

A.2 Restries hasValue


Uma restrio hasValue, representada pelo smbolo , descreve uma classe annima de indivduos que esto
relacionados a outros indivduos especficos por uma propriedade. Trata-se de uma situao diferente
daquela apresentada na restrio de quantificador, em que os indivduos descritos pela restrio esto
relacionados a qualquer indivduo de uma classe especfica atravs da propriedade especfica. A FIG. 4
mostra uma viso esquemtica da restrio hasValue prop abc.
Essa restrio descreve a classe annima de indivduos que tem pelo menos um relacionamento atravs da
propriedade prop com o indivduo abc. As linhas pontilhadas (FIG. A.4) representam o fato de que, para
um dado indivduo, a restrio hasValue no restringe a propriedade usada na restrio a um
relacionamento com o individuo participante da restrio, isto , podem existir outros relacionamentos com
a propriedade prop. Cabe notar que as restries hasValue so semanticamente equivalentes a uma restrio
existencial junto a uma propriedade hasValue, a qual tem um filler que uma classe enumerada que contm
o indivduo (e apenas ele) usado na restrio hasValue.

Figura A.4: restrio hasValue prop abc, onde as linhas pontilhadas indicam que esse tipo de
restrio no restringe a propriedade usada na restrio, a indivduos usados exclusivamente na
restrio hasValue.

A.3 Restries de cardinalidade


As restries de cardinalidade so usadas para explicitar o nmero de relacionamentos em que um indivduo
pode participar para uma propriedade. So conceitualmente simples e apresentadas em trs formas:
restries de cardinalidade mnima, restries de cardinalidade mxima e restries de cardinalidade
(exata).

A.3.1 Restries de cardinalidade mnima


As restries de cardinalidade mnima especificam o nmero mnimo de relacionamentos que um indivduo
pode participar para uma dada propriedade. O smbolo para a restrio de cardinalidade mnima o maior

81 of 83

ou igual a (). Por exemplo, a cardinalidade mnima hasTopping 3 descreve os indivduos (uma classe de
annimos que contm indivduos) que participam em pelo menos trs relacionamentos hasTopping. As
restries de cardinalidade mnima no estabelecem limites mximos relativos ao nmero de
relacionamentos que um indivduo pode participar, em uma propriedade.

A.3.2 Restries de cardinalidade mxima


As restries de cardinalidade mxima especificam o nmero mximo de relacionamentos que um
indivduo pode participar para uma dada propriedade. O smbolo para restries de cardinalidade mxima
o menor ou igual a (). Por exemplo, a cardinalidade mxima hasTopping 2 descreve a classe de
indivduos que participam no mximo de dois relacionamentos hasTopping. Cabe notar que as restries de
cardinalidade mxima no estabelecem limites mnimos sobre o nmero de relacionamentos que um
indivduo deve participar para uma propriedade.
A.3.3 Restries de cardinalidade exata
As restries de cardinalidade exata especificam o nmero exato de relacionamentos dos quais um
indivduo deve participar, para uma propriedade. O smbolo para as restries de cardinalidade o igual
(=). Por exemplo, a cardinalidade = hasTopping 5 descreve o conjunto dos indivduos (a classe annima de
indivduos) que participam em exatamente 5 relacionamentos hasTopping. Cabe notar que a restrio de
cardinalidade , na verdade, uma forma simplificada de combinao entre as cardinalidades mnimas e
mximas. Por exemplo, a restrio de cardinalidade acima pode ser representada como uma interseo de
duas restries (mnima e mxima): hasTopping 5, e, hasTopping 5.

A.3.4 UNA-Unique Name Assumption (Presuno de nome nico) e cardinalidades


A OWL adota o UNA, o que significa que diferentes nomes pode se referir ao mesmo indivduo. Por
exemplo, os nomes Matt e Matthew podem se referir ao mesmo indivduo ou no. Restries de
cardinalidade consideram indivduos distintos, e dessa forma, importante especificar que Matt e Matthew
so o mesmo indivduo, ou que so diferentes. Seja um indivduo Nick, relacionado a indivduos Matt,
Matthew e Matthew Horridge via propriedade worksWith. Tambm existe um indivduo Nick, membro da
classe de indivduos que trabalham com no mximo dois outros. Uma vez que o OWL no adota o UNAs,
ao invs da situao resultar em um erro, a inferncia automtica indica que dois dos nomes se referem ao
mesmo indivduo. Ao afirmar que Matt, Matthew e Matthew Horridge so indivduos diferentes, a base de
conhecimento pode ser considerada inconsistente.

82 of 83

Apndice B
Uma classe OWL especificada em termos de suas superclasses. Tais superclasses so em geral classes
nomeadas e restries, sendo que as restries so de fato classes annimas. As superclasses tambm
podem tomar a forma de "descries complexas" construdas a partir de descries simples, conectadas por
operadores lgicos. Os operadores mais conhecidos so:
AND (): a classe formada com o operador AND e conhecida como classe interseo; a classe

resultante a interseo das classes individuais;


OR (): a classe formada com o operador OR e conhecida como classe unio; a classe resultante a

unio das classes individuais.

B.1 Classes interseo ()


Uma classe interseo descrita pela combinao de duas ou mais classes, as quais utilizam o operador
AND . Por exemplo, seja a interseo de human (humano) e male (masculino), conforme FIG. B.1:
descreve-se a classe annima que contm indivduos membros da classe human e da classe male.
A semntica de uma classe interseo define que a classe annima descrita uma subclasse de human e
tambm uma subclasse de male. Essa classe interseo annima pode tambm ser usada em outra descrio
de classes. Por exemplo, ao se construir uma descrio da classe man especifica-se que man uma
subclasse da classe annima descrita pela interseo de human e de male. Em outras palavras, man
subclasse de human e de male.

Figura B.1: a interseo (Human Male); a rea escura representa a interseo

B.2 Classes unio ()


A classe unio criada pela combinao de duas ou mais classes usando o operador OR . Por exemplo,
seja a unio de man e woman, conforme a FIG. B.2. Ela descreve a classe annima que contem os
indivduos pertencentes a classe man ou a classe woman (ou a ambas).

Figura B.2: unio (Man Woman); a rea escura representa a unio

83 of 83

A classe annima descrita pode ser usada em outra descrio de classe. Por exemplo, a classe person pode
ser equivalente a unio de man e woman.