Ontologias e Restrições OCL Fábio Moura Franklin Ramalho Jacques Robin CIn-UFPE.
Ontologias e Representação do Conhecimento Orientada a Objetos Amanda Pimentel Jacques Robin...
Transcript of Ontologias e Representação do Conhecimento Orientada a Objetos Amanda Pimentel Jacques Robin...
Ontologias e Representação do Conhecimento
Orientada a Objetos
Amanda PimentelAmanda Pimentel
Jacques RobinJacques Robin
CIn-UFPECIn-UFPE
Roteiro
Limitações da lógica como formalismo de representação do Limitações da lógica como formalismo de representação do conhecimentoconhecimento
Formalismos de representação do conhecimento orientado a objetosFormalismos de representação do conhecimento orientado a objetos Redes semânticas UML: redes semânticas utilizadas no nível certo Frames: a volta dos procedimentos Linguagens de programação orientadas a objetos como FRC Lógicas descritivas: a volta vingativa da lógica
OntologiasOntologias Definição e origens Tipologia das ontologias e suas aplicações Ontologias e reuso de conhecimento Ontologias já estudadas na disciplina Áreas da engenharia ontológica Linguagens de representação de ontologias Web semântica: o renascimento das ontologias e dos FRCOO Arquitetura de software dirigido por modelos: ontologias entram no
mainstream Catálogo das ontologias disponíveis
Formalismo de Representação do Conhecimento Orientados a Objetos
(FRCOO)
Limitações da lógica como formalismos de representação do conhecimento
Complexa Representação Complexa Representação
- Entendimento- Entendimento
Surgimento cognitivoSurgimento cognitivo
- Sem usar lógica- Sem usar lógica
“ “non-logical” FRC foram desenvolvidos motivados pela crença que non-logical” FRC foram desenvolvidos motivados pela crença que lógica (clássica) é inadequada para representação do conhecimento lógica (clássica) é inadequada para representação do conhecimento em aplicações IA. em aplicações IA.
Redes semântica: construtores
Uma rede semântica é uma representação na qualUma rede semântica é uma representação na qual existem nós que representam entidades e links
(predicados) que representam relacionamentos entre essas entidades;
cada link conecta um nó origem até um nó destino; normalmente, os nós e links denotam entidades de domínio
específico.
Forma mais flexível e intuitiva de representar Forma mais flexível e intuitiva de representar conhecimento.conhecimento.
Redes semânticas: serviços de inferência
Base de conhecimentoBase de conhecimento nós e links da rede.
Máquina de inferênciaMáquina de inferência busca e casamento de padrões a busca se dá para frente e para trás através dos links.
A busca pode ser usada de várias maneiras para se extrair A busca pode ser usada de várias maneiras para se extrair informações informações como uma ferramenta explicativa; para explorar exaustivamente um tópico; para encontrar o relacionamento entre dois objetos.
Redes semânticas: exemplo
Redes semânticas: limitações
Duas limitações principais das redes semânticas:Duas limitações principais das redes semânticas: 1. 1. Computacionalmente incompletos para implementar a maioria dos sistemas Computacionalmente incompletos para implementar a maioria dos sistemas
inteligentesinteligentes 2. Sem semântica declarativa formal bem-definida (atalho entre nível do 2. Sem semântica declarativa formal bem-definida (atalho entre nível do
conhecimento e nível da implementação sem lógica)conhecimento e nível da implementação sem lógica) Frames são sucessores das redes semânticas visando a superar a 1Frames são sucessores das redes semânticas visando a superar a 1aa
limitação limitação Lógicas descritivas são sucessores das redes semânticas visando a Lógicas descritivas são sucessores das redes semânticas visando a
superar a 2superar a 2aa limitação limitação Busca em redes semânticas grandes pode ser muito ineficiente.Busca em redes semânticas grandes pode ser muito ineficiente. Não há homogeneidade na definição de nós e links.Não há homogeneidade na definição de nós e links. Hereditariedade pode causar dificuldades no tratamento de exceções.Hereditariedade pode causar dificuldades no tratamento de exceções. Pode haver conflito entre características herdadas.Pode haver conflito entre características herdadas. É difícil representar conhecimento procedimentalÉ difícil representar conhecimento procedimental
seqüenciamento e tempo não estão explícitos. Menos expressiva que a Lógica de Primeira Ordem Menos expressiva que a Lógica de Primeira Ordem
não há quantificadores
Redes semânticas no 3o milênio: diagramas de classes e de objetos UML
Vantagens de UML sobre redes semânticas
Padrão - rede semântica nunca padronizou nem notação nem Padrão - rede semântica nunca padronizou nem notação nem ferramenta de ediçãoferramenta de edição
Links bens definidos - composição, agregação, ... Links bens definidos - composição, agregação, ...
Trabalha a nível do conhecimentoTrabalha a nível do conhecimento
Gráfico - bom para modelar Gráfico - bom para modelar
Frames
Um frame é identificado por um nome e descreve um objeto Um frame é identificado por um nome e descreve um objeto complexo através de um conjunto de atributoscomplexo através de um conjunto de atributos
Um Um Sistema de FramesSistema de Frames é um conjunto de frames é um conjunto de frames organizados hierarquicamente. organizados hierarquicamente.
São uma evolução das Redes Semânticas: São uma evolução das Redes Semânticas: nós são substituídos por frames
arcos são substituídos por atributos (slots)
procedimentos podem ser anexados a um frame
Frames: construtores
Definição do Frame– Frame: F in KB Definição do Frame– Frame: F in KB F F EE F – Nome do frameF – Nome do frame E – Expressão do frame E – Expressão do frame S – Nome do slot representa propriedades da situação descrita S – Nome do slot representa propriedades da situação descrita
no frameno frame H – Slots constraints (INTERSECTION, UNION, NOT)H – Slots constraints (INTERSECTION, UNION, NOT) F F - Conjunto de definições do Frame- Conjunto de definições do Frame
Frames - Facetas
Descrevem conhecimento ou algum procedimento relativo ao Descrevem conhecimento ou algum procedimento relativo ao atributo.atributo.
PropriedadesPropriedades Valor: especifica o único valor possível. Valor default: especifica o valor assumido pelo atributo caso não
haja nenhuma informação a esse respeito. Tipo: indica o tipo de dado do valor. Domínio: descreve os valores possíveis para o atributo.
Frames - Gatilhos
DefiniçãoDefinição São procedimentos anexados aos frames, disparados por
consultas ou atualizações.
Podem inferir valores para atributos a partir de valores de outros atributos especificados anteriormente em qualquer frame do sistema.
Procedimentos Demons:Procedimentos Demons: when-requested
quando o valor é pedido mas não existe ainda when-read
quando valor é lido when-written
quando valor é modificado
Frames: exemplo
Limitações dos Frames
Conhecimento comportamental não declarativo impede Conhecimento comportamental não declarativo impede codificação direita por especialista do domínio que não é codificação direita por especialista do domínio que não é programadorprogramador
Sem semântica formalSem semântica formal Implementação ad-hoc de dedução e adbução, geralmente Implementação ad-hoc de dedução e adbução, geralmente
ineficientesineficientes Não existe máquina de inferência indutivas para Não existe máquina de inferência indutivas para
aprendizagemaprendizagem Não inclui noções de encapsulamento e componentes das Não inclui noções de encapsulamento e componentes das
linguagens de programação OO modernaslinguagens de programação OO modernas
LPOO como FRC: construtores
OObjetos bjetos (estado + comportamento)(estado + comportamento)
ClassesClasses
InstânciaInstância
SubclasseSubclasse
Encapsulamento (Encapsulamento (ocultamento de implementação e ocultamento de implementação e modularidademodularidade))
LPOO como FRC: serviços de inferência
Rico em termos de estrutura, pobre em termos de inferênciaRico em termos de estrutura, pobre em termos de inferência
Inferência – Herança (você não programa herança)Inferência – Herança (você não programa herança)
Ex: Implementar maquina de inferência em Java Ex: Implementar maquina de inferência em Java
Trabalhoso, lento, limitadoTrabalhoso, lento, limitado
Jeops: um sistema de produção embutido em JavaJeops: um sistema de produção embutido em Java
LPOO como FRC: exemplopublic class Course {public class Course {
final static short MAX_ENROLLED = 30;final static short MAX_ENROLLED = 30; final static short MIN_ENROLLED = 2;final static short MIN_ENROLLED = 2;
private Student[] enrolls; private Student[] enrolls; private Lecturer taughtby;private Lecturer taughtby;
public void setEnrolls(Student[] enrolls) {public void setEnrolls(Student[] enrolls) { if(enrolls.length >= MIN_ENROLLED &&if(enrolls.length >= MIN_ENROLLED && enrolls.length >= MAX_ENROLLED) {enrolls.length >= MAX_ENROLLED) { this.enrolls = enrolls;this.enrolls = enrolls; } else{} else{ throw new IllegalArgumentException("Enrolls must be between "+throw new IllegalArgumentException("Enrolls must be between "+ MIN_ENROLLED+" and "+MAX_ENROLLED);MIN_ENROLLED+" and "+MAX_ENROLLED); }} }} ......}}
LPOO como FRC: exemplo
public class BasCourse extends Course {public class BasCourse extends Course {
public BasCourse() {public BasCourse() {
}}
public void setTaughtby(Lecturer taughtby) {public void setTaughtby(Lecturer taughtby) {
if(taughtby instanceof Professor){if(taughtby instanceof Professor){
this.setTaughtby(taughtby);this.setTaughtby(taughtby);
} else {} else {
throw new IllegalArgumentException("Lecurer must be an throw new IllegalArgumentException("Lecurer must be an Professor to teach an BasCourse");Professor to teach an BasCourse");
}}
}}
}}
Lógicas descritivas: princípios
Usar lógica para definir formalmente semântica de formalismos Usar lógica para definir formalmente semântica de formalismos de representação de conhecimento OO.de representação de conhecimento OO.
Estudar computabilidade e complexidade das linguagens e Estudar computabilidade e complexidade das linguagens e serviços de inferência antes de implementá-los.serviços de inferência antes de implementá-los.
Limitar expressividade para garantir que esses serviços sejam Limitar expressividade para garantir que esses serviços sejam computacionalmente tratáveis.computacionalmente tratáveis.
Lógicas descritivas: conceitos chaves
Utilizar lógica para dar semântica a hierarquia OOUtilizar lógica para dar semântica a hierarquia OO Formalismos lógicos para representação das informações sobre Formalismos lógicos para representação das informações sobre
classes de indivíduos e suas descrições.classes de indivíduos e suas descrições. Subconjunto da lógica de primeira ordem, trata de:Subconjunto da lógica de primeira ordem, trata de:
Relações unárias (conceitos) Ex, Student = {x | Student(x)}
Relações binárias (papéis); Ex, SUPERVISED = {(x,y) | SUPERVISED(x,y) }
Possui também:Possui também: Construtores sobre os conceitos (,, outros)
Ex, PdhStudent = Student SUPERVISED.AcademicStaff = { x | Student(x) y.SUPERVISED(x,y) AcademicStaff(y) }
Indivíduos, e instâncias dos conceitos franklin, jacques, thiago; Student(thiago), PhdStudent(franklin), Researcher(jacques)
Lógicas descritivas: construtores
Lógicas descritivas: bases de conhecimento
KB = Tbox + AboxKB = Tbox + Abox Tbox (Terminological part) - Tbox (Terminological part) - intensional knowledgeintensional knowledge
DescriçõesDescrições Exemplo:
Woman = Person Female
Abox (Assertional part) - extensional knowledgeAbox (Assertional part) - extensional knowledge
InstânciasInstâncias Exemplos:
Female Person (Anna) hasChild (Anna, Jacopo)
Lógicas descritivas: serviços de inferência
Dada uma base de conhecimento Dada uma base de conhecimento = <Tbox,Abox>, dois = <Tbox,Abox>, dois conceitos C e D, e um indivíduo a, chamamos:conceitos C e D, e um indivíduo a, chamamos:
Satisfiability: |= C Verificar se há um modelo I de tal que CI Exemplo: Student Person ?
Subsumption: |= C D Verificar se C é subsumed por D. CI DI em todo modelo I de Exemplo: Employee Person Student ?
Consistência: |= Verificar se a própria base tem um modelo. Exemplo: Student = Person ?
Classificação de instância: |= C(a) Verificar se uma dada asserção é válida. Exemplo: Person(joao)
Lógicas descritivas: exemplos
Course Course enrolls.Student enrolls.Student 2 enrolls 2 enrolls 30 enrolls 30 enrolls taughtby.(Professor taughtby.(Professor GradStudent) GradStudent) =1taughtby=1taughtby
AdvCourse AdvCourse Course Course enrolls. GradStudent enrolls. GradStudent 20 enrolls 20 enrolls BasCourse BasCourse Course Course taughtby.Professor taughtby.Professor GradStudent GradStudent Student Student degree.String degree.String = = 1 degree1 degree Undergrad Undergrad Student Student
GradStudent(João)GradStudent(João) Taughtby(Jacques,UFPE)Taughtby(Jacques,UFPE)
Lógicas descritivas: aplicações práticas
Modelagem de AplicaçõesModelagem de Aplicações
- entendimento retirando inconsistências- entendimento retirando inconsistências
Engenharia de SoftwareEngenharia de Software
- Uma das primeiras aplicações : usar DL para um sistema de - Uma das primeiras aplicações : usar DL para um sistema de softwaresoftware
ConfiguraçãoConfiguração
- Incluem aplicações que suportam o design de sistemas - Incluem aplicações que suportam o design de sistemas complexos criados pela combinação de componentescomplexos criados pela combinação de componentes
MedicinaMedicina
- Construção de ontologias de conhecimento médico- Construção de ontologias de conhecimento médico
Lógicas descritivas: limitações
DL não trata bem de conceitos quantitativos tais como ordem, DL não trata bem de conceitos quantitativos tais como ordem, quantidade, tempo e taxas.quantidade, tempo e taxas.
Limitar expressividade para garantir que esses serviços sejam Limitar expressividade para garantir que esses serviços sejam computacionalmente tratáveis.computacionalmente tratáveis.
Definição cíclica Definição cíclica
Ex: Pessoa – filho (pessoa)Ex: Pessoa – filho (pessoa)
Ontologias
O que é uma ontologia ?
Definição: Definição: especificação (semi-)formal explícita de uma especificação (semi-)formal explícita de uma concepção compartilhadaconcepção compartilhada
Concepção: Concepção: modelo das entidades, relações, axiomas e regras de algum domínio
Formal:Formal: processável por máquina com semântica lógica formal
Compartilhada:Compartilhada: por uma comunidade, permitindo entendimento
Conceitos de computação relacionados:Conceitos de computação relacionados: Base de conhecimento reutilizável Esquema de banco de dados
Origem e motivação para ontologias
Gerenciamentodo Conhecimentoem Organizações
desde 90
Integraçãode Dadosdesde 95
SistemasMulti-agentes
desde 95
Recuperaçãode Informação
na Webdesde 00
PsicologiaCognitivadesde 60
Lingüísticadesde 60
SistemasEspecialistas
desde 80
Processamentode Linguagem
Naturaldesde 80
OntologiasFilosofia
desde 350 A.C.
Engenhariade Software:
requisitos e reusodesde 90
Tipologias das ontologias
Especialista:Especialista: modela um domínio particular restrito modela um domínio particular restrito Geral:Geral:
inclue vocabulário relacionado a coisas eventos, tempo, espaço, etc
modela o conhecimento de senso comum compartilhado por todos os seres humanos
parte de mais alto nível, reutilizável em vários domínios Conceitual:Conceitual: fundamentada na capacidade de raciocinar fundamentada na capacidade de raciocinar Lingüística:Lingüística: fundamenta no vocabulário de uma(s) língua(s) fundamenta no vocabulário de uma(s) língua(s) De meta-dados:De meta-dados: “especializada” na descrição de recursos on- “especializada” na descrição de recursos on-
line, no entanto sobre qualquer domínioline, no entanto sobre qualquer domínio De tarefas e métodos:De tarefas e métodos: modela procedimentos e modela procedimentos e
comportamentos abstratos no lugar de entidades ou relaçõescomportamentos abstratos no lugar de entidades ou relações
Elementos de uma ontologia
Hierarquia de conceitos:Hierarquia de conceitos: entidades
cada entidade definida por conjunto de pares atributo-valor correspondem:
as classes dos modelos orientado a objetos as entidades do modelo relacional aos termos do modelo lógico
relações sem hierarquia x em hierarquia paralela a hierarquia de entidades correspondem:
associações, agregações e atributos dos modelos OO cujos valores são objetos
as relações do modelo relacional aos predicados do modelo lógico
Elementos de uma ontologia
Restrições:Restrições: sobre valores possíveis dos atributos do conceitos correspondem:
as assinaturas de classes em modelos OO as axiomas universalmente quantificados em modelos lógicos as restrições de integridade nos esquema de BD
Regras dedutivas:Regras dedutivas: permitem inferência automática da existência de instâncias
de conceitos a partir da existência de outras instâncias correspondem:
as regras dos sistemas especialistas e programação em lógica aos métodos dos modelos OO as visões em BD
Elementos de uma ontologia
Instâncias de conceitos:Instâncias de conceitos: definição de entidade e relações específicos (indivíduos) correspondem:
aos fatos de sistemas especialistas e programação em lógica aos objetos dos modelos OO aos dados dos BD
Ontologias e reuso de conhecimento
G
D1
AP1
G
D1
AP2
G
D2
AP1
G
D2
AP2
Aplicação 1 Aplicação 2
Domínio 1
Domínio 2
Sub-problemas de modelagem de uma ontologia geral
Categorias e conjuntosCategorias e conjuntos MedidasMedidas Objetos compostosObjetos compostos TempoTempo EspaçoEspaço MudançasMudanças Eventos e processosEventos e processos Objetos físicosObjetos físicos SubstânciasSubstâncias Objetos mentais e crençasObjetos mentais e crenças
Engenharia ontológica: categorias
Também chamadas de classes, relações, tipos ...Também chamadas de classes, relações, tipos ... conjuntos de objetos com propriedades comuns organiza e simplifica a base de conhecimento.
Exemplos de simplificação:Exemplos de simplificação: através de herança
todo mamífero bebe leite
Taxonomia: Taxonomia: tipo particular de ontologia:
relações hierárquicas entre classe e sub-classes em forma de árvores
Engenharia ontológica: categorias
DisjunçãoDisjunção
- não há interseção entre as categorias- não há interseção entre as categorias ex. Disjunção({Animais, Vegetais})
Decomposição exaustivaDecomposição exaustiva ex. DecomposiçãoExaustiva({Americano, Canadense, Mexicano}, Norte-
Americano)
PartiçãoPartição
- - decomposição exaustiva disjuntadecomposição exaustiva disjuntaex.. Partição(({macho, fêmea}), animal)
Engenharia ontológica: medidas
Valores atribuídos aos objetos do mundo real: servem para Valores atribuídos aos objetos do mundo real: servem para descrever objetosdescrever objetos ex. peso, comprimento, altura, diâmetro, ...
Medidas quantitativas são fáceis de representarMedidas quantitativas são fáceis de representar ex. Tamanho(L1) = Polegadas(1,5) = Centímetros (3,81)
Medidas qualitativas são mais complicadas Medidas qualitativas são mais complicadas ex. beleza de um poema, dificuldade de um exercício O importante é ordenar
e1, e2 e1 Exercícios e2 Exercícios Elabora(João,e1) Elabora(Pedro,e2) Dificuldade(e1) < Dificuldade(e2)
Engenharia ontológica: Objetos Compostos
Objetos formados por partes que também são objetosObjetos formados por partes que também são objetos São caracterizados pela estrutura dos objetos que os compõem ex. massa de um carro é a soma das massas de suas
partes(carroceria, motor, pneu, ...) Para representá-los, usamos a relação Para representá-los, usamos a relação ParteDeParteDe
e.g., ParteDe(motor, Carro), ParteDe(pneu, Carro) Exemplo:Exemplo:
a Bipede(a) l1, l2, b Perna(l1) Perna(l2) Corpo(b) ParteDe(l1,a) ParteDe(l2,a)ParteDe(b,a)
Ligado(l1,b) Ligado(l2,b) l1 l2 l3 Perna(l3) ParteDe(l3,a) (l3 = l1 l3 = l2)
Linguagens de representação de ontologias
Lógicas descritivas: LOOM, Classic, FaCT, ...Lógicas descritivas: LOOM, Classic, FaCT, ... Linguagens de interoperabilidade entre agentes: KIFLinguagens de interoperabilidade entre agentes: KIF Programação em Lógica OO: Flora, Lopix, SirliProgramação em Lógica OO: Flora, Lopix, Sirli Linguagens específicas para ontologias antes da iniciativa Web Linguagens específicas para ontologias antes da iniciativa Web
Semântica da W3C: OntolinguaSemântica da W3C: Ontolingua Linguagens de Web semântica: XMLS (esquema para documentos XML) RDFS (essencialmente redes semânticas distribuidas na web) DAML-OIL e OWL (essencialmente lógicas descritivas distribuidas
na web) RuleML (essencialmente regras Prolog e regras de produção
distribuídas na web) UMLUML
Web semântica
Torna pesquisa de ontologia atualTorna pesquisa de ontologia atual
Uma das aplicações de ontologiaUma das aplicações de ontologia
Extensão da Web atualExtensão da Web atual
Tentar contornar a falta de precisão dos engenhos de buscaTentar contornar a falta de precisão dos engenhos de busca
Informação estruturada e com semântica bem definidaInformação estruturada e com semântica bem definida
Agentes computacionais capazes de processar e entender os Agentes computacionais capazes de processar e entender os dadosdados
Web semântica Arquitetura
Dados
Web Semântica
Engenho de Busca
Ontologia Ontologia Ontologia
Camada deEstrutura
Camada deEsquema
Regras de InferênciaCamadaLógica
… E-commerce
Web semântica Arquitetura
Camada de EstruturaCamada de Estrutura
- Responsável por estruturar os dados e definir seu significado- Responsável por estruturar os dados e definir seu significado Camada de EsquemaCamada de Esquema
- Responsável por definir relações entre os dados- Responsável por definir relações entre os dados
- Ontologia: “Entendimento comum e compartilhado de um - Ontologia: “Entendimento comum e compartilhado de um domínio”domínio”
- Uso de ontologias em páginas web torna mais simples a - Uso de ontologias em páginas web torna mais simples a resolução de indefinição ou conflito de terminologiaresolução de indefinição ou conflito de terminologia
Camada Lógica Camada Lógica
- Responsável por definir mecanismos para fazer inferência - Responsável por definir mecanismos para fazer inferência sobre os dadossobre os dados
- Composta por um conjunto de regras de inferência- Composta por um conjunto de regras de inferência
- Regras de inferência fornecem aos agentes computacionais - Regras de inferência fornecem aos agentes computacionais o poder de raciocinar sobre as estruturas de dadoso poder de raciocinar sobre as estruturas de dados
Arquitetura de software dirigida por modelos
Model-driven architecture, an OMG standardModel-driven architecture, an OMG standard
httphttp://www.://www.omgomg..orgorg//
Catálogo de ontologias disponíveis
www.www.damldaml..orgorg
Problemática geral e questões sobre ontologias
Divisão:Divisão: como delimito as classes e os atributos? quais são as distinções que trazem valor agregado?
Escopo: Escopo: qual conhecimento incluir? qual a fronteira do meu domínio?
Granularidade: Granularidade: até que nível de detalhe modelar os domínio? problema da ramificação?
Validação: Validação: como avalio a qualidade do modelo? como escolho entre várias modelagem alternativas (as vezes propostas
por pessoas diferentes)?] como identificar aspectos importantes que estão faltando?
Problemática geral e questões sobre ontologias
Muito difícil responder a essas perguntas porque:Muito difícil responder a essas perguntas porque: Almejados reuso e relativa independência de aplicação impedem
ser guiado completamente pelos requisitos de uma aplicação restrita
Para ontologias gerais de senso comum pior devido a imensidão em largura e profundidade do conhecimento a modelar
Metodologias ainda incipientesMetodologias ainda incipientes
No entanto, já existe tentativa de padronização: No entanto, já existe tentativa de padronização: httphttp://suo.ieee.://suo.ieee.orgorg//
Referências e links
The Description Logic Handbook : Theory, Implementation and The Description Logic Handbook : Theory, Implementation and ApplicationsApplicationsFranz Baader, Diego Calvanese, Deborah McGuinness, Daniele Nardi, Peter Patel-Schneider
Ontological Engeneering: a state of the arteAsunción Goméz Peréz
Artificial Intelligence a Modern Approach (2nd Edition), S. Russell & P. Norvig, 2002, Prentice-Hall.
Ontologies, the Silver Bullet for Knowledge Management and Electronic Commerce, D. Fensel. 2001, Springer-Verlag.
www.www.damldaml..orgorg httphttp://www.://www.omgomg..orgorg// http://www.cin.ufpe.br/~in1006/2003http://www.cin.ufpe.br/~in1006/2003