Exercícios sobre Jess Na página da cadeira, anexo a esta lista de exercícios, encontra ficheiros com código Jess que corresponde à resolução das alíneas aqui assinaladas com **. Deverá estender esse código para resolver as restantes alíneas. 1. Suponha que representamos os nomes e idades de pessoas através de factos ordenados da forma (pessoa <nome> <idade>) como por exemplo os definidos por (deffacts idades (pessoa Rosa 30) (pessoa Dulcineia 5) (pessoa Barto 33)) a) ** Escreva uma regra que insira dois novos factos da forma (nome <nome>) e (idade <idade>), para cada uma das pessoas existentes b) Escreva uma regra que imprima uma frase com a estrutura A pessoa <nome> tem <idade> anos para cada pessoa existente. c) Escreva uma regra que pergunte e leia o apelido de cada pessoa existente e registe novos factos da forma (nomeeapelido <nome> <apelido>). d) ** Supondo agora que cada pessoa está representada por um facto da forma (nomecompleto <nome completo>), onde o nome completo pode ter qualquer número de palavras, apresente uma regra que escreva só o último nome de cada pessoa e) Usando os dados da alínea anterior, escreva uma regra que imprima o primeiro e o último nome de uma pessoa e a sua idade. 2. Suponha que temos um conjunto de factos com informação sobre a relação progenitor entre pessoas e também sobre a propriedade género e que queremos listar e inferir novas informações. a) ** Escolha uma representação para a relação progenitor e para a propriedade género em Jess através de factos ordenados. b) ** Crie um conjunto de factos que representem instâncias dessa relação e dessa propriedade através do comando deffacts. Para as alíneas seguintes construa uma regra que: c) ** mostre um progenitor de uma pessoa (se for conhecido). d) mostre quais são os dois progenitores de cada uma das pessoas, caso sejam ambos conhecidos. e) mostre as pessoas que são mães de mais de uma pessoa. f) insira novos factos que exprimem quem se relaciona através da relação irmão. (Irmãos são filhos do mesmo pai e da mesma mãe). Engenharia do Conhecimento 08/09 Exercícios sobre Jess Pág. 1/5
3. Suponha que definimos o deftemplate pessoa, a seguir apresentado, para representar alguns atributos das pessoas tais como a cor do cabelo, o nome, a cor dos olhos, a idade e o tipo de idade (terceira-idade, adulto, criança). (deftemplate pessoa (slot cor-do-cabelo) (multislot nome) (slot cor-dos-olhos) (slot idade) (slot abstrai-idade) ) e que introduzimos também, por exemplo, os seguintes factos não ordenados obedecendo a esse deftemplate pessoa: (deffacts pessoas (pessoa (cor-do-cabelo preto) (cor-dos-olhos azul) (nome Joao Marsupilami Silva) (idade 23)) (pessoa (cor-do-cabelo vermelho) (nome Gonçalo Bip-Bip Coiote) (cor-dos-olhos azul) (idade 38)) (pessoa (cor-do-cabelo ruivo) (nome António Português Suave) (cor-dos-olhos castanho) (idade 20)) (pessoa (cor-do-cabelo louro) (nome Ronaldo Bola Baliza Chuta) (cor-dos-olhos verde) (idade 88)) (pessoa (cor-do-cabelo castanho) (nome Francisco O Chico) (cor-dos-olhos preto) (idade 2))) a) ** Através de uma única regra Jess, liste o último nome e a idade de cada uma das pessoas registadas na base de factos. b) ** Através de uma regra indique o último nome das pessoas com cabelos escuro. Os de cabelos castanhos ou pretos têm cabelo escuro. c) ** Liste as pessoas com olhos verdes ou azuis, indicando a cor dos olhos respectiva. d) Construa uma regra para mostrar as pessoas que não têm os olhos nem azuis nem verdes. e) ** Construa uma regra que indique que não há duas pessoas com a mesma idade. f) Construa uma regra para saber se existe pelo menos uma pessoa de olhos azuis (não queremos saber o nome). Engenharia do Conhecimento 08/09 Exercícios sobre Jess Pág. 2/5
g) Defina três regras para abstrair a idade classificando as pessoas como: i) ** criança - até 12 anos, ii) adulto 13 a 65 anos; iii) de terceira-idade - para além de 65 anos. h) Escreva uma regra que indique se todas as pessoas são adultas. i) Faça a mesma abstracção da idade da alínea g) mas agora usando apenas uma única regra. 4. Considere de novo o programa do exercício 2 e estenda-o construindo uma regra que: a) insira novos factos que exprimem quem se relaciona através das relações tia e tio. b) liste as pessoas que são filhos ou filhas únicas. c) liste as pessoas que têm pelo menos um descendente. d) liste as pessoas que só têm filhas. e) infira novos factos que exprimem a relação antepassado. 5. Suponha que temos alguns factos de acordo com o seguinte deftemplate: (deftemplate estudante (slot nome) (slot genero) (slot idade)) Escreva regras Jess para inserir um único facto com a lista de todas as pessoas com idades inferiores a 21 anos, por exemplo o facto (jovens Pedro 20 Luis 3 Teresa 10) 6. Suponha que temos factos com sequências de números. Por exemplo: (deffacts numeros (numeros 1 4 6 8 9) (numeros 6 4 2) (numeros 100)) a) Construa uma regra que verifique se não existe nenhuma sequência de números desordenada. b) Construa uma regra que calcula o máximo de uma sequência de números. Sugestão: recorra a funções pré-definidas do Jess ou defina uma nova função auxiliar max-nums. Encontra uma lista das funções pré-definidas no manual de Jess, disponível em http://mc.di.fc.ul.pt/ferramentas/jess/docs/function_index.html Engenharia do Conhecimento 08/09 Exercícios sobre Jess Pág. 3/5
7. Considere que queremos classificar peças de fruta e que o conhecimento para a sua classificação está expresso informalmente nas 14 regras seguintes. Regra 1 SE forma = longa E cor = verde OU amarelo ENTÃO fruta = banana Regra 3 SE forma = arredondada E diâmetro < 4 polegadas ENTÃO origem da fruta = árvore Regra 5 SE número de sementes > 1 ENTÃO classe de sementes = múltipla Regra 7 E superfície = suave E cor = amarelo ENTÃO fruta = melão Regra 9 E diâmetro < 3 polegadas ENTÃO fruta = alperce Regra 11 E cor = vermelho ENTÃO fruta = cereja Regra 13 E classe das sementes = múltipla E cor = verde OU vermelho OU amarelo ENTÃO fruta = maçã Regra 2 SE forma = arredondada OU oblonga E diâmetro > 4 polegadas ENTÃO origem da fruta = = planta-rastejante Regra 4 SE número de sementes = 1 ENTÃO classe de sementes = caroço Regra 6 E cor = verde ENTÃO fruta = melancia Regra 8 E superfície = rugosa E cor = acastanhado ENTÃO fruta = meloa-cantalupe Regra 10 E classe das sementes = múltipla ENTÃO fruta = laranja Regra 12 E diâmetro 3 polegadas ENTÃO fruta = pêssego Regra 14 E cor = púrpura ENTÃO fruta = ameixa a) Defina uma representação em Jess adequada para caracterizar qualquer peça de fruta. Considere que pode haver várias peças com os mesmos valores para os atributos. b) Construa as regras Jess que exprimem o conhecimento indicado na tabela acima. c) Considere que está perante várias peças de fruta e que as quer classificar. Teste a operação do seu mini sistema pericial após estender o seu código de modo a incluir regras para pedir ao utilizador as várias características de uma fruta e regras para mostrar o resultado da classificação de uma peça e continuar o diálogo com outra peça de fruta. Uma sessão de execução do seu mini sistema pericial deverá produzir uma sequência de interacção com o utilizador semelhante à seguinte: Qual a forma da fruta? arredondada Qual o diâmetro da fruta? 20 Engenharia do Conhecimento 08/09 Exercícios sobre Jess Pág. 4/5
Qual a cor da fruta? verde A fruta em causa é um(a) melancia. Quer continuar, para classificar uma nova peça de fruta? sim Vamos dar início a outra classificação. Qual a forma da fruta? Engenharia do Conhecimento 08/09 Exercícios sobre Jess Pág. 5/5