PROGRAMA
DE Pos-GRADUAÇÃO
EM
ENGENHARIA
ELETRICA
UMA
LINGUAGEM CENTRADA
EM
FRAMES
PARA
DESENVOLVIMENTO
DE
SISTEMAS
BASEADOS
NO
CONHECIMENTO
Dissertação submetida à Universidade Federal de Santa
Catarina
como
requisito parcial à obtençãodo
grau de Mestreem
Engenharia ElétncaLEANDRQ
JosE
KoMos1NsK1
UMA
LINGUAGEM CENTRADA
EM
FRAMES PARA
DESENVOLVIMENTO
DE
SISTEMAS BASEADOS
NO
CONHECIMENTO
LEANDRO
JOSÉ
KOMOSINSKI
ESTA
D1ssERrAçÃo
For
JULGADA
ADEQUADA
PARA
oBTENçÃo
Do
TÍTULO
DE
MESTRE
EM
ENGENHARIA ELÉTRICA
ESPECIALIDADE CONTROLE
EAUTOMAÇÃO
INDUSTRIAL
EAPROVADA
EM
SUA
FORMA FINAL PELO PROGRAMA
DE
PÓS-GRADUAÇÃO
~ 1
_____,;@É>e×¢»1z>.zez‹«_flsf_1z/1./__Í`_
________
__
Prof.
Hervé
Eric/Qarnousset,
Dr.
QRIENTADOR
/
/ '_ ps./-›Prp
. sé Clos
,.Bermudez,
Ph.D.
COORDENADOR
DO
CURSO
BANCA
EXAMINADORA
___-)/g_¿U}_01<z-_f9z¿~5f_{/_¡ÍÍÍ_________
__
Prof.
Hervé
Eric
Garnousset,
Dr.
PRESIDENTE
2%šáÉÇÉÉ?/2ÉÉ¿;í¢¿;vz%%í¿§2¿
/á2¿2«z___
'Prof.
Pedro
Manoel
da
Silveira,
Ph.D.
____
Prof.
Jean-Mar
eFarines, Dr.Ing.
________
JQÍ
Q-”×<_‹:›_/________
À
Joao
e Lionira,meus
pais./-AGRADECIMENTOS
À
Hervé
Gamousset
pelaamizade
e habilidadena
orientação deste trabalho.A
Ao
pessoaldo
LCMI
pelo ótimo ambiente de trabalho.À
PauloLacerda
pelas suas importantes opiniões.Aos
colegasMaria Marta
Leite,Carmen
Lacerda e JoséEduardo
deLucca
peloapoio e, principalmente, pela grande
amizade
estabelecida.Sumário
Resumo
... .. viiAbstract ... .. ix
capítulo 1
INTRODUÇÃO
... .. 1Capítulo
2
REPRESENTACAO
DO
CONHECIMENTO
... .. 42.1 Introdução ... ..4
2.2 Sistemas Especialistas e Representação
do Conhecimento
... _. 4 2.3O
Formalismo
deFrames
... .. 82.3.1 Conceitos Básicos ... .. 9
' 2.3.2 Sistemas Baseados
em
Frames
... .. 102.4 Conclusão ... .. 14
Capítulo 3 -
A
LINGUAGEM
LOF
... .. 153.1 Introdução ... _. 15 3.2
Ambiente
deProgramação
... .. 15 3.3Frames
... .. 17 3.3.1_A Superclasse ... .. 18 3.3.2 Slots ... .. 19 ~ 3.3.2.1 Slots deDocumentação
... _. 19 .- 3.3.2.2 Slots de Declaração ... .. 21 3.3.2.2.1 Valordo
Slot ... .. 22 ' 3.3.2.2.2 Facetas ... _. 24 3.3.2.2.3Demons
... .. 273.3.2.3 Slots de Controle ... .. 31
3.4 Instâncias ... .. 32
3.4.1 Instâncias
do
tipo frame ... _. 34 3.4.2 Instânciasdo
tipo classif ... _. 35 3.5Mecanismos
de Inferência ... 363.5.1
A
Herança
... ._ 36 3.5.2 Valordo
Slot ... .. 373.5.3 Inferência por Procedimento ... .. 38
3.5.4
A
Instancíação ... .. 383.5.4.1 Algoritmo de Instanciação ... .. 38
3.5.4.2
Dependência
Entre Slots ... .. 423.5.4.3 Instâncias
do
tipo frame ... .. 433.5-.5 Classificação ... .. 43
3.5.5.1 Instância
do
tipo classif ... .. 443.6 Conclusão ... .. 44
Capítulo 4 -
LOF E
PROGRAMAÇÃO
ORIENTADA
A
OBJETO
... .. 464.1 Introdução ... .. 46
4.2
Elementos
deProgramação
... .. 464.3
LOF
como
Linguagem
deProgramação
Orientada a Objetos ... .. 474.3.1 Instâncias
do
tipo object ... .. 484.3.2
Os Métodos
... .. ... ._ 49 4.4Exemplo:
Criaçãodo
Objeto Pilha ... .. 51Capítulo5
-EXEMPLO
DE
UTILIZAÇÃO
DE
LOF:
UM
SISTEMA
ESPECIALISTA
PARA
DIAGNÓSTICO
DE
DEFEITOS
EM
EQUIPAMENTOS
DE
SUBESTAÇÕES
ALTA TEN
SÃO
.... ..5.1 Introdução ... _.
5.2.1
Os
Equipamentos
deUma
Subestação ... ..5.2.2 Diagnóstico de
Equipamentos
... ..5.3
Organizaçãodo
Sistema Especialista ... ..5.3.1 Representaçao da Subestaçao ... .. 59 .... .. 61 .... .. 61 62 .... .. 63 5.3.2
Base
deDados
... ..5.3.3
As
Taxonomias
de Diagnóstico deEquipamentos
... ._5.3.4
O
Controledo
Sistema ... ..5.4 Conclusão ... ..
capítulo ó §
coNcLUsÃo
... ..APÊNDICE
1 -DESCRIÇAO
SINTÁTICA
DA
LINGUAGEM
LOF
... ..APÊNDICE
2 -As
FUNÇoEs
LOF
... _.APÊNDICE
3 -EXEMPLOS DE
UTILIZAÇÃO
DA
LINGUAGEM
... ._APÊNDICE
4 -SISTEMA
ESPECIALISTA
DE
DIAGNÓSTICO
DE
DEFEITOS
EQUIPAMENTOS
DE
SUBESTAÇAO
DE ALTA TENSAO
... .. 113 _. 127REFERÊNCIAS
BIBLIOGRÁFICAS
... ...... _. 56
56
5.2 Subestações de Alta
Tensão
... .. 56.... .. 57 58 .... .. 58 .... .. 64 67 69 90
RESUMO
Nesta dissertação é apresentada
LOF
(Lisp Orientado a Frames),uma
extensão da linguagem Le_Lisp, orientada à geraçãode
sistemas baseadosem
conhecimento.'
Os
objetos básicos manipulados pela linguagem são os frames e as instâncias.Um
frame
éum
meta-objetoque
descreve a estrutura e 0comportamento
de suas instâncias.Os
frames representam classes de objetos
enquanto que
suas instâncias representamindivíduos pertencentes às classes
em
questão.A
declaração deum
frame
é feita atravésda
definição da estrutura (facetas) e docomportamento
(demons) dos slots (atributos)que
ocompõe.
O
principal processo de inferênciaem
LOF
é a instanciação. Este processo consisteem
realizarum
casamento
(matching) entre omodelo
representado porum
frame
euma
situaçãoobservada.
A
instância gerada neste processo é consistentecom
as especificações definidasno
frame.A
linguagemLOF
proporciona ao programador,além do paradigma
deprogramação
orientado a frames, os paradigmas funcional (através da linguagem Le_Lisp)ABSTRACT
This dissertation presents
LOF,
a frame-based extention of the Le_Lisp languageaimed
at designing knowledge-based systems. _The
fundamental objects manipulated by theLOF
language are frames andinstances.
A
frame
is a meta-object that determinates the structureand
the behavior of aset of individual objects
which
are called its instances.Defining
aframe
means
specifying the structure (facets)and
behavior (demons) of the declarative set of its slots.Instantiation is the principal inference
mecanism
inLOF.
It consists in matching aframe-model
againstan
observed situation.The
instance generated in this process isconsistent with frame's specifications.
LOF
programmers
dispose of threeprogramming
paradigms: frame-oríented,Capítulo
11NTRoDUçÃo
Com
o desenvolvimento cada vezmaior da
informática (tanto a nívelde
hardwarequanto
de software)uma
grande variedadede
problemas passaram a ser tratados por computadores.Os
recentes avançosem
computação sugerem que
o processamentosimbólico (ao invés
do
numérico) será a base para apróxima
geração decomputadores
[WAH
89].O
projeto japonês para construção decomputadores
de quinta geração,que
está fortemente baseado
em
conceitos de Inteligência Artificial (IA), exemplifica estatendência. Verifica-se
também
o crescimentodo
número
de sistemasque
utilizam técnicasde
IA, iniciadona
década de 80. .Nos
sistemas deIA
orientados à resolução de problemas édada
muita ênfase ao papeldo
conhecimento e, por esta razão, sãochamados
de Sistemas Baseadosem
Conhecimento (SBC)
(Knowledge-Based Systems).Os
SBC
são caracterizados pormanterem
uma
base de conhecimentos explícita (eem
geral declarativa)onde
sãoarmazenadas
as informações a respeito deum
domínio
específico[BRACHMAN
85b].A
ênfase sobre o conhecimento nos
SBC
fezcom
que
a Representaçãodo Conhecimento
(RC)
assumisseum
papel fundamental para 0 desenvolvimento de sistemas[BARR
81],[ALTY
84],[FIKES
851,[WOODS
861,[WAH
89].As
pesquisasem
RC
levaram ao desenvolvimento de váriosFormalismos
deRepresentação
do Conhecimento
(FRC). Estes formalismos são formados por estruturasde dados (usadas para
armazenar
informações) e por procedimentos (usados para inferirnovas informações a partir daquelas). Eles
ganharam
popularidade principalmentecom
0surgimento, a partir da
metade
da década de 70, dos Sistemas Especialistas (SE).Os
SE
são sistemasque
armazenam
e utilizam o conhecimento deum
especialistahumano
em
um
dominio específico. Dentre os sistemas mais populares pode-se listar:especialista
no
diagnóstico e tratamento de infecção bacteriana eDENDRAL, um
sistemaespecialista
na
determinação de estruturas topológicasde compostos
orgânicos por análise espectográfica.Os
primeirosSE
desenvolvidosforam
construídos visando tratar deum
únicodomínio.
Com
otempo
esta limitação foi superada e passou-se a desenvolvertambém
ambientes de desenvolviemnto de sistemas baseados
no conhecimento
(conhecidoscomo
shells
ou
geradoresde
SE). Estes sistemastêm
a característica de dispor deum
ou
maisformalismos para a representação
do conhecimento
bem
como
mecanismos
de inferência associados.Devido
a natureza essencialmente simbólicado
processamento existente nos SE, alinguagem
LISP
é, juntamentecom
PROLOG,
bastante utilizada para construí-los[ALTY
841,
[WATERMAN
861,[WINSTON
891.Em
princípio, as estruturas de listas e deátomos
são flexíveis para representar simbolicamente o conhecimento.
As
maiores vantagensatribuídas a
LISP
são relacionadas à facilidade deprogramação
proporcionada porum
ambiente interativo(quando
interpretado), a fácil prototipagem, as estruturas poderosas de controle e a existência de boas ferramentas paradepuração
deprogramas
[WINSTON
891,
[RICH
831.Embora
questões relativas ao controle deSE
possam
ser tratadasadequadamente
em
LISP, esta linguagem apresenta dificuldades para a representação de conhecimentos[WATERMAN
861.Na
década
de 80 aProgramação
Orientada a Objetos(POO)
apareceucomo
um
importante
paradigma
de programação. Esteparadigma
estábaseado na
construção desistemas
compostos
por objetos que secomunicam
atravésda
troca demensagens
e são organizadosem
hierarquias. Estas característicaspermitem
a modularidade e facilitam areutilização
do
software. Várias linguagens(como
Flavors, Loops, ObjectLisp,CLOS,
etc.)foram
criadasde
modo
a incorporar as vantagensdo
estilo deprogamação
orientado a objeto ao 'estilo funcional deLISP
produzindo, assim,uma
linguagem híbrida multi-paradigma
[BOBROW
861.Dentre
os vários formalismos de representaçãodo conhecimento
existentes, omodelo
baseadoem
frames[MINSKY
75] é oque
mais assemelha-se, tantoestruturalmente quanto por sua metodologia de representação de informações, ao
sparadigma de
programação
orientada a objetos. Isto sugere os benefícios obtidos pelacombinação
deste formalismocom
a linguagem LISP.O
resultado éuma
linguagemhíbrida
que
combina
os paradigmas funcional, orientado a frames e orientado a objetos.Nesta dissertação é-apresentada a linguagem
LOF
(Lisp Orientado a Frames).LOF
éuma
extensãoda
linguagemLISP
orientada a resolução de problemas. Oi formalismo derepresentação
do conhecimento
é centradoem
frames.Por
outro lado, a semelhança entrea
programação
orientada a frames e a objeto levou a introduzir esteparadigma
deprogramação
em
LOF
com
um
custo limitado.No
capítulo 2 são introduzidos alguns conceitos sobre Representaçãodo
Conhecimento
(RC). Estes conceitos.fundamentam
vários dos formalismos deRC
utilizados nos Sistemas Especialistas.
Em
particular, émostrado
o formalismo baseadoem
frames ecomo
elepode
ser utilizado.No
capítulo 3 é apresentada a linguagemLOF,
enfatizando-se as suas característicasestruturais de representação e os
mecanismos
de inferênciaque
proporciona.No
capitulo 4 é feitauma
comparação
entre os formalismos de representaçãocentrado
em
frames e aprogramação
orientada a objetos.É
mostrado
também
como
LOF
pode
ser utilizadacomo
linguagem deprogramação
orientada a objetos.No
capítulo S é apresentadoum
exemplo
de utilização deLOF
na
geração deum
SE
para diagnóstico de defeitosem
equipamentos de Subestações de Alta Tensão.No
capítulo 6 são apresentadas algumas conclusões sobre o trabalho desenvolvido eCapítulo
2
REPRESENTAÇÃO
DO
CONHECIMENTO
2.1 Introdução
Nos
Sistemas Especialistas (SE) o conhecimentotem
papel fundamental tantona
qualidade
da
soluçãoretomada
como
na
complexidade computacional para sua obtenção.A
Representaçãodo Conhecimento (RC)
éuma
área de pesquisaem
Inteligência Artificial(IA)
onde
estuda-se o tipo de conhecimentomanipulado
nestes sistemas e asrepresentações
adequadas
para sua utilizaçãona
resolução de tais problemas.O
objetivoneste capítulo é apresentar as idéias a respeito desta área e a influência resultante
no
desenvolvimento de Sistemas Especialistas.
Neste capítulo são apresentados conceitos sobre
SE
eRC,
enfatizando-se a estreitaligação existente entre eles.
A
seguir é introduzido o formalismo de representaçãodo
conhecimento
centradoem
frames, juntamentecom
uma
descriçãoda
sua utilizaçãoem
alguns sistemas existentes.
2.2 Sistemas Especialistas e Representação do
Conhecimento
A
evolução dos sistemas de resolução de problemas deu-seem
três etapas distintas[WATERMAN
86].Na
primeira, ocorridana década
de 60, as pesquisasem
IA eram
levadas
com
o propósito de construir-se sistemasque
implementassem métodos
genéricosde resolução de problemas. Acreditava-se,
que
a partir demétodos
simples e decomputadores
poderosos(com
altas capacidadede
processamento e dearmazenamento)
pudessem
ser desenvolvidos sistemascom
desempenho
comparável ao dos sereshumanos.
Porém,
os resultados obtidos foram muito limitados[RICH
831. Constatou-se então asurge, já nos anos 70,
com
a perspectiva de construir-se estruturas de representaçãodo
conhecimento que possam
abrigarum
conhecimento
suficientemente geral para permitirresolver
uma
grande parte de problemas reais (o sistemaKRL [BOBROW
77b] éum
exemplo
desta família de sistemas).No
entanto, a complexidade e diversidadedo
conhecimento envolvidona
resolução deproblemas
reaismostrou
as limitações destaabordagem
[HAYES-ROTH
831.A
terceira etapa, iniciadana
metade da
década de 70,surge
com
o enfoque voltado para sistemas limitados à áreasbem
restritas deconhecimento onde
os formalismos de representação tornam-se apenasum
mecanismo
auxiliar,
mas
não
sem
importância,para
a resolução de problemas.É
neste contextoque
surgem
os SE.Os
SE
tornaram-se então SistemasBaseados
em
Conhecimento (SBC)
(Knowledge-Based
Systems). Sua- ,principal característica é a separaçãodo
conhecimento sobre odomínio
tratadodo
restodo
sistema (informações de controle sobre a utilização daquele conhecimento).Além
disso, tal conhecimento éarmazenado
explicitamente.Daqui
pordiante, os termos
SE
eSBC
serão usados indistintamente.A
arquitetura básica deum
SBC
écomposta
poruma
Base
deConhecimento
(BC),onde
sãoarmazenadas
informações acercado domínio
de atuaçãodo
sistema, e poruma
Máquina
de Inferência (MI)onde
são definidos osmecanismos
de manipulação dasinformações presentes
na
BC
demodo
a inferir novas informações.O
desenvolvimento deum
SBC
consisteem
extrair o conhecimento deum
especialista e codificá-lona
BC.
Assim,"a
acumulação
e codificaçãodo
conhecimento éum
dos aspectos mais importantesdo
desenvolvimento de
um
SE"
[WATERMAN
86].Pelo exposto acima, o
poder
de resolução deum
SE
está diretamente ligado aonível
do
conhecimentoque
contém.É
preciso então usar formalismos capazes derepresentar todas as informações existentes
no domínio
tratado peloSE
deforma
explícitae, de preferência, declarativa.
Além
disso, o formalismo deve facilitar os processos deAs
pesquisasem
Representaçãodo Conhecimento
visam especificar formalismoscapazes de representar informações e desenvolver procedimentos para utiliza-los.
O
seudesenvolvimento deve levar
em
conta opoder
de expressão, a legibilidade e amodularidade
'do formalismoem
questão aliados a eficiência computacional dosmecanismos
de inferência associados.O
poder
de expressão diz respeito à capacidade do formalismopoder
representar os conhecimentos existentesna
formulaçãodo
problema.A
legibilidade está ligada à naturalidade
com
que
informações são representadas e afacilidade da sua compreensão.
A
modularidade está associada à capacidade de incluir,alterar e
remover
informações deforma
simples esem
comprometer
a consistência dasinformações resultantes.
A
eficiência computacional diz respeito à necessidadedo
sistema gerar inferênciasem
tempos
aceitáveis, isto é, cujaordem
de magnitude seja compatívelcom
a dinâmicado meio
físicoonde
deve atuar o sistema.Os
mecanismos
de inferência estão diretamente ligados ao formalismo escolhidopara representar o conhecimento.
No
entanto ocomportamento
inteligente deum
formalismo está ligado à sua capacidade de explorar eficientemente as informações representadas e
não somente
a sua eficiência inferencial.Não
existeuma
teoria sobre a Representaçãodo Conhecimento
em
virtude da complexidade inerente a este assuntoque
envolve questões computacionais, psicológicas efilosóficas
[BARR
86].No
entanto, vários formalismosforam
desenvolvidos e usadosem
Sistemas Especialistas produzindoum
resultado satisfatório. Dentre os formalismos mais conhecidos 'estão a lógica, as regras de produção, as redes semânticas e os frames.Uma
descrição detalhada sobre estes formalismos
pode
ser encontradaem [BARR
86].A
representação através da lógica estáfundamentada
numa
teoria consistente.A
resolução de
problemas
é encaradacomo
uma
prova de teorema, feita a partir deum
conjunto de axiomasque
representam as informações conhecidas.A
ineficiência desteformalismo está ligada a total independência
do
processo dededução
em
relação aoconhecimento sendo
utilizado (tornando adedução
"insensível" a informações de controleparticulares ao
problema
tratado) ena
sua incapacidadeem
representar naturalmenteestruturas complexas
de
conhecimentocomo,
por exemplo, informações default.As
regras deprodução
são o formalismo mais utilizado hojeem
dia nos SE.A
suaprincipal característica é a simplicidade
da
estrutura de representação, feita através deregras
da forma "SE
condições são satisfeitasENTÃO
açõesdevem
ser executadas".As
×
regras são
um
meio
usado naturalmente pelos especialistas para expressar o seuconhecimento
[WINSTON
84]. Informações heurísticas são facilmente representadasatravés de regras.
Um
SE
écomposto
porum
conjunto de regras independentes cujaexecução é controlada por
uma
máquina
de inferência responsável pelo disparoem
cadeiadestas regras.
O
formalismo apresentano
entanto deficiências devido ao baixodesempenho
damáquina
de inferência,no
decréscimo da legibilidadeda
BC
quando
onúmero
de regrasdo
sistemaaumenta
ena
falta de estruturaçãodo
conhecimento devido a'
.I
uniformidade sintática das regras.
Nas
redes semânticas o conhecimento é representado através deum
grafo,onde
osnós
descrevem
conceitos sobre objetos, eventosou
atividades e as ligações etiquetadasdefinem
relações semânticas entre eles.As
inferências estão baseadasem
algoritmos deprocura
em
grafosque
são auxiliados pela semântica associadas às ligações.A
deficiênciadeste formalismo está associada à falta de estruturaçao
do
grafo devido a inexistência deum
consenso sobre a semântica dos nós,além
das dificuldades computacionais inerentes aos processos de procuraem
grafos.Os
fiames
estão baseadosno
mesmo
princípio das redes semânticas, isto é,uma
representação
que
consiste de nós e ligações.Porém,
os nós são fortemente estruturados ea semântica das ligações é limitada às relações de pertinência e de inclusão.
Todas
asinformações a respeito de
um
objeto estão agrupadasem
uma
única estrutura de dados.Este
modelo
foi definido porMinsky
[MINSKY
75] para representar situaçõesestereotipadas. Associado aos frames estão vários tipos de informação
como
a estrutura e 0comportamento
de suas instâncias.A
principal característica dos frames é, portanto, acapacidade de representar conceitos complexos.
O
processo de inferência fundamentalneste formalismo é o
casamento
entre omodelo
representado peloframe
euma
situaçãoobservada. Este formalismo é descrito
em
detalhesna
seção seguinte.2.3
O
Formalismo
deFrames
Os
frames sãouma
modelagem
da
teoria psicológicaque
afirmaque
muitas dasatividades cognitivas
humanas
estão baseadasno
processo de reconhecimento de situações[BARR
86].Apesar
deserem
relativamente vagos os conceitos definidos por Minsky, osframes
foram
usadoscomo
fundamento
para muitos sistemascomo,
porexemplo
KL-ONE
[BRACHMAN
85],KEE
[INTELLICORP
86, 87],PIP
[JOHNSON
86],KRL [BOBROW
77],
CENTAUR
[AIKINS
81].A
falta de precisãono
artigo seminal deMinsky
[MINSKY
75] proporcionouuma
grande variedade de interpretações sobre a estrutura e o papel dos frames dentro de
um
sistema de resoluçao de problemas.
Consequentemente,
sao poucos os conceitoscomuns
existentes nos sistemas desenvolvidos e a terrninologia varia de
um
sistema para outro.Os
trabalhos relativos aos frames dividem-seem
duas linhas:uma,
decunho
epistemológico, investiga a construção de estruturas capazes de representar as informações complexas existentes
em
linguagem natural.O
sistemaKL-ONE
éum
representante típicodesta linha.
A
outra linha de pesquisa, mais pragmática, investiga a construção deestruturas
adequadas
à resolução de problemas particulares.Os
sistemasPIP
[JOHNSON
86] e
CENTAUR
[AIKINS
83] são exemplos desta linha de trabalho. Atualmente, osframes
começam
-a despertarmaior
interessecomo
estrutura de representação deconhecimento nos ambientes de desenvolvimento de sistemas baseados
em
conhecimento[INTELLICORP
86, 87],[LAURENT
87],[ROCHE
89],[WAH
89].A
linha deinvestigação seguida nesta
nova
geração de sistemas está baseadana
construção deestruturas de dados genéricas e cuja expressividade limita-se às necessidades existentes nas
.-Nas
subseções seguintes são apresentados alguns conceitos básicos a respeito do formalismo e sistemasque
os utilizam.2.3.1 Conceitos Básicos
Um
frame pode
representarum
objeto físicoou
abstrato,um
conceito,uma
situação, etc. Estas entidades denominadas, daqui para frente "objetos",podem
ser descritas porum
conjunto de informaçõesque
as caracterizam.Por
exemplo,num
restaurante é esperado encontrar-se informações sobre o tipo de
comida
servida, ocardápio, o preço
decada
prato e o preço totalda
refeição.Um
objeto é caracterizado porum
conjunto de atributosdenominados
slots, aosquais estão associados valores. Alguns dos slots
não
possuem
valores pré-determinados.Nestes casos existem informações ,chamadas facetas,
que
definem
os valores admissíveis afim
de
garantir a consistênciado
frame.Semanticamente
existem dois tipos de frames: osque
representam classes de objetose os
que
representam objetos individuais. Para fazeruma
divisão clara destes conceitos, as classes de objetos sãochamadas
de frames e os objetos individuais de instâncias. Será adotada esta terminologia daqui para frente.As
informações definidas nos frames sãoválidas para todas as instâncias ligadas a estes frames.
Os
framespodem
ser especializadosde
modo
a representarem subclasses de objetos.Por
exemplo, a classe dos"CARROS"
pode
ser dividida nas subclasses"CARROS_0_KM"
e"CARROS_USADOS".
Nestesúltimos frames só são descritas as informações
que
ostornam
diferentes da sua superclasse"CARROS".
Todas
as informações descritasna
superclasse são válidas nas subclasses e sãoacessíveis por herança.
A
construção de taxonomias de frames, proporcionamuma
forteestruturação
do
conhecimento.Instâncias
podem
ser pré-definidasou
ser criadas dinamicamente. Neste caso, oprocesso de criação de
uma
instância deum
frame
determinado (instanciação), consisteem
preencher todos os slots definidos noframe
em
questão.A
instância é criada se todososseus slots
forem
preenchidos corretamete, isto é, deforma
consistentecom
as informaçõesdescritas nas facetas.
O
preenchimento ou
alteraçãodo
valor deum
slot deuma
instância fazcom
que procedimentos ligados ao slotem
questão sejam executados automaticamente. Estesprocedimentos
chamados
dedemons
(procedural attachment)reagem
como
reflexos.A
riqueza deuma
linguagem de representaçãobaseada
em
frames está ligada aostipos de facetas
que
podem
ser associados aos slots. Alguns sistemas perrnitem que oprogramador
defina suas próprias facetas.As
inferências básicas possíveis estão ligadas principalmente ao processo deinstanciação que, indiretamente, ativa os
mecanismos
de herança e execução de demons.Assim, a ênfase dos sistemas baseados
em
frames édada
pela sua capacidade derepresentar informações complexas e mantê-las consistentes(1).
A
combinação
de slots, facetas edemons
produz
uma
estrutura de representaçãoque
mescla informações declarativas e procedurais,ambas
colocadas deforma
explícita.2.3.2 Sistemas
Baseados
em
Frames
z
Nesta subseção são apresentados três sistemas baseados
em
frames. Eles foramescolhidos por representarem formas distintas de utilização deste formalismo.
Os
sistemas descritos são oKL-ONE,
oCENTAUR
e oKEE.
Sistema
KL-ONE
'O
sistemaKL-ONE
é utilizado para a representaçãodo
conhecimentoem
sistemasde IA.
As
primitivasque
formam
a linguagem de representaçãopermitem
a codificação de informaçoes gerais. Estas primitivaspossuem
uma
interpretaçao semântica muitobem
definida, fato
que
caracteriza e distingue este sistema dos demais.(1)
A
consistência está ligada a uma especilicação coerente por parte do programador, não sendo realizadaA
tarefa de representaçãodo
conhecimento é divididaem
duas partes: a descritiva,onde
são definidas todas as informações conhecidassem
apreocupação
decomo
elaspodem
ser usadas; e a assertiva,onde
são definidos contextos para a utilização dessasinformaçoes. _ _
`
Na
linguagem descritivapodem
ser definidos "conceitos primitivos" representandoobjetos
que
sao auto definidos e "conceitos definidos"formados
por conceitos primitivos e outros conceitos já definidos.Como
resultado, cria-seuma
rede de conceitosonde
ahierarquia é
uma
consequência das relaçoes entre os conceitos enao
uma
imposiçaoda
linguagem.
Cada
conceito é definido por atributos(chamados
roles) e por descrições dasrelações entre estes atributos.
A
riqueza semântica deKL-ONE
está ligada diretamente à variedade de primitivas de relacionamento entre os atributos.Podem
ser definidos conceitos genéricos representanto informações válidas aum
conjunto de objetos e conceitos individuais representando
um
único objeto.A
linguagem assertiva permite a manipulação dos conceitossem
que
haja anecessidade de se conhecer
como
estãoarmazenados
etambém
simplifica a interface entreo sistema e o usuário
uma
vezque
as estruturas são muitas vezes complexas.A
principal consequência do rigor semânticocom
que
os conceitos são criados é apossibilidade de construir-se
um
algoritmo de classificaçao capaz de determinar a posiçaode
um
conceito dentroda
rede de conceitos existente a partirda
comparação da
estruturados atributos e dos conceitos.
Por
fim, pode-se dizerque
o sistemaKL-ONE
representauma
investigaçãocom
profundo rigor semântico sobre a natureza das informações existentes
numa
abordagem
desigrçmg
QENTA1
111No
sistemaCENTAUR
os frames são usadoscom
o objetivo específico derepresentar informações
que
caracterizam doenças pulmonares.A
combinação
delescom
regras de
produção
resultamnuma
estruturachamada
"protótipo". `A
estrutura dos frames está adaptada ao sistema sendo, portanto, inapropriada pararepresentar outros tipos
de
informações.Num
protótipo, os slots representam informaçõesque
necessitam ser conhecidaspara
poder
caracterizar adoença pulmonar que
representa. Estas informações são obtidas através de resultados deexames
clínicosou
por inferência sobreum
conjunto de regras de produção.As
facetasdeterminam
o conjunto de valores aceitáveis deuma
determinada informaçao paraque
esta confirmeuma
das característicasda doença
em
questao.'
A
taxonomia de
frames representauma
hierarquia de doenças onde, a cada nível,são descritas doenças mais específicas.
O
processo de utilização desta taxonomia é,naturalmente, a classificação.
Em
cada protótipo estão associados slots de controleque
contêm
informações sobreo
que
deve ser feito caso adoença
hipotética seja confirmada (via instanciaçãodo
1
protótipo)
ou
rejeitada. Este tipo de informaçao é necessáriouma
vezque
existeminterrelações entre as doenças e pelo fato de
que
a detecção (ou não) deuma
certadoença
possa ter efeito sobre o teste das demais.O
sistemaCENTAUR
representa o caso típicoonde
oƒrame
está adaptado àum
domínio deconhecimento
particular demodo
a representar as informações estritamentenecessárias e dispor de
mecanismos
de inferência específicos (e portanto eficientes) àsnecessidades existentes. _
Os
slots de controle, associados aos protótipos,permitem que
as ações de controlesejam específicas e sensíveis ao contexto.
A
introdução de informações de controle a níveldas estruturas de
conhecimento
éno
entanto contrária à tendência geral de isolarcodificadas de
forma
declarativa permitindouma
reformulação simples das estratégias decontrole.
Sistema
KEE
_O
sistemaKEE
éum
ambiente de desenvolvimento de sistemas baseados .emconhecimento. Ele possui
como
estruturas básicas para a representaçãodo
conhecimentoos frames e regras de produção.
Os
frames,chamados
de
units,podem
representar informaçõesde
qualquer domíniode
conhecimento
e são de dois tipos: o primeiro representa classes de objetos e segundorepresenta indivíduos.
Os
unitspodem
ser organizadosem
taxonomias através das ligações class ,que
ligaum
objeto individual auma
classe de objetose superclassque
liga duas classes de objetos.As
taxonomiaspermitem
herança múltipla,ou
seja,um
unitpode
estar ligado a mais deuma
superclasse.l
Os
slots dos unitscontêm
valoresque
caracterizam o atributodo
objeto, facetas querestringem os valores possíveis de
serem
atribuídos a eles euma
espécie dedemon,
que é ativadoquando
o valorde
um
slot é recuperadoou
alterado.Além
disso, alguns slots sãousados para representar "métodos"
implementando
um
tipode programação
orientada aobjetos.
A
manipulação
dos units é feita através deuma
linguagem especial baseadano
cálculo dos predicados. Através dela, valores dos slotspodem
ser recuperadosou
alterados.No
contextodo
ambienteKEE,
os units são usadoscomo
uma
base de dados.A
resolução de
problemas
propriamente dita é realizada por inferência sobreum
conjunto deregras de produção. Nestas regras, as condições
podem
representar informações quedevem
ser obtidas nos units. Desta forma, o papel principal dos unitsno
ambiente érepresentariiobjetos
deimodo
consistente.Aisua
participaçãocomo
componente
deraciocínio é explorada
em
parte pelosdemons
a eles associado e, principalmente, pelasde
produção
(sustentada porum
poderosomecanismo
demanutenção da
verdade (truth-maíntenance system)
chamado
ATMS
[deKLEER
861) proporcionaum
excelente contextopara a representação e resolução de problemas.
2.4 Conclusão
Neste capítulo foi descrito o papel
do
conhecimento nos sistemas baseadosem
conhecimento, especialmente nos Sistemas Especialistas.O
grau de inteligência deum
Sistema Especialista está diretamente ligado à qualidade das informações nele representadas e
na
efetiva utilização destas.A
viabilidade dos Sistemas Especialistas passa pelo uso de formalismos derepresentação
do conhecimento que
permite definir bases de conhecimentos explícitas edeclarativas. Vários formalismos já
foram
propostos. Dentre eles, estão os frames,um
formalismo
que
permite representar informaçoes através danoçao
de objetos.Foram
descritosbrevemente
três sistemas baseadosem
frames.Em
cadaum,
asemântica, a estrutura e
forma
de utilização dos frames é diferente. Esta característica se,por
um
lado, evidencia a falta deuma
teoria consensual sobre oque
é realmenteum
ƒrame,por outro,
demonstra
a variedade de semânticas e formas de utilizaçãoque
podem
serCapítulo
3
A
LINGUAGEM
LOF
3.1 Introdução
Neste capítulo é apresentada a linguagem
LOF,
tema
central desta dissertação.LOF
está baseadano
formalismo de frames sendo, portanto, apropriada para o desenvolvimentode
Sistemas Baseadosem
Conhecimento.
i
LOF
permiteimplementar
objetosdo
mundo
real através das noções de classes deobjetos e objetos individuais representados, respectivamente, por frames e instâncias.
A
apresentação está divididaem
três partes.Na
primeira, émostrado
o ambiente deprogramação
em
que
LOF
está inserida.Na
segunda, são mostradas as estruturas derepresentação
do conhecimento
(frames e instâncias).Na
terceira,completando
o capítulo,são mostrados os vários
mecanismos
de inferência existentes.3.2
Ambiente
deProgramação
A
linguagemLOF,
implementada
em
Le_Lisp[CHAILLOUX
85] sobrecomputador
compatívelcom
IBM
PC, foi desenvolvida demodo
a aproveitar o ambiente deprogramação
fornecido por Le_Lisp. Portanto, para o desenvolvimento conveniente de bons sistemasem
LOF
é preciso conhecer algumas características de Le_Lisp e as facilidadesque
este ambiente proporciona.Serão apresentadas nesta seção apenas algumas características gerais da linguagem Le_Lisp e
do
seuambiente
de programação. Parauma
melhor compreensão
sobre o estilode
programação LISP
e sobre a linguagem Le_Lisp recomenda-se, respectivamente, aA
linguagem Le_Lisptem
como
principal característica a facilidade de manipularexpressões simbólicas. Estas expressões são
amplamente
utilizadasem
sistemas deInteligência Artificial pois
permitem
uma
representação simples e diretade
informações.O
.desenvolvimentode programas
é feito deforma
incremental atravésda
definição defunções.
O
ambiente deprogramação
interativode Le_Lisp
permiteque
cada função sejatestada logo após a sua definição diminuindo a ocorrência de erros de implementação.
Esta característica facilita o rápido desenvolvimento de protótipos tornando mais
interativo (e flexível) o ciclo de desenvolvimento de software.
Devido
ao longotempo
de existênciada
linguagemLISP
foi possível desenvolverexcelentes editores de
programas
(orientados à sua sintaxe) e poderosos ambientes dedepuração.
A
linguagemLOF
écomposta
porum
conjunto de funções pré-definidas e por dois tiposde
dados (os frames e as instâncias) usados para a representaçãodo
conhecimento.A
definição de frames é feita de
maneira
análoga a definiçao de funçoesem
Le_Lisp. Assim, objetospodem
ser rapidamentemodelados
e testados.Um
frame
écomposto
por informaçoes declarativas e procedurais.As
informaçoesdeclarativas
seguem
uma
sintaxe própria (descritano
apêndice 1). Já -as informaçõesprocedurais são declaradas através de expressões avaliáveis pelo interpretador Le_Lisp.
Desta
forma, todos os recursos existentesem
Le_Lisp são naturalmente acessados a partirde
um
frame.No
momento
da
definição deum
frame, é feita a verificação sintáxicada
sua partedeclarativa. Erros sintáticos de origem procedural só serão detectados
quando da
suaavaliação pelo interpretador Le_Lisp, causando a interrupção da avaliação corrente e
retornando o controle ao ambiente
do
interpretador Le_Lisp. _~
Um
frame
é identificado porum
símbolo enão pode
ser alterado após ter sido definido.Qualquer
redefinição implicarána
eliminaçãoda
definição anterior. InstânciasNa
apresentaçãode
LOF
feitano
restante deste capítulo, vários exemplos,implementáveis diretamente
no
interpretador Le_Lisp, são apresentados.O
caracter "?" éo
prompt do
interpretador Le_Lispque
espera a entrada deuma
expressão para seravaliada
(como
mostrado no exemplo
abaixo).O
símbolo "=" precede o resultado daavaliação da última expressão avaliada
no fluxo
de entrada.?(+
?1
? ??2
??)
=3
3.3Frames
O
frame
é a estrutura de dados básica usada para representar o conhecimentoenvolvido
no
sistema desenvolvido.-Um
frame
écomposto
de vários tipos de informaçõesesquematizados
na figura
3.1. frame '_ sruperclasse T 5101-S de documentação g\_¡1_h°z- Etext if-instantiated date de controle Etc-instnnüate if-not.-instantiaiedde declaração valzzr v¿]ue
[default-v facetas value-r Êcurd-min card-max unit. deznons if-needed ll'-filled il'-not-filled if-added if-nol-added ií-rerngved if-nc›t--rerncaved -' metodos
Como
ilustra a figura 3.1,um
frame
LOF
éformado
por três tipos de informaçoes: asuperclasse, os slots e os métodos.
A
superclassedefine
qual é oframe
paido frame na
taxonomia.Os
slots definem os atributosdo
objeto representado pelo frame.Os
métodos
são procedimentos associados aos framesque
são executados por invocação explícita deforma
análoga aosmétodos
existentes nas Linguagens deProgramação
Orientada a Objetos(2).Um
frame
é declarado atravésda
função deƒrame. Esta funçãotem
a seguintesintaxe:
(deframe
<
nome
>
[(subclass-of < superclasse
>
)][< slots
>
] )O
argumento
<nome>
éum
símboloque
identifica o frame.O
argumento
<superclasse> identifica a superclasse
do frame
declarado.O
argumento
<slots>contém
todas as definições de slots.
A
seguir são apresentadosem
detalhes oscomponentes
de representação mostradosna
figura 3.1.3.3.1
A
SuperclasseAtravés da declaração da superclasse é possível construir taxonomias de frames
resultando
num
poderosomecanismo
de inferência: a herança. Através destemecanismo,
toda informaçãoque
for definidaem
um
frame
será válida para os framesque
são seusdescendentes
na
taxonomia.A
sintaxe desta declaração é a seguinte: (subclass-of <nomeFrame_>
)4(2) Os conceitos sobre métodos e 0 uso de
LOF
comoLPOO
são apresentados no capítulo 4.No
presenteO
argumento
<nomeFrame
>
éum
símbolo indicando oframe que
é superclassedo
frame
declarado.Por
exemplo, a declaraçãode
que
oframe
"F2" é subclassedo frame
"F1"é
mostrada
abaixo.? (deframe
F2
(subclass-of F1))= F2
3.3.2 Slots
Os
slotsdefinem
os atributosdo
objeto representado pelo frame.Em
LOF
estão definidos três tipos de slots: os de documentação, os de controle e os de declaração.O
objetivo e sintaxe de cada tipo de slot são descritos a seguir.
3.3.2.1 Slots de
Documentação
Os
slots dedocumentação
permitem,como
o próprionome
indica,documentar
um
frame.
A
documentação
visa facilitar a reutilizaçãodo
software eaumentar
a legibilidadeda
linguagem. Estao predefinidos três slots de documentação: text, author e date.Nao
épossível criar outros slots.
Os
slotsde
documentação
são os únicosque
possuem
um
valorque pode
ser obtidodiretamente
do
ƒ`rame.O
valor desses slotsnao
atuaem
nenhum
processo de inferência.text
O
slot textcontém
um
texto explicativo sobre o frame.Sua
sintaxe é a seguinte:(text
<
string>)
O
argumento
<string>,que
representa o valordo
slot, éuma
cadeia de caracteres.Por
exemplo, a declaraçao deque
oframe
"Fl" é apenasum
exemplo
de utilização do slot? (deframe
F1
(text"Exemplo
de usodo
slot text"))= F1
_
A
funçãotext-slot, cujo parâmetro é 0
nome
do
frame,retoma
o valordo
slot text.Por
exemplo, aplicando esta função paraoƒrame
"F1"acima
tem-se a seguinte resposta.? (text-slot 'F1) ,
= Exemplo
de usodo
slot textdate
O
slot date descreve a data de criaçãodo
frame.Sua
sintaxe é a seguinte:(date(<dia>
<mes>
<ano>))
O
argumento
deste slot,que
representa 0 seu valor, éuma
listacomposta
de trêselementos representando, respectivamente, o día, o
mês
e 0 ano.Cada
elementopode
serde qualquer tipo válido
em
Le_Lisp. Por exemplo, a declaração deque
oframe
"F1" foicriado
no
dia 12de
fevereiro de 1990 é declaradacomo
mostrado
abaixo.? (defrarne
F1
(date (12 fevereiro 1990)))=
F1
A
'função date-slot, cujo parâmetro é 0nome
do
frame, retorna o valordo
slot date.Por
exemplo, aplicando esta função para oframe
"F1"acima
tem-se a seguinte resposta.? (date-slot *F 1)
author
O
slot authorcontém
onome
da
pessoaque
criou o frame.Sua
sintaxe é a seguinte:(author <stríng>) _
O
argumento
<string>,que
representa o valordo
slot, éuma
cadeia de caracteres.Por
exemplo, a declaração deque
oƒrame
"F1" foi criado peloLeandro
émostrada
abaixo.? (deframe
F1
(author "Leandro"))=
Leandro
A
função author-slot, cujo parâmetro é onome
do
frame, retorna o valordo
slotauthor. Por exemplo, aplicando esta função para o
frame
"F1"acima
tem~se a seguinteresposta.
? (author-slot 'F 1)
=
Leandro
3.3.2.2 Slots de Declaração
Os
slots de declaração são definidos peloprogramador
e representam atributoscomuns
a todos os objetos pertencentes à classemodelada
pelo frame.O
poder deexpressividade e de inferência de
LOF
vai resultar da riqueza de representação ao níveldestes slots.
A
composição dos slots de declaração é bastante diferenteda
composição dosdemais
slots ecombinam
informações declarativas e procedurais.Um
slot de declaraçãopode
conter três tipos diferentes de informações: seu valor(quando
este é conhecido apriori
ou
por default),um
conjunto de facetas descrevendo os valores assumíveis pelo sloteos demon.:
que
definem ocomportamento
das instânciasdo frame quando
da manipulaçaodo
conteúdodo
slot.3.3.2.2.1 Valor
do
SlotA
declaraçãodo
valorde
um
slot é feitaquando
qualquer instânciado frame
em
questão deve assumir
somente
este valorou o assume na
ausência de informação contrária.Cada
slot de declaraçãopode
conterum
ou
mais valores.O
valor deum
slotpode
ser qualquer objeto
DOF
(objetos Le__Lispou
instâncias).Quando
um
slotassume
mais deum
valor a representação destes valores é feitausando
0 tipo especial Set. Este tipotem
aseguinte sintaxe:
#{
<valor1> <valor2>
<valorN>}
O
tipo Set permiteque
se evite ambiguidadesna
representaçãodo
valor deum
slot.Por
exemplo, a representação deque
um
slot possui os valores 1, 2 e 3 deve ser feita daforma
#{1
2 3}.A
forma
(1 2 3) representa o fatode que
o slotcontém
apenasum
valor,no
caso,uma
listacom
três elementos.A
manipulação deste tipo é feita atravésde
funções específicas (ver apêndice 2).value
.
O
componente
value é utilizadoquando
o valor deum
slot é conhecido a priori enão
pode
assumir outro valor.A
sintaxe destetermo
é a seguinte:(value
<valor>)
onde
oargumento <va1or>
éuma
expressão Le_Lisp.O
valordo
slot será oPor
exemplo, para oframe
"TERRA"
o slot "número-de~luas" só aceitao
valor 1.Este
exemplo
émostrado
abaixo.? (deframe
TERRA
(slot numero-de-luas (value 1)))=
TERRA
default-v
O
valor por default deum
slot é assumidoenquanto
nenhuma
informação ocontradisser. Esta informação permite representar conhecimento de senso
comum,
isto é,informações verdadeiras
na
maioria das situações,embora
existam exceções.Este tipo de informação está diretamente ligado às idéias de
Minsky
[MINSKY
75].De
acordocom
Minsky
um
frame contém
informaçõesque
tipicamente caracterizamum
objeto e, casonao
hajanenhuma
informaçao contrária, estas informaçoes sao assumidascomo
sendo verdadeirasmesmo
que
não
tenham
sido explicitamente verificadas.Em
LOF,
uma
informação default só é considerada se:1)
não
houver valor definido para 0 slot;2)
não
houverum
valorque
possa ser herdado;3)
não
houveruma
informação contrária fornecidaquando da
criação deuma
instância;
4) o
demon
if-neededdo
slotem
questãonão
estiver definido.A
sintaxe desta declaração é a seguinte: (default-v < valor>)
onde
oargumento <valor>
éuma
expressão Le_Lisp.O
valordo
slot será oPor
exemplo, para o slot "número-portas"do frame
CARROS
o valor por defaultpode
ser 2, jáque
é a situação maiscomum
(embora
existam carroscom
4 portas). Estainformação é declarada abaixo.
? (deframe
CARROS
(slot numero-portas (default-v 2)))=
CARROS
3.3.2.2.2 Facetas
As
facetas associadas aum
slot particulardescrevem
condições de admissibilidadepara 0 seu preenchimento.
O
principal objetivo delas é garantir a integridade semânticadas instâncias
mantendo
sempre
os slotscom
valores consistentes.Após
criada a instância,nenhuma
alteração sobre o valor deum
slot da instância é feitasem
que
onovo
valor sejatestado pelas facetas.
Em
LOF,
as características definidas nas facetas incluem a unidadeem
que
o valorestá representado, o conjunto de valores semanticamente válidos e as cardinalidades
mínirna e
máxima
de valores admissíveis aomesmo
tempo. Estas facetas estao definidas aseguir.
value-r
A
faceta value-r (acrônimo de value-restriction) determina os valores admissíveispara o preenchimento
do
slot. Estes valores são definidos através deum
conjunto deexpressões Le_Lisp.
Um
valor é aceitoquando
o resultadoda
avaliação de todas asexpressões for diferente de "()".
As
expressões maiscomumente
usadas são aquelas quelimitam o conjunto de valores válidos (restringindo a
um
deterrninado tipo válidoem
Le_Lísp
e /ou
aum
conjunto de valores)ou
relações de dependência entre valores de slot.No
exemplo
a seguir, os símbolos iniciados por "^" representam o valor do slotno
inteiro
que
varia de zero à 140"em
LOF
é representada peloframe
"HUMANOS"
mostrado
abaixo.? (deframe
HUMANOS
slot idade (value-r (integer ^idade)
member-of
^idade [0 140]))))=
HUMANOS
card-min.
A
faceta card-min define onúmero mínimo
de valoresque
um
slot deve possuir.Quando
não
estiver definida é assumido o valor 1.A
sintaxe desta faceta é a seguinte:(card-min
< número
>
)onde
0argumento
<número
> éum
número
inteiromaior
que
zero;Por
exemplo, seja oframe
"COMPUTADORES"
com
seus slots de declaraçãorepresentando a sua configuração.
Supondo
que
o slot "drives" necessite de dois valoresdistintos esta informação
pode
ser então representada pela faceta card-mincomo
mostradoabaixo.
? (deframe
COMPUTADORES
. (slot drives (card-min
2)))
=
COMPUTADORES
card-max
A
faceta card-max define onúmero máximo
de valoresque
um
slot deve possuir.Quando
não
estiver definida é assumido o valor definidona
faceta card-min.A
sintaxedesta faceta é a seguinte:
onde
oargumento
<número>
éum
número
inteiromaior que
zero.Caso não
existaum
limitemáximo
o argumento
<número>
deve ser o símbolo especial "inf'(acrônimo de infinito).
'Por exemplo, seja o
frame
"Reunião"onde
estádefinido
o slot "participantes".Supondo que
a reunião deva terno
mínimo
3 eno
máximo
10 participantes, tal informaçãoé representada
como
mostrado
abaixo.? (deframe
Reuniao
(slot participantes (card-min 3) (card-max 10)))
=
Reuniao
'unit
A
faceta unit é usada para representar a unidade de grandeza representada. Elatem
a única função de auxiliar o preenchimento
do
slot (ver função read-valueno
apêndice 2).Sua
sintaxe é a seguinte: 4(unit
<unidade >)
onde <unidade >
éuma
cadeia de caracteres.Por
exemplo, a informação deque
o slot "capacidade"do frame
"Disquete"tem
seuvalor
em
k-bytes (Kb) é mostrada abaixo. '? (deframe Disquete (slot capacidade (unit "Kb")))
=
Disquete3.3.2.2.3
Demons
Os demons
representam informações associadascom
eventos ligados à manipulaçãodos valores dos slots de umainstância. Estes eventos são o
preenchimento do
slot e a suaalteração. Portanto, eles introduzem
um
estilo deprogramação
orientado a dados[ROCHE
89].O
conhecimento
nosdemons
é representado deforma
procedural através deum
conjunto de expressões Le_Lisp.
Sua
invocação agecomo
um
reflexo às necessidades domomento
(depende do
tipo de manipulação ao qual o slot está sujeito).Os demons
definidosem
LOF
são apresentados a seguir.if-needed
O
demon
ij'-neededcontém
informações sobre omodo
de preenchimentodo
slotquando
este estiver indefinido.As
expressõesque
ocompõe
são avaliadas sequencialmente pelo interpretadorLe_Lisp
e o valordo
slot será o valor retornado pela última expressãoavaliada.
Caso
este valor seja "()", por definição, o slotnão
é preenchido.Sua
sintaxe é a seguinte:(if-needed
<
expl>
<
exp2>
<
expN
>)
onde
osargumentos <expi>
são expressões Le_Lisp.Por
exemplo, seja oframe
"Quadrado"composto
pelos slots "lado" e "ãrea".O
preenchimento
do
slot "lado" é feito através deuma
pergunta ao usuário.Por
sua vez, opreenchimento
do
slot "área" resultado
preenchimento do anterior e seu valor édeterminado pela simples elevação ao
quadrado
de ^lado.A
declaração deste frame é? (deframe
Quadrado
(slot lado
(if-needed ( rint "Quanto vale 0 lado ?")
(read)§)
(slot area À A
(if-needed (* lado lado))))
=
Quadrado
.if-filled e if-not-filled
Os demons
U'-ƒílled e if-not-filled são procedimentos executados cada vezque
o valorde
um
slot for alterado respectivamentecom
sucesso (incluindo aqui a primeira vez que épreenchido) e
com
falha._
Estes
demons
são ativadosquando
o preenchimentodo
slot é realizado durante oprocesso de criação de
uma
instânciaou
pela função de manipulação de instância put-value(ver apêndice 2).
As
funções retry e confirm (ver apêndice 2) dentrodo
corpodo
demon
if-not-filledpossibilitam
que
o processo de preenchimentodo
slot seja repetido.É
possível assimprevinir-se
do preenchimento
com
um
valor acidentalmente errôneo (porexemplo
resultante deum
erro de digitação).A
sintaxe destesdemons
é a seguinte:(if-filled
<
expl>
< exp2> <
expN
>)(if-not~filled
<
expl> <
exp2> <
expN
>)
onde
os argumentos<expi>
são expressões Le_Lisp.Por exemplo, o
frame
"Quadrado" definido acimapode
ser redefinido demodo
aincluir as seguintes características:
_
- o slot "lado"
sempre
deve ser preenchidocom
um
número.
Caso
isto não- aconteçadeve ser apresentado
uma
mensagem
ao usuário indicando a ilegalidade do valorfornecido e